Skip to content

Sync fork to upstream v4 + reapply & fix @mention patch — establish single source of truth #1

Description

@waynemsmith

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 @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
    • Adds internal/commands/mentions.go + internal/commands/mentions_test.go.
  • 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 behind basecamp/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)

  1. master of this repo = latest upstream + our mention patch, all tests green.
  2. @mention in comments and descriptions actually resolves and notifies (verified against a real card).
  3. One installed fizzy on the workstation, built from this master, version string clean (no +dirty).
  4. The old TS implementation retired (branch main + ~/g/fizzy-cli), so there is no parallel codebase.
  5. 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).
  • Mention branch: mention-resolution (319e339, c0b727e).
  • Bug signature: could not fetch mentionable users: Unauthorized; endpoint /prompts/users; attachment markup <action-text-attachment content-type="application/vnd.actiontext.mention">.
  • Old impl: main branch (0fd8782) + ~/g/fizzy-cli.
  • Skill: ~/.claude/skills/fizzy/SKILL.md (repo ref ~line 1141).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions