You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Establish a single source of truth for the Fizzy CLI we use day-to-day: this fork (Concurrent-Systems/fizzy-cli, master), synced to the latest official release, carrying our @mention patch working end-to-end, built and installed as the only fizzy on the workstation. Remove the parallel/old implementation and point the Agent Skill at this repo only.
Right now mentions silently fail and there are two divergent codebases — this issue makes it clean and reliable.
Current state (the tangle)
This repo (Concurrent-Systems/fizzy-cli) is a Go fork of basecamp/fizzy-cli. Default branch master, primaryLanguage Go. Not archived.
Old TypeScript implementation still lives on the main branch (tip 0fd8782 "Update PLAN.md: PR Fix search to be cross-board by default basecamp/fizzy-cli#114 merged upstream") and as a local clone at ~/g/fizzy-cli. This is the superseded "first build" and should be retired.
The @mention patch is NOT on master. It lives on branch mention-resolution (local + origin), 4 commits ahead of master, never merged:
319e339 Add @mention resolution for comments and descriptions
c0b727e Address review feedback on mention resolution
dc96a14 Fix search to be cross-board by default
f84f9d7 Hoist getClient() before conditional branches
The installed binary (~/.local/bin/fizzy, built 2026-03-28, version v0.0.0-20260328151448-f84f9d79dafe+dirty) was built from a commit that includes the mention code (+dirty = from uncommitted changes), so mention code is compiled in — but see the runtime bug below.
Mentions are broken at runtime. Any @Name in a comment/description emits: Warning: could not fetch mentionable users: Unauthorized: Run 'fizzy auth login TOKEN' or set FIZZY_TOKEN
The @Name is left as plain text and no Fizzy notification fires. Root cause: fetchMentionUsers fetches mentionables from the /prompts/users endpoint, which returns the Lexxy editor autocomplete HTML (<lexxy-prompt-item search="…" sgid="…">) and is almost certainly session/cookie-authenticated, not API-token — the CLI's fizzy_… token is rejected. So @mentions have effectively never worked end-to-end. (All other commands using JSON/API endpoints — user list, card create, etc. — work fine with the same token.)
Upstream has moved a lot: our master is 127 commits behindbasecamp/fizzy-cli (now v4.0.0-rc.4+). Major upstream changes: migration to the fizzy SDK (fizzy-sdk v0.2.2, hashicorp/go-version), a dedicated FTS search endpoint (fizzy search repurposed), and a Homebrew transition for Fizzy 4. Our patch will need re-applying on top of a substantially changed client layer.
Mention patch is NOT upstreamed — basecamp has no @mention support (only markdown-attachment sanitization). The fork patch remains necessary.
Agent Skill (~/.claude/skills/fizzy/SKILL.md) documents @FirstName mentions (Invariant Fix misleading --account option documentation basecamp/fizzy-cli#8 + "@Mentions") but its only repo reference (line ~1141) points to https://github.com/basecamp/fizzy-cli (upstream), not this fork.
Desired end state (SSOT)
master of this repo = latest upstream + our mention patch, all tests green.
@mention in comments and descriptions actually resolves and notifies (verified against a real card).
One installed fizzy on the workstation, built from this master, version string clean (no +dirty).
The old TS implementation retired (branch main + ~/g/fizzy-cli), so there is no parallel codebase.
The Agent Skill points only to this fork and documents how to build/install/update it.
Tasks
Sync to upstream. Rebase/merge master onto basecamp/fizzy-cli latest stable-ish (v4.0.0-rc.4 or the chosen target). Resolve the SDK-migration churn in the client/HTTP layer.
Reapply the mention patch (mention-resolution: 319e339, c0b727e) on top of the synced master. Adapt mentions.go to the new SDK client (getHtml/equivalent).
Fix the runtime auth bug. Determine the correct authenticated way to fetch mentionables. Options to investigate: (a) does the new fizzy SDK expose a mentionables/prompt-users call that authenticates with the API token? (b) is there a JSON API endpoint for mentionable users instead of the HTML /prompts/users? (c) if /prompts/users genuinely needs a web session, decide whether that auth path is acceptable for the CLI. The acceptance bar is a real ActionText mention attachment + a delivered notification, not just "no error".
Tests. Keep/port mentions_test.go; add an e2e that creates a comment with @Name on a throwaway/test card and asserts the stored body contains content-type="application/vnd.actiontext.mention" (not plain @Name), and that the mentioned user is notified.
Build + install via make (go build -ldflags … -o <bin> ./cmd/fizzy) and install to ~/.local/bin/fizzy. Confirm fizzy version is clean (no +dirty) and from master.
Retire the old implementation. Archive/delete the TS main branch (and ~/g/fizzy-cli local) once master is the SSOT. Make master unambiguously the only living line.
Clean the Agent Skill. Update ~/.claude/skills/fizzy/SKILL.md to reference Concurrent-Systems/fizzy-cli as the CLI source, document the build/install/update procedure, and confirm the @mention docs match the working behaviour.
Merge the result to master via PR; delete the stale mention-resolution / fix-search-default-board branches afterward.
Acceptance criteria
fizzy comment create --card <test> --body "@Wayne test" produces a stored comment whose HTML contains an ActionText mention attachment and notifies the user — no Unauthorized warning.
fizzy version reports a clean build off master; ~/.local/bin/fizzy is the only fizzy on PATH.
go test ./... green, including mention tests.
No TS implementation remains as a live branch/clone; Skill points only here.
Key references
Upstream: basecamp/fizzy-cli @ v4.0.0-rc.4 (we are 127 behind).
Goal
Establish a single source of truth for the Fizzy CLI we use day-to-day: this fork (
Concurrent-Systems/fizzy-cli,master), synced to the latest official release, carrying our@mentionpatch working end-to-end, built and installed as the onlyfizzyon the workstation. Remove the parallel/old implementation and point the Agent Skill at this repo only.Right now mentions silently fail and there are two divergent codebases — this issue makes it clean and reliable.
Current state (the tangle)
Concurrent-Systems/fizzy-cli) is a Go fork ofbasecamp/fizzy-cli. Default branchmaster, primaryLanguage Go. Not archived.mainbranch (tip0fd8782"Update PLAN.md: PR Fix search to be cross-board by default basecamp/fizzy-cli#114 merged upstream") and as a local clone at~/g/fizzy-cli. This is the superseded "first build" and should be retired.@mentionpatch is NOT onmaster. It lives on branchmention-resolution(local +origin), 4 commits ahead ofmaster, never merged:319e339Add @mention resolution for comments and descriptionsc0b727eAddress review feedback on mention resolutiondc96a14Fix search to be cross-board by defaultf84f9d7Hoist getClient() before conditional branchesinternal/commands/mentions.go+internal/commands/mentions_test.go.~/.local/bin/fizzy, built 2026-03-28, versionv0.0.0-20260328151448-f84f9d79dafe+dirty) was built from a commit that includes the mention code (+dirty= from uncommitted changes), so mention code is compiled in — but see the runtime bug below.@Namein a comment/description emits:Warning: could not fetch mentionable users: Unauthorized: Run 'fizzy auth login TOKEN' or set FIZZY_TOKENThe
@Nameis left as plain text and no Fizzy notification fires. Root cause:fetchMentionUsersfetches mentionables from the/prompts/usersendpoint, which returns the Lexxy editor autocomplete HTML (<lexxy-prompt-item search="…" sgid="…">) and is almost certainly session/cookie-authenticated, not API-token — the CLI'sfizzy_…token is rejected. So@mentionshave effectively never worked end-to-end. (All other commands using JSON/API endpoints —user list,card create, etc. — work fine with the same token.)masteris 127 commits behindbasecamp/fizzy-cli(nowv4.0.0-rc.4+). Major upstream changes: migration to the fizzy SDK (fizzy-sdkv0.2.2,hashicorp/go-version), a dedicated FTS search endpoint (fizzy searchrepurposed), and a Homebrew transition for Fizzy 4. Our patch will need re-applying on top of a substantially changed client layer.@mentionsupport (only markdown-attachment sanitization). The fork patch remains necessary.~/.claude/skills/fizzy/SKILL.md) documents@FirstNamementions (Invariant Fix misleading --account option documentation basecamp/fizzy-cli#8 + "@Mentions") but its only repo reference (line ~1141) points tohttps://github.com/basecamp/fizzy-cli(upstream), not this fork.Desired end state (SSOT)
masterof this repo = latest upstream + our mention patch, all tests green.@mentionin comments and descriptions actually resolves and notifies (verified against a real card).fizzyon the workstation, built from thismaster, version string clean (no+dirty).main+~/g/fizzy-cli), so there is no parallel codebase.Tasks
masterontobasecamp/fizzy-clilatest stable-ish (v4.0.0-rc.4or the chosen target). Resolve the SDK-migration churn in the client/HTTP layer.mention-resolution:319e339,c0b727e) on top of the syncedmaster. Adaptmentions.goto the new SDK client (getHtml/equivalent)./prompts/users? (c) if/prompts/usersgenuinely needs a web session, decide whether that auth path is acceptable for the CLI. The acceptance bar is a real ActionText mention attachment + a delivered notification, not just "no error".mentions_test.go; add an e2e that creates a comment with@Nameon a throwaway/test card and asserts the stored body containscontent-type="application/vnd.actiontext.mention"(not plain@Name), and that the mentioned user is notified.make(go build -ldflags … -o <bin> ./cmd/fizzy) and install to~/.local/bin/fizzy. Confirmfizzy versionis clean (no+dirty) and frommaster.mainbranch (and~/g/fizzy-clilocal) oncemasteris the SSOT. Makemasterunambiguously the only living line.~/.claude/skills/fizzy/SKILL.mdto referenceConcurrent-Systems/fizzy-clias the CLI source, document the build/install/update procedure, and confirm the@mentiondocs match the working behaviour.mastervia PR; delete the stalemention-resolution/fix-search-default-boardbranches afterward.Acceptance criteria
fizzy comment create --card <test> --body "@Wayne test"produces a stored comment whose HTML contains an ActionText mention attachment and notifies the user — noUnauthorizedwarning.fizzy versionreports a clean build offmaster;~/.local/bin/fizzyis the onlyfizzyon PATH.go test ./...green, including mention tests.Key references
basecamp/fizzy-cli@v4.0.0-rc.4(we are 127 behind).mention-resolution(319e339,c0b727e).could not fetch mentionable users: Unauthorized; endpoint/prompts/users; attachment markup<action-text-attachment content-type="application/vnd.actiontext.mention">.mainbranch (0fd8782) +~/g/fizzy-cli.~/.claude/skills/fizzy/SKILL.md(repo ref ~line 1141).