Skip to content

Commit 249c75f

Browse files
committed
docs: update formatting/links
1 parent 44f5153 commit 249c75f

7 files changed

Lines changed: 57 additions & 108 deletions

File tree

CHANGELOG.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,36 @@
22

33
All notable changes to this project will be documented in this file.
44

5-
## [Unreleased]
5+
## [Unreleased](https://github.com/zekker6/devsandbox/compare/v0.17.0...HEAD)
66

7-
## [v0.17.0] - 2026-04-30
7+
## [v0.17.0](https://github.com/zekker6/devsandbox/releases/tag/v0.17.0) - 2026-04-30
88

99
### Added
1010

1111
- **Audit-grade structured logging.** Per-session fields (`session_id`, `sandbox_name`, `sandbox_path`, `project_dir`, `isolator`, `pid`, `devsandbox_version`) on every dispatched entry, plus synthesized `session.start` / `session.end` lifecycle events and security events (`proxy.filter.decision`, `proxy.redaction.applied`, `proxy.credential.injected`, `proxy.mitm.bypass`, `mount.decision`, `notice.overflow`). See [Audit Logging](docs/configuration.md#audit-logging).
1212
- **OTLP `header_sources`.** Resolve receiver headers from `value` / `env` / `file` at runtime so secrets stay on the host. See [Authenticating to an Auth-Enforced Endpoint](docs/configuration.md#authenticating-to-an-auth-enforced-endpoint).
1313
- `NODE_USE_ENV_PROXY=1` is now set automatically in proxy mode so Node.js ≥24's built-in `fetch` (undici) honors `HTTP(S)_PROXY` — fixes `ENETUNREACH` from npx-based tools like `mcp-remote`.
1414

15-
## [v0.16.0] - 2026-04-29
15+
## [v0.16.0](https://github.com/zekker6/devsandbox/releases/tag/v0.16.0) - 2026-04-29
1616

1717
### Added
1818

1919
- **Proxy `log_skip` rules.** Drop matching requests from the proxy log (local + remote dispatchers); the request itself still passes through. See [Skipping Log Entries](docs/proxy.md#skipping-log-entries).
2020

21-
## [v0.15.0] - 2026-04-29
21+
## [v0.15.0](https://github.com/zekker6/devsandbox/releases/tag/v0.15.0) - 2026-04-29
2222

2323
### Added
2424

2525
- `devsandbox sandboxes prune --orphaned` flag to restrict pruning to orphaned sandboxes (those whose original project directory no longer exists). The flag intersects with other selectors: `--orphaned --older-than 30d` removes orphans last used over 30 days ago; `--orphaned --keep N` prunes orphans outside the N most-recently-used set; `--orphaned --all` (or `--orphaned` alone) removes every orphan. Without the flag, the existing default (orphans-only when no other selector is set) is unchanged.
2626
- **Generic credential injector for proxy.** Define credential injection by `host` + `header` + `value_format` + `[...source]` + `overwrite` in TOML — no Go code change required to add a new service. Built-in `github` preset preserves existing config compatibility (`[proxy.credentials.github] enabled = true` works unchanged, including `GITHUB_TOKEN``GH_TOKEN` fallback). Specificity-based ordering when multiple injectors could match the same request (exact host > longer literal > shorter glob, tie-break by name). `BuildCredentialInjectors` now returns an error for invalid configs (unknown preset, missing `host`/`header`, invalid glob).
2727

28-
## [v0.14.1] - 2026-04-28
28+
## [v0.14.1](https://github.com/zekker6/devsandbox/releases/tag/v0.14.1) - 2026-04-28
2929

3030
### Changed
3131

3232
- **`zellij` tool is now disabled by default.** Unlike `kitty`, the zellij socket has no capability filtering — exposing it lets sandboxed code drive the host multiplexer (run commands in any pane, read pane contents, etc.). Auto-detection of an active `ZELLIJ` session no longer mounts the socket or forwards `ZELLIJ*` env vars on its own. Set `[tools.zellij] enabled = true` to opt back in. `devsandbox tools check zellij` reports the opt-in requirement.
3333

34-
## [v0.14.0] - 2026-04-27
34+
## [v0.14.0](https://github.com/zekker6/devsandbox/releases/tag/v0.14.0) - 2026-04-27
3535

3636
### Added
3737

@@ -40,25 +40,25 @@ All notable changes to this project will be documented in this file.
4040
- `opencode`: `OPENCODE_CONFIG_DIR` is mounted in addition to (not in place of) `~/.config/opencode`, matching opencode's load semantics; the env var is forwarded.
4141
- `pi`: `PI_CODING_AGENT_DIR` overrides `~/.pi/agent`. The agent dir is still tmpoverlayed (settings/credentials are write-discarded) and the `sessions/` subdirectory is still persisted; the env var is forwarded.
4242

43-
## [v0.13.3] - 2026-04-20
43+
## [v0.13.3](https://github.com/zekker6/devsandbox/releases/tag/v0.13.3) - 2026-04-20
4444

4545
### Fixed
4646

4747
- `kitty` proxy revdiff launch pattern now accepts the unquoted `/usr/bin/env` prefix the launcher actually emits (only `ENV_PREFIX` assignments and the inner argv are single-quoted). The literal absolute path is required — bare `env` (PATH-relative) still rejects, so `$PATH` shadowing can't be used to bypass the inner-program check.
4848

49-
## [v0.13.2] - 2026-04-20
49+
## [v0.13.2](https://github.com/zekker6/devsandbox/releases/tag/v0.13.2) - 2026-04-20
5050

5151
### Fixed
5252

5353
- `kitty` proxy revdiff launch pattern: added `MatchShellExecEnvSentinel`, accepting `sh -c "'/usr/bin/env' 'KEY=VAL' ... '<prog>' '<arg>'...; touch '<sentinel>'"`. The revdiff launcher injects an `env` wrapper so the kitty-spawned overlay inherits `EDITOR`/`VISUAL` from the caller's login shell; the previous pattern matched only the no-env form. Env-var names are restricted to `^[A-Z_][A-Z0-9_]*$`, the inner argv is still validated against the existing revdiff pattern, and the sentinel-tail rules (no shell metacharacters, canonical path) are unchanged.
5454

55-
## [v0.13.1] - 2026-04-18
55+
## [v0.13.1](https://github.com/zekker6/devsandbox/releases/tag/v0.13.1) - 2026-04-18
5656

5757
### Fixed
5858

5959
- `revdiff` tool no longer wipes its shared IPC directory on `Start`/`Stop`. Because the dir is exported as `$TMPDIR` for every sandboxed process, long-lived tenants (Claude Code's per-session task cache under `$TMPDIR/claude-<uid>/…/tasks/`, Node's compile cache, Go's build cache) populate subtrees that must survive sandbox restarts for the same project — and parallel sandboxes on the same project share the directory, so wiping it from one tore state out from under the others. The old `RemoveAll` on `Start` could yank state out from under a running caller; Node's non-recursive `fs.mkdirSync` then failed with `ENOENT`, breaking every subsequent Claude Code Bash tool call. `Start` now only ensures the dir exists (0700); `Stop` is a no-op. Stale revdiff sentinels are harmless — the launcher uses `mktemp` with fresh names.
6060

61-
## [v0.13.0] - 2026-04-17
61+
## [v0.13.0](https://github.com/zekker6/devsandbox/releases/tag/v0.13.0) - 2026-04-17
6262

6363
### Added
6464

@@ -75,7 +75,7 @@ All notable changes to this project will be documented in this file.
7575

7676
- macOS: shortened test directory names to stay under the platform's unix socket path length limit (affected `kittyproxy` and `kitty` tool tests).
7777

78-
## [v0.12.0] - 2026-04-16
78+
## [v0.12.0](https://github.com/zekker6/devsandbox/releases/tag/v0.12.0) - 2026-04-16
7979

8080
### Changed
8181

@@ -90,36 +90,36 @@ All notable changes to this project will be documented in this file.
9090
- `zellij` and `kitty` tool socket bindings are now explicit bind mounts (`Type: MountBind`) instead of inheriting the default tmpoverlay from `CategoryRuntime`. Overlayfs cannot expose a unix socket from its lower layer, so under the previous policy the host socket was invisible inside the sandbox and `zellij list-sessions` / `kitten @` silently failed.
9191
- Auto port-forwarding no longer tries (and fails) to forward when the sandbox shares the host network namespace. Without proxy mode the sandbox uses bwrap's `--share-net`, so a tool listener inside the sandbox is the same kernel socket as the "host" bind the forwarder would attempt — producing a spurious `bind: address already in use` error for every detected port. Auto-detect now inspects the sandbox netns inode and skips forwarding (with a one-line explanatory message) when it matches the host; the sandbox ports are already directly reachable on `127.0.0.1`. For the rare case where auto-forward runs in a properly isolated netns but the host happens to already have that port in use, the forwarder falls back to an ephemeral host port and logs the mapping instead of silently dropping the service.
9292

93-
## [v0.11.0] - 2026-04-14
93+
## [v0.11.0](https://github.com/zekker6/devsandbox/releases/tag/v0.11.0) - 2026-04-14
9494

9595
### Added
9696

9797
- `zellij` tool forwards an active Zellij session into the sandbox by mounting the session socket directory and the `zellij` binary. Auto-detected when `ZELLIJ` is set and the binary is on `PATH`, so `zellij` commands run inside the sandbox attach to the host multiplexer.
9898
- `zellij` tool now also mounts `$XDG_RUNTIME_DIR/zellij/`, which is where zellij 0.41+ stores its IPC socket (the legacy `/tmp/zellij-$UID/` holds only cache/log files on modern releases). The override env var is `ZELLIJ_SOCKET_DIR` (previously the tool checked the incorrect `ZELLIJ_SOCK_DIR`).
9999

100-
## [v0.10.0] - 2026-04-10
100+
## [v0.10.0](https://github.com/zekker6/devsandbox/releases/tag/v0.10.0) - 2026-04-10
101101

102102
### Added
103103

104104
- `kitty` tool forwards the Kitty remote-control socket into the sandbox so `kitten @` commands inside the sandbox can drive the host terminal.
105105

106-
## [v0.9.3] - 2026-04-08
106+
## [v0.9.3](https://github.com/zekker6/devsandbox/releases/tag/v0.9.3) - 2026-04-08
107107

108108
- `~/.local/bin` and `~/.local/share/claude` are now read-only bind mounts instead of persistent writable overlays. Under the split-mode default introduced in v0.8.0 these host-managed tool-install directories were being treated as `CategoryData`, which let in-sandbox tool self-updaters (e.g. Claude Code's own updater) write partial/empty files into the per-project overlay upper-dir. Those writes shadowed the real host binaries in every subsequent session, causing failures like `fish: '/home/$USER/.local/bin/claude' exists but is not an executable file` (exit 126).
109109

110-
## [v0.9.2] - 2026-04-08
110+
## [v0.9.2](https://github.com/zekker6/devsandbox/releases/tag/v0.9.2) - 2026-04-08
111111

112112
### Fixed
113113

114114
- HTTP proxy no longer intercepts the body of HEAD requests. The previous behavior broke `Content-Length` handling and caused errors for some clients (e.g. Helm pulling OCI charts).
115115

116-
## [v0.9.1] - 2026-04-07
116+
## [v0.9.1](https://github.com/zekker6/devsandbox/releases/tag/v0.9.1) - 2026-04-07
117117

118118
### Fixed
119119

120120
- Sandbox removal now `chmod`s files recursively before deletion. Go populates its build cache with `0500` files, which previously caused sandbox cleanup to fail.
121121

122-
## [v0.9.0] - 2026-04-07
122+
## [v0.9.0](https://github.com/zekker6/devsandbox/releases/tag/v0.9.0) - 2026-04-07
123123

124124
### Added
125125

@@ -131,13 +131,13 @@ All notable changes to this project will be documented in this file.
131131

132132
- Git tool now strips sensitive fields from `.git/config` in place instead of replacing the file wholesale. The previous full replacement caused the git CLI to refuse to operate even for read-only commands inside the sandbox.
133133

134-
## [v0.8.2] - 2026-04-06
134+
## [v0.8.2](https://github.com/zekker6/devsandbox/releases/tag/v0.8.2) - 2026-04-06
135135

136136
### Fixed
137137

138138
- Claude tool stores project knowledge under the `data` section so chat history persists between sandbox runs.
139139

140-
## [v0.8.1] - 2026-04-06
140+
## [v0.8.1](https://github.com/zekker6/devsandbox/releases/tag/v0.8.1) - 2026-04-06
141141

142142
### Added
143143

@@ -154,7 +154,7 @@ All notable changes to this project will be documented in this file.
154154

155155
- Restored shim source files that were missing from the v0.8.0 release and added CI coverage so the shim is built and verified on every run.
156156

157-
## [v0.8.0] - 2026-04-05
157+
## [v0.8.0](https://github.com/zekker6/devsandbox/releases/tag/v0.8.0) - 2026-04-05
158158

159159
### Breaking Changes
160160

docs/configuration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ supported; TCP connections to remote Docker daemons are not proxied.
514514

515515
> **Security Warning**: Enabling Docker socket forwarding grants the sandbox read access
516516
> to all Docker state and the ability to exec into any container on the host.
517-
> See [Docker Socket Forwarding](sandboxing.md#docker-socket-forwarding--security-warning) for details.
517+
> See [Docker Socket Forwarding](sandboxing.md#docker-socket-forwarding-security-warning) for details.
518518
519519
See [docs/tools.md](tools.md#docker) for full details on allowed operations.
520520

docs/sandboxing.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ Use `git.mode = "readwrite"` for full git access.
9999

100100
## How It Works (bwrap)
101101

102-
The following sections describe how the bwrap (bubblewrap) backend implements isolation on Linux. For Docker-specific behavior, see [Docker Backend](#docker-backend) below.
102+
The following sections describe how the bwrap (bubblewrap) backend implements isolation on Linux. For Docker-specific behavior, see [Docker Backend](#docker-backend-all-platforms) below.
103103

104104
### Filesystem Isolation
105105

@@ -337,7 +337,7 @@ If namespace restrictions cannot be resolved, use the Docker backend instead (`-
337337

338338
- devsandbox includes embedded bwrap — this error means extraction failed and no system package is installed
339339
- Check `devsandbox doctor` output for details (embedded vs system source)
340-
- Install bubblewrap as a fallback: see [README](../README.md#installation-details)
340+
- Install bubblewrap as a fallback: see [Installation](getting-started/install.md)
341341
- To disable embedded binaries and use only system packages, set `use_embedded = false` in [configuration](configuration.md)
342342

343343
**"Permission denied" on project files**

docs/use-cases.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ Any CLI-based AI coding tool works in the sandbox. Electron-based desktop apps (
9898

9999
## Scratchpads
100100

101-
Managed throwaway workspaces for one-off experiments. See [Scratchpads](../README.md#scratchpads) in the README for full usage and management commands.
101+
Managed throwaway workspaces for one-off experiments. See [Scratchpads](index.md#scratchpads) on the docs home for full usage and management commands.
102102

103103
## Shell Autocompletion
104104

docs/where-to-start.md

Lines changed: 0 additions & 54 deletions
This file was deleted.

site/landing/index.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
<title>devsandbox — sandbox AI coding assistants safely</title>
77
<meta name="description" content="Run Claude Code, Copilot, aider, and any other AI coding tool safely. devsandbox sandboxes the agent to your project directory — your SSH keys, cloud credentials, and other projects stay invisible. Skip permission prompts without giving up your home directory.">
88
<meta name="color-scheme" content="light dark">
9+
<meta name="theme-color" content="#4051b5" media="(prefers-color-scheme: light)">
10+
<meta name="theme-color" content="#1a1d2e" media="(prefers-color-scheme: dark)">
911
<link rel="canonical" href="https://zekker6.github.io/devsandbox/">
1012
<link rel="icon" type="image/svg+xml" href="assets/favicon.svg">
1113

zensical.toml

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,44 +5,45 @@ site_description = "Sandbox your AI coding assistants. Run Claude Code, Copilot,
55
site_author = "Zakhar Bessarab"
66
site_dir = "public/docs"
77
repo_url = "https://github.com/zekker6/devsandbox"
8+
edit_uri = "edit/main/docs/"
89

9-
copyright = "Built by Zakhar Bessarab. MIT licensed."
10+
copyright = "Built by zekker6. MIT licensed."
1011

1112
nav = [
12-
{ "Home" = "index.md" },
13-
{ "Getting Started" = [
14-
{ "Installation" = "getting-started/install.md" },
15-
{ "Quick start" = "getting-started/quickstart.md" },
16-
{ "First run" = "getting-started/first-run.md" },
17-
{ "Where to start (legacy)" = "where-to-start.md" },
18-
] },
19-
{ "Guides" = [
20-
{ "Use cases" = "use-cases.md" },
21-
{ "Supported tools" = "tools.md" },
22-
] },
23-
{ "Reference" = [
24-
{ "How sandboxing works" = "sandboxing.md" },
25-
{ "Configuration" = "configuration.md" },
26-
{ "Proxy mode" = "proxy.md" },
27-
] },
28-
{ "About" = [
29-
{ "Limitations" = "about/limitations.md" },
30-
{ "Changelog" = "about/changelog.md" },
31-
{ "License" = "about/license.md" },
32-
] },
13+
{ "Home" = "index.md" },
14+
{ "Getting Started" = [
15+
{ "Installation" = "getting-started/install.md" },
16+
{ "Quick start" = "getting-started/quickstart.md" },
17+
{ "First run" = "getting-started/first-run.md" },
18+
] },
19+
{ "Guides" = [
20+
{ "Use cases" = "use-cases.md" },
21+
{ "Supported tools" = "tools.md" },
22+
] },
23+
{ "Reference" = [
24+
{ "How sandboxing works" = "sandboxing.md" },
25+
{ "Configuration" = "configuration.md" },
26+
{ "Proxy mode" = "proxy.md" },
27+
] },
28+
{ "About" = [
29+
{ "Limitations" = "about/limitations.md" },
30+
{ "Changelog" = "about/changelog.md" },
31+
{ "License" = "about/license.md" },
32+
] },
3333
]
3434

3535
[project.theme]
3636
language = "en"
3737
features = [
38-
"navigation.sections",
39-
"navigation.indexes",
40-
"navigation.top",
41-
"navigation.tracking",
42-
"content.code.copy",
43-
"content.code.select",
44-
"search.highlight",
45-
"toc.follow",
38+
"navigation.sections",
39+
"navigation.indexes",
40+
"navigation.top",
41+
"navigation.tracking",
42+
"content.code.copy",
43+
"content.code.select",
44+
"content.action.edit",
45+
"search.highlight",
46+
"toc.follow",
4647
]
4748

4849
[[project.theme.palette]]

0 commit comments

Comments
 (0)