Skip to content

Releases: modern-tooling/work-lab

v0.11.0

11 Jan 03:33

Choose a tag to compare

Changed

  • Internal refactoring: Consolidated duplicated code patterns into reusable helpers
  • Cleaner codebase: Reduced ~40 lines of duplicate mount parsing and devcontainer config detection

v0.10.0

10 Jan 21:10

Choose a tag to compare

Added

  • tmux 3.5a: Built from source for better clipboard and image support
  • Clipboard integration: set-clipboard on enables OSC 52 (copy to system clipboard)
  • Image passthrough: allow-passthrough on enables image protocols in tmux
  • claude-dsp alias: Shortcut for claude --dangerously-skip-permissions

Changed

  • Terminal environment: Container exports LANG, LC_ALL, TERM, COLORTERM for proper Unicode and color detection

Fixed

  • SSH tunnel port 2222: Now detects devcontainer sshd feature which uses port 2222 (not 22)

v0.9.0

10 Jan 18:27

Choose a tag to compare

Fixed

  • Devcontainer detection: Now correctly finds paired devcontainer when work-lab is also running
  • tmux status bar: Simplified config, no longer requires Nerd Fonts
  • wl start auto-update: Rebuilds container if newer image is locally available
  • wl doctor fast check: Compares running container vs pulled image (instant, no network)

v0.8.0

10 Jan 17:50

Choose a tag to compare

Added

  • wl dc --status: Check paired devcontainer connection status at a glance
  • Tree view in wl start: Shows container status matching wl ps for visual continuity
  • Devcontainer ports display: Shows forwardPorts in wl start and wl dc --status
  • Gold tmux tabs for devcontainer sessions: [dc] windows clearly distinguished from regular tabs

Changed

  • tmux status bar: ⚡dc when connected, ⚠ dc when devcontainer exists but unreachable
  • Cleaner status output: Balanced design - concise but informative for new users
  • tmux scripts use full paths: Fixes status bar not displaying on some systems

Fixed

  • tmux status scripts: Now work reliably (use $HOME/bin/ paths instead of relying on PATH)
  • JSONC parsing: Port extraction handles // comments in devcontainer.json

v0.7.1

10 Jan 17:02

Choose a tag to compare

Added

  • Unified wl command: Works both on host AND inside the container
  • Context-aware help: Host-only commands dimmed when inside container

Changed

  • Claude authentication: .claude mount changed to read-write for persistent login
  • Tmux status bar: tmux2k-inspired design with Nerd Font icons and rounded window tabs
  • Help styling: Consistent colors (command cyan, description white)

Fixed

  • Welcome guide: Now shows correctly in first tmux pane

v0.7.0

10 Jan 17:01

Choose a tag to compare

Added

  • wl mux [project]: Attach to any running work-lab by project name (not just current directory)
  • wl ports: Show forwarded ports for work-lab and paired devcontainer
  • wl prune: Clean up stopped work-lab containers (use --all for images too)
  • Session restore: tmux layout persists across container rebuilds
    • Ctrl-b W saves session layout to project's .work-lab/ directory
    • wl mux auto-restores saved layout when creating new session

Fixed

  • beads (bd): Install from pre-built binary release instead of npm/go

v0.6.0

10 Jan 17:01

Choose a tag to compare

Added

  • wl doctor --fix: Auto-fix detectable issues (stale containers, SSH tunnel setup, missing devcontainer CLI)
  • Stale container detection: wl doctor finds orphaned containers from deleted/moved projects

Removed

  • wl upgrade: Use your package manager instead (brew upgrade work-lab)

v0.5.0

10 Jan 04:45

Choose a tag to compare

Changed

  • Command rename: wl upwl start (clearer intent, wl stop unchanged)
  • Clearer messaging: tips (*) show features, actions () tell you what to do next

Added

  • wl doctor now works inside container
  • Docker image availability check before wl start

Fixed

  • wl ps shows current project even when no containers running
  • Works on stock macOS without coreutils (fixed port check timeout)
  • Better error messages for config file issues

v0.4.0

10 Jan 00:46

Choose a tag to compare

Fixed

  • Multi-architecture Docker builds (amd64 + arm64 for Apple Silicon)
  • Go download now detects architecture instead of hardcoding amd64
  • wl up error handling shows helpful messages for network failures
  • wl ps shows current project even when both containers stopped
  • Homebrew install: fixed "bind source path does not exist" error
  • Post-create/post-start scripts now use absolute paths in image

Changed

  • Use pre-built GHCR image instead of building from Dockerfile
  • Added CI workflow for Docker build testing
  • Baked zsh and gh (GitHub CLI) into image - no runtime feature installs
  • Removed devcontainer features to eliminate network-dependent rebuilds
  • Startup message now says "Starting work-lab container..."
  • Docker image versioned independently from CLI (rebuilds only when Dockerfile changes)
  • Removed redundant project count from wl ps output

v0.3.0

10 Jan 00:02

Choose a tag to compare

Added

  • SSH tunneling to devcontainers: Run commands in project devcontainer from work-lab
    • wl dc <cmd> works from inside work-lab via SSH tunnel
    • prefix + S in tmux to SSH into devcontainer
    • Zero devcontainer config required (just enable sshd feature)
    • Host orchestrates setup via wl mux/wl shell (lazy initialization)
    • NO Docker socket in work-lab - maintains full isolation
  • wl ps shows tunnel status: = ready, ~ = sshd detected (run wl mux)
  • wl doctor checks for wl alias and suggests setup if missing
  • wl doctor detects SSH tunnel configuration in sidecar mode
  • New documentation: docs/ssh-tunneling.md
  • Integration test script: test/integration/tunnel-test.sh
  • openssh-client added to container image

Changed

  • wl shell <cmd> now supports running commands directly (not just interactive shell)
  • wl dc now runs as proper user (not root) and auto-detects workspace directory
  • wl dc from host now auto-configures SSH tunnel for future use inside work-lab
  • Container discovery (find_container) checks actual mount paths instead of labels
  • README updated with clearer value proposition and sidecar mode examples
  • No longer auto-modifies .gitignore (user controls their own files)

Security

  • SSH tunneling uses shared filesystem approach instead of Docker socket
  • No additional privileges required in work-lab container
  • Maintains full isolation from host system