Skip to content

Keep client logic in the binary: document the rule and move the duplicated pieces #446

Description

@vincebln2

The clients should stay thin: the default implementation of any method is to send the wire command, with behavior living in the vibium binary so every language behaves identically. The implementation guide never states this, and an audit found five places where feature logic is written once per client and can drift:

  • URL pattern matching for route dispatch and capture filters. Three different glob dialects today.
  • The dialog auto-dismiss default. The engine already owns unhandledPromptBehavior.
  • Console/error collect buffers
  • The capture one-shot future/timeout machinery
  • Download bookkeeping

Each duplication multiplies by every new client language.

First step is stating the rule in the implementation guide. The moves then land as separate scoped changes, pattern matching and dialog policy first since those are behavioral.

References

  • docs/explanation/client-implementation-guide.md: where the rule belongs
  • clients/javascript/src/utils/match.ts, clients/python/src/vibium/async_api/page.py, clients/java/src/main/java/com/vibium/Page.java: the three glob implementations
  • clicker/internal/api/prompt.go: engine-side prompt state the dialog default can build on
  • #435: the companion checker that keeps surfaces aligned; this one keeps semantics aligned

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions