feat(config): enable pane labels, terminal toasts, tweak kitty and niri settings

This commit is contained in:
Prad Nukala committed 2026-08-13 21:04:38 -04:00
1 parent c96c19c0f9
commit 320d8ee95b
37 files changed
+1028 -1796

No files matched your search

+2 -2
View File
@@ -1,7 +1,7 @@
onboarding = false
[ui]
show_agent_labels_on_pane_borders = false
show_agent_labels_on_pane_borders = true
agent_panel_sort = "priority"
[keys]
# tmux-style bindings (prefix is the leader, default ctrl+b)
@@ -71,4 +71,4 @@ command = "vim-herdr-navigation.right"
description = "navigate right (vim/herdr)"
[ui.toast]
delivery = "system"
delivery = "terminal"
+32
View File
@@ -144,3 +144,35 @@
2026-08-11T19:09:25.791502Z INFO herdr::client: connecting to server path=/home/prad/.config/herdr/herdr-client.sock
2026-08-11T19:09:25.993975Z INFO herdr::client: handshake succeeded version=19 encoding=SemanticFrame
2026-08-11T19:09:28.222858Z INFO herdr::logging: herdr exiting event="app.shutdown" subsystem="client" outcome="completed" pid=216140
2026-08-11T19:46:47.094693Z INFO herdr::logging: herdr starting event="app.startup" subsystem="client" outcome="started" pid=371595
2026-08-11T19:46:47.094721Z INFO herdr::client: connecting to server path=/home/prad/.config/herdr/herdr-client.sock
2026-08-11T19:46:47.303780Z INFO herdr::client: handshake succeeded version=19 encoding=SemanticFrame
2026-08-11T19:46:49.103116Z INFO herdr::logging: herdr starting event="app.startup" subsystem="client" outcome="started" pid=372056
2026-08-11T19:46:49.103138Z INFO herdr::client: connecting to server path=/home/prad/.config/herdr/herdr-client.sock
2026-08-11T19:46:49.112674Z INFO herdr::client: handshake succeeded version=19 encoding=SemanticFrame
2026-08-11T19:47:12.071854Z INFO herdr::logging: herdr exiting event="app.shutdown" subsystem="client" outcome="completed" pid=371595
2026-08-11T19:47:12.091280Z INFO herdr::logging: herdr exiting event="app.shutdown" subsystem="client" outcome="completed" pid=372056
2026-08-11T20:00:20.762527Z INFO herdr::logging: herdr starting event="app.startup" subsystem="client" outcome="started" pid=8489
2026-08-11T20:00:20.762658Z INFO herdr::client: connecting to server path=/home/prad/.config/herdr/herdr-client.sock
2026-08-11T20:00:20.764334Z INFO herdr::client: handshake succeeded version=19 encoding=SemanticFrame
2026-08-11T20:25:17.280204Z INFO herdr::logging: herdr exiting event="app.shutdown" subsystem="client" outcome="completed" pid=8489
2026-08-11T20:25:19.733690Z INFO herdr::logging: herdr starting event="app.startup" subsystem="client" outcome="started" pid=55901
2026-08-11T20:25:19.733714Z INFO herdr::client: connecting to server path=/home/prad/.config/herdr/herdr-client.sock
2026-08-11T20:25:19.810402Z INFO herdr::client: handshake succeeded version=19 encoding=SemanticFrame
2026-08-11T20:38:46.666284Z INFO herdr::logging: herdr exiting event="app.shutdown" subsystem="client" outcome="completed" pid=55901
2026-08-11T20:41:50.439940Z INFO herdr::logging: herdr starting event="app.startup" subsystem="client" outcome="started" pid=82669
2026-08-11T20:41:50.439967Z INFO herdr::client: connecting to server path=/home/prad/.config/herdr/herdr-client.sock
2026-08-11T20:41:50.467945Z INFO herdr::client: handshake succeeded version=19 encoding=SemanticFrame
2026-08-12T02:40:29.265522Z INFO herdr::logging: herdr exiting event="app.shutdown" subsystem="client" outcome="completed" pid=82669
2026-08-12T17:39:16.296116Z INFO herdr::logging: herdr starting event="app.startup" subsystem="client" outcome="started" pid=310780
2026-08-12T17:39:16.296280Z INFO herdr::client: connecting to server path=/home/prad/.config/herdr/herdr-client.sock
2026-08-12T17:39:16.297226Z INFO herdr::client: handshake succeeded version=19 encoding=SemanticFrame
2026-08-12T18:43:57.927055Z INFO herdr::logging: herdr exiting event="app.shutdown" subsystem="client" outcome="completed" pid=310780
2026-08-12T18:48:02.972578Z INFO herdr::logging: herdr starting event="app.startup" subsystem="client" outcome="started" pid=10003
2026-08-12T18:48:02.972738Z INFO herdr::client: connecting to server path=/home/prad/.config/herdr/herdr-client.sock
2026-08-12T18:48:02.980497Z INFO herdr::client: handshake succeeded version=19 encoding=SemanticFrame
2026-08-13T02:14:18.289391Z INFO herdr::logging: herdr exiting event="app.shutdown" subsystem="client" outcome="completed" pid=10003
2026-08-13T19:25:45.498649Z INFO herdr::logging: herdr starting event="app.startup" subsystem="client" outcome="started" pid=254621
2026-08-13T19:25:45.498818Z INFO herdr::client: connecting to server path=/home/prad/.config/herdr/herdr-client.sock
2026-08-13T19:25:45.507671Z INFO herdr::client: handshake succeeded version=19 encoding=SemanticFrame
2026-08-13T19:26:16.630819Z INFO herdr::logging: herdr exiting event="app.shutdown" subsystem="client" outcome="completed" pid=254621
+758
View File
@@ -1893,3 +1893,761 @@
2026-08-11T19:10:08.111473Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wS" tab_id="wS:t2"
2026-08-11T19:10:12.500007Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wS" tab_id="wS:t1"
2026-08-11T19:10:17.505765Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-11T20:00:20.712692Z INFO herdr::api::server: api server listening path=/home/prad/.config/herdr/herdr.sock
2026-08-11T20:00:20.713969Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=2 rows=24 cols=80 scrollback_limit_bytes=10000000
2026-08-11T20:00:20.714486Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=2 pid=8532
2026-08-11T20:00:20.714823Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=3 rows=24 cols=80 scrollback_limit_bytes=10000000
2026-08-11T20:00:20.715189Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=3 pid=8535
2026-08-11T20:00:20.715313Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=4 rows=24 cols=80 scrollback_limit_bytes=10000000
2026-08-11T20:00:20.715674Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=4 pid=8538
2026-08-11T20:00:20.715766Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=5 rows=24 cols=80 scrollback_limit_bytes=10000000
2026-08-11T20:00:20.716182Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=5 pid=8543
2026-08-11T20:00:20.716291Z INFO herdr::logging: session restore evaluated event="persist.restore" subsystem="persist" outcome="ok" workspaces=3
2026-08-11T20:00:20.716299Z INFO herdr::app: using pane scrollback configuration pane_scrollback_limit_bytes=10000000
2026-08-11T20:00:20.753457Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-11T20:00:20.754977Z INFO herdr::server::headless: restored session already has workspaces; ignoring startup cwd cwd=/home/prad
2026-08-11T20:00:20.755045Z INFO herdr::server::headless: client protocol socket listening path=/home/prad/.config/herdr/herdr-client.sock
2026-08-11T20:00:20.755063Z INFO herdr::server::headless: herdr server started api_socket=/home/prad/.config/herdr/herdr.sock client_socket=/home/prad/.config/herdr/herdr-client.sock
2026-08-11T20:00:20.755262Z INFO herdr::logging: herdr starting event="app.startup" subsystem="server" outcome="started" pid=8498
2026-08-11T20:00:20.764360Z INFO herdr::server::headless: client connected client_id=2 cols=184 rows=78 cell_width_px=18 cell_height_px=47 render_encoding=SemanticFrame
2026-08-11T20:00:20.775061Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=1 rows=77 cols=159 scrollback_limit_bytes=10000000
2026-08-11T20:00:20.775845Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=1 pid=9102
2026-08-11T20:00:21.327516Z INFO herdr::pane: agent changed pane=1 previous_agent=None agent=Some(Omp) process=omp pgid=Some(9530)
2026-08-11T20:00:22.383016Z INFO herdr::pane: agent changed pane=1 previous_agent=None agent=Some(Omp) process=omp pgid=Some(9530)
2026-08-11T20:00:23.349109Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=4 status="ExitStatus { code: 0, signal: None }"
2026-08-11T20:00:23.350042Z INFO herdr::pane: pane session terminated pane=4 pid=8538 signal=Hangup
2026-08-11T20:00:24.793141Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=5 status="ExitStatus { code: 0, signal: None }"
2026-08-11T20:00:24.793624Z INFO herdr::pane: pane session terminated pane=5 pid=8543 signal=Hangup
2026-08-11T20:00:29.796893Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:00:34.770156Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=6 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-11T20:00:34.771732Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=6 pid=10560
2026-08-11T20:00:34.771878Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wQ" tab_id="wQ:t1"
2026-08-11T20:00:35.708665Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=6 status="ExitStatus { code: 0, signal: None }"
2026-08-11T20:00:35.709122Z INFO herdr::pane: pane session terminated pane=6 pid=10560 signal=Hangup
2026-08-11T20:00:38.807130Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=7 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-11T20:00:38.808437Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=7 pid=10878
2026-08-11T20:00:38.808620Z INFO herdr::logging: workspace created event="workspace.create" subsystem="workspace" outcome="ok" workspace_id="wT" pane_id=7
2026-08-11T20:00:38.808623Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wT"
2026-08-11T20:00:38.808644Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:00:43.814887Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-11T20:00:49.943116Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:00:50.940691Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wP"
2026-08-11T20:00:50.940854Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wP" tab_id="wP:t1"
2026-08-11T20:00:51.726645Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wQ"
2026-08-11T20:00:51.726727Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wQ" tab_id="wQ:t1"
2026-08-11T20:00:52.393388Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=3 status="ExitStatus { code: 0, signal: None }"
2026-08-11T20:00:52.393850Z INFO herdr::pane: pane session terminated pane=3 pid=8535 signal=Hangup
2026-08-11T20:00:57.397556Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:03:42.198196Z INFO herdr::pane: agent changed pane=7 previous_agent=None agent=Some(Omp) process=omp pgid=Some(14791)
2026-08-11T20:03:42.543005Z INFO herdr::pane: agent changed pane=7 previous_agent=None agent=Some(Omp) process=omp pgid=Some(14791)
2026-08-11T20:03:47.543425Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:08:53.326355Z INFO herdr::server::headless: client resize client_id=2 cols=184 rows=38 cell_width_px=18 cell_height_px=47
2026-08-11T20:08:54.227643Z INFO herdr::server::headless: client resize client_id=2 cols=184 rows=78 cell_width_px=18 cell_height_px=47
2026-08-11T20:10:04.079215Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wP"
2026-08-11T20:10:04.079282Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wP" tab_id="wP:t1"
2026-08-11T20:10:05.838488Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wT"
2026-08-11T20:10:05.838565Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:10:10.845925Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:10:39.301915Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=8 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-11T20:10:39.303644Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=8 pid=22508
2026-08-11T20:10:39.303855Z INFO herdr::logging: workspace created event="workspace.create" subsystem="workspace" outcome="ok" workspace_id="wV" pane_id=8
2026-08-11T20:10:39.303859Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wV"
2026-08-11T20:10:39.303884Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wV" tab_id="wV:t1"
2026-08-11T20:10:42.019492Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=8 status="ExitStatus { code: 0, signal: None }"
2026-08-11T20:10:42.020463Z INFO herdr::pane: pane session terminated pane=8 pid=22508 signal=Hangup
2026-08-11T20:10:42.844021Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=9 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-11T20:10:42.845289Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=9 pid=22755
2026-08-11T20:10:42.845414Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:10:46.353247Z INFO herdr::server::headless: client resize client_id=2 cols=373 rows=78 cell_width_px=18 cell_height_px=47
2026-08-11T20:10:47.153953Z INFO herdr::server::headless: client resize client_id=2 cols=90 rows=78 cell_width_px=18 cell_height_px=47
2026-08-11T20:10:47.654437Z INFO herdr::server::headless: client resize client_id=2 cols=121 rows=78 cell_width_px=18 cell_height_px=47
2026-08-11T20:10:47.848508Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:10:47.854573Z INFO herdr::server::headless: client resize client_id=2 cols=184 rows=78 cell_width_px=18 cell_height_px=47
2026-08-11T20:10:48.355040Z INFO herdr::server::headless: client resize client_id=2 cols=247 rows=78 cell_width_px=18 cell_height_px=47
2026-08-11T20:16:01.218146Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wP"
2026-08-11T20:16:01.218210Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wP" tab_id="wP:t1"
2026-08-11T20:16:02.312815Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wT"
2026-08-11T20:16:02.312892Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:16:03.638730Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:16:04.130733Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wP"
2026-08-11T20:16:04.130787Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wP" tab_id="wP:t1"
2026-08-11T20:16:04.801441Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wT"
2026-08-11T20:16:04.801495Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:16:05.411145Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wP"
2026-08-11T20:16:05.411207Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wP" tab_id="wP:t1"
2026-08-11T20:16:08.210644Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wT"
2026-08-11T20:16:08.210708Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:16:09.632067Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wP"
2026-08-11T20:16:09.632131Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wP" tab_id="wP:t1"
2026-08-11T20:16:10.722324Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wT"
2026-08-11T20:16:10.722364Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:16:12.038378Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wP"
2026-08-11T20:16:12.038420Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wP" tab_id="wP:t1"
2026-08-11T20:16:12.606166Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wP" tab_id="wP:t3"
2026-08-11T20:16:14.444725Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=2 status="ExitStatus { code: 0, signal: None }"
2026-08-11T20:16:14.445235Z INFO herdr::pane: pane session terminated pane=2 pid=8532 signal=Hangup
2026-08-11T20:16:16.384537Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wT"
2026-08-11T20:16:16.384627Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:16:21.400364Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:16:24.534684Z INFO herdr::logging: tab renamed event="tab.rename" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:16:29.535979Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:17:00.424404Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=10 rows=77 cols=112 scrollback_limit_bytes=10000000
2026-08-11T20:17:00.425991Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=10 pid=32089
2026-08-11T20:17:00.426190Z INFO herdr::logging: workspace created event="workspace.create" subsystem="workspace" outcome="ok" workspace_id="wW" pane_id=10
2026-08-11T20:17:00.426193Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wW"
2026-08-11T20:17:00.426224Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wW" tab_id="wW:t1"
2026-08-11T20:17:05.437564Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-11T20:17:10.571679Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="cli:plugin" method="plugin.action.invoke" changes_ui=true
2026-08-11T20:17:10.572503Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="cli:plugin" method="plugin.action.invoke"
2026-08-11T20:17:13.154184Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=10 status="ExitStatus { code: 0, signal: None }"
2026-08-11T20:17:13.154753Z INFO herdr::pane: pane session terminated pane=10 pid=32089 signal=Hangup
2026-08-11T20:17:18.162726Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:17:18.526402Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:17:23.535088Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:21:50.712620Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:21:52.307701Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:21:53.111082Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:21:55.378063Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:21:57.103984Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:21:58.026877Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:21:58.886277Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:22:00.423307Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wP"
2026-08-11T20:22:00.423426Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wP" tab_id="wP:t1"
2026-08-11T20:22:01.171436Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wT"
2026-08-11T20:22:01.171507Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:22:01.729797Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wP"
2026-08-11T20:22:01.729844Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wP" tab_id="wP:t1"
2026-08-11T20:22:02.446419Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wT"
2026-08-11T20:22:02.446491Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:22:04.356905Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:22:05.178630Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:22:06.541380Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:22:11.549893Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:22:15.654031Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=11 rows=77 cols=112 scrollback_limit_bytes=10000000
2026-08-11T20:22:15.655715Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=11 pid=50453
2026-08-11T20:22:15.655882Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t2"
2026-08-11T20:22:20.661264Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:22:23.282800Z INFO herdr::logging: tab renamed event="tab.rename" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t2"
2026-08-11T20:22:28.285190Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:22:43.174150Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=12 rows=77 cols=223 scrollback_limit_bytes=10000000
2026-08-11T20:22:43.176276Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=12 pid=51313
2026-08-11T20:22:43.176421Z INFO herdr::logging: tab renamed event="tab.rename" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t3"
2026-08-11T20:22:43.176491Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t3"
2026-08-11T20:22:48.182572Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:24:59.641671Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t2"
2026-08-11T20:25:04.647378Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:25:08.984075Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t3"
2026-08-11T20:25:09.813187Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t1"
2026-08-11T20:25:10.369158Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t2"
2026-08-11T20:25:10.477493Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="crush:release:1786479910476993102" method="pane.release_agent" changes_ui=true
2026-08-11T20:25:10.479531Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="crush:release:1786479910476993102" method="pane.release_agent"
2026-08-11T20:25:12.516692Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="crush:release:1786479912516356848" method="pane.release_agent" changes_ui=true
2026-08-11T20:25:12.518847Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="crush:release:1786479912516356848" method="pane.release_agent"
2026-08-11T20:25:15.378350Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:25:17.279194Z INFO herdr::server::headless: client detached client_id=2
2026-08-11T20:25:17.282479Z INFO herdr::server::headless: client disconnected client_id=2
2026-08-11T20:25:19.810486Z INFO herdr::server::headless: client connected client_id=4 cols=184 rows=78 cell_width_px=18 cell_height_px=47 render_encoding=SemanticFrame
2026-08-11T20:25:30.264217Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=11 status="ExitStatus { code: 1, signal: Some(\"Hangup\") }"
2026-08-11T20:25:30.268557Z INFO herdr::pane: pane session terminated pane=11 pid=50453 signal=Hangup
2026-08-11T20:25:30.269540Z WARN herdr::app::actions: PaneDied for unknown pane pane=11
2026-08-11T20:25:30.285440Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="error" request_id="cli:pane:current" method="pane.current"
2026-08-11T20:25:33.223423Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=13 rows=77 cols=80 scrollback_limit_bytes=10000000
2026-08-11T20:25:33.225397Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=13 pid=56220
2026-08-11T20:25:33.225573Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t4"
2026-08-11T20:25:38.231614Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:26:05.624995Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="crush:release:1786479965624740498" method="pane.release_agent" changes_ui=true
2026-08-11T20:26:05.627473Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="crush:release:1786479965624740498" method="pane.release_agent"
2026-08-11T20:26:10.708957Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="crush:release:1786479970708734383" method="pane.release_agent" changes_ui=true
2026-08-11T20:26:10.712461Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="crush:release:1786479970708734383" method="pane.release_agent"
2026-08-11T20:26:14.393082Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="crush:release:1786479974392831869" method="pane.release_agent" changes_ui=true
2026-08-11T20:26:14.395710Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="crush:release:1786479974392831869" method="pane.release_agent"
2026-08-11T20:26:19.026308Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="crush:release:1786479979026052592" method="pane.release_agent" changes_ui=true
2026-08-11T20:26:19.028897Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="crush:release:1786479979026052592" method="pane.release_agent"
2026-08-11T20:30:20.754566Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-11T20:37:57.029292Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=14 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-11T20:37:57.030868Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=14 pid=75792
2026-08-11T20:37:57.031051Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t5"
2026-08-11T20:38:02.035769Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:38:10.089803Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="cli:plugin" method="plugin.action.invoke" changes_ui=true
2026-08-11T20:38:10.091040Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="cli:plugin" method="plugin.action.invoke"
2026-08-11T20:38:10.114680Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="cli:plugin" method="plugin.pane.open" changes_ui=true
2026-08-11T20:38:10.115302Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=15 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-11T20:38:10.116487Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=15 pid=76674
2026-08-11T20:38:10.117497Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="cli:plugin" method="plugin.pane.open"
2026-08-11T20:38:13.580175Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t5"
2026-08-11T20:38:18.584802Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:38:20.011055Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wT" tab_id="wT:t5"
2026-08-11T20:38:21.838590Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=14 status="ExitStatus { code: 0, signal: None }"
2026-08-11T20:38:21.839265Z INFO herdr::pane: pane session terminated pane=14 pid=75792 signal=Hangup
2026-08-11T20:38:23.494582Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="cli:pane:rename" method="pane.rename" changes_ui=true
2026-08-11T20:38:23.494720Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="cli:pane:rename" method="pane.rename"
2026-08-11T20:38:23.495677Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=15 status="ExitStatus { code: 0, signal: None }"
2026-08-11T20:38:23.496220Z INFO herdr::pane: pane session terminated pane=15 pid=76674 signal=Hangup
2026-08-11T20:38:28.501291Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:38:29.442729Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=13 status="ExitStatus { code: 0, signal: None }"
2026-08-11T20:38:29.443732Z INFO herdr::pane: pane session terminated pane=13 pid=56220 signal=Hangup
2026-08-11T20:38:32.281969Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=12 status="ExitStatus { code: 0, signal: None }"
2026-08-11T20:38:32.282636Z INFO herdr::pane: pane session terminated pane=12 pid=51313 signal=Hangup
2026-08-11T20:38:37.287692Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:38:40.486764Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=9 status="ExitStatus { code: 1, signal: Some(\"Hangup\") }"
2026-08-11T20:38:40.490111Z INFO herdr::pane: pane session terminated pane=9 pid=22755 signal=Hangup
2026-08-11T20:38:40.490956Z WARN herdr::app::actions: PaneDied for unknown pane pane=9
2026-08-11T20:38:40.507947Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="error" request_id="cli:pane:current" method="pane.current"
2026-08-11T20:38:41.699352Z INFO herdr::logging: workspace closed event="workspace.close" subsystem="workspace" outcome="ok" workspace_id="wT"
2026-08-11T20:38:41.701515Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=7 status="ExitStatus { code: 1, signal: Some(\"Hangup\") }"
2026-08-11T20:38:41.764842Z INFO herdr::pane: pane session terminated pane=7 pid=10878 signal=Hangup
2026-08-11T20:38:41.766301Z WARN herdr::app::actions: PaneDied for unknown pane pane=7
2026-08-11T20:38:41.781017Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="error" request_id="cli:pane:current" method="pane.current"
2026-08-11T20:38:46.665516Z INFO herdr::server::headless: client detached client_id=4
2026-08-11T20:38:46.666753Z INFO herdr::server::headless: client disconnected client_id=4
2026-08-11T20:38:46.773486Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=1
2026-08-11T20:41:50.468029Z INFO herdr::server::headless: client connected client_id=6 cols=184 rows=78 cell_width_px=18 cell_height_px=47 render_encoding=SemanticFrame
2026-08-11T20:41:54.883534Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=16 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-11T20:41:54.884799Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=16 pid=82744
2026-08-11T20:41:54.884990Z INFO herdr::logging: workspace created event="workspace.create" subsystem="workspace" outcome="ok" workspace_id="wX" pane_id=16
2026-08-11T20:41:54.884993Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wX"
2026-08-11T20:41:54.885020Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t1"
2026-08-11T20:41:58.450037Z INFO herdr::pane: agent changed pane=16 previous_agent=None agent=Some(Omp) process=omp pgid=Some(83230)
2026-08-11T20:41:58.827292Z INFO herdr::pane: agent changed pane=16 previous_agent=None agent=Some(Omp) process=omp pgid=Some(83230)
2026-08-11T20:42:03.727468Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:52:45.725070Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=17 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-11T20:52:45.726515Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=17 pid=126869
2026-08-11T20:52:45.726678Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t2"
2026-08-11T20:52:50.733526Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T20:52:51.318956Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="crush:release:1786481571318638345" method="pane.release_agent" changes_ui=true
2026-08-11T20:52:51.320997Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="crush:release:1786481571318638345" method="pane.release_agent"
2026-08-11T20:54:03.854364Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="crush:release:1786481643854186973" method="pane.release_agent" changes_ui=true
2026-08-11T20:54:03.856931Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="crush:release:1786481643854186973" method="pane.release_agent"
2026-08-11T20:54:38.585558Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t1"
2026-08-11T20:54:40.353977Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t2"
2026-08-11T20:54:41.271509Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wP"
2026-08-11T20:54:41.271591Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wP" tab_id="wP:t1"
2026-08-11T20:54:42.050072Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wX"
2026-08-11T20:54:42.050151Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t2"
2026-08-11T20:54:43.180023Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wP"
2026-08-11T20:54:43.180156Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wP" tab_id="wP:t1"
2026-08-11T20:54:48.192598Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-11T21:00:20.755397Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-11T21:30:20.757272Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-11T22:00:20.758646Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-11T22:30:20.761337Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-11T23:00:20.762304Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-11T23:30:20.764546Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T00:00:20.766755Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T00:30:20.767862Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T01:00:20.769550Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T01:30:20.771302Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T02:00:20.772791Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T02:30:20.773584Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T02:40:29.246637Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=16 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-12T02:40:29.257840Z INFO herdr::pane: pane session terminated pane=16 pid=82744 signal=Hangup
2026-08-12T02:40:29.260548Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=1 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-12T02:40:29.263229Z INFO herdr::server::headless: server shutdown initiated
2026-08-12T02:40:29.279422Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=17 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-12T02:40:29.313324Z INFO herdr::server::headless: completing server shutdown
2026-08-12T02:40:29.364329Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-12T02:40:29.364358Z INFO herdr::server::headless: headless server exiting
2026-08-12T02:40:29.364717Z INFO herdr::pane: pane session terminated pane=17 pid=126869 signal=Hangup
2026-08-12T02:40:29.364735Z INFO herdr::pane: pane session terminated pane=1 pid=9102 signal=Hangup
2026-08-12T02:40:29.364939Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="error" request_id="cli:pane:current" method="pane.current"
2026-08-12T02:40:29.378705Z INFO herdr::logging: herdr exiting event="app.shutdown" subsystem="server" outcome="completed" pid=8498
2026-08-12T17:39:16.246166Z INFO herdr::api::server: api server listening path=/home/prad/.config/herdr/herdr.sock
2026-08-12T17:39:16.247919Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=2 rows=24 cols=80 scrollback_limit_bytes=10000000
2026-08-12T17:39:16.248741Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=2 pid=310819
2026-08-12T17:39:16.249124Z INFO herdr::logging: session restore evaluated event="persist.restore" subsystem="persist" outcome="ok" workspaces=2
2026-08-12T17:39:16.249137Z INFO herdr::app: using pane scrollback configuration pane_scrollback_limit_bytes=10000000
2026-08-12T17:39:16.287583Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T17:39:16.289262Z INFO herdr::server::headless: restored session already has workspaces; ignoring startup cwd cwd=/home/prad
2026-08-12T17:39:16.289320Z INFO herdr::server::headless: client protocol socket listening path=/home/prad/.config/herdr/herdr-client.sock
2026-08-12T17:39:16.289335Z INFO herdr::server::headless: herdr server started api_socket=/home/prad/.config/herdr/herdr.sock client_socket=/home/prad/.config/herdr/herdr-client.sock
2026-08-12T17:39:16.289373Z INFO herdr::logging: herdr starting event="app.startup" subsystem="server" outcome="started" pid=310785
2026-08-12T17:39:16.297261Z INFO herdr::server::headless: client connected client_id=2 cols=184 rows=78 cell_width_px=18 cell_height_px=47 render_encoding=SemanticFrame
2026-08-12T17:39:16.307572Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=1 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-12T17:39:16.308344Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=1 pid=310975
2026-08-12T17:39:16.860516Z INFO herdr::pane: agent changed pane=1 previous_agent=None agent=Some(Omp) process=omp pgid=Some(311275)
2026-08-12T17:39:17.698927Z INFO herdr::server::headless: client resize client_id=2 cols=184 rows=38 cell_width_px=18 cell_height_px=47
2026-08-12T17:39:17.736835Z INFO herdr::pane: agent changed pane=1 previous_agent=None agent=Some(Omp) process=omp pgid=Some(311275)
2026-08-12T17:39:18.200936Z INFO herdr::server::headless: client resize client_id=2 cols=184 rows=78 cell_width_px=18 cell_height_px=47
2026-08-12T17:39:21.309475Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-12T17:39:41.978503Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=3 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-12T17:39:41.979729Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=3 pid=312192
2026-08-12T17:39:41.979896Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wP" tab_id="wP:t4"
2026-08-12T17:39:44.038166Z INFO herdr::pane: agent changed pane=3 previous_agent=None agent=Some(Omp) process=omp pgid=Some(312518)
2026-08-12T17:39:46.989472Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-12T17:39:49.760060Z INFO herdr::pane: agent changed pane=3 previous_agent=Some(Omp) agent=None pgid=Some(312192)
2026-08-12T17:39:52.489789Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wP" tab_id="wP:t1"
2026-08-12T17:39:57.501136Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-12T17:40:24.644509Z INFO herdr::pane: agent changed pane=1 previous_agent=Some(Omp) agent=None pgid=Some(310975)
2026-08-12T17:40:25.244815Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=1 status="ExitStatus { code: 0, signal: None }"
2026-08-12T17:40:25.245946Z INFO herdr::pane: pane session terminated pane=1 pid=310975 signal=Hangup
2026-08-12T17:40:29.604739Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=3 status="ExitStatus { code: 0, signal: None }"
2026-08-12T17:40:29.605310Z INFO herdr::pane: pane session terminated pane=3 pid=312192 signal=Hangup
2026-08-12T17:40:34.610083Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=1
2026-08-12T17:41:18.399647Z INFO herdr::app::worktrees: opening worktree dialog ws_idx=0 repo_root=/home/prad/Developer/github.com/prdlk/blume branch="worktree/quiet-cloud-248d" checkout_path=/home/prad/.herdr/worktrees/blume/worktree-quiet-cloud-248d
2026-08-12T17:41:48.508266Z INFO herdr::app::worktrees: opening worktree dialog ws_idx=0 repo_root=/home/prad/Developer/github.com/prdlk/blume branch="worktree/calm-forest-9059" checkout_path=/home/prad/.herdr/worktrees/blume/worktree-calm-forest-9059
2026-08-12T17:41:59.915670Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=4 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-12T17:41:59.916710Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=4 pid=315795
2026-08-12T17:41:59.916825Z INFO herdr::logging: workspace created event="workspace.create" subsystem="workspace" outcome="ok" workspace_id="wY" pane_id=4
2026-08-12T17:41:59.916828Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T17:41:59.916842Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:41:59.957407Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="cli:plugin" method="plugin.pane.open" changes_ui=true
2026-08-12T17:41:59.958152Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=5 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-12T17:41:59.959072Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=5 pid=316060
2026-08-12T17:41:59.959841Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="cli:plugin" method="plugin.pane.open"
2026-08-12T17:42:04.961096Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-12T17:42:10.106966Z INFO herdr::logging: tab renamed event="tab.rename" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:42:12.514692Z INFO herdr::pane: agent changed pane=4 previous_agent=None agent=Some(Omp) process=omp pgid=Some(316494)
2026-08-12T17:42:13.148574Z INFO herdr::pane: agent changed pane=4 previous_agent=None agent=Some(Omp) process=omp pgid=Some(316494)
2026-08-12T17:42:18.049031Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-12T17:42:25.365286Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=6 rows=77 cols=80 scrollback_limit_bytes=10000000
2026-08-12T17:42:25.366506Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=6 pid=317135
2026-08-12T17:42:25.366739Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t2"
2026-08-12T17:42:30.373263Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-12T17:42:32.779057Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:42:37.787255Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-12T17:42:57.980365Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t2"
2026-08-12T17:43:02.987658Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=2
2026-08-12T17:43:06.802190Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=7 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-12T17:43:06.803464Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=7 pid=318936
2026-08-12T17:43:06.803652Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t2"
2026-08-12T17:43:07.899729Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=7 status="ExitStatus { code: 0, signal: None }"
2026-08-12T17:43:07.900340Z INFO herdr::pane: pane session terminated pane=7 pid=318936 signal=Hangup
2026-08-12T17:43:08.978134Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=8 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-12T17:43:08.979295Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=8 pid=319423
2026-08-12T17:43:08.979438Z INFO herdr::logging: workspace created event="workspace.create" subsystem="workspace" outcome="ok" workspace_id="wZ" pane_id=8
2026-08-12T17:43:08.979441Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wZ"
2026-08-12T17:43:08.979479Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wZ" tab_id="wZ:t1"
2026-08-12T17:43:10.895593Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wZ" tab_id="wZ:t1"
2026-08-12T17:43:13.689639Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wX"
2026-08-12T17:43:13.689728Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t2"
2026-08-12T17:43:14.941140Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wX"
2026-08-12T17:43:14.941237Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t2"
2026-08-12T17:43:19.943699Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T17:43:23.323975Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T17:43:23.324029Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:43:25.581492Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t2"
2026-08-12T17:43:26.310288Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=6 status="ExitStatus { code: 0, signal: None }"
2026-08-12T17:43:26.311488Z INFO herdr::pane: pane session terminated pane=6 pid=317135 signal=Hangup
2026-08-12T17:43:28.895260Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wZ"
2026-08-12T17:43:28.895347Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wZ" tab_id="wZ:t1"
2026-08-12T17:43:31.227523Z INFO herdr::app::worktrees: opening worktree dialog ws_idx=2 repo_root=/home/prad/Developer/github.com/prdlk/blume branch="worktree/quiet-valley-ef7d" checkout_path=/home/prad/.herdr/worktrees/blume/worktree-quiet-valley-ef7d
2026-08-12T17:43:33.900153Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T17:43:49.116443Z INFO herdr::app::worktrees: opening worktree dialog ws_idx=2 repo_root=/home/prad/Developer/github.com/prdlk/blume branch="worktree/silver-cloud-e60f" checkout_path=/home/prad/.herdr/worktrees/blume/worktree-silver-cloud-e60f
2026-08-12T17:44:01.417348Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=9 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-12T17:44:01.418373Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=9 pid=321309
2026-08-12T17:44:01.418479Z INFO herdr::logging: workspace created event="workspace.create" subsystem="workspace" outcome="ok" workspace_id="w0" pane_id=9
2026-08-12T17:44:01.418482Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T17:44:01.418506Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T17:44:01.442732Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="cli:plugin" method="plugin.pane.open" changes_ui=true
2026-08-12T17:44:01.443520Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=10 rows=77 cols=160 scrollback_limit_bytes=10000000
2026-08-12T17:44:01.444549Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=10 pid=321533
2026-08-12T17:44:01.445770Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="cli:plugin" method="plugin.pane.open"
2026-08-12T17:44:04.441888Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T17:44:05.623956Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wX"
2026-08-12T17:44:05.624033Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t2"
2026-08-12T17:44:06.796237Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T17:44:06.796302Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:44:09.314037Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wZ"
2026-08-12T17:44:09.314129Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wZ" tab_id="wZ:t1"
2026-08-12T17:44:10.657782Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T17:44:10.657833Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:44:11.075746Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wZ"
2026-08-12T17:44:11.075797Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wZ" tab_id="wZ:t1"
2026-08-12T17:44:11.866222Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T17:44:11.866284Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T17:44:13.012739Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wZ"
2026-08-12T17:44:13.012844Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wZ" tab_id="wZ:t1"
2026-08-12T17:44:13.531248Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T17:44:13.531353Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:44:14.305504Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wX"
2026-08-12T17:44:14.305547Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t2"
2026-08-12T17:44:14.875167Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T17:44:14.875265Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:44:17.344569Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wZ"
2026-08-12T17:44:17.344628Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wZ" tab_id="wZ:t1"
2026-08-12T17:44:17.681477Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T17:44:17.681566Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T17:44:19.234511Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wZ"
2026-08-12T17:44:19.234605Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wZ" tab_id="wZ:t1"
2026-08-12T17:44:23.432489Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=8 status="ExitStatus { code: 0, signal: None }"
2026-08-12T17:44:23.433100Z INFO herdr::pane: pane session terminated pane=8 pid=319423 signal=Hangup
2026-08-12T17:44:24.859611Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T17:44:24.859771Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:44:25.366469Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wX"
2026-08-12T17:44:25.366549Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t2"
2026-08-12T17:44:26.140597Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T17:44:26.140690Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:44:26.685528Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T17:44:26.685588Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T17:44:27.876030Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T17:44:27.876093Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:44:32.882061Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T17:44:32.900963Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=11 rows=77 cols=80 scrollback_limit_bytes=10000000
2026-08-12T17:44:32.902550Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=11 pid=324074
2026-08-12T17:44:32.902701Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t3"
2026-08-12T17:44:37.906856Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T17:44:53.537928Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T17:44:53.537990Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T17:44:58.161326Z INFO herdr::pane: agent changed pane=9 previous_agent=None agent=Some(Omp) process=omp pgid=Some(325981)
2026-08-12T17:44:58.542408Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T17:44:58.744995Z INFO herdr::pane: agent changed pane=9 previous_agent=None agent=Some(Omp) process=omp pgid=Some(325981)
2026-08-12T17:45:03.381671Z INFO herdr::logging: tab renamed event="tab.rename" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T17:45:06.192527Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=12 rows=77 cols=80 scrollback_limit_bytes=10000000
2026-08-12T17:45:06.194211Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=12 pid=326470
2026-08-12T17:45:06.194554Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t2"
2026-08-12T17:45:11.200097Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T17:45:12.629695Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T17:45:14.824805Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T17:45:14.824894Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t3"
2026-08-12T17:45:18.546202Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T17:45:18.546298Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T17:45:20.654375Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t2"
2026-08-12T17:45:21.952869Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T17:45:26.960952Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T17:45:27.131860Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T17:45:27.131958Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:45:27.954596Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T17:45:27.954671Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T17:45:32.961462Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T17:46:17.715661Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T17:46:17.715708Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:46:19.535170Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T17:46:19.535217Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T17:46:20.196087Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T17:46:20.196140Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:46:24.236573Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T17:46:24.236626Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T17:46:29.244467Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T17:46:35.527193Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T17:46:35.527280Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T17:46:36.971725Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T17:46:36.971772Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T17:46:41.978773Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T17:55:04.705902Z INFO herdr::app::actions: copied selection to clipboard
2026-08-12T17:57:45.087429Z INFO herdr::server::headless: client resize client_id=2 cols=89 rows=43 cell_width_px=18 cell_height_px=47
2026-08-12T18:09:16.289137Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T18:39:16.290636Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T18:43:57.926337Z INFO herdr::server::headless: server shutdown initiated
2026-08-12T18:43:57.927853Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=5 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-12T18:43:57.929135Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=10 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-12T18:43:57.932361Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=11 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-12T18:43:57.936061Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=4 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-12T18:43:57.939076Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=2 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-12T18:43:57.940772Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=12 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-12T18:43:57.952476Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=9 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-12T18:43:57.976514Z INFO herdr::server::headless: completing server shutdown
2026-08-12T18:43:58.027376Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T18:43:58.027414Z INFO herdr::server::headless: headless server exiting
2026-08-12T18:43:58.027760Z INFO herdr::pane: pane session terminated pane=11 pid=324074 signal=Hangup
2026-08-12T18:43:58.027780Z INFO herdr::pane: pane session terminated pane=10 pid=321533 signal=Hangup
2026-08-12T18:43:58.027804Z INFO herdr::pane: pane session terminated pane=12 pid=326470 signal=Hangup
2026-08-12T18:43:58.027816Z INFO herdr::pane: pane session terminated pane=2 pid=310819 signal=Hangup
2026-08-12T18:43:58.027871Z INFO herdr::pane: pane session terminated pane=4 pid=315795 signal=Hangup
2026-08-12T18:43:58.027879Z INFO herdr::pane: pane session terminated pane=5 pid=316060 signal=Hangup
2026-08-12T18:43:58.027922Z INFO herdr::pane: pane session terminated pane=9 pid=321309 signal=Hangup
2026-08-12T18:43:58.033828Z INFO herdr::logging: herdr exiting event="app.shutdown" subsystem="server" outcome="completed" pid=310785
2026-08-12T18:48:02.922845Z INFO herdr::api::server: api server listening path=/home/prad/.config/herdr/herdr.sock
2026-08-12T18:48:02.924449Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=1 rows=24 cols=80 scrollback_limit_bytes=10000000
2026-08-12T18:48:02.925062Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=1 pid=10042
2026-08-12T18:48:02.925290Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=3 rows=24 cols=80 scrollback_limit_bytes=10000000
2026-08-12T18:48:02.925750Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=3 pid=10045
2026-08-12T18:48:02.925856Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=4 rows=24 cols=80 scrollback_limit_bytes=10000000
2026-08-12T18:48:02.926294Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=4 pid=10048
2026-08-12T18:48:02.926518Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=6 rows=24 cols=80 scrollback_limit_bytes=10000000
2026-08-12T18:48:02.927009Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=6 pid=10052
2026-08-12T18:48:02.927159Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=7 rows=24 cols=80 scrollback_limit_bytes=10000000
2026-08-12T18:48:02.927633Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=7 pid=10058
2026-08-12T18:48:02.927785Z INFO herdr::logging: session restore evaluated event="persist.restore" subsystem="persist" outcome="ok" workspaces=3
2026-08-12T18:48:02.927793Z INFO herdr::app: using pane scrollback configuration pane_scrollback_limit_bytes=10000000
2026-08-12T18:48:02.962584Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T18:48:02.963795Z INFO herdr::server::headless: restored session already has workspaces; ignoring startup cwd cwd=/home/prad
2026-08-12T18:48:02.963892Z INFO herdr::server::headless: client protocol socket listening path=/home/prad/.config/herdr/herdr-client.sock
2026-08-12T18:48:02.963917Z INFO herdr::server::headless: herdr server started api_socket=/home/prad/.config/herdr/herdr.sock client_socket=/home/prad/.config/herdr/herdr-client.sock
2026-08-12T18:48:02.963977Z INFO herdr::logging: herdr starting event="app.startup" subsystem="server" outcome="started" pid=10008
2026-08-12T18:48:02.980517Z INFO herdr::server::headless: client connected client_id=2 cols=184 rows=78 cell_width_px=18 cell_height_px=47 render_encoding=SemanticFrame
2026-08-12T18:48:02.999997Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=2 rows=75 cols=77 scrollback_limit_bytes=10000000
2026-08-12T18:48:03.000699Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=2 pid=10950
2026-08-12T18:48:03.000823Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=5 rows=75 cols=78 scrollback_limit_bytes=10000000
2026-08-12T18:48:03.001399Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=5 pid=10953
2026-08-12T18:48:03.553117Z INFO herdr::pane: agent changed pane=2 previous_agent=None agent=Some(Omp) process=omp pgid=Some(11448)
2026-08-12T18:48:03.554301Z INFO herdr::pane: agent changed pane=5 previous_agent=None agent=Some(Omp) process=omp pgid=Some(11447)
2026-08-12T18:48:04.519942Z INFO herdr::pane: agent changed pane=5 previous_agent=None agent=Some(Omp) process=omp pgid=Some(11447)
2026-08-12T18:48:04.566076Z INFO herdr::pane: agent changed pane=2 previous_agent=None agent=Some(Omp) process=omp pgid=Some(11448)
2026-08-12T18:48:08.003206Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T18:48:16.465830Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T18:48:16.465903Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T18:48:16.903369Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T18:48:16.903466Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:48:21.917943Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T18:49:03.670900Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:49:08.680635Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T18:49:49.488425Z INFO herdr::server::headless: client resize client_id=2 cols=184 rows=78 cell_width_px=18 cell_height_px=47
2026-08-12T18:49:50.489793Z INFO herdr::server::headless: client resize client_id=2 cols=247 rows=78 cell_width_px=18 cell_height_px=47
2026-08-12T18:49:58.628026Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="cli:pane:focus" method="pane.focus_direction" changes_ui=true
2026-08-12T18:49:58.628091Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:49:58.628122Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:49:58.628152Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="cli:pane:focus" method="pane.focus_direction"
2026-08-12T18:49:59.632820Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="cli:pane:focus" method="pane.focus_direction" changes_ui=true
2026-08-12T18:49:59.632918Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:49:59.632953Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:49:59.632986Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="cli:pane:focus" method="pane.focus_direction"
2026-08-12T18:50:04.642419Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T18:50:40.775204Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t3"
2026-08-12T18:50:45.782868Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T18:51:32.427585Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:51:34.165991Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t3"
2026-08-12T18:51:39.178084Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T18:51:40.662207Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:51:42.092728Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T18:51:42.092817Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T18:51:43.530124Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t2"
2026-08-12T18:51:48.539260Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T18:54:57.827774Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T18:54:57.827870Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:55:02.836619Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T18:55:17.079204Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:55:22.088646Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T18:55:29.622093Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=3 status="ExitStatus { code: 0, signal: None }"
2026-08-12T18:55:29.623438Z INFO herdr::pane: pane session terminated pane=3 pid=10045 signal=Hangup
2026-08-12T18:55:34.633759Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T18:56:02.046826Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T18:56:02.046925Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t2"
2026-08-12T18:56:02.551631Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wX"
2026-08-12T18:56:02.551740Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t2"
2026-08-12T18:56:03.469515Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T18:56:03.469575Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:56:04.055798Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T18:56:04.055862Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t2"
2026-08-12T18:56:04.727750Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wX"
2026-08-12T18:56:04.727809Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t2"
2026-08-12T18:56:05.265687Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T18:56:05.265781Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:56:05.833269Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T18:56:05.833431Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t2"
2026-08-12T18:56:06.333445Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wX"
2026-08-12T18:56:06.333506Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t2"
2026-08-12T18:56:06.817144Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T18:56:06.817194Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:56:07.458931Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wX"
2026-08-12T18:56:07.458989Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t2"
2026-08-12T18:56:08.651573Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T18:56:08.651667Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T18:56:09.046241Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T18:56:09.046301Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:56:10.033753Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T18:56:10.033812Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T18:56:11.009186Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T18:56:11.009273Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:56:12.252774Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T18:56:12.252825Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T18:56:14.259310Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T18:56:14.259394Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T18:56:15.889015Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T18:56:15.889122Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T18:56:19.470364Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T18:56:20.558386Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=6 status="ExitStatus { code: 0, signal: None }"
2026-08-12T18:56:20.559013Z INFO herdr::pane: pane session terminated pane=6 pid=10052 signal=Hangup
2026-08-12T18:56:25.566830Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T19:14:55.970625Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T19:14:55.970684Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T19:15:00.907865Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="cli:pane:focus" method="pane.focus_direction" changes_ui=true
2026-08-12T19:15:00.907955Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="cli:pane:focus" method="pane.focus_direction"
2026-08-12T19:15:00.981672Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T19:15:01.016066Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="cli:pane:focus" method="pane.focus_direction" changes_ui=true
2026-08-12T19:15:01.016172Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="cli:pane:focus" method="pane.focus_direction"
2026-08-12T19:15:15.014692Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=8 rows=77 cols=223 scrollback_limit_bytes=10000000
2026-08-12T19:15:15.016096Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=8 pid=45837
2026-08-12T19:15:15.016267Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t4"
2026-08-12T19:15:20.025828Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T19:15:33.830322Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=8 status="ExitStatus { code: 0, signal: None }"
2026-08-12T19:15:33.830921Z INFO herdr::pane: pane session terminated pane=8 pid=45837 signal=Hangup
2026-08-12T19:15:35.911966Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T19:15:40.923031Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T19:18:02.963855Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T19:23:28.742257Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t3"
2026-08-12T19:23:32.289233Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T19:23:36.212378Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t3"
2026-08-12T19:23:41.227393Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T19:23:45.742646Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=9 rows=77 cols=223 scrollback_limit_bytes=10000000
2026-08-12T19:23:45.744170Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=9 pid=97668
2026-08-12T19:23:45.744412Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t5"
2026-08-12T19:23:46.591543Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="crush:release:1786562626591247024" method="pane.release_agent" changes_ui=true
2026-08-12T19:23:46.593625Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="crush:release:1786562626591247024" method="pane.release_agent"
2026-08-12T19:23:47.894775Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T19:23:48.232466Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t3"
2026-08-12T19:23:49.503009Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="crush:release:1786562629502674215" method="pane.release_agent" changes_ui=true
2026-08-12T19:23:49.506266Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="crush:release:1786562629502674215" method="pane.release_agent"
2026-08-12T19:23:53.249143Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T19:23:56.643118Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t5"
2026-08-12T19:24:00.629226Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T19:24:01.468418Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t3"
2026-08-12T19:24:03.943530Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t5"
2026-08-12T19:24:08.951314Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T19:24:12.640474Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T19:24:13.778470Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t3"
2026-08-12T19:24:18.795609Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=3
2026-08-12T19:25:03.837793Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="crush:release:1786562703837534325" method="pane.release_agent" changes_ui=true
2026-08-12T19:25:03.840861Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="crush:release:1786562703837534325" method="pane.release_agent"
2026-08-12T19:25:08.310079Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="crush:release:1786562708309756694" method="pane.release_agent" changes_ui=true
2026-08-12T19:25:08.312734Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="crush:release:1786562708309756694" method="pane.release_agent"
2026-08-12T19:28:50.219093Z INFO herdr::logging: api request received event="api.request.start" subsystem="api" outcome="started" request_id="crush:release:1786562930218510482" method="pane.release_agent" changes_ui=true
2026-08-12T19:28:50.222546Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="ok" request_id="crush:release:1786562930218510482" method="pane.release_agent"
2026-08-12T19:28:53.714243Z INFO herdr::server::headless: client resize client_id=2 cols=375 rows=80 cell_width_px=18 cell_height_px=47
2026-08-12T19:28:55.217657Z INFO herdr::server::headless: client resize client_id=2 cols=247 rows=78 cell_width_px=18 cell_height_px=47
2026-08-12T19:28:57.028703Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=10 rows=77 cols=223 scrollback_limit_bytes=10000000
2026-08-12T19:28:57.031427Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=10 pid=120123
2026-08-12T19:28:57.031670Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t3"
2026-08-12T19:28:58.470690Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=11 rows=77 cols=112 scrollback_limit_bytes=10000000
2026-08-12T19:28:58.472525Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=11 pid=120411
2026-08-12T19:28:58.472803Z INFO herdr::logging: workspace created event="workspace.create" subsystem="workspace" outcome="ok" workspace_id="w11" pane_id=11
2026-08-12T19:28:58.472807Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w11"
2026-08-12T19:28:58.472864Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w11" tab_id="w11:t1"
2026-08-12T19:29:03.484433Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=4
2026-08-12T19:29:05.533543Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wX"
2026-08-12T19:29:05.533634Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wX" tab_id="wX:t2"
2026-08-12T19:29:06.012423Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T19:29:06.012498Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t3"
2026-08-12T19:29:06.437842Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T19:29:06.437959Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T19:29:07.310440Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w11"
2026-08-12T19:29:07.310544Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w11" tab_id="w11:t1"
2026-08-12T19:29:08.436872Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T19:29:08.436995Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T19:29:10.678854Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T19:29:10.678926Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t3"
2026-08-12T19:29:15.690044Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=4
2026-08-12T19:29:16.722595Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=10 status="ExitStatus { code: 0, signal: None }"
2026-08-12T19:29:16.723890Z INFO herdr::pane: pane session terminated pane=10 pid=120123 signal=Hangup
2026-08-12T19:29:21.736270Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=4
2026-08-12T19:29:24.972442Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=4 status="ExitStatus { code: 0, signal: None }"
2026-08-12T19:29:24.973715Z INFO herdr::pane: pane session terminated pane=4 pid=10048 signal=Hangup
2026-08-12T19:29:29.985579Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=4
2026-08-12T19:29:30.928974Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w11"
2026-08-12T19:29:30.929091Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w11" tab_id="w11:t1"
2026-08-12T19:29:35.939090Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=4
2026-08-12T19:44:56.136290Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-12T19:44:56.136359Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="wY" tab_id="wY:t1"
2026-08-12T19:44:58.675005Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-12T19:44:58.675091Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w0" tab_id="w0:t1"
2026-08-12T19:45:03.689553Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=4
2026-08-12T19:48:02.966392Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T20:18:02.967629Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T20:48:02.968691Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T21:18:02.971326Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T21:48:02.972814Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T22:18:02.974210Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T22:48:02.975395Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T23:18:02.976265Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-12T23:48:02.977840Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-13T00:18:02.980282Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-13T00:18:03.092318Z WARN herdr::detect::manifest_update: skipping unknown remote manifest agent agent="qwen"
2026-08-13T00:48:02.981481Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-13T00:48:03.141734Z WARN herdr::detect::manifest_update: skipping unknown remote manifest agent agent="qwen"
2026-08-13T01:18:02.982914Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-13T01:18:03.128942Z WARN herdr::detect::manifest_update: skipping unknown remote manifest agent agent="qwen"
2026-08-13T01:48:02.984751Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-13T01:48:03.200636Z WARN herdr::detect::manifest_update: skipping unknown remote manifest agent agent="qwen"
2026-08-13T02:14:18.288521Z INFO herdr::server::headless: client detached client_id=2
2026-08-13T02:14:18.289950Z INFO herdr::server::headless: client disconnected client_id=2
2026-08-13T02:18:02.986425Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-13T02:18:03.129556Z WARN herdr::detect::manifest_update: skipping unknown remote manifest agent agent="qwen"
2026-08-13T02:48:02.986789Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-13T02:48:03.155153Z WARN herdr::detect::manifest_update: skipping unknown remote manifest agent agent="qwen"
2026-08-13T03:18:02.988202Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-13T03:18:03.141990Z WARN herdr::detect::manifest_update: skipping unknown remote manifest agent agent="qwen"
2026-08-13T03:19:36.443724Z INFO herdr::server::headless: server shutdown initiated
2026-08-13T03:19:36.447222Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=9 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-13T03:19:36.447473Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=7 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-13T03:19:36.447481Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=1 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-13T03:19:36.447512Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=11 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-13T03:19:36.447603Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=2 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-13T03:19:36.447909Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=5 status="ExitStatus { code: 1, signal: Some(\"Terminated\") }"
2026-08-13T03:19:36.493829Z INFO herdr::server::headless: completing server shutdown
2026-08-13T03:19:36.494324Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=4
2026-08-13T03:19:36.494355Z INFO herdr::server::headless: headless server exiting
2026-08-13T03:19:36.495526Z INFO herdr::pane: pane session terminated pane=7 pid=10058 signal=Hangup
2026-08-13T03:19:36.495553Z INFO herdr::pane: pane session terminated pane=11 pid=120411 signal=Hangup
2026-08-13T03:19:36.495569Z INFO herdr::pane: pane session terminated pane=5 pid=10953 signal=Hangup
2026-08-13T03:19:36.495578Z INFO herdr::pane: pane session terminated pane=2 pid=10950 signal=Hangup
2026-08-13T03:19:36.495586Z INFO herdr::pane: pane session terminated pane=9 pid=97668 signal=Hangup
2026-08-13T03:19:36.495597Z INFO herdr::pane: pane session terminated pane=1 pid=10042 signal=Hangup
2026-08-13T03:19:36.499410Z INFO herdr::logging: herdr exiting event="app.shutdown" subsystem="server" outcome="completed" pid=10008
2026-08-13T19:25:45.449214Z INFO herdr::api::server: api server listening path=/home/prad/.config/herdr/herdr.sock
2026-08-13T19:25:45.450606Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=1 rows=24 cols=80 scrollback_limit_bytes=10000000
2026-08-13T19:25:45.451176Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=1 pid=254656
2026-08-13T19:25:45.451414Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=3 rows=24 cols=80 scrollback_limit_bytes=10000000
2026-08-13T19:25:45.451963Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=3 pid=254659
2026-08-13T19:25:45.452194Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=5 rows=24 cols=80 scrollback_limit_bytes=10000000
2026-08-13T19:25:45.452668Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=5 pid=254662
2026-08-13T19:25:45.452867Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=6 rows=24 cols=80 scrollback_limit_bytes=10000000
2026-08-13T19:25:45.453412Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=6 pid=254669
2026-08-13T19:25:45.453530Z INFO herdr::logging: session restore evaluated event="persist.restore" subsystem="persist" outcome="ok" workspaces=4
2026-08-13T19:25:45.453541Z INFO herdr::app: using pane scrollback configuration pane_scrollback_limit_bytes=10000000
2026-08-13T19:25:45.489376Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-13T19:25:45.490379Z INFO herdr::server::headless: restored session already has workspaces; ignoring startup cwd cwd=/home/prad/Developer/github.com/prdlk/blume
2026-08-13T19:25:45.490471Z INFO herdr::server::headless: client protocol socket listening path=/home/prad/.config/herdr/herdr-client.sock
2026-08-13T19:25:45.490493Z INFO herdr::server::headless: herdr server started api_socket=/home/prad/.config/herdr/herdr.sock client_socket=/home/prad/.config/herdr/herdr-client.sock
2026-08-13T19:25:45.490540Z INFO herdr::logging: herdr starting event="app.startup" subsystem="server" outcome="started" pid=254622
2026-08-13T19:25:45.507695Z INFO herdr::server::headless: client connected client_id=2 cols=167 rows=70 cell_width_px=15 cell_height_px=39 render_encoding=SemanticFrame
2026-08-13T19:25:45.526269Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=2 rows=69 cols=142 scrollback_limit_bytes=10000000
2026-08-13T19:25:45.527169Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=2 pid=255455
2026-08-13T19:25:45.527340Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=4 rows=69 cols=143 scrollback_limit_bytes=10000000
2026-08-13T19:25:45.528005Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=4 pid=255458
2026-08-13T19:25:45.662923Z WARN herdr::detect::manifest_update: skipping unknown remote manifest agent agent="qwen"
2026-08-13T19:25:46.079249Z INFO herdr::pane: agent changed pane=2 previous_agent=None agent=Some(Omp) process=omp pgid=Some(255988)
2026-08-13T19:25:46.080369Z INFO herdr::pane: agent changed pane=4 previous_agent=None agent=Some(Omp) process=omp pgid=Some(255986)
2026-08-13T19:25:46.594886Z INFO herdr::pane: agent changed pane=4 previous_agent=None agent=Some(Omp) process=omp pgid=Some(255986)
2026-08-13T19:25:46.687097Z INFO herdr::pane: agent changed pane=2 previous_agent=None agent=Some(Omp) process=omp pgid=Some(255988)
2026-08-13T19:25:50.529715Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=4
2026-08-13T19:25:50.660500Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=4 status="ExitStatus { code: 1, signal: Some(\"Hangup\") }"
2026-08-13T19:25:50.705364Z INFO herdr::pane: pane session terminated pane=4 pid=255458 signal=Hangup
2026-08-13T19:25:50.706523Z WARN herdr::app::actions: PaneDied for unknown pane pane=4
2026-08-13T19:25:50.723513Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="error" request_id="cli:pane:current" method="pane.current"
2026-08-13T19:25:55.708990Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=4
2026-08-13T19:25:55.817558Z INFO herdr::logging: workspace closed event="workspace.close" subsystem="workspace" outcome="ok" workspace_id="w0"
2026-08-13T19:25:55.818811Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=5 status="ExitStatus { code: 1, signal: Some(\"Hangup\") }"
2026-08-13T19:25:55.823514Z INFO herdr::pane: pane session terminated pane=5 pid=254662 signal=Hangup
2026-08-13T19:25:55.824922Z WARN herdr::app::actions: PaneDied for unknown pane pane=5
2026-08-13T19:25:55.841652Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="error" request_id="cli:pane:current" method="pane.current"
2026-08-13T19:25:58.009662Z INFO herdr::logging: workspace closed event="workspace.close" subsystem="workspace" outcome="ok" workspace_id="w11"
2026-08-13T19:25:58.015402Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=6 status="ExitStatus { code: 1, signal: Some(\"Hangup\") }"
2026-08-13T19:25:58.034934Z INFO herdr::pane: pane session terminated pane=6 pid=254669 signal=Hangup
2026-08-13T19:25:58.037087Z WARN herdr::app::actions: PaneDied for unknown pane pane=6
2026-08-13T19:25:58.050543Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="error" request_id="cli:pane:current" method="pane.current"
2026-08-13T19:25:59.811421Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=2 status="ExitStatus { code: 1, signal: Some(\"Hangup\") }"
2026-08-13T19:25:59.875356Z INFO herdr::pane: pane session terminated pane=2 pid=255455 signal=Hangup
2026-08-13T19:25:59.876391Z WARN herdr::app::actions: PaneDied for unknown pane pane=2
2026-08-13T19:25:59.892803Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="error" request_id="cli:pane:current" method="pane.current"
2026-08-13T19:26:00.833802Z INFO herdr::logging: workspace closed event="workspace.close" subsystem="workspace" outcome="ok" workspace_id="wY"
2026-08-13T19:26:00.838487Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=3 status="ExitStatus { code: 1, signal: Some(\"Hangup\") }"
2026-08-13T19:26:00.839335Z INFO herdr::pane: pane session terminated pane=3 pid=254659 signal=Hangup
2026-08-13T19:26:00.840702Z WARN herdr::app::actions: PaneDied for unknown pane pane=3
2026-08-13T19:26:00.856776Z INFO herdr::logging: api request completed event="api.request.complete" subsystem="api" outcome="error" request_id="cli:pane:current" method="pane.current"
2026-08-13T19:26:05.844348Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=1
2026-08-13T19:26:11.871605Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=1 status="ExitStatus { code: 0, signal: None }"
2026-08-13T19:26:11.872225Z INFO herdr::pane: pane session terminated pane=1 pid=254656 signal=Hangup
2026-08-13T19:26:11.872432Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=7 rows=69 cols=143 scrollback_limit_bytes=10000000
2026-08-13T19:26:11.873278Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=7 pid=257291
2026-08-13T19:26:11.873398Z INFO herdr::logging: workspace created event="workspace.create" subsystem="workspace" outcome="ok" workspace_id="w12" pane_id=7
2026-08-13T19:26:11.873401Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w12"
2026-08-13T19:26:11.873407Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w12" tab_id="w12:t1"
2026-08-13T19:26:13.191478Z INFO herdr::logging: pane child exited event="pane.exit" subsystem="pane" outcome="completed" pane_id=7 status="ExitStatus { code: 0, signal: None }"
2026-08-13T19:26:13.192792Z INFO herdr::pane: pane session terminated pane=7 pid=257291 signal=Hangup
2026-08-13T19:26:13.193118Z INFO herdr::logging: spawning pane terminal event="pane.spawn.start" subsystem="pane" outcome="started" pane_id=8 rows=69 cols=143 scrollback_limit_bytes=10000000
2026-08-13T19:26:13.194061Z INFO herdr::logging: pane child spawned event="pane.spawned" subsystem="pane" outcome="ok" pane_id=8 pid=257575
2026-08-13T19:26:13.194165Z INFO herdr::logging: workspace created event="workspace.create" subsystem="workspace" outcome="ok" workspace_id="w13" pane_id=8
2026-08-13T19:26:13.194169Z INFO herdr::logging: workspace focused event="workspace.focus" subsystem="workspace" outcome="ok" workspace_id="w13"
2026-08-13T19:26:13.194176Z INFO herdr::logging: tab focused event="tab.focus" subsystem="tab" outcome="ok" workspace_id="w13" tab_id="w13:t1"
2026-08-13T19:26:16.630045Z INFO herdr::server::headless: client detach requested via keybind client_id=2
2026-08-13T19:26:16.633446Z INFO herdr::server::headless: client disconnected client_id=2
2026-08-13T19:26:18.203379Z INFO herdr::logging: session saved event="persist.save" subsystem="persist" outcome="ok" path=/home/prad/.config/herdr/session.json workspaces=1
2026-08-13T19:55:45.490311Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-13T19:55:45.574013Z WARN herdr::detect::manifest_update: skipping unknown remote manifest agent agent="qwen"
2026-08-13T20:25:45.491500Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-13T20:25:45.579795Z WARN herdr::detect::manifest_update: skipping unknown remote manifest agent agent="qwen"
2026-08-13T20:55:45.492933Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-13T20:55:45.647366Z WARN herdr::detect::manifest_update: skipping unknown remote manifest agent agent="qwen"
2026-08-13T21:25:45.495070Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-13T21:25:45.582277Z WARN herdr::detect::manifest_update: skipping unknown remote manifest agent agent="qwen"
2026-08-13T21:55:45.497129Z INFO herdr::logging: checking for updates event="update.check.start" subsystem="update" outcome="started"
2026-08-13T21:55:45.570899Z WARN herdr::detect::manifest_update: skipping unknown remote manifest agent agent="qwen"
+209
View File
@@ -67,6 +67,215 @@
"installed_unix_ms": 1786302769417
}
},
{
"plugin_id": "persiyanov.reviewr",
"name": "reviewr",
"version": "0.30.1",
"min_herdr_version": "0.7.5",
"description": "Review agent-written diffs beside the chat and add line comments to the agent input.",
"manifest_path": "/home/prad/.config/herdr/plugins/github/persiyanov.reviewr-e87b654a74f8/herdr-plugin.toml",
"plugin_root": "/home/prad/.config/herdr/plugins/github/persiyanov.reviewr-e87b654a74f8",
"enabled": true,
"platforms": [
"macos",
"linux"
],
"build": [
{
"command": [
"bash",
"herdr/install.sh"
]
}
],
"actions": [
{
"id": "close",
"title": "reviewr: close pane",
"contexts": [
"pane",
"workspace"
],
"command": [
"bash",
"herdr/pane.sh",
"close"
]
},
{
"id": "open",
"title": "reviewr: open pane",
"contexts": [
"pane",
"workspace"
],
"command": [
"bash",
"herdr/pane.sh",
"open"
]
},
{
"id": "toggle",
"title": "reviewr: toggle pane",
"contexts": [
"pane",
"workspace"
],
"command": [
"bash",
"herdr/pane.sh",
"toggle"
]
}
],
"events": [
{
"on": "worktree.created",
"command": [
"bash",
"herdr/pane.sh",
"auto-open"
]
}
],
"panes": [
{
"id": "pane",
"title": "reviewr",
"placement": "split",
"command": [
"sh",
"-c",
"exec \"$HERDR_PLUGIN_ROOT/bin/herdr-reviewr\""
]
}
],
"source": {
"kind": "github",
"owner": "persiyanov",
"repo": "herdr-reviewr",
"resolved_commit": "792b4b31475ddbf263ee4d421a984e7418031506",
"managed_path": "/home/prad/.config/herdr/plugins/github/persiyanov.reviewr-e87b654a74f8",
"installed_unix_ms": 1786480679113
}
},
{
"plugin_id": "rjyo.window-title-sync",
"name": "Window Title Sync",
"version": "0.1.0",
"min_herdr_version": "0.7.0",
"description": "Sync the outer terminal title to the focused Herdr workspace, tab, and agent session.",
"manifest_path": "/home/prad/.config/herdr/plugins/github/rjyo.window-title-sync-aa963fbbc3d9/herdr-plugin.toml",
"plugin_root": "/home/prad/.config/herdr/plugins/github/rjyo.window-title-sync-aa963fbbc3d9",
"enabled": true,
"platforms": [
"macos",
"linux"
],
"actions": [
{
"id": "refresh",
"title": "Refresh terminal title",
"contexts": [
"workspace",
"tab",
"pane"
],
"command": [
"bun",
"sync-title.js"
]
}
],
"events": [
{
"on": "pane.agent_detected",
"command": [
"bun",
"sync-title.js"
]
},
{
"on": "pane.agent_status_changed",
"command": [
"bun",
"sync-title.js"
]
},
{
"on": "pane.closed",
"command": [
"bun",
"sync-title.js"
]
},
{
"on": "pane.created",
"command": [
"bun",
"sync-title.js"
]
},
{
"on": "pane.focused",
"command": [
"bun",
"sync-title.js"
]
},
{
"on": "pane.moved",
"command": [
"bun",
"sync-title.js"
]
},
{
"on": "tab.focused",
"command": [
"bun",
"sync-title.js"
]
},
{
"on": "tab.renamed",
"command": [
"bun",
"sync-title.js"
]
},
{
"on": "workspace.focused",
"command": [
"bun",
"sync-title.js"
]
},
{
"on": "workspace.renamed",
"command": [
"bun",
"sync-title.js"
]
},
{
"on": "workspace.updated",
"command": [
"bun",
"sync-title.js"
]
}
],
"source": {
"kind": "github",
"owner": "rjyo",
"repo": "herdr-window-title-sync",
"resolved_commit": "b07f1140b7308d66487b2f4be546c0c7db065569",
"managed_path": "/home/prad/.config/herdr/plugins/github/rjyo.window-title-sync-aa963fbbc3d9",
"installed_unix_ms": 1786479421566
}
},
{
"plugin_id": "vim-herdr-navigation",
"name": "Vim Herdr Navigation",
+6 -110
View File
@@ -2,63 +2,11 @@
"version": 3,
"workspaces": [
{
"id": "wP",
"id": "w13",
"custom_name": null,
"identity_cwd": "/home/prad/Developer/github.com/prdlk/clipmark",
"identity_cwd": "/home/prad",
"public_pane_numbers": {
"7": 5,
"3": 1
},
"next_public_pane_number": 6,
"public_tab_numbers": [
1,
3
],
"next_public_tab_number": 4,
"tabs": [
{
"custom_name": "omp",
"layout": {
"Pane": 3
},
"panes": {
"3": {
"cwd": "/home/prad/Developer/github.com/prdlk/clipmark",
"agent_session": {
"source": "herdr:omp",
"agent": "omp",
"kind": "path",
"value": "/home/prad/.omp/agent/sessions/-Developer-github.com-prdlk-clipmark/2026-08-10T20-42-28-503Z_019fed69-9917-7000-b3c6-b4fedc829e55.jsonl"
}
}
},
"zoomed": false,
"focused": 3,
"root_pane": 3
},
{
"custom_name": null,
"layout": {
"Pane": 7
},
"panes": {
"7": {
"cwd": "/home/prad/Developer/github.com/prdlk/clipmark"
}
},
"zoomed": false,
"focused": 7,
"root_pane": 7
}
],
"active_tab": 0
},
{
"id": "wQ",
"custom_name": null,
"identity_cwd": "/home/prad/Developer/prad.codes/go/crypto",
"public_pane_numbers": {
"5": 1
"8": 1
},
"next_public_pane_number": 2,
"public_tab_numbers": [
@@ -68,76 +16,24 @@
"tabs": [
{
"custom_name": null,
"layout": {
"Pane": 5
},
"panes": {
"5": {
"cwd": "/home/prad/Developer/prad.codes/go/crypto"
}
},
"zoomed": false,
"focused": 5,
"root_pane": 5
}
],
"active_tab": 0
},
{
"id": "wS",
"custom_name": null,
"identity_cwd": "/home/prad/Developer/github.com/prdlk/tldraw-system-design",
"public_pane_numbers": {
"9": 2,
"8": 1
},
"next_public_pane_number": 3,
"public_tab_numbers": [
1,
2
],
"next_public_tab_number": 3,
"tabs": [
{
"custom_name": "omp",
"layout": {
"Pane": 8
},
"panes": {
"8": {
"cwd": "/home/prad/Developer/github.com/prdlk/tldraw-system-design",
"agent_session": {
"source": "herdr:omp",
"agent": "omp",
"kind": "path",
"value": "/home/prad/.omp/agent/sessions/-Developer-github.com-prdlk-tldraw-system-design/2026-08-11T19-09-58-310Z_019ff23b-44a6-7000-96ce-9aab86e8d0c9.jsonl"
}
"cwd": "/home/prad"
}
},
"zoomed": false,
"focused": 8,
"root_pane": 8
},
{
"custom_name": null,
"layout": {
"Pane": 9
},
"panes": {
"9": {
"cwd": "/home/prad/Developer/github.com/prdlk/tldraw-system-design"
}
},
"zoomed": false,
"focused": 9,
"root_pane": 9
}
],
"active_tab": 0
}
],
"active": 2,
"selected": 2,
"active": 0,
"selected": 0,
"sidebar_width": 24,
"sidebar_section_split": 0.4939759,
"collapsed_space_keys": []
+9 -5
View File
@@ -1,5 +1,5 @@
# ── base.conf · shared ──
font_size 13.5
font_size 11.5
font_family VictorMono Nerd Font
bold_italic_font auto
window_padding_width 8
@@ -17,19 +17,21 @@ cursor_blink_interval 0
# real socket is @kitty-local-<PID>; scripts must use $KITTY_LISTEN_ON, not this name
listen_on unix:@kitty-local
enabled_layouts splits:split_axis=vertical
enabled_layouts splits:split_axis=vertical,stack
# launch aliases
action_alias launch_mn launch --cwd=current --type=overlay-main
action_alias launch_os launch --cwd=current --type=os-window
action_alias launch_ov launch --cwd=current --type=overlay
action_alias launch_tb launch --cwd=current --type=tab
action_alias launch_hs launch --cwd=current --location=hsplit --bias=25
action_alias launch_vs launch --cwd=current --location=vsplit --bias=35
action_alias launch_hs launch --cwd=current --location=hsplit --bias=20
action_alias launch_vs launch --cwd=current --location=vsplit --bias=40
# panes = kitty windows
map super+t new_tab
map super+enter new_tab_with_cwd
map ctrl+space launch_hs
map ctrl+enter launch_vs
map super+n new_os_window
map ctrl+shift+space new_os_window
@@ -41,9 +43,11 @@ map ctrl+shift+k next_tab
# Shortcuts
map ctrl+shift+g launch_ov lazygit
map ctrl+shift+f launch_mn yazi
map ctrl+shift+f toggle_layout stack
map ctrl+shift+e launch_tb nvim
map ctrl+shift+a launch_vs omp
# suvadu history picker: pick → execute → drop to shell (script: ~/.local/bin/suv-pick)
map ctrl+shift+p launch_hs suv-pick
# Misc
map ctrl+shift+c copy_to_clipboard
+2 -2
View File
@@ -137,11 +137,11 @@ gui:
# Config relating to git
git:
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md
pagers:
diffRenderers:
# - pager: critique --stdin
- # Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never'
colorArg: always
pager: delta --dark --paging=never
command: delta --dark --paging=never
# e.g.
# diff-so-fancy
# delta --dark --paging=never
@@ -72,6 +72,7 @@ window-rule {
default-column-width { proportion 0.5; }
}
window-rule {
match title="Picture-in-Picture" app-id="zen"
match title="Picture in picture"
+2 -2
View File
@@ -33,13 +33,13 @@ binds {
Super+Ctrl+A { spawn "vicinae" "vicinae://launch/applications/com.anthropic.Claude"; }
Super+Ctrl+G { spawn "vicinae" "vicinae://launch/applications/gemini-desktop"; }
Super+Alt+Ctrl+H { spawn "hermes" "desktop"; }
Super+Alt+Ctrl+J { spawn "niri-launch" "kitty"; }
Super+Alt+Ctrl+K { spawn "niri-launch" "brave-origin-nightly"; }
Super+Alt+Ctrl+O { spawn "niri-launch" "obsidian"; }
Super+Alt+Ctrl+G { spawn "vicinae" "vicinae://launch/applications/com.mitchellh.ghostty"; }
Super+Alt+Ctrl+W { spawn "vicinae" "vicinae://launch/applications/tldraw_offline"; }
Super+Alt+Ctrl+E { spawn "vicinae" "vicinae://launch/applications/com.fastmail.Fastmail"; }
Super+Alt+Ctrl+B { spawn "vicinae" "vicinae://launch/applications/beeper"; }
Super+Alt+Ctrl+G { spawn "vicinae" "vicinae://launch/applications/com.mitchellh.ghostty"; }
Super+Alt+Ctrl+L { spawn "vicinae" "vicinae://launch/applications/WebApp-Linear3312"; }
Super+Alt+Ctrl+M { spawn "vicinae" "vicinae://launch/applications/beeper"; }
Super+Alt+Ctrl+T { spawn "vicinae" "vicinae://launch/applications/todoist"; }
-34
View File
@@ -1,34 +0,0 @@
# AstroNvim Template
**NOTE:** This is for AstroNvim v6+
A template for getting started with [AstroNvim](https://github.com/AstroNvim/AstroNvim)
## 🛠️ Installation
#### Make a backup of your current nvim and shared folder
```shell
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bak
```
#### Create a new user repository from this template
Press the "Use this template" button above to create a new repository to store your user configuration.
You can also just clone this repository directly if you do not want to track your user configuration in GitHub.
#### Clone the repository
```shell
git clone https://github.com/<your_user>/<your_repository> ~/.config/nvim
```
#### Start Neovim
```shell
nvim
```
-3
View File
@@ -1,3 +0,0 @@
{
"format.enable": false
}
-20
View File
@@ -1,20 +0,0 @@
{
"neodev": {
"library": {
"enabled": true,
"plugins": true
}
},
"neoconf": {
"plugins": {
"lua_ls": {
"enabled": true
}
}
},
"lspconfig": {
"lua_ls": {
"Lua.format.enable": false
}
}
}
-7
View File
@@ -1,7 +0,0 @@
column_width = 120
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferDouble"
call_parentheses = "None"
collapse_simple_statement = "Always"
-38
View File
@@ -1,38 +0,0 @@
-- This file simply bootstraps the installation of Lazy.nvim and then calls other files for execution
-- This file doesn't necessarily need to be touched, BE CAUTIOUS editing this file and proceed at your own risk.
local lazypath = vim.env.LAZY or vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
if not (vim.env.LAZY or (vim.uv or vim.loop).fs_stat(lazypath)) then
-- stylua: ignore
local result = vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
if vim.v.shell_error ~= 0 then
-- stylua: ignore
vim.api.nvim_echo({ { ("Error cloning lazy.nvim:\n%s\n"):format(result), "ErrorMsg" }, { "Press any key to exit...", "MoreMsg" } }, true, {})
vim.fn.getchar()
vim.cmd.quit()
end
end
vim.opt.rtp:prepend(lazypath)
-- validate that lazy is available
if not pcall(require, "lazy") then
-- stylua: ignore
vim.api.nvim_echo({ { ("Unable to load lazy from: %s\n"):format(lazypath), "ErrorMsg" }, { "Press any key to exit...", "MoreMsg" } }, true, {})
vim.fn.getchar()
vim.cmd.quit()
end
require "lazy_setup"
require "polish"
-- Enable terminal title setting in Nvim
vim.opt.title = true
-- Set the format of the title
vim.opt.titlestring = "%t - Nvim"
-- Ensure Nvim doesn't slow down on exit by resetting shell
vim.cmd('set shell=sh') -- Prevents fish-incompatible lag when exiting nvim in fish/tmux
vim.opt.guicursor:append("v:hor20")
vim.opt.guicursor:append("a:blinkon0")
-9
View File
@@ -1,9 +0,0 @@
{
"extras": [
],
"news": {
"NEWS.md": "11866"
},
"version": 8
}
View File
Whitespace-only changes.
-32
View File
@@ -1,32 +0,0 @@
-- AstroCommunity: import any community modules here
-- We import this file in `lazy_setup.lua` before the `plugins/` folder.
-- This guarantees that the specs are processed before any user plugins.
---@type LazySpec
return {
"AstroNvim/astrocommunity",
version = false, -- Use latest astrocommunity
{ import = "astrocommunity.bars-and-lines.bufferline-nvim" },
{ import = "astrocommunity.editing-support.refactoring-nvim" },
{ import = "astrocommunity.editing-support.conform-nvim" },
{ import = "astrocommunity.diagnostics.trouble-nvim" },
{ import = "astrocommunity.git.octo-nvim" },
{ import = "astrocommunity.pack.mdx" },
{ import = "astrocommunity.pack.biome" },
{ import = "astrocommunity.pack.go" },
{ import = "astrocommunity.pack.golangci-lint" },
{ import = "astrocommunity.pack.html-css" },
{ import = "astrocommunity.pack.json" },
{ import = "astrocommunity.pack.proto" },
{ import = "astrocommunity.pack.pkl" },
{ import = "astrocommunity.pack.rust" },
{ import = "astrocommunity.pack.yaml" },
{ import = "astrocommunity.pack.toml" },
{ import = "astrocommunity.pack.typescript" },
{ import = "astrocommunity.pack.tailwindcss" },
{ import = "astrocommunity.completion.supermaven-nvim" },
{ import = "astrocommunity.lsp.dev-tools-nvim" },
{ import = "astrocommunity.lsp.nvim-lsp-file-operations" },
{ import = "astrocommunity.colorscheme.cyberdream-nvim" },
}
@@ -1,314 +0,0 @@
--- Shared ignore patterns for file explorers and pickers
--- This module provides a centralized list of patterns to ignore across
--- snacks.picker and other file browsing tools. (The never_show lists were
--- consumed by neo-tree, now replaced by yazi.nvim; kept as reference data.)
---
--- Everything here is fast-event-context safe (pure Lua + libuv only):
--- snacks picker transforms run inside async/uv callbacks where vimL
--- functions (vim.fn.*) raise E5560.
--- @module config.ignore_patterns
local uv = vim.uv or vim.loop
local M = {}
--- Core ignore patterns used across the configuration
--- These patterns use glob syntax (* and ? wildcards), matched against
--- file basenames and individual path segments.
M.patterns = {
-- Build artifacts and generated files
".beads",
"chain_*.json",
".npmrc",
".epiq",
".omc",
".claude",
".changeset",
".codegraph",
".gitignore",
"turbo.json",
"vite.config.ts",
"bunfig.toml",
"*.pb.go",
"*.pkl.go",
"*.pulsar.go",
"*.pb.gorm.go",
"*.pb.gw.go",
"*_templ.go",
"*_mock.go",
"*_integration.go",
"*_test.go",
"AGENTS.md",
"test",
"tests",
-- Configuration files
".editorconfig",
".gitpod.*",
-- Lock files and dependencies
"*.lock",
"*.lockb",
"*.sum",
"*.work.*",
"package-lock.json",
"pnpm-lock.yaml",
".gitattributes",
".oxlintrc.json",
"tsconfig*",
-- Temporary and cache files
"*.tmp",
".typecopy",
".python-version",
".prettierrc",
".trunk",
".config",
".pkl-lsp",
".tsbuildinfo",
".wrangler",
".parcel-cache",
".conform*",
".null-ls_*",
-- Binary and media files
"*.wasm",
"*.png",
"*.jpg",
"*.icns",
"*.ico",
-- Directories and special files
"contrib",
"interchaintest",
"PULL_REQUEST_TEMPLATE.md",
"Icon?",
"iCloud~",
"com~",
}
--- Patterns that should never be shown in any file browser
M.never_show = {
-- Version control
".git",
".ai",
".omc",
-- Dependencies
"node_modules",
".wrangler",
"CODEOWNERS",
".golangci.yml",
-- Build outputs
".next",
".parcel-cache",
-- Task runners and tools
".task",
".devbox",
".turbo",
".jj",
".spawn",
-- IDE and editor
".idea",
".venv",
".metadata",
".dart_tool",
".devcontainer",
-- Build tools
".gradle",
"gradle.bat",
"heighliner",
-- Temporary
".tmp",
"tmp",
-- Logs
"sonr.log",
"junit.xml",
-- macOS
".DS_Store",
".DocumentRevisions-V100",
".Spotlight-V100",
".TemporaryItems",
".Trashes",
".fseventsd",
".timemachine",
-- Templates
"DISCUSSION_TEMPLATE",
"ISSUE_TEMPLATE",
-- License
"LICENSE",
}
--- Patterns that should never be shown (pattern matching)
M.never_show_patterns = {
"*DS_Store",
".obsidian",
".pkl-lsp",
".tsbuildinfo",
"package-lock.json",
".prettierrc",
"node_modules",
".DocumentRevisions-V100",
".Spotlight-V100",
".TemporaryItems",
".Trashes",
".fseventsd",
".editorconfig",
"*.min.js",
"*.lock",
"*lock*",
"*.lockb",
"*.pulsar.go",
"*.pb.gorm.go",
"*.pb.gw.go",
"*_templ.go",
"*.tmp",
"*.work.*",
"*.sum",
".parcel-cache",
"*.icns",
"*.ico",
"*.iml",
"Icon?",
"iCloud~",
"com~",
".conform*",
".null-ls_*",
}
--- Directories to ignore when filtering files
M.ignored_directories = {
"contracts",
"crypto",
"api",
"chains",
"test",
"examples",
"scripts",
"bridge",
"client",
"translations",
"env",
".husky",
".worktrees",
}
local EMPTY = {}
--- Convert a glob (* and ? wildcards) to an anchored Lua pattern
--- @param glob string
--- @return string
local function glob_to_lua(glob)
return "^" .. glob:gsub("[%%%.%(%)%+%-%^%$%[%]]", "%%%0"):gsub("%*", ".*"):gsub("%?", ".") .. "$"
end
--- @param globs string[]
--- @return string[]
local function compile_globs(globs)
local out = {}
for _, g in ipairs(globs) do
out[#out + 1] = glob_to_lua(g)
end
return out
end
--- Find the git root for a directory by walking up (pure libuv, cached)
local root_cache = {} ---@type table<string, string|false>
--- @param dir string
--- @return string?
local function git_root(dir)
local cached = root_cache[dir]
if cached ~= nil then return cached or nil end
local cur = dir
while cur and cur ~= "" do
if uv.fs_stat(cur .. "/.git") then
root_cache[dir] = cur
return cur
end
local parent = cur:match "(.+)/[^/]+$"
if not parent or parent == cur then break end
cur = parent
end
root_cache[dir] = false
return nil
end
--- Read additional ignore patterns from the .rgignore file in the git root.
--- Cached per file and invalidated on mtime change. Safe in fast event contexts.
--- @param dir? string directory to resolve the git root from (defaults to cwd)
--- @return string[] patterns List of glob patterns from .rgignore
local rgignore_cache = {} ---@type table<string, {mtime: number, patterns: string[]}>
function M.read_rgignore(dir)
local root = git_root(dir or uv.cwd())
if not root then return EMPTY end
local path = root .. "/.rgignore"
local stat = uv.fs_stat(path)
if not stat then return EMPTY end
local cached = rgignore_cache[path]
if cached and cached.mtime == stat.mtime.sec then return cached.patterns end
local patterns = {}
local file = io.open(path, "r")
if file then
for line in file:lines() do
if line ~= "" and not line:match "^#" then
patterns[#patterns + 1] = (line:gsub("^%./", ""))
end
end
file:close()
end
rgignore_cache[path] = { mtime = stat.mtime.sec, patterns = patterns }
return patterns
end
--- Get all hide patterns including rgignore
--- @param dir? string directory to resolve the git root from (defaults to cwd)
--- @return table patterns Combined list of all patterns to hide
function M.get_all_patterns(dir)
return vim.list_extend(vim.list_extend({}, M.patterns), M.read_rgignore(dir))
end
--- Create a filter for snacks picker `transform` options.
--- Snacks contract: return `false` to DROP an item, `true`/`nil` to keep it
--- (returning nil keeps the item!). Runs per item in a fast event context,
--- so only pure Lua and libuv are used here.
--- @return fun(item: snacks.picker.finder.Item): boolean
function M.create_picker_filter()
local static ---@type string[]? compiled static globs (lazy)
local last_raw, last_rg = nil, EMPTY ---@type string[]?, string[]
return function(item)
local file = item and item.file
if not file then return true end
static = static or compile_globs(M.patterns)
local raw = M.read_rgignore(item.cwd)
if raw ~= last_raw then
last_raw, last_rg = raw, compile_globs(raw)
end
-- Match every path segment (directories and basename) anchored,
-- so `test` drops `test/foo.lua` but never `latest.md`.
for seg in file:gmatch "[^/\\]+" do
for _, pat in ipairs(static) do
if seg:match(pat) then return false end
end
for _, pat in ipairs(last_rg) do
if seg:match(pat) then return false end
end
for _, dirname in ipairs(M.ignored_directories) do
if seg == dirname then return false end
end
end
return true
end
end
return M
-32
View File
@@ -1,32 +0,0 @@
require("lazy").setup({
{
"AstroNvim/AstroNvim",
version = "^6", -- Remove version tracking to elect for nightly AstroNvim
import = "astronvim.plugins",
opts = { -- AstroNvim options must be set here with the `import` key
mapleader = " ", -- This ensures the leader key must be configured before Lazy is set up
maplocalleader = ",", -- This ensures the localleader key must be configured before Lazy is set up
icons_enabled = true, -- Set to false to disable icons (if no Nerd Font is available)
pin_plugins = nil, -- Default will pin plugins when tracking `version` of AstroNvim, set to true/false to override
update_notifications = true, -- Enable/disable notification about running `:Lazy update` twice to update pinned plugins
},
},
{ import = "community" },
{ import = "plugins" },
} --[[@as LazySpec]], {
-- Configure any other `lazy.nvim` configuration options here
install = { colorscheme = { "astrotheme", "habamax" } },
ui = { backdrop = 100 },
performance = {
rtp = {
-- disable some rtp plugins, add more to your liking
disabled_plugins = {
"gzip",
"netrwPlugin",
"tarPlugin",
"tohtml",
"zipPlugin",
},
},
},
} --[[@as LazyConfig]])
-456
View File
@@ -1,456 +0,0 @@
--- AstroCore configuration (AstroNvim v6 / Neovim 0.12)
--- Core settings, keymappings, and autocmds
--- @module plugins.astrocore
local ignore_patterns = require "config.ignore_patterns"
local file_filter = ignore_patterns.create_picker_filter()
-- Open a snacks picker with trouble.nvim send-to-quickfix action bound to <C-t>.
local function with_trouble(source, opts)
opts = opts or {}
opts.actions = require("trouble.sources.snacks").actions
opts.win = opts.win or {}
opts.win.input = opts.win.input or {}
opts.win.input.keys = vim.tbl_extend("force", opts.win.input.keys or {}, {
["<c-t>"] = { "trouble_open", mode = { "n", "i" } },
})
require("snacks").picker[source](opts)
end
return {
"AstroNvim/astrocore",
---@type AstroCoreOpts
opts = {
sessions = {
autosave = {
last = true,
cwd = true,
},
ignore = {
dirs = {},
filetypes = { "gitcommit", "gitrebase" },
buftypes = {},
},
},
rooter = {
detector = {
"lsp",
{ ".git", "_darcs", ".hg", ".bzr", ".svn" },
{
"package.json",
"lua",
"Cargo.toml",
"Pipfile",
"docs.json",
},
},
ignore = {
servers = { "golangci_lint_ls" },
dirs = {},
},
autochdir = true,
scope = "global",
notify = false,
},
-- v6: features schema changed
-- diagnostics_mode (0-3) -> diagnostics = { virtual_text, virtual_lines }
-- large_buf and cmp are new keys
features = {
large_buf = { size = 1024 * 256, lines = 10000 },
autopairs = true,
cmp = true,
diagnostics = { virtual_text = false, virtual_lines = false },
highlighturl = true,
notifications = false,
},
-- vim.diagnostic.config() values applied when diagnostics are toggled on
diagnostics = {
virtual_text = true,
underline = true,
},
autocmds = {
custom_title = {
{
event = { "BufEnter", "DirChanged" },
desc = "Update terminal title with org/repo format",
callback = function()
local filepath = vim.fn.expand "%:p"
local filename = vim.fn.expand "%:t"
if filename == "" then
local cwd = vim.fn.getcwd()
local github_match = cwd:match "github%.com/([^/]+/[^/]+)"
if github_match then
vim.opt.titlestring = github_match
else
vim.opt.titlestring = "Nvim"
end
return
end
local github_match = filepath:match "github%.com/([^/]+/[^/]+)"
if github_match then
vim.opt.titlestring = string.format("%s | %s", filename, github_match)
else
vim.opt.titlestring = string.format("%s | Nvim", filename)
end
end,
},
},
restore_session = {
{
event = "VimEnter",
desc = "Restore previous directory session if neovim opened with no arguments",
nested = true, -- trigger other autocommands as buffers open
callback = function()
if vim.fn.argc(-1) == 0 then
require("resession").load(
vim.fn.getcwd(),
{ dir = "dirsession", silence_errors = true }
)
end
end,
},
},
},
options = {
opt = {
relativenumber = false,
number = true,
spell = false,
wrap = true,
clipboard = "unnamedplus",
title = true,
titlestring = "",
laststatus = 0,
},
g = {},
},
mappings = {
n = {
-- overrides AstroNvim's default <C-q> = force quit (:q!)
["<C-q>"] = { "<Cmd>wqa<CR>", desc = "Save all buffers and quit Neovim" },
["<C-!>"] = { "<Cmd>suspend<CR>", desc = "Suspend nvim (return with 'fg')" },
["ZZ"] = { "<Cmd>wqa<CR>", desc = "Save all buffers and quit Neovim" },
["<A-q>"] = { "<Cmd>wqa<CR>", desc = "Save all buffers and quit Neovim" },
["<C-c>"] = { "<Cmd>wa<CR><Cmd>bd<CR>", desc = "Save and close buffer" },
["F"] = { "za", desc = "Toggle fold under cursor" },
-- v6: vim.diagnostic.goto_next/goto_prev deprecated in 0.11, use jump()
["J"] = {
function() vim.diagnostic.jump { count = 1, float = true } end,
desc = "Next diagnostic",
},
["K"] = {
function() vim.diagnostic.jump { count = -1, float = true } end,
desc = "Previous diagnostic",
},
["L"] = { "<Cmd>BufferLineCycleNext<CR>", desc = "Next buffer" },
["H"] = { "<Cmd>BufferLineCyclePrev<CR>", desc = "Previous buffer" },
["<Leader>e"] = {
function() require("snacks").picker.git_files { transform = file_filter } end,
desc = "Find git files",
},
["<leader><leader>"] = {
function() require("snacks").picker.smart() end,
desc = "Find files",
},
["<C-b>b"] = { "<Cmd>BufferLinePick<CR>", desc = "Pick buffer" },
["<C-b>f"] = {
function() require("snacks").picker.buffers() end,
desc = "Find buffers",
},
["<C-b><C-c>"] = {
function()
local current_buffer = vim.api.nvim_get_current_buf()
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
if buf ~= current_buffer then vim.api.nvim_buf_delete(buf, { force = true }) end
end
end,
desc = "Close all buffers except the current one",
},
["<C-b>g"] = {
function()
local groups = { "DEX", "DID", "DWN", "SVC", "Tests", "Actions", "Claude", "Docs", "Config" }
for _, group in ipairs(groups) do
vim.cmd("BufferLineGroupToggle " .. group)
end
end,
desc = "Toggle all buffer groups",
},
["<C-b>l"] = {
function() require("snacks").picker.lines() end,
desc = "Find in line",
},
["<C-g>o"] = { "<cmd>!gh repo view --web<CR>", desc = "Open Repo on Web" },
["<C-s>"] = { "<cmd>w<CR>", desc = "Save buffer" },
["<C-w>"] = { "<cmd>w<CR><Cmd>bd<CR>", desc = "Save and close buffer" },
["<C-Tab>"] = { "<cmd>tabnext<CR>", desc = "Next Tab" },
["<C-g><C-i>"] = { "<cmd>Octo issue list<CR>", desc = "List Issues" },
["<C-g><C-l>"] = { "<cmd>Octo label<CR>", desc = "Manage Labels" },
["<C-g><C-p>"] = { "<cmd>Octo pr list<CR>", desc = "List PRs" },
["<C-g>s"] = { "<cmd>Octo search<CR>", desc = "Octo Search" },
["<C-g><C-r>"] = { "<cmd>!gh release list<CR>", desc = "List Releases" },
["<C-g>d"] = {
function() require("snacks").picker.git_diff() end,
desc = "Search git diffs",
},
["<C-g><C-b>"] = {
function() require("snacks").picker.git_branches() end,
desc = "Search git branches",
},
["vv"] = { "gg0VG$", desc = "Select all contents in buffer" },
["T"] = { "gg", desc = "Go to top of file" },
["<C-f>d"] = {
function() require("snacks").picker.diagnostics() end,
desc = "Find diagnostics",
},
["<C-f>l"] = {
function() require("snacks").picker.lines() end,
desc = "Find in line",
},
["<C-f>t"] = {
function() require("snacks").picker.lines() end,
desc = "Find in line",
},
["<C-f>w"] = {
function() require("snacks").picker.grep() end,
desc = "Find word",
},
["<C-f>f"] = {
function() require("snacks").picker.files { transform = file_filter } end,
desc = "Find files (cwd)",
},
["<C-f><C-f>"] = {
function()
require("snacks").picker.lsp_symbols { layout = { preset = "vscode", preview = "main" } }
end,
desc = "Find LSP symbols",
},
["<C-f>o"] = {
function() require("snacks").picker.recent() end,
desc = "Find recent files",
},
["<C-f>p"] = {
function() require("snacks").picker.projects() end,
desc = "Find projects",
},
["<C-f>gc"] = {
function()
local ai_dir = vim.fn.getcwd() .. "/.ai"
if vim.fn.isdirectory(ai_dir) == 0 then
vim.notify("No .ai directory found in current project", vim.log.levels.WARN)
return
end
require("snacks").picker.files {
cwd = ai_dir,
transform = file_filter,
}
end,
desc = "Find AI files",
},
["<C-f>g"] = { desc = "Find by Group" },
["<C-f>gw"] = {
function()
local workflows_dir = vim.fn.getcwd() .. "/.github/workflows"
if vim.fn.isdirectory(workflows_dir) == 0 then
vim.notify("No .github/workflows directory found in current project", vim.log.levels.WARN)
return
end
require("snacks").picker.files {
cwd = workflows_dir,
transform = file_filter,
}
end,
desc = "Find GitHub Workflow files",
},
["<C-f>gd"] = {
function()
require("snacks").picker.files {
cmd = "fd",
args = { "devbox.json|process-compose.yaml|Dockerfile|docker-compose.yaml|compose.yaml" },
}
end,
desc = "Find Devbox/Docker files",
},
["<C-f>gm"] = {
function() require("snacks").picker.files { cmd = "fd", args = { "Makefile" } } end,
desc = "Find Makefile files",
},
["<C-f>gp"] = {
function() require("snacks").picker.files { cmd = "fd", args = { "package.json" } } end,
desc = "Find Package.json files",
},
["<C-p>"] = {
function()
if vim.b.toggle_number == 99 then
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<C-p>", true, false, true), "t", false)
return
end
local content = vim.fn.getreg "+"
vim.api.nvim_paste(content, true, -1)
end,
desc = "Paste from system clipboard",
},
["<C-a>d"] = {
function() with_trouble("diagnostics") end,
desc = "Search diagnostics (<C-t> sends to Trouble)",
},
["<C-a>a"] = {
function() vim.lsp.buf.code_action() end,
desc = "Show code actions",
},
["<C-a>s"] = {
function() with_trouble("lsp_symbols") end,
desc = "Search LSP symbols (<C-t> sends to Trouble)",
},
["<C-a>S"] = {
function() with_trouble("lsp_workspace_symbols") end,
desc = "Search LSP workspace symbols (<C-t> sends to Trouble)",
},
["<C-a><C-s>"] = { "<Cmd>SupermavenToggle<CR>", desc = "Toggle Supermaven" },
["<leader>u"] = { desc = "UI Toggles" },
["<leader>ud"] = {
function() require("snacks").toggle.diagnostics():toggle() end,
desc = "Toggle Diagnostics",
},
["<leader>un"] = {
function() require("snacks").toggle.line_number():toggle() end,
desc = "Toggle Line Numbers",
},
["<leader>ur"] = {
function() require("snacks").toggle.option("relativenumber"):toggle() end,
desc = "Toggle Relative Numbers",
},
["<leader>uw"] = {
function() require("snacks").toggle.option("wrap"):toggle() end,
desc = "Toggle Line Wrap",
},
["<leader>us"] = {
function() require("snacks").toggle.option("spell"):toggle() end,
desc = "Toggle Spelling",
},
["<leader>ui"] = {
function() require("snacks").toggle.inlay_hints():toggle() end,
desc = "Toggle Inlay Hints",
},
["<leader>ut"] = {
function() require("snacks").toggle.treesitter():toggle() end,
desc = "Toggle Treesitter",
},
["<leader>uc"] = {
function() require("snacks").toggle.option("conceallevel", { off = 0, on = 2 }):toggle() end,
desc = "Toggle Conceal",
},
["<leader>uI"] = {
function() require("snacks").toggle.indent():toggle() end,
desc = "Toggle Indent Guides",
},
["<leader>uz"] = {
function() require("snacks").toggle.zen():toggle() end,
desc = "Toggle Zen Mode",
},
["<leader>uZ"] = {
function() require("snacks").toggle.zoom():toggle() end,
desc = "Toggle Zoom",
},
["<leader>ua"] = {
function() require("snacks").toggle.animate():toggle() end,
desc = "Toggle Animations",
},
["<leader>uS"] = {
function() require("snacks").toggle.scroll():toggle() end,
desc = "Toggle Smooth Scroll",
},
["<leader>up"] = {
function() require("snacks").toggle.profiler():toggle() end,
desc = "Toggle Profiler",
},
["<leader>uh"] = {
function() require("snacks").toggle.profiler_highlights():toggle() end,
desc = "Toggle Profiler Highlights",
},
["<leader>ux"] = {
function() require("snacks").toggle.dim():toggle() end,
desc = "Toggle Dim Inactive",
},
["<leader>uf"] = {
function()
vim.g.disable_autoformat = not vim.g.disable_autoformat
local status = vim.g.disable_autoformat and "disabled" or "enabled"
vim.notify("Format on save " .. status, vim.log.levels.INFO)
end,
desc = "Toggle Format on Save",
},
-- v6: virtual_lines is native in vim.diagnostic.config, lsp_lines plugin no longer needed
["<leader>ul"] = {
function()
local cfg = vim.diagnostic.config() or {}
local enabled = not cfg.virtual_lines
vim.diagnostic.config { virtual_lines = enabled, virtual_text = not enabled }
end,
desc = "Toggle Virtual Lines",
},
},
i = {
["<C-s>"] = { "<Cmd>wa<CR><Esc>", desc = "Save buffer, and return to normal mode" },
["<C-c>"] = { "<Cmd>wa<CR><Cmd>bd<CR><Esc>", desc = "Save, close buffer, and return to normal mode" },
["<C-x>"] = { "<Cmd>wa<CR><Cmd>bd<CR><Esc>", desc = "Save, close buffer, and return to normal mode" },
},
v = {
["<C-c>"] = { "<Cmd>w<CR><Cmd>bd<CR>", desc = "Save and close buffer" },
["<C-x>"] = { "<Cmd>w<CR><Cmd>bd<CR>", desc = "Save and close buffer" },
["D"] = {
function()
vim.cmd 'normal! "vy'
local selection = vim.fn.getreg "v"
local escaped = vim.fn.escape(selection, [[/\.*$^~[]])
vim.cmd(string.format([[%%s/%s//ge]], escaped))
vim.notify(string.format("Deleted all occurrences of: %s", selection), vim.log.levels.INFO)
end,
desc = "Delete all occurrences of selected text",
},
["R"] = {
function()
vim.cmd 'normal! "vy'
local selection = vim.fn.getreg "v"
local escaped = vim.fn.escape(selection, [[/\.*$^~[]])
require("snacks").input({
prompt = string.format("Replace '%s' with:", selection),
default = "",
}, function(replacement)
if replacement then
local escaped_replacement = vim.fn.escape(replacement, [[/\&~]])
vim.cmd(string.format([[%%s/%s/%s/ge]], escaped, escaped_replacement))
vim.notify(string.format("Replaced '%s' with '%s'", selection, replacement), vim.log.levels.INFO)
end
end)
end,
desc = "Replace all occurrences of selected text",
},
},
t = {
["<C-p>"] = { function() vim.cmd 'normal! "+p' end, desc = "Paste from system clipboard" },
["<C-b>f"] = {
function() require("snacks").picker.buffers() end,
desc = "Find buffers",
},
["<C-q>"] = {
function()
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes([[<C-\><C-n>]], true, false, true), "n", false)
vim.cmd "close"
end,
desc = "Exit terminal and close window",
},
},
},
},
}
-104
View File
@@ -1,104 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- AstroLSP allows you to customize the features in AstroNvim's LSP configuration engine
-- Configuration documentation can be found with `:h astrolsp`
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
-- as this provides autocomplete and documentation while editing
---@type LazySpec
return {
"AstroNvim/astrolsp",
---@type AstroLSPOpts
opts = {
-- Configuration table of features provided by AstroLSP
features = {
codelens = true, -- enable/disable codelens refresh on start
inlay_hints = false, -- enable/disable inlay hints on start
semantic_tokens = true, -- enable/disable semantic token highlighting
},
-- customize lsp formatting options
formatting = {
-- control auto formatting on save
format_on_save = {
enabled = true, -- enable or disable format on save globally
allow_filetypes = { -- enable format on save for specified filetypes only
-- "go",
},
ignore_filetypes = { -- disable format on save for specified filetypes
-- "python",
},
},
disabled = { -- disable formatting capabilities for the listed language servers
-- disable lua_ls formatting capability if you want to use StyLua to format your lua code
-- "lua_ls",
},
timeout_ms = 1000, -- default format timeout
-- filter = function(client) -- fully override the default formatting function
-- return true
-- end
},
-- enable servers that you already have installed without mason
servers = {
-- "pyright"
},
-- customize language server configuration passed to `vim.lsp.config`
-- client specific configuration can also go in `lsp/` in your configuration root (see `:h lsp-config`)
config = {
-- ["*"] = { capabilities = {} }, -- modify default LSP client settings such as capabilities
},
-- customize how language servers are attached
handlers = {
-- a function with the key `*` modifies the default handler, functions takes the server name as the parameter
-- ["*"] = function(server) vim.lsp.enable(server) end
-- the key is the server that is being setup with `vim.lsp.config`
-- rust_analyzer = false, -- setting a handler to false will disable the set up of that language server
},
-- Configure buffer local auto commands to add when attaching a language server
autocmds = {
-- first key is the `augroup` to add the auto commands to (:h augroup)
lsp_codelens_refresh = {
-- Optional condition to create/delete auto command group
-- can either be a string of a client capability or a function of `fun(client, bufnr): boolean`
-- condition will be resolved for each client on each execution and if it ever fails for all clients,
-- the auto commands will be deleted for that buffer
cond = "textDocument/codeLens",
-- cond = function(client, bufnr) return client.name == "lua_ls" end,
-- list of auto commands to set
{
-- events to trigger
event = { "InsertLeave", "BufEnter" },
-- the rest of the autocmd options (:h nvim_create_autocmd)
desc = "Refresh codelens (buffer)",
callback = function(args)
if require("astrolsp").config.features.codelens then vim.lsp.codelens.enable(true, { bufnr = args.buf }) end
end,
},
},
},
-- mappings to be set up on attaching of a language server
mappings = {
n = {
-- a `cond` key can provided as the string of a server capability to be required to attach, or a function with `client` and `bufnr` parameters from the `on_attach` that returns a boolean
gD = {
function() vim.lsp.buf.declaration() end,
desc = "Declaration of current symbol",
cond = "textDocument/declaration",
},
["<Leader>uY"] = {
function() require("astrolsp.toggles").buffer_semantic_tokens() end,
desc = "Toggle LSP semantic highlight (buffer)",
cond = function(client)
return client:supports_method "textDocument/semanticTokens/full" and vim.lsp.semantic_tokens ~= nil
end,
},
},
},
-- A custom `on_attach` function to be run after the default `on_attach` function
-- takes two parameters `client` and `bufnr` (`:h lsp-attach`)
on_attach = function(client, bufnr)
-- this would disable semanticTokensProvider for all clients
-- client.server_capabilities.semanticTokensProvider = nil
end,
},
}
-15
View File
@@ -1,15 +0,0 @@
-- AstroUI provides the basis for configuring the AstroNvim User Interface
-- Configuration documentation can be found with `:h astroui`
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
-- as this provides autocomplete and documentation while editing
---@type LazySpec
return {
"AstroNvim/astroui",
---@type AstroUIOpts
opts = {
-- change colorscheme
colorscheme = "cyberdream",
},
}
-105
View File
@@ -1,105 +0,0 @@
-- Run all safe LSP code actions advertised by attached servers before save,
-- then let conform format. The astrocommunity conform-nvim pack wires up
-- format_on_save; this just adds the pre-save code-action pass.
-- Action kinds we consider safe to apply on save. Matches exact kinds and
-- any subkinds via "<kind>." prefix (LSP CodeActionKind is hierarchical).
-- Deliberately NOT the bare "source" umbrella: it covers non-idempotent
-- document rewrites (e.g. marksman's "Create Table of Contents").
local SAFE_KINDS = {
"source.organizeImports",
"source.fixAll",
"quickfix",
}
local function is_safe_kind(kind)
if not kind or kind == "" then return false end
for _, safe in ipairs(SAFE_KINDS) do
if kind == safe or vim.startswith(kind, safe .. ".") then return true end
end
return false
end
-- Pull the kinds a given client advertises support for, filtered to safe ones.
-- If the server returns no kinds list, fall back to the top-level SAFE_KINDS so
-- it gets the chance to satisfy a broad "only" filter.
local function safe_kinds_for(client)
local provider = (client.server_capabilities or {}).codeActionProvider
if not provider then return {} end
local advertised = type(provider) == "table" and provider.codeActionKinds or nil
if not advertised or #advertised == 0 then return vim.deepcopy(SAFE_KINDS) end
local kinds = {}
for _, k in ipairs(advertised) do
if is_safe_kind(k) then table.insert(kinds, k) end
end
return kinds
end
-- Collect LSP-shaped diagnostics so quickfix actions have something to bind to.
local function lsp_diagnostics(bufnr)
local out = {}
for _, d in ipairs(vim.diagnostic.get(bufnr)) do
if d.user_data and d.user_data.lsp then table.insert(out, d.user_data.lsp) end
end
return out
end
-- Servers may ignore context.only (LSP allows it), so re-filter the returned
-- actions by kind before applying. Kind-less actions are skipped: we asked for
-- specific kinds, so anything untagged is not provably safe.
local function apply_result(client, bufnr, result)
if not result then return end
for _, action in ipairs(result) do
if is_safe_kind(action.kind) then
if action.edit then
vim.lsp.util.apply_workspace_edit(action.edit, client.offset_encoding or "utf-8")
end
if type(action.command) == "table" then
client:exec_cmd(action.command, { bufnr = bufnr })
end
end
end
end
local function apply_safe_actions(bufnr)
local clients = vim.lsp.get_clients { bufnr = bufnr, method = "textDocument/codeAction" }
if #clients == 0 then return end
local diagnostics = lsp_diagnostics(bufnr)
for _, client in ipairs(clients) do
local kinds = safe_kinds_for(client)
if #kinds > 0 then
local enc = client.offset_encoding or "utf-8"
local params = vim.lsp.util.make_range_params(0, enc)
params.context = { only = kinds, diagnostics = diagnostics, triggerKind = 2 }
local resp = client:request_sync("textDocument/codeAction", params, 1000, bufnr)
if resp and not resp.err then apply_result(client, bufnr, resp.result) end
end
end
end
---@type LazySpec
return {
"stevearc/conform.nvim",
init = function()
vim.api.nvim_create_autocmd("BufWritePre", {
group = vim.api.nvim_create_augroup("user_lsp_safe_actions", { clear = true }),
desc = "Apply all safe LSP code actions (source.*, quickfix) before save",
callback = function(args)
if vim.bo[args.buf].buftype ~= "" then return end
if vim.g.disable_autoformat or vim.b[args.buf].disable_autoformat then return end
apply_safe_actions(args.buf)
end,
})
end,
opts = function(_, opts)
-- Skip format-on-save for JavaScript buffers (.js/.mjs/.cjs); manual
-- :Format / <Leader>lf still works. Wraps the astrocommunity pack's
-- format_on_save so its autoformat toggle handling is preserved.
local pack_format_on_save = opts.format_on_save
opts.format_on_save = function(bufnr)
if vim.bo[bufnr].filetype == "javascript" then return end
if type(pack_format_on_save) == "function" then return pack_format_on_save(bufnr) end
return pack_format_on_save
end
end,
}
-76
View File
@@ -1,76 +0,0 @@
--- flash.nvim: labeled jumps and enhanced motions
---@type LazySpec
return {
"folke/flash.nvim",
event = "VeryLazy",
---@type Flash.Config
opts = {
modes = {
char = {
-- normal-mode `f` is the Vimium-style word jump and `F` is the
-- search-style jump below, so flash's char mode must not rebind
-- them; t/T/;/, stay enhanced
keys = { "t", "T", ";", "," },
-- show jump labels on the char-motion matches (t/T)
jump_labels = true,
},
-- label-enhanced regular `/` and `?` search; <c-s> in cmdline
-- toggles it off for a plain search
search = { enabled = true },
},
},
keys = {
{
"f",
mode = "n",
function()
-- Vimium-c style: label every visible word start immediately,
-- press a label to jump (no search pattern typed)
require("flash").jump {
search = { mode = "search", max_length = 0 },
label = { after = false, before = { 0, 0 } },
pattern = [[\<]],
}
end,
desc = "Jump to word (Vimium-style)",
},
{
"F",
mode = "n",
function()
-- Search-style flash: type a regex pattern and labels appear on
-- every match. While selecting, `<C-n>`/`<C-b>` cycle to the
-- next/previous result, <CR> confirms the selection, a label jumps
-- directly, <Esc> cancels back to the origin. The pattern is pushed
-- to search history and the `/` register, so `n`/`N` keep working
-- after the jump.
local current ---@type Flash.Match?
require("flash").jump {
search = { mode = "search" },
jump = { history = true, register = true, nohlsearch = true },
actions = {
["<c-n>"] = function(state)
-- first press selects the current target, then cycle forward
current = current and state:find { match = current, forward = true, wrap = true } or state.target
if current then state:jump(current) end
end,
["<c-b>"] = function(state)
current = state:find { match = current or state.target, forward = false, wrap = true }
if current then state:jump(current) end
end,
["<cr>"] = function(state)
state:jump(current) -- nil falls back to state.target
return false -- end the loop
end,
},
}
end,
desc = "Flash search",
},
{ "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash" },
{ "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" },
{ "r", mode = "o", function() require("flash").remote() end, desc = "Remote Flash" },
{ "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "Treesitter Search" },
{ "<c-s>", mode = { "c" }, function() require("flash").toggle() end, desc = "Toggle Flash Search" },
},
}
-42
View File
@@ -1,42 +0,0 @@
local function t_nav(fn)
return function()
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes([[<C-\><C-n>]], true, false, true), "n", false)
vim.schedule(fn)
end
end
return {
"MunsMan/kitty-navigator.nvim",
-- Keep the kitty-side kittens in sync with the plugin. ~/.config/kitty is symlinked into the
-- dotfiles repo, so this copies navigate_kitty.py + pass_keys.py straight into the tracked config.
-- navigate_kitty.py is required for the nvim->kitty edge handoff (init.lua calls `kitty @ kitten
-- navigate_kitty.py <dir>`); pass_keys.py must match the `neighboring_window` map syntax in kitty.conf.
build = {
"cp navigate_kitty.py ~/.config/kitty",
"cp pass_keys.py ~/.config/kitty",
},
-- Disable smart-splits navigation keys (AstroNvim injects these when KITTY_LISTEN_ON is set);
-- kitty-navigator owns <C-h/j/k/l>. Resize bindings (<C-Up/Down/Left/Right>) are left intact.
specs = {
{
"AstroNvim/astrocore",
opts = function(_, opts)
local m = opts.mappings.n
m["<C-H>"] = false
m["<C-J>"] = false
m["<C-K>"] = false
m["<C-L>"] = false
end,
},
},
keys = {
{"<C-h>", function()require("kitty-navigator").navigateLeft()end, desc = "Move left a Split", mode = {"n"}},
{"<C-j>", function()require("kitty-navigator").navigateDown()end, desc = "Move down a Split", mode = {"n"}},
{"<C-k>", function()require("kitty-navigator").navigateUp()end, desc = "Move up a Split", mode = {"n"}},
{"<C-l>", function()require("kitty-navigator").navigateRight()end, desc = "Move right a Split", mode = {"n"}},
{"<C-h>", t_nav(function()require("kitty-navigator").navigateLeft()end), desc = "Move left a Split", mode = {"t"}},
{"<C-j>", t_nav(function()require("kitty-navigator").navigateDown()end), desc = "Move down a Split", mode = {"t"}},
{"<C-k>", t_nav(function()require("kitty-navigator").navigateUp()end), desc = "Move up a Split", mode = {"t"}},
{"<C-l>", t_nav(function()require("kitty-navigator").navigateRight()end), desc = "Move right a Split", mode = {"t"}},
},
}
-28
View File
@@ -1,28 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- Customize Mason
---@type LazySpec
return {
-- use mason-tool-installer for automatically installing Mason packages
{
"WhoIsSethDaniel/mason-tool-installer.nvim",
-- overrides `require("mason-tool-installer").setup(...)`
opts = {
-- Make sure to use the names found in `:Mason`
ensure_installed = {
-- install language servers
"lua-language-server",
-- install formatters
"stylua",
-- install debuggers
"debugpy",
-- install any other package
"tree-sitter-cli",
},
},
},
}
-24
View File
@@ -1,24 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- Customize None-ls sources
---@type LazySpec
return {
"nvimtools/none-ls.nvim",
opts = function(_, opts)
-- opts variable is the default configuration table for the setup function call
-- local null_ls = require "null-ls"
-- Check supported formatters and linters
-- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/formatting
-- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
-- Only insert new sources, do not replace the existing ones
-- (If you wish to replace, use `opts.sources = {}` instead of the `list_insert_unique` function)
opts.sources = require("astrocore").list_insert_unique(opts.sources, {
-- Set a formatter
-- null_ls.builtins.formatting.stylua,
-- null_ls.builtins.formatting.prettier,
})
end,
}
@@ -1,24 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- Customize Treesitter
-- --------------------
-- Treesitter customizations are handled with AstroCore
-- as nvim-treesitter simply provides a download utility for parsers
---@type LazySpec
return {
"AstroNvim/astrocore",
---@type AstroCoreOpts
opts = {
treesitter = {
highlight = true, -- enable/disable treesitter based highlighting
indent = true, -- enable/disable treesitter based indentation
auto_install = true, -- enable/disable automatic installation of detected languages
ensure_installed = {
"lua",
"vim",
-- add more arguments for adding more treesitter parsers
},
},
},
}
-98
View File
@@ -1,98 +0,0 @@
--- User plugins: cursor animation and snacks.nvim (picker + dashboard) customization
-- Confirm action for file-opening pickers: <CR> opens the selection as a
-- tab via `tabdrop` (:tab drop semantics — focus the buffer if it's already
-- visible in any tab, don't spawn a tab from an empty buffer, else open a
-- new tab). Explicit edit-cmd keybinds (<S-CR>/<c-v> vsplit, <c-s> split)
-- carry `action.cmd` and are passed through untouched.
local function tab_confirm(picker, item, action)
local actions = require "snacks.picker.actions"
if action.cmd then return actions.jump(picker, item, action) end
return actions.jump(picker, item, vim.tbl_extend("force", {}, action, { cmd = "tabdrop" }))
end
-- Tab-on-enter + vsplit-on-shift-enter for the file-opening pickers only;
-- location pickers (lsp_*, lines, diagnostics, grep) and sources with their
-- own confirm (git_branches, projects) keep their defaults.
local picker_sources = {}
for _, source in ipairs { "files", "git_files", "smart", "recent", "buffers" } do
picker_sources[source] = {
confirm = tab_confirm,
win = {
input = { keys = { ["<S-CR>"] = { "edit_vsplit", mode = { "n", "i" } } } },
list = { keys = { ["<S-CR>"] = "edit_vsplit" } },
},
}
end
-- Smart picker: anchor to the current git repository. `config` runs when
-- the picker opens: cwd becomes the repo root (so the `files` finder scans
-- the whole repo, not just a rooter-chdir'd subdir) and `filter.cwd` drops
-- buffers/recent entries from other repos. Outside a repo, plain cwd
-- behavior is kept.
picker_sources.smart.config = function(opts)
local root = require("snacks").git.get_root()
if root then
opts.cwd = root
opts.filter = vim.tbl_extend("force", opts.filter or {}, { cwd = true })
end
return opts
end
---@type LazySpec
return {
{ "sphamba/smear-cursor.nvim", opts = {} },
-- terminals are handled by kitty now
{ "akinsho/toggleterm.nvim", enabled = false },
{
"folke/snacks.nvim",
opts = {
picker = {
jump = { reuse_win = true },
sources = picker_sources,
},
dashboard = {
enabled = true,
preset = {
-- "prdlk.nvim" in ansi_regular block style
header = table.concat({
"██████ ██████ ██████ ██ ██ ██ ███ ██ ██ ██ ██ ███ ███",
"██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ ████ ████",
"██████ ██████ ██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ██ ████ ██",
"██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██",
"██ ██ ██ ██████ ███████ ██ ██ ██ ██ ████ ████ ██ ██ ██",
}, "\n"),
},
sections = {
{ section = "header" },
{ section = "keys", gap = 1, padding = 1 },
{
icon = " ",
desc = "Browse Repo",
padding = 1,
key = "b",
action = function() Snacks.gitbrowse() end,
},
{
icon = " ",
desc = "Projects (ghq)",
padding = 1,
key = "p",
action = function()
local repos = vim.fn.systemlist "ghq list -p"
vim.ui.select(repos, { prompt = "Select repository" }, function(dir)
if not dir then return end
vim.cmd.cd(dir)
Snacks.picker.files()
end)
end,
},
{ section = "startup" },
},
},
},
},
}
-91
View File
@@ -1,91 +0,0 @@
--- Yazi as the default file manager (full neo-tree replacement)
---@type LazySpec
return {
{
"mikavilpas/yazi.nvim",
version = "*", -- latest stable release
event = "VeryLazy",
dependencies = {
{ "nvim-lua/plenary.nvim", lazy = true },
},
keys = {
{
"<leader>-",
mode = { "n", "v" },
"<cmd>Yazi<cr>",
desc = "Open yazi at the current file",
},
{
"<leader>cw",
"<cmd>Yazi cwd<cr>",
desc = "Open yazi in nvim's working directory",
},
{
-- replaces AstroNvim's <Leader>o "Toggle Explorer Focus" (neo-tree)
"<leader>o",
"<cmd>Yazi<cr>",
desc = "Open Explorer (yazi at current file)",
},
{
"<C-e>",
mode = { "n", "v", "t" },
function()
-- true toggle: if a yazi window is already open, quit it instead
-- of nesting a second instance (yazi.nvim's toggle() always spawns)
for _, win in ipairs(vim.api.nvim_list_wins()) do
local buf = vim.api.nvim_win_get_buf(win)
if vim.bo[buf].filetype == "yazi" then
-- send `q` to the yazi process so it exits gracefully and
-- saves its state for the next resume
vim.api.nvim_chan_send(vim.bo[buf].channel, "q")
return
end
end
vim.cmd "Yazi toggle"
end,
desc = "Toggle yazi (resume last session)",
},
},
---@type YaziConfig | {}
opts = {
-- yazi replaces netrw/neo-tree when opening directories (nvim .)
open_for_directories = true,
-- keep a single yazi tab: `true` would pass every visible split as an
-- extra path arg, and each one becomes a yazi tab that then persists
-- across <C-e> toggles (resume), piling up tabs over time
open_multiple_tabs = false,
-- occupy the whole screen instead of a floating popup
floating_window_scaling_factor = 1,
yazi_floating_window_border = "none",
keymaps = {
show_help = "<f1>",
-- Open the hovered/selected file(s) as nvim splits. These are
-- buffer-local terminal-mode keymaps on the yazi buffer, so nvim
-- intercepts the chord before the yazi process ever sees it --
-- nothing is needed in ~/.config/yazi/keymap.toml. Chords match
-- the telescope/snacks picker convention (<c-v>/<c-x>/<c-t>).
open_file_in_vertical_split = "<c-v>",
open_file_in_horizontal_split = "<c-x>",
-- NOTE: the default <c-t> (open in tab) shadows the yazi-side
-- <C-t> "plugin tv" bind from keymap.toml while inside nvim;
-- set open_file_in_tab = false to let <C-t> reach yazi/tv instead
open_file_in_tab = "<c-t>",
-- ~/.config/yazi/keymap.toml binds <C-q> to quit inside yazi;
-- don't hijack it for the quickfix list (multi-select still goes
-- to the quickfix list via the default yazi_opened_multiple_files)
send_to_quickfix_list = false,
},
integrations = {
-- <c-y> copy-relative-path action inside snacks pickers too
picker_add_copy_relative_path_action = "snacks.picker",
},
},
init = function()
-- netrw is fully replaced by yazi (open_for_directories)
vim.g.loaded_netrwPlugin = 1
end,
},
-- neo-tree is fully replaced by yazi.nvim
{ "nvim-neo-tree/neo-tree.nvim", enabled = false },
}
-2
View File
@@ -1,2 +0,0 @@
-- This will run last in the setup process.
-- Pure lua; anything that doesn't fit the normal config locations goes here.
-6
View File
@@ -1,6 +0,0 @@
---
base: lua51
globals:
vim:
any: true
-24
View File
@@ -1,24 +0,0 @@
#!/bin/bash
# Generated Bash ANSI Art
ansi_art_lines=(
" ████ ██████ ████ ████ "
" ████░░ ████░████░░ ░░░░ "
"██████████ ████████ ██████████░░ ████░████░░████ ██████████ ████ ████ ██████ ██████████████ "
"████░░░░████ ████░░░░░░░████░░░░████░░ ████░████████░░░░ ████░░░░████ ████░░ ████░░ ████░████░░████░░████ "
"████░░ ████░████░░ ████░░ ████░░ ████░██████░░░░ ████░░ ████░████░░ ████░░ ████░████░░████░░████░░"
"████░░ ████░████░░ ████░░ ████░░ ████░████████ ████ ████░░ ████░░ ████████░░░░ ████░████░░████░░████░░"
"██████████░░░████░░ ██████████░░ ████░████░░████ ████░████░░ ████░░ ████░░░░ ████░████░░████░░████░░"
"████░░░░░░░░ ░░░░ ░░░░░░░░░░ ░░░░ ░░░░ ░░░░ ░░░░ ░░░░ ░░░░ ░░░░ ░░░░ ░░░░ ░░░░ ░░░░"
"████░░ "
" ░░░░ "
)
display_ansi_art() {
for line in "${ansi_art_lines[@]}"; do
echo -e "$line"
done
}
# Call the function
display_ansi_art
-4
View File
@@ -1,4 +0,0 @@
/.omc
/.omc/state
/.understand-anything/tmp
/.understand-anything
-8
View File
@@ -1,8 +0,0 @@
std = "neovim"
[rules]
global_usage = "allow"
if_same_then_else = "allow"
incorrect_standard_library_use = "allow"
mixed_table = "allow"
multiple_statements = "allow"
-77
View File
@@ -1,77 +0,0 @@
// Zed keymap mirroring the AstroNvim config in this repo.
// Only binds with a real Zed equivalent are mapped; nvim-only features
// (lazygit, Octo, ClaudeCode, snacks scoped pickers, Overseer-specific
// pickers, in-line search) are skipped — see notes at the bottom.
//
// Docs: https://zed.dev/docs/key-bindings
[
{
"context": "Workspace",
"bindings": {
"ctrl-e": "workspace::ToggleLeftDock", // <C-e> toggle explorer
"ctrl-s": "workspace::Save", // <C-s> save
"ctrl-m": "task::Spawn" // <C-m> run task (Overseer)
}
},
{
"context": "Editor && vim_mode == insert",
"bindings": {
"ctrl-s": "workspace::Save" // i_<C-s>
}
},
{
"context": "VimControl && vim_mode == normal",
"bindings": {
// --- existing binds ---
"space space": "file_finder::Toggle",
"space w": "pane::CloseActiveItem",
"space o": "outline::Toggle",
"space g b": "git::Branch",
"space t": "terminal_panel::ToggleFocus",
"space g g": "git_panel::ToggleFocus",
"space /": "pane::DeploySearch",
"escape escape": "workspace::Save",
"shift-u": "vim::Redo",
"space h": "editor::ToggleInlayHints",
"space e": "pane::RevealInProjectPanel",
"ctrl-a": "editor::ToggleCodeActions",
"] f": "vim::NextMethodStart",
"[ f": "vim::PreviousMethodStart",
// --- diagnostics / buffers / folds ---
"shift-j": "editor::GoToDiagnostic", // J next diagnostic
"shift-k": "editor::GoToPreviousDiagnostic", // K prev diagnostic
"shift-l": "pane::ActivateNextItem", // L next buffer
"shift-h": "pane::ActivatePreviousItem", // H prev buffer
"shift-f": "editor::ToggleFold", // F = za
"v v": "editor::SelectAll", // vv select whole buffer
// --- save / close ---
"ctrl-s": "workspace::Save",
"ctrl-w": "pane::CloseActiveItem", // <C-w> save+close -> close (Zed autosaves)
// --- find (<C-f> prefix) ---
"ctrl-f f": "file_finder::Toggle",
"ctrl-f w": "pane::DeploySearch",
"ctrl-f d": "diagnostics::Deploy",
"ctrl-f o": "projects::OpenRecent",
"ctrl-f p": "projects::OpenRecent",
// --- buffers (<C-b> prefix) ---
"ctrl-b f": "tab_switcher::Toggle",
// --- actions / symbols (<C-a> prefix) ---
"ctrl-a a": "editor::ToggleCodeActions",
"ctrl-a d": "diagnostics::Deploy",
"ctrl-a s": "outline::Toggle",
"ctrl-a shift-s": "project_symbols::Toggle",
// --- git (<C-g> prefix) ---
"ctrl-g g": "git_panel::ToggleFocus",
"ctrl-g b": "git::Branch",
// --- terminal ---
"ctrl-j ctrl-j": "terminal_panel::ToggleFocus"
}
}
]
+7 -2
View File
@@ -1,6 +1,6 @@
[[plugin.deps]]
use = "yazi-rs/plugins:smart-filter"
rev = "5c7973c"
rev = "0be29a9"
hash = "d6f7351ea25a43c9b5f4315fa1e23935"
[[plugin.deps]]
@@ -10,7 +10,7 @@ hash = "8c1b36103121a66b37308afaf7124575"
[[plugin.deps]]
use = "yazi-rs/plugins:smart-enter"
rev = "5c7973c"
rev = "0be29a9"
hash = "187cc58ba7ac3befd49c342129e6f1b6"
[[plugin.deps]]
@@ -43,5 +43,10 @@ use = "coder0x6675/osc7"
rev = "ae73046"
hash = "4f73595837992eeefcb525c0a95b92ba"
[[plugin.deps]]
use = "WhoSowSee/mdv-previewer"
rev = "d487f90"
hash = "2b9699810478c6de60f609092fc9bfc9"
[flavor]
deps = []