Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions .planning/STATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ See: .planning/PROJECT.md (updated 2026-02-24)

Milestone: v1.0 MVP — SHIPPED 2026-02-24
Status: Milestone Complete
Last activity: 2026-02-24 — v1.0 milestone archived
Last activity: 2026-03-08 - Completed quick task 1: Add tmux theme and ease of use config to base Dockerfile

Progress: [##########] 100%

Expand All @@ -31,8 +31,14 @@ None.
- GHA cache capacity for 7-10 GB image
- Android emulator segfaults on kernel 6.17.7 (upstream bug, resolves with kernel update)

### Quick Tasks Completed

| # | Description | Date | Commit | Directory |
|---|-------------|------|--------|-----------|
| 1 | Add tmux theme and ease of use config to base Dockerfile | 2026-03-08 | 7fc04c9 | [1-add-tmux-theme-and-ease-of-use-config-to](./quick/1-add-tmux-theme-and-ease-of-use-config-to/) |

## Session Continuity

Last session: 2026-02-24
Stopped at: v1.0 milestone completed and archived
Last session: 2026-03-08
Stopped at: Completed quick/1-PLAN.md (tmux config)
Resume file: None
6 changes: 3 additions & 3 deletions .planning/config.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"mode": "yolo",
"depth": "quick",
"parallelization": true,
"commit_docs": true,
"model_profile": "quality",
"workflow": {
"research": true,
"plan_check": true,
"verifier": true
}
}
},
"granularity": "coarse"
}
139 changes: 139 additions & 0 deletions .planning/quick/1-add-tmux-theme-and-ease-of-use-config-to/1-PLAN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
---
phase: quick
plan: 01
type: execute
wave: 1
depends_on: []
files_modified:
- base/tmux.conf
- base/Dockerfile
autonomous: true
must_haves:
truths:
- "tmux starts with mouse support enabled (scroll, click, drag, resize)"
- "tmux has a visible, themed status bar"
- "tmux supports intuitive copy-paste with mouse selection"
- "tmux pane/window creation uses memorable key bindings"
artifacts:
- path: "base/tmux.conf"
provides: "tmux configuration with theme, mouse, and keybindings"
min_lines: 30
- path: "base/Dockerfile"
provides: "COPY of tmux.conf into image"
contains: "tmux.conf"
key_links:
- from: "base/Dockerfile"
to: "base/tmux.conf"
via: "COPY into /home/dev/.tmux.conf"
pattern: "COPY.*tmux\\.conf"
---

<objective>
Add a polished tmux configuration to the base DevContainer image that makes tmux behave as close to a GUI terminal as possible: mouse scrolling, click-to-select panes, drag-to-resize, mouse-based copy-paste, intuitive window/pane splitting keybindings, and a clean status bar theme.

Purpose: Make tmux immediately usable without memorizing arcane keybindings. Developers should feel like they are using a modern terminal multiplexer out of the box.
Output: base/tmux.conf file and updated Dockerfile to install it.
</objective>

<execution_context>
@/home/dev/.claude/get-shit-done/workflows/execute-plan.md
@/home/dev/.claude/get-shit-done/templates/summary.md
</execution_context>

<context>
@base/Dockerfile
@CLAUDE.md
</context>

<tasks>

<task type="auto">
<name>Task 1: Create tmux.conf with theme and GUI-like settings</name>
<files>base/tmux.conf</files>
<action>
Create `base/tmux.conf` with the following configuration sections:

**Mouse support (critical for GUI-like feel):**
- `set -g mouse on` — enables scroll, click, drag, resize all at once
- Configure mouse scroll to work in both normal mode (scrollback) and copy-mode (page through history)

**Copy-paste integration:**
- Use vi-style copy mode (`set-window-option -g mode-keys vi`)
- Bind `v` to begin selection, `y` to yank in copy-mode-vi
- On mouse drag end, copy selection to tmux buffer and to system clipboard via `xclip -selection clipboard`
- `bind p paste-buffer` for quick paste

**Intuitive pane/window keybindings:**
- Change prefix to `C-a` (more ergonomic than `C-b`): `set -g prefix C-a` and `unbind C-b`
- Split horizontal: `bind |` (pipe) for vertical split, `bind -` for horizontal split (visual mnemonics)
- Navigate panes with Alt+arrow keys (no prefix needed): `bind -n M-Left select-pane -L`, etc.
- Resize panes with Shift+arrow keys (no prefix needed): `bind -n S-Left resize-pane -L 2`, etc.
- `bind r source-file ~/.tmux.conf` to reload config easily

**Terminal and display settings:**
- `set -g default-terminal "screen-256color"` and `set -ga terminal-overrides ",xterm-256color:Tc"` for true color
- `set -g base-index 1` and `setw -g pane-base-index 1` (1-indexed, more natural)
- `set -g renumber-windows on`
- `set -sg escape-time 0` (no delay after escape, important for vim users)
- `set -g history-limit 50000` (generous scrollback)
- `set -g display-time 4000` (status messages visible longer)

**Status bar theme (clean, informative, modern):**
- Status bar at bottom, refresh every 5 seconds
- Use a dark background with colored accents (e.g., blue/cyan highlights)
- Left side: session name in a colored block
- Right side: date and time
- Window list: current window highlighted with distinct background color, inactive windows dimmed
- Pane borders: subtle colors, active pane border highlighted
- Style example colors: status-bg colour235 (dark gray), status-fg colour248 (light gray), active window bg colour25 (blue), active pane border colour39 (cyan)

Do NOT install any tmux plugin manager (tpm) or external plugins — keep it self-contained with built-in tmux features only.
</action>
<verify>
<automated>test -f /workspace/base/tmux.conf && grep -q "set -g mouse on" /workspace/base/tmux.conf && grep -q "prefix" /workspace/base/tmux.conf && grep -q "status-" /workspace/base/tmux.conf && echo "PASS" || echo "FAIL"</automated>
</verify>
<done>base/tmux.conf exists with mouse support, copy-paste bindings, intuitive keybindings, and a themed status bar. No external plugin dependencies.</done>
</task>

<task type="auto">
<name>Task 2: Add tmux.conf COPY to base Dockerfile</name>
<files>base/Dockerfile</files>
<action>
Add a COPY instruction to the base Dockerfile to install the tmux.conf as `/home/dev/.tmux.conf`.

Insert the COPY line in the "User-space tools (as USER dev)" section (after line 202 where `mkdir -p $HOME/.claude` happens, near the other COPY for devcontainer-claude.md). The line should be:

```
COPY --chown=dev:dev base/tmux.conf $HOME/.tmux.conf
```

This must be placed AFTER the `USER dev` / `ENV HOME=/home/dev` lines (line 193-194) so that `$HOME` resolves correctly.

Follow existing Dockerfile conventions:
- Use POSIX-compatible syntax
- Use `--chown=dev:dev` consistent with other COPY instructions in that section
</action>
<verify>
<automated>grep -n "tmux.conf" /workspace/base/Dockerfile && echo "PASS" || echo "FAIL"</automated>
</verify>
<done>Dockerfile contains COPY instruction for tmux.conf, placed in the user-space section with correct ownership.</done>
</task>

</tasks>

<verification>
- `base/tmux.conf` exists and contains mouse, keybinding, copy-paste, and theme configuration
- `base/Dockerfile` contains a COPY line for tmux.conf in the USER dev section
- No tmux plugin manager or external dependencies introduced
- Dockerfile still follows project conventions (POSIX redirects, --chown pattern)
</verification>

<success_criteria>
- tmux.conf is a self-contained config with mouse support, vi copy mode, intuitive splits (| and -), Alt+arrow pane navigation, and a themed status bar
- Dockerfile correctly copies the config to /home/dev/.tmux.conf
- No breaking changes to existing Dockerfile structure
</success_criteria>

<output>
After completion, create `.planning/quick/1-add-tmux-theme-and-ease-of-use-config-to/1-SUMMARY.md`
</output>
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
---
phase: quick
plan: 01
subsystem: infra
tags: [tmux, devcontainer, docker, developer-experience]

requires: []
provides:
- "tmux.conf with mouse, vi copy mode, themed status bar, and intuitive keybindings"
affects: [base-dockerfile]

tech-stack:
added: []
patterns:
- "Self-contained tmux config without plugin managers"

key-files:
created:
- base/tmux.conf
modified:
- base/Dockerfile

key-decisions:
- "Prefix changed to C-a for ergonomics over default C-b"
- "No tmux plugin manager (tpm) — all built-in features only"
- "Placed COPY alongside existing devcontainer-claude.md COPY in user-space section"

patterns-established:
- "tmux config as a standalone file COPYed into the image"

requirements-completed: []

duration: 1min
completed: 2026-03-08
---

# Quick Task 1: Add tmux Theme and Ease-of-Use Config Summary

**Self-contained tmux.conf with mouse support, C-a prefix, vi copy mode, Alt+arrow pane navigation, and blue-accented status bar theme**

## Performance

- **Duration:** 1 min
- **Started:** 2026-03-08T09:00:52Z
- **Completed:** 2026-03-08T09:01:39Z
- **Tasks:** 2
- **Files modified:** 2

## Accomplishments
- Created tmux.conf with full mouse support (scroll, click, drag, resize)
- Added vi copy mode with xclip clipboard integration for mouse-based copy-paste
- Configured intuitive pane splitting (| and -) and Alt+arrow navigation
- Themed status bar with session name, window list, and timestamp
- Integrated config into base Dockerfile with proper ownership

## Task Commits

Each task was committed atomically:

1. **Task 1: Create tmux.conf with theme and GUI-like settings** - `13c6afa` (feat)
2. **Task 2: Add tmux.conf COPY to base Dockerfile** - `6f88739` (feat)

## Files Created/Modified
- `base/tmux.conf` - Full tmux config with mouse, keybindings, copy-paste, and themed status bar
- `base/Dockerfile` - Added COPY instruction for tmux.conf in user-space section

## Decisions Made
- Changed prefix from C-b to C-a for better ergonomics
- Used vi mode keys for copy mode to align with vim users in the devcontainer
- No tmux plugin manager — self-contained with built-in features only
- Placed COPY line next to the existing devcontainer-claude.md COPY for logical grouping

## Deviations from Plan

None - plan executed exactly as written.

## Issues Encountered
None

## User Setup Required
None - no external service configuration required.

## Next Phase Readiness
- tmux configuration will be available in all images built from the base Dockerfile
- No further action needed

---
*Quick Task: 01*
*Completed: 2026-03-08*
1 change: 1 addition & 0 deletions base/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@
# User-level CLAUDE.md for the devcontainer
RUN mkdir -p $HOME/.claude
COPY --chown=dev:dev base/devcontainer-claude.md $HOME/.claude/CLAUDE.md
COPY --chown=dev:dev base/tmux.conf $HOME/.tmux.conf

WORKDIR /workspace

Expand All @@ -208,17 +209,17 @@
RUN curl -LsSf https://astral.sh/uv/install.sh | sh

# Claude Plugins, MCP, Hooks
ARG CONTEXT7_API_KEY=""

Check warning on line 212 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / base

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 212 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-nvm-uv-claude, vnc, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 212 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-flutter-rust-nvm-uv-claude, flutter, true, trixie-vnc-nvm-uv-claude:latest=d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 212 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-php-nvm-uv-claude, php, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 212 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-bun-nvm-uv-claude, bun, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 212 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-rust-nvm-uv-claude, rust, devcontainer-base:latest=docker-image://localhost:5000...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
ARG AUTOMEM_ENDPOINT=""
ARG AUTOMEM_API_KEY=""

Check warning on line 214 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / base

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 214 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-nvm-uv-claude, vnc, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 214 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-flutter-rust-nvm-uv-claude, flutter, true, trixie-vnc-nvm-uv-claude:latest=d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 214 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-php-nvm-uv-claude, php, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 214 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-bun-nvm-uv-claude, bun, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 214 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-rust-nvm-uv-claude, rust, devcontainer-base:latest=docker-image://localhost:5000...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
ARG NTFY_URL=""
ARG NTFY_TOKEN=""

Check warning on line 216 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / base

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 216 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-nvm-uv-claude, vnc, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 216 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-flutter-rust-nvm-uv-claude, flutter, true, trixie-vnc-nvm-uv-claude:latest=d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 216 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-php-nvm-uv-claude, php, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 216 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-bun-nvm-uv-claude, bun, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 216 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-rust-nvm-uv-claude, rust, devcontainer-base:latest=docker-image://localhost:5000...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

ENV CONTEXT7_API_KEY=${CONTEXT7_API_KEY}

Check warning on line 218 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / base

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 218 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-nvm-uv-claude, vnc, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 218 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-flutter-rust-nvm-uv-claude, flutter, true, trixie-vnc-nvm-uv-claude:latest=d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 218 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-php-nvm-uv-claude, php, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 218 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-bun-nvm-uv-claude, bun, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 218 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-rust-nvm-uv-claude, rust, devcontainer-base:latest=docker-image://localhost:5000...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
ENV AUTOMEM_ENDPOINT=${AUTOMEM_ENDPOINT}
ENV AUTOMEM_API_KEY=${AUTOMEM_API_KEY}

Check warning on line 220 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / base

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 220 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-nvm-uv-claude, vnc, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 220 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-flutter-rust-nvm-uv-claude, flutter, true, trixie-vnc-nvm-uv-claude:latest=d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 220 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-php-nvm-uv-claude, php, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 220 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-bun-nvm-uv-claude, bun, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 220 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-rust-nvm-uv-claude, rust, devcontainer-base:latest=docker-image://localhost:5000...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
ENV NTFY_URL=${NTFY_URL}
ENV NTFY_TOKEN=${NTFY_TOKEN}

Check warning on line 222 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / base

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 222 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-nvm-uv-claude, vnc, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 222 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-flutter-rust-nvm-uv-claude, flutter, true, trixie-vnc-nvm-uv-claude:latest=d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 222 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-php-nvm-uv-claude, php, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 222 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-bun-nvm-uv-claude, bun, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 222 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-rust-nvm-uv-claude, rust, devcontainer-base:latest=docker-image://localhost:5000...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

COPY --chown=dev:dev scripts/ntfy-hook.sh $HOME/.local/bin/ntfy-hook.sh
COPY --chown=dev:dev scripts/suggest-context7-hook.sh $HOME/.local/bin/suggest-context7-hook.sh
Expand Down
87 changes: 87 additions & 0 deletions base/tmux.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# ── tmux configuration ──────────────────────────────────────────────────────
# GUI-like experience: mouse support, intuitive keybindings, clean theme.
# No external plugins — built-in features only.

# ── Prefix ──────────────────────────────────────────────────────────────────

# set -g prefix C-a
# unbind C-b
# bind C-a send-prefix

# ── Terminal & Display ──────────────────────────────────────────────────────

set -g default-terminal "screen-256color"
set -ga terminal-overrides ",xterm-256color:Tc"
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on
set -sg escape-time 0
set -g history-limit 50000
set -g display-time 4000

# ── Mouse Support ──────────────────────────────────────────────────────────

set -g mouse on

# Scroll in normal mode enters copy-mode; scroll in copy-mode pages history
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"

# ── Copy-Paste (vi mode) ───────────────────────────────────────────────────

# setw -g mode-keys vi

# bind -T copy-mode-vi v send-keys -X begin-selection
# bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -selection clipboard"
# bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard"
# bind p paste-buffer

# ── Intuitive Pane/Window Keybindings ──────────────────────────────────────

# Split panes with visual mnemonics
# bind | split-window -h -c "#{pane_current_path}"
# bind - split-window -v -c "#{pane_current_path}"
# unbind '"'
# unbind %

# Navigate panes with Alt+arrow (no prefix)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Resize panes with Shift+arrow (no prefix)
bind -n S-Left resize-pane -L 2
bind -n S-Right resize-pane -R 2
bind -n S-Up resize-pane -U 2
bind -n S-Down resize-pane -D 2

# Reload config
bind r source-file ~/.tmux.conf \; display-message "Config reloaded"

# ── Status Bar Theme ───────────────────────────────────────────────────────

set -g status-position bottom
set -g status-interval 5

# Colors
set -g status-style "bg=colour235,fg=colour248"

# Left: session name
set -g status-left-length 30
set -g status-left "#[bg=colour25,fg=colour255,bold] #S #[bg=colour235] "

# Right: date and time
set -g status-right-length 50
set -g status-right "#[fg=colour248] %Y-%m-%d #[fg=colour255,bold]%H:%M "

# Window list
setw -g window-status-format " #I:#W "
setw -g window-status-current-format "#[bg=colour25,fg=colour255,bold] #I:#W "
setw -g window-status-separator ""

# Pane borders
set -g pane-border-style "fg=colour238"
set -g pane-active-border-style "fg=colour39"

# Message styling
set -g message-style "bg=colour25,fg=colour255,bold"