Skip to content

feat(bubble-up): add bubble-up add/remove commands - #677

Merged
jeremy merged 11 commits into
mainfrom
feat/bubble-up-command
Sep 2, 2026
Merged

feat(bubble-up): add bubble-up add/remove commands#677
jeremy merged 11 commits into
mainfrom
feat/bubble-up-command

Conversation

@jeremy

@jeremy jeremy commented Sep 2, 2026

Copy link
Copy Markdown
Member

What

Surfaces the new basecamp-sdk Bubble Up write operations as a CLI command
group, mirroring basecamp bookmarks:

basecamp bubble-up add <id|url> [--at <when>]
basecamp bubble-up remove <id|url>
  • add bubbles a recording up in your readings. It bubbles up now by
    default; --at schedules it instead — a keyword (today, tomorrow,
    weekend, next_week) or an ISO8601 date.
  • remove pops the bubble-up.

Both verbs are idempotent and take a recording id or a pasted Basecamp URL, the
same as bookmarks. Bubble-up is personal, so there's no --in <project>.

The at default

bc3 currently requires at — an omitted param raises server-side
(Date.iso8601(nil)) — so add sends "now" when --at is absent rather than
omitting it. That keeps the ergonomic "add == bubble up now" contract working
against bc3 today; the SDK layer stays neutral (it sends exactly what it's
given).

No status read is offered: the per-recording bubble-up GET is an
unrenderable API gap (its jbuilder lives outside app/views/api/). The full
current+scheduled list is basecamp notifications (SDK GetBubbleUps).

Dependency — blocked on the SDK PR

Depends on basecamp/basecamp-sdk#839 (adds the BubbleUps ops). The SDK is
pinned here to that feature branch as a pseudo-version placeholder
(v0.15.1-0.20260902165153-4b2a7cddbd0f). Before merge, once the SDK PR
lands and a release is cut, this must be re-pinned to the released
go/vX.Y.Z tag and the vendored MCP model re-synced from it
(scripts/sync-mcp-model.sh).

Because the pin is a branch ahead of the last release (go/v0.15.0), the MCP
model re-sync also pulls the SDK-main operations merged since then
(recent-projects, delegated-events) — that's why the served-operation count
moves 247 → 253 rather than by just the two bubble-up ops. It resolves to a
clean tag-to-tag bump when re-synced from the release tag. The new BubbleUps
tag is claimed by the existing personal/account MCP domain.

Tests

  • bubble_up_test.go: add sends at:"now" by default, --at schedules
    verbatim, URL arg resolves, remove DELETEs, non-id is a usage error.
  • Command catalog + surface baseline updated; TestCatalogMatchesRegisteredCommands,
    TestSurfaceSnapshot, and the MCP TestCatalog* (snapshot, provenance,
    served-count) pass.
  • go build ./..., go vet, gofmt clean. (The pre-existing interactive-TTY
    tests — TestBareBasecampNeverReportsASetupError, TestExplicitSetupStillRefuses,
    TestDeleteConfirmableFollowsTheAudienceNotTheDevice — fail identically on
    a pristine origin/main in a non-TTY shell; unrelated to this change.)

Release note: Features (enhancement).


Summary by cubic

Previously, the CLI could only list bubble-ups through basecamp notifications bubbleups; it now supports personal basecamp bubble-up add|remove commands for changing them. add bubbles a recording up immediately by default or schedules it with --at, while remove pops it; both are idempotent, and add reports the requested timing because the API returns no resulting state.

  • Accepts positive recording IDs or Basecamp URLs and validates --at locally.
  • --at accepts now, today, tomorrow, weekend, next_week, or a YYYY-MM-DD date; timestamps and basic-format dates are rejected because Basecamp uses day granularity.
  • basecamp notifications bubbleups remains the full current and scheduled list; no per-recording status command is added.
  • Updates the command surface, agent skill, API coverage, and account-scoped MCP catalog; the SDK model refresh also adds four unrelated operations, raising the served catalog count from 247 to 253.
  • Star-labeled TUI surfaces now use Starred instead of Bookmarked, including the project toggle, fixing labels and toggling for bookmarked-but-unstarred projects.

Dependencies

  • Pins github.com/basecamp/basecamp-sdk/go to the merged bubble-up support through a pseudo-version; repin it to the v0.15.1 release and rerun scripts/sync-mcp-model.sh when available.
  • Updates google.golang.org/grpc to v1.83.1 to address GHSA-vp52-pcj8-j9qc and refreshes related checksums and the Nix vendor hash.

Written for commit b8d69c0. Summary will update on new commits.

Review in cubic

Copilot AI balanced review requested due to automatic review settings September 2, 2026 17:02
@github-actions github-actions Bot added commands CLI command implementations tests Tests (unit and e2e) deps labels Sep 2, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The SDK pin remains unreleased, incidental SDK operations lack required CLI coverage, and validation/provenance documentation is incomplete.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Adds personal bubble-up add/remove commands, backed by new SDK operations.

Changes:

  • Implements add/remove commands with URL support and scheduling.
  • Registers commands and adds tests/surface snapshots.
  • Updates the SDK pin and vendored MCP model.

[!TIP]
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.

File summaries
File Description
.surface Adds bubble-up command surface.
go.mod Pins the SDK feature revision.
go.sum Updates dependency checksums.
internal/cli/root.go Registers the command group.
internal/commands/bubble_up.go Implements add/remove behavior.
internal/commands/bubble_up_test.go Tests requests and argument handling.
internal/commands/commands.go Adds the catalog entry.
internal/commands/commands_test.go Registers the command in parity tests.
internal/mcpserver/catalog_test.go Updates the served-operation count.
internal/mcpserver/domains.go Maps BubbleUps into the account domain.
internal/mcpserver/model/behavior-model.json Adds operation behavior metadata.
internal/mcpserver/model/openapi.json Syncs the expanded SDK API model.
internal/mcpserver/model/PROVENANCE.json Records model source provenance.
internal/mcpserver/testdata/catalog_snapshot.txt Updates the MCP catalog snapshot.
Review details
  • Files reviewed: 13/14 changed files
  • Comments generated: 6
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread go.mod Outdated
Comment thread internal/commands/bubble_up.go
Comment thread internal/mcpserver/testdata/catalog_snapshot.txt
Comment thread internal/mcpserver/testdata/catalog_snapshot.txt
Comment thread internal/commands/bubble_up.go
Comment thread internal/commands/commands.go

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 10f088d1f2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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

Comment thread go.mod Outdated
charm.land/bubbletea/v2 v2.0.9
charm.land/lipgloss/v2 v2.0.6
github.com/basecamp/basecamp-sdk/go v0.15.0
github.com/basecamp/basecamp-sdk/go v0.15.1-0.20260902165153-4b2a7cddbd0f

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Add CLI coverage for every operation in the SDK bump

This dependency bump also introduces ListRecentProjects, RecordProjectVisit, SpotlightRecording, and UnspotlightRecording in the vendored SDK model, but a repo-wide search finds no corresponding CLI commands, catalog entries, or registrations. Consequently those new SDK capabilities remain inaccessible from the CLI; add their command surfaces or explicitly resolve any missing service-wrapper blocker before taking this bump.

AGENTS.md reference: AGENTS.md:L131-L132

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Flagging to the operator rather than resolving. The SDK pin advances monotonically to the bubble-up head, which also carries ListRecentProjects, RecordProjectVisit, and SpotlightRecording/UnspotlightRecording — all added to the SDK after v0.15.0. Each needs its own CLI command, catalog entry, root registration, tests, and coverage row (with its own flag/output design), which is separate feature work from bubble-up. Whether to bundle those commands here or land bubble-up now and track them as follow-up coverage is a scope/sequencing call, so I'm leaving this open for the operator. (CLI Surface Check is green — the completeness bar is a documented practice, not a CI gate.)

Comment thread internal/commands/commands.go
Comment thread internal/commands/bubble_up.go
Comment thread internal/commands/bubble_up.go
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 2, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-02T22:09:57.290024Z b8d69c0 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 14 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread go.mod Outdated
Comment thread internal/commands/bubble_up.go
Comment thread internal/commands/bubble_up.go Outdated
Comment thread internal/commands/bubble_up.go
Comment thread internal/cli/root.go
Comment thread internal/commands/bubble_up.go
Comment thread internal/commands/bubble_up.go Outdated
Comment thread internal/commands/bubble_up_test.go Outdated
Comment thread internal/commands/commands.go
Copilot AI review requested due to automatic review settings September 2, 2026 17:24
@github-actions github-actions Bot added the sdk SDK wrapper and provenance label Sep 2, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 257b5da3b9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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

Comment thread internal/mcpserver/model/PROVENANCE.json Outdated
Comment on lines +28682 to +28684
"at": {
"type": "string",
"description": "Timing for the bubble-up. `\"now\"` bubbles up immediately; a scheduling\nkeyword (`\"today\"`, `\"tomorrow\"`, `\"weekend\"`, `\"next_week\"`) or an ISO8601\ndate (e.g. `\"2026-09-10\"`) schedules it to resurface later. bc3 requires a\nvalue \u2014 omitting `at` errors server-side (`Date.iso8601(nil)`) \u2014 so send\n`\"now\"` for the immediate case."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Default omitted MCP bubble-up timing to now

When an MCP caller invokes the newly advertised create_bubble_up action with only its required recordingId, this schema permits at to be omitted, and the generic dispatcher consequently posts a nil body. The description on this property confirms that current bc3 raises on a missing value; the CLI command avoids that by injecting "now", but MCP bypasses the command entirely. Require at in the served schema or inject "now" on the MCP path so the minimal tool call does not fail server-side.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Flagging to the operator rather than resolving. The MCP surface faithfully serves the SDK's optional-at schema. Injecting now would mean special-casing one operation in the deliberately generic catalog dispatcher (there is no per-operation default hook), and marking at required in the served schema would diverge the vendored model from the SDK source it mirrors and contradict the SDK's deliberate optional-at design. The missing-at server-side raise is the same bc3 gap the operator is resolving via a forthcoming bc3 default, which fixes every path at once (SDK, MCP, and the CLI without its now stopgap). Leaving open for the operator's call on an interim MCP-path default.

Comment thread internal/commands/bubble_up.go
@jeremy

jeremy commented Sep 2, 2026

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9433de4b60

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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

Comment thread internal/commands/bubble_up.go Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The unreleased SDK pin, incomplete SDK-method CLI coverage, and incorrect --at now summary must be resolved.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

internal/commands/bubble_up.go:92

  • An explicit --at now enters this branch and reports that the recording was “Scheduled,” even though the command and SDK define now as an immediate bubble-up. Treat explicit now the same as the omitted default; a regression assertion for the summary would also catch this case.
  • Files reviewed: 15/16 changed files
  • Comments generated: 2
  • Review effort level: Balanced

Comment thread go.mod Outdated
Comment thread internal/version/sdk-provenance.json Outdated
Copilot AI review requested due to automatic review settings September 2, 2026 17:49
@github-actions github-actions Bot added skills Agent skills docs labels Sep 2, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: eb021e8f08

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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

Comment thread internal/commands/bubble_up.go Outdated
Comment thread API-COVERAGE.md

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The SDK remains unreleased, additional imported SDK operations lack required CLI parity, and ISO 8601 validation rejects a supported form.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (1)

go.mod:9

  • This still pins an unreleased pseudo-version, while the referenced SDK PR #839 is open/blocked and the latest release remains v0.15.0. The PR description explicitly requires replacing this with the released tag before merge; after that, regenerate go.sum, both provenance files/model snapshots, and the Nix vendor hash.
	github.com/basecamp/basecamp-sdk/go v0.15.1-0.20260902171637-e03865568c6f
  • Files reviewed: 17/18 changed files
  • Comments generated: 2
  • Review effort level: Balanced

Comment thread API-COVERAGE.md
Comment thread internal/commands/bubble_up.go Outdated

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 4 files (changes from recent commits).

You’re at about 93% of the monthly reviewed-line limit. You may want to disable incremental reviews to conserve quota. Reviews will continue until that limit is exceeded. If you need help avoiding interruptions, please contact contact@cubic.dev.

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread skills/basecamp/SKILL.md Outdated
Comment thread API-COVERAGE.md
Comment thread internal/commands/bubble_up.go Outdated
Comment thread API-COVERAGE.md
Copilot AI review requested due to automatic review settings September 2, 2026 18:03

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The SDK bump still exposes four operations without the repository-required CLI coverage, and the agent metadata names the wrong full-list command.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details
  • Files reviewed: 17/18 changed files
  • Comments generated: 1
  • Review effort level: Balanced

Comment thread internal/commands/bubble_up.go Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 74b1fc9ff5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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

Comment thread internal/mcpserver/model/openapi.json
Comment thread internal/commands/bubble_up.go Outdated
Comment thread internal/commands/bubble_up.go Outdated
Copilot AI review requested due to automatic review settings September 2, 2026 21:04

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

SDK provenance is inconsistent, and recording URL validation plus the MCP omission behavior need correction.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

internal/commands/bubble_up.go:167

  • extractID falls back to a parsed URL's project or account ID when no recording ID exists (internal/urlarg/urlarg.go:114-124). Consequently, a project URL such as /123/projects/456 is accepted here and sent as recording 456, potentially targeting the wrong resource instead of returning a usage error. Resolve through extractWithProject and reject an empty recording component.
  • Files reviewed: 17/18 changed files
  • Comments generated: 2
  • Review effort level: Balanced

Comment thread go.mod
Comment thread internal/mcpserver/model/openapi.json
Bump the basecamp-sdk/go pin to the current feat/recording-bubble-up head
via `make bump-sdk`, syncing go.mod and internal/version/sdk-provenance.json
(the prior manual pin left provenance at v0.15.0, tripping provenance-check).

Bump google.golang.org/grpc v1.82.1 -> v1.83.1 to clear GHSA-vp52-pcj8-j9qc
(HIGH: gRPC-Go HTTP/2 DATA-frame OOM), which Trivy flags on the module graph;
grpc is compiled in via sigstore-go's verify path.

Regenerate the Nix vendorHash for the go.mod/go.sum change (verified building
via the pinned nixos/nix image).
TestCatalogModelProvenance pins the vendored model's PROVENANCE ref to the
basecamp-sdk version go.mod resolves. Bumping the SDK pin to the bubble-up
head left the ref at the prior commit; refresh it to the go.mod
pseudo-version for e0386556. The vendored behavior-model.json/openapi.json
are byte-identical (the SDK head added only tests and docs, no operations),
so only the provenance pointer moves.
Command fixes from review:
- Validate --at locally before account resolution — a typo like "tomorow"
  is now a usage error instead of a server-side Date.iso8601 raise.
- Report an explicit `--at now` as immediate (bubbled_up:true, "Bubbled up"
  summary), matching the omitted default rather than claiming it was scheduled.
- Set bubbled_up from the effective timing, so a future --at reports
  bubbled_up:false (only in the scheduled set).
- Reject a non-positive recording id as a usage error.
- Point the post-add "view" breadcrumb at the registered `basecamp show`;
  `basecamp recordings show` does not exist.
- Cover remove's non-id rejection and the new --at/id paths in tests; the
  URL-acceptance test no longer pastes a cross-account URL.

Docs: API-COVERAGE.md bubble_ups row now lists the add/remove write ops and
the SDK version; the basecamp agent skill gains bubble-up triggers, quick
reference, and a Personal-section entry.
…-ups

Round-two review fixes:
- validateBubbleUpAt now accepts only "now", the keywords, or YYYY-MM-DD.
  bc3 schedules at day granularity (keywords map to fixed hours; Date.iso8601
  reduces any value to a calendar day), so a timestamp with a time component
  would be silently truncated and echoing it back would misreport the honored
  time. Rejecting timestamps and ISO basic dates keeps the contract to the one
  form bc3 honors as written; help text updated to match. Tests cover a bare
  date reaching the wire and rejection of a timestamp / basic date.
- API-COVERAGE.md summary totals move 184 -> 186 implemented and 196 -> 198
  tracked for the two new bubble-up write endpoints, keeping the aggregate
  consistent with the per-row change.
- Drop the duplicated bubble-up rows from the agent skill's quick reference
  (kept the personal-commands set next to bookmarks).
go.mod pins basecamp-sdk f439f493; bring internal/version/sdk-provenance.json,
the vendored model PROVENANCE.json, and the Nix vendorHash into lockstep with
that commit so TestCatalogModelProvenance, provenance-check, and the flake
build all resolve against one SDK version.
…arred

add reports the requested timing rather than asserting a resulting state:
bc3 answers with a bare 204 and add is idempotent, so an add over an already
bubbled-up recording is indistinguishable from a fresh one. Drop the
bubbled_up state claim and summarize as a request. The agent note points to
"basecamp notifications bubbleups", the full current-and-scheduled listing,
instead of the general notifications inbox.

Projects view carries Starred through ProjectInfo and uses it for the star
marker and the /projects/{id}/star.json toggle. A project filed into a stack
is bookmarked but not starred, so keying the toggle off Bookmarked tried to
unstar an already-unstarred project.
Copilot AI review requested due to automatic review settings September 2, 2026 21:32
@jeremy
jeremy force-pushed the feat/bubble-up-command branch from 644d52f to ba6ee1a Compare September 2, 2026 21:32
@github-actions github-actions Bot added the tui Terminal UI label Sep 2, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ba6ee1a9c1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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

Comment thread internal/tui/workspace/data/types.go
Quick Jump renders its project category as "Starred" and the interactive
project picker prefixes a ★ glyph, but both keyed off Bookmarked, so a
project filed into a stack but not starred was mislabeled as starred.
Point both at Starred; ranking and the Home "Bookmarks" section keep
Bookmarked, which is the aggregate pinned-or-stacked state they mean.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The optimistic star toggle leaves bookmark membership stale, and the skill overstates accepted date formats.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details
  • Files reviewed: 26/27 changed files
  • Comments generated: 2
  • Review effort level: Balanced

Comment thread internal/tui/workspace/views/projects.go
Comment thread skills/basecamp/SKILL.md Outdated
Copilot AI review requested due to automatic review settings September 2, 2026 21:45

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b6de9dbb66

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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

Comment thread internal/tui/workspace/views/projects.go

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

User-facing star labels and scheduling documentation remain inconsistent, and the corrected toggle behavior lacks regression coverage.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (3)

skills/basecamp/SKILL.md:1111

  • The skill promises any ISO 8601 date, but validateBubbleUpAt accepts only the extended calendar form YYYY-MM-DD and explicitly rejects basic ISO dates and timestamps. Describe the narrower format here so agents do not generate values the command rejects.
`next_week`) or an ISO8601 date. Both verbs are idempotent. There is no

internal/tui/workspace/views/projects.go:738

  • This action now explicitly toggles a star, but its visible key hint still says b bookmark (defaultProjectKeys line 119, pinned by TestProjects_ShortHelp_LeftPanel). That is misleading for stacked-but-unstarred projects; update the hint and its test to say star.
	// The toggle drives /projects/{id}/star.json, so it tracks Starred — a
	// project filed into a stack is Bookmarked but not necessarily Starred.

internal/tui/workspace/views/projects.go:744

  • The core toggle fix is not covered by the added tests: they verify only marker rendering, so a regression to deriving the request from Bookmarked would still pass. Add a stacked project case (Bookmarked: true, Starred: false) that asserts the toggle chooses the star/create path and that an error restores Starred.
	newStarred := !p.Starred
	// Optimistic: flip in local data, re-sort
	p.Starred = newStarred
	v.syncProjectList()

	return v.setBookmark(projectID, newStarred)
  • Files reviewed: 26/27 changed files
  • Comments generated: 1
  • Review effort level: Balanced

Comment thread internal/tui/workspace/views/projects.go Outdated
…consistent

The skill note called --at an "ISO8601 date", which also promises the basic
form (20260910) that validateBubbleUpAt rejects; name the accepted calendar
form (YYYY-MM-DD) to match the command contract. Restore the projects-view
toggle's error copy to "bookmark" so the surface's user-facing wording stays
consistent with the "Bookmark updated" success text.
Copilot AI review requested due to automatic review settings September 2, 2026 21:52

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The changed star-toggle path lacks regression coverage, and the required SDK release-tag repin remains pending.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details
  • Files reviewed: 26/27 changed files
  • Comments generated: 1
  • Review effort level: Balanced

Comment thread internal/tui/workspace/views/projects.go
The marker tests covered display; none drove the toggle itself, so a
regression from Starred back to Bookmarked could POST/DELETE the wrong
endpoint for a stacked-but-unstarred project and still pass. Add a test
that toggles such a project and asserts it flips Starred, POSTs
/star.json (never DELETE), and rolls the star back on error, backed by a
new NewTestSessionWithClient helper that injects a stub-transport SDK.
Copilot AI review requested due to automatic review settings September 2, 2026 22:04

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The served MCP create_bubble_up action still permits omitting at, although the current backend rejects that request.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details
  • Files reviewed: 27/28 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b8d69c081e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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

Comment thread internal/tui/workspace/views/projects.go
@jeremy
jeremy merged commit 05aca0b into main Sep 2, 2026
35 checks passed
@jeremy
jeremy deleted the feat/bubble-up-command branch September 2, 2026 22:19
@robzolkos robzolkos added the enhancement New feature or request label Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commands CLI command implementations deps docs enhancement New feature or request sdk SDK wrapper and provenance skills Agent skills tests Tests (unit and e2e) tui Terminal UI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants