Skip to content

Preflight provider auth on send and unstrand hosted cold visitors - #115

Merged
badcuban merged 1 commit into
mainfrom
fix/fresh-install-quick-wins-2
Aug 7, 2026
Merged

Preflight provider auth on send and unstrand hosted cold visitors#115
badcuban merged 1 commit into
mainfrom
fix/fresh-install-quick-wins-2

Conversation

@badcuban

@badcuban badcuban commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

Second batch of fresh-install fixes from the 0.3.2 UX audit.

What changed

  • Send preflight (guide, don't block). When the selected provider instance is already known-unusable (not installed, or signed out), submitting holds the turn and immediately shows the same guidance the post-failure banner shows, plus a "Send anyway" escape hatch that re-enters the identical dispatch path. The draft, attachments, and timeline are untouched; the notice resets on thread switch. Previously this path burned 20-30s of visible reconnects and raw 401 Unauthorized before guidance appeared.
  • Shared readiness cards. The sign-in card was extracted from ThreadErrorBanner into ProviderReadinessNotice.tsx (plus a not-installed sibling) so the pre-send and post-failure surfaces read identically. Providers with no known login command fall back to the install-and-connect card instead of naming a command that doesn't exist.
  • Hosted cold visitors get a next step. The never-paired app.threadlines.dev screen now offers "Download the desktop app" (marketing download page) and "Pair this browser" (Settings → Devices), with copy naming where the setup link is actually minted (desktop: Settings → Devices → Add device — verified against the existing createServerPairingCredential dialog).
  • Hosted add-project dead end. "Add a project" with no paired computer now explains the situation and routes to Devices instead of the bare "No environment is available" error. Desktop sessions with genuinely no environment keep the error wording.

Testing

  • vp fmt, vp lint, vp run typecheck green.
  • Unit: 137 pass across ChatView.logic + CommandPalette.logic (5 new preflight cases, 2 new guidance cases); full web unit suite 2045 pass.
  • Browser: ChatView 108 pass (+1 integration test: signed-out send dispatches nothing and preserves the draft, then dispatches exactly once via Send anyway), HostedStaticStatusStates 1 pass (new: actions + hrefs), SettingsPanels 32 pass.

Second batch of fresh-install fixes from the 0.3.2 UX audit:

- Sending to a provider the snapshot already marks unusable holds the
  turn and shows the sign-in or install card immediately, with a Send
  anyway escape, instead of half a minute of reconnect noise ending in
  a raw 401; the card markup moved to ProviderReadinessNotice so the
  post-failure banner and the preflight read identically
- The never-paired hosted screen gains Download the desktop app and
  Pair this browser actions plus copy naming where the setup link is
  minted (Settings, Devices, Add device)
- The hosted add-project dead end explains that projects live on a
  paired computer and routes to Devices instead of erroring
@vercel

vercel Bot commented Aug 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
threadlines Skipped Skipped Aug 7, 2026 1:22am

Request Review

@github-actions github-actions Bot added size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Aug 7, 2026
@badcuban
badcuban merged commit cd22cd3 into main Aug 7, 2026
15 checks passed
@badcuban
badcuban deleted the fix/fresh-install-quick-wins-2 branch August 7, 2026 01:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant