Skip to content

fix(docs): use pinned CLI path in rekindle.md and fellowship SKILL.md#82

Merged
justinjdev merged 36 commits intofeat/command-dashboardfrom
worktree-fellowship-fix-docs-review-comments
Mar 21, 2026
Merged

fix(docs): use pinned CLI path in rekindle.md and fellowship SKILL.md#82
justinjdev merged 36 commits intofeat/command-dashboardfrom
worktree-fellowship-fix-docs-review-comments

Conversation

@justinjdev
Copy link
Copy Markdown
Owner

Summary

  • Replace bare fellowship CLI references with pinned path ~/.claude/fellowship/bin/fellowship in plugin/commands/rekindle.md and plugin/skills/fellowship/SKILL.md
  • Addresses CodeRabbit review comments from PR feat: Svelte 5 command dashboard with real-time WebSocket updates #76
  • "Zombie" classification was already defined in rekindle.md Step 2 table — no action needed

Changes

  • plugin/commands/rekindle.md: 3 bare CLI paths fixed (lines 26, 95, 154)
  • plugin/skills/fellowship/SKILL.md: 1 bare CLI path fixed (line 199)

Test plan

  • Verified no remaining bare fellowship CLI refs in either file via grep
  • Reviewed diff — all replacements correct, no formatting broken

🤖 Generated with Claude Code

justinjdev and others added 30 commits March 20, 2026 22:39
- Darken accent from #8b6914 to #7a5a0e (4.1:1 → 5.1:1)
- Darken scout from #4a8a9e to #377080 (3.3:1 → 4.7:1)
- Darken monitor from #7b6ea4 to #635599 (3.4:1 → 4.8:1)
- Update hover/focus colors to match new accent

All light theme text/background pairs now pass WCAG AA (4.5:1+).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix: light theme WCAG AA color contrast
Add gorilla/websocket-based Hub that manages connections and broadcasts
events. Wire into existing gate approve/reject handlers so dashboard
clients receive live notifications on quest state changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
File-backed command queue supporting spawn-quest, spawn-scout,
kill-quest, and restart-quest actions with pending/completed/failed
status tracking.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New endpoints enqueue commands to the file-backed queue and broadcast
WebSocket events: POST /api/quest/{spawn,kill,restart},
POST /api/scout/spawn, GET /api/commands.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New endpoints: GET /api/autopsies (list/detail), GET /api/tome/<quest>
for quest history, GET/POST /api/config for reading and writing
fellowship configuration at global or project scope.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace root handler with SPA-aware routing that serves static files
when they exist and falls back to index.html for unmatched paths,
enabling client-side routing in the dashboard frontend.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tests cover Hub broadcast with no connections, command enqueue with
persistence verification, and empty queue loading.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…riven refresh

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…actions, herald, connection banner)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… badge

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…avigation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Use `all:static` in embed directive to include `_app/` directory
  (Go embed skips underscore-prefixed paths by default)
- Fix SPA fallback to properly serve static files before falling back
  to index.html, reusing a single http.FileServer instance

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ncy, accessibility

- Add mutex locking to EnqueueCommand for concurrent safety
- Return error on corrupt command queue instead of silent empty fallback
- Add collision-resistant random bytes to autopsy filenames
- Use datadir.Name() instead of hardcoded .fellowship for autopsy paths
- Reject malformed config JSON instead of silently overwriting
- Add WebSocket write deadline to prevent blocking on unresponsive clients
- Guard against stale WebSocket lifecycle events
- Handle iofs.Sub error in static file serving
- Fix gorilla/websocket marked as indirect in go.mod
- Add res.ok checks to all API mutation functions
- Fix btoa() Unicode safety for non-ASCII worktree paths
- Wrap read API helpers in try/catch for network failures
- Keep command palette open on failed commands
- Reset GateActions loading state on API failure (try/finally)
- Support Ctrl+K alongside Cmd+K for command palette
- Convert QuestCard from <a> to <div> to fix nested button a11y violation
- Use $effect instead of onMount for reactive quest data loading
- Add NaN guard for invalid timestamps in HeraldFeed
- Use Promise.allSettled for timeline tome fetching
- Add error handling for autopsies fetch
- Replace onMount redirect with SvelteKit redirect() in +page.js
- Add :focus-visible outline for quest filter select
- Use pinned CLI path in SKILL.md and rekindle.md
- Replace undefined zombie classification with stale in rekindle.md
- Rebuild dashboard static assets

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add synchronous double-submit guard in GateActions approve/reject
- Show error state instead of empty result on autopsies page load failure

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously, WSEvent broadcasts from gate approve/reject handlers and
command enqueue handlers omitted the Timestamp field, resulting in
zero values. Clients relying on event timestamps for ordering would
see incorrect data.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Sanitize autopsy filename to prevent path traversal (reject non-base filenames)
- Handle json.MarshalIndent error instead of discarding
- Guard arrow-key navigation in CommandPalette when filtered list is empty
- Prevent infinite retry loop on quest detail page fetch failure
- Handle unknown phase in phaseStatus (return pending instead of marking all done)
- Normalize backslashes in branch label path splitting
- Self-host Google Fonts to eliminate CDN dependency (embedded binary model)
- Rebuild dashboard static assets

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
justinjdev and others added 6 commits March 21, 2026 17:05
- Fix CommandPalette submitInput logic bug: success-path code was outside
  try block, running even after failures
- Fix $derived(() => ...) to $derived.by() in CommandPalette grouped
- Add Content-Type: application/json headers to all JSON responses
- Clean up orphaned tmp file on config rename failure
- Sanitize internal error details in HTTP responses
- Add double-call guards for startPolling/startHeraldPolling to prevent
  subscription leaks
- Add dataLoaded guard to timeline to prevent redundant tome fetching
- Guard against null/undefined tags in autopsies search filter
- Fix quest detail page race condition: set dataLoaded after fetch
  completes, add loading guard to prevent concurrent fetches
- Rebuild dashboard static assets

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Define zombie classification in rekindle recovery flow
- Fix <main_repo> → <repo_root> placeholder in SKILL.md
- Handle UserHomeDir failure gracefully in config read
- Add all 8 herald tiding types to filter UI
- Guard NaN dates in GanttChart timeline
- Guard arrow-key navigation when command palette is empty
- Fallback for branch label when path split yields empty

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add gitRoot field back to Server for file-based operations
  (command queue, config read/write) not yet migrated to SQLite
- Port autopsy handler to use autopsy.Scan instead of removed
  file-based LoadByID/List functions
- Port tome handler to use tome.Load with SQLite connection
- Add Timestamp field to WSEvent broadcasts (from branch)
- Update NewServer callers with gitRoot parameter

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace bare `fellowship` CLI references with the pinned path
`~/.claude/fellowship/bin/fellowship` per the documented convention.
Addresses CodeRabbit review comments from PR #76.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 21, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: edfbff6f-345b-41d1-a324-b1c403746d45

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch worktree-fellowship-fix-docs-review-comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@justinjdev justinjdev marked this pull request as ready for review March 21, 2026 22:47
@justinjdev justinjdev merged commit 8bfd4d8 into feat/command-dashboard Mar 21, 2026
1 check passed
@justinjdev justinjdev deleted the worktree-fellowship-fix-docs-review-comments branch March 21, 2026 22:47
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