Repository navigation
Releases: AI10xDev/spec
Release list
Spec v0.1.11
Source release from dev fixing Optimize's Azure Responses endpoint handling. Release versions use Git tags; package manifests remain at 0.1.0.
Changes
- Accept Azure gateway routing prefixes before
/openai/v1and/openai/v1/responses, preserving the prefix when constructing the request URL. - Retain resource-root endpoint support, Azure API-key authentication, HTTPS enforcement, credential/query/fragment rejection, and redirect prevention.
- Cover prefixed base and full Responses URLs, trailing slashes, dotenv loading, and invalid endpoints with regression tests; update endpoint and release documentation.
The commit includes the requested wording:
Optimization Button fixed error in confusion of optimization spec filepath (convergence to upper-bound limiting)
The uploaded absolute-path handoff and dotenv credential loading remain unchanged from prior releases. The convergence algorithm is unchanged; a measured plateau is not proof of an upper bound or global optimum.
Validation
- Polled the preceding spec build to terminal exit status
0. - Independently reran all 46 Python optimizer tests successfully.
- Reviewed source, tests, and documentation with no blocking findings; diff whitespace checks passed.
- Rust integration tests and backend rebuild were not run because Cargo is unavailable in this environment.
- No live SSH/model-provider call or browser suite was run for this Python-only code change.
Rebuild and restart the backend to activate its updated embedded optimizer. Unrelated output logs, session artifacts, dotenv files, and Python caches are excluded. No binary assets are attached.
Full changes: v0.1.10...v0.1.11
Spec v0.1.10
Source release from dev fixing Optimize credential loading after the v0.1.9 optimization-spec filepath fix. Release versions use Git tags; package manifests remain at 0.1.0.
Changes
- Read execution-host Responses credentials from
SPEC_AI_ENV_FILE, otherwiseKIBI_ENV_FILE, or the nearest build-project/ancestor.env, with~/code.dev/.envas the default fallback. - Preserve exported-variable precedence and resolve relative explicit dotenv paths against the discovered build project, not the uploaded optimization spec.
- Parse dotenv values as literal data without shell execution; sanitize configuration errors and avoid adding loaded credentials to the process environment or model context.
- Add regression coverage for lookup precedence, literal syntax, sanitized failures, JSON-mode isolation, and the uploaded remote-launch path; document setup and release behavior.
The commit includes the requested wording:
Optimization Button fixed error in confusion of optimization spec filepath (convergence to upper-bound limiting)
The uploaded absolute-path handoff is unchanged from v0.1.9. The convergence algorithm is unchanged; a measured plateau is not proof of an upper bound or global optimum.
Validation
- Polled the preceding spec build to terminal exit status
0. - Independently reran all 46 Python optimizer tests successfully, including the remote-launch credential regression.
- Reviewed source, test, and documentation changes with no blocking findings; diff whitespace checks passed.
- Rust integration tests and backend rebuild were not run because Cargo is unavailable in this environment.
- No live SSH/model-provider call or browser suite was run for this Python-only code change.
Rebuild and restart the backend to activate its updated embedded optimizer. Unrelated output logs, session artifacts, dotenv files, and Python caches are excluded. No binary assets are attached.
Full changes: v0.1.9...v0.1.10
Spec v0.1.9
Source release from dev fixing the Optimization Button spec filepath handoff. Release versions use Git tags; package manifests remain at 0.1.0.
Changes
- Upload the active nonempty .optim editor buffer, including unsaved changes, to a unique private file under remote ~/projects/ without saving locally.
- Pass the uploaded absolute config path directly to the optimizer while retaining the discovered build project as the execution target.
- Reject incomplete or invalid uploads without falling back to another project-root config; retain successful uploads for inspection and record their paths in reports.
- Add backend, Python, and browser regressions covering framing, validation, cancellation, recovery, and editor behavior; update workflow and security documentation.
The commit includes the requested wording:
Optimization Button fixed error in confusion of optimization spec filepath (convergence to upper-bound limiting)
The convergence algorithm is unchanged. A measured plateau is not proof of an upper bound or global optimum.
Validation
- Polled the preceding spec build to terminal exit status 0.
- 118 Rust tests, 42 Python optimizer tests, 13 frontend unit tests, and 15 focused optimizer browser tests passed.
- Python and focused browser suites were independently rerun after the build.
- Rust build, frontend production build/typecheck, formatting, Clippy with warnings denied, and diff whitespace checks passed.
- Reviewed the source/test/documentation diff; no blocking findings.
- Live SSH/model-provider integrations and the full browser suite were not exercised for this release.
Unrelated local output logs, session artifacts, and Python caches were excluded. No binary assets are attached.
Full changes: v0.1.8...v0.1.9
Spec v0.1.8
Documentation-only source release from dev, following the v0.1.7 Optimization Button filepath diagnostics fix. Runtime code and convergence behavior are unchanged. Release versions use Git tags; package manifests remain at 0.1.0.
Changes
- Clarify that the optimization project comes from the selected execution invocation, not a repository name mentioned in a build prompt.
- Explain that successful discovery followed by a missing
.optimerror requires the owner to supply the intended process and measurable objectives in the discovered project on the execution host. - Preserve fail-closed configuration selection; do not substitute unrelated configs or invent objectives.
The commit includes the requested wording:
Optimization Button fixed error in confusion of optimization spec filepath (convergence to upper-bound limiting)
That wording references the existing filepath fix. This release does not change the convergence algorithm: a measured plateau is not proof of an upper bound or global optimum.
Validation
- Polled the preceding spec build to completion: exit status 0; it made no code changes and diagnosed missing optimization configuration.
- All 38 Python optimizer tests passed in the build and in an independent review rerun.
- Reviewed the existing filepath diagnostic fix and new documentation diff; no release-blocking issues found.
- Whitespace checks passed. Rust/frontend/browser suites were not rerun for this documentation-only release. Live SSH and model-provider integrations were not exercised.
Only README.md and OPTIMIZE.md changed. Unrelated session logs, run artifacts, and Python caches were excluded and left untouched locally. No binary assets are attached.
Full changes: v0.1.7...v0.1.8
Spec v0.1.7
Patch source release from dev. Releases are versioned by Git tags; package manifests remain at 0.1.0, following the existing convention. Earlier releases and tags are preserved.
Changes
- Clarify Optimization Button spec filepath failures by reporting the discovered project, build filename, output, and invocation source even when config selection fails before optimization starts.
- Distinguish missing
.optimfiles from ambiguous candidates, list expected filename-matched paths, and identify competing candidates. - Explain that the intended config must exist on the execution host. Optimize does not save or upload local editor files or generate a default optimization process.
- Preserve config lookup precedence, fail-closed behavior, and distinct errors for nonregular config paths.
- Add regression tests and update the optimizer guide and latest-release documentation.
The commit includes the requested wording:
Optimization Button fixed error in confusion of optimization spec filepath (convergence to upper-bound limiting)
This release fixes filepath diagnostics, not the convergence algorithm. Stopping remains based on independently measured near-zero gains sustained within configured tolerances for every objective. A plateau is not proof of an upper bound, global optimum, or positive cumulative improvement. Optimization has no overall iteration or runtime cap.
Validation
- 116 Rust tests, 38 Python optimizer tests, 19 Azure launcher tests, 13 frontend unit tests, and 81 Chromium browser tests passed: 267 total.
- Rust formatting, Clippy with warnings denied, locked debug/release builds, frozen frontend installation, TypeScript checks, frontend production build, and whitespace checks passed.
- Diff review found no release-blocking issues.
- Tests use isolated local fixtures and mocked providers. Live production SSH, authenticated model execution, and real provider calls were not exercised.
Upgrade
Rebuild and restart the local Rust server, then reload the browser. Existing optimizer prerequisites and trusted-execution risks are unchanged; see OPTIMIZE.md.
Unrelated session logs and Python caches were excluded from the commit and left untouched locally. This is a source release with no uploaded binary assets.
Full changes: v0.1.6...v0.1.7
Spec v0.1.6
Patch source release from dev. Releases are versioned by Git tags; package manifests remain at 0.1.0, following the existing convention. Earlier releases and tags are preserved.
Changes
- Fix Optimization Button target discovery so durable initial-build invocation metadata takes precedence over undated, potentially stale global shell history.
- Ignore
nohup.outreferences, actual shell comments, and simple literalechoorprintfdescriptions instead of treating them as launches. - Preserve fail-closed behavior for newer unsupported invocations. Review caught and corrected cases where quoted wrappers or embedded hashes could hide a newer launch and cause an older target to be selected.
- Add Python discovery regressions and extend the real-Python Rust integration test to verify that optimization succeeds despite unrelated undated history, preserves build records, reports measured gains, and converges independently of builds.
- Update the optimizer guide and latest-release documentation.
The commit includes the requested wording:
Optimization Button fixed error in confusion of build & optimization (convergence to upper-bound limiting)
This release fixes target discovery, not the convergence algorithm. Stopping remains based on independently measured near-zero gains sustained within configured tolerances for every objective. A plateau is not proof of an upper bound, global optimum, or positive cumulative improvement. Optimization has no overall iteration or runtime cap.
Validation
- 116 Rust tests, 36 Python optimizer tests, 19 Azure launcher tests, 13 frontend unit tests, and 81 Chromium browser tests passed: 265 total.
- Rust formatting, Clippy with warnings denied, locked debug/release builds, frozen frontend installation, TypeScript checks, frontend production build, and whitespace checks passed.
- A second review of the corrected discovery filter found no remaining release-blocking issues.
- Tests use isolated local fixtures and mocked providers. Live production SSH, authenticated model execution, and real provider calls were not exercised.
Upgrade
Rebuild and restart the local Rust server, then reload the browser. Existing optimizer prerequisites and trusted-execution risks are unchanged; see OPTIMIZE.md.
Generated logs, private session artifacts, and Python caches were excluded from the commit and left untouched locally. This is a source release with no uploaded binary assets.
Full changes: v0.1.5...v0.1.6
Spec v0.1.5
Source release from commit fcb03a2 on dev. Following the existing release convention, package manifests remain at 0.1.0; this release is versioned by the v0.1.5 tag. Earlier releases and tags are preserved.
Changes
- Extend the Optimization Button for recursive improvements with free-form
.optiminstructions alongside the existing model-free JSON mode. - Plan measurable objectives through Responses using
gpt-6-sol, run focused OpenCode build-agent iterations, and review/repair results before independent measurement. - Require the planned validation/process command to succeed on the final tool state. Later tools invalidate earlier validation, and failed commands or provider requests never count as convergence.
- Supervise every command with a Linux subreaper, cleaning up detached/double-forked descendants before measuring or releasing project locks. Successful commands that leave live workers behind fail after cleanup.
- Add timestamped planning, builder, tool, validation, and measured-gain reports. Bound builder/tool output while retaining the builder's final output tail.
- Fix two review findings: UTF-8 BOM-prefixed JSON remains model-free, and JSON builder output quoting an agent-fallback warning no longer falsely fails execution. Actual stderr fallback warnings still fail the run.
- Expand the README and optimizer guide, refresh security and workspace documentation, and disclose prose-mode provider transmission in the Optimize confirmation. Document continuation, repository saving, chat/context inspection, Agent.md editing, voice providers and launcher, saved-file restoration, and accessibility.
The commit includes the requested wording:
Optimization Button for recursive improvements - and halting for marginal differences in gain...
Stopping is based on independently measured near-zero gains sustained within configured tolerances for every objective. Differences between successive gains are diagnostic: constant positive gains do not converge simply because their differences are small. A plateau is not proof of optimality or positive cumulative gain.
Validation
- 116 Rust tests, 33 Python optimizer tests, 19 Azure launcher tests, 13 frontend unit tests, and 81 Chromium browser tests passed: 262 total.
- Rust formatting, Clippy with warnings denied, locked debug/release builds, shell syntax, frozen frontend installation, TypeScript checks, frontend production build, and staged whitespace checks passed.
- The first Rust run encountered
Text file busywhile spawning an existing SSH fixture. The affected test passed in isolation and the complete Rust suite passed on rerun; the transient failure's underlying cause was not confirmed. - Browser tests ran against rebuilt assets and backend in a sanitized environment. Provider and SSH integration coverage uses mocks and isolated local fixtures; live providers, production SSH hosts, and authenticated OpenCode model execution were not exercised.
Upgrade And Safety
Rebuild/restart the local Rust server and reload the browser. Both optimizer modes require Python 3.10+ on Linux with subreaper support and readable procfs. Prose mode additionally requires authenticated OpenCode supporting run --agent build --auto --format json, plus execution-host Responses credentials and access to gpt-6-sol. The builder uses the execution host's existing provider configuration; local web-server chat/voice settings are not transferred over SSH. See OPTIMIZE.md.
Optimization has no overall iteration or runtime cap. Trusted commands and model tools can modify files, access credentials and the network, and incur provider costs. Prose mode sends project context and tool output to providers. Reports may contain sensitive data and are not automatically pruned. Budget storage and use Stop run when needed.
Cleanup protects normal completion, failure, timeout, and handled cancellation, not forced process death, hostile/privileged code, work delegated to existing services, or failed cancellation connections. Locks and model instructions are not a sandbox; verify remote state after crashes or unconfirmed cancellation.
Generated logs, private session artifacts, and Python caches were excluded from the commit and left untouched locally. This is a source release with no uploaded binary assets.
Full changes: v0.1.4...v0.1.5
Spec v0.1.4
Source release from commit f50c11d. Following the existing release convention, package manifests remain at 0.1.0; this release is versioned by the v0.1.4 tag. Earlier releases and tags are preserved.
Changes
- Add the Optimize button for recursive improvements using trusted project
.optimcommands, independent of the editor's unsaved content. - Measure signed and cumulative gains, report marginal differences, and halt when all objectives sustain near-zero gains within configured tolerances. Constant positive gains do not trigger convergence merely because their differences are small.
- Discover the latest initial build through invocation metadata or narrowly parsed history, without executing history commands.
- Persist optimization output separately from file builds, recover after reload/restart, and expose manual cancellation.
- Keep optimizer progress streaming without the ordinary build timeout or 8 MiB log cap, while retaining bounded UI and recovery responses. Preserve full optimization reports from automatic seven-day cleanup.
- Fix review findings in large-log recovery and exclusion for target projects discovered outside the configured workspace. Add regression coverage and an optimizer configuration/safety guide.
The commit includes: Optimization Button for recursive improvements - and halting for marginal differences in gain...
Validation
- 116 Rust tests, 22 Python optimizer tests, 19 launcher tests, 13 frontend unit tests, and 81 Chromium browser tests passed (251 total).
- Rust formatting, Clippy with warnings denied, locked debug/release builds, shell syntax, frozen frontend install, TypeScript checks, frontend production build, and staged whitespace checks passed.
- One existing cancellation browser check timed out on the first full run. It then passed five isolated repeats and the full 81-test rerun; the initial failure's cause was not confirmed.
- Live provider calls and production SSH hosts were not exercised. Integration tests use isolated local fixtures and the actual remote scripts.
Upgrade And Safety
Rebuild/restart the local Rust server and reload the browser. Optimization requires Python 3.10+ on the remote Linux host and a trusted project .optim file; no project objectives are bundled. See OPTIMIZE.md.
Optimization has no automatic iteration or runtime cap. Commands can modify files, use credentials, access the network, and incur costs. Budget report storage and use Stop run when needed. Plateau detection does not guarantee optimality or positive gain. Locks are advisory; confirm descendant cleanup before restarting work after an optimizer crash. Cancellation cannot be guaranteed through a broken connection: reload output and retry Stop run if remote work remains active.
Generated logs, private session artifacts, and Python caches were excluded and left untouched locally. This is a source release with no uploaded binary assets.
Full changes: v0.1.3...v0.1.4
Spec v0.1.3
Patch release from commit 8b99ee3. Earlier tags and releases are preserved. Following the existing source-release convention, package manifests remain at 0.1.0; this release is versioned by the v0.1.3 tag.
Changes
- Add SPEC_AZURE_REALTIME_ENV_FILE for a private voice-only dotenv file without replacing text-chat settings.
- Invalid Azure voice configuration now disables Azure voice with a sanitized warning instead of aborting the text server. Shared text configuration errors still fail startup.
- Add an Azure CLI launcher that retrieves voice credentials without sourcing or rewriting text settings. Existing complete voice exports and explicit voice-file selection take precedence.
- Reject partial or empty voice exports and an explicitly empty voice-file selector, preventing mixed credentials and silent voice disablement.
- Improve local setup documentation and the unconfigured Azure voice panel, including mobile coverage.
Validation
Reviewed both commits since v0.1.2. All 209 tests passed: 109 Rust tests, 19 launcher isolation tests, 13 frontend unit tests, and 68 Chromium browser tests.
Rust formatting, Clippy with warnings denied, locked debug and release builds, shell syntax checks, frontend typechecking and production build, and release-diff whitespace checks passed.
Live Azure/OpenAI calls, microphone audio with a real provider, and production SSH hosts were not exercised.
Upgrade Notes
Restart the local Rust server and reload the browser after changing voice configuration. Use an absolute path for SPEC_AZURE_REALTIME_ENV_FILE, or launch through scripts/azure-voice.bash with an existing Azure Realtime deployment. Leave text-chat settings unchanged. See docs/realtime.md for setup, precedence, and privacy details.
Generated logs and session artifacts from this work were excluded. This is a source release with no uploaded binary assets.
Full changes: v0.1.2...v0.1.3
Spec v0.1.2
Patch release from commit 8365992. Existing v0.1 and v0.1.1 tags and releases are preserved. As with v0.1.1, package manifests remain at 0.1.0; this source release is versioned by the v0.1.2 tag.
Fixes
- Azure Realtime voice now reads its dedicated configuration from the same server-side dotenv file used by session chat and ghost text.
- The nearest ancestor .env is discovered by default; SPEC_AI_ENV_FILE selects an explicit file, and exported environment variables take precedence.
- Voice credentials and deployment remain independent of text-chat settings. Configuration parsing does not mutate the process environment, and parser errors do not expose credential-bearing source lines.
- Updates setup documentation and adds regression coverage for voice-only configuration, explicit files, exported overrides, empty exports, and invalid settings.
Validation
Reviewed the complete v0.1.1-to-release diff with no blocking findings. Validated the exact release commit in an isolated worktree:
- 106 Rust tests, 13 frontend unit tests, and 68 Chromium browser tests passed (187 total).
- Rust formatting, Clippy with warnings denied, locked debug and release builds, frontend typechecking and production build, and diff whitespace checks passed.
- Browser coverage includes desktop/mobile layouts and mocked voice lifecycle flows. Live Azure/OpenAI calls and production SSH hosts were not exercised.
Upgrade Notes
Set all three AZURE_OPENAI_REALTIME_* variables in the server-side dotenv file or environment, then restart the Rust server. Use a dedicated Realtime deployment and a canonical Azure resource origin without the /openai/v1 path. See docs/realtime.md for details.
No new runtime logs or session artifacts are included in this release.
Full changes: v0.1.1...v0.1.2