Commit Graph

5213 Commits

Author SHA1 Message Date
Tyler Slaton 1aa818da14 chore: release cli v1.0.2 (#3775)
## Release cli v1.0.2

**Scope:** `cli` | **Bump:** `patch`

---

### How this release process works

1. **This PR was created automatically** by the "release / create-pr"
workflow.
   It bumped the `cli` packages to `1.0.2`
   and generated AI-enhanced release notes.

2. **CI runs on this PR** — the full test suite (unit tests, lint, type
checks, build)
   must pass before merging. This is the review gate.

3. **Review the release notes** in `release-notes.md` in this PR.
If a Notion draft was created, you can edit the release notes there
before merging.

4. **When this PR is merged**, the `release / publish` workflow
automatically:
   - Builds all packages
   - Publishes the `cli` packages to npm at version `1.0.2`
   - Creates git tag `cli/v1.0.2`
   - Creates a GitHub Release with the final release notes

### Before merging

- [ ] CI is green (tests, lint, types, build)
- [ ] Version bumps look correct
- [ ] Release notes are accurate (edit in Notion if a draft was created)

---

> **Do not merge until CI is fully green.** The full test suite runs
automatically on this PR.
cli/v1.0.2
2026-04-11 00:15:55 -07:00
tylerslaton 4a682bb92b chore: release cli v1.0.2 2026-04-11 07:05:02 +00:00
Tyler Slaton d8e9844697 chore: release monorepo v1.55.3 (#3773) v1.55.3 2026-04-10 23:59:50 -07:00
tylerslaton ccdd276a6d chore: release monorepo v1.55.3 2026-04-11 06:24:17 +00:00
Tyler Slaton 72a831e3b4 ci: test CI scripts, granular package version control (#3772) 2026-04-10 23:22:44 -07:00
Tyler Slaton dc9064092d fix: use absolute include path in release vitest config
The relative path "lib/**" didn't resolve when vitest runs from the
repo root. Changed to "scripts/release/lib/**" so it works regardless
of cwd.
2026-04-10 23:17:23 -07:00
Tyler Slaton ad577d0fbe Merge branch 'main' into fix/release-scripts-node20-compat 2026-04-10 23:11:45 -07:00
Tyler Slaton beff7a859e test: add bumpPackages tests, wire release tests into CI
- Add tests for bumpPackages: verifies workspace:* protocol is
  preserved and exact version deps are updated
- Add vitest config for scripts/release/
- Add release script test step to test_unit.yml so these run on
  every PR and push to main
2026-04-10 23:08:12 -07:00
Tyler Slaton 04edbd6593 fix: preserve workspace:* protocol when bumping package versions
bumpPackages was overwriting internal dependency references like
"workspace:*" with the new version string, causing pnpm to try
resolving the version from the npm registry (which fails because
it hasn't been published yet). Now skips deps using workspace protocol.
2026-04-10 23:07:03 -07:00
Tyler Slaton 2a880fb09c ci: add scope dropdown (monorepo, cli, angular) to release workflows
Each release scope has its own packages, version source, and
independent version track:
- monorepo: 12 core @copilotkit/* packages (shared version)
- cli: copilotkit CLI (independent version)
- angular: @copilotkitnext/angular (independent version)

Branch pattern is now release/publish/<scope>/v<version> and git
tags use <scope>/v<version> for non-monorepo scopes.
2026-04-10 23:04:48 -07:00
Tyler Slaton 5618d4d784 ci: restrict release workflows to main branch only (#3771)
Add if: github.ref == 'refs/heads/main' to the `release / create-pr`
job. Running from a feature branch will skip immediately.
2026-04-10 22:54:13 -07:00
Tyler Slaton dab7832dc9 Merge branch 'main' into fix/release-scripts-node20-compat 2026-04-10 22:53:56 -07:00
Tyler Slaton dacc21ea35 ci: restrict release workflows to main branch only
Add if: github.ref == 'refs/heads/main' to both release / create-pr
and release / pre jobs. Running from a feature branch will skip
immediately.
2026-04-10 22:51:27 -07:00
Tyler Slaton 2f3251006d ci: fix Node 20 compat, rename workflows, add unit tests (#3770)
- Replace import.meta.dirname (Node 21.2+) with fileURLToPath workaround
for Node 20 compatibility
- Rename workflows to release / pre, release / publish, release /
create-pr so they group together in the Actions UI
- Fix semver regex to allow hyphens in prerelease identifiers
- Add unit tests for parseSemver, computeNextStableVersion,
computePrereleaseVersion
2026-04-10 22:44:51 -07:00
Tyler Slaton 5b84c16b55 ci: fix Node 20 compat, rename workflows, add unit tests
- Replace import.meta.dirname (Node 21.2+) with fileURLToPath
  workaround for Node 20 compatibility
- Rename workflows to release / pre, release / publish, release /
  create-pr so they group together in the Actions UI
- Fix semver regex to allow hyphens in prerelease identifiers
- Add unit tests for parseSemver, computeNextStableVersion,
  computePrereleaseVersion
2026-04-10 22:43:53 -07:00
Tyler Slaton 1ddccd4d95 chore: replace changesets with bespoke stateless release system (#3769)
Remove the entire changesets infrastructure (config, patches, custom
GitHub Action, pre.json mode switching) and replace it with a simple,
stateless release system designed around two workflows:

Stable release:
  1. Run "create release PR" workflow — pick patch/minor/major
2. Workflow bumps all package.json versions, generates AI release notes,
     opens a PR
  3. Full CI test suite runs on the PR (lint, types, build, tests)
  4. Merge the PR → "publish release" workflow triggers automatically
  5. Publishes all @copilotkit/* packages to npm, creates git tag +
     GitHub Release with AI-generated notes

Pre-release:
  1. Run "publish prerelease" workflow — pick patch/minor/major
  2. Computes stateless version (e.g. 1.56.0-next.<timestamp>)
  3. Publishes to npm with "next" tag. No commits, no state files.

Key improvements over changesets:
- No pre.json mode switching or state corruption
- No patches to upstream packages
- No enter/exit prerelease ceremonies
- Version management is just "pick patch/minor/major"
- AI-generated release notes via Anthropic API
- SOC2 compliant — nothing auto-merges, release PR is the review gate
- Private packages automatically excluded via allowlist in config
2026-04-10 22:35:08 -07:00
Tyler Slaton 387784c7bd ci: add bespoke stateless release system
Replace changesets with a simple, stateless release system:

Stable release (PR-gated):
  Actions → "create release PR" → pick patch/minor/major → CI runs →
  merge → publishes to npm, creates git tag + GitHub Release

Prerelease (ad-hoc):
  Actions → "publish / prerelease" → publishes current version with
  -canary.<suffix|timestamp> to npm under "canary" tag

Key features:
- All 12 core @copilotkit/* packages share a single version
- AI-generated release notes via Anthropic API
- Notion draft for team editing before merge
- Notion link commented on the release PR
- Guards: concurrent release PR check, version > npm check, clean
  semver check, canary-only prerelease tag
- release/publish/v* branch pattern (hard to accidentally match)
- TypeScript throughout (tsx runner)
- release.config.json with versionedTogether/versionedIndependently
2026-04-10 22:20:43 -07:00
Tyler Slaton ab74b737f0 ci: remove changesets infrastructure
Remove the entire changesets-based release system:
- .changeset/ config directory
- .github/actions/changesets-action/ custom fork (34 files)
- @changesets/assemble-release-plan patch
- @changesets/cli dependency
- Old release and prerelease workflows
- Legacy release scripts (check-allowed, generate-changelog, publish-snapshot)
- Stale paths-ignore entries in CI workflows
2026-04-10 22:20:32 -07:00
Tyler Slaton ae66e73d78 chore: bump @copilotkit/* versions to 1.55.2 in integration templates (#3761) 2026-04-10 17:35:23 -07:00
Martha Schumann c27b162589 fix: pin @ag-ui/client to 0.0.52 in CLI templates
Templates were pinned at old @ag-ui/client versions (0.0.40–0.0.46).
@copilotkit/runtime@1.55.2 ships 0.0.52, which added private fields to
AbstractAgent. The version split caused a nominal type error on build.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 17:22:14 -07:00
Martha Kelly Schumann a45afea9ba Merge branch 'main' into fix/update-template-copilotkit-versions 2026-04-10 16:56:59 -07:00
Martha Schumann bdc01e3c12 chore: bump CLI template @copilotkit/* versions to 1.55.2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 16:56:19 -07:00
Martha Kelly Schumann 4f8cd56a38 chore: version packages (#3762)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @copilotkit/a2ui-renderer@1.55.2

### Patch Changes

-   62c6042: Bumping the a2ui-middleware underneath the a2ui renderer

## @copilotkitnext/angular@1.54.3

### Patch Changes

-   @copilotkit/core@1.55.2
-   @copilotkit/shared@1.55.2

## @copilotkit/core@1.55.2

### Patch Changes

-   @copilotkit/shared@1.55.2

## @copilotkit/react-core@1.55.2

### Patch Changes

- 22a7f98: fix: preserve assistant text when multiple tool calls fire in
one turn (CPK-7154)
-   Updated dependencies [62c6042]
    -   @copilotkit/a2ui-renderer@1.55.2
    -   @copilotkit/core@1.55.2
    -   @copilotkit/runtime-client-gql@1.55.2
    -   @copilotkit/shared@1.55.2
    -   @copilotkit/web-inspector@1.55.2

## @copilotkit/react-textarea@1.55.2

### Patch Changes

-   Updated dependencies [22a7f98]
    -   @copilotkit/react-core@1.55.2
    -   @copilotkit/runtime-client-gql@1.55.2
    -   @copilotkit/shared@1.55.2

## @copilotkit/react-ui@1.55.2

### Patch Changes

- a04f86e: Fix chat window layout regressions introduced in 1.55: input
is now pinned to the bottom of the window again, and mounting
CopilotSidebar no longer adds empty space below the page content.
-   Updated dependencies [22a7f98]
    -   @copilotkit/react-core@1.55.2
    -   @copilotkit/runtime-client-gql@1.55.2
    -   @copilotkit/shared@1.55.2

## @copilotkit/runtime@1.55.2

### Patch Changes

- 5f4ca65: feat(runtime): add factory mode to BuiltInAgent for
backend-agnostic LLM integration
    -   @copilotkit/shared@1.55.2

## @copilotkit/runtime-client-gql@1.55.2

### Patch Changes

-   @copilotkit/shared@1.55.2

## @copilotkit/sdk-js@1.55.2

### Patch Changes

-   @copilotkit/shared@1.55.2

## @copilotkit/sqlite-runner@1.55.2

### Patch Changes

-   Updated dependencies [5f4ca65]
    -   @copilotkit/runtime@1.55.2

## @copilotkit/voice@1.55.2

### Patch Changes

-   Updated dependencies [5f4ca65]
    -   @copilotkit/runtime@1.55.2

## @copilotkit/web-inspector@1.55.2

### Patch Changes

-   @copilotkit/core@1.55.2

## @copilotkit/shared@1.55.2
2026-04-10 16:47:55 -07:00
github-actions[bot] 087cbae689 chore: version packages 2026-04-10 23:38:59 +00:00
Tyler Slaton 652108ca7e chore: release 1.55.2 (#3763) 2026-04-10 16:37:42 -07:00
Martha Schumann 07b7cc134d chore: release 1.55.2 2026-04-10 16:34:31 -07:00
Martha Kelly Schumann c347e87285 fix(react-ui): restore chat window layout broken in 1.55 (#3759)
## Summary

Two UI regressions introduced in 1.55, both in `react-ui`:

**1. Input not pinned to bottom of chat window**
The attachments drag-and-drop feature (`fc1cfa09d`) wrapped
messages+input in a `<div className={dragOver ? "copilotKitDragOver" :
""}>`. When not dragging that's `class=""` — no CSS rule targets it, so
it collapses to content height inside the flex-column window. Fix:
always apply `copilotKitChatBody` class and give it `flex: 1 1 0%;
display: flex; flex-direction: column; min-height: 0`.

**2. Empty space below app content when sidebar is mounted**
`818e4e767` added `min-height: 100vh; height: 100%` to
`.copilotKitSidebarContentWrapper`, causing a full-viewport gap below
page content even when collapsed. Fix: remove those height rules — the
wrapper only needs `margin-right` to push content left.

## Test plan

- [ ] Open `CopilotSidebar` — input pinned to bottom, messages fill
remaining space
- [ ] Open `CopilotPopup` — same
- [ ] Mount `CopilotSidebar` collapsed — no empty space below app
content
- [ ] Open/close sidebar — margin-right transitions correctly, no blank
space
- [ ] Drag file over chat — `copilotKitDragOver` class still applies
- [ ] CI passes

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-10 16:24:45 -07:00
Martha Schumann c2b17a9ad8 test(e2e): simplify to form-filling only, fix windowBox ref in drag test 2026-04-10 16:14:26 -07:00
Martha Schumann c5b3951f38 test(e2e): guard isVisible against race on window open check 2026-04-10 16:07:24 -07:00
Martha Schumann bd19406f43 test(e2e): fix beforeEach to handle defaultOpen variants 2026-04-10 16:06:24 -07:00
Martha Schumann a8db5310f2 test(e2e): tighten chat layout assertions 2026-04-10 15:55:20 -07:00
Martha Schumann 271602e0d3 test(e2e): add chat window layout regression tests 2026-04-10 15:53:12 -07:00
Martha Schumann a04f86eb1c chore: add changeset for react-ui layout fix 2026-04-10 15:41:41 -07:00
Martha Schumann 6fdf106620 fix(react-ui): remove min-height from CopilotSidebarContentWrapper
818e4e767 added min-height: 100vh / height: 100% to
.copilotKitSidebarContentWrapper and its children in an attempt to
support full-height children inside the sidebar. This caused empty
space equal to the full viewport height to appear below the app
content whenever CopilotSidebar was mounted, even when collapsed.

The wrapper only needs to push the page content left (via margin-right)
when the sidebar expands — it does not need to control its own height.
Remove the height rules; child layout is the responsibility of the
app, not the sidebar wrapper.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 15:35:33 -07:00
Martha Schumann 92f5bba0e4 chore: bump @copilotkit/* versions to 1.55.1 in all integration templates
Templates had stale pinned versions ranging from 1.9.3 to 1.52.1.
The CLI does a verbatim sparse checkout of these files, so users
scaffolding via `copilotkit create` were getting old versions installed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 15:34:35 -07:00
Martha Schumann 1121ea6150 fix(react-ui): pin chat body wrapper to fill window height
The drag-and-drop wrapper div added in fc1cfa09d (attachments feature)
broke the flex layout of the chat window. The div had no class when
not dragging, so no CSS rule applied flex-grow — messages and input
collapsed to their natural height instead of filling the window.

Add copilotKitChatBody class to the wrapper and give it flex: 1 1 0%
so it claims the remaining window height, restoring the input-pinned-
to-bottom behaviour present in 1.51.1.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 15:29:14 -07:00
Jordan Ritter b41fc64e2e fix: showcase drift detection compares against showcase-affecting commits, not HEAD (#3758)
## Summary

The showcase image drift detection compared image tags against `main`
HEAD SHA, but deploys only trigger when `showcase/` or
`examples/integrations/` paths change. Any non-showcase commit to main
(package bumps, workflow changes, docs, etc.) made ALL images appear
stale, triggering unnecessary rebuild workflows and Slack alerts.

## Root Cause

```bash
# Before: always stale after non-showcase commits
MAIN_SHA=$(git ls-remote ... main | cut -f1)
```

## Fix

Query the GitHub API for the last commit that actually touched
showcase-related paths, then check image tags against those SHAs:

```bash
SHOWCASE_SHA=$(gh api "repos/.../commits?path=showcase&per_page=1" --jq '.[0].sha')
EXAMPLES_SHA=$(gh api "repos/.../commits?path=examples/integrations&per_page=1" --jq '.[0].sha')
# Image is up-to-date if it matches EITHER SHA
```

## Impact

- No more false-positive drift alerts flooding #oss-alerts
- No more unnecessary rebuild triggers for every non-showcase commit
- Drift detection now only fires when showcase code actually changed but
images weren't rebuilt

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-10 13:19:55 -07:00
Jordan Ritter aafcfccb35 fix: showcase drift detection compares against showcase-affecting commits, not HEAD
The drift check compared image tags against main HEAD SHA, but deploys
only trigger when showcase/ or examples/integrations/ paths change. Any
non-showcase commit to main made ALL images appear stale, triggering
unnecessary rebuild workflows and Slack alerts.

Fix: query the GitHub API for the last commit that touched each path
and check image tags against those SHAs instead.
2026-04-10 13:17:28 -07:00
Ben Taylor abcb01a4e2 fix: restore thread routes dropped by fetch handler rewrite (#3756)
When #3550 was landed, it dropped the thread routes used for the
intelligence platform. This restores them and adds tests to ensure
they're not dropped again.
2026-04-10 14:36:12 -05:00
github-actions[bot] 4fcfe35fc5 style: auto-fix formatting 2026-04-10 14:02:10 -05:00
Max Korp 215bfd9385 test(runtime): add thread route coverage to fetch-router tests 2026-04-10 14:02:10 -05:00
Max Korp 395e10059c fix(runtime): restore thread routes dropped during fetch-handler rewrite 2026-04-10 14:02:10 -05:00
Jordan Ritter c45570470e Fix showcase drift detection: use npm ci for test deps (#3754)
## Summary

Showcase drift detection has been failing since the LFS fix landed
because `pnpm install` doesn't work in `showcase/tests/` — it only has
`package-lock.json`, not `pnpm-lock.yaml`.

Changed `pnpm install` → `npm ci` and removed the unnecessary
`pnpm/action-setup` step. Also added `--with-deps` to Playwright install
for OS dependencies.

Closes #3689

## Test plan

- [ ] Next scheduled drift detection run succeeds

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-10 11:54:15 -07:00
Jordan Ritter fcbf2215b1 chore: version packages (next) (#3740)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

`main` is currently in **pre mode** so this branch has prereleases
rather than normal releases. If you want to exit prereleases, run
`changeset pre exit` on `main`.

⚠️⚠️⚠️⚠️⚠️⚠️

# Releases
## @copilotkitnext/angular@1.54.3-next.1

### Patch Changes

-   @copilotkit/core@1.55.2-next.1
-   @copilotkit/shared@1.55.2-next.1

## @copilotkit/core@1.55.2-next.1

### Patch Changes

-   @copilotkit/shared@1.55.2-next.1

## @copilotkit/react-core@1.55.2-next.1

### Patch Changes

- 22a7f98: fix: preserve assistant text when multiple tool calls fire in
one turn (CPK-7154)
    -   @copilotkit/a2ui-renderer@1.55.2-next.1
    -   @copilotkit/core@1.55.2-next.1
    -   @copilotkit/runtime-client-gql@1.55.2-next.1
    -   @copilotkit/shared@1.55.2-next.1
    -   @copilotkit/web-inspector@1.55.2-next.1

## @copilotkit/react-textarea@1.55.2-next.1

### Patch Changes

-   Updated dependencies [22a7f98]
    -   @copilotkit/react-core@1.55.2-next.1
    -   @copilotkit/runtime-client-gql@1.55.2-next.1
    -   @copilotkit/shared@1.55.2-next.1

## @copilotkit/react-ui@1.55.2-next.1

### Patch Changes

-   Updated dependencies [22a7f98]
    -   @copilotkit/react-core@1.55.2-next.1
    -   @copilotkit/runtime-client-gql@1.55.2-next.1
    -   @copilotkit/shared@1.55.2-next.1

## @copilotkit/runtime@1.55.2-next.1

### Patch Changes

- 5f4ca65: feat(runtime): add factory mode to BuiltInAgent for
backend-agnostic LLM integration
    -   @copilotkit/shared@1.55.2-next.1

## @copilotkit/runtime-client-gql@1.55.2-next.1

### Patch Changes

-   @copilotkit/shared@1.55.2-next.1

## @copilotkit/sdk-js@1.55.2-next.1

### Patch Changes

-   @copilotkit/shared@1.55.2-next.1

## @copilotkit/sqlite-runner@1.55.2-next.1

### Patch Changes

-   Updated dependencies [5f4ca65]
    -   @copilotkit/runtime@1.55.2-next.1

## @copilotkit/voice@1.55.2-next.1

### Patch Changes

-   Updated dependencies [5f4ca65]
    -   @copilotkit/runtime@1.55.2-next.1

## @copilotkit/web-inspector@1.55.2-next.1

### Patch Changes

-   @copilotkit/core@1.55.2-next.1

## @copilotkit/a2ui-renderer@1.55.2-next.1



## @copilotkit/shared@1.55.2-next.1
2026-04-10 11:53:06 -07:00
Jordan Ritter 82aaaefbae fix: use npm ci instead of pnpm install for showcase drift detection tests 2026-04-10 11:30:34 -07:00
github-actions[bot] 3e43f35131 chore: version packages (next) 2026-04-10 18:29:58 +00:00
Jordan Ritter eb123e3a80 fix: fix showcase drift detection: disable LFS checkout (#3753)
## Summary

The showcase drift detection workflow has been failing on every
scheduled run since Apr 9 (issue #3689) because Git LFS fetch fails:

```
error: failed to fetch some objects from 'https://github.com/CopilotKit/CopilotKit.git/info/lfs'
```

The workflow runs Playwright against deployed Railway backends — it
doesn't need any LFS blobs. Changing `lfs: true` to `lfs: false` fixes
the checkout and restores drift detection.

## Impact

Every 6-hour drift detection run has been failing, firing Slack alerts
to #oss-alerts and masking actual drift. This is urgent.

Closes #3689

## Test plan

- [ ] Next scheduled run completes successfully

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-10 11:28:43 -07:00
Jordan Ritter 5cc3e04033 fix: debounce image drift alerts — only alert when stale set changes, not every 15min 2026-04-10 11:15:37 -07:00
Jordan Ritter e5b323902e fix: disable LFS in showcase drift detection checkout (fixes LFS fetch failures) 2026-04-10 11:13:35 -07:00
Jordan Ritter 8ede1832f5 fix: remove redundant sed agent URL patches from test Dockerfiles (#3751)
## Summary

- Remove `sed` build-time patches and `grep` verification lines from 6
`Dockerfile.app` files
- Delete `crewai-crews/docker-route-override.ts` (no longer needed)
- Source `route.ts` files now read `process.env.AGENT_URL` natively
(merged in #3737)

These patches were added when building the starter e2e smoke tests
(#3698) because the source code hardcoded `http://localhost:8000`. Now
that the source reads from `AGENT_URL`, the Docker build-time
workarounds are redundant.

## Test plan

- [x] Verified all 6 starters have `AGENT_URL` in source route.ts on
main
- [ ] CI starter smoke tests pass (same behavior, fewer moving parts)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-10 11:11:33 -07:00