Skip to content

v0.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 13 Apr 00:52
· 37 commits to stg since this release

Changelog

  • d216973 Merge branch 'cleanup' into daemon-arch (Phase 3.5: Socket forwarding + CompositeProvider wiring)
  • b8343cb Merge branch 'cleanup' into daemon-arch (Phase 4: delete old SSH code, -1987 lines)
  • e66cdb1 Merge branch 'daemon-arch' into stg
  • d936310 Merge branch 'daemon-arch' into stg (daemon architecture + optimistic UI)
  • 166a6e7 Merge branch 'daemon-server' into daemon-arch (Phase 1: Daemon HTTP Server)
  • 8b50cd4 Merge branch 'deploy' into daemon-arch (Phase 2.2: deploy command)
  • 2f4a0e5 Merge branch 'fix-mirror-bugs' into daemon-arch
  • 943622e Merge branch 'fix-remote-W' into stg
  • 4e09dbf Merge branch 'fix-remote-activity' into stg
  • 20195b7 Merge branch 'fix-remote-activity' into stg (_LC_WINDOW)
  • bb9888a Merge branch 'fix-remote-activity' into stg (window name fallback)
  • be1538e Merge branch 'fix-remote-prompt' into stg
  • 69a4dcb Merge branch 'fix-ssh-func' into stg
  • 3b33a51 Merge branch 'fix-ssh-func' into stg (PATH-based lazyclaude)
  • 33e5a2c Merge branch 'fix-ssh-func' into stg (setup.sh inside login shell)
  • 006fc6d Merge branch 'fixup-a' into daemon-arch (remove deploy, fix daemon startup)
  • 84179ec Merge branch 'fixup-async' into daemon-arch (Optimistic UI + showError unification)
  • f6afb8f Merge branch 'fixup-cwd' into daemon-arch (proc-based CWD detection)
  • 445b20e Merge branch 'fixup-debug' into daemon-arch (debug logging)
  • 379382e Merge branch 'fixup-error-display' into daemon-arch (error display persists 5s)
  • 166a9d5 Merge branch 'fixup-error-fs' into daemon-arch (error fullscreen display)
  • 9725e2b Merge branch 'fixup-error-persist' into daemon-arch (persistent error display + Esc/C-v)
  • 3e87a7f Merge branch 'fixup-error-window' into daemon-arch (error sessions use tmux windows)
  • 23e2534 Merge branch 'fixup-fullscreen-error' into daemon-arch (block fullscreen on error + C-v in fullscreen)
  • 02bcd3a Merge branch 'fixup-gc' into daemon-arch (fix GC deleting live sessions)
  • 0d10e1e Merge branch 'fixup-lazy' into daemon-arch (defer remote connection to first operation)
  • 4b9dbcc Merge branch 'fixup-mirror' into daemon-arch (fix WindowName, mirror KillWindow, resolveHost)
  • 565526e Merge branch 'fixup-optimistic' into daemon-arch (optimistic session creation + CWD API)
  • fa19fb9 Merge branch 'fixup-path' into daemon-arch (fix Path in mirror sessions)
  • 0571340 Merge branch 'fixup-preview-api' into daemon-arch (fix SSE + scrollback params)
  • 367ebd0 Merge branch 'fixup-preview-api' into daemon-arch (fix all HTTPClient API paths)
  • 47f721a Merge branch 'fixup-preview-fallback' into daemon-arch (daemon API fallback for preview/keys)
  • 73848b7 Merge branch 'fixup-remote-final' into daemon-arch (session leader CWD + Host field + debug log)
  • 88daaa4 Merge branch 'fixup-routing' into daemon-arch (cursor-based host routing for n/w/W/P)
  • 1ae80fd Merge branch 'fixup-sendkeys' into daemon-arch (remote fullscreen key forwarding via daemon API)
  • a6ade01 Merge branch 'fixup-socket-retry' into daemon-arch (retry socket tunnel + markConnected)
  • e76f66c Merge branch 'fixup-spawn' into daemon-arch (wire DetectRemotePath for SSH session creation)
  • 544bce7 Merge branch 'fixup-tests' into daemon-arch (fix daemon test paths and SSH args)
  • 0be4903 Merge branch 'fixup-tunnel-wait' into daemon-arch (wait for tunnel port before health check)
  • 3b02362 Merge branch 'fixup-wt-mirror' into daemon-arch (mirror windows for w/W/P/worker)
  • a939757 Merge branch 'framework' into daemon-arch (Phase 0: API types and interfaces)
  • d9cd9b6 Merge branch 'hardening' into daemon-arch (Phase 5: reconnection, UX, version check)
  • e057f67 Merge branch 'mirror-window' into daemon-arch (mirror window approach, -840 lines)
  • d8ea5be Merge branch 'prompt-search' into stg
  • 509c97a Merge branch 'refactor' into daemon-arch (code review fixes: -1560 lines)
  • de19403 Merge branch 'rename-wt-path' into stg
  • 02bca6c Merge branch 'ssh-msg' into stg
  • f7a558e Merge branch 'ssh-worktree' into stg
  • 11ca7e0 Merge branch 'stg' into rename-wt-path
  • e7950b4 Merge branch 'stg' into rename-wt-path
  • c09a81e Merge branch 'tui-remote' into daemon-arch (Phase 3: RemoteProvider + HTTPClient)
  • 42a98ee Merge branch 'tunnel' into daemon-arch (Phase 2.1+2.3: SSH Tunnel + Lifecycle)
  • a84e6d8 Merge commit '8237901' into feat-msg-create-cli
  • f31140b Revert "Merge branch 'fixup-fullscreen-error' into daemon-arch (block fullscreen on error + C-v in fullscreen)"
  • 988a284 debug: add remote connection flow logging to /tmp/lazyclaude-debug.log
  • 9179d24 feat: Phase 5 hardening - reconnection, UX, version check, socket health
  • 2413caa feat: SSH support for w, W, P commands (worktree/PM operations)
  • eed2a54 feat: add GitRunner interface for local/SSH git command abstraction
  • cfb5670 feat: add HTTPClient and RemoteProvider for daemon API
  • e5c70a5 feat: add SSH config host chooser for 'c' key
  • 21978fc feat: add SSH password authentication via SSH_ASKPASS mechanism
  • 885fe93 feat: add SSH tunnel, remote daemon lifecycle, and connection manager
  • 977f969 feat: add curl-based lazyclaude shell function for SSH remote sessions
  • 19c204f feat: add daemon API types, interfaces, and composite provider
  • 9727f18 feat: add daemon HTTP server with REST API and SSE notifications
  • dcc35af feat: add dual line numbers to DiffPopup inline format
  • b761e06 feat: add hook endpoints to daemon for remote tool notifications
  • 1d04613 feat: add hook-based activity state to /msg/sessions response
  • d1e6751 feat: add issue message type to msg send allowlist
  • 2d95e78 feat: add lazyclaude deploy command for remote binary deployment
  • 1552e09 feat: add lazyclaude sessions and msg send CLI subcommands
  • 35b784b feat: add msg create CLI subcommand and reject self-send in msg send
  • 0538bff feat: add sessions resume command with GC'd session fallback
  • b485ebc feat: add tmux socket forwarding and CompositeProvider wiring (Phase 3.5)
  • b0f1e04 feat: add unified BuildScript for local/SSH Claude Code launch scripts
  • ef655eb feat: auto-build binary on TPM install if missing
  • 4025791 feat: clean inline diff format, universal popup scroll, switch hints
  • e72e70e feat: enable DiffPopup for Write tool notifications
  • dbac149 feat: enable SSH-backed MCP editing for remote sessions (Bug 2 Phase 2)
  • f1452cb feat: expand log coloring to 7 categories with dim timestamps
  • 610f0af feat: extract base.md, compose role+base prompts, add custom prompt files
  • e4797a7 feat: implement mirror window approach for remote session unification
  • 29cee39 feat: improve log panel with clear, coloring, and prefix removal
  • 66f2324 feat: move prompts to top-level dir and add custom prompt search
  • 5d0effe feat: optimistic session creation with daemon CWD API
  • 04f08ce feat: pass --session-id to Claude Code CLI
  • 750b855 feat: pass window name via _LC_WINDOW env for reliable SSH activity tracking
  • 9c89c79 feat: persist error display until dismissed, add Esc/C-v error actions
  • 16c132a feat: route Edit tool notifications to DiffPopup
  • fedfd9b feat: route fullscreen key forwarding through daemon API for remote sessions
  • 0535934 feat: show SSH host in sessions output
  • fdabfe1 feat: show SSH hostname on project node instead of session nodes
  • 0cb6f5e feat: update pm/worker prompts to use msg create for spawning
  • 529d2ce fix(bug5): document SSEToolInfoCallback lock contract + gofmt alignment
  • 49675cf fix(bug5): route remote permission popup actions via SessionID hop
  • c11a0e5 fix(daemon): keep RemoteProvider session cache coherent on create/delete
  • 95fde7e fix(daemon): resolve SSE SessionID via session store lookup
  • 3c3228d fix(daemon): route remote scrollback through daemon API (Bug 3 Phase 2)
  • 725ede2 fix(gui): always clear flag and reset cursors on empty-tree recovery
  • 8b8eac6 fix(gui): disable MCP/plugin editing on remote sessions with placeholder
  • 00e13c4 fix(gui): harden remote-disable guard against filter edge cases
  • f2b87f9 fix(gui): prefer live node over stale flag in guardRemoteOp
  • dd927c3 fix(gui): re-sync provider context inside guardRemoteOp and Esc restore
  • 7b5c6ea fix(gui): reset projectDir to CWD when empty-tree recovery fires
  • a25ed88 fix(gui): resync plugin panel every layout to catch out-of-band tree rebuilds
  • 0480869 fix(gui): sync panel state at cursor-moving paths instead of inside guard
  • 53f554f fix(mcp): atomic SetRemote closes mixed-pair race on host/projectDir
  • 3552c90 fix(mcp): pass host explicitly through SSH helpers to avoid mid-flight races
  • 04546fa fix(mcp): unconditionally SetRemote on empty-tree recovery
  • 00bc84f fix: N must use pendingHost (pane-based), not resolveHost
  • 308a9ad fix: accept X-Claude-Code-Ide-Authorization header in daemon hook endpoints
  • 96689f2 fix: accept all auth headers in daemon (X-Auth-Token, X-Claude-Code-Ide-Authorization)
  • ab9a1bd fix: add --resume flag to launcher script for session resume
  • 29039b8 fix: add ControlMaster=no to all SSH, fix HasSession error connecting, fix CreateSession path
  • d444939 fix: add GC to daemon for tmux window sync and session cleanup
  • 5ac5eaa fix: add HasActiveDialog guard and unify callback style
  • f075ba9 fix: add clarifying comment for pane dedup logic
  • 0d03b31 fix: add daemon API fallback when tmux socket operations fail
  • b5cfa4b fix: add lazyclaude shell function to writeRemoteScript for SSH sessions
  • 80b3edb fix: add mapping debug logs to completeRemoteCreate
  • e843d9f fix: add nil guard for result in handleMsgCreate
  • b0beee7 fix: address PM review findings (doc comments + Create hook test)
  • 3b49b11 fix: address PM review findings for SSH askpass
  • 20c160e fix: address codex review findings
  • 3957215 fix: address codex review findings for Edit dispatch
  • 6c9af1a fix: address codex review findings for session resume
  • 8b52a73 fix: address final go-review findings
  • 87efbe4 fix: address go-review CRITICAL and HIGH findings
  • 0365f48 fix: address go-review HIGH and MEDIUM findings
  • 45a1ab2 fix: address go-review HIGH and MEDIUM findings
  • d369725 fix: address go-review HIGH findings for Phase 3.5
  • 029e153 fix: address go-review MEDIUM findings
  • 69914dd fix: address go-review MEDIUM findings
  • 986811b fix: address go-review findings
  • 93ff1bf fix: address go-review findings
  • 8dedf80 fix: address go-review findings
  • db9fc85 fix: address go-review findings
  • 2108f28 fix: address go-review findings
  • 38052eb fix: address go-review findings
  • 00ec3f9 fix: address go-review findings
  • c6dd810 fix: address go-review findings (2x HIGH, 4x MEDIUM)
  • 9375f0e fix: address go-review findings (3x MEDIUM)
  • b243a71 fix: address go-review findings (3x MEDIUM)
  • cd45285 fix: address go-review findings (4x MEDIUM)
  • 00e7952 fix: address go-review findings (Role test coverage + edge case test)
  • a2072e1 fix: address go-review findings (remove duplicated allowlist, verify error body)
  • cfb1dda fix: address go-review findings for Edit dispatch
  • e361241 fix: address go-review findings for Phase 4
  • 5c1a3bc fix: address go-review findings for Phase 5
  • 3770c84 fix: address go-review findings for SSH askpass implementation
  • 7fea153 fix: address go-review findings for SSH host chooser
  • f6598ec fix: address go-review findings for SSH worktree/PM support
  • 661e829 fix: address go-review findings for command service refactoring
  • 669ad24 fix: address go-review findings for deploy cleanup
  • 0fa28ee fix: address go-review findings for fallback implementation
  • a9745d2 fix: address go-review findings for log improvements
  • 5f02244 fix: address go-review findings for mirror window creation
  • 66cf4cb fix: address go-review findings for mirror window fixes
  • 500276e fix: address go-review findings for mirror window implementation
  • 8159c50 fix: address go-review findings for proc CWD detection
  • 811330f fix: address go-review findings for refactor
  • ceb31da fix: address go-review findings for remote key forwarding
  • 12f77f5 fix: address go-review findings for scroll fix
  • f810da9 fix: address go-review findings for session resume
  • 37e4c9f fix: address go-review findings for tunnel wait
  • 5d8f135 fix: address go-review findings for tunnel/lifecycle/connection
  • 38674da fix: address go-review findings in HTTPClient and RemoteProvider
  • 92cf2cb fix: address go-review findings in daemon framework
  • a419ba7 fix: address go-review findings in daemon server
  • bfcf96d fix: address go-review findings — export prompt vars, remove dead code
  • 5e31631 fix: address go-review round 2 (MarkFlagRequired, remove dead default branch)
  • 0961226 fix: address go-review round 2 findings
  • fda5c17 fix: align HTTPClient API paths with daemon server routes
  • 5bfeeca fix: align enrichWithActivity window name derivation with WindowName()
  • a346c05 fix: align scrollback query params and SSE endpoint with server
  • 7bca216 fix: align visual format with plan (ExtractHunkLabel, indent, blank lines)
  • c6ba064 fix: allow fullscreen for error sessions, render error text as content
  • aa5027e fix: always show absolute paths in sessions output
  • 51992bf fix: always show activity field in /msg/sessions response
  • f477591 fix: async Rename + unify error display to showError
  • 5d265a5 fix: async Sessions cache + composite error callback
  • 27cd08d fix: block fullscreen on error display, register error actions in fullscreen scope
  • 7c2da95 fix: block make install from worktrees
  • 9362d1c fix: bump generation before Exit to invalidate in-flight captures
  • 4df686a fix: cd to session path in launcher script to prevent login shell CWD override
  • 7a101fd fix: clamp scroll position on viewport resize
  • e7ee1c5 fix: clear view content and TextArea in all worktree dialogs
  • b67bb7f fix: create mirror windows for worktree/PM/worker remote sessions
  • 208abcc fix: create tmux error window for failed placeholder sessions
  • 48ff847 fix: defer remote connection to first remote operation
  • 2ff2e04 fix: display SSH host as 'hostname: project' format
  • ecd9745 fix: ensure lazyclaude tmux session exists before mirror window creation + SSH E2E infra
  • 04acf5d fix: filter negated SSH patterns and surface config errors
  • 6475af4 fix: forward SSE activity events to local broker for remote sidebar display
  • 32d706d fix: guard DiffAdd/DiffDel against zero line numbers
  • f778222 fix: handle dialog failure and sanitize SSH prompt
  • fe1b9bd fix: handle inline comments in SSH config Host lines
  • 4b14a87 fix: include trailing space in dim gray timestamp region
  • 7f7d399 fix: inject hooks settings into SSH sessions created via n/N
  • 82a2b6e fix: make HistorySize queries async in scroll mode
  • 446f7dc fix: make createSession, DeleteSession, PurgeOrphans async
  • 95b3bb6 fix: match SSE session ID prefix against full UUID in activity handler
  • 77b8059 fix: merge remote sessions into Projects() for sidebar display
  • 5added1 fix: mouse scroll freeze and ToTop after mouse-wheel entry
  • 226da63 fix: only mirror Running remote sessions on connect (skip dead/orphan from stale state.json)
  • 895dbe0 fix: pass error message via env var to prevent shell injection
  • 767ff29 fix: pass explicit projectRoot to store.Add to prevent remote worktree duplication
  • 8fbe9cb fix: pass resolved binary path from lazyclaude.tmux to launch.sh via env var
  • 8ca65de fix: placeholder shows 'connecting...' then replaced with real session on correct project group
  • 8de33e9 fix: prefer PATH-installed binary in tmux plugin
  • 2b93ca9 fix: preserve diff fields in SSE handler for remote DiffPopup
  • 156b094 fix: preserve existing remote paths in resolveRemotePath
  • 6a76fba fix: preserve pending window file for SSH hook resolution across PIDs
  • 4033093 fix: prevent GC from deleting live sessions due to stale sync state
  • 74f262b fix: prevent double blank line before first hunk
  • d3a43b6 fix: prevent mouse scroll from freezing by eliminating double capture
  • 81b69fe fix: prevent preview from overwriting showError display
  • 5e50b6a fix: prevent scroll position loss during active Claude Code output
  • f3591a5 fix: propagate context and add fileReader abstraction for testability
  • 4595a63 fix: propagate daemon Path to mirror sessions
  • 2b805d5 fix: quote sshHost in mirror SSH command to prevent shell injection
  • d28ac80 fix: read custom prompts from remote host via SSH for remote sessions
  • 03a129a fix: remote activity state via session-ID hop in SSE callback
  • d97ea86 fix: remove deploy command, unify daemon paths, fix startup bugs
  • 62fb204 fix: remove kill-server from test cleanup to protect live sessions
  • 74998ea fix: remove placeholder after remote session created (shown via daemon)
  • 811651a fix: remove plugin/MCP errMsg, use showError for all errors
  • 099c523 fix: remove shell.Quote from buildClaudeCommand and tighten hasSessionFlag
  • bf749ff fix: remove unused os/exec import in fullscreen_test.go
  • 7392970 fix: resolve 3 mirror window bugs (empty TmuxWindow, dead cleanup, currentHostFn)
  • 09d872f fix: resolve 3 remote session creation bugs
  • 20fedff fix: resolve SSH activity by window name fallback in enrichWithActivity
  • 98c1057 fix: resolve cherry-pick conflicts from cleanup-cruft merge
  • 8cd4f50 fix: resolve merge conflicts (DaemonInfo dedup, test helper renames)
  • 750a0fb fix: resolve mirror tmux window ID eagerly at CreateMirror
  • b68cb33 fix: resolve remote path after connection in SessionCommandService (not before)
  • 4a86618 fix: resolveHost must distinguish "on local node" from "no node selected"
  • 53e9cde fix: retry daemon start when discovered daemon is stale (health check fails)
  • 994ce8f fix: retry socket tunnel after first session creation and prevent duplicate connections
  • 4819663 fix: return "unknown" instead of empty string for ActivityUnknown
  • 5e3ab53 fix: route n key and remote ops based on cursor host, not only pendingHost
  • 87cedb2 fix: route tmux ops through Session.TmuxTarget() to fix remote attach
  • c1ecdab fix: scope error patterns to prefix, unify timestamp constant
  • 25872ec fix: set Path in completeRemoteCreate and ensureMirrorForRemoteSession
  • 31559f0 fix: set ProjectRoot in PM/worker SessionCreateRequest for correct remote path
  • 94934bc fix: set RoleWorker for CreateWorktree and ResumeWorktree
  • 76fe2b9 fix: shell-quote sess.ID in buildClaudeCommand and writeWorktreeLauncher
  • 73cc454 fix: simplify resolveRemotePath to always query remote CWD
  • 207e50c fix: skip KillWindow for orphan sessions (under verification)
  • 4989dbc fix: skip bracket wildcard patterns in ParseSSHHosts
  • 5ab3367 fix: source setup.sh inside login shell to persist PATH across profiles
  • b43e884 fix: support remote lazygit launch and remote popup notifications
  • 0d05a94 fix: surface os.UserHomeDir error in ConnectRemote
  • 8782e77 fix: tmux lazyclaude path
  • a6c2e5a fix: unify daemon.json path + lazyclaude PATH fallback + add fixup plan docs
  • 4f1cad1 fix: update daemon test expectations to match implementation
  • 6325d55 fix: update install.sh URL from main to prod branch
  • 5ff7274 fix: update lifecycle test to match new StartRemoteDaemon command
  • c678ccd fix: use --resume instead of --session-id + --resume
  • 64316e4 fix: use /proc to detect user shell CWD in daemon endpoint
  • d688cfd fix: use BASH_ENV instead of export -f for lazyclaude shell function
  • 0744461 fix: use PATH-based executable instead of BASH_ENV for lazyclaude command
  • d6211a7 fix: use SetOrigin for popup scroll instead of manual slicing
  • ace7639 fix: use WorktreePathSegment in branchFromWorktreePath and clarify path naming
  • c04f443 fix: use grouped tmux sessions for mirrors and add Role to SessionCreateResponse
  • 5ec9082 fix: use host as placeholder path instead of local path
  • 26be891 fix: use session-specific hooks settings path to avoid concurrent race
  • 5e00b3e fix: use stored project path for SessionNode in currentProjectRoot
  • 227905e fix: wait for SSH tunnel to become connectable before returning from Start()
  • f3e05e6 fix: wire DetectRemotePath into SSH session creation
  • 6d694f6 fix: worktree dialog stale text and SSH project tree duplication
  • acd7de6 merge: Bug 2 Phase 1 disable MCP/plugin editing on remote (#fix-mcp-plugin-remote)
  • 4da340e merge: Bug 2 Phase 2 SSH-backed remote MCP editing (#bug2-phase2-mcp-ssh)
  • c4524d7 merge: Bug 3 Phase 2 route remote scrollback via daemon API (#bug3-phase2-remote-scrollback)
  • 33cace5 merge: Bug 5 Phase B remote popup action routing via SessionID hop (#bug5-popup-routing)
  • f897b5d merge: DiffPopup format overhaul with dual line numbers (#diff-popup)
  • e3d37fd merge: SSH config host chooser for 'c' key (#ssh-host-chooser)
  • dcc7262 merge: SSH password authentication via SSH_ASKPASS (#ssh-askpass)
  • dd6cf77 merge: add --resume flag for session resume (#resume-fix2)
  • 742924e merge: dead code cleanup + stale comments after Bug 1-5 (#cleanup-dead-code)
  • 8b5478a merge: final cleanup — CODEMAPS, plan archive, dead code removal (#cleanup-final)
  • 532a127 merge: fix --resume flag to use --resume instead of --session-id + --resume (#resume-fix2)
  • f673a30 merge: fix Bug 4 remote activity state (3 root causes) (#fix-activity-state-key)
  • 38e95c7 merge: fix mouse scroll freeze in scroll mode (#scroll-fix)
  • 71df985 merge: fix remote attach via Session.TmuxTarget() helper (#fix-attach-remote)
  • d3b0957 merge: fix scroll position loss during active Claude Code output (#scroll-fix)
  • 4e0c562 merge: log panel improvements with category coloring (#log-improve)
  • 66632dc merge: pass --session-id to Claude Code CLI (#add-session-id-flag)
  • 439c9bc merge: route Edit tool notifications to DiffPopup (#edit-diff)
  • c5390b9 merge: session resume with GC'd session fallback (#resume-fix2)
  • 8f3fe8e refactor(ddmin): remove unnecessary launcher cd workaround
  • ffa7aae refactor: address code review findings (C-1/C-2, H-1..H-5, M-2)
  • bcb2a4d refactor: address go-review findings for host routing
  • 168d67c refactor: address go-review findings for remote session fixes
  • ac14b3b refactor: consolidate duplicated code (debugLog, PosixQuote, pendingTools, mirror helpers)
  • e7e8a01 refactor: delete old SSH code paths and simplify SessionProvider (Phase 4)
  • 6dcf14f refactor: embed MCP server in daemon, remove duplicated hook endpoints
  • 5e70aa9 refactor: extract SessionCommandService, MirrorManager, RemoteHostManager from guiCompositeAdapter
  • 8237901 refactor: improve PM/Worker prompt structure with checkbox-based review flow
  • f3a0664 refactor: integrate BuildScript and GitRunner into manager.go
  • 490fc01 refactor: move mirror creation to RemoteProvider PostCreateHook
  • ae776fe refactor: remove dead code and fix stale comments after Bug 1-5
  • 8be3c13 refactor: remove socket tunnel code and gate debug logs behind LAZYCLAUDE_DEBUG
  • 70f6365 refactor: rename worktree path from .claude/worktrees to .lazyclaude/worktrees
  • 0d46295 refactor: use fixed hook- prefix for PID cache keys across all handlers
  • 0bda4f1 release: v0.2.0 — DiffPopup, session resume, log coloring, scroll fixes