Skip to content

Instantly share code, notes, and snippets.

@possibilities
Created April 8, 2026 23:57
Show Gist options
  • Select an option

  • Save possibilities/24a77ac29646da54f258b627e53ed950 to your computer and use it in GitHub Desktop.

Select an option

Save possibilities/24a77ac29646da54f258b627e53ed950 to your computer and use it in GitHub Desktop.
Prise fork dependency audit — which branches are consumed vs cruft

Prise Fork Dependency Audit

Date: 2025-07-10 Fork: possibilities/prise (upstream: rockorager/prise) Integration branch: arthack-prod Consumers: ~/code/dotfiles, ~/code/arthack


What Upstream Already Provides

These are NOT fork-specific — they exist in rockorager/prise:

  • Lua widget tree (Stack, Box, Text, TextInput, Positioned, Padding, Column)
  • prise.tiling(), ui.setup(), custom update()/view() overrides
  • Session management (list_sessions, switch_session, rename_session, get_session_name)
  • prise.request_frame(), prise.create_text_input(), prise.spawn()
  • RPC: spawn_pty (basic), list_ptys, close_pty, write_pty
  • Tab bar custom render, keybind system with leader keys
  • All basic tiling actions (split_*, focus_*, resize_*, toggle_zoom, etc.)

Branches With Explicit Dependents

These branches expose APIs that dotfiles or arthack directly call.

Branch Fork API Consumer Usage
feat/rename-tab rename_tab RPC method arthack prisectl prisectl rename-tab, jobctl auto-rename hook
feat/tab-info-api ui.get_active_tab_info(), ui.get_focused_pane_index() dotfiles init.lua Close-tab/pane confirmation dialogs
feat/input-forwarding ui.send_key_to_focused(), ui.send_mouse_to_focused() dotfiles init.lua Ctrl-U/D, leader-g/G, scroll forwarding
feat/spawn-pty spawn_pty + session, tab, title, focus, cmd params arthack prisectl run-claude session/tab routing
feat/expose-theme-api ui.get_theme() dotfiles init.lua Theme for custom tab bar and dialogs
feat/expose-execute-action ui.execute_action(name) dotfiles init.lua Confirmation dialogs trigger close_tab/close_pane
feature/wrap-focus-movement focus_{dir}_wrap actions dotfiles init.lua Wrapping focus movement keybinds
feat/tab-bar-state Tab is_zoomed, pane_count metadata dotfiles init.lua Custom tab bar icons
feat/mmap-screen-dump mmap files at /tmp/prise-screen-*, /tmp/prise-pty-* arthack prisectl dump-screen, dump-pty commands

Bug Fixes With Runtime Dependencies

No new API surface, but fix real issues hit by the consumers.

Branch What it fixes Why needed
fix/tab-bar-click-regions Tab bar click targeting Dotfiles uses custom tab bar
fix/zoom-state Zoom state tracking Dotfiles renders zoom icon in tab bar
fix/deserialized-pane-id Pane ID on session restore Prisectl uses PTY IDs
fix/stale-session-attach Session attach freezing client Session switching is core workflow
fix/headless-rpc-crash Crash on headless RPC disconnect Prisectl triggers headless PTYs

Potential Cruft — No Direct Consumer Found

Unconsumed APIs

Branch What it adds Notes
feat/detached-session prise.place_pty_in_session(), prise.create_session() Exposed in Lua but never called by dotfiles or arthack. Prisectl's spawn_pty uses the RPC-level session param instead.
feat/nested-session-switch Nested session switch via RPC notification Zero references in either consumer project.

Behavioral Improvements Without API Surface

Branch What it does Notes
feat/keep-attached Defers session switch to next tick, fixes floating state No references in dotfiles or arthack config. May be implicitly relied on but no explicit dependency.
feat/session-switch-no-exec Session switch without exec jank Improves switch_session behavior but no new API consumed.
feat/multi-client-resize-policy Stops multi-client resize thrashing Behavioral fix for multiple attached clients. No API.
feat/resize-boundary-overlay Dims excess area when surface < window Visual polish only. No config or API reference.

Internal / Dev Tooling

Branch What it does Notes
refactor/test-helpers Extracts shared test mock helpers Test infra only. Other fork branches depend on it for their tests, so removing it would break the branch stack.
feat/vaxis-text-input Swaps TextInput to vaxis gap-buffer engine Improves create_text_input() internals. Dotfiles uses TextInput (upstream API) but this changes the engine underneath. Implicitly consumed.
fix/zz-lua-typecheck-tiling LuaLS @cast annotations, type narrowing Dev tooling. No runtime effect.

Branch Hygiene Issues

fix/listptys-oom-leak — branch deleted, commits misplaced

Listed in config.yaml but the branch has been deleted from the remote. The two commits (683de6a clear cwd_dirty after successful dupe, b47b818 add errdefer for cwd dupe in listPtys) are currently stacked on top of fix/headless-rpc-crash, which makes that branch contain two unrelated fixes:

683de6a clear cwd_dirty after successful dupe        ← listptys fix
b47b818 add errdefer for cwd dupe in listPtys        ← listptys fix
a50aff8 prevent server crash on headless RPC client disconnect  ← headless rpc fix

Action: Split the listptys commits back into a standalone fix/listptys-oom-leak branch based on upstream/main, push it, and reset fix/headless-rpc-crash to just a50aff8. Both branches stay in config.yaml as they are today.


Summary

Category Count Branches
Consumed by dependents 9 rename-tab, tab-info-api, input-forwarding, spawn-pty, expose-theme-api, expose-execute-action, wrap-focus-movement, tab-bar-state, mmap-screen-dump
Bug fixes (runtime) 5 tab-bar-click-regions, zoom-state, deserialized-pane-id, stale-session-attach, headless-rpc-crash
Unconsumed APIs 2 detached-session, nested-session-switch
Behavioral (no API) 4 keep-attached, session-switch-no-exec, multi-client-resize-policy, resize-boundary-overlay
Internal/dev tooling 3 refactor/test-helpers, vaxis-text-input, fix/zz-lua-typecheck-tiling
Needs branch split 1 fix/listptys-oom-leak (commits on wrong branch)
Total in config 24 14 have clear justification, 9 are questionable, 1 is broken

Candidates for Removal (strongest to weakest)

  1. fix/listptys-oom-leak — branch deleted, commits misplaced on fix/headless-rpc-crash (needs split)
  2. feat/detached-session — APIs exposed but never called
  3. feat/nested-session-switch — no consumer at all
  4. fix/zz-lua-typecheck-tiling — dev tooling only, no runtime effect
  5. feat/resize-boundary-overlay — visual polish, no config reference
  6. feat/multi-client-resize-policy — behavioral, no explicit dependency
  7. feat/keep-attached — behavioral, no explicit dependency
  8. feat/session-switch-no-exec — behavioral, no explicit dependency
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment