Skip to content

feat(web): setup ends with a Workflow step for automatic settling - #935

Open
incognitojam wants to merge 3 commits into
mainfrom
styal/setup-wizard-auto-settle
Open

incognitojam wants to merge 3 commits into
mainfrom
styal/setup-wizard-auto-settle

Conversation

@incognitojam

Copy link
Copy Markdown
Owner

Automatic settling surprises people who don't work the way it assumes: threads move into the Settled shelf when their PR merges or after three days idle, and nothing in setup says so. Setup is the one place every new user passes through, so it now explains settling and lets people keep or turn off those rules before they reach the sidebar.

Setup gains a final Workflow step after Projects (and Preferences, when that appears). It has a short explanation, a static picture of the sidebar with a settled thread, and two switches: settle when the pull request merges, and settle after N days without activity. The step is named for workflow defaults in general so more of them can join it later. Which ones join will be decided from usage data and user feedback.

  • The switches start from the first selected computer's current settings, so re-running /welcome shows the saved choice.
  • Finish writes only to computers whose values differ. Turning inactivity settling back on keeps that computer's own threshold. A failed save leaves the user on the step.
  • Computers whose server lacks automatic settlement are left out; when none support it, the step doesn't appear and the import steps finish setup as before. While the step follows, the import actions read Import & continue and Skip projects.
  • Finishing records a setup-thread-settlement usage event with only the two choices. This bumps the fork client usage vocabulary to version 3.
  • User guides, the telemetry and feature-usage docs, the differences overview and the fork feature ledger are updated.
Before After
Setup ended on the Projects step Setup ends on the Workflow step

Validation

In a dev server with isolated state, through /welcome in the Browser panel:

  • Turned off the merge rule by clicking its label, chose Finish: setup closed onto a new thread and settings.json held sidebarAutoSettleOnMerge: false.
  • Re-ran /welcome: the step opened with the merge switch off. Turned it back on and inactivity off, chose Finish: sidebarAutoSettleAfterDays: null, and Settings → General showed merge on and inactivity off.
  • Turned inactivity back on and finished: the settings file returned to defaults.
  • Focused tests pass for the patch logic (settlement.logic.test.ts), the usage event allowlist (ClientFeatureUsage.test.ts), and the existing onboarding and import tests; web typecheck and the ledger check pass.

Not verified: delivery of the usage event to PostHog (dev telemetry has no collector; the server test covers what is recorded), and the multi-computer path, which shares the per-computer patch logic covered by tests.


Written by an agent (Claude Code, claude-opus-5-5).

Setup now ends with a Workflow step that explains settling and offers the
merge and inactivity rules before the user reaches the sidebar. Choices apply
to every selected computer that supports automatic settlement, keeping each
computer's own inactivity threshold. Finishing records the two choices as a
setup-thread-settlement usage event.
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Upstream divergence

Both sides are compared with upstream at the in-order tip 0ecb25a8d4. Excludes .repos/ and pnpm-lock.yaml.

Measure Base This PR Change
Upstream files the fork changes 1,517 1,517 0
Lines changed in them 78,306 78,347 +41
Upstream files the fork removes 43 43 0
Fork-only files 558 561 +3
Fork-only lines 102,256 102,537 +281
Upstream files whose difference changes (2)
File Change Now differs by
apps/web/src/components/onboarding/WelcomeWizard.tsx +34 986 lines
docs/user/welcome-wizard.md +7 131 lines

Moves the fork-only step out of the upstream welcome wizard so upstream
intake has a smaller diff to reconcile.
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 5.0 KiB 5.0 KiB 0 B (0.0%) 6.8 KiB ✅
Codex Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.2 KiB 1.2 KiB 0 B (0.0%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 20.9 KiB 20.9 KiB 0 B (0.0%) 29.3 KiB ✅
Codex Live turn messages 2 2 0 (0.0%) 8 ✅
Claude Total thread wire 5.0 KiB 5.0 KiB 0 B (0.0%) 6.8 KiB ✅
Claude Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.2 KiB 1.2 KiB 0 B (0.0%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 21.2 KiB 21.2 KiB 0 B (0.0%) 29.3 KiB ✅
Claude Live turn messages 2 2 0 (0.0%) 8 ✅

Baseline: 7ce499e · PR result: e813284 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant