Skip to content

v0.9.7

Latest

Choose a tag to compare

@G4614 G4614 released this 01 Jul 12:24
8803834

What's Changed

  • fix(guest): exec timeout watcher must SIGKILL, not SIGALRM by GHSA-xjhv-pp2r-6f82 by @G4614 in #543
  • chore(deps): bump github.com/go-git/go-git/v5 from 5.19.0 to 5.19.1 in /apps/daemon in the go_modules group across 1 directory by @dependabot[bot] in #553
  • feat(auth): REST identity via BoxliteRuntime::auth() handle by @DorianZheng in #554
  • chore(make): workspace-wide apps targets + drop yarn-lock-sync hook by @DorianZheng in #556
  • feat(serve): optional exact-key auth for serve + reference-server by @DorianZheng in #557
  • fix(test-python): use shared_runtime fixture to avoid BOXLITE_HOME flock collision by @G4614 in #560
  • test(security): Node + Go regression parity for GHSA-g6ww + GHSA-f396 by @DorianZheng in #558
  • refactor(logging): executable-owned subscriber + layered CLI sink by @DorianZheng in #562
  • feat(api-key): Stripe-style {prefix}{class}{base62(32)}{crc6} format by @DorianZheng in #559
  • chore(infra): track .env.example for stack setup by @DorianZheng in #566
  • feat(auth): URL prefix authoritative + OIDC device flow by @DorianZheng in #581
  • chore(workspaces): track empty CLAUDE.md placeholders across the tree by @DorianZheng in #583
  • chore(deps): bump rusqlite 0.37 -> 0.39 by @DorianZheng in #582
  • chore(deps): bump the npm_and_yarn group across 2 directories with 2 updates by @dependabot[bot] in #569
  • chore(deps): bump github.com/boxlite-ai/boxlite/sdks/go from 0.8.2 to 0.9.0 in /apps/runner in the go_modules group across 1 directory by @dependabot[bot] in #570
  • fix(quality): lint:python tomllib check works on Python 3.10 by @G4614 in #574
  • fix(security): paired redaction — stop CA key/secret leaks via trace! + Debug by @G4614 in #575
  • fix(auth): treat empty BOXLITE_API_KEY as unset in auth status by @G4614 in #577
  • ci(e2e): auto-evict caches at >=80% root use instead of hard-fail by @DorianZheng in #584
  • feat(rest): typed error→HTTP mapping with snake codes + request-id by @DorianZheng in #585
  • fix(recovery): PID-fingerprint identity + crash-aware attach pipeline by @DorianZheng in #590
  • tiny(test-auth): drop stale period in status "Not logged in" assertion by @G4614 in #598
  • chore(claude): add CLAUDE.md preflight hook + auditor subagent by @DorianZheng in #599
  • docs: correct BoxOptions::detach contract + restore two-side test rule by @DorianZheng in #601
  • fix(spawn): set session leader for detached, own pgroup for non-detached by @DorianZheng in #602
  • chore(claude): add PR-review acknowledgment PreToolUse hook by @DorianZheng in #603
  • test(test-utils): PerTestBoxHome::Drop fails loudly if a shim is still alive by @DorianZheng in #604
  • fix(test): add missing .clone() in image_registries test after #604 by @G4614 in #606
  • fix(images): defer dir chmod across layers to fix overwrite EACCES by @DorianZheng in #607
  • fix(setup): install cmake for C SDK test harness by @DorianZheng in #609
  • fix(make): propagate test failures instead of masking via POSIX ; chaining (#550) by @G4614 in #587
  • test(health_check): explicit stop() for the healthy-box test by @G4614 in #615
  • fix(runner): roll back SignaledHUP/TERM when SDK signal delivery fails by @G4614 in #600
  • fix(libcontainer): bump to youki rev — InitReady race + per-exec mount leak by @G4614 in #611
  • [urgent] fix(guest): declare terminal=true for TTY execs (libcontainer 0.6 check_terminal) follow-up #611 by @G4614 in #625
  • fix(test:apps): inject boxlite_dev tag via GOFLAGS for apps Go tests (#579) by @G4614 in #589
  • fix(net): surface gvproxy bind errors through FFI by @G4614 in #612
  • fix(disk,runtime): cross-filesystem-safe clone/snapshot moves (EXDEV fallback) by @G4614 in #624
  • fix(cli): preserve profile path_prefix when BOXLITE_API_KEY is set by @G4614 in #629
  • fix(api): source /v1/me expires_at from ApiKey.expiresAt (P1-2) by @lilongen in #649
  • Configure CLA Assistant by @DorianZheng in #650
  • chore(deps-dev): bump the npm_and_yarn group across 2 directories with 1 update by @dependabot[bot] in #644
  • feat: upgrade MiniMax default model to M3 by @octo-patch in #643
  • docs: add communication rules to CLAUDE.md by @DorianZheng in #653
  • infra: configurable pgAdmin exposure (secure default) + tiered .env.example by @DorianZheng in #661
  • feat(infra): RUNNERS-count multi-runner provisioning by @DorianZheng in #664
  • fix qcow2 backing and container status checks by @GatewayJ in #525
  • fix(cli): stop box before hard-exit on non-zero run exit code by @G4614 in #622
  • test(sdk-typescript): pass jest target when no test files exist by @G4614 in #617
  • test-stress(disk-guest): box rootfs is a bounded, isolated disk that survives a fill by @G4614 in #623
  • test(cli): box lifecycle journey suite — surfaces logs/stdout gap by @G4614 in #630
  • fix(cli): read stdin on a dedicated OS thread so TTY exec exits without a stray ENTER by @G4614 in #626
  • fix(api): anchor OIDC-created user's Personal org to the default region by @lilongen in #668
  • fix(api): reject undersized box resources at the create boundary by @lilongen in #662
  • fix(runner): pull snapshot layers for the host arch, not hardcoded amd64 by @lilongen in #671
  • ci: prep test/lint workflows for a merge queue by @DorianZheng in #677
  • ci: run test/lint on every PR so required conclusion checks always report by @DorianZheng in #679
  • test(e2e): SDK→API→Runner→VM regression suite by @G4614 in #678
  • fix(disk): build ext4 rootfs from trees with unreadable (0000) files by @DorianZheng in #697
  • chore(codeowners): map subsystem ownership to maintainers/builder teams by @DorianZheng in #704
  • docs(readme): add BoxLite logo banner by @law-chain-hot in #707
  • test(e2e): add error-mapping, quota, runner-concurrency cases (xfails pin known bugs) by @G4614 in #683
  • fix(rest): extract uploaded tar before CopyInto in runner file upload by @G4614 in #688
  • fix(rest): copy_out single-file mode writes at host_dst, not inside it by @G4614 in #692
  • ci(codeql): switch to advanced setup so fork PRs are scanned by @DorianZheng in #708
  • refactor: rename Sandbox -> Box (Part 1: apps/api epicenter) by @law-chain-hot in #706
  • fix(apps): repair ESLint flat config lint by @law-chain-hot in #713
  • fix(go-sdk): fold stream drain into Execution.Wait (os/exec io.Writer case) by @G4614 in #563
  • chore(apps): restore Daytona API-client regen machinery + regenerate clients by @DorianZheng in #716
  • chore(deps): bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in #717
  • docs(cli,daemon): regenerate cobra docs and toolbox swagger after rename by @DorianZheng in #718
  • fix(api,e2e): finish Sandbox → Box rename — 3 schema gaps + fixture column names by @G4614 in #720
  • chore(apps): rename analytics-api-client Sandbox -> Box via in-repo swagger spec by @DorianZheng in #721
  • test(e2e): add cli-detach-recovery, exec-attach, volume-readonly cases by @G4614 in #710
  • feat(infra-local): BoxLite-based local dev stack (L1 + L2 + M5 native runner) by @lilongen in #595
  • chore(apps,e2e): sweep Sandbox→Box rename leftovers — regen toolbox client, fix dead env vars + stale refs by @DorianZheng in #723
  • Converge A2 + MVP box journey into main (super PR — review & split) by @law-chain-hot in #715
  • chore(apps): regenerate API clients against merged API surface (#715 follow-up) by @DorianZheng in #726
  • chore(apps): adapt cli, dashboard, sdk-typescript to the regenerated API clients by @DorianZheng in #727
  • chore(apps): remove the Go CLI (apps/cli) by @DorianZheng in #728
  • fix(exec): preserve UTF-8 codepoints split across attach chunks by @ldarren in #665
  • [codex] Fix dashboard box API contract drift by @law-chain-hot in #729
  • [codex] Normalize monorepo Docker build paths by @law-chain-hot in #730
  • fix(apps): vend box S3 credentials from the ECS task role, not a static IAM user by @DorianZheng in #732
  • fix(build): repair #715 runner build break and org test mock by @law-chain-hot in #734
  • chore(db): squash pre-launch migrations into baseline by @law-chain-hot in #736
  • chore(deps): bump @grpc/grpc-js from 1.14.3 to 1.14.4 in /apps in the npm_and_yarn group across 1 directory by @dependabot[bot] in #740
  • fix(sdk): make boxlite_options_add_port carry the full PortSpec by @DorianZheng in #741
  • fix(runtime): BoxSockets — bind box sockets via short /tmp symlinks (sun_path) by @DorianZheng in #742
  • chore(apps): remove TypeScript cloud SDK (re-apply #738 onto main) by @law-chain-hot in #743
  • Revert "chore(apps): remove TypeScript cloud SDK (re-apply #738 onto main)" (#743) by @law-chain-hot in #751
  • feat(box): restore image-keyed warm-pool reuse and boot path by @DorianZheng in #755
  • refactor(box): drop the dead userId field from the runner payload by @DorianZheng in #757
  • feat(box): restrict box creation to the supported pinned images by @law-chain-hot in #758
  • fix(runner): drop dead-on-arrival toolbox HTTP readiness check by @G4614 in #754
  • chore(dashboard): delete dead Playground and VNC UI by @law-chain-hot in #760
  • chore(ci): rename e2e-test workflow and label to e2e-local by @DorianZheng in #764
  • refactor(dashboard): route box lifecycle through Box API by @law-chain-hot in #761
  • fix(api): validate Box API network allowlist by @law-chain-hot in #775
  • refactor(api): remove deprecated box-operation surfaces by @law-chain-hot in #762
  • [codex] Unify SST service Docker path roots by @law-chain-hot in #780
  • fix(seatbelt): narrow macOS sandbox write grants under built-in profile by @G4614 in #781
  • [codex] Fix API image production build blockers by @law-chain-hot in #782
  • [codex] Fix API runtime proxy dependency by @law-chain-hot in #787
  • chore(infra-local): consolidate local-stack state into .apps-local/ + modernize for post-squash schema by @DorianZheng in #789
  • chore(infra-local): drop dead DYLD/snapshot config + pin boxlite CLI … by @DorianZheng in #790
  • feat(cli): expose --disk-size / --network / --entrypoint flags by @G4614 in #620
  • fix(infra): lock down service exposure, runner SG/IMDS, and API CORS by @DorianZheng in #793
  • Add supported box image picker by @law-chain-hot in #792
  • fix(infra): harden control-plane durability, deploy safety, config hygiene by @DorianZheng in #794
  • Use public curated image tags by @law-chain-hot in #795
  • refactor(infra-local): simplify + unify into one Python compose package (~50% smaller) by @DorianZheng in #796
  • chore(deps-dev): bump vite from 8.0.5 to 8.0.16 in /apps in the npm_and_yarn group across 1 directory by @dependabot[bot] in #797
  • Use cloud Box ID as primary identity by @law-chain-hot in #800
  • feat(dashboard): same-origin /api proxy for local dev against any API env by @law-chain-hot in #799
  • fix(infra-local): register the CLI auth-login loopback redirect URI in dex by @DorianZheng in #805
  • fix(cli): surface cloud-exec stream failures instead of silent success by @DorianZheng in #804
  • fix(dashboard): recover from a 401 by bouncing to a fresh login by @DorianZheng in #806
  • test(e2e): bring Tokyo e2e suite to green (split from #724) by @G4614 in #810
  • fix(api/box): reject per-box cpu/memory/disk over the org limit by @G4614 in #811
  • feat(infra): sst.Secret + SSM for team secret management by @DorianZheng in #814
  • feat(dashboard): box table cleanup — drop region, tighten density, full image refs in onboarding by @law-chain-hot in #803
  • feat(api): WS attach accepts OIDC JWTs, not just API keys (closes #807) by @DorianZheng in #809
  • chore(deps): bump the npm_and_yarn group across 1 directory with 6 updates by @dependabot[bot] in #815
  • feat(infra): name default runner boxlite-runner-default, fix extra-runner tags by @DorianZheng in #819
  • fix: re-PR functional bits of #808 against main (stopped-box exec 409 + per-platform pull ref) by @G4614 in #821
  • test: add REST API E2E auth matrix and coverage tooling by @G4614 in #746
  • feat(security): default sandbox on + expose SecurityOptions to CLI/Go/C (REST stays server-policy-only) by @G4614 in #652
  • fix(api): transfer non-JSON runner response to standard JSON format by @G4614 in #824
  • chore(deps): bump the npm_and_yarn group across 1 directory with 4 updates by @dependabot[bot] in #830
  • chore(deps): bump the npm_and_yarn group across 1 directory with 4 updates by @dependabot[bot] in #831
  • docs(ci): add e2e-local CI runbook, de-stale workflow docs by @DorianZheng in #835
  • docs: add failure-class sweep principle to CLAUDE.md by @DorianZheng in #838
  • fix(guest): reset SIGPIPE to SIG_DFL for container execs so a closed-pipe consumer no longer hangs the exec by @G4614 in #774
  • dashboard: mobile adaptation + restore web terminal + env-aware API URL by @law-chain-hot in #840
  • test: add API stress tests by @G4614 in #823
  • fix(api): auto-reconcile v2 boxes stuck in ERROR back toward STARTED by @G4614 in #573
  • fix(runtime): rebuild invalid guest rootfs overlay by @G4614 in #578
  • fix(jailer): unblock the default sandbox (drop host-side Landlock + bind box/bin) by @G4614 in #681
  • chore(release): bump version to 0.9.7 by @DorianZheng in #844
  • dashboard: 6 UI/UX fixes (status colors, stat refresh, action transition, mobile, loader) by @law-chain-hot in #845
  • dashboard: hide table columns, drop terminal paste button, loading typewriter dots by @law-chain-hot in #847
  • fix(images): fail closed on DiffID/layer count mismatch by @G4614 in #772
  • fix(jailer): set LD_LIBRARY_PATH in bwrap sandbox so the shim can dlopen libkrunfw by @G4614 in #846
  • fix(rest): client-initiated WS keepalive for idle cloud exec sessions (POL-120) by @DorianZheng in #852
  • fix(jailer): skip --die-with-parent for detached boxes by @G4614 in #851
  • test(cli): avoid fixed publish ports by @G4614 in #854
  • fix(jailer): bind /etc/resolv.conf so allow_net DNS works under the sandbox by @G4614 in #849
  • Add project hook registration by @DorianZheng in #858
  • [codex] fix org settings interactions by @law-chain-hot in #863
  • perf(dashboard): cut /boxes first-paint (auth session + static cache + code-split + bundle slim) by @law-chain-hot in #862
  • docs(readme): restructure Get started into Embed/Run/Deploy/Distribute by @DorianZheng in #864
  • test(cli): clean up boxes after panicking CLI tests by @G4614 in #860
  • docs(readme): distill copy, add version badges, expand Features matrix by @DorianZheng in #869
  • Update README.md by @DorianZheng in #871
  • Update README.md by @DorianZheng in #872
  • fix(runner): adopt existing box on CREATE_BOX replay via GetOrCreate (no more "already exists") by @law-chain-hot in #855
  • feat(api): cute default box names (e.g. cozy-otter) by @law-chain-hot in #853
  • fix(network): restore SDK gvproxy integration tests by @G4614 in #874
  • Remove legacy in-box daemon by @law-chain-hot in #877
  • Add BoxLite Cloud runtime image publishing by @law-chain-hot in #867
  • chore(infra-local): make make up work on Apple Silicon + arm64 boxes by @law-chain-hot in #868
  • feat(hooks): add turn-end verdict-proof gate; rename audit→commit-push by @DorianZheng in #882
  • feat: reviewer-friendly, non-bloated commit & PR messages by @DorianZheng in #883
  • Improve boxes pagination UX by @law-chain-hot in #880
  • refactor(hooks): verdict gate validates self-declared claims, not file deltas by @DorianZheng in #885
  • fix(runtime): reap detached box's full cgroup tree on stop/remove by @G4614 in #876
  • feat(hooks): default-deny verdict gate, always-on by @DorianZheng in #892
  • fix(jailer): stop deriving RLIMIT_NPROC from per-box max_processes by @G4614 in #888

New Contributors

Full Changelog: v0.9.5...v0.9.7