Relationships
#1663 swamp CLI: surface the audience and resolvedInVersion fields swamp-club now serves
Opened by keeb · 8/15/2026
Problem
Two Lab API fields shipped from swamp-club that the swamp CLI cannot surface, because SwampClubClient.fetchIssue maps the server response into a narrow FetchIssueResponse and drops every field it does not name. So the data is served correctly and the people who asked for it still see nothing.
Both were delivered as the swamp-club half of their issues, with the CLI half deliberately deferred:
audience(from #1216) — the effective audience of an issue plus every restriction that applies, now onGET /api/v1/lab/issues/<n>and on the create 201. #1216's reporter (mgreten) works throughswamp issue, and his original complaint was precisely that creation andissue get"do not show an owning collective, visibility, or effective audience". Serving it does not fix that until the CLI renders it.resolvedInVersion(from #1112) — the swamp version that carried a fix, plus ashippedSincefilter on the list endpoint. #1112's reporter is an agent that wantsswamp issue get --jsonto carry the field so it can compare againstswamp --version.
What is needed, per field
resolvedInVersion is a three-file change:
src/infrastructure/http/swamp_club_client.ts— add the field toFetchIssueResponseand to thefetchIssuemapper.src/libswamp/issues/get.ts— add it toIssueGetData.- Optionally the human renderer in
src/presentation/renderers/issue_get.ts;--jsonneeds no change onceIssueGetDatacarries it, sinceJsonIssueGetRendererprints that verbatim.
audience is the same shape, plus deciding how to render a structured value in the human output (it is an object with a visibility and a reasons array, not a string).
#1112 also asked for swamp issue shipped [--since <version>]. The server side exists: GET /api/v1/lab/issues?shippedSince=<iso-or-version> composes with the visibility filter. A CLI subcommand would need src/cli/commands/issue_shipped.ts, a libswamp module, a SwampClubClient.shippedIssues(), and a renderer.
Notes
Version comparison is CalVer (YYYYMMDD.HHMMSS.0-sha.HASH), not semver, and the CLI has no semver comparison anywhere — its update check is string equality against a redirect target. The server parses the leading YYYYMMDD as a day, so --since is time-based rather than release membership; two issues shipped minutes apart can land in different releases. Worth stating in the CLI help rather than implying release semantics.
Filed as the tracking half of #1216 and #1112 so neither is closed as fully delivered while its consumer still sees nothing.
Open
Click a lifecycle step above to view its details.
Sign in to post a ripple.