diff --git a/.tegami/2026-11-09-ai-search-built-in-storage.md b/.tegami/2026-11-09-ai-search-built-in-storage.md deleted file mode 100644 index 05b669e..0000000 --- a/.tegami/2026-11-09-ai-search-built-in-storage.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -packages: - "release:solzero": major ---- - -## Upload documents directly to AI Search - -AI Search sources now use built-in storage. Administrators can upload and delete documents and -inspect indexing status without an external-storage service token. Workflows can ingest text and -JSON with the new Upload to AI Search node. - -R2 and website source creation is removed. Existing source records and original content remain -intact and are marked as requiring migration; these sources are unavailable for retrieval until -operators copy their originals into new built-in sources and update their selections. Follow -`docs/ai-search.md` before cutover. Deployment does not copy or delete legacy content. Workflow -artifact and skill storage remain unchanged. diff --git a/.tegami/2026-11-09-commit-manual-test-recordings.md b/.tegami/2026-11-09-commit-manual-test-recordings.md deleted file mode 100644 index 893ca39..0000000 --- a/.tegami/2026-11-09-commit-manual-test-recordings.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -packages: - "release:solzero": patch ---- - -## Complete manual test-recording refreshes - -Successful manual validation runs now execute the requested recording-commit step when release -detection is skipped. Failed or cancelled tests cannot publish recordings. diff --git a/.tegami/publish-lock.yaml b/.tegami/publish-lock.yaml index 4be3613..26d68e7 100644 --- a/.tegami/publish-lock.yaml +++ b/.tegami/publish-lock.yaml @@ -1,193 +1,13 @@ core:changelogs: - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Open created bot details\n\nThe bot route now renders its detail page after creation and direct navigation.\n" - filename: 2026-10-04-bot-detail.md + - content: "---\npackages:\n release:solzero:\n type: major\n---\n\n## Upload documents directly to AI Search\n\nAI Search sources now use built-in storage. Administrators can upload and delete documents and\ninspect indexing status without an external-storage service token. Workflows can ingest text and\nJSON with the new Upload to AI Search node.\n\nR2 and website source creation is removed. Existing source records and original content remain\nintact and are marked as requiring migration; these sources are unavailable for retrieval until\noperators copy their originals into new built-in sources and update their selections. Follow\n`docs/ai-search.md` before cutover. Deployment does not copy or delete legacy content. Workflow\nartifact and skill storage remain unchanged.\n" + filename: 2026-11-09-ai-search-built-in-storage.md v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Honor Codex reasoning effort for Cloudflare GPT-OSS\n\nCodex now forwards the selected reasoning effort when running the supported Cloudflare GPT-OSS models. A pinned harness compatibility patch enables their reasoning metadata while keeping summaries disabled; other models retain their existing configuration.\n" - filename: 2026-10-04-codex-reasoning.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: minor\n---\n\n## Show AI usage in end-to-end checks\n\nEnd-to-end checks now report model requests, measured token counts, cache results,\ndurations and estimated charges. Same-repository pull requests receive a summary when\nuncached inference occurs. Missing provider measurements remain unknown. Summaries\nexclude request content and credentials.\n" - filename: 2026-10-04-e2e-ai-usage.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Release isolated test gateways after validation\n\nCloudflare end-to-end checks reuse dedicated test gateway names and destroy their owned\ninfrastructure after each CI run, including revoking the generated application run token.\nLocal test operators can run `nub run test:e2e:cleanup` after stopping the stack. Cleanup\nvalidates ownership and leaves production and shared gateways unchanged.\n" - filename: 2026-10-04-e2e-gateway-lifecycle.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Start container harnesses with their required bootstrap dependency\n\nThe agent container includes the pinned pnpm runtime required by the AI SDK harness bootstrap recipes. This supplies the missing executable needed at startup. The non-root runtime user also owns the OpenCode cache directory so its native CLI can complete bootstrap. Isolated end-to-end container runs build the current runtime sources and Dockerfile locally; deployed environments receive the change when release CI publishes updated image digests. Repository development continues to use Nub.\n" - filename: 2026-10-04-harness-bootstrap.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Continue existing harness sessions\n\nThe session run API now inherits an existing session's kind when a follow-up request omits it. OpenCode and Codex follow-ups no longer fail with an incorrect isolate-kind conflict.\n" - filename: 2026-10-04-harness-follow-up.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Complete delegated GPT-OSS turns\n\nIsolate parent and child turns now use a 4096-token output budget for native Cloudflare GPT-OSS when no explicit limit is supplied, avoiding its short default during tool execution and delegation.\n" - filename: 2026-10-04-isolate-output-budget.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Register Cloudflare model IDs in the OpenCode harness\n\nOpenCode registers custom Cloudflare Responses model IDs in its generated OpenAI provider configuration, allowing the configured Workers AI model to resolve. Typed OpenCode errors retain their display message instead of becoming `[object Object]`. The isolated local launcher supplies trusted macOS system roots to Alchemy and workerd without overriding a caller's CA bundle or disabling certificate verification.\n" - filename: 2026-10-04-opencode-cloudflare-model.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Search secrets with long names\n\nSecret search applies literal matching after user-scoped database selection, avoiding D1 pattern-length errors for longer names.\n" - filename: 2026-10-04-secret-search.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Restore idle controls after reopening a session\n\nReopening a completed or failed session no longer leaves the agent thinking indicator and Stop button active. The message composer and model selector become available when there is no processing message.\n" - filename: 2026-10-04-session-replay-idle.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Keep sign-in input when the page first opens\n\nThe sign-in form now waits until its event handlers are attached before accepting input. This prevents early input from being lost and stops credentials from being submitted as a native GET request during hydration. Authenticated forms show the existing loader until they are interactive.\n" - filename: 2026-10-04-sign-in-hydration.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Select subagent preferences in the tools dialog\n\nSubagent options now appear above the tools dialog and accept pointer selection.\n" - filename: 2026-10-04-subagent-menu.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Run OpenCode and Codex with Cloudflare GPT-OSS\n\nOpenCode and Codex can now complete prompts, execute shell tools, and continue sessions with the configured Cloudflare GPT-OSS model. SolZero bridges buffered native Chat output to the Responses stream required by the harnesses, preserving actual text, tool calls, and results. Output is delivered after the provider finishes generating it.\n" - filename: 2026-10-04-workers-ai-harness.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Export the current workflow name\n\nWorkflow YAML exports now use the saved name after renaming a workflow, matching the workflow detail page.\n" - filename: 2026-10-04-workflow-export-name.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Keep sign-in on Better Auth 1.7\n\nSolZero now uses Better Auth 1.7.7. Email and password sign-in, GitHub linking, and session cookies stay the same.\n\nIf this deployment registers a custom OIDC provider, set the identity-provider redirect URI to `/api/auth/callback/`. The previous `/api/auth/oauth2/callback/` path is no longer used.\n" - filename: 2026-10-05-better-auth-1-7.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Clean test resources after failures and cancellation\n\nEnd-to-end runs now isolate simulator data, containers, gateways and application tokens by run ownership and verify their removal after success, failure or cancellation. Interrupted runs retain guarded recovery receipts instead of sweeping shared development data. Preview cleanup verifies the current pull request lifetime and owned resource absence before reporting success.\n" - filename: 2026-10-05-clean-owned-e2e-resources.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Reuse verified browser actions across test runs\n\nEnd-to-end checks can replay recorded browser actions with fresh fixture data while\nstill checking exact results. CI restores recordings from the same branch and saves a\nnew archive after each successful run, including rerun attempts. Reports show action\nreplay and live model calls separately from AI Gateway response caching.\n" - filename: 2026-10-05-e2e-action-replay.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Preserve unsaved runtime settings\n\nBackground provider refreshes no longer discard an edited Isolate step limit when the saved value is unchanged. The input becomes editable after its saved baseline is initialized.\n" - filename: 2026-10-05-preserve-runtime-settings-draft.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: minor\n---\n\n## Deploy from the alchemy.new registry\n\n\n\nalchemy.new deploys SolZero from registry package `solzero/platform`. The release workflow publishes that package for the release it just created. The project manifest is uploaded separately and is not inside the archive. The deploy sandbox does not clone the tag or install dependencies. Agent container images stay pinned by digest. A release that did not publish the package cannot be deployed on alchemy.new. Releases published before this package, including v1.8.0, stay undeployable there until you select a release that published it.\n\nAllow the publisher at alchemy.new before the first deploy. The repository is `SolZeroAI/platform`, the workflow file is `release.yml`, the git ref is `refs/heads/master`, and the GitHub Environment is `alchemy-new`.\n" - filename: 2026-10-07-ready-deploy-artifact.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Validate complete deployment profiles\n\nConfiguration checks now include a named profile's test-stage file when it exists. Rewriting an\nexisting stage-secret file also restores private file permissions, rather than preserving a broader\nmode from an earlier copy.\n" - filename: 2026-10-23-config-profile-validation.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: minor\n---\n\n## Customize a deployment without changing application code\n\nDeployment profiles can now define a complete product brand for the browser, API documentation, agents, and Slack.\nCustom logos also replace the primary loading mark. Existing brand environment overrides remain\nsupported when the profile does not define a brand.\n\nOperators can configure a pull-request helper alias while preserving existing skill identities.\nDeploy an updated agent-container image before using this alias. Health responses now identify the\nconfigured application as `-agent-control-plane`.\n\nPrivate deployment templates support named profiles, configurable runners, Okta credentials, and\nPlanetScale credentials for standing environments. Ephemeral pull-request previews remain on D1.\n\nRemote PlanetScale capacity, region and logical database name can be configured without code changes.\n" - filename: 2026-10-23-fork-configuration.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: minor\n---\n\n## Verify an offline migration before cutover\n\nThe D1-to-Postgres copier now uses bounded batches, rejects unmapped data, preserves legacy built-in\nskill identities, and independently verifies row counts and checksums. Apply requires an explicit\nwrite-freeze acknowledgement. Reports omit secret values.\n\nOperators can export and verify R2, KV and schema-compatible session state through a separate temporary\nauthenticated Worker. Rehearse first: running work, alarms, external resources and incompatible historical\nschemas require explicit cutover handling. Keep both stacks offline during the final transfer and follow\nthe migration runbook before enabling the destination.\n" - filename: 2026-10-23-offline-migration.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: major\n---\n\n## Serve the API from the web origin\n\nThe API is now served only at the web application's `/api` path. Public requests route directly to the API Worker, while server-rendered pages use a private service binding. Workflow webhooks, Slack callbacks, agent URLs and OpenAPI use the `/api` base.\n\n**Breaking:** the separate `api.` hostname and the `deployment.apiFqdn` setting are removed, and configuration files that still set `apiFqdn` fail validation. Update external callers, OAuth provider callbacks, GitHub App webhooks and Slack request URLs to the `/api` base before upgrading a deployment.\n" - filename: 2026-10-23-same-origin-api.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Skip Cloudflare deploys until a fork opts in\n\nDeploy and Deploy Preview run only when the repository variable `CLOUDFLARE_DEPLOY` is `true`.\nThe public repository does not set that variable, so it does not need `CLOUDFLARE_API_TOKEN`.\n\nA fork that deploys sets `CLOUDFLARE_DEPLOY` to `true` and sets `CLOUDFLARE_API_TOKEN`.\nPut production deploy secrets in a `prod` environment limited to `master`. Only the Deploy job uses that environment.\n" - filename: 2026-10-25-cloudflare-deploy-switch.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: minor\n---\n\n## Run a local stage without an account AI Gateway\n\nSet the optional top-level `aiGatewayLayer` to `mock` in a stage configuration to answer Workers AI model calls inside the Worker. Each answer repeats the user's message. That stage does not provision an account AI Gateway, secrets store, or run token, and it does not need a Cloudflare API token for model calls. Use it only for local testing. Omit the field or set it to `live` for every deployed stage.\n" - filename: 2026-10-27-mock-ai-gateway-layer.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Select end-to-end test models with shared settings\n\nEnd-to-end checks read the decision model from `E2E_DECISION_MODEL` and the language\nmodel from `E2E_LANGUAGE_MODEL`. CI reads both from SolZeroAI organization Actions\nvariables. Without them, local runs use Cloudflare Clef and Claude Haiku 5.5 through the\naccount's default AI Gateway. Third-party models such as Claude Haiku bill through\nCloudflare Unified Billing.\n" - filename: 2026-10-28-e2e-shared-models.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Build agent container images with each release\n\nThe OpenCode, Codex and Claude Code agent containers now use images built from the same commit as\nthe release. Each release pushes its images to GHCR with the release tag, and the alchemy.new\npackage deploys those exact images. A deploy from a git checkout builds the images from\n`packages/agent-container/Dockerfile` and rebuilds them only when that source changes, so Docker\nmust run during the deploy. The repository no longer stores image digests.\n" - filename: 2026-10-29-agent-image-digests.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Run Workers AI models through the Agents SDK provider\n\nIsolate sessions now reach Workers AI models through `createAI` from the Cloudflare Agents SDK (`agents` 0.30) instead of the deprecated `workers-ai-provider` package. The Think runtime moves to 0.20. Model selection, reasoning effort, and the deployment's AI Gateway stay the same. No operator action is required.\n" - filename: 2026-10-29-agents-createai.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Declare 201 Created for new API keys\n\nThe OpenAPI document now lists `201 Created` for `POST /auth/api-keys`, which matches what the API already returns. The API Keys, ContextForge token, and Data Controls settings now use the typed API client.\n" - filename: 2026-10-29-api-key-created-status.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Keep Cloudflare credentials in organization secrets\n\n`nub run github:sync-env-secrets` no longer uploads `CLOUDFLARE_ACCOUNT_ID` or\n`CLOUDFLARE_API_TOKEN`. SolZeroAI holds them as organization Actions secrets, and a repository\nor Environment copy would override them. A fork that deploys sets these two secrets itself.\n" - filename: 2026-10-29-org-cloudflare-secrets.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Keep interleaved reasoning when saving custom providers\n\nSaving provider settings no longer drops a custom model's `interleaved` reasoning setting. The OpenAPI contract for `/providers` now lists the shared provider override and custom provider fields, the allowed reasoning efforts, and interleaved reasoning, instead of open JSON records. The web app loads and saves provider settings through the typed API client.\n" - filename: 2026-10-29-provider-contract.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Describe repository responses in the API contract\n\nThe OpenAPI document now describes each repository that `GET /repos` returns, with its permissions and stored metadata. The repository metadata endpoints describe the metadata fields. The web app reads repositories through the typed API client.\n" - filename: 2026-10-29-repos-contract.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Show archived chats again\n\nThe Data controls settings page lists archived chats again. The `GET /sessions` contract now describes the response that the Worker sends: `sessions`, `total`, and `hasMore`. The contract no longer declares `limit` and `offset`, which the Worker never sent.\n" - filename: 2026-10-29-session-list-contract.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Describe session list rows in the API contract\n\nThe OpenAPI document now describes each session that `GET /sessions` returns. A failure that a session returns now carries the typed error fields (`_tag` and `message`) beside `error`, so API clients read its message. The agents table and the archive action use the typed API client.\n" - filename: 2026-10-29-session-list-items.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Use the typed API client for session page actions\n\nThe session page's archive, unarchive and agent tools actions, and the tools dialog's MCP Context Forge and AI Search lists, now use the typed API client. A failed action shows the server's error message. The unused `BackgroundSessionsClient` module is removed from the web app.\n" - filename: 2026-10-29-session-page-actions.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Use the typed API client for session prompts and socket tokens\n\nThe session page and home page send queued prompts, Okta resumes and websocket token requests through the typed API client. A failed prompt now shows the server's error message instead of the raw response body. Streamed isolate prompts still use `fetch`, because the API contract declares only the queued reply.\n" - filename: 2026-10-29-session-prompt-client.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Name the error type in API error responses\n\nAPI error responses now include `_tag` (for example `NotFoundError`) and `message` beside the existing `error` field, so typed clients built from the published OpenAPI contract can decode them. The `error` field is unchanged. The web app now loads and saves secrets through that typed client.\n" - filename: 2026-10-29-typed-api-errors.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Describe workflows, runs and run events in the API contract\n\nThe OpenAPI document now describes each workflow, run and run event that the workflow routes return, and the manifest migration that a workflow save applies. The workflows page loads, saves, renames, enables, disables, deletes and runs workflows, and reads runs and run events, through the typed API client. A failed request shows the server's error message.\n" - filename: 2026-10-29-workflow-contract.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Describe workflow Slack apps and builder drafts in the API contract\n\nThe OpenAPI document now describes a workflow's Slack app setup and the latest workflow builder draft. The Slack app dialog, the AI builder draft and run artifact previews use the typed API client, and a failed request shows the server's error message.\n" - filename: 2026-10-29-workflow-slack-draft-contract.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Load bot pages before they open\n\nThe bots list and bot detail pages load their data while the page opens, and start loading when you point at a bot link. A failed load shows the server's message with a Retry button. After you sign in, every open page loads its data again for your account.\n" - filename: 2026-10-30-bots-route-loaders.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Stop local end-to-end runs on exit without crash recovery\n\nEnd-to-end runs are local only, so the test launcher no longer keeps process journals or recovery receipts. When e2e stops the app target, the target stops `alchemy dev`, removes the run's labelled Docker containers and images, and removes its run directory.\n\nThe `test:e2e:cleanup` and `test:e2e:lifecycle` scripts, the lifecycle test suite, and the `e2e_lifecycle` input of `Validate` are removed. After a SIGKILL, stop leftover processes by hand.\n" - filename: 2026-10-30-e2e-stop-on-exit.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: minor\n---\n\n## Deploy pull request previews on demand\n\nOn a fork that sets `CLOUDFLARE_DEPLOY`, a pull request no longer deploys a `pre-` preview stage on every push. Add the `preview` label to deploy one. Later pushes redeploy it while the label stays. Remove the label or close the pull request to destroy the stage.\n\nThe new `PR Preview` workflow owns these stages. Fork operators must enable it on their Actions page and create the `preview` label. To destroy an orphaned stage, use **Run workflow** on `PR Preview` and enter the `stage`. **Run workflow** on `Deploy Preview` now only refreshes standing `pre`.\n" - filename: 2026-10-30-on-demand-pr-previews.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Load settings panes before they open\n\nThe agent skills, data controls and API access settings load their data while the page opens. A failed load shows the server's message with a Retry button.\n" - filename: 2026-10-30-settings-route-loaders.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Simplify PR preview cleanup\n\nPR preview cleanup no longer captures, uploads or restores ownership artifacts. After the destroy, it checks by stage name that no Worker, Durable Object namespace, container application, D1 database, R2 bucket, KV namespace, workflow, AI Gateway, API token, provider-key secret or AI Search namespace of the stage remains.\n" - filename: 2026-10-30-simplify-preview-cleanup.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Load workflows before the page opens\n\nThe workflows page loads the workflow list, and the workflow that the link opens, while the page opens. A failed list load shows the server's message with a Retry button.\n" - filename: 2026-10-30-workflows-route-loader.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Run CI on GitHub-hosted runners by default\n\nThe workflow templates now default to GitHub-hosted `ubuntu-latest` runners. A fork that does not set the `S0_CI_RUNNER` repository variable now runs its deployment and validation jobs on `ubuntu-latest`. The Release and Tegami jobs also run on `ubuntu-latest`. To run deployment and validation on another runner, set `S0_CI_RUNNER` to that runner's label.\n" - filename: 2026-11-02-github-hosted-ci.md - v: 0.0.0 - - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Deploy with Alchemy 2.0.0-beta.84 and Effect 4.0.5\n\nDeploys use Alchemy 2.0.0-beta.84 with its `@alchemy.run/cloudflare` and `@alchemy.run/planetscale` provider packages, and Effect 4.0.5. Operator deploys no longer apply `patches/alchemy@2.0.0-beta.81.patch`.\n\n`alchemy-planetscale-logical-db` 2.1.0 still imports the old `alchemy/Planetscale` path. A patch maps that import to `@alchemy.run/planetscale` until a fixed release is published.\n" - filename: 2026-11-03-alchemy-beta-84.md + - content: "---\npackages:\n release:solzero:\n type: patch\n---\n\n## Complete manual test-recording refreshes\n\nSuccessful manual validation runs now execute the requested recording-commit step when release\ndetection is skipped. Failed or cancelled tests cannot publish recordings.\n" + filename: 2026-11-09-commit-manual-test-recordings.md v: 0.0.0 core:packages: - changelogIds: - - 2026-10-04-bot-detail.md - - 2026-10-04-codex-reasoning.md - - 2026-10-04-e2e-ai-usage.md - - 2026-10-04-e2e-gateway-lifecycle.md - - 2026-10-04-harness-bootstrap.md - - 2026-10-04-harness-follow-up.md - - 2026-10-04-isolate-output-budget.md - - 2026-10-04-opencode-cloudflare-model.md - - 2026-10-04-secret-search.md - - 2026-10-04-session-replay-idle.md - - 2026-10-04-sign-in-hydration.md - - 2026-10-04-subagent-menu.md - - 2026-10-04-workers-ai-harness.md - - 2026-10-04-workflow-export-name.md - - 2026-10-05-better-auth-1-7.md - - 2026-10-05-clean-owned-e2e-resources.md - - 2026-10-05-e2e-action-replay.md - - 2026-10-05-preserve-runtime-settings-draft.md - - 2026-10-07-ready-deploy-artifact.md - - 2026-10-23-config-profile-validation.md - - 2026-10-23-fork-configuration.md - - 2026-10-23-offline-migration.md - - 2026-10-23-same-origin-api.md - - 2026-10-25-cloudflare-deploy-switch.md - - 2026-10-27-mock-ai-gateway-layer.md - - 2026-10-28-e2e-shared-models.md - - 2026-10-29-agent-image-digests.md - - 2026-10-29-agents-createai.md - - 2026-10-29-api-key-created-status.md - - 2026-10-29-org-cloudflare-secrets.md - - 2026-10-29-provider-contract.md - - 2026-10-29-repos-contract.md - - 2026-10-29-session-list-contract.md - - 2026-10-29-session-list-items.md - - 2026-10-29-session-page-actions.md - - 2026-10-29-session-prompt-client.md - - 2026-10-29-typed-api-errors.md - - 2026-10-29-workflow-contract.md - - 2026-10-29-workflow-slack-draft-contract.md - - 2026-10-30-bots-route-loaders.md - - 2026-10-30-e2e-stop-on-exit.md - - 2026-10-30-on-demand-pr-previews.md - - 2026-10-30-settings-route-loaders.md - - 2026-10-30-simplify-preview-cleanup.md - - 2026-10-30-workflows-route-loader.md - - 2026-11-02-github-hosted-ci.md - - 2026-11-03-alchemy-beta-84.md + - 2026-11-09-ai-search-built-in-storage.md + - 2026-11-09-commit-manual-test-recordings.md id: release:solzero updated: true diff --git a/CHANGELOG.md b/CHANGELOG.md index df1af42..41f3c57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ +## solzero@3.0.0 + +### Upload documents directly to AI Search + +AI Search sources now use built-in storage. Administrators can upload and delete documents and +inspect indexing status without an external-storage service token. Workflows can ingest text and +JSON with the new Upload to AI Search node. + +R2 and website source creation is removed. Existing source records and original content remain +intact and are marked as requiring migration; these sources are unavailable for retrieval until +operators copy their originals into new built-in sources and update their selections. Follow +`docs/ai-search.md` before cutover. Deployment does not copy or delete legacy content. Workflow +artifact and skill storage remain unchanged. + +### Complete manual test-recording refreshes + +Successful manual validation runs now execute the requested recording-commit step when release +detection is skipped. Failed or cancelled tests cannot publish recordings. + ## solzero@2.0.0 ### Open created bot details diff --git a/VERSION b/VERSION index 227cea2..4a36342 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.0.0 +3.0.0 diff --git a/docs/solzero-release-notes.png b/docs/solzero-release-notes.png index 48e688a..4edcf66 100644 Binary files a/docs/solzero-release-notes.png and b/docs/solzero-release-notes.png differ