Conversation
Sidebar groups sessions into Running and Finished sections with per-item actions: Kill for running sessions, Remove for finished ones, plus a "Clear finished" bulk action. Killing keeps the session and its buffer for log access; removing discards both. Session removal stays a human-only action in the web UI, so the PTY tools keep the existing cleanup flag but document it as deprecated. A new session_removed WebSocket event is broadcast on cleanup/clear so every open client drops the row immediately instead of waiting for the 10s polling sync. Also fixes a build trap: the client styles lived in an inline <style> block in index.html while src/web/client/index.css was dead code that nothing imported, so CSS changes silently had no effect. The stylesheet is now imported from main.tsx and the inline block is gone.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Finished (exited/killed) sessions could never be removed from the web UI. The only action was Kill Session, which intentionally retains the session and its buffer (
cleanup = false), so the session list grew forever. Other open tabs only noticed a removal via the 10s polling sync.Changes
Killaction, finished rows get aRemoveaction, and the finished section gets aClear finishedbulk action. Finished rows are dimmed and show their exit status.Download(exports the raw buffer as a.log) plus eitherKill Session(running) orRemove(finished).cleanupflag but document it as deprecated, so agents can kill a session but do not discard finished ones.session_removedWebSocket message is broadcast on cleanup/clear, so every open client updates immediately instead of waiting for the 10s poll.Also fixes a build trap
The client styles lived in an inline
<style>block inindex.html, whilesrc/web/client/index.csswas dead code that nothing imported. CSS edits therefore silently had no effect (the built CSS asset was onlyxterm.css). Styles now live inindex.css, imported frommain.tsx, and the inline block is gone.Verification
bun run format,bun run lint,bun run typecheck— cleanbun test— new tests cover thesession_removedbroadcast, the cleanup endpoint, and retain-on-kill. The remaining failures are pre-existing onmain(npm-pack asset tests + two timing-sensitive tests).Screenshot