Skip to content

Onboarding: first-run setup, in-app td/tasks install, empty-state next steps - #301

Merged
marcus merged 17 commits into
mainfrom
onboarding
Aug 21, 2026
Merged

Onboarding: first-run setup, in-app td/tasks install, empty-state next steps#301
marcus merged 17 commits into
mainfrom
onboarding

Conversation

@marcus

@marcus marcus commented Aug 21, 2026

Copy link
Copy Markdown
Owner

New Sidecar users should land on the next thing they can do, not an empty td monitor.

First-run Git

Launching in a non-git directory with no projects.list opens Configuration → Add Project (cwd prefilled). Initialize this directory (and the Git tab's Initialize Git Repository) runs git init -b main from a click or i, then reloads git context without a restart.

In-app td / Tasks install

The td uninstalled view and Configuration → Panels offer a confirmed Install button: Homebrew when brew is on PATH, otherwise go install. Sidecar never uses sudo and does not treat a package-manager exit as success. Diagnostics for missing standalone Tasks now points at Panels → Install Tasks instead of saying Sidecar will not install it.

Empty states

  • TD monitor empty panes explain how to create work; embedded Sidecar adds a Workspaces [3] hint only when the database has no tasks.
  • Workspaces first-run copy (n / +) shows once inventory has actually loaded; an unloaded Sessions list still says no sessions.
  • An unattached worktree preview is padded and has a Start Agent button that opens the create-workspace form (s / click / Enter).

Notes

td monitor copy, note-activity verbs (created note / updated note), and the embedded next-step live in td on onboarding-empty-states (82a5cd5). This PR is Sidecar-only.

Demo:

./scripts/demo.sh fresh --onboarding
./scripts/demo.sh fresh --no-git

Stories: td-bd2140 (td-4a0687, td-2d4ef5, td-b70b47, td-2140b4, td-219916, td-70d392, td-545473).

marcus added 17 commits August 20, 2026 23:34
Adopting an existing pane tree into the content deck, or rebinding on a
context change, armed visible documents without starting their loads. The
new leaf loaded; siblings sat on the placeholder until a later select or
restart. LoadVisible now starts those loads, r reloads a focused document,
and the loading placeholder is indented with a spacer line.
The Shell/Worktree toggle only used the strong highlight while it had
keyboard focus, so opening the form on the name field left both options
looking unselected.
… (td-2140b4)

Pressing s or clicking Start Agent on an unattached worktree now opens the
shared Create Workspace form with Shell selected, and submitting starts an
agent on that worktree. The empty preview keeps Output chrome, adds padding,
and registers a clickable Start Agent control.
…9916)

An unblocked empty Workspaces list (project and tmux present, no rows)
explains how to create a worktree or shell and how to launch an agent,
with a clickable create control. The blocked Setup prompt is unchanged.
…a0687, td-2d4ef5)

Launching in a non-Git directory with an empty projects list opens
Configuration on Add Project after an async probe, instead of an empty
td-monitor. Git init now uses `git init -b main`, with a padded mouse
button and the existing Init footer command, and plugins refresh from
ReadyMsg without a restart.
Let new users install missing td/tasks from Sidecar after confirming the
exact command, instead of hunting for brew. Homebrew is preferred; go
install @latest is the fallback. Success re-probes PATH and continues
into td setup or the Tasks config flow.
…d-219916)

Hide-idle only filters idle rows that exist. A truly empty catalog now
gets the welcoming create copy and pill even at the default hide-idle
setting, instead of "no sessions".
Initialize this directory now binds i, Tab from Location lands on it
instead of Search, and git-no-repo no longer paints duplicate key hints.
gitstatus reloads from gitinit.ReadyMsg so init success does not wait
for a later focus.
Configuration's enable route now ticks its BrailleSpinner while an
install runs. After go install, success is detected when the binary
lands in GOBIN (or GOPATH/bin) even if that directory is not on PATH,
and that dir is prepended to this process PATH so later LookPath and
setup see it. Displayed go commands include GOWORK=off.
Commands() already advertised init-repo; the unified footer only emits
commands that have a binding in the active context.
First-run copy is for a collected empty catalog. An unloaded list still
says no sessions so it does not claim workspaces are missing while the
collector is in flight.
Diagnostics, Getting Started, privacy, and the changelog no longer say
Sidecar will not install Tasks. First-install still waits for the exact
command to be confirmed and never uses sudo.
@marcus
marcus merged commit 8d5e650 into main Aug 21, 2026
3 checks passed
@marcus
marcus deleted the onboarding branch August 21, 2026 07:40
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