Skip to content

The control surface #20

Description

@claude

Question

Where does the user configure the app, pick the target window, and enter the API key — now that there is no Electron window to put those in?

The output window put history and settings behind titlebar icons on a desktop window that no longer exists. Configuration and API key storage specified an in-app masked input for the key and a picker for the target window, both assuming that window. Cost control assumed a status pill and a pause the user can reach. All three need a new home.

Blocked on The host runtime (which decides whether any local UI exists at all) and Reach and trust (which decides whether a networked client is trusted with the key).

Decide:

  • Where settings live. In the web client, on a separate local-only admin page, in a config file edited by hand, or via CLI flags. Configuration and API key storage #8's requirement that all settings apply live with no restart survives and constrains this.
  • The window picker. Choosing a capture target means enumerating windows on the host and showing them. Whether that's reachable from a phone across the room, or deliberately host-only. Configuration and API key storage #8 identified the target by process name + title with a fallback to reopening the picker — decide where that picker opens now, especially at startup with no client connected.
  • The API key. Whether a masked input in the web client is acceptable, given what Reach and trust decided about who can reach it, or whether key entry is host-only by construction. The key never leaving the host process is settled; this decides how it gets in.
  • Control from a client. Whether a connected browser can pause the loop, resume it, change the interval, or force a solve — or whether clients are strictly read-only mirrors and control is host-side. This also settles whether The stream contract's transport needs a client-to-server direction at all. Cost control #9's pause is the sharp case: hitting a budget limit stops the loop, and someone has to be able to resume it.
  • Multiple clients disagreeing. If clients can control the loop, what happens when two do at once. If they can't, this is moot — which is an argument for read-only.
  • First-run. With no key and no target window, what the very first visitor to the client sees, and whether the app can be configured entirely from a browser or needs a host-side step.

Deliverable: the control surface — what lives where, what a client may and may not do — expressed in #7's and #9's existing vocabulary wherever it already covers the case.


Generated by Claude Code

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions