-
Notifications
You must be signed in to change notification settings - Fork 100
Comparing changes
Open a pull request
base repository: boxlite-ai/boxlite
base: v0.5.9
head repository: boxlite-ai/boxlite
compare: v0.5.10
- 12 commits
- 46 files changed
- 9 contributors
Commits on Feb 4, 2026
-
feat(sdk): add orchestration API for multi-box messaging (#206)
* feat(sdk): add Ray-style orchestration API for multi-box messaging Add BoxRuntime orchestration API with: - Ray-style decorator API (@box.task, @box.on_message, @box.on_event) - Cloudpickle serialization for closures (auto-installed via pip) - Auto-detected Python version for image selection - Point-to-point messaging and pub/sub events between boxes - Minimal implementation (~400 lines total) Also includes: - Guest boot logging improvements (info level default) - RUST_BACKTRACE forwarding to guest - Two comprehensive examples (ai_pipeline, multi_agent) * style: format Python and Rust code
Configuration menu - View commit details
-
Copy full SHA for 7e7c943 - Browse repository at this point
Copy the full SHA 7e7c943View commit details
Commits on Feb 6, 2026
-
fix(images): handle tar extraction edge cases and PAX long paths (#199)
Fixes multiple OCI layer tar extraction issues: Path handling: - Use entry.path() instead of entry.header().path() to support PAX extensions - Properly handle filenames >100 bytes (tar header limit) - PAX/GNU longname extensions now correctly applied to restore full paths - Fixes file truncation during extraction (e.g., discord-api-types package) Hardlinks: - Deferred hardlink mechanism for targets appearing later in tar - Fixes pnpm compatibility where hardlinks precede target files Directory handling: - File-to-directory replacements when creating parent dirs - Missing directories removed by whiteout processing Refactoring: - Introduces EntryMetadata with ownership/timestamps composition - Reduces apply_ownership parameters from 9 to 3 - Adds builder pattern to avoid clippy warnings - Improves memory efficiency (DirMeta only stores needed fields) Test coverage: - Comprehensive tests for deferred hardlinks - Parent directory replacement scenarios - pnpm structure validation Signed-off-by: Wenyu Huang <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for edfb9ca - Browse repository at this point
Copy the full SHA edfb9caView commit details -
feat(examples): add interactive Claude Code box example (#209)
* feat(examples): add interactive Claude Code box example Provide a persistent interactive terminal example for installing Claude Code and document it in the examples README. Co-authored-by: Cursor <[email protected]> * Apply suggestion from @Copilot Co-authored-by: Copilot <[email protected]> * Apply suggestion from @Copilot Co-authored-by: Copilot <[email protected]> * Apply suggestion from @Copilot Co-authored-by: Copilot <[email protected]> * Apply suggestion from @Copilot Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Cursor <[email protected]> Co-authored-by: dorianzheng <[email protected]> Co-authored-by: Copilot <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 86cc923 - Browse repository at this point
Copy the full SHA 86cc923View commit details -
feat(cli): add shell completion for bash, zsh, and fish (#208)
* feat(cli): add shell completion for bash, zsh, and fish - Add hidden subcommand `boxlite completion <bash|zsh|fish>` using clap_complete - Add completion tests (exit success, non-empty output, subcommands present, invalid shell fails) Co-authored-by: Cursor <[email protected]> * fix(cli): satisfy clippy in completion tests (collapsible_if, trim_split_whitespace) Co-authored-by: Cursor <[email protected]> * style(cli): format completion test to satisfy cargo fmt Co-authored-by: Cursor <[email protected]> --------- Co-authored-by: shayne-snap <[email protected]> Co-authored-by: Cursor <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 8338ea6 - Browse repository at this point
Copy the full SHA 8338ea6View commit details -
docs(cli): add CLI README, development guide, and CONTRIBUTING link (#…
…211) - boxlite-cli/README.md: user-facing CLI docs (commands, flags, troubleshooting) - docs/development/cli.md: contributor guide (make cli, make test:cli, test layout) - CONTRIBUTING.md: add boxlite-cli to project structure, link to CLI dev guide Co-authored-by: shayne-snap <[email protected]> Co-authored-by: Cursor <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 55acf3d - Browse repository at this point
Copy the full SHA 55acf3dView commit details -
feat(cli): add -p/--publish and -v/--volume to create and run (#207)
* feat(cli): add -p/--publish and -v/--volume to create and run - Port publish (-p, --publish): spec [hostPort:]boxPort[/tcp|udp], applied to create and run - Volume (-v, --volume): bind mount (hostPath:boxPath[:ro]) and anonymous (boxPath), with Windows path handling (e.g. C:\data:/app/data) - create: to_box_options now takes GlobalFlags, returns Result; apply publish and volume - run: add PublishFlags and VolumeFlags to RunArgs, apply in BoxRunner with home for anonymous volumes - Tests: publish/volume success and invalid format for create and run; run volume tests for bind, :ro, and anonymous Co-authored-by: Cursor <[email protected]> * fix(cli): resolve clippy doc_lazy_continuation and collapsible_if Co-authored-by: Cursor <[email protected]> --------- Co-authored-by: shayne-snap <[email protected]> Co-authored-by: Cursor <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 0dd8f0d - Browse repository at this point
Copy the full SHA 0dd8f0dView commit details -
feat(cli): add inspect command (#197)
* feat(cli): add inspect command for box details - Add `boxlite inspect [OPTIONS] BOX [BOX...]` with --latest support - Output formats: json, yaml, or Go template (e.g. {{.State}}, {{.Id}}) - PascalCase output (Id, Name, Image, State, Cpus, Memory) aligned with Docker/Podman - Template aliases: .ID -> .Id, .ImageID -> .Image - Reject table format; use formatter + BoxInfo/BoxStateInfo from boxlite - Tests: no args, nonexistent, by name/id, multiple boxes, --latest, formats, table rejected Co-authored-by: Cursor <[email protected]> * inspect: parse template once, serialize once per box; align format with Docker/Podman - Formatter: GtmplWithJson parse-once render-many; add json template function and format_go_style_value for object output. Remove format_gtmpl_with_json; tests use GtmplWithJson::parse().render(). - Inspect: parse template once before loop, serialize each presenter to JSON once and reuse for path lookup and gtmpl context. Use value_from_serde_json and GtmplWithJson; drop presenter_to_gtmpl_value. - looks_like_template: require both {{ and }}. - Add gtmpl_value dep; add inspect tests for template formats. Co-authored-by: Cursor <[email protected]> * style: apply rustfmt to inspect and formatter Co-authored-by: Cursor <[email protected]> * fix(clippy): remove redundant use tempfile in inspect tests Co-authored-by: Cursor <[email protected]> * refactor(core): use From<&BoxInfo> for BoxStateInfo - Replace BoxStateInfo::from_box_info with impl From<&BoxInfo> - Update inspect command to use BoxStateInfo::from(info) Co-authored-by: Cursor <[email protected]> --------- Co-authored-by: shayne-snap <[email protected]> Co-authored-by: Cursor <[email protected]>Configuration menu - View commit details
-
Copy full SHA for 6e601a2 - Browse repository at this point
Copy the full SHA 6e601a2View commit details -
feat(examples): add OpenClaw (ClawdBot/Moltbot) example (#212)
* feat(examples): add OpenClaw (ClawdBot/Moltbot) example Add clawboxlite.py demonstrating how to run OpenClaw AI agent gateway in a BoxLite container with: - Port forwarding and volume mounting - Gateway configuration with LAN binding - Claude API authentication setup - Service readiness polling * docs(examples): add clawboxlite.py to README Document the OpenClaw example with usage instructions.
Configuration menu - View commit details
-
Copy full SHA for 57d72f5 - Browse repository at this point
Copy the full SHA 57d72f5View commit details -
fix(examples): address review feedback on interactive Claude example (#…
…210) Rename file to remove "ubuntu" misnomer, remove unused BoxOptions, consolidate imports, and improve documentation. Co-authored-by: Yingjun Wu <[email protected]> Co-authored-by: Claude Opus 4.6 <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for d8cceff - Browse repository at this point
Copy the full SHA d8cceffView commit details -
chore: bump SDK versions (#213)
- Workspace/Rust/C/Python: 0.5.9 → 0.5.10 - Node.js: 0.2.6 → 0.2.7
Configuration menu - View commit details
-
Copy full SHA for 006bbf2 - Browse repository at this point
Copy the full SHA 006bbf2View commit details -
fix(error): prevent cleanup error from masking original error (#214)
When box initialization fails (e.g., image pull failure), the cleanup guard removes the box from DB. If stop() is then called (e.g., from a finally block), it would try to save to a non-existent box, returning NotFound which masked the original error. Changes: - box_impl.rs: Handle NotFound gracefully in stop() - if box was already removed by cleanup, return Ok(()) instead of propagating the error - Remove redundant "Box not found:" prefix from NotFound error messages since #[error("box not found: {0}")] already adds this prefix Before: "box not found: Box not found: abc123" After: "box not found: abc123" And most importantly, users now see the actual error: "storage error: Failed to pull image 'xxx' after trying 1 registry" instead of the misleading "box not found" error.Configuration menu - View commit details
-
Copy full SHA for b422926 - Browse repository at this point
Copy the full SHA b422926View commit details -
fix(python): make cloudpickle an optional dependency (#215)
- Move cloudpickle from required to optional-dependencies[orchestration] - Add lint check in lint.yml to enforce no required dependencies - Update build-wheels.yml comment explaining --no-index as lint - Bump Node SDK version to 0.2.7 The BoxRuntime orchestration feature requires cloudpickle for serializing Python closures into VMs. Most users don't need this, so it's now opt-in via: pip install boxlite[orchestration] Fixes wheel build failure where --no-index couldn't resolve cloudpickle.
Configuration menu - View commit details
-
Copy full SHA for 348eef1 - Browse repository at this point
Copy the full SHA 348eef1View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.5.9...v0.5.10