From 7d64d3b4730c776de36b50ca31f6bd4c6ae8a0de Mon Sep 17 00:00:00 2001 From: Hassan Abdel-Rahman Date: Thu, 22 Oct 2026 09:04:04 -0400 Subject: [PATCH 1/2] ci: push workspace syncs without realm events 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 --- .github/workflows/sync-workspace.yml | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync-workspace.yml b/.github/workflows/sync-workspace.yml index 736db60b3c7..943b57332b1 100644 --- a/.github/workflows/sync-workspace.yml +++ b/.github/workflows/sync-workspace.yml @@ -286,8 +286,17 @@ jobs: echo "::notice::This boxel-cli has no --changed-since, so every file goes up." fi + # The push is indexed without announcing it to the workspace's open + # tabs, which pick the new content up on their next load instead of + # resetting mid-session. A boxel-cli without --no-realm-events + # rejects it, so that one announces. + realm_events=() + if grep -q -- '--no-realm-events' <<< "$push_help"; then + realm_events+=(--no-realm-events) + fi + set +e - OUTPUT=$(boxel realm push . "${WORKSPACE_URL}" --delete "${changed_since[@]}" 2>&1) + OUTPUT=$(boxel realm push . "${WORKSPACE_URL}" --delete "${changed_since[@]}" "${realm_events[@]}" 2>&1) STATUS=$? set -e echo "$OUTPUT" @@ -345,8 +354,17 @@ jobs: echo "::notice::This boxel-cli has no --changed-since, so every file goes up." fi + # The push is indexed without announcing it to the workspace's open + # tabs, which pick the new content up on their next load instead of + # resetting mid-session. A boxel-cli without --no-realm-events + # rejects it, so that one announces. + realm_events=() + if grep -q -- '--no-realm-events' <<< "$push_help"; then + realm_events+=(--no-realm-events) + fi + set +e - OUTPUT=$(boxel realm push . "${WORKSPACE_URL}" --delete "${changed_since[@]}" 2>&1) + OUTPUT=$(boxel realm push . "${WORKSPACE_URL}" --delete "${changed_since[@]}" "${realm_events[@]}" 2>&1) STATUS=$? set -e echo "$OUTPUT" From acd72dfec116e45f84256defde839c76f2f41c41 Mon Sep 17 00:00:00 2001 From: Hassan Abdel-Rahman Date: Thu, 22 Oct 2026 09:06:57 -0400 Subject: [PATCH 2/2] ci: say in the sync log whether the push is announced Co-Authored-By: Claude Opus 5.5 --- .github/workflows/sync-workspace.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync-workspace.yml b/.github/workflows/sync-workspace.yml index 943b57332b1..e993c32f7e2 100644 --- a/.github/workflows/sync-workspace.yml +++ b/.github/workflows/sync-workspace.yml @@ -72,8 +72,9 @@ on: description: | 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`, - so the version has to support it. + Staging and production syncs pass `realm push --changed-since` + and `--no-realm-events` when this version lists them. An older + version sends every file and announces the push to open tabs. type: string default: latest secrets: @@ -293,6 +294,9 @@ jobs: realm_events=() if grep -q -- '--no-realm-events' <<< "$push_help"; then realm_events+=(--no-realm-events) + echo "Pushing with --no-realm-events: open tabs pick the changes up on their next load." + else + echo "::notice::This boxel-cli has no --no-realm-events, so the push is announced to open tabs." fi set +e @@ -361,6 +365,9 @@ jobs: realm_events=() if grep -q -- '--no-realm-events' <<< "$push_help"; then realm_events+=(--no-realm-events) + echo "Pushing with --no-realm-events: open tabs pick the changes up on their next load." + else + echo "::notice::This boxel-cli has no --no-realm-events, so the push is announced to open tabs." fi set +e