Repository navigation
Onboarding: starter prompts, first-agent nudge, parallelism quest - #10
Merged
Merged
Conversation
Replaces the locked "Pull from backlog" placeholder with three one-click starter prompts (Map the repo / Find TODOs / Sharpen README) that fill the branch name and kickoff textarea. Removes the blank-prompt paralysis that stalls first-run sessions and doubles as a useful shortcut for returning users. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Two onboarding nudges aimed at the landing page's promise of running many agents at once: - Sidebar CTA shown while the user has zero non-main worktrees. A small gradient-accented card above the grouped list: "Spawn your first agent." Clicking it opens the new-worktree screen. Disappears the moment an agent worktree exists. - Parallelism quest — a floating card bottom-right that walks a new user through the one non-obvious lesson: don't sit and watch one agent, fork a second while the first is still running, then jump between them with ⌘1/⌘2. Three steps (spawn-second, switch-between, finale) driven reactively by worktree count and activeWorktreeId transitions, persisted across restarts via a new config.onboarding field and config:getOnboarding / config:setOnboardingQuest IPC. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
frenchie4111
added a commit
that referenced
this pull request
May 26, 2026
Add workflow rule #10 covering how the reviewer's agent should push cleanup commits back to a contributor's PR branch when working inside a Harness PR-review worktree. The trap: Harness fetches refs/pull/N/head from origin into a local branch with no upstream configured, so `git push -u origin <branch>` silently succeeds against the upstream repo (creating a stray branch on frenchie4111/harness) instead of landing on the contributor's fork — and the PR never updates. The fix: run `gh pr checkout <num>` once inside the existing worktree to add the fork as a remote and configure upstream, then plain `git push` does the right thing. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
tresat
added a commit
to tresat/harness
that referenced
this pull request
Jul 24, 2026
- Extract normalizeAlias() + ALIAS_MAX_LEN in shared/state/aliases.ts; IPC handler, MCP control-server dep, and control-server response echo all use it so the trim/clamp logic can't drift (fixes ness-dev#2) - useHotkeys skips when focused element (or ancestor) has data-hotkeys="ignore"; AliasEditor input opts in so Cmd+W / Cmd+K / etc. don't fire while renaming. Opt-in (not a general "skip inputs" rule) because xterm's hidden textarea would otherwise break every terminal-time hotkey (fixes ness-dev#4) - useAliasForPath now accepts string | null | undefined; App.tsx window title read no longer needs the '?? ...' fallback subscription to a permanently-empty key (fixes ness-dev#7) - MCP control-server response includes clamped: true when the caller's input differed from what got stored; the set_worktree_alias tool surfaces this to the agent as "input was normalized" so silent whitespace/length changes are discoverable (fixes ness-dev#8) - Add control-server.test.ts covering POST/DELETE /aliases end-to-end: scope-fallback, clamp reporting, empty-clears-alias, and 400 on no worktreePath + no scope (fixes ness-dev#9) - displayLabel docstring now explains the resolution order, the machine-facing exclusion, and the per-id selector pairing (fixes ness-dev#10)
frenchie4111
pushed a commit
that referenced
this pull request
Jul 24, 2026
- Extract normalizeAlias() + ALIAS_MAX_LEN in shared/state/aliases.ts; IPC handler, MCP control-server dep, and control-server response echo all use it so the trim/clamp logic can't drift (fixes #2) - useHotkeys skips when focused element (or ancestor) has data-hotkeys="ignore"; AliasEditor input opts in so Cmd+W / Cmd+K / etc. don't fire while renaming. Opt-in (not a general "skip inputs" rule) because xterm's hidden textarea would otherwise break every terminal-time hotkey (fixes #4) - useAliasForPath now accepts string | null | undefined; App.tsx window title read no longer needs the '?? ...' fallback subscription to a permanently-empty key (fixes #7) - MCP control-server response includes clamped: true when the caller's input differed from what got stored; the set_worktree_alias tool surfaces this to the agent as "input was normalized" so silent whitespace/length changes are discoverable (fixes #8) - Add control-server.test.ts covering POST/DELETE /aliases end-to-end: scope-fallback, clamp reporting, empty-clears-alias, and 400 on no worktreePath + no scope (fixes #9) - displayLabel docstring now explains the resolution order, the machine-facing exclusion, and the per-id selector pairing (fixes #10)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three onboarding nudges aimed at closing the gap between "user downloads Harness" and "user experiences the parallelism value prop the landing page promises."
NewWorktreeScreen— replaces the locked "Pull from backlog" placeholder with three one-click prompts (Map the repo / Find TODOs / Sharpen README) that fill branch name + kickoff. Removes first-run blank-prompt paralysis and doubles as a useful shortcut for returning users.spawn-second→switch-between→finale) driven reactively by worktree count +activeWorktreeIdtransitions. Persisted across restarts via a newconfig.onboarding.questfield +config:getOnboarding/config:setOnboardingQuestIPC.The quest advances or skips steps based on actual state at load time (e.g. someone who already has 2+ worktrees jumps straight to
switch-between), and never shows again once dismissed or finished.Test plan
mainstill works normallyNewWorktreeScreen: three starter cards fill branch + prompt with one click🤖 Generated with Claude Code