sync-preview: real merge main into preview - #1018

Merged
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429
Apr 29, 2026
Merged

sync-preview: real merge main into preview#1018
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429

Conversation

@aidandaly24

Copy link
Copy Markdown
Contributor

Summary

  • Real merge commit (two parents) to restore ancestry link between main and preview
  • Resolves merge conflicts in CHANGELOG.md, package.json, package-lock.json, and browser-mode.ts (preview values kept)
  • Previous sync PR sync-preview: merge main into preview #1017 was squash-merged, which broke the merge-base check in the release workflow

Context

The "Release Both" workflow preflight checks git merge-base HEAD origin/preview == MAIN_SHA. A squash merge destroys the two-parent ancestry, so the check fails even though the code is present. This PR restores the link with a real merge commit.

github-actionsBotand others added 7 commits April 28, 2026 16:50
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* test: remove 44 render-only and framework-testing tests
Delete TUI component test files that only verify prop passthrough or
framework behavior (Ink rendering, setInterval lifecycle) without
testing any application logic:
- Cursor.test.tsx (5 tests): setInterval/clearInterval assertions
- Header.test.tsx (4 tests): title/subtitle string presence
- HelpText.test.tsx (2 tests): static string rendering
- AwsTargetConfigUI.test.tsx (7 tests): help text string lookups
- ConfirmReview.test.tsx (6 tests): field label rendering
- LogLink.test.tsx (4 tests): prop passthrough
- ScreenHeader.test.tsx (3 tests): prop passthrough
- FatalError.test.tsx (5 tests): prop passthrough
Trim Panel.test.tsx (6→3) and Screen.test.tsx (8→3), keeping only
tests that verify real logic: border structure, responsive width
adaptation, keyboard exit handling, and exitEnabled guard.
Remove tautological expect(true).toBe(true) tests from
assets.snapshot.test.ts; use describe.skipIf for empty asset dirs.
Kept all tests in StepIndicator, ScreenLayout, TwoColumn, NextSteps,
LogPanel, PathInput, and useFetchAccessFlow — audit flagged some as
framework tests but they verify real conditional/interaction logic.
* fix: restore AwsTargetConfigUI tests — pure function, not render test
getAwsConfigHelpText is a switch over AwsConfigPhase that maps states
to help strings. The undefined return for loading/terminal phases is a
contract consumed by DeployScreen.tsx via ?? HELP_TEXT.EXIT. These tests
guard that fallback, not framework rendering behavior.
…#1011)
The import gateway command used NAME_REGEX which only allowed
underscores and max 48 chars, rejecting valid gateway names with
hyphens like "agentcore-gateway". Switch to GatewayNameSchema which
matches the actual AWS API: alphanumeric with hyphens, up to 100 chars.
Constraint: AWS CreateGateway API allows [0-9a-zA-Z] with hyphens
Rejected: Updating NAME_REGEX | it is shared with other import commands that have different naming rules
Confidence: high
Scope-risk: narrow
…y agentcore/ packages (#1015)
PR #844 correctly removed the flat name-based agentcore exclusion and
threaded rootDir through copySourceTree, but the same CONFIG_DIR check
remained in collectFiles/collectFilesSync (the zip stage). Since the zip
stage operates on the staging directory — not the project root — the
check incorrectly stripped any top-level agentcore/ Python package
installed by uv (e.g., langgraph_checkpoint_aws/agentcore/) from the
deployment artifact, causing ModuleNotFoundError at runtime.
The CONFIG_DIR exclusion is only needed in copySourceTree (which copies
from the project root into staging). By the time we zip, the project
config dir was already filtered out — the only agentcore/ in staging is
a legitimate dependency package.
Closes#843
* ci: add coordinated main + preview release workflow
Adds a single workflow_dispatch that releases both branches together,
ensuring they stay in sync on npm.
* fix: address review — bump script compat, pre-publish verification, drop unused artifacts
- Preview bump now uses `prerelease --prerelease-tag preview` which the
bump-version.ts script actually accepts
- Added verify-merges job that checks both main and preview have the
expected versions before either publish runs (prevents drift)
- Both publish jobs now depend on verify-merges instead of each other,
so neither publishes unless both PRs are confirmed merged
- Removed upload-artifact steps from test jobs since publish jobs
rebuild from source post-merge
* fix: auto-rebase preview onto main in preflight step
Instead of failing when preview isn't rebased, the workflow now
rebases automatically. If there are conflicts, it aborts and
directs the user to resolve manually.
* ci: add sync-preview workflow, simplify release preflight
- New sync-preview.yml: runs on every push to main, auto-rebases
preview onto main. Silently skips on conflicts (no failure).
- Release workflow preflight reverted to a simple check — relies
on sync-preview having already done the rebase.
* fix: use merge instead of rebase for preview sync
Rebase overwrites preview-specific values (package version, tests).
Merge preserves preview's divergent files and only conflicts when
both branches touch the same lines.
* fix: concurrency control, conflict notifications, CDK tag TODO
- Add concurrency group to sync-preview to prevent parallel race
- On merge conflict, auto-create a GitHub issue (deduplicated) instead
of silently skipping
- Add TODO comment for CDK preview dist-tag in prepare-preview
* fix: create PR with conflict markers instead of issue on merge conflict
On conflict, sync-preview now:
- Creates a branch with the merge conflict markers committed
- Opens a PR targeting preview with resolution instructions
- Tags the original commit author for visibility
- Deduplicates (skips if a sync PR is already open)
# Conflicts:
#	CHANGELOG.md
#	package-lock.json
#	package.json
#	src/cli/commands/dev/browser-mode.ts
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
@notgitika
notgitika self-requested a review April 29, 2026 16:34

@notgitikanotgitika 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.

LGTM

@aidandaly24
aidandaly24 merged commit 8c4d6eb into previewApr 29, 2026
2 checks passed
@aidandaly24
aidandaly24 deleted the sync-preview/real-merge-main-20260429 branch April 29, 2026 16:35
@agentcore-cli-automation

Copy link
Copy Markdown

⚠️ Must be merged with "Create a merge commit" — not squash or rebase

The whole purpose of this PR is to restore the two-parent ancestry link between main and preview so the release workflow's git merge-base HEAD origin/preview == MAIN_SHA check passes. I verified the commit is structured correctly for that:

  • 553a520 has two parents: 1c726d8 (preview tip) and 7e8cae4 (main tip)
  • git merge-base 7e8cae4 553a5207e8cae4
  • The tree is identical to preview's tip, so preview-specific values (version 1.0.0-preview.3, the newer browser-mode.ts with harness support, CHANGELOG, lockfile) are preserved

However, if this PR is merged via GitHub's Squash or Rebase button, the merge commit gets flattened to a single-parent commit and we're right back to the broken state that caused this PR in the first place (that's exactly what happened to #1017).

A couple of options to make sure this doesn't happen again:

  1. Minimum: Whoever merges this needs to explicitly pick "Create a merge commit" from the merge button dropdown. Worth pinning a comment and/or adding a checklist item to the PR body calling that out, since the default button on this repo appears to be squash.
  2. Better (follow-up): Update .github/workflows/sync-preview.yml so the auto-generated conflict-resolution PR body includes a bold "DO NOT squash-merge this PR — use Create a merge commit" instruction. That's the same guidance that was missing when sync-preview: merge main into preview #1017 was merged.
  3. Best (follow-up): Have the sync-preview workflow push the merge commit directly to preview on the happy path (it already does this for no-conflict cases) and, on conflicts, consider auto-merging via the API with merge_method: "merge" once approved, so humans can't accidentally pick the wrong button.

Option 1 is required for this PR. Options 2/3 can be separate follow-ups.

Otherwise the merge itself looks correct — conflicts in CHANGELOG.md, package.json, package-lock.json, and src/cli/commands/dev/browser-mode.ts were all resolved in favor of preview, which matches the PR description.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
Sign up for freeto 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.

6 participants

@aidandaly24@agentcore-cli-automation@notgitika@tejaskash@jesseturner21@avi-alpert
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

sync-preview: real merge main into preview - #1018

Merged
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429
Apr 29, 2026
Merged

sync-preview: real merge main into preview#1018
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429

Conversation

@aidandaly24

Copy link
Copy Markdown
Contributor

Summary

  • Real merge commit (two parents) to restore ancestry link between main and preview
  • Resolves merge conflicts in CHANGELOG.md, package.json, package-lock.json, and browser-mode.ts (preview values kept)
  • Previous sync PR sync-preview: merge main into preview #1017 was squash-merged, which broke the merge-base check in the release workflow

Context

The "Release Both" workflow preflight checks git merge-base HEAD origin/preview == MAIN_SHA. A squash merge destroys the two-parent ancestry, so the check fails even though the code is present. This PR restores the link with a real merge commit.

github-actionsBotand others added 7 commits April 28, 2026 16:50
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* test: remove 44 render-only and framework-testing tests
Delete TUI component test files that only verify prop passthrough or
framework behavior (Ink rendering, setInterval lifecycle) without
testing any application logic:
- Cursor.test.tsx (5 tests): setInterval/clearInterval assertions
- Header.test.tsx (4 tests): title/subtitle string presence
- HelpText.test.tsx (2 tests): static string rendering
- AwsTargetConfigUI.test.tsx (7 tests): help text string lookups
- ConfirmReview.test.tsx (6 tests): field label rendering
- LogLink.test.tsx (4 tests): prop passthrough
- ScreenHeader.test.tsx (3 tests): prop passthrough
- FatalError.test.tsx (5 tests): prop passthrough
Trim Panel.test.tsx (6→3) and Screen.test.tsx (8→3), keeping only
tests that verify real logic: border structure, responsive width
adaptation, keyboard exit handling, and exitEnabled guard.
Remove tautological expect(true).toBe(true) tests from
assets.snapshot.test.ts; use describe.skipIf for empty asset dirs.
Kept all tests in StepIndicator, ScreenLayout, TwoColumn, NextSteps,
LogPanel, PathInput, and useFetchAccessFlow — audit flagged some as
framework tests but they verify real conditional/interaction logic.
* fix: restore AwsTargetConfigUI tests — pure function, not render test
getAwsConfigHelpText is a switch over AwsConfigPhase that maps states
to help strings. The undefined return for loading/terminal phases is a
contract consumed by DeployScreen.tsx via ?? HELP_TEXT.EXIT. These tests
guard that fallback, not framework rendering behavior.
…#1011)
The import gateway command used NAME_REGEX which only allowed
underscores and max 48 chars, rejecting valid gateway names with
hyphens like "agentcore-gateway". Switch to GatewayNameSchema which
matches the actual AWS API: alphanumeric with hyphens, up to 100 chars.
Constraint: AWS CreateGateway API allows [0-9a-zA-Z] with hyphens
Rejected: Updating NAME_REGEX | it is shared with other import commands that have different naming rules
Confidence: high
Scope-risk: narrow
…y agentcore/ packages (#1015)
PR #844 correctly removed the flat name-based agentcore exclusion and
threaded rootDir through copySourceTree, but the same CONFIG_DIR check
remained in collectFiles/collectFilesSync (the zip stage). Since the zip
stage operates on the staging directory — not the project root — the
check incorrectly stripped any top-level agentcore/ Python package
installed by uv (e.g., langgraph_checkpoint_aws/agentcore/) from the
deployment artifact, causing ModuleNotFoundError at runtime.
The CONFIG_DIR exclusion is only needed in copySourceTree (which copies
from the project root into staging). By the time we zip, the project
config dir was already filtered out — the only agentcore/ in staging is
a legitimate dependency package.
Closes#843
* ci: add coordinated main + preview release workflow
Adds a single workflow_dispatch that releases both branches together,
ensuring they stay in sync on npm.
* fix: address review — bump script compat, pre-publish verification, drop unused artifacts
- Preview bump now uses `prerelease --prerelease-tag preview` which the
bump-version.ts script actually accepts
- Added verify-merges job that checks both main and preview have the
expected versions before either publish runs (prevents drift)
- Both publish jobs now depend on verify-merges instead of each other,
so neither publishes unless both PRs are confirmed merged
- Removed upload-artifact steps from test jobs since publish jobs
rebuild from source post-merge
* fix: auto-rebase preview onto main in preflight step
Instead of failing when preview isn't rebased, the workflow now
rebases automatically. If there are conflicts, it aborts and
directs the user to resolve manually.
* ci: add sync-preview workflow, simplify release preflight
- New sync-preview.yml: runs on every push to main, auto-rebases
preview onto main. Silently skips on conflicts (no failure).
- Release workflow preflight reverted to a simple check — relies
on sync-preview having already done the rebase.
* fix: use merge instead of rebase for preview sync
Rebase overwrites preview-specific values (package version, tests).
Merge preserves preview's divergent files and only conflicts when
both branches touch the same lines.
* fix: concurrency control, conflict notifications, CDK tag TODO
- Add concurrency group to sync-preview to prevent parallel race
- On merge conflict, auto-create a GitHub issue (deduplicated) instead
of silently skipping
- Add TODO comment for CDK preview dist-tag in prepare-preview
* fix: create PR with conflict markers instead of issue on merge conflict
On conflict, sync-preview now:
- Creates a branch with the merge conflict markers committed
- Opens a PR targeting preview with resolution instructions
- Tags the original commit author for visibility
- Deduplicates (skips if a sync PR is already open)
# Conflicts:
#	CHANGELOG.md
#	package-lock.json
#	package.json
#	src/cli/commands/dev/browser-mode.ts
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
@notgitika
notgitika self-requested a review April 29, 2026 16:34

@notgitikanotgitika 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.

LGTM

@aidandaly24
aidandaly24 merged commit 8c4d6eb into previewApr 29, 2026
2 checks passed
@aidandaly24
aidandaly24 deleted the sync-preview/real-merge-main-20260429 branch April 29, 2026 16:35
@agentcore-cli-automation

Copy link
Copy Markdown

⚠️ Must be merged with "Create a merge commit" — not squash or rebase

The whole purpose of this PR is to restore the two-parent ancestry link between main and preview so the release workflow's git merge-base HEAD origin/preview == MAIN_SHA check passes. I verified the commit is structured correctly for that:

  • 553a520 has two parents: 1c726d8 (preview tip) and 7e8cae4 (main tip)
  • git merge-base 7e8cae4 553a5207e8cae4
  • The tree is identical to preview's tip, so preview-specific values (version 1.0.0-preview.3, the newer browser-mode.ts with harness support, CHANGELOG, lockfile) are preserved

However, if this PR is merged via GitHub's Squash or Rebase button, the merge commit gets flattened to a single-parent commit and we're right back to the broken state that caused this PR in the first place (that's exactly what happened to #1017).

A couple of options to make sure this doesn't happen again:

  1. Minimum: Whoever merges this needs to explicitly pick "Create a merge commit" from the merge button dropdown. Worth pinning a comment and/or adding a checklist item to the PR body calling that out, since the default button on this repo appears to be squash.
  2. Better (follow-up): Update .github/workflows/sync-preview.yml so the auto-generated conflict-resolution PR body includes a bold "DO NOT squash-merge this PR — use Create a merge commit" instruction. That's the same guidance that was missing when sync-preview: merge main into preview #1017 was merged.
  3. Best (follow-up): Have the sync-preview workflow push the merge commit directly to preview on the happy path (it already does this for no-conflict cases) and, on conflicts, consider auto-merging via the API with merge_method: "merge" once approved, so humans can't accidentally pick the wrong button.

Option 1 is required for this PR. Options 2/3 can be separate follow-ups.

Otherwise the merge itself looks correct — conflicts in CHANGELOG.md, package.json, package-lock.json, and src/cli/commands/dev/browser-mode.ts were all resolved in favor of preview, which matches the PR description.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
Sign up for freeto 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.

6 participants

@aidandaly24@agentcore-cli-automation@notgitika@tejaskash@jesseturner21@avi-alpert
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

sync-preview: real merge main into preview - #1018

Merged
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429
Apr 29, 2026
Merged

sync-preview: real merge main into preview#1018
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429

Conversation

@aidandaly24

Copy link
Copy Markdown
Contributor

Summary

  • Real merge commit (two parents) to restore ancestry link between main and preview
  • Resolves merge conflicts in CHANGELOG.md, package.json, package-lock.json, and browser-mode.ts (preview values kept)
  • Previous sync PR sync-preview: merge main into preview #1017 was squash-merged, which broke the merge-base check in the release workflow

Context

The "Release Both" workflow preflight checks git merge-base HEAD origin/preview == MAIN_SHA. A squash merge destroys the two-parent ancestry, so the check fails even though the code is present. This PR restores the link with a real merge commit.

github-actionsBotand others added 7 commits April 28, 2026 16:50
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* test: remove 44 render-only and framework-testing tests
Delete TUI component test files that only verify prop passthrough or
framework behavior (Ink rendering, setInterval lifecycle) without
testing any application logic:
- Cursor.test.tsx (5 tests): setInterval/clearInterval assertions
- Header.test.tsx (4 tests): title/subtitle string presence
- HelpText.test.tsx (2 tests): static string rendering
- AwsTargetConfigUI.test.tsx (7 tests): help text string lookups
- ConfirmReview.test.tsx (6 tests): field label rendering
- LogLink.test.tsx (4 tests): prop passthrough
- ScreenHeader.test.tsx (3 tests): prop passthrough
- FatalError.test.tsx (5 tests): prop passthrough
Trim Panel.test.tsx (6→3) and Screen.test.tsx (8→3), keeping only
tests that verify real logic: border structure, responsive width
adaptation, keyboard exit handling, and exitEnabled guard.
Remove tautological expect(true).toBe(true) tests from
assets.snapshot.test.ts; use describe.skipIf for empty asset dirs.
Kept all tests in StepIndicator, ScreenLayout, TwoColumn, NextSteps,
LogPanel, PathInput, and useFetchAccessFlow — audit flagged some as
framework tests but they verify real conditional/interaction logic.
* fix: restore AwsTargetConfigUI tests — pure function, not render test
getAwsConfigHelpText is a switch over AwsConfigPhase that maps states
to help strings. The undefined return for loading/terminal phases is a
contract consumed by DeployScreen.tsx via ?? HELP_TEXT.EXIT. These tests
guard that fallback, not framework rendering behavior.
…#1011)
The import gateway command used NAME_REGEX which only allowed
underscores and max 48 chars, rejecting valid gateway names with
hyphens like "agentcore-gateway". Switch to GatewayNameSchema which
matches the actual AWS API: alphanumeric with hyphens, up to 100 chars.
Constraint: AWS CreateGateway API allows [0-9a-zA-Z] with hyphens
Rejected: Updating NAME_REGEX | it is shared with other import commands that have different naming rules
Confidence: high
Scope-risk: narrow
…y agentcore/ packages (#1015)
PR #844 correctly removed the flat name-based agentcore exclusion and
threaded rootDir through copySourceTree, but the same CONFIG_DIR check
remained in collectFiles/collectFilesSync (the zip stage). Since the zip
stage operates on the staging directory — not the project root — the
check incorrectly stripped any top-level agentcore/ Python package
installed by uv (e.g., langgraph_checkpoint_aws/agentcore/) from the
deployment artifact, causing ModuleNotFoundError at runtime.
The CONFIG_DIR exclusion is only needed in copySourceTree (which copies
from the project root into staging). By the time we zip, the project
config dir was already filtered out — the only agentcore/ in staging is
a legitimate dependency package.
Closes#843
* ci: add coordinated main + preview release workflow
Adds a single workflow_dispatch that releases both branches together,
ensuring they stay in sync on npm.
* fix: address review — bump script compat, pre-publish verification, drop unused artifacts
- Preview bump now uses `prerelease --prerelease-tag preview` which the
bump-version.ts script actually accepts
- Added verify-merges job that checks both main and preview have the
expected versions before either publish runs (prevents drift)
- Both publish jobs now depend on verify-merges instead of each other,
so neither publishes unless both PRs are confirmed merged
- Removed upload-artifact steps from test jobs since publish jobs
rebuild from source post-merge
* fix: auto-rebase preview onto main in preflight step
Instead of failing when preview isn't rebased, the workflow now
rebases automatically. If there are conflicts, it aborts and
directs the user to resolve manually.
* ci: add sync-preview workflow, simplify release preflight
- New sync-preview.yml: runs on every push to main, auto-rebases
preview onto main. Silently skips on conflicts (no failure).
- Release workflow preflight reverted to a simple check — relies
on sync-preview having already done the rebase.
* fix: use merge instead of rebase for preview sync
Rebase overwrites preview-specific values (package version, tests).
Merge preserves preview's divergent files and only conflicts when
both branches touch the same lines.
* fix: concurrency control, conflict notifications, CDK tag TODO
- Add concurrency group to sync-preview to prevent parallel race
- On merge conflict, auto-create a GitHub issue (deduplicated) instead
of silently skipping
- Add TODO comment for CDK preview dist-tag in prepare-preview
* fix: create PR with conflict markers instead of issue on merge conflict
On conflict, sync-preview now:
- Creates a branch with the merge conflict markers committed
- Opens a PR targeting preview with resolution instructions
- Tags the original commit author for visibility
- Deduplicates (skips if a sync PR is already open)
# Conflicts:
#	CHANGELOG.md
#	package-lock.json
#	package.json
#	src/cli/commands/dev/browser-mode.ts
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
@notgitika
notgitika self-requested a review April 29, 2026 16:34

@notgitikanotgitika 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.

LGTM

@aidandaly24
aidandaly24 merged commit 8c4d6eb into previewApr 29, 2026
2 checks passed
@aidandaly24
aidandaly24 deleted the sync-preview/real-merge-main-20260429 branch April 29, 2026 16:35
@agentcore-cli-automation

Copy link
Copy Markdown

⚠️ Must be merged with "Create a merge commit" — not squash or rebase

The whole purpose of this PR is to restore the two-parent ancestry link between main and preview so the release workflow's git merge-base HEAD origin/preview == MAIN_SHA check passes. I verified the commit is structured correctly for that:

  • 553a520 has two parents: 1c726d8 (preview tip) and 7e8cae4 (main tip)
  • git merge-base 7e8cae4 553a5207e8cae4
  • The tree is identical to preview's tip, so preview-specific values (version 1.0.0-preview.3, the newer browser-mode.ts with harness support, CHANGELOG, lockfile) are preserved

However, if this PR is merged via GitHub's Squash or Rebase button, the merge commit gets flattened to a single-parent commit and we're right back to the broken state that caused this PR in the first place (that's exactly what happened to #1017).

A couple of options to make sure this doesn't happen again:

  1. Minimum: Whoever merges this needs to explicitly pick "Create a merge commit" from the merge button dropdown. Worth pinning a comment and/or adding a checklist item to the PR body calling that out, since the default button on this repo appears to be squash.
  2. Better (follow-up): Update .github/workflows/sync-preview.yml so the auto-generated conflict-resolution PR body includes a bold "DO NOT squash-merge this PR — use Create a merge commit" instruction. That's the same guidance that was missing when sync-preview: merge main into preview #1017 was merged.
  3. Best (follow-up): Have the sync-preview workflow push the merge commit directly to preview on the happy path (it already does this for no-conflict cases) and, on conflicts, consider auto-merging via the API with merge_method: "merge" once approved, so humans can't accidentally pick the wrong button.

Option 1 is required for this PR. Options 2/3 can be separate follow-ups.

Otherwise the merge itself looks correct — conflicts in CHANGELOG.md, package.json, package-lock.json, and src/cli/commands/dev/browser-mode.ts were all resolved in favor of preview, which matches the PR description.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
Sign up for freeto 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.

6 participants

@aidandaly24@agentcore-cli-automation@notgitika@tejaskash@jesseturner21@avi-alpert
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

sync-preview: real merge main into preview - #1018

Merged
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429
Apr 29, 2026
Merged

sync-preview: real merge main into preview#1018
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429

Conversation

@aidandaly24

Copy link
Copy Markdown
Contributor

Summary

  • Real merge commit (two parents) to restore ancestry link between main and preview
  • Resolves merge conflicts in CHANGELOG.md, package.json, package-lock.json, and browser-mode.ts (preview values kept)
  • Previous sync PR sync-preview: merge main into preview #1017 was squash-merged, which broke the merge-base check in the release workflow

Context

The "Release Both" workflow preflight checks git merge-base HEAD origin/preview == MAIN_SHA. A squash merge destroys the two-parent ancestry, so the check fails even though the code is present. This PR restores the link with a real merge commit.

github-actionsBotand others added 7 commits April 28, 2026 16:50
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* test: remove 44 render-only and framework-testing tests
Delete TUI component test files that only verify prop passthrough or
framework behavior (Ink rendering, setInterval lifecycle) without
testing any application logic:
- Cursor.test.tsx (5 tests): setInterval/clearInterval assertions
- Header.test.tsx (4 tests): title/subtitle string presence
- HelpText.test.tsx (2 tests): static string rendering
- AwsTargetConfigUI.test.tsx (7 tests): help text string lookups
- ConfirmReview.test.tsx (6 tests): field label rendering
- LogLink.test.tsx (4 tests): prop passthrough
- ScreenHeader.test.tsx (3 tests): prop passthrough
- FatalError.test.tsx (5 tests): prop passthrough
Trim Panel.test.tsx (6→3) and Screen.test.tsx (8→3), keeping only
tests that verify real logic: border structure, responsive width
adaptation, keyboard exit handling, and exitEnabled guard.
Remove tautological expect(true).toBe(true) tests from
assets.snapshot.test.ts; use describe.skipIf for empty asset dirs.
Kept all tests in StepIndicator, ScreenLayout, TwoColumn, NextSteps,
LogPanel, PathInput, and useFetchAccessFlow — audit flagged some as
framework tests but they verify real conditional/interaction logic.
* fix: restore AwsTargetConfigUI tests — pure function, not render test
getAwsConfigHelpText is a switch over AwsConfigPhase that maps states
to help strings. The undefined return for loading/terminal phases is a
contract consumed by DeployScreen.tsx via ?? HELP_TEXT.EXIT. These tests
guard that fallback, not framework rendering behavior.
…#1011)
The import gateway command used NAME_REGEX which only allowed
underscores and max 48 chars, rejecting valid gateway names with
hyphens like "agentcore-gateway". Switch to GatewayNameSchema which
matches the actual AWS API: alphanumeric with hyphens, up to 100 chars.
Constraint: AWS CreateGateway API allows [0-9a-zA-Z] with hyphens
Rejected: Updating NAME_REGEX | it is shared with other import commands that have different naming rules
Confidence: high
Scope-risk: narrow
…y agentcore/ packages (#1015)
PR #844 correctly removed the flat name-based agentcore exclusion and
threaded rootDir through copySourceTree, but the same CONFIG_DIR check
remained in collectFiles/collectFilesSync (the zip stage). Since the zip
stage operates on the staging directory — not the project root — the
check incorrectly stripped any top-level agentcore/ Python package
installed by uv (e.g., langgraph_checkpoint_aws/agentcore/) from the
deployment artifact, causing ModuleNotFoundError at runtime.
The CONFIG_DIR exclusion is only needed in copySourceTree (which copies
from the project root into staging). By the time we zip, the project
config dir was already filtered out — the only agentcore/ in staging is
a legitimate dependency package.
Closes#843
* ci: add coordinated main + preview release workflow
Adds a single workflow_dispatch that releases both branches together,
ensuring they stay in sync on npm.
* fix: address review — bump script compat, pre-publish verification, drop unused artifacts
- Preview bump now uses `prerelease --prerelease-tag preview` which the
bump-version.ts script actually accepts
- Added verify-merges job that checks both main and preview have the
expected versions before either publish runs (prevents drift)
- Both publish jobs now depend on verify-merges instead of each other,
so neither publishes unless both PRs are confirmed merged
- Removed upload-artifact steps from test jobs since publish jobs
rebuild from source post-merge
* fix: auto-rebase preview onto main in preflight step
Instead of failing when preview isn't rebased, the workflow now
rebases automatically. If there are conflicts, it aborts and
directs the user to resolve manually.
* ci: add sync-preview workflow, simplify release preflight
- New sync-preview.yml: runs on every push to main, auto-rebases
preview onto main. Silently skips on conflicts (no failure).
- Release workflow preflight reverted to a simple check — relies
on sync-preview having already done the rebase.
* fix: use merge instead of rebase for preview sync
Rebase overwrites preview-specific values (package version, tests).
Merge preserves preview's divergent files and only conflicts when
both branches touch the same lines.
* fix: concurrency control, conflict notifications, CDK tag TODO
- Add concurrency group to sync-preview to prevent parallel race
- On merge conflict, auto-create a GitHub issue (deduplicated) instead
of silently skipping
- Add TODO comment for CDK preview dist-tag in prepare-preview
* fix: create PR with conflict markers instead of issue on merge conflict
On conflict, sync-preview now:
- Creates a branch with the merge conflict markers committed
- Opens a PR targeting preview with resolution instructions
- Tags the original commit author for visibility
- Deduplicates (skips if a sync PR is already open)
# Conflicts:
#	CHANGELOG.md
#	package-lock.json
#	package.json
#	src/cli/commands/dev/browser-mode.ts
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
@notgitika
notgitika self-requested a review April 29, 2026 16:34

@notgitikanotgitika 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.

LGTM

@aidandaly24
aidandaly24 merged commit 8c4d6eb into previewApr 29, 2026
2 checks passed
@aidandaly24
aidandaly24 deleted the sync-preview/real-merge-main-20260429 branch April 29, 2026 16:35
@agentcore-cli-automation

Copy link
Copy Markdown

⚠️ Must be merged with "Create a merge commit" — not squash or rebase

The whole purpose of this PR is to restore the two-parent ancestry link between main and preview so the release workflow's git merge-base HEAD origin/preview == MAIN_SHA check passes. I verified the commit is structured correctly for that:

  • 553a520 has two parents: 1c726d8 (preview tip) and 7e8cae4 (main tip)
  • git merge-base 7e8cae4 553a5207e8cae4
  • The tree is identical to preview's tip, so preview-specific values (version 1.0.0-preview.3, the newer browser-mode.ts with harness support, CHANGELOG, lockfile) are preserved

However, if this PR is merged via GitHub's Squash or Rebase button, the merge commit gets flattened to a single-parent commit and we're right back to the broken state that caused this PR in the first place (that's exactly what happened to #1017).

A couple of options to make sure this doesn't happen again:

  1. Minimum: Whoever merges this needs to explicitly pick "Create a merge commit" from the merge button dropdown. Worth pinning a comment and/or adding a checklist item to the PR body calling that out, since the default button on this repo appears to be squash.
  2. Better (follow-up): Update .github/workflows/sync-preview.yml so the auto-generated conflict-resolution PR body includes a bold "DO NOT squash-merge this PR — use Create a merge commit" instruction. That's the same guidance that was missing when sync-preview: merge main into preview #1017 was merged.
  3. Best (follow-up): Have the sync-preview workflow push the merge commit directly to preview on the happy path (it already does this for no-conflict cases) and, on conflicts, consider auto-merging via the API with merge_method: "merge" once approved, so humans can't accidentally pick the wrong button.

Option 1 is required for this PR. Options 2/3 can be separate follow-ups.

Otherwise the merge itself looks correct — conflicts in CHANGELOG.md, package.json, package-lock.json, and src/cli/commands/dev/browser-mode.ts were all resolved in favor of preview, which matches the PR description.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
Sign up for freeto 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.

6 participants

@aidandaly24@agentcore-cli-automation@notgitika@tejaskash@jesseturner21@avi-alpert
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

sync-preview: real merge main into preview - #1018

Merged
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429
Apr 29, 2026
Merged

sync-preview: real merge main into preview#1018
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429

Conversation

@aidandaly24

Copy link
Copy Markdown
Contributor

Summary

  • Real merge commit (two parents) to restore ancestry link between main and preview
  • Resolves merge conflicts in CHANGELOG.md, package.json, package-lock.json, and browser-mode.ts (preview values kept)
  • Previous sync PR sync-preview: merge main into preview #1017 was squash-merged, which broke the merge-base check in the release workflow

Context

The "Release Both" workflow preflight checks git merge-base HEAD origin/preview == MAIN_SHA. A squash merge destroys the two-parent ancestry, so the check fails even though the code is present. This PR restores the link with a real merge commit.

github-actionsBotand others added 7 commits April 28, 2026 16:50
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* test: remove 44 render-only and framework-testing tests
Delete TUI component test files that only verify prop passthrough or
framework behavior (Ink rendering, setInterval lifecycle) without
testing any application logic:
- Cursor.test.tsx (5 tests): setInterval/clearInterval assertions
- Header.test.tsx (4 tests): title/subtitle string presence
- HelpText.test.tsx (2 tests): static string rendering
- AwsTargetConfigUI.test.tsx (7 tests): help text string lookups
- ConfirmReview.test.tsx (6 tests): field label rendering
- LogLink.test.tsx (4 tests): prop passthrough
- ScreenHeader.test.tsx (3 tests): prop passthrough
- FatalError.test.tsx (5 tests): prop passthrough
Trim Panel.test.tsx (6→3) and Screen.test.tsx (8→3), keeping only
tests that verify real logic: border structure, responsive width
adaptation, keyboard exit handling, and exitEnabled guard.
Remove tautological expect(true).toBe(true) tests from
assets.snapshot.test.ts; use describe.skipIf for empty asset dirs.
Kept all tests in StepIndicator, ScreenLayout, TwoColumn, NextSteps,
LogPanel, PathInput, and useFetchAccessFlow — audit flagged some as
framework tests but they verify real conditional/interaction logic.
* fix: restore AwsTargetConfigUI tests — pure function, not render test
getAwsConfigHelpText is a switch over AwsConfigPhase that maps states
to help strings. The undefined return for loading/terminal phases is a
contract consumed by DeployScreen.tsx via ?? HELP_TEXT.EXIT. These tests
guard that fallback, not framework rendering behavior.
…#1011)
The import gateway command used NAME_REGEX which only allowed
underscores and max 48 chars, rejecting valid gateway names with
hyphens like "agentcore-gateway". Switch to GatewayNameSchema which
matches the actual AWS API: alphanumeric with hyphens, up to 100 chars.
Constraint: AWS CreateGateway API allows [0-9a-zA-Z] with hyphens
Rejected: Updating NAME_REGEX | it is shared with other import commands that have different naming rules
Confidence: high
Scope-risk: narrow
…y agentcore/ packages (#1015)
PR #844 correctly removed the flat name-based agentcore exclusion and
threaded rootDir through copySourceTree, but the same CONFIG_DIR check
remained in collectFiles/collectFilesSync (the zip stage). Since the zip
stage operates on the staging directory — not the project root — the
check incorrectly stripped any top-level agentcore/ Python package
installed by uv (e.g., langgraph_checkpoint_aws/agentcore/) from the
deployment artifact, causing ModuleNotFoundError at runtime.
The CONFIG_DIR exclusion is only needed in copySourceTree (which copies
from the project root into staging). By the time we zip, the project
config dir was already filtered out — the only agentcore/ in staging is
a legitimate dependency package.
Closes#843
* ci: add coordinated main + preview release workflow
Adds a single workflow_dispatch that releases both branches together,
ensuring they stay in sync on npm.
* fix: address review — bump script compat, pre-publish verification, drop unused artifacts
- Preview bump now uses `prerelease --prerelease-tag preview` which the
bump-version.ts script actually accepts
- Added verify-merges job that checks both main and preview have the
expected versions before either publish runs (prevents drift)
- Both publish jobs now depend on verify-merges instead of each other,
so neither publishes unless both PRs are confirmed merged
- Removed upload-artifact steps from test jobs since publish jobs
rebuild from source post-merge
* fix: auto-rebase preview onto main in preflight step
Instead of failing when preview isn't rebased, the workflow now
rebases automatically. If there are conflicts, it aborts and
directs the user to resolve manually.
* ci: add sync-preview workflow, simplify release preflight
- New sync-preview.yml: runs on every push to main, auto-rebases
preview onto main. Silently skips on conflicts (no failure).
- Release workflow preflight reverted to a simple check — relies
on sync-preview having already done the rebase.
* fix: use merge instead of rebase for preview sync
Rebase overwrites preview-specific values (package version, tests).
Merge preserves preview's divergent files and only conflicts when
both branches touch the same lines.
* fix: concurrency control, conflict notifications, CDK tag TODO
- Add concurrency group to sync-preview to prevent parallel race
- On merge conflict, auto-create a GitHub issue (deduplicated) instead
of silently skipping
- Add TODO comment for CDK preview dist-tag in prepare-preview
* fix: create PR with conflict markers instead of issue on merge conflict
On conflict, sync-preview now:
- Creates a branch with the merge conflict markers committed
- Opens a PR targeting preview with resolution instructions
- Tags the original commit author for visibility
- Deduplicates (skips if a sync PR is already open)
# Conflicts:
#	CHANGELOG.md
#	package-lock.json
#	package.json
#	src/cli/commands/dev/browser-mode.ts
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
@notgitika
notgitika self-requested a review April 29, 2026 16:34

@notgitikanotgitika 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.

LGTM

@aidandaly24
aidandaly24 merged commit 8c4d6eb into previewApr 29, 2026
2 checks passed
@aidandaly24
aidandaly24 deleted the sync-preview/real-merge-main-20260429 branch April 29, 2026 16:35
@agentcore-cli-automation

Copy link
Copy Markdown

⚠️ Must be merged with "Create a merge commit" — not squash or rebase

The whole purpose of this PR is to restore the two-parent ancestry link between main and preview so the release workflow's git merge-base HEAD origin/preview == MAIN_SHA check passes. I verified the commit is structured correctly for that:

  • 553a520 has two parents: 1c726d8 (preview tip) and 7e8cae4 (main tip)
  • git merge-base 7e8cae4 553a5207e8cae4
  • The tree is identical to preview's tip, so preview-specific values (version 1.0.0-preview.3, the newer browser-mode.ts with harness support, CHANGELOG, lockfile) are preserved

However, if this PR is merged via GitHub's Squash or Rebase button, the merge commit gets flattened to a single-parent commit and we're right back to the broken state that caused this PR in the first place (that's exactly what happened to #1017).

A couple of options to make sure this doesn't happen again:

  1. Minimum: Whoever merges this needs to explicitly pick "Create a merge commit" from the merge button dropdown. Worth pinning a comment and/or adding a checklist item to the PR body calling that out, since the default button on this repo appears to be squash.
  2. Better (follow-up): Update .github/workflows/sync-preview.yml so the auto-generated conflict-resolution PR body includes a bold "DO NOT squash-merge this PR — use Create a merge commit" instruction. That's the same guidance that was missing when sync-preview: merge main into preview #1017 was merged.
  3. Best (follow-up): Have the sync-preview workflow push the merge commit directly to preview on the happy path (it already does this for no-conflict cases) and, on conflicts, consider auto-merging via the API with merge_method: "merge" once approved, so humans can't accidentally pick the wrong button.

Option 1 is required for this PR. Options 2/3 can be separate follow-ups.

Otherwise the merge itself looks correct — conflicts in CHANGELOG.md, package.json, package-lock.json, and src/cli/commands/dev/browser-mode.ts were all resolved in favor of preview, which matches the PR description.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
Sign up for freeto 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.

6 participants

@aidandaly24@agentcore-cli-automation@notgitika@tejaskash@jesseturner21@avi-alpert
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

sync-preview: real merge main into preview - #1018

Merged
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429
Apr 29, 2026
Merged

sync-preview: real merge main into preview#1018
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429

Conversation

@aidandaly24

Copy link
Copy Markdown
Contributor

Summary

  • Real merge commit (two parents) to restore ancestry link between main and preview
  • Resolves merge conflicts in CHANGELOG.md, package.json, package-lock.json, and browser-mode.ts (preview values kept)
  • Previous sync PR sync-preview: merge main into preview #1017 was squash-merged, which broke the merge-base check in the release workflow

Context

The "Release Both" workflow preflight checks git merge-base HEAD origin/preview == MAIN_SHA. A squash merge destroys the two-parent ancestry, so the check fails even though the code is present. This PR restores the link with a real merge commit.

github-actionsBotand others added 7 commits April 28, 2026 16:50
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* test: remove 44 render-only and framework-testing tests
Delete TUI component test files that only verify prop passthrough or
framework behavior (Ink rendering, setInterval lifecycle) without
testing any application logic:
- Cursor.test.tsx (5 tests): setInterval/clearInterval assertions
- Header.test.tsx (4 tests): title/subtitle string presence
- HelpText.test.tsx (2 tests): static string rendering
- AwsTargetConfigUI.test.tsx (7 tests): help text string lookups
- ConfirmReview.test.tsx (6 tests): field label rendering
- LogLink.test.tsx (4 tests): prop passthrough
- ScreenHeader.test.tsx (3 tests): prop passthrough
- FatalError.test.tsx (5 tests): prop passthrough
Trim Panel.test.tsx (6→3) and Screen.test.tsx (8→3), keeping only
tests that verify real logic: border structure, responsive width
adaptation, keyboard exit handling, and exitEnabled guard.
Remove tautological expect(true).toBe(true) tests from
assets.snapshot.test.ts; use describe.skipIf for empty asset dirs.
Kept all tests in StepIndicator, ScreenLayout, TwoColumn, NextSteps,
LogPanel, PathInput, and useFetchAccessFlow — audit flagged some as
framework tests but they verify real conditional/interaction logic.
* fix: restore AwsTargetConfigUI tests — pure function, not render test
getAwsConfigHelpText is a switch over AwsConfigPhase that maps states
to help strings. The undefined return for loading/terminal phases is a
contract consumed by DeployScreen.tsx via ?? HELP_TEXT.EXIT. These tests
guard that fallback, not framework rendering behavior.
…#1011)
The import gateway command used NAME_REGEX which only allowed
underscores and max 48 chars, rejecting valid gateway names with
hyphens like "agentcore-gateway". Switch to GatewayNameSchema which
matches the actual AWS API: alphanumeric with hyphens, up to 100 chars.
Constraint: AWS CreateGateway API allows [0-9a-zA-Z] with hyphens
Rejected: Updating NAME_REGEX | it is shared with other import commands that have different naming rules
Confidence: high
Scope-risk: narrow
…y agentcore/ packages (#1015)
PR #844 correctly removed the flat name-based agentcore exclusion and
threaded rootDir through copySourceTree, but the same CONFIG_DIR check
remained in collectFiles/collectFilesSync (the zip stage). Since the zip
stage operates on the staging directory — not the project root — the
check incorrectly stripped any top-level agentcore/ Python package
installed by uv (e.g., langgraph_checkpoint_aws/agentcore/) from the
deployment artifact, causing ModuleNotFoundError at runtime.
The CONFIG_DIR exclusion is only needed in copySourceTree (which copies
from the project root into staging). By the time we zip, the project
config dir was already filtered out — the only agentcore/ in staging is
a legitimate dependency package.
Closes#843
* ci: add coordinated main + preview release workflow
Adds a single workflow_dispatch that releases both branches together,
ensuring they stay in sync on npm.
* fix: address review — bump script compat, pre-publish verification, drop unused artifacts
- Preview bump now uses `prerelease --prerelease-tag preview` which the
bump-version.ts script actually accepts
- Added verify-merges job that checks both main and preview have the
expected versions before either publish runs (prevents drift)
- Both publish jobs now depend on verify-merges instead of each other,
so neither publishes unless both PRs are confirmed merged
- Removed upload-artifact steps from test jobs since publish jobs
rebuild from source post-merge
* fix: auto-rebase preview onto main in preflight step
Instead of failing when preview isn't rebased, the workflow now
rebases automatically. If there are conflicts, it aborts and
directs the user to resolve manually.
* ci: add sync-preview workflow, simplify release preflight
- New sync-preview.yml: runs on every push to main, auto-rebases
preview onto main. Silently skips on conflicts (no failure).
- Release workflow preflight reverted to a simple check — relies
on sync-preview having already done the rebase.
* fix: use merge instead of rebase for preview sync
Rebase overwrites preview-specific values (package version, tests).
Merge preserves preview's divergent files and only conflicts when
both branches touch the same lines.
* fix: concurrency control, conflict notifications, CDK tag TODO
- Add concurrency group to sync-preview to prevent parallel race
- On merge conflict, auto-create a GitHub issue (deduplicated) instead
of silently skipping
- Add TODO comment for CDK preview dist-tag in prepare-preview
* fix: create PR with conflict markers instead of issue on merge conflict
On conflict, sync-preview now:
- Creates a branch with the merge conflict markers committed
- Opens a PR targeting preview with resolution instructions
- Tags the original commit author for visibility
- Deduplicates (skips if a sync PR is already open)
# Conflicts:
#	CHANGELOG.md
#	package-lock.json
#	package.json
#	src/cli/commands/dev/browser-mode.ts
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
@notgitika
notgitika self-requested a review April 29, 2026 16:34

@notgitikanotgitika 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.

LGTM

@aidandaly24
aidandaly24 merged commit 8c4d6eb into previewApr 29, 2026
2 checks passed
@aidandaly24
aidandaly24 deleted the sync-preview/real-merge-main-20260429 branch April 29, 2026 16:35
@agentcore-cli-automation

Copy link
Copy Markdown

⚠️ Must be merged with "Create a merge commit" — not squash or rebase

The whole purpose of this PR is to restore the two-parent ancestry link between main and preview so the release workflow's git merge-base HEAD origin/preview == MAIN_SHA check passes. I verified the commit is structured correctly for that:

  • 553a520 has two parents: 1c726d8 (preview tip) and 7e8cae4 (main tip)
  • git merge-base 7e8cae4 553a5207e8cae4
  • The tree is identical to preview's tip, so preview-specific values (version 1.0.0-preview.3, the newer browser-mode.ts with harness support, CHANGELOG, lockfile) are preserved

However, if this PR is merged via GitHub's Squash or Rebase button, the merge commit gets flattened to a single-parent commit and we're right back to the broken state that caused this PR in the first place (that's exactly what happened to #1017).

A couple of options to make sure this doesn't happen again:

  1. Minimum: Whoever merges this needs to explicitly pick "Create a merge commit" from the merge button dropdown. Worth pinning a comment and/or adding a checklist item to the PR body calling that out, since the default button on this repo appears to be squash.
  2. Better (follow-up): Update .github/workflows/sync-preview.yml so the auto-generated conflict-resolution PR body includes a bold "DO NOT squash-merge this PR — use Create a merge commit" instruction. That's the same guidance that was missing when sync-preview: merge main into preview #1017 was merged.
  3. Best (follow-up): Have the sync-preview workflow push the merge commit directly to preview on the happy path (it already does this for no-conflict cases) and, on conflicts, consider auto-merging via the API with merge_method: "merge" once approved, so humans can't accidentally pick the wrong button.

Option 1 is required for this PR. Options 2/3 can be separate follow-ups.

Otherwise the merge itself looks correct — conflicts in CHANGELOG.md, package.json, package-lock.json, and src/cli/commands/dev/browser-mode.ts were all resolved in favor of preview, which matches the PR description.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
Sign up for freeto 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.

6 participants

@aidandaly24@agentcore-cli-automation@notgitika@tejaskash@jesseturner21@avi-alpert
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

sync-preview: real merge main into preview - #1018

Merged
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429
Apr 29, 2026
Merged

sync-preview: real merge main into preview#1018
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429

Conversation

@aidandaly24

Copy link
Copy Markdown
Contributor

Summary

  • Real merge commit (two parents) to restore ancestry link between main and preview
  • Resolves merge conflicts in CHANGELOG.md, package.json, package-lock.json, and browser-mode.ts (preview values kept)
  • Previous sync PR sync-preview: merge main into preview #1017 was squash-merged, which broke the merge-base check in the release workflow

Context

The "Release Both" workflow preflight checks git merge-base HEAD origin/preview == MAIN_SHA. A squash merge destroys the two-parent ancestry, so the check fails even though the code is present. This PR restores the link with a real merge commit.

github-actionsBotand others added 7 commits April 28, 2026 16:50
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* test: remove 44 render-only and framework-testing tests
Delete TUI component test files that only verify prop passthrough or
framework behavior (Ink rendering, setInterval lifecycle) without
testing any application logic:
- Cursor.test.tsx (5 tests): setInterval/clearInterval assertions
- Header.test.tsx (4 tests): title/subtitle string presence
- HelpText.test.tsx (2 tests): static string rendering
- AwsTargetConfigUI.test.tsx (7 tests): help text string lookups
- ConfirmReview.test.tsx (6 tests): field label rendering
- LogLink.test.tsx (4 tests): prop passthrough
- ScreenHeader.test.tsx (3 tests): prop passthrough
- FatalError.test.tsx (5 tests): prop passthrough
Trim Panel.test.tsx (6→3) and Screen.test.tsx (8→3), keeping only
tests that verify real logic: border structure, responsive width
adaptation, keyboard exit handling, and exitEnabled guard.
Remove tautological expect(true).toBe(true) tests from
assets.snapshot.test.ts; use describe.skipIf for empty asset dirs.
Kept all tests in StepIndicator, ScreenLayout, TwoColumn, NextSteps,
LogPanel, PathInput, and useFetchAccessFlow — audit flagged some as
framework tests but they verify real conditional/interaction logic.
* fix: restore AwsTargetConfigUI tests — pure function, not render test
getAwsConfigHelpText is a switch over AwsConfigPhase that maps states
to help strings. The undefined return for loading/terminal phases is a
contract consumed by DeployScreen.tsx via ?? HELP_TEXT.EXIT. These tests
guard that fallback, not framework rendering behavior.
…#1011)
The import gateway command used NAME_REGEX which only allowed
underscores and max 48 chars, rejecting valid gateway names with
hyphens like "agentcore-gateway". Switch to GatewayNameSchema which
matches the actual AWS API: alphanumeric with hyphens, up to 100 chars.
Constraint: AWS CreateGateway API allows [0-9a-zA-Z] with hyphens
Rejected: Updating NAME_REGEX | it is shared with other import commands that have different naming rules
Confidence: high
Scope-risk: narrow
…y agentcore/ packages (#1015)
PR #844 correctly removed the flat name-based agentcore exclusion and
threaded rootDir through copySourceTree, but the same CONFIG_DIR check
remained in collectFiles/collectFilesSync (the zip stage). Since the zip
stage operates on the staging directory — not the project root — the
check incorrectly stripped any top-level agentcore/ Python package
installed by uv (e.g., langgraph_checkpoint_aws/agentcore/) from the
deployment artifact, causing ModuleNotFoundError at runtime.
The CONFIG_DIR exclusion is only needed in copySourceTree (which copies
from the project root into staging). By the time we zip, the project
config dir was already filtered out — the only agentcore/ in staging is
a legitimate dependency package.
Closes#843
* ci: add coordinated main + preview release workflow
Adds a single workflow_dispatch that releases both branches together,
ensuring they stay in sync on npm.
* fix: address review — bump script compat, pre-publish verification, drop unused artifacts
- Preview bump now uses `prerelease --prerelease-tag preview` which the
bump-version.ts script actually accepts
- Added verify-merges job that checks both main and preview have the
expected versions before either publish runs (prevents drift)
- Both publish jobs now depend on verify-merges instead of each other,
so neither publishes unless both PRs are confirmed merged
- Removed upload-artifact steps from test jobs since publish jobs
rebuild from source post-merge
* fix: auto-rebase preview onto main in preflight step
Instead of failing when preview isn't rebased, the workflow now
rebases automatically. If there are conflicts, it aborts and
directs the user to resolve manually.
* ci: add sync-preview workflow, simplify release preflight
- New sync-preview.yml: runs on every push to main, auto-rebases
preview onto main. Silently skips on conflicts (no failure).
- Release workflow preflight reverted to a simple check — relies
on sync-preview having already done the rebase.
* fix: use merge instead of rebase for preview sync
Rebase overwrites preview-specific values (package version, tests).
Merge preserves preview's divergent files and only conflicts when
both branches touch the same lines.
* fix: concurrency control, conflict notifications, CDK tag TODO
- Add concurrency group to sync-preview to prevent parallel race
- On merge conflict, auto-create a GitHub issue (deduplicated) instead
of silently skipping
- Add TODO comment for CDK preview dist-tag in prepare-preview
* fix: create PR with conflict markers instead of issue on merge conflict
On conflict, sync-preview now:
- Creates a branch with the merge conflict markers committed
- Opens a PR targeting preview with resolution instructions
- Tags the original commit author for visibility
- Deduplicates (skips if a sync PR is already open)
# Conflicts:
#	CHANGELOG.md
#	package-lock.json
#	package.json
#	src/cli/commands/dev/browser-mode.ts
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
@notgitika
notgitika self-requested a review April 29, 2026 16:34

@notgitikanotgitika 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.

LGTM

@aidandaly24
aidandaly24 merged commit 8c4d6eb into previewApr 29, 2026
2 checks passed
@aidandaly24
aidandaly24 deleted the sync-preview/real-merge-main-20260429 branch April 29, 2026 16:35
@agentcore-cli-automation

Copy link
Copy Markdown

⚠️ Must be merged with "Create a merge commit" — not squash or rebase

The whole purpose of this PR is to restore the two-parent ancestry link between main and preview so the release workflow's git merge-base HEAD origin/preview == MAIN_SHA check passes. I verified the commit is structured correctly for that:

  • 553a520 has two parents: 1c726d8 (preview tip) and 7e8cae4 (main tip)
  • git merge-base 7e8cae4 553a5207e8cae4
  • The tree is identical to preview's tip, so preview-specific values (version 1.0.0-preview.3, the newer browser-mode.ts with harness support, CHANGELOG, lockfile) are preserved

However, if this PR is merged via GitHub's Squash or Rebase button, the merge commit gets flattened to a single-parent commit and we're right back to the broken state that caused this PR in the first place (that's exactly what happened to #1017).

A couple of options to make sure this doesn't happen again:

  1. Minimum: Whoever merges this needs to explicitly pick "Create a merge commit" from the merge button dropdown. Worth pinning a comment and/or adding a checklist item to the PR body calling that out, since the default button on this repo appears to be squash.
  2. Better (follow-up): Update .github/workflows/sync-preview.yml so the auto-generated conflict-resolution PR body includes a bold "DO NOT squash-merge this PR — use Create a merge commit" instruction. That's the same guidance that was missing when sync-preview: merge main into preview #1017 was merged.
  3. Best (follow-up): Have the sync-preview workflow push the merge commit directly to preview on the happy path (it already does this for no-conflict cases) and, on conflicts, consider auto-merging via the API with merge_method: "merge" once approved, so humans can't accidentally pick the wrong button.

Option 1 is required for this PR. Options 2/3 can be separate follow-ups.

Otherwise the merge itself looks correct — conflicts in CHANGELOG.md, package.json, package-lock.json, and src/cli/commands/dev/browser-mode.ts were all resolved in favor of preview, which matches the PR description.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
Sign up for freeto 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.

6 participants

@aidandaly24@agentcore-cli-automation@notgitika@tejaskash@jesseturner21@avi-alpert
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

sync-preview: real merge main into preview - #1018

Merged
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429
Apr 29, 2026
Merged

sync-preview: real merge main into preview#1018
aidandaly24 merged 7 commits into
previewfrom
sync-preview/real-merge-main-20260429

Conversation

@aidandaly24

Copy link
Copy Markdown
Contributor

Summary

  • Real merge commit (two parents) to restore ancestry link between main and preview
  • Resolves merge conflicts in CHANGELOG.md, package.json, package-lock.json, and browser-mode.ts (preview values kept)
  • Previous sync PR sync-preview: merge main into preview #1017 was squash-merged, which broke the merge-base check in the release workflow

Context

The "Release Both" workflow preflight checks git merge-base HEAD origin/preview == MAIN_SHA. A squash merge destroys the two-parent ancestry, so the check fails even though the code is present. This PR restores the link with a real merge commit.

github-actionsBotand others added 7 commits April 28, 2026 16:50
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* test: remove 44 render-only and framework-testing tests
Delete TUI component test files that only verify prop passthrough or
framework behavior (Ink rendering, setInterval lifecycle) without
testing any application logic:
- Cursor.test.tsx (5 tests): setInterval/clearInterval assertions
- Header.test.tsx (4 tests): title/subtitle string presence
- HelpText.test.tsx (2 tests): static string rendering
- AwsTargetConfigUI.test.tsx (7 tests): help text string lookups
- ConfirmReview.test.tsx (6 tests): field label rendering
- LogLink.test.tsx (4 tests): prop passthrough
- ScreenHeader.test.tsx (3 tests): prop passthrough
- FatalError.test.tsx (5 tests): prop passthrough
Trim Panel.test.tsx (6→3) and Screen.test.tsx (8→3), keeping only
tests that verify real logic: border structure, responsive width
adaptation, keyboard exit handling, and exitEnabled guard.
Remove tautological expect(true).toBe(true) tests from
assets.snapshot.test.ts; use describe.skipIf for empty asset dirs.
Kept all tests in StepIndicator, ScreenLayout, TwoColumn, NextSteps,
LogPanel, PathInput, and useFetchAccessFlow — audit flagged some as
framework tests but they verify real conditional/interaction logic.
* fix: restore AwsTargetConfigUI tests — pure function, not render test
getAwsConfigHelpText is a switch over AwsConfigPhase that maps states
to help strings. The undefined return for loading/terminal phases is a
contract consumed by DeployScreen.tsx via ?? HELP_TEXT.EXIT. These tests
guard that fallback, not framework rendering behavior.
…#1011)
The import gateway command used NAME_REGEX which only allowed
underscores and max 48 chars, rejecting valid gateway names with
hyphens like "agentcore-gateway". Switch to GatewayNameSchema which
matches the actual AWS API: alphanumeric with hyphens, up to 100 chars.
Constraint: AWS CreateGateway API allows [0-9a-zA-Z] with hyphens
Rejected: Updating NAME_REGEX | it is shared with other import commands that have different naming rules
Confidence: high
Scope-risk: narrow
…y agentcore/ packages (#1015)
PR #844 correctly removed the flat name-based agentcore exclusion and
threaded rootDir through copySourceTree, but the same CONFIG_DIR check
remained in collectFiles/collectFilesSync (the zip stage). Since the zip
stage operates on the staging directory — not the project root — the
check incorrectly stripped any top-level agentcore/ Python package
installed by uv (e.g., langgraph_checkpoint_aws/agentcore/) from the
deployment artifact, causing ModuleNotFoundError at runtime.
The CONFIG_DIR exclusion is only needed in copySourceTree (which copies
from the project root into staging). By the time we zip, the project
config dir was already filtered out — the only agentcore/ in staging is
a legitimate dependency package.
Closes#843
* ci: add coordinated main + preview release workflow
Adds a single workflow_dispatch that releases both branches together,
ensuring they stay in sync on npm.
* fix: address review — bump script compat, pre-publish verification, drop unused artifacts
- Preview bump now uses `prerelease --prerelease-tag preview` which the
bump-version.ts script actually accepts
- Added verify-merges job that checks both main and preview have the
expected versions before either publish runs (prevents drift)
- Both publish jobs now depend on verify-merges instead of each other,
so neither publishes unless both PRs are confirmed merged
- Removed upload-artifact steps from test jobs since publish jobs
rebuild from source post-merge
* fix: auto-rebase preview onto main in preflight step
Instead of failing when preview isn't rebased, the workflow now
rebases automatically. If there are conflicts, it aborts and
directs the user to resolve manually.
* ci: add sync-preview workflow, simplify release preflight
- New sync-preview.yml: runs on every push to main, auto-rebases
preview onto main. Silently skips on conflicts (no failure).
- Release workflow preflight reverted to a simple check — relies
on sync-preview having already done the rebase.
* fix: use merge instead of rebase for preview sync
Rebase overwrites preview-specific values (package version, tests).
Merge preserves preview's divergent files and only conflicts when
both branches touch the same lines.
* fix: concurrency control, conflict notifications, CDK tag TODO
- Add concurrency group to sync-preview to prevent parallel race
- On merge conflict, auto-create a GitHub issue (deduplicated) instead
of silently skipping
- Add TODO comment for CDK preview dist-tag in prepare-preview
* fix: create PR with conflict markers instead of issue on merge conflict
On conflict, sync-preview now:
- Creates a branch with the merge conflict markers committed
- Opens a PR targeting preview with resolution instructions
- Tags the original commit author for visibility
- Deduplicates (skips if a sync PR is already open)
# Conflicts:
#	CHANGELOG.md
#	package-lock.json
#	package.json
#	src/cli/commands/dev/browser-mode.ts
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
@notgitika
notgitika self-requested a review April 29, 2026 16:34

@notgitikanotgitika 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.

LGTM

@aidandaly24
aidandaly24 merged commit 8c4d6eb into previewApr 29, 2026
2 checks passed
@aidandaly24
aidandaly24 deleted the sync-preview/real-merge-main-20260429 branch April 29, 2026 16:35
@agentcore-cli-automation

Copy link
Copy Markdown

⚠️ Must be merged with "Create a merge commit" — not squash or rebase

The whole purpose of this PR is to restore the two-parent ancestry link between main and preview so the release workflow's git merge-base HEAD origin/preview == MAIN_SHA check passes. I verified the commit is structured correctly for that:

  • 553a520 has two parents: 1c726d8 (preview tip) and 7e8cae4 (main tip)
  • git merge-base 7e8cae4 553a5207e8cae4
  • The tree is identical to preview's tip, so preview-specific values (version 1.0.0-preview.3, the newer browser-mode.ts with harness support, CHANGELOG, lockfile) are preserved

However, if this PR is merged via GitHub's Squash or Rebase button, the merge commit gets flattened to a single-parent commit and we're right back to the broken state that caused this PR in the first place (that's exactly what happened to #1017).

A couple of options to make sure this doesn't happen again:

  1. Minimum: Whoever merges this needs to explicitly pick "Create a merge commit" from the merge button dropdown. Worth pinning a comment and/or adding a checklist item to the PR body calling that out, since the default button on this repo appears to be squash.
  2. Better (follow-up): Update .github/workflows/sync-preview.yml so the auto-generated conflict-resolution PR body includes a bold "DO NOT squash-merge this PR — use Create a merge commit" instruction. That's the same guidance that was missing when sync-preview: merge main into preview #1017 was merged.
  3. Best (follow-up): Have the sync-preview workflow push the merge commit directly to preview on the happy path (it already does this for no-conflict cases) and, on conflicts, consider auto-merging via the API with merge_method: "merge" once approved, so humans can't accidentally pick the wrong button.

Option 1 is required for this PR. Options 2/3 can be separate follow-ups.

Otherwise the merge itself looks correct — conflicts in CHANGELOG.md, package.json, package-lock.json, and src/cli/commands/dev/browser-mode.ts were all resolved in favor of preview, which matches the PR description.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 29, 2026
Sign up for freeto 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.

6 participants

@aidandaly24@agentcore-cli-automation@notgitika@tejaskash@jesseturner21@avi-alpert