Walter-OS v0.6.0
[0.6.0] - 2026-06-02
馃殌 Features
- Add session state foundation
- Add session timeout hook
- Add capability key foundation
- Add capability token CLI
- Enforce capability tokens in hooks
- Add default skill capabilities
- Require operator challenge for cap mint
- Dark-first OKLCH token foundation for Control Tower
- Shared status + async primitives for Control Tower
- Re-skin live surfaces to the status language
- Token-theme Grafana embeds + shared TopNav
- Overview grid, shared nav adoption, and themed pages
- Add one-command upgrade flow
- Add sandbox provider shim
- Add hook sandbox profile
- Add skill sandbox profile
- Add high-tier invisible sandbox mounts
- Wire sandboxed hook gates
- Add optional Authentik SSO profile
- Add Forgejo Actions runner profile
- Add optional Langfuse profile
- Add optional Listmonk devrel profile
- Add optional ntfy notification profile
- Add Renovate self-hosted profile
- Bake faster-whisper into Hermes STT image
- Add audit-chain telemetry dashboard
- Add multi-model routing preferences
- Add Codex startup doctor probe
- Add SLSA provenance for releases
- Add audit chain writer
- Append audit rows from hook gates
- Add hackathon repo profile preset (#295)
- Improve upgrade UX summary
馃悰 Bug Fixes
- Rotate stale idle sessions first
- Harden session state writes
- Fail closed on session write errors
- Guard session test clock
- Reject malformed session timestamps
- Enforce idle expiry without reset
- Report session delete failures
- Preserve PHI session mode
- Add session timeout recovery path
- Allow session restart through expiry
- Wire session slash command arguments
- Revoke capability material on expiry
- Harden capability cleanup paths
- Resolve openssl and lock session starts
- Harden install preview and session locks
- Allow openssl override in hook env
- Invalidate legacy sessions without caps
- Reclaim stale session locks by age
- Keep openssl override out of data env
- Allow restart of unsafe session state
- Cleanup stale startup key material
- Fail non-apt installs without openssl
- Harden session startup recovery
- Make session lock wait configurable
- Add entropy to session id fallback
- Fail closed on capability chmod errors
- Enforce session expiry during cap verify
- Harden capability mint and expiry checks
- Block direct capability mint entrypoints
- Block raw capability key access
- Block read access to capability key material
- Block writes to capability session state
- Narrow capability state path guard
- Block quoted capability mint commands
- Close capability token review gaps
- Block ANSI-C quoted capability mint
- Prioritize capability gate classification
- Normalize capability gate shell escapes
- Allow non-mint capability commands
- Block braced variable capability subcommands
- Block dynamic capability subcommands
- Block expanded capability guard bypasses
- Keep capability blocks terminal
- Block dynamic cap script mint bypass
- Block variable-root capability key globs
- Tighten capability gate review fixes
- Narrow dynamic mint detection
- Validate cap list and command substitutions
- Harden capability token access checks
- Block relative capability key paths
- Map macos python dependency
- Validate capability claim schema
- Block shell-expanded cap minting
- Block interpreter cap mint bypasses
- Hide capability token storage paths
- Require operator context for cap mint
- Reject revoked capability copies
- Block split walter-os mint commands
- Close capability CLI review gaps
- Require complete capability host coverage
- Align capability enforcement with high-tier scope
- Cover multiedit and ssh git capabilities
- Cover absolute network commands and cap bootstrap
- Expand capability egress coverage
- Fail closed and parse network flags
- Normalize paths and gh host capabilities
- Parse positional network hosts
- Restrict cap mint bootstrap exemption
- Require pattern caps for approvals
- Close capability hook parse gaps
- Normalize capability command hosts
- Parse shell separators for caps
- Require caps for every gh host
- Cover notebook and ssh cap gaps
- Fail closed on cap tokenization
- Detect backtick egress commands
- Close capability hook bash bypasses
- Cover shell wrapped egress hosts
- Parse gh host capability targets
- Block shell-expanded network commands
- Cover pip and ssh proxy egress
- Cover curl resolve and path reentry
- Gate expanded network command words
- Close package and git parser gaps
- Cover pip value flags
- Ignore curl data urls
- Fail closed on expanded command words
- Protect capability trust root
- Tighten capability scope matching
- Stop host parsing at shell separators
- Block network command substitutions
- Detect network commands by position
- Align capability egress subcommands
- Inspect wrapped network commands
- Include curl socks proxy scopes
- Unwrap command options for egress
- Handle env split-string wrappers
- Account for git ssh overrides
- Align git remote capability gating
- Detect shell body network commands
- Clarify capability hook failures
- Normalize bracketed ipv6 hosts
- Gate capability bearer token reads
- Harden capability high-tier detection
- Gate capability secret reads
- Require network coverage for pattern caps
- Require caps for bash protected writes
- Fail closed on capability inspection gaps
- Make default skill caps transactional
- Reset session after default cap mint failure
- Gate default skill cap loader minting
- Anchor default skill capability examples
- Harden default skill capability loading
- Gate skill cap env override
- Block broad capability state reads
- Share protected path capability policy
- Merge shared protected path policy
- Protect shared path policy from Bash
- Close capability hook review gaps
- Fail closed on invalid protected policy
- Capture default cap mint errors
- Sanitize session paths with extglob enabled
- Allow cap mint help noninteractively
- Align cap mint challenge docs
- Allow cap mint stdout redirection
- Drop unstructured non-English CSVs from ui-ux-pro-max corpus
- Correct ui-ux-pro-max SKILL.md corpus manifest to real files
- Translate ui-ux-pro-max quick-reference activation to English
- Correct false check-pinning.py claim and stale counts in spec
- Translate stray Chinese cells in ui-ux-pro-max icons/styles CSVs
- Rewrite ui-ux-pro-max SKILL.md corpus manifest to real files
- Add 'When to use' section to both new skills (L2-2 conformance)
- Resolve UX skill review threads
- Derive repo root for vendored pin audit
- Harden vendored skill pin audit
- Harden vendored skill pin checks
- Cancel SSE reconnect timer and guard setState on unmount
- Render HA health state as visible text, not colour-only
- Surface error + retry on AlertFeed and AgentStatusBoard async legs
- Add error + AsyncSurface triad to ModeIndicator
- Stop interval stale-closure from masking stale data on error
- Root ModeIndicator in a labelled section landmark
- Raise contrast of tiny uppercase metadata labels
- Address control tower review feedback
- Keep history version badge server-rendered
- Harden upgrade preflight checks
- Address upgrade review followups
- Fetch target tags from all remotes
- Run VM upgrade payload under bash
- Avoid repeated cap hook tokenization
- Preserve empty cap mint shell tokens
- Resolve sandbox profile root fallback
- Address sandbox review nits
- Harden sandbox provider execution
- Align sandbox shim review feedback
- Require executable sandbox providers
- Simplify sandbox provider lookup
- Reject Darwin sandbox provider overrides
- Materialize sandbox profiles atomically
- Isolate hook sandbox filesystem roots
- Preserve caller runtime directory mode
- Avoid moving loopback into nsjail
- Harden hook profile capability and key rules
- Allow macos hook sandbox scratch writes
- Validate sandbox runtime directories
- Tighten macos hook sandbox writes
- Clean materialized sandbox profiles
- Use valid firejail whitelist rules
- Mount dev null in nsjail profile
- Preserve sandbox cleanup under errexit
- Harden sandbox materialization edges
- Clean sandbox path materialization failures
- Harden sandbox profile materialization
- Fail closed sandbox profile materialization
- Merge sandbox provider hardening
- Harden sandbox profile materialization
- Simplify sandbox run validation
- Guard scratch placeholder grep paths
- Protect sandbox key scan fifo
- Harden sandbox key scan wait
- Merge hook sandbox profile base
- Escape sandbox regex quotes
- Narrow session key scan skips
- Deny writes to sandboxed key files
- Fail closed on nsjail root materialization
- Remove stale invisible mount cleanup
- Escape firejail invisible blacklists
- Fail closed on missing invisible controls
- Harden invisible path parsing
- Require default invisible policy
- Merge skill sandbox profile base
- Fail closed on invisible chmod errors
- Recreate invisible directory placeholders
- Handle colon-bearing invisible removals
- Address sandbox hook review gaps
- Escape sandbox hook control chars
- Harden sandbox hook JSON escaping
- Repair Codex skill metadata
- Accept CRLF skill frontmatter
- Make Forgejo runner socket opt-in
- Align Forgejo runner default labels
- Route Langfuse through loopback
- Align Langfuse service profile details
- Simplify Langfuse MinIO healthcheck
- Align Langfuse port docs and healthcheck
- Use Listmonk default config path
- Align ntfy notifications profile
- Make ntfy network external
- Keep install dry-run jq-compatible
- Repair scorecard publishing permissions
- Harden install platform checks
- Restore release workflow integrity tests
馃摎 Documentation
- Align session start semantics
- Clarify capability mint approval path
- Clarify capability high-tier classifier
- Anchor capability regex example
- Align skill capability regex examples
- Align cap mint refusal message
- Flag impeccable reference files that need the un-vendored CLI
- Correct pinned-refs header + note CSVs are grep-not-parse
- Spec for Control Tower UX/UI redesign
- Align sandbox nsjail environment example
- Align sandbox write-scope question
- Clarify Forgejo runner label names
- Document Langfuse trace emission
- Note Langfuse trace redaction
- Make Listmonk caddy example generic
- Quote ntfy domain placeholder
- Clarify ntfy manual setup values
- Clarify ntfy backup priorities
- Define knowledge profile options
- Pin knowledge profile scope
- Use Linkwarden NextAuth URL
- Align knowledge profile secrets
- Clarify knowledge profile secrets flow
- Scope Linkwarden nextauth env
- Clarify future knowledge profile
- Add autonomous delivery roadmap
- Fold auto-merge policy into repo config
- Prepare v0.6.0 release notes
馃И Testing
- Use ed25519 openssl in session tests
- Pin env-wrapped gh host caps
- Allow capability mint fixtures
- Allowlist vendored Apache-2.0 skill in license-files guard
- Assert rendered content in shallow Playwright smoke tests
- Target Overview nav link by exact accessible name
- Cover AC-1 dark theme/tokens and AC-3 responsive grid
- Move redesign-layout test into the vitest include glob
- Update CT nav regression test for shared TopNav
- Use positive grep -q for TopNav render assertion
- Remove duplicate buggy CT nav test (devrel-dashboard.bats)
- Point CT nav-link check at shared TopNav (revert bad deletion)
- Guard tokenizer helper python dependency
- Make sandbox shim tests hermetic
- Add optional linux sandbox runtime checks
- Cover key scan behavior without source grep
- Decouple sandbox scan assertions
- Use literal Forgejo runner assertions
- Scope Forgejo runner tag assertions
- Run Forgejo runner service tests in CI
- Run optional service suites in CI
- Use fixed-string listmonk route assertion
- Loosen ntfy profile assertion
- Run ntfy service assertions in CI
- Narrow ntfy latest tag guard
鈿欙笍 Miscellaneous Tasks
- Enforce vendored skill pins
- Reduce capability hook tokenization
- Migrate workflows to Node 24 actions