Menu
Public repository / 8d41f1e10aceed387d425b43038f2070e399a349
AkurAI-Build / CHANGELOG.md
Latest change 8d41f1e10aceed387d425b43038f2070e399a349 - OLI-277: schedules, reusable workflows (include + inputs), per-repository secrets (value or PassVault), native caches by Ólafur Búi Ólafsson
# Changelog
## Unreleased
- Actions-style features (OLI-277): cron `schedules` in `.akurai.yml` (UTC, queued once per matching minute from the hosted default branch, `runs.schedule` records the expression, `GET /api/repos/{repository}/schedules`), reusable workflows through `include` (same repository at the run's commit or another hosted repository at a ref, with `${{ inputs.NAME }}` filled from `with`), per-repository secrets (`GET/PUT/DELETE /api/repos/{repository}/secrets[/{NAME}]`, stored values or PassVault entries read with `akurai-secret get` via `AKURAI_BUILD_PASSVAULT_CMD`, resolved before `AKURAI_SECRET_<NAME>`), and `cache:` for native jobs (symlinked into the repository's cache directory); migration 013
- Git parity P2 (OLI-276): Git over SSH (per-user keys at `/api/ssh-keys` and `/app/settings/ssh-keys`, a forge-owned `authorized_keys` file named by `AKURAI_BUILD_AUTHORIZED_KEYS` whose every line forces `akurai git-shell`, which allows only pack services with the Smart HTTP roles, hands the hooks their env and records last use; `AKURAI_BUILD_SSH_ADDRESS` for the clone address), forks (`POST /api/repos/{repository}/fork`, `/forks`, `/sync` fast-forwards from the upstream, forker becomes admin) and mirrors (`POST /api/mirrors`, synced every ten minutes), cross-repository code search through akurai-index (`GET /api/search`, `/app/search`, `AKURAI_BUILD_INDEX_URL` + `AKURAI_BUILD_INDEX_TOKEN_FILE`, filtered to readable repositories) and repository insights (`GET /api/repos/{repository}/insights`, Insights tab, public page for public repositories); migration 012
- Fixed: pull requests looked for hosted repositories in the data root instead of `hosted/`, so every live pull request was refused as "not hosted"
- Notifications (OLI-275): a per-user feed and page (`/app/notifications`, `/api/notifications`) for review requests (pull requests take `reviewers`), submitted reviews, merged pull requests and failed runs, mailed once through `AKURAI_BUILD_MAIL_CMD`; migration 011
- Issue linking (OLI-274): commits and pull requests mentioning a Paperclip issue (`OLI-123`, `fixes OLI-123`) get a comment on that issue linking back to the forge, once per object; no labels or milestones on the forge by decision; `AKURAI_BUILD_PAPERCLIP_URL` and `AKURAI_BUILD_PAPERCLIP_TOKEN_FILE`; migration 010
- Tags and releases (OLI-273): tags listed from the repository, releases per tag with notes and run artifacts attached as downloadable assets, a releases page (public and signed-in) linked from the repository pages; migration 009
- Outbound webhooks (OLI-272): per-repository subscriptions to `push`, `pull_request` and `run` events, signed deliveries (`X-AkurAI-Signature-256`, HMAC-SHA256), a delivery log with retries and backoff, redelivery, and a `post-receive` hook that reports pushes; migration 008
- Branch protection (OLI-270): per-branch rules (`GET/PUT /api/repos/{repository}/protection`, `DELETE …/protection/{branch}`), a `pre-receive` hook installed in every hosted repository that asks `POST …/protection/check` per ref update (fails closed), the default rule (no force-push, no delete) seeded for every default branch, and the pull-request merge refusing when the base branch requires a green run or an approved review; migration 007
- Users, collaborator roles, deploy keys and scoped PATs (OLI-271): Smart HTTP accepts personal access tokens and deploy keys (Bearer or git Basic), reads need `read` and pushes `write` on the repository, `REMOTE_USER` reaches the hooks; routes for collaborators per repository, PATs for the signed-in IdP user (or a subject with the controller token) and deploy keys per repository; tokens are capped by the holder's role, expire within a year and are revocable (`access.rs`, migration 006)
- Commit history, commit diff, compare and blame: `GET /api/repos/{repository}/commits[/{sha}]`, `/compare/{base}...{head}`, `/blame?ref=&path=`, plus server-rendered pages at `/repos|/app/repositories/{repository}/commits/{ref}`, `/commit/{sha}`, `/compare/{a}...{b}`, `/blame/{ref}/{path}` (OLI-268)
- Delete repositories over HTTP: `DELETE /api/repos/{repository}?confirm={repository}` removes the rows (one transaction), hosted bare repository, browse mirror, and run artifact/workspace directories, and is refused while a run is queued or running; `akurai_repo_remove` shares the same path
- Fix `GET /api/state` without `?repo=` failing with "too many repository filters" once more than 32 repositories are registered: visibility is now a `public_only` run-query predicate instead of an enumerated name list
## 1.4.9 - 2026-07-19
Install the shared non-secret health manifest through the protected Build service deployment while keeping the worker credential mount read-only.
## 1.4.8 - 2026-07-19
Keep worker-image changes on MCP-controlled pipeline surfaces, remove the unnecessary EC2 source mount, and register PassVault in the shared production health sweep.
## 1.4.7 - 2026-07-19
- Mount the maintained AkurAI-EC2 CLI source into the worker so approval-gated application deploy jobs can resolve the host-installed CLI symlink
## 1.4.6 - 2026-07-19
- Complete branded not-found negotiation for authenticated code browsing and align responsive code-browser path and layout behavior
- Reconcile the worker table to the configured worker count on executor startup, pruning stale rows left by an earlier multi-worker configuration
## 1.4.5 - 2026-07-18
- Repair the live Build worker's `bunx` alias during protected service deployment while the next worker image preserves it permanently
## 1.4.4 - 2026-07-18
- Install self-deployed MCP and CI helpers into the worker's host bind instead of its isolated job home
## 1.4.3 - 2026-07-18
- Return exact branch-head SHAs and add bounded repository blob reads to the MCP control plane
- Install the packaged stdio MCP binary and Bun-compatible `bunx` helper through the protected self-pipeline
## 1.4.2 - 2026-07-17
- Add branded content-negotiated not-found pages, shared responsive public navigation and wordmark, compact code browsing, and meaningful directory sizes
## 1.4.1 - 2026-07-17
- maintenance release
## 1.4.0 - 2026-07-17
- Keep controller, worker, changelog, and host MCP release identities synchronized to one version and commit
- Add the `akurai_release` MCP tool: the single maintained release path for every product — bump the version (VERSION, Cargo.toml, package.json, manifest `stamp` files), cut the changelog's Unreleased section into a dated entry, commit + tag only the release bookkeeping in the trusted checkout, sync the hosted mirror, and queue the pipeline run for the release commit
- Complete the Build UI audit wave with canonical clone URLs, public/private code browsing, paginated run history, accessible details, responsive data views, CSP-clean rendering, and one repository registration surface
- Add approval-gated self-host service deployment that consumes the packaged binary, sends a bounded Docker context, atomically swaps only the HTTP service container, and rolls back on failed health
## 1.3.5 - 2026-07-16
- Redirect sign-in requests straight to AkurAI Auth, then return authenticated users to their workspace
- Make hosted Git synchronization and MCP-controlled CI/CD the canonical agent deployment workflow
## 1.3.4 - 2026-07-16
- Add a public AkurAI Build documentation route with Framework-style navigation and responsive layouts
- Replace the inherited Bunfork overview with the actual repository, pipeline, artifact, MCP, release, and security contracts
## 1.3.3 - 2026-07-16
- Redesign the public homepage around a GitHub-inspired product and community hierarchy
- Rank public repositories by real build activity and group their public source owners
- Accept process-server readiness logs from either output stream in HTTP integration checks
## 1.3.2 - 2026-07-15
- deploy.sh publish: sync the self-hosted mirror through the akurai_repo_sync MCP tool
## 1.3.1 - 2026-07-15
- Replace the JSON CLI with a full read/write MCP tool set
## 1.2.1 - 2026-07-14
- Host authenticated Git repositories over Smart HTTP with repo host/sync CLI
## 1.1.9 - 2026-07-12
- Enable verified ARM64 builds and reusable binary caches
## 1.1.8 - 2026-07-12
- Preserve non-root cache mount ownership
## 1.1.7 - 2026-07-12
- Pin actual Rust 1.97 build toolchain
## 1.1.6 - 2026-07-12
- Simplify self-hosted Rust container validation
## 1.1.5 - 2026-07-12
- Isolate build caches and bootstrap pinned CI tools
## 1.1.4 - 2026-07-12
- Run controller with Docker group and pin CI toolchain
## 1.1.3 - 2026-07-12
- Add bounded agent wait and readiness recovery
## 1.1.2 - 2026-07-12
- Harden deployment and edge diagnostics
## 1.1.1 - 2026-07-11
- Establish AkurAI Build from the Bunfork foundation with Git CI/CD, Docker matrices, encrypted state, artifacts, protected deployments, MiniJinja UI, agent skill, and managed Titan/EC2 deployment.