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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions