Repository navigation
Push workspace syncs without announcing them to open tabs - #6915
Conversation
The skills and homepage syncs pass `realm push --no-realm-events` when the installed boxel-cli supports it, so a deploy indexes the new content without resetting the open tabs of everyone using the workspace. An older CLI keeps announcing, as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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. |
habdelra
left a comment
There was a problem hiding this comment.
[Claude Code 🤖] This review covers the flag detection and the push invocations in both sync steps, run under the runner's bash -eo pipefail, plus the other boxel realm push call sites under .github/workflows. It does not cover how the realm server handles the header.
No blocking issues.
- Log whether the push uses the flag, which also makes the test plan checkable. See the comment on the staging
realm_eventsblock; the production step needs the same change. - Update the
boxel-cli-versioninput description. See the file-level comment.
Follow-up, not this PR: the re-push step in preview-realm-actions-integration.yml says it mirrors this workflow's push invocation, but it doesn't pass --no-realm-events. So no PR-time run sends X-Boxel-Realm-Events: none. Once the CLI that defines the flag is in the tree, add the flag to that re-push. That job builds the CLI from source, so it needs no help-text detection.
| realm_events=() | ||
| if grep -q -- '--no-realm-events' <<< "$push_help"; then | ||
| realm_events+=(--no-realm-events) | ||
| fi |
There was a problem hiding this comment.
[Claude Code 🤖] The run log never shows whether the flag was used. If the CLI doesn't have the flag, the step falls back without saying so. If it does have it, nothing in the log says that either: boxel realm push doesn't print anything about realm events, and the step doesn't echo the push command line. So a caller pinned to an older boxel-cli-version keeps resetting open tabs and leaves no trace of it. The test plan's "push log shows --no-realm-events in effect" also has nothing in the log to check. Mirror the --changed-since notice:
| realm_events=() | |
| if grep -q -- '--no-realm-events' <<< "$push_help"; then | |
| realm_events+=(--no-realm-events) | |
| fi | |
| realm_events=() | |
| if grep -q -- '--no-realm-events' <<< "$push_help"; then | |
| realm_events+=(--no-realm-events) | |
| else | |
| echo "::notice::This boxel-cli has no --no-realm-events, so the push is announced to open tabs." | |
| fi |
Make the same change to the realm_events block in "Sync to production workspace". Introduced by this change. Non-blocking.
There was a problem hiding this comment.
[Claude Code 🤖] Fixed in acd72df. Both sync steps now log 'Pushing with --no-realm-events…' when the CLI lists the flag, and print a ::notice:: saying the push is announced when it doesn't.
There was a problem hiding this comment.
[Claude Code 🤖] Please update the boxel-cli-version input description, since a caller pinning the CLI reads it to learn what the sync needs from the CLI. It doesn't mention --no-realm-events. A version without the flag still pushes fine, but it announces every pushed file to open tabs. The description also says the version "has to support" --changed-since, but both sync steps fall back when it doesn't. Suggested text:
Version spec for `npm install -g @cardstack/boxel-cli`.
Default `latest` follows the most recent published version.
Staging and production syncs pass `realm push --changed-since`
and `--no-realm-events` when the version lists them. Without
them, every file goes up and the push is announced to open tabs.Non-blocking. The --no-realm-events half is introduced by this change; the --changed-since half is pre-existing.
There was a problem hiding this comment.
[Claude Code 🤖] Fixed in acd72df. The boxel-cli-version description now says the syncs pass --changed-since and --no-realm-events only when the version lists them, and that an older version sends every file and announces the push.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…and-homepage-syncs-re-upload-the' into cs-14191-sync-workspace-no-realm-events
…ce-no-realm-events
|
[Claude Code 🤖] Reopening. This PR doesn't depend on the shared realm event room that #6906 proposed, which was closed under ADR 011 (#6921). It only makes system-initiated indexing (public-realm deploys and syncs, the post-deploy boxel-ui reindex, Grafana reindexes, the OpenRouter sync) run without realm events, so open tabs aren't reset by indexing their users didn't ask for. That holds whichever way public-realm events are delivered, and it cuts the load on Synapse under any of the alternatives. Hassan wants it to land, and it was already approved. Reducing fan-out for public realms is being redesigned separately. |
Important
Merge order: #6901 has merged; this PR targets
main.realm push --no-realm-events), which has merged. Syncs go silent once alatestCLI with the flag is published; until then the help check keeps them announcing.What this changes
The reusable
sync-workspace.yml(boxel-skills and boxel-home call it on every push and release) pushes withboxel realm push --no-realm-eventswhen the installed boxel-cli lists that flag. The realm then indexes the pushed content without announcing it to the workspace's subscribers. A sync is system-initiated, so open tabs pick the new content up on their next load instead of resetting their loader mid-session.The detection follows the
--changed-sincepattern in the same step: it grepsrealm push --help. A CLI without the flag keeps announcing, exactly as today, so this is safe to merge before a CLI release that has it.Follow-ups
--no-realm-eventsinpreview-realm-actions-integration.yml's re-push once the flag is onmain.Test plan
latesthas the flag: the push log shows--no-realm-eventsin effect, and the workspace indexes the new files with no realm events in its event room.🤖 Generated with Claude Code