Skip to content

fix(web): restore the /goal composer, palette, and inbox wiring - #22

Merged
sheehanmunim merged 1 commit into
mainfrom
fix/restore-goal-composer
Aug 19, 2026
Merged

fix(web): restore the /goal composer, palette, and inbox wiring#22
sheehanmunim merged 1 commit into
mainfrom
fix/restore-goal-composer

Conversation

@sheehanmunim

Copy link
Copy Markdown
Member

Problem

Goals were unusable from the web app. Every module the feature needs was present — BUILT_IN_GOAL_SLASH_COMMANDS, parseGoalComposerCommand, GoalChip, GoalActiveMarker, useThreadGoalActions, even the setGoal/pauseGoal/resumeGoal/clearGoal atom commands wired at the top of ChatView — but every call site had been dropped by integration merges. So:

  • /goal never appeared in the composer menu.
  • Typing /goal <objective> sent it as an ordinary chat message; the atom commands in ChatView were dead code.
  • No thread ever showed the Active marker.
  • The command palette had no Objective actions.

The e2e suite has covered all of this since the feature landed (apps/web/e2e/goal.test.ts), and it was failing — 5 tests red.

Fix

Restored from the Goals PR, adapted to the current files:

Surface Restored
Composer menu /goal, /goal pause, /goal resume, /goal clear, and the filter that stops a provider's own goal command from shadowing them
ChatView submit the /goal interception: status toast, refuse, clear/pause/resume, set — plus the local-draft path that attaches the Objective once the first turn creates a thread, and seeds the thread title from it
Sidebar GoalActiveMarker in all three thread rows
Command palette "Show Objective status" and the per-status Objective actions

The built-in slash list moved into composer-logic.ts behind buildBuiltInSlashCommandItems, with unit tests. This exact hunk has been lost by a merge before and nothing below the browser noticed — now something does.

Also: the e2e harness gave its first navigation the 15s default while the dev server is still bundling ("Bundling in progress"), even though the very next wait already budgets 120s. That made the whole suite fail to start on a loaded machine. It now gets the same 120s.

Verification

apps/web e2e/goal.test.ts4 passing, 3 skipped (the skips are the harness's own: no provider is configured, and palette actions need a server thread). Was 5 failing.

Touched web logic suites (Sidebar.logic, CommandPalette.logic, ChatView.logic, composer-logic, AppRoot): 223 passing. Web typecheck clean.

Mobile was checked and still has its /goal interception intact; only the web surface lost hunks.

Model: Claude Opus 5, harness: Claude Code

Goals shipped with a full web surface, but integration merges dropped every
call site while leaving the modules, types, and tests in place. Setting an
Objective was impossible from the app: `/goal` was not offered, typing it sent
the text as an ordinary message, and no thread showed an Active marker.

Restored from the Goals PR:
- the built-in `/goal`, `/goal pause|resume|clear` items in the composer menu,
  with the provider's own `goal` command filtered out so it cannot shadow them;
- the submit-path interception in ChatView that turns `/goal …` into a Goal
  command (status, refuse, clear/pause/resume, set), including the local-draft
  path that attaches the Objective once the first turn creates a thread;
- the `GoalActiveMarker` in the three sidebar rows;
- the palette's "Show Objective status" and per-status Objective actions.

The built-in slash list moved into `composer-logic` so a unit test covers it —
this hunk has been lost by a merge before and nothing below the browser noticed.

The e2e harness also gets a real budget for its first navigation: it lands on
"Bundling in progress" whenever the dev server is cold, which outlasts the 15s
default, while the very next wait already allows 120s.

apps/web e2e/goal.test.ts: 4 passing, 3 skipped (no provider in the harness);
was 5 failing. Touched web logic suites: 223 passing. Typecheck clean.

Model: Claude Opus 5, harness: Claude Code
@sheehanmunim
sheehanmunim merged commit f1b4d1e into main Aug 19, 2026
2 of 6 checks passed
@sheehanmunim
sheehanmunim deleted the fix/restore-goal-composer branch August 19, 2026 21:27
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Aug 19, 2026
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