Repository navigation
Releases: discobox-ai/discobox
Releases · discobox-ai/discobox
Release list
v0.19.0-rc.3
What's Changed
- feat: a pool keeps snapshots of provisioned boxes as a cache by @ibuildthecloud in #336
- fix(endpoint): sign the iroh peer certificate on every dial, not once per process by @ibuildthecloud in #337
- docs(adr): propose that a pool pulls a cached source first by @ibuildthecloud in #338
- fix(sandbox-agent/boot): keep a data volume's bind or overlay layout across boots by @ibuildthecloud in #340
- docs(adr): propose that a VM pool bootstraps its own agent from a bundle by @ibuildthecloud in #344
- feat!: retire harness images; every box applies its bundles by @ibuildthecloud in #345
- feat(cli): one spelling per command, run SOURCE, and uncommitted work only when asked by @ibuildthecloud in #346
- feat(console): run a pull request's files changed as discobox-review in its discobox by @ibuildthecloud in #348
- feat(providers): the vm pool runtime provider skeleton by @ibuildthecloud in #132
- feat: reach a pool through a TLS-terminating edge over wss tunnels with mTLS inside by @ibuildthecloud in #349
- feat(pool-agent): the pool-agent bundle and its install command by @ibuildthecloud in #350
- feat(pool-agent): the machine provisioner places a tree and runs one command by @ibuildthecloud in #351
- fix(tui): archiving from a run window's workspace closes the window by @ibuildthecloud in #352
- docs: nothing places the pool-agent bundle yet by @ibuildthecloud in #353
- feat(cli): one DISCOBOX, a command after --, and one type per flag value (#342) by @ibuildthecloud in #354
- feat(judge): a command is judged knowing the discoboxes it names by ID by @ibuildthecloud in #355
- fix(sandbox-agent): a revived terminal runs the sandbox's harness, not its record's by @ibuildthecloud in #357
- feat(sandbox): allow changing a stopped sandbox's harness by @ibuildthecloud in #358
- feat: provision pools and sandboxes from ordered bundles by @ibuildthecloud in #361
- chore(deps): bump watchnbuild by @ibuildthecloud in #359
- docs(adr): propose source upstream and fork policy bindings by @ibuildthecloud in #362
- fix(sandbox-agent): inject secret env into every exec by @ibuildthecloud in #363
- fix(cli): make command separators optional by @ibuildthecloud in #364
- fix(termpane): preserve Ctrl+/ as a control byte by @ibuildthecloud in #366
Full Changelog: v0.19.0-rc.2...v0.19.0-rc.3
v0.19.0-rc.2
v0.19.0-rc.1
What's Changed
- feat: a terminal's status is what its program reports over OSC 7501 by @ibuildthecloud in #240
- pi telemetry off; omp's judge answers with thinking off, proven at configure by @ibuildthecloud in #241
- feat: a discobox sleeps and wakes on its own request (ADR 26-10-16-337) by @ibuildthecloud in #243
- feat(console): color a pull request's status tag, not its whole row by @ibuildthecloud in #252
- fix(harness/claude-code): start sandboxes past the auto-mode offer by @ibuildthecloud in #251
- docs(adr): propose 26-10-16-423, a harness is a provisioning bundle by @ibuildthecloud in #253
- docs(adr): accept 26-10-16-423 and mark what it supersedes by @ibuildthecloud in #272
- feat: a project may route a provider's API through a gateway by @ibuildthecloud in #248
- feat(cli): paste images into a discobox, and dictation through Ctrl-V by @ibuildthecloud in #273
- feat(sandbox-agent): fold runc, ca-anchor, power and docker into the agent by @ibuildthecloud in #275
- feat(sandbox-agent): provision runner for a feature's idempotent typed steps by @ibuildthecloud in #277
- feat: .discobox/settings.json replaces sources.json and project.json by @ibuildthecloud in #276
- build: delete the boxd.yaml image twins by @ibuildthecloud in #278
- feat(boot): delete a conflicting account instead of renaming it by @ibuildthecloud in #274
- docs(adr): propose 26-10-20-782, access is granted as a policy decided at the network boundary by @ibuildthecloud in #279
- feat(sandbox-agent): work on boxes that are not containers by @ibuildthecloud in #281
- feat: features — opt-out, adoption, async provisioning and provision.json by @ibuildthecloud in #292
- feat: a grant carries a policy — model, validation, storage, API and variables by @ibuildthecloud in #293
- docs(adr): accept 26-10-20-782 and mark what it supersedes by @ibuildthecloud in #291
- feat: a Docker pool freezes a sleeping sandbox, and a person can suspend one by @ibuildthecloud in #300
- feat(cli/console): one memory per machine, and the last source leads by @ibuildthecloud in #304
- feat(policy): statements as sentences, parsed and formatted without loss by @ibuildthecloud in #303
- feat: build the sandbox-agent and harness images from feature definitions by @ibuildthecloud in #302
- feat: a discobox is shown its primary source and variables while it writes a policy by @ibuildthecloud in #308
- feat: a harness is a FROM scratch bundle, registered on the platform's by @ibuildthecloud in #309
- feat: render a credential policy for approval, and delegate policies within a delegation by @ibuildthecloud in #307
- feat(judge): judge a grant's commands and requests against its policy by @ibuildthecloud in #311
- feat(cli): lead the window title with the box's status on a terminal without OSC 7501 by @ibuildthecloud in #313
- feat(access): write a policy as sentences, and show it back as sentences by @ibuildthecloud in #316
- feat(server): serve bundles to pools by blob by @ibuildthecloud in #315
- feat(dockerworker): the Docker driver owns a Debian sandbox base image by @ibuildthecloud in #310
- fix: keep a sandbox's proxy record across a container replacement, and restore it on start by @ibuildthecloud in #319
- feat(secrets): an approval rule is a policy a request's policy must fall within by @ibuildthecloud in #322
- feat: serve a sandbox its pinned bundles at assets.discobox.internal by @ibuildthecloud in #323
- docs(adr): a discobox has a files API that acts as its user by @ibuildthecloud in #326
- feat(sandbox-agent): end discobox-review with a review card by @ibuildthecloud in #327
- feat(dev): build bundles without a Docker image store (#267) by @ibuildthecloud in #320
- refactor: move shared root-module packages under pkg/ by @ibuildthecloud in #329
- feat(tui): offer repair on any box but an archived one by @ibuildthecloud in #330
- feat(server): keep server.yaml's project gateways on their projects by @ibuildthecloud in #324
- feat: a pool delivers a box its platform, and the agent provisions it (#266) by @ibuildthecloud in #331
- feat: a discobox has a files API that acts as its user by @ibuildthecloud in #328
- feat(server): retire server.yaml's defaultSandboxImage with a warning by @ibuildthecloud in #333
- feat(secrets): every grant an agent takes carries a policy by @ibuildthecloud in #332
Full Changelog: v0.18.0...v0.19.0-rc.1
v0.18.0
What's Changed
- docs(adr): amend 26-10-09-106 for disco-vm's ADR 0001 and docker driver by @ibuildthecloud in #228
- feat(egress): project, pool, harness, and sandbox egress allowlists by @ibuildthecloud in #226
- Give the judge delegation and rule uses as a list, and show long uses broken up by @ibuildthecloud in #230
- feat(harness): add pi as an included harness by @ibuildthecloud in #232
- feat(sourceref): name a source one way everywhere by @ibuildthecloud in #235
- feat(dns): nested Docker containers resolve through the sandbox's stub by @ibuildthecloud in #237
- fix: boot chowns only what it creates; a sandbox container has no WorkingDir by @ibuildthecloud in #238
Full Changelog: v0.17.0...v0.18.0
v0.17.0
What's Changed
- feat(cli): every create asks where it is cut from, on one card by @ibuildthecloud in #197
- feat: --skills takes a Git repository, linked so edits can be pushed back by @ibuildthecloud in #198
- feat: approval rules answer credential requests (ADR 26-10-12-330) by @ibuildthecloud in #174
- feat(judge): tell the judge who is asking, from the control plane's record by @ibuildthecloud in #199
- feat(tui): light ready and blocked boxes in the list and the workspace header by @ibuildthecloud in #200
- fix(test): bake the keep stub's toggle into the image label by @ibuildthecloud in #207
- ci: commit-keyed caches, one go test across modules, darwin lints only darwin's packages by @ibuildthecloud in #208
- fix(pool-agent): bind the fake upstream's TCP port first and retry any UDP refusal by @ibuildthecloud in #209
- feat(console): open on the first discobox, and in the prompt only when there is none by @ibuildthecloud in #206
- refactor: delete dead code, and fail CI on new dead code with check:deadcode by @ibuildthecloud in #215
- feat(access): discobox-access audit reads the sandbox's own egress record by @ibuildthecloud in #210
- fix(server): answer accepted intent without reading after the commit by @ibuildthecloud in #214
- fix(sandbox-agent): replace an exec's runtime file whole, never in place by @ibuildthecloud in #212
- fix(server): a delegated grant ends no later than its delegation by @ibuildthecloud in #213
- fix: a pool create outlasts the pool agent being replaced under it by @ibuildthecloud in #216
- feat: a project names skills repositories every discobox is created with by @ibuildthecloud in #211
- feat: a discobox acts on any discobox in its project, and the judge decides which by @ibuildthecloud in #217
- fix(proxy): never send a sentinel the control plane could not resolve by @ibuildthecloud in #218
- feat(sandbox-agent): boot a container with systemd as PID 1 by @ibuildthecloud in #219
- feat(access): ask for credentials one use per job, its lines spelled out by @ibuildthecloud in #220
- feat(harness): add omp (oh-my-pi) as an included harness by @ibuildthecloud in #223
- feat: a secret may carry routes that every swap of it must fall on by @ibuildthecloud in #222
- feat(sandbox-agent): have reviewers read REVIEW.md notes and authors write them by @ibuildthecloud in #225
- feat(console): draw a pull request's files changed in discobox-review's window by @ibuildthecloud in #227
- feat(harness): run opencode 2 in the opencode harness by @ibuildthecloud in #231
Full Changelog: v0.16.0...v0.17.0
v0.16.0
What's Changed
- feat(skills): run a repository's own reviewers in parallel in discobox-review by @ibuildthecloud in #157
- test(sandboxes): backdate the attach-wait fixture's pool report by @ibuildthecloud in #158
- feat(cli): client.yaml defaults for discobox new's skills by @ibuildthecloud in #142
- fix(harness): tell Claude Code the discobox terminal takes hyperlinks by @ibuildthecloud in #165
- fix(tui): every card fits the window, with its answers on it by @ibuildthecloud in #164
- chore(skills): move the verify skill to .agents/skills by @ibuildthecloud in #167
- feat(tui): open a discobox's pull request as a workspace tab, and merge it by @ibuildthecloud in #163
- docs(adr): propose 26-10-12-330 (approval rules) and 26-10-12-669 (Jev confident refusals) by @ibuildthecloud in #168
- feat: deliver every source into a per-remote Git cache on its pool by @ibuildthecloud in #166
- build: bump Go to 1.27.1 by @ibuildthecloud in #176
- fix(server): refuse a provider type that cannot resolve, and leave no row by @ibuildthecloud in #117
- docs(adr): boxd runs the ordinary pool agent; the Docker-free one is for native hosts by @ibuildthecloud in #177
- feat: a discobox has a name that sticks, and discobox rename sets it by @ibuildthecloud in #170
- feat(cli): discobox new names the discobox it made when it exits by @ibuildthecloud in #179
- feat: read a stopped discobox from what it last posted by @ibuildthecloud in #173
- feat: repair a failed discobox with no container once, when it is used by @ibuildthecloud in #171
- fix(cli): give the autolaunched server the shell's config file and XDG dirs by @ibuildthecloud in #181
- feat(judge): Jev's confident refusal is final, and only what it is unsure of goes on by @ibuildthecloud in #172
- feat(cli): draw a discobox under the discobox that created it by @ibuildthecloud in #185
- feat(skills): orchestrate-issues triages one box per issue under a max concurrency by @ibuildthecloud in #183
- feat(sandbox-agent): have every reviewer approve, on a discobox-review that keeps an approval each by @ibuildthecloud in #187
- feat: a harness names the requests whose refusal means its login is dead by @ibuildthecloud in #189
- fix(tui): stopping the launcher's wait stops the attach under it by @ibuildthecloud in #184
- feat(cli): group the console's folders by GitHub repository, not by server by @ibuildthecloud in #190
- feat(tui): say how old the listing is once it stops keeping up by @ibuildthecloud in #191
- docs(skills): drop Copilot review from the delivery skills by @ibuildthecloud in #193
- feat(cli): list every discobox, and scope no command to a directory by @ibuildthecloud in #192
- fix(sandbox-agent): give each discobox its own nix daemon socket by @ibuildthecloud in #195
- fix(server): the server's private keys are its user's alone on Windows by @ibuildthecloud in #188
- fix: secret grants and open requests die with their box; console hides expired grants by @ibuildthecloud in #196
Full Changelog: v0.15.0...v0.16.0
v0.15.0
What's Changed
- feat(images): build the sandbox and harness images on boxd with disco-vm by @ibuildthecloud in #112
- feat(skills): develop, issue/PR box tags, and capped Copilot passes by @ibuildthecloud in #134
- feat(sandbox-agent): wait for the bootstrap instead of assuming PID 1 by @ibuildthecloud in #133
- feat(tui): drop the ready-to-apply band from the workspace by @ibuildthecloud in #136
- fix: say how far a source's clone has got while a box waits on it by @ibuildthecloud in #141
- feat: a sandbox may be created with skills by @ibuildthecloud in #140
- feat(tui): link a discobox's issue= and pr= tags to GitHub by @ibuildthecloud in #137
- test(sandboxcreate): run the stall clock tests on a synctest clock by @ibuildthecloud in #135
- fix: route Node's built-in fetch through the sandbox proxy by @ibuildthecloud in #148
- fix(execs): give the transcript logger one zstd encoder, not one per CPU by @ibuildthecloud in #145
- feat(access): tell the agent how long its grant lasts by @ibuildthecloud in #147
- feat(skills): tag a delivering box #ready or #blocked by @ibuildthecloud in #150
- perf(termpane): keep the console's scrollback as strings, not cells by @ibuildthecloud in #151
- feat(tui): open a discobox's GitHub issue as a workspace tab by @ibuildthecloud in #149
- feat(skills): tag a box #merged when its PR merges by @ibuildthecloud in #152
- feat(harness): ephemeral configure ports; Copilot browser sign-in by @ibuildthecloud in #143
- refactor(server): handlers reach the credential request status through services by @ibuildthecloud in #115
- chore(sandbox-agent): bump discobox-review to hunk-level fold and approve by @ibuildthecloud in #156
- docs(adr): propose 26-10-10-545, git reaches a pool only from a client and is cached per remote by @ibuildthecloud in #153
Full Changelog: v0.14.0...v0.15.0
v0.14.0
What's Changed
- feat(pool-agent): reach a sandbox through a dialer the runtime supplies, not a container IP by @ibuildthecloud in #77
- feat(sandbox-agent): an observation seam for ports, resource counters and idle stop by @ibuildthecloud in #83
- feat(sandbox-agent): take one revisioned runtime-config document from the pool by @ibuildthecloud in #79
- feat(layout): resolve state against a root the pool's shape picks by @ibuildthecloud in #80
- feat(sandbox-agent): a run-identity seam for a sandbox with one account by @ibuildthecloud in #87
- fix(pool-agent): explicit power on a sandbox with no container says why by @ibuildthecloud in #92
- fix(secrets): approve under a delegation that holds the uses by @ibuildthecloud in #89
- feat(proxy/bridge): dial the pool through wire, not hard-coded TCP by @ibuildthecloud in #84
- feat(pool-agent): serve a live local origin over Git HTTP, fetch-only with a ref allow-list by @ibuildthecloud in #81
- feat(server): record a platform on harness configs, sandboxes and pools, and place only on a match by @ibuildthecloud in #82
- refactor(pool-agent): Serve is handed a sandboxruntime.Runtime and calls nothing else by @ibuildthecloud in #78
- feat(execs): a sandbox without systemd supervises its own shims by @ibuildthecloud in #90
- feat(cli): top-level discobox start, stop, and restart by @ibuildthecloud in #91
- feat: judge sandbox paths by the sandbox's platform, and let new pick its pool by @ibuildthecloud in #94
- fix(proxy): drop hop-by-hop request headers before forwarding by @ibuildthecloud in #95
- feat(sandbox-agent): serve the worktree Git endpoint; the pool forwards to it by @ibuildthecloud in #96
- feat: read the harness manifest from an overlay file, and declare what a platform has by @ibuildthecloud in #98
- feat(sandbox-agent): clone and converge the sandbox's own sources from an origin URL by @ibuildthecloud in #97
- feat: the pool drives the runtime-config intake and stages nothing into sandboxes by @ibuildthecloud in #99
- feat: discobox tag sets and removes a discobox's tags from outside it by @ibuildthecloud in #102
- proxy: renew client certificates while a sandbox runs by @ibuildthecloud in #103
- feat(pool-agent): stop running git in sandbox checkouts and drop the origin bind by @ibuildthecloud in #104
- fix(pool-agent): keep a sandbox request alive so a refusal is heard by @ibuildthecloud in #110
- fix: a configure command runs once, and the stub-harness Bats suites run on a clean checkout by @ibuildthecloud in #116
- docs(adr): 26-10-09-106, disco-vm is a pool runtime and the server runs its machines by @ibuildthecloud in #109
- fix(peers): keep store.ErrNotFound behind DeletePeer's 404 by @ibuildthecloud in #113
- fix(pools): a superseded pool reconcile settles instead of backing off by @ibuildthecloud in #114
- feat(server): place by an image kind beside the platform by @ibuildthecloud in #131
- docs(adr): 26-10-09-143, a VM sandbox starts its agent when its bootstrap arrives by @ibuildthecloud in #105
Full Changelog: v0.13.0...v0.14.0
v0.13.0
v0.12.0
What's Changed
- fix(proxy): relay 304, 204, and HEAD responses without a body by @ibuildthecloud in #73
- fix(proxy): hold tunneled requests to the CONNECT host, upgrade plaintext :443 by @ibuildthecloud in #76
Full Changelog: v0.11.0...v0.12.0