Skip to content

Latest commit

 

History

History
54 lines (49 loc) · 4.43 KB

File metadata and controls

54 lines (49 loc) · 4.43 KB

rift — Terminal session daemon

Now

Next

Later

Scrapped

Done

  • Kitty keyboard flags survive detach — query outer-terminal flags at attach (CSI ? u, 80ms timeout) and re-set them on detach so an inner shell's CSI = flags u doesn't leak N;5u Ctrl-key sequences into the user's outer shell. Pop count on stack drain bumped from 1 to 99 #bug
  • rift last self-heals — if the recorded session is gone, clear .last and fall back to the picker instead of erroring #improvement
  • list -v / --verbose — adds uptime (derived from created_at) and log file path to each session line #improvement
  • Lifecycle hooks — RIFT_ON_ATTACH / RIFT_ON_DETACH (client-side) and RIFT_ON_EXIT (daemon-side) fire-and-forget shell snippets with $RIFT_SESSION set #feature
  • Argless rift opens an interactive picker — uses $RIFT_PICKER (e.g., fzf) if set, otherwise a built-in numbered prompt on /dev/tty #feature
  • last / la — re-attach to the most recently attached session (state file <socket_dir>/.last) #feature
  • logs / lg — shortcut for tail -f on the session's log file, with extra args passed through to tail #feature
  • Rename sessions — rift rename [<old_name>] <new_name> (alias rn) dynamically renames active sessions, including Unix sockets, logs, and symlinks #feature
  • Migrate daemon and client to async tokio runtime (current_thread + LocalSet, per-client tasks via mpsc, tokio-util codec for the wire protocol) #refactor
  • Use deterministic socket dir ($HOME/.local/state/rift) so macOS GUI- vs CLI-launched shells share the same sessions #bug
  • Fix rift tail escape sequence rendering and Ctrl+C interrupt bug #bug
  • Fix session listing bug where .ssh-auth-sock symlinks were erroneously listed as unreachable sessions #bug
  • Optimize session startup performance (reduced from 2s to ~15ms) by removing busy-waiting in PTY DA query draining #improvement
  • SSH agent forwarding socket symlink propagation for multiple SSH sessions #feature
  • Cargo project initialized with deps: nix, vt100, log, env_logger, libc #chore
  • src/ipc.rs — IPC protocol (Tag enum, Header, send/recv, SocketBuffer, probe_session) #feature
  • src/socket.rs — Unix socket creation/connection, session name validation, path management #feature
  • src/logger.rs — File-based logging with 5MB rotation #feature
  • src/util.rs — Shell quoting, DA responses, task exit markers, terminal serialization (vt100), session listing #feature
  • src/main.rs — Core runtime: CLI, PTY spawning, daemon/client event loops, attach flow #feature
  • list — enumerate active sessions with status info #feature
  • kill — terminate a session by name #feature
  • detach — disconnect all clients from a session #feature
  • history — retrieve session output (plain, --vt, --html) #feature
  • Detached spawn — rift new <session> or rift attach -d <session> #feature
  • wait — poll sessions for task completion, prefix matching, aggregate exit codes #feature
  • completions — shell completion scripts for bash, zsh, fish via rift completions <shell> #feature
  • send — inject keystrokes into a session's PTY input (fire-and-forget, stdin support) #feature
  • tail — follow session output in real-time #feature
  • run -d — detached/background run, track with wait #feature
  • kill --force / -f — SIGKILL instead of SIGTERM #feature
  • Short aliases for all subcommands (a, r, s, d, l/ls, k, hi, w, t, c, v, h) #improvement
  • detach without args uses RIFT_SESSION from env #improvement
  • Fix: client now exits on daemon-initiated detach (DetachAll) #bug
  • Fix: daemon reads pending data before treating POLLHUP as disconnect #bug
  • kill with multiple names and prefix matching (rift kill dev*) #improvement
  • tail with multiple names and prefix matching (rift tail dev*) #improvement
  • RIFT_SESSION_PREFIX applied to kill and tail #improvement
  • print — inject text into session display without PTY input #feature
  • write — pipe stdin to a file via session (base64 chunked) #feature
  • attach <session> <command> — spawn specific command instead of login shell #feature
  • run --fish — fish-specific command completion detection #improvement
  • RIFT_DIR_MODE / RIFT_LOG_MODE — permission modes for socket dirs and log files #feature