Darkmatter · github-bot stage: prod
preview@internal.darkmatter
Events received
84696
Ignored
84652
Jobs dispatched
45

Event db5d0b9e…

← All events

Event

Delivery
db5d0b9e-6533-11f1-9eba-d392d21d89bc
Event
push
Action
Received
2026-06-11T01:21:23.468Z
Signature
valid
Parsed
yes
Sender
czxtm
Repo
darkmatter/stackpanel
Status
ignored — not_trunk_branch

Headers

{
  "accept": "*/*",
  "accept-encoding": "gzip, br",
  "cf-connecting-ip": "140.82.115.96",
  "cf-ipcountry": "US",
  "cf-ray": "a09ccc799cd220ab",
  "cf-visitor": "{\"scheme\":\"https\"}",
  "connection": "Keep-Alive",
  "content-length": "21235",
  "content-type": "application/json",
  "host": "github-bot.darkmatter.io",
  "user-agent": "GitHub-Hookshot/576ea10",
  "x-forwarded-proto": "https",
  "x-github-delivery": "db5d0b9e-6533-11f1-9eba-d392d21d89bc",
  "x-github-event": "push",
  "x-github-hook-id": "628737947",
  "x-github-hook-installation-target-id": "3663660",
  "x-github-hook-installation-target-type": "integration",
  "x-real-ip": "140.82.115.96"
}

Payload

{
  "ref": "refs/heads/feature/stackpanel-reload",
  "before": "51633f921a741d7d5788ce608d8bf795ad77e67a",
  "after": "e6f18a546f8d7a5d9ffc8b156e3bdd1a37942957",
  "repository": {
    "id": 1110409800,
    "node_id": "R_kgDOQi-CSA",
    "name": "stackpanel",
    "full_name": "darkmatter/stackpanel",
    "private": false,
    "owner": {
      "name": "darkmatter",
      "email": "hello@dm.sh",
      "login": "darkmatter",
      "id": 17834193,
      "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
      "avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/darkmatter",
      "html_url": "https://github.com/darkmatter",
      "followers_url": "https://api.github.com/users/darkmatter/followers",
      "following_url": "https://api.github.com/users/darkmatter/following{/other_user}",
      "gists_url": "https://api.github.com/users/darkmatter/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/darkmatter/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/darkmatter/subscriptions",
      "organizations_url": "https://api.github.com/users/darkmatter/orgs",
      "repos_url": "https://api.github.com/users/darkmatter/repos",
      "events_url": "https://api.github.com/users/darkmatter/events{/privacy}",
      "received_events_url": "https://api.github.com/users/darkmatter/received_events",
      "type": "Organization",
      "user_view_type": "public",
      "site_admin": false
    },
    "html_url": "https://github.com/darkmatter/stackpanel",
    "description": "Ship products, not plumbing. Making Nix dev environments accessible to all.",
    "fork": false,
    "url": "https://api.github.com/repos/darkmatter/stackpanel",
    "forks_url": "https://api.github.com/repos/darkmatter/stackpanel/forks",
    "keys_url": "https://api.github.com/repos/darkmatter/stackpanel/keys{/key_id}",
    "collaborators_url": "https://api.github.com/repos/darkmatter/stackpanel/collaborators{/collaborator}",
    "teams_url": "https://api.github.com/repos/darkmatter/stackpanel/teams",
    "hooks_url": "https://api.github.com/repos/darkmatter/stackpanel/hooks",
    "issue_events_url": "https://api.github.com/repos/darkmatter/stackpanel/issues/events{/number}",
    "events_url": "https://api.github.com/repos/darkmatter/stackpanel/events",
    "assignees_url": "https://api.github.com/repos/darkmatter/stackpanel/assignees{/user}",
    "branches_url": "https://api.github.com/repos/darkmatter/stackpanel/branches{/branch}",
    "tags_url": "https://api.github.com/repos/darkmatter/stackpanel/tags",
    "blobs_url": "https://api.github.com/repos/darkmatter/stackpanel/git/blobs{/sha}",
    "git_tags_url": "https://api.github.com/repos/darkmatter/stackpanel/git/tags{/sha}",
    "git_refs_url": "https://api.github.com/repos/darkmatter/stackpanel/git/refs{/sha}",
    "trees_url": "https://api.github.com/repos/darkmatter/stackpanel/git/trees{/sha}",
    "statuses_url": "https://api.github.com/repos/darkmatter/stackpanel/statuses/{sha}",
    "languages_url": "https://api.github.com/repos/darkmatter/stackpanel/languages",
    "stargazers_url": "https://api.github.com/repos/darkmatter/stackpanel/stargazers",
    "contributors_url": "https://api.github.com/repos/darkmatter/stackpanel/contributors",
    "subscribers_url": "https://api.github.com/repos/darkmatter/stackpanel/subscribers",
    "subscription_url": "https://api.github.com/repos/darkmatter/stackpanel/subscription",
    "commits_url": "https://api.github.com/repos/darkmatter/stackpanel/commits{/sha}",
    "git_commits_url": "https://api.github.com/repos/darkmatter/stackpanel/git/commits{/sha}",
    "comments_url": "https://api.github.com/repos/darkmatter/stackpanel/comments{/number}",
    "issue_comment_url": "https://api.github.com/repos/darkmatter/stackpanel/issues/comments{/number}",
    "contents_url": "https://api.github.com/repos/darkmatter/stackpanel/contents/{+path}",
    "compare_url": "https://api.github.com/repos/darkmatter/stackpanel/compare/{base}...{head}",
    "merges_url": "https://api.github.com/repos/darkmatter/stackpanel/merges",
    "archive_url": "https://api.github.com/repos/darkmatter/stackpanel/{archive_format}{/ref}",
    "downloads_url": "https://api.github.com/repos/darkmatter/stackpanel/downloads",
    "issues_url": "https://api.github.com/repos/darkmatter/stackpanel/issues{/number}",
    "pulls_url": "https://api.github.com/repos/darkmatter/stackpanel/pulls{/number}",
    "milestones_url": "https://api.github.com/repos/darkmatter/stackpanel/milestones{/number}",
    "notifications_url": "https://api.github.com/repos/darkmatter/stackpanel/notifications{?since,all,participating}",
    "labels_url": "https://api.github.com/repos/darkmatter/stackpanel/labels{/name}",
    "releases_url": "https://api.github.com/repos/darkmatter/stackpanel/releases{/id}",
    "deployments_url": "https://api.github.com/repos/darkmatter/stackpanel/deployments",
    "created_at": 1764916677,
    "updated_at": "2026-06-11T00:58:55Z",
    "pushed_at": 1781140881,
    "git_url": "git://github.com/darkmatter/stackpanel.git",
    "ssh_url": "git@github.com:darkmatter/stackpanel.git",
    "clone_url": "https://github.com/darkmatter/stackpanel.git",
    "svn_url": "https://github.com/darkmatter/stackpanel",
    "homepage": "https://stackpanel.com",
    "size": 117448,
    "stargazers_count": 5,
    "watchers_count": 5,
    "language": "TypeScript",
    "has_issues": true,
    "has_projects": true,
    "has_downloads": true,
    "has_wiki": true,
    "has_pages": false,
    "has_discussions": false,
    "forks_count": 1,
    "mirror_url": null,
    "archived": false,
    "disabled": false,
    "open_issues_count": 1,
    "license": null,
    "allow_forking": true,
    "is_template": false,
    "web_commit_signoff_required": false,
    "has_pull_requests": true,
    "pull_request_creation_policy": "all",
    "topics": [],
    "visibility": "public",
    "forks": 1,
    "open_issues": 1,
    "watchers": 5,
    "default_branch": "main",
    "stargazers": 5,
    "master_branch": "main",
    "organization": "darkmatter",
    "custom_properties": {}
  },
  "pusher": {
    "name": "czxtm",
    "email": "1325802+czxtm@users.noreply.github.com"
  },
  "forced": true,
  "organization": {
    "login": "darkmatter",
    "id": 17834193,
    "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
    "url": "https://api.github.com/orgs/darkmatter",
    "repos_url": "https://api.github.com/orgs/darkmatter/repos",
    "events_url": "https://api.github.com/orgs/darkmatter/events",
    "hooks_url": "https://api.github.com/orgs/darkmatter/hooks",
    "issues_url": "https://api.github.com/orgs/darkmatter/issues",
    "members_url": "https://api.github.com/orgs/darkmatter/members{/member}",
    "public_members_url": "https://api.github.com/orgs/darkmatter/public_members{/member}",
    "avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
    "description": ""
  },
  "enterprise": {
    "id": 469843,
    "slug": "darkmatter",
    "name": "darkmatter",
    "node_id": "E_kgDOAAcrUw",
    "avatar_url": "https://avatars.githubusercontent.com/b/469843?v=4",
    "description": "",
    "website_url": "darkmatter.io",
    "html_url": "https://github.com/enterprises/darkmatter",
    "created_at": "2025-09-07T16:01:00Z",
    "updated_at": "2026-06-07T16:53:26Z"
  },
  "sender": {
    "login": "czxtm",
    "id": 1325802,
    "node_id": "MDQ6VXNlcjEzMjU4MDI=",
    "avatar_url": "https://avatars.githubusercontent.com/u/1325802?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/czxtm",
    "html_url": "https://github.com/czxtm",
    "followers_url": "https://api.github.com/users/czxtm/followers",
    "following_url": "https://api.github.com/users/czxtm/following{/other_user}",
    "gists_url": "https://api.github.com/users/czxtm/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/czxtm/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/czxtm/subscriptions",
    "organizations_url": "https://api.github.com/users/czxtm/orgs",
    "repos_url": "https://api.github.com/users/czxtm/repos",
    "events_url": "https://api.github.com/users/czxtm/events{/privacy}",
    "received_events_url": "https://api.github.com/users/czxtm/received_events",
    "type": "User",
    "user_view_type": "public",
    "site_admin": false
  },
  "installation": {
    "id": 131074261,
    "node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMTMxMDc0MjYx"
  },
  "created": false,
  "deleted": false,
  "base_ref": null,
  "compare": "https://github.com/darkmatter/stackpanel/compare/51633f921a74...e6f18a546f8d",
  "commits": [
    {
      "id": "e8edecea992ad3c53280efaa1e2c6fd87b9c021a",
      "tree_id": "7bcbcf8e43cc4dff234b6d901b9437e63f339667",
      "distinct": true,
      "message": "feat(reload): Phase 1 - minimal PTY wrapper\n\nAdd apps/stackpanel-reload/ Rust binary with:\n- Config: watch paths, shell command, debounce (with defaults)\n- terminal: raw mode RAII guard, is_tty(), terminal_size()\n- pty_manager: PtySession spawn/wait/resize, run_session I/O loop\n  with CI fallback (exec_direct when not a TTY)\n- main: CLI via clap (--root, --debounce, --watch, command passthrough)\n  defaults to `nix develop --impure --command $SHELL`\n- 10 unit tests passing\n\nPTY tests gated behind --features test-pty (require a real terminal).\nStdin->PTY forwarding is a known limitation (Phase 1 uses output-only\nforwarding; full bidirectional wiring comes in Phase 2).\n\nCo-Authored-By: Oz <oz-agent@warp.dev>",
      "timestamp": "2026-03-27T02:44:07-07:00",
      "url": "https://github.com/darkmatter/stackpanel/commit/e8edecea992ad3c53280efaa1e2c6fd87b9c021a",
      "author": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T02:44:07-07:00",
        "username": "czxtm"
      },
      "committer": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T02:44:07-07:00",
        "username": "czxtm"
      },
      "added": [
        "apps/stackpanel-reload/Cargo.lock",
        "apps/stackpanel-reload/Cargo.toml",
        "apps/stackpanel-reload/src/config.rs",
        "apps/stackpanel-reload/src/main.rs",
        "apps/stackpanel-reload/src/pty_manager.rs",
        "apps/stackpanel-reload/src/terminal.rs"
      ],
      "removed": [],
      "modified": []
    },
    {
      "id": "c4491c8ae7681e2d9477d04a05ad49fd8efab421",
      "tree_id": "9a504293ea052e9d5b02c43251a8ff7d27879147",
      "distinct": true,
      "message": "chore(reload): add .gitignore to exclude Rust build artifacts\n\nCo-Authored-By: Oz <oz-agent@warp.dev>",
      "timestamp": "2026-03-27T02:44:25-07:00",
      "url": "https://github.com/darkmatter/stackpanel/commit/c4491c8ae7681e2d9477d04a05ad49fd8efab421",
      "author": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T02:44:25-07:00",
        "username": "czxtm"
      },
      "committer": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T02:44:25-07:00",
        "username": "czxtm"
      },
      "added": [
        "apps/stackpanel-reload/.gitignore"
      ],
      "removed": [],
      "modified": []
    },
    {
      "id": "4d3be49a4cc508f52724f28606e620fc6123e6bc",
      "tree_id": "76424708bd966399025abd271a6201f6e9b9b9d0",
      "distinct": true,
      "message": "feat(reload): Phase 2 - file watcher + background rebuild\n\n- watcher.rs: debounced FileWatcher using notify crate\n  - Filters metadata-only events (chmod/timestamps) to avoid false triggers\n  - Deduplicates paths within a batch\n  - Skips non-existent paths gracefully at startup\n  - 3 tests: construction, content-change filter, detects writes, debounce\n\n- reloader.rs: background rebuild orchestrator (Reloader)\n  - Cancels in-flight build when new file changes arrive\n  - Spawns 'nix develop --impure --command true' to rebuild without PTY\n  - Exposes SharedBuildState (Arc<Mutex<BuildState>>) for status line (Phase 4)\n  - build_command() derives rebuild command from user's shell command\n  - 9 tests: build_command variants, BuildState initial state, process outcomes\n\n- pty_manager.rs: fix bidirectional stdin<->PTY forwarding\n  - PtySession.writer is now Option, extracted via take_writer()\n  - run_session: stdin->PTY uses Arc<Mutex<writer>> shared with output task\n  - Reloader is wired in as Task 3 (runs alongside I/O forwarding)\n\n- main.rs: register watcher + reloader modules\n\n23 tests passing, 0 failures\n\nCo-Authored-By: Oz <oz-agent@warp.dev>",
      "timestamp": "2026-03-27T02:59:06-07:00",
      "url": "https://github.com/darkmatter/stackpanel/commit/4d3be49a4cc508f52724f28606e620fc6123e6bc",
      "author": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T02:59:06-07:00",
        "username": "czxtm"
      },
      "committer": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T02:59:06-07:00",
        "username": "czxtm"
      },
      "added": [
        "apps/stackpanel-reload/src/reloader.rs",
        "apps/stackpanel-reload/src/watcher.rs"
      ],
      "removed": [],
      "modified": [
        "apps/stackpanel-reload/Cargo.lock",
        "apps/stackpanel-reload/Cargo.toml",
        "apps/stackpanel-reload/src/main.rs",
        "apps/stackpanel-reload/src/pty_manager.rs"
      ]
    },
    {
      "id": "18026df4b8d4dd36b86cd75fd2e06d61894dfc15",
      "tree_id": "8fe09928e85695983565b724de534825ffe7f62c",
      "distinct": true,
      "message": "feat(reload): Phase 3 - PTY hot-swap via generation-based event loop\n\nArchitecture change: run_session is now a proper async event loop.\n\n- SessionEvent enum: PtyOutput{gen,bytes}, PtyEof{gen}, Stdin, SwapReady\n- start_pty_forwarder(): spawns a thread per PTY session tagged with a\n  generation ID; stale bytes from old sessions are ignored\n- perform_swap(): clear screen + notification, spawn new nix develop PTY,\n  replace writer, start new forwarder, drop old session (SIGHUP → old exits)\n\nReloader changes:\n- new_with_ready() returns (Reloader, Receiver<()>)\n- ready_tx cloned into build task; fires try_send(()) on build success\n- run_session wires ready_rx → SwapReady → perform_swap\n\nPtySession changes:\n- reader is now Option (matching writer) with take_reader()\n\nTests (2 new):\n- new_with_ready_returns_receiver: verifies API\n- ready_signal_fires_on_successful_build: end-to-end signal flow\n\n25 tests passing, 0 failures\n\nCo-Authored-By: Oz <oz-agent@warp.dev>",
      "timestamp": "2026-03-27T03:22:53-07:00",
      "url": "https://github.com/darkmatter/stackpanel/commit/18026df4b8d4dd36b86cd75fd2e06d61894dfc15",
      "author": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T03:22:53-07:00",
        "username": "czxtm"
      },
      "committer": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T03:22:53-07:00",
        "username": "czxtm"
      },
      "added": [],
      "removed": [],
      "modified": [
        "apps/stackpanel-reload/src/pty_manager.rs",
        "apps/stackpanel-reload/src/reloader.rs"
      ]
    },
    {
      "id": "3eac6f5f78a6bbfbc4cb28e3a4fe2032545637f4",
      "tree_id": "c408c5ca4d18285a670a61445cc730f2641f2ea9",
      "distinct": true,
      "message": "feat(reload): Phase 4 - status line\n\n- status_line.rs: StatusLineHandle backed by polling SharedBuildState\n  - draw() writes to stderr via DECSC/DECRC cursor save-restore + ANSI\n    so the shell prompt on stdout is never disturbed\n  - render(): Idle (dim watch msg), Rebuilding (braille spinner + yellow),\n    Succeeded (green checkmark, auto-resets to Idle after 3s), Failed (red\n    with exit code + retry hint)\n  - Drop impl: aborts task + clears the status row cleanly\n  - 9 unit tests covering all states, spinner wrap, ANSI presence, Send\n\n- pty_manager.rs: wire status line into run_session (wired to Reloader's\n  SharedBuildState; lives until session exits)\n- main.rs: register status_line module\n\n34 tests passing, 0 failures\n\nCo-Authored-By: Oz <oz-agent@warp.dev>",
      "timestamp": "2026-03-27T03:30:52-07:00",
      "url": "https://github.com/darkmatter/stackpanel/commit/3eac6f5f78a6bbfbc4cb28e3a4fe2032545637f4",
      "author": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T03:30:52-07:00",
        "username": "czxtm"
      },
      "committer": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T03:30:52-07:00",
        "username": "czxtm"
      },
      "added": [
        "apps/stackpanel-reload/src/status_line.rs"
      ],
      "removed": [],
      "modified": [
        "apps/stackpanel-reload/src/main.rs",
        "apps/stackpanel-reload/src/pty_manager.rs"
      ]
    },
    {
      "id": "8b4738783d4083d1cdc851038e603298fddd101a",
      "tree_id": "d38271b672e11b70ab2701a98313803606ca74ac",
      "distinct": true,
      "message": "feat(reload): Phase 5 - Nix integration\n\n- nix/stackpanel/devshell/reload.nix: new module\n  - Options: stackpanel.devshell.reload.{enable, watchPaths, debounceMs, package}\n  - enable = false by default (opt-in)\n  - Builds stackpanel-reload via rustPlatform.buildRustPackage from\n    apps/stackpanel-reload/ using the Cargo.lock\n  - Adds binary to devshell.packages when enabled\n  - Registers 'shell' script: stackpanel-reload with all watch paths +\n    debounce, passing through to 'nix develop --impure --command $SHELL'\n  - Adds MOTD hint for the 'shell' command\n\n- nix/stackpanel/devshell/core.nix: import reload.nix\n\nNix syntax validated. To enable:\n\n  # .stack/config.nix\n  stackpanel.devshell.reload.enable = true;\n\n  # Then use:\n  stackpanel shell   # or: x shell\n\nCo-Authored-By: Oz <oz-agent@warp.dev>",
      "timestamp": "2026-03-27T03:32:03-07:00",
      "url": "https://github.com/darkmatter/stackpanel/commit/8b4738783d4083d1cdc851038e603298fddd101a",
      "author": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T03:32:03-07:00",
        "username": "czxtm"
      },
      "committer": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T03:32:03-07:00",
        "username": "czxtm"
      },
      "added": [
        "nix/stackpanel/devshell/reload.nix"
      ],
      "removed": [],
      "modified": [
        "nix/stackpanel/devshell/core.nix"
      ]
    },
    {
      "id": "faeed18b9d902cc5488a0bffe2be17caecc13286",
      "tree_id": "fce80a12f6f610d010513494298ed33a6ef02c47",
      "distinct": true,
      "message": "feat(reload): Phase 6 - polish\n\nKeybindings:\n- Ctrl+Alt+R: triggers immediate rebuild (sends SwapReady into event loop)\n- Ctrl+Alt+L: prints list of currently watched files to stdout\n- Implemented via handle_keybinding() checking ESC+Ctrl sequences\n- 3 new tests: ctrl_alt_r, ctrl_alt_l, ordinary_keystrokes_ignored\n\nFile logging:\n- --log FILE flag writes tracing output to a file\n- Auto-detects $STACKPANEL_STATE_DIR/reload.log when flag is absent\n- Uses tracing-appender non-blocking writer\n\nCI graceful degradation:\n- exec_direct() path (non-TTY) was already in place from Phase 1\n- is_tty() check bypasses all PTY/status-line machinery in CI\n\n37 tests passing, 0 failures\n\nCo-Authored-By: Oz <oz-agent@warp.dev>",
      "timestamp": "2026-03-27T03:34:10-07:00",
      "url": "https://github.com/darkmatter/stackpanel/commit/faeed18b9d902cc5488a0bffe2be17caecc13286",
      "author": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T03:34:10-07:00",
        "username": "czxtm"
      },
      "committer": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T03:34:10-07:00",
        "username": "czxtm"
      },
      "added": [],
      "removed": [],
      "modified": [
        "apps/stackpanel-reload/Cargo.lock",
        "apps/stackpanel-reload/Cargo.toml",
        "apps/stackpanel-reload/src/main.rs",
        "apps/stackpanel-reload/src/pty_manager.rs"
      ]
    },
    {
      "id": "828961527d342d7cda21ab88bcd8f88986ee196b",
      "tree_id": "e1d16473960dfcbb70a882e07514991ab20c9fcc",
      "distinct": true,
      "message": "docs(reload): add README quickstart\n\nCo-Authored-By: Oz <oz-agent@warp.dev>",
      "timestamp": "2026-03-27T04:04:06-07:00",
      "url": "https://github.com/darkmatter/stackpanel/commit/828961527d342d7cda21ab88bcd8f88986ee196b",
      "author": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T04:04:06-07:00",
        "username": "czxtm"
      },
      "committer": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T04:04:06-07:00",
        "username": "czxtm"
      },
      "added": [
        "apps/stackpanel-reload/README.md"
      ],
      "removed": [],
      "modified": []
    },
    {
      "id": "a0e35feaec406a08bc81478957b5e1044b687e23",
      "tree_id": "51c62e4ea9118edf98bc554251776bc425518602",
      "distinct": true,
      "message": "fix(reload): upgrade portable-pty 0.8 -> 0.9\n\nFixes fatal crash: portable-pty 0.8 asserts on PTY write failure.\n0.9 handles it gracefully.",
      "timestamp": "2026-03-27T18:21:25-07:00",
      "url": "https://github.com/darkmatter/stackpanel/commit/a0e35feaec406a08bc81478957b5e1044b687e23",
      "author": {
        "name": "oz",
        "email": "me@cooperm.com",
        "date": "2026-03-27T18:17:22-07:00",
        "username": "czxtm"
      },
      "committer": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-27T18:21:25-07:00",
        "username": "czxtm"
      },
      "added": [],
      "removed": [],
      "modified": [
        "apps/stackpanel-reload/Cargo.lock",
        "apps/stackpanel-reload/Cargo.toml"
      ]
    },
    {
      "id": "89a22b775e3c7820b6ef5a679480a23cc3899c5b",
      "tree_id": "ac2c87bf4d09231526a5113e1e35aa592a0845fb",
      "distinct": true,
      "message": "chore: update stackpanel reload dependencies",
      "timestamp": "2026-03-28T03:01:37-07:00",
      "url": "https://github.com/darkmatter/stackpanel/commit/89a22b775e3c7820b6ef5a679480a23cc3899c5b",
      "author": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-28T03:01:37-07:00",
        "username": "czxtm"
      },
      "committer": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-28T03:01:37-07:00",
        "username": "czxtm"
      },
      "added": [
        "apps/stackpanel-reload/.stack/keys/local.pub"
      ],
      "removed": [],
      "modified": [
        ".stack/config.nix",
        "apps/stackpanel-reload/Cargo.lock",
        "apps/stackpanel-reload/Cargo.toml",
        "apps/stackpanel-reload/src/pty_manager.rs",
        "flake.lock"
      ]
    },
    {
      "id": "e6f18a546f8d7a5d9ffc8b156e3bdd1a37942957",
      "tree_id": "ea3acc19102ce7ccd0dbc997356d6a839b14d03e",
      "distinct": true,
      "message": "fix: prefer worktree root over parent marker",
      "timestamp": "2026-03-30T04:52:37-07:00",
      "url": "https://github.com/darkmatter/stackpanel/commit/e6f18a546f8d7a5d9ffc8b156e3bdd1a37942957",
      "author": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-30T04:52:37-07:00",
        "username": "czxtm"
      },
      "committer": {
        "name": "Cooper Maruyama",
        "email": "me@cooperm.com",
        "date": "2026-03-30T04:52:37-07:00",
        "username": "czxtm"
      },
      "added": [
        "tests/test_worktree_root.sh"
      ],
      "removed": [],
      "modified": [
        "nix/stackpanel/lib/paths.nix"
      ]
    }
  ],
  "head_commit": {
    "id": "e6f18a546f8d7a5d9ffc8b156e3bdd1a37942957",
    "tree_id": "ea3acc19102ce7ccd0dbc997356d6a839b14d03e",
    "distinct": true,
    "message": "fix: prefer worktree root over parent marker",
    "timestamp": "2026-03-30T04:52:37-07:00",
    "url": "https://github.com/darkmatter/stackpanel/commit/e6f18a546f8d7a5d9ffc8b156e3bdd1a37942957",
    "author": {
      "name": "Cooper Maruyama",
      "email": "me@cooperm.com",
      "date": "2026-03-30T04:52:37-07:00",
      "username": "czxtm"
    },
    "committer": {
      "name": "Cooper Maruyama",
      "email": "me@cooperm.com",
      "date": "2026-03-30T04:52:37-07:00",
      "username": "czxtm"
    },
    "added": [
      "tests/test_worktree_root.sh"
    ],
    "removed": [],
    "modified": [
      "nix/stackpanel/lib/paths.nix"
    ]
  }
}