Skip to content

chore: sync overlay to opencode 6fa55b660a (task-session undefined title fix) - #1011

Merged
jeonghun-jj-lee merged 1 commit into
mainfrom
fix/overlay-sync-task-session-undefined-title
Sep 11, 2026
Merged

chore: sync overlay to opencode 6fa55b660a (task-session undefined title fix)#1011
jeonghun-jj-lee merged 1 commit into
mainfrom
fix/overlay-sync-task-session-undefined-title

Conversation

@jeonghun-jj-lee

Copy link
Copy Markdown
Contributor

Promotes opencode local/amicode merge commit 6fa55b660a into the app-bundle overlay.

What changed

Syncs the fix from harmoniqs/opencode#337: guard against undefined session.title and part.tool in message-part.tsx.

This resolves the TypeError: Cannot read properties of undefined (reading 'startsWith') crash some users see on app load when their last session contains Task tool calls with untitled child sessions.

Files

  • packages/app-bundle/manifest.json — bumped fork_sha to 6fa55b660a
  • packages/app-bundle/overlay/packages/session-ui/src/components/message-part.tsx — optional chaining on lines 658, 659; typeof guard on line 716
  • packages/app-bundle/overlay/packages/session-ui/src/components/message-part-task.ts — new extracted helper
  • packages/app-bundle/overlay/packages/session-ui/src/components/message-part-task.test.ts — 14 unit tests

Verification

pnpm --filter @amicode/app-bundle sync:check -- --source ~/harmoniqs/opencode --revision 6fa55b660a
[overlay-promotion] PASS: 737 files and 116 deletions reproduce 6fa55b660a31

…tle fix)

Promotes opencode/local/amicode merge commit 6fa55b660a into the
app-bundle overlay. Contains the fix for the 'Cannot read properties of
undefined (reading startsWith)' crash during app load (opencode PR #337).
@coderabbitai

coderabbitai Bot commented Sep 11, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 7e5b0f4d-a57b-425e-8d15-1ef3417bd698


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@jeonghun-jj-lee
jeonghun-jj-lee merged commit 4412651 into main Sep 11, 2026
9 of 10 checks passed
jack-champagne pushed a commit that referenced this pull request Sep 11, 2026
manifest.upstream_base has held a commit SHA (not a tag) since recent
promotions started passing --base <sha> to overlay-promotion.mjs, but
materialize.mjs and drift_report.mjs both built the upstream fetch URL
under refs/tags/, which 404s for a SHA. This has been failing vsix-gate
on main since #1011. GitHub's /archive/<ref>.tar.gz endpoint resolves
both tags and commit SHAs through the same path, so drop refs/tags/.

Also scope overlay-promotion.mjs's main-branch promotion guard (#1005)
to the real overlay/manifest paths only. It was checking this repo's
current branch unconditionally, which correctly blocks a human running
--apply directly on main, but also blocked overlay_promotion.test.ts's
own --apply exercise (run via a custom --target/--manifest fixture,
never the live overlay) whenever CI happened to run on main — which is
every push to main, including this one. That's the second failure in
the same CI run.
jack-champagne pushed a commit that referenced this pull request Sep 11, 2026
Automates the diff JJ has been generating by hand (#947, #1005, #1006,
#1009, #1011): on a schedule (or manual dispatch), run the existing
overlay-promotion.mjs --check against the fork's local/amicode tip, and
on drift, run --apply on a deterministic review branch and open/update
one PR.

Deliberately not built: a signed webhook receiver, a GitHub App,
compare-and-swap bot-merge authority, or exception-approval automation.
JJ's own promotion PRs (#1009, #1011) were merged 6-27 seconds after
opening once CI was green — the toil is producing the diff, not
reviewing it, so a human (or required status checks) still merges here.

Verified locally against a scratch git remote + the real
harmoniqs/opencode clone (not just described):
  - --check against the current in-sync state exits 0, no PR opened
  - a simulated fork commit drifts --check to exit 1
  - --apply on the review branch (created BEFORE --apply, since #1005's
    main-branch guard would otherwise refuse it) reproduces the correct
    manifest + overlay diff
  - re-running --apply after resetting the branch from main is
    idempotent (same tree each time, safe to force-push)

If the app-bundle overlay is retired later (tracked separately, off
#1010), this workflow is deleted, not migrated.
jack-champagne added a commit that referenced this pull request Sep 11, 2026
… bot (#1010 Phase 0+1) (#1025)

* fix(app-bundle): resolve upstream_base as commit SHA, not tag

manifest.upstream_base has held a commit SHA (not a tag) since recent
promotions started passing --base <sha> to overlay-promotion.mjs, but
materialize.mjs and drift_report.mjs both built the upstream fetch URL
under refs/tags/, which 404s for a SHA. This has been failing vsix-gate
on main since #1011. GitHub's /archive/<ref>.tar.gz endpoint resolves
both tags and commit SHAs through the same path, so drop refs/tags/.

Also scope overlay-promotion.mjs's main-branch promotion guard (#1005)
to the real overlay/manifest paths only. It was checking this repo's
current branch unconditionally, which correctly blocks a human running
--apply directly on main, but also blocked overlay_promotion.test.ts's
own --apply exercise (run via a custom --target/--manifest fixture,
never the live overlay) whenever CI happened to run on main — which is
every push to main, including this one. That's the second failure in
the same CI run.

* feat(ci): add overlay-promotion-bot workflow (#1010 Phase 1)

Automates the diff JJ has been generating by hand (#947, #1005, #1006,
#1009, #1011): on a schedule (or manual dispatch), run the existing
overlay-promotion.mjs --check against the fork's local/amicode tip, and
on drift, run --apply on a deterministic review branch and open/update
one PR.

Deliberately not built: a signed webhook receiver, a GitHub App,
compare-and-swap bot-merge authority, or exception-approval automation.
JJ's own promotion PRs (#1009, #1011) were merged 6-27 seconds after
opening once CI was green — the toil is producing the diff, not
reviewing it, so a human (or required status checks) still merges here.

Verified locally against a scratch git remote + the real
harmoniqs/opencode clone (not just described):
  - --check against the current in-sync state exits 0, no PR opened
  - a simulated fork commit drifts --check to exit 1
  - --apply on the review branch (created BEFORE --apply, since #1005's
    main-branch guard would otherwise refuse it) reproduces the correct
    manifest + overlay diff
  - re-running --apply after resetting the branch from main is
    idempotent (same tree each time, safe to force-push)

If the app-bundle overlay is retired later (tracked separately, off
#1010), this workflow is deleted, not migrated.

---------

Co-authored-by: Test <test@example.com>
jeonghun-jj-lee added a commit that referenced this pull request Sep 13, 2026
…anges (#1057)

The build_app_bundle.mjs script reuses .materialized when package.json
exists, regardless of whether the overlay has changed. This means a
local rebuild after an overlay sync silently ships the old bundle —
which is how the startsWith-undefined-title fix (PR #337 / #1011)
failed to reach the installed VSIX despite the source being correct.

Fix: read manifest.json's fork_sha + promoted_at, compare against a
.overlay-stamp file inside .materialized, and wipe + re-materialize
when they differ. The stamp is written after each materialization and
backfilled for existing trees on the first run.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant