Skip to content

Connect the desktop app with one link and add tv links - #9

Merged
jwhiting merged 81 commits into
mainfrom
thopter/desktop-connect-links
Oct 1, 2026
Merged

jwhiting merged 81 commits into
mainfrom
thopter/desktop-connect-links

Conversation

@jwhiting

@jwhiting jwhiting commented Oct 1, 2026 •

Copy link
Copy Markdown
Member

Connect the Mac app with one link containing the server address and, when required, its access token. The setup screen supplies a prompt for the person's agent and a link field. A successful connection is saved for later launches; Television › Disconnect from Server (⌘,) forgets it and returns to setup, including from the upgrade gate.

  • tv links checks the running server's authentication requirements and prints its connect links. CLI startup and tv links use terminal hyperlinks for interactive output and plain URLs for pipes.
  • Connection dialogs distinguish an unreachable server from a rejected token or required desktop upgrade. A dropped connection keeps the interface and live artifact documents mounted, escalates after three failed reconnect attempts, and recovers automatically. Authorization failures stop retries; a displayed upgrade gate stays until reload.
  • The desktop main process owns connection checks, persistence, cancellation, retries and navigation. The packaged page paints Connected before navigation; only that page can call the connection IPC. A failed remote page load returns to saved-connection recovery.
  • Setup and local dialogs share the production controls and modal presentation, with bundled Clouds, fonts, icons and their notices. The dialog drag strip sits inside the native dialog so it remains usable during modality. The served app composes the upgrade gate, keeping its markdown dependencies out of the local renderer. Large controls also reach canonical v2; frozen v1 stays unchanged.
  • The administrator guide teaches connect links and tv links and gives Mac or browser instructions appropriate to the person's computer. PR-authoring guidance defines the reader, useful validation evidence and where working records belong.

Server APIs, WebSocket messages, served-page parameters, the remote native bridge and connection.json retain their contracts. The required desktop version remains 1.3.1, and the recommendation remains 1.4.0. Older desktop apps can still reconnect, though the served page's recovery instruction names Disconnect from Server while those apps retain Connect to server….

Validation. npm run verify -- blaxel passed at 6cd71e7c, covering static checks and the CLI, browser and real-Electron suites. The daemon-acceptance suite also passed real installation, refresh, boot, stop and uninstall. Subsequent commits change only documentation and developer guidance. The theme-reset test exercises the built application with its existing assertions, timeouts and retry settings; PR #12 addresses Chromium response buffers exhausting RAM-backed /tmp during repeated reloads of unbundled pages on Blaxel.

Signed desktop product checks. The candidate build is 261001hquaj28w0, version 1.4.15, built from 6cd71e7 without a version override. It remains unreleased: Apple Silicon DMG, Mac zip. The current application code matches that build.

Josh ran the following checks on his Mac against servers running the PR code:

Check Steps and observed result
Mac install — PASS Installed and opened the candidate without a Gatekeeper warning. Dock and application menu showed Television; About showed 1.4.15. The earlier saved connection opened successfully.
Connect screen — PASS Copy reached the real system clipboard; window dragging worked. A rejected token and an unreachable address produced validation errors. A valid connect link connected successfully.
Bridge and IPC — PASS Disconnect from Server worked through the menu and ⌘,, and was disabled on setup. Launching with the server down showed the local error page and recovered when the server returned. Dropping an established connection showed Disconnected, then Can't connect with server, and recovered automatically. Token rejection showed Access token required on both the served and local pages; the local Disconnect button worked, and a new link restored the connection.
Updates — PASS for notice and restart ToDesktop's simulated update-available scenario showed the desktop update notice. Restart to update quit and reopened the app.
Upgrade gate — PASS Launched the same 1.4.15 candidate with --runtime-simulate-updates=update-available and connected to a server run from source at 8e7cd67b with TV_TEST_VERSION=1.4.15 and TV_TEST_REQUIRED_DESKTOP_VERSION=2.0.0. The gate appeared initially without Restart to update, then showed it once the simulated update was ready. The top strip dragged the window while gated. Television › Disconnect from Server returned to the connect screen.

An agent checked the same build's Mac zip: Electron license files and bundled notices PASS. The agent extracted and read Contents/Resources/LICENSE.electron.txt and Contents/Resources/LICENSES.chromium.html, confirming Electron's MIT license and Chromium's credits are present and readable. Inside Contents/Resources/app.asar, dist/THIRD-PARTY-NOTICES.txt and dist/clouds/THIRD-PARTY-NOTICES.txt matched the corresponding build outputs byte for byte. The desktop notices include Phosphor Icons, Hind's font license, and the Clouds photo and palette terms; the Clouds folder carries its own photo and palette terms. The app's plist and packaged manifest report 1.4.15.

Not checked on the signed build: appearance switching and Reduce Motion.

A server whose connection check succeeds but whose page repeatedly fails to load can cycle through saved-connection recovery without backoff; Disconnect from Server remains available. Local appearance follows the Mac at launch and retains the server's native appearance input during that run; persistence across launches is tracked in TV-912.

Spec and workshop-frame changes from telepath-computer/television-prerelease-archive#387
(feat/new-onboarding at 1fedba8), applied unchanged. Later commits on this branch
adjust them to the connect-links proposal.
Both steps render at full strength with plain numbered markers; the screen's
states are ready, connecting, connected and error. Uses the connect-screen
prompt from the proposal. Removes the step-advance wiring from the workshop
and the two prototype drafts.
- product/cli: define connect links; add tv links; CLI prints links as OSC-8
  hyperlinks only when stdout is an interactive terminal
- arch/cli: tv links client call and the shared link formatter
- terms: connect link, setup screen
- artifact-frame error page: the desktop app is currently Mac-only
- admin guide: connect links only, tv links, connect-screen and Mac flows,
  no desktop app for other computers
@jwhiting
jwhiting marked this pull request as draft October 1, 2026 15:18
Reverts the imported prerelease PR #387 spec and frame changes, the step
tracking removal, and the CLI, glossary, placeholder and admin guide edits.
Specs will be rewritten from a completed proposal.
Markup and styling only, unchanged: the setup screen and system modal frames,
the artifact-frame body/menu and copy-button size frame parameters, the large
button and input sizes, the --line-control-lg token, and the workshop frames
that stage them (telepath-computer/television-prerelease-archive#387 at
1fedba8). Adapted to the proposal in the following commits.
- Setup screen: no step tracking (states ready, connecting, connected, error;
  both markers at full strength); the connect-screen prompt.
- System modal: one context parameter (browser, desktop, local); the local
  page's Access token required and Can't connect carry Disconnect from Server;
  the 36px window drag strip; copy for every state.
- Workshop: boards for the browser, the desktop app and the desktop's local
  page; setup wiring only copies and connects.
Written from the proposal: the setup screen's states and interaction; the
app shell's connection-state rules (definite answers first, Disconnected
escalating to Can't connect after three unreachable attempts, Access token
required waiting); the system modal's states by place, the local page's
Disconnect button and the window drag strip; dialogs the system modal holds
in place; the large button and field size; the artifact frame's look reused
without its machinery. The system modal's Testing section is removed: it only
restated derivable promises.
Written from the proposal: the local page and its states, connecting from a
link, saved-connection reconnection (Access token required on 401, Can't
connect otherwise), Disconnect from Server in the menu and on the local
page; the desktop product's connection promises; the gate keeps Disconnect
from Server available; connect links, tv links and terminal-only hyperlinks
in the CLI specs; the Mac-only placeholder; the admin guide's connect-link
and Mac flows; glossary entries; migration map and explainer.
tv links follows the running server's token requirement; the upgrade gate
stays until reload; setup token errors speak about the link; guide gives
connect links for Docker and SSH paths and explains 0.0.0.0 and 127.0.0.1;
workshop retry clears the error treatment.
…erver

The upgrade gate shows on a connected, authenticated app that halts before
booting, so 'not connected' misdescribed it.
A derived explainer following the setup screen and the connection dialogs
from first launch to recovery, linking the specs that own each rule.
…debar condition

Proof review found the sentence admitted a reading that also put the strip
over a shell with its sidebar collapsed, which still drags by its navbar.
Branch policies applied across the merged tree:
- Preserve one-link setup, saved startup, Disconnect from Server and dialog
  recovery across CLI, desktop, served app and guidance. Main adds no callers
  needing migration; its Mac-first README flow matches the setup prompt and
  the administrator guide's already-installed-app path.
- Retain the shared local UI, packaged Clouds assets and notices, with the
  upgrade gate composed by the served app. The local foundation import picks
  up main's token change; setup and Clouds use no retired navbar-gap token.
- Keep the desktop renderer's utils and lit-html dependencies in both the
  package manifest and lockfile, and retain the built-app theme-reset test.

Main policies reconciled against the branch:
- Apply toolbar-gap to both navbar control groups and sidebar separation;
  tabs inherit that gap, while the navbar remains directly above the stage.
  Audit specs, production CSS, frames, themes, proofs and tests for the
  retired token. Preserve byte-identical foundation delivery to both apps.
- Keep the authored theme reference aligned with both sets of UI changes.
  Its layout prose remains accurate; its builder inserts the token catalog
  from the updated production foundation.
- Preserve the README onboarding rewrite and record its dependence on the
  desktop release and public administrator-guide publication in the handoff.
- Retain main's 1.4.15 workspace versions and lockfile metadata.

Textual conflict:
- app-shell-reference.md: combine main's app-style fingerprint with the
  branch's system-modal fingerprint, preserving both sides' other source
  fingerprints and the branch's connection, Copy, frame and drag guidance.

Remove the CLI proof's completed one-time daemon-test obligation. Its
designated-host rule and existing evidence remain. Record integrated review
and reconciliation in the task document; pre-merge docs prep stays deferred.

Validation: diff checks pass. Push this committed merge for targeted Blaxel
reference/foundation checks followed by the full Blaxel verification gate.
@ThopterBot ThopterBot changed the title Thopter/desktop connect links Connect the desktop app with one link and add tv links Oct 1, 2026
Preserve the proposal and plan with archive preambles and unchanged bodies. Delete the completed proof-review notes and task record, leaving docs/working empty.
@ThopterBot
ThopterBot marked this pull request as ready for review October 1, 2026 23:09
@jwhiting
jwhiting merged commit f81a246 into main Oct 1, 2026
27 checks passed
@jwhiting
jwhiting deleted the thopter/desktop-connect-links branch October 1, 2026 23:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant