# v1.1.0

## Quality and portability release

This release tightens the codebase after 1.0 without changing the sandbox's user-facing behavior or the `.ai-jail` config schema.

### Safer shared file operations

- Moved atomic writes, symlink checks, and backup handling into shared filesystem helpers.
- Kept config and bootstrap writes refusing symlink targets while reducing duplicated write logic.
- Preserved existing config compatibility rules: old `.ai-jail` files still parse, unknown fields are still ignored, and new defaults remain backward-compatible.

### Cleaner generated config files

- Default and empty config fields are now omitted when serializing `.ai-jail`.
- Added a regression test to ensure an all-default config serializes cleanly instead of writing empty arrays and absent options.

### Shared sandbox behavior

- Centralized browser command detection so the main CLI path and sandbox launch logic stay in sync.
- Shared lockdown `PATH`, terminal env passthrough list, shell prompt, and dry-run shell quoting between Linux bwrap and macOS seatbelt code.

### Test isolation fixes

- Added a shared RAII environment-variable guard for tests that mutate process-global env vars.
- Changed seccomp tests to compile filters rather than installing them into the test process.
- Moved the irreversible `RLIMIT_NPROC` hard-limit assertion into an ignored child test process so it cannot leak into the rest of the suite.

### CI and docs

- CI now checks the `aarch64-apple-darwin` target with warnings denied.
- Updated the developer mount-order documentation to match the current bwrap mount phases.

### Verification

- `cargo fmt --check`
- `cargo clippy -- -D warnings`
- `cargo test`
- `RUSTFLAGS="-D warnings" cargo check --target aarch64-apple-darwin`
