Ignore IntelliJ project files#37
Merged
Merged
Conversation
Amp-Thread-ID: https://ampcode.com/threads/T-019d7b9c-3ae3-70fe-98ce-0867096a43b3 Co-authored-by: Amp <amp@ampcode.com>
donbeave
added a commit
that referenced
this pull request
Apr 20, 2026
Ignore IntelliJ project files
donbeave
added a commit
that referenced
this pull request
Apr 21, 2026
Ignore IntelliJ project files
donbeave
added a commit
that referenced
this pull request
Apr 21, 2026
Ignore IntelliJ project files
donbeave
added a commit
that referenced
this pull request
Apr 21, 2026
Ignore IntelliJ project files
donbeave
added a commit
that referenced
this pull request
Apr 21, 2026
Ignore IntelliJ project files
donbeave
added a commit
that referenced
this pull request
May 7, 2026
Ignore IntelliJ project files Signed-off-by: Alexey Zhokhov <alexey@zhokhov.com> Co-authored-by: Codex <codex@openai.com>
donbeave
added a commit
that referenced
this pull request
May 7, 2026
Ignore IntelliJ project files Signed-off-by: Alexey Zhokhov <alexey@zhokhov.com> Co-authored-by: Codex <codex@openai.com>
donbeave
added a commit
that referenced
this pull request
May 7, 2026
Amp-Thread-ID: https://ampcode.com/threads/T-019d7b9c-3ae3-70fe-98ce-0867096a43b3 Signed-off-by: Alexey Zhokhov <alexey@zhokhov.com> Co-authored-by: Amp <amp@ampcode.com>
donbeave
added a commit
that referenced
this pull request
May 7, 2026
Ignore IntelliJ project files Signed-off-by: Alexey Zhokhov <alexey@zhokhov.com> Co-authored-by: Codex <codex@openai.com>
donbeave
added a commit
that referenced
this pull request
May 22, 2026
…escing Four small daemon/dialog correctness fixes. `dialog::box_rect` (#9) - Clamp dialog height to the area below the status bar so a very small terminal does not paint past the bottom edge (which would scroll the host terminal and destroy the operator's pane content) and does not overlap row 0 (the brand pill / tab strip). Trade-off is that the dialog renders unusable when the terminal is pathologically small, but the host terminal stays in a recoverable state regardless. - `render_bottom_hint`: tighten the bail to `total > term_cols` so an exact-fit hint renders instead of being dropped at `==`. Use saturating subtraction for the start_col centring math. `Multiplexer::spawn_session` (#34, cap side) - Cap tabs at `MAX_TABS=32` and sessions at `MAX_SESSIONS=64`. A runaway client (or an operator mis-click loop) cannot allocate unbounded PTYs — each session retains scrollback, a master+slave PTY pair, and a child process, so unbounded growth is a real OOM risk. The CLI surface returns an `anyhow::bail!` which `dispatch_spawn_intent` already clog's. `SessionEvent::Output` (#36) - Move `drain_mode_transitions` inside the `is_focused` gate. The previous code drained and discarded the bytes on every backgrounded pane — wasted work, plus a future change that reads `bracketed_paste_active` after drain on an unfocused pane would silently see the wrong state. Also restructured to collect the to-emit bytes into a local Vec so the `&mut Session` borrow ends before `mux.send_output` (which needs `&self`). Render ticker (#37) - Drop the `mux.dialog.is_none()` gate from the render ticker condition. `compose_frame` already includes the dialog overlay when one is open, so the open-dialog path now composes at the normal ~30 fps instead of accumulating `dirty` until dismiss — without this the dismiss frame was a sudden jump of N frames' worth of accumulated PTY output that the operator had no way to see coming. Co-authored-by: Claude <noreply@anthropic.com> Signed-off-by: Alexey Zhokhov <alexey@zhokhov.com>
donbeave
added a commit
that referenced
this pull request
May 23, 2026
…escing Four small daemon/dialog correctness fixes. `dialog::box_rect` (#9) - Clamp dialog height to the area below the status bar so a very small terminal does not paint past the bottom edge (which would scroll the host terminal and destroy the operator's pane content) and does not overlap row 0 (the brand pill / tab strip). Trade-off is that the dialog renders unusable when the terminal is pathologically small, but the host terminal stays in a recoverable state regardless. - `render_bottom_hint`: tighten the bail to `total > term_cols` so an exact-fit hint renders instead of being dropped at `==`. Use saturating subtraction for the start_col centring math. `Multiplexer::spawn_session` (#34, cap side) - Cap tabs at `MAX_TABS=32` and sessions at `MAX_SESSIONS=64`. A runaway client (or an operator mis-click loop) cannot allocate unbounded PTYs — each session retains scrollback, a master+slave PTY pair, and a child process, so unbounded growth is a real OOM risk. The CLI surface returns an `anyhow::bail!` which `dispatch_spawn_intent` already clog's. `SessionEvent::Output` (#36) - Move `drain_mode_transitions` inside the `is_focused` gate. The previous code drained and discarded the bytes on every backgrounded pane — wasted work, plus a future change that reads `bracketed_paste_active` after drain on an unfocused pane would silently see the wrong state. Also restructured to collect the to-emit bytes into a local Vec so the `&mut Session` borrow ends before `mux.send_output` (which needs `&self`). Render ticker (#37) - Drop the `mux.dialog.is_none()` gate from the render ticker condition. `compose_frame` already includes the dialog overlay when one is open, so the open-dialog path now composes at the normal ~30 fps instead of accumulating `dirty` until dismiss — without this the dismiss frame was a sudden jump of N frames' worth of accumulated PTY output that the operator had no way to see coming. Co-authored-by: Claude <noreply@anthropic.com> Signed-off-by: Alexey Zhokhov <alexey@zhokhov.com>
donbeave
added a commit
that referenced
this pull request
May 23, 2026
…escing Four small daemon/dialog correctness fixes. `dialog::box_rect` (#9) - Clamp dialog height to the area below the status bar so a very small terminal does not paint past the bottom edge (which would scroll the host terminal and destroy the operator's pane content) and does not overlap row 0 (the brand pill / tab strip). Trade-off is that the dialog renders unusable when the terminal is pathologically small, but the host terminal stays in a recoverable state regardless. - `render_bottom_hint`: tighten the bail to `total > term_cols` so an exact-fit hint renders instead of being dropped at `==`. Use saturating subtraction for the start_col centring math. `Multiplexer::spawn_session` (#34, cap side) - Cap tabs at `MAX_TABS=32` and sessions at `MAX_SESSIONS=64`. A runaway client (or an operator mis-click loop) cannot allocate unbounded PTYs — each session retains scrollback, a master+slave PTY pair, and a child process, so unbounded growth is a real OOM risk. The CLI surface returns an `anyhow::bail!` which `dispatch_spawn_intent` already clog's. `SessionEvent::Output` (#36) - Move `drain_mode_transitions` inside the `is_focused` gate. The previous code drained and discarded the bytes on every backgrounded pane — wasted work, plus a future change that reads `bracketed_paste_active` after drain on an unfocused pane would silently see the wrong state. Also restructured to collect the to-emit bytes into a local Vec so the `&mut Session` borrow ends before `mux.send_output` (which needs `&self`). Render ticker (#37) - Drop the `mux.dialog.is_none()` gate from the render ticker condition. `compose_frame` already includes the dialog overlay when one is open, so the open-dialog path now composes at the normal ~30 fps instead of accumulating `dirty` until dismiss — without this the dismiss frame was a sudden jump of N frames' worth of accumulated PTY output that the operator had no way to see coming. Co-authored-by: Codex <codex@openai.com> Signed-off-by: Alexey Zhokhov <alexey@zhokhov.com>
donbeave
added a commit
that referenced
this pull request
May 23, 2026
…escing Four small daemon/dialog correctness fixes. `dialog::box_rect` (#9) - Clamp dialog height to the area below the status bar so a very small terminal does not paint past the bottom edge (which would scroll the host terminal and destroy the operator's pane content) and does not overlap row 0 (the brand pill / tab strip). Trade-off is that the dialog renders unusable when the terminal is pathologically small, but the host terminal stays in a recoverable state regardless. - `render_bottom_hint`: tighten the bail to `total > term_cols` so an exact-fit hint renders instead of being dropped at `==`. Use saturating subtraction for the start_col centring math. `Multiplexer::spawn_session` (#34, cap side) - Cap tabs at `MAX_TABS=32` and sessions at `MAX_SESSIONS=64`. A runaway client (or an operator mis-click loop) cannot allocate unbounded PTYs — each session retains scrollback, a master+slave PTY pair, and a child process, so unbounded growth is a real OOM risk. The CLI surface returns an `anyhow::bail!` which `dispatch_spawn_intent` already clog's. `SessionEvent::Output` (#36) - Move `drain_mode_transitions` inside the `is_focused` gate. The previous code drained and discarded the bytes on every backgrounded pane — wasted work, plus a future change that reads `bracketed_paste_active` after drain on an unfocused pane would silently see the wrong state. Also restructured to collect the to-emit bytes into a local Vec so the `&mut Session` borrow ends before `mux.send_output` (which needs `&self`). Render ticker (#37) - Drop the `mux.dialog.is_none()` gate from the render ticker condition. `compose_frame` already includes the dialog overlay when one is open, so the open-dialog path now composes at the normal ~30 fps instead of accumulating `dirty` until dismiss — without this the dismiss frame was a sudden jump of N frames' worth of accumulated PTY output that the operator had no way to see coming. Signed-off-by: Alexey Zhokhov <alexey@zhokhov.com> Co-authored-by: Codex <codex@openai.com>
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.
Summary
.idea/in the repo root.gitignoreTest Plan
cargo fmt -- --checkcargo clippycargo nextest run