Conversation
basecamp/actioncable-go was renamed to basecamp/actioncable-client and its Go module now lives at github.com/basecamp/actioncable-client/go/v2. Switch the import path and require to v2.0.2. The exported API is a superset of v1.1.0 and client.go is unchanged, so WithStopOnError keeps stopping reconnects on an authentication failure.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The dependency bump leaves the Nix vendor hash stale, causing the required Nix build to fail.
Get a fresh assessment by requesting another Copilot review.
Review effort: Balanced
Findings: 1
Open (1)
What changed in this PR
Migrates Action Cable to its renamed v2 Go module while preserving existing watch behavior.
Changes:
- Updates dependency/import paths to
actioncable-client/go/v2. - Updates tests and Action Cable documentation.
- Leaves the required Nix
vendorHashupdate outstanding.
[!TIP]
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or rungh pr ready --undo.
Click "Ready for review" or rungh pr readyto reengage.
| File | Description |
|---|---|
internal/cmd/watch.go |
Updates Action Cable import. |
internal/cmd/watch_test.go |
Updates test import. |
internal/cmd/watch_new_test.go |
Updates new-mail test import. |
internal/cmd/watch_calendar.go |
Updates calendar watch import. |
internal/cmd/tui_watch.go |
Updates TUI watch import. |
internal/cmd/tui_watch_test.go |
Updates TUI watch test import. |
internal/cable/cable.go |
Migrates cable client import. |
internal/cable/cable_test.go |
Migrates cable tests. |
go.mod |
Replaces the v1 module with v2. |
go.sum |
Updates module checksums. |
API-COVERAGE.md |
Renames the documented client. |
AGENTS.md |
Updates the project link and module description. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
@codex review |
|
Codex Review: Didn't find any major issues. What shall we delve into next? Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |

basecamp/actioncable-gowas renamed tobasecamp/actioncable-clientand became a multi-language repository. The Go client now lives ingo/as the modulegithub.com/basecamp/actioncable-client/go/v2. This moves us fromgithub.com/basecamp/actioncable-go v1.1.0togithub.com/basecamp/actioncable-client/go/v2 v2.0.2.API changes absorbed
None needed at call sites. Between v1.1.0 and v2.0.2 the exported API only grew:
ErrMessageTooBig,*HandshakeError,*CloseError, theStatusCloserinterface, and aVersionconstantactioncableThe imports now carry an explicit
actioncablename, because the path ends ingo/v2and goimports (inmake lint) asks for it.Behavior verified
client.go,options.go,dispatcher.goandsubscription.goare byte-identical between v1.1.0 and v2.0.2. That meansWithStopOnError, which stops reconnecting on an authentication failure (#466, actioncable-client#9), works exactly as before.TestAuthenticationFailureStopsAReconnectandTestOnlyAuthenticationFailuresStopReconnectspass against v2.0.2 with-race -count=1. With theWithStopOnErrorline removed, the first test fails with "client kept reconnecting after authentication failed", so it really does test the library's behavior.make checkpasses.The v2 behavior changes are all in the built-in WebSocket transport, and none of them affects us:
*HandshakeError, with the same message as before*CloseError; a close frame with no code now gives*CloseError{Code: 1005}where it used to giveio.EOFErrMessageTooBigactioncable-client, but we set our own in the header funcNothing here compares transport errors to
io.EOFor to message strings.nix/package.nix: thevendorHashis updated to the hash the nix-build job computed for the new module.Docs: the link in AGENTS.md (which was missing its scheme) and the two API-COVERAGE.md rows now point to actioncable-client.
Overlap with open PRs
Two open PRs change nearby lines: #473 changes the
hey-sdkline in go.mod, which is right next to this one, and #344 and #185 change AGENTS.md in other sections. Whichever lands second may need a one-line rebase. None of them conflicts in the code.