Skip to content

Add JACKIN_DIND_HOSTNAME runtime env var#36

Merged
donbeave merged 5 commits into
mainfrom
feature/dind-hostname-env-var-impl
Apr 11, 2026
Merged

Add JACKIN_DIND_HOSTNAME runtime env var#36
donbeave merged 5 commits into
mainfrom
feature/dind-hostname-env-var-impl

Conversation

@donbeave

@donbeave donbeave commented Apr 11, 2026

Copy link
Copy Markdown
Member

Summary

  • reserve JACKIN_DIND_HOSTNAME as a jackin-managed runtime env var alongside JACKIN_CLAUDE_ENV
  • inject JACKIN_DIND_HOSTNAME into the runtime container using the existing DinD sidecar hostname already used for DOCKER_HOST
  • document the runtime-managed env vars, update architecture docs, and mark the DinD hostname TODO as resolved

Test Plan

  • cargo fmt -- --check
  • cargo clippy
  • cargo nextest run
  • bun install --frozen-lockfile
  • bun run build

@donbeave donbeave merged commit fb6287e into main Apr 11, 2026
3 checks passed
@donbeave donbeave deleted the feature/dind-hostname-env-var-impl branch April 11, 2026 08:35
donbeave added a commit that referenced this pull request Apr 20, 2026
…var-impl

Add JACKIN_DIND_HOSTNAME runtime env var
donbeave added a commit that referenced this pull request Apr 21, 2026
…var-impl

Add JACKIN_DIND_HOSTNAME runtime env var
donbeave added a commit that referenced this pull request Apr 21, 2026
Add JACKIN_DIND_HOSTNAME runtime env var
donbeave added a commit that referenced this pull request Apr 21, 2026
Add JACKIN_DIND_HOSTNAME runtime env var
donbeave added a commit that referenced this pull request Apr 21, 2026
Add JACKIN_DIND_HOSTNAME runtime env var
donbeave added a commit that referenced this pull request May 7, 2026
Add JACKIN_DIND_HOSTNAME runtime env var

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
Add JACKIN_DIND_HOSTNAME runtime env var

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-019d7b93-89e9-72de-b351-4a8945881d89

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
Amp-Thread-ID: https://ampcode.com/threads/T-019d7b93-89e9-72de-b351-4a8945881d89

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
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
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
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
Add JACKIN_DIND_HOSTNAME runtime env var

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant