codeforge-dev 1.5.4 → 1.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,16 @@
1
1
  # CodeForge Devcontainer Changelog
2
2
 
3
+ ## [v1.5.6] - 2026-02-06
4
+
5
+ ### Added
6
+
7
+ - **tmux as default terminal**: All terminals (VS Code, WezTerm, docker exec) now auto-enter tmux `claude-teams` session. Ensures `$TMUX` is always set so Agent Teams `teammateMode: "auto"` uses split panes
8
+ - VS Code: Added `tmux` terminal profile as default in `devcontainer.json` (`tmux -u new-session -A -s claude-teams`)
9
+ - All shells: Auto-enter tmux block in `.bashrc`/`.zshrc` via `setup-aliases.sh` (guarded: skips if already in tmux, non-interactive, or tmux not installed)
10
+ - Plain `bash` profile kept as alternative in VS Code
11
+
12
+ ---
13
+
3
14
  ## [v1.5.3] - 2026-02-06
4
15
 
5
16
  ### Added
@@ -9,6 +20,7 @@
9
20
  ### Fixed
10
21
 
11
22
  - **ccstatusline powerline glyphs**: Powerline separators/caps were empty strings, rendering as underscores. Now uses proper Nerd Font glyphs (U+E0B0, U+E0B4, U+E0B6)
23
+ - **Unicode rendering in external terminals**: tmux rendered ALL Unicode as underscores because `docker exec` doesn't propagate locale vars. External terminal scripts now pass `LANG`/`LC_ALL=en_US.UTF-8` and use `tmux -u` to force UTF-8 mode. Locale exports also added to `.bashrc`/`.zshrc` as permanent fallback
12
24
 
13
25
  ### Fixed
14
26
 
@@ -150,10 +150,7 @@ GitHub CLI credentials are automatically persisted across container rebuilds. Th
150
150
 
151
151
  ### The `cc` Command
152
152
 
153
- The `cc` command is a wrapper that:
154
- - Creates a project-local `.claude/` directory if missing
155
- - Copies default configuration files
156
- - Launches Claude Code with the project's system prompt
153
+ The `cc` command is an alias that launches Claude Code with the project's system prompt and plan-mode permissions. All terminals (VS Code, WezTerm, docker exec) auto-enter a tmux `claude-teams` session for Agent Teams split-pane support.
157
154
 
158
155
  ```bash
159
156
  cc # Start Claude Code in current directory
@@ -216,8 +213,9 @@ CodeForge includes several custom devcontainer features:
216
213
 
217
214
  - **Authentication required**: Run `claude` once to authenticate before using `cc`
218
215
  - **Plan mode default**: The container starts in "plan" mode, which prompts for approval before making changes
219
- - **Project-local config**: The `cc` command creates `.claude/` in your current directory for project-specific settings
216
+ - **Project-local config**: Config files are auto-copied to `.claude/` on container start via `setup-config.sh`
220
217
  - **GitHub auth persists**: Run `gh auth login` once; credentials survive container rebuilds (stored in `/workspaces/.gh/`)
218
+ - **Terminals auto-enter tmux**: All interactive shells auto-enter the `claude-teams` tmux session for Agent Teams split panes. Use the `bash` terminal profile in VS Code if you need a plain shell
221
219
 
222
220
  ## Further Reading
223
221
 
@@ -73,14 +73,18 @@ Write-Host "======================================"
73
73
  Write-Host ""
74
74
 
75
75
  # Connect to container with tmux as vscode user (where aliases are defined)
76
- # If session exists, reattach. Otherwise create in /workspaces and auto-run cc.
77
- docker exec -it --user vscode $CONTAINER_ID bash -c "
76
+ # Pass UTF-8 locale so tmux renders Unicode correctly (not as underscores)
77
+ docker exec -it `
78
+ -e LANG=en_US.UTF-8 `
79
+ -e LC_ALL=en_US.UTF-8 `
80
+ --user vscode $CONTAINER_ID bash -c "
81
+ export LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
78
82
  if tmux has-session -t '$TMUX_SESSION' 2>/dev/null; then
79
- tmux attach-session -t '$TMUX_SESSION'
83
+ tmux -u attach-session -t '$TMUX_SESSION'
80
84
  else
81
- tmux new-session -d -s '$TMUX_SESSION' -c /workspaces
85
+ tmux -u new-session -d -s '$TMUX_SESSION' -c /workspaces
82
86
  sleep 0.5
83
87
  tmux send-keys -t '$TMUX_SESSION' 'cc' Enter
84
- tmux attach-session -t '$TMUX_SESSION'
88
+ tmux -u attach-session -t '$TMUX_SESSION'
85
89
  fi
86
90
  "
@@ -65,14 +65,19 @@ echo "======================================"
65
65
  echo ""
66
66
 
67
67
  # Connect to container with tmux as vscode user (where aliases are defined)
68
- # If session exists, reattach. Otherwise create in /workspaces and auto-run cc.
69
- exec docker exec -it --user vscode "$CONTAINER_ID" bash -c "
68
+ # Pass UTF-8 locale so tmux renders Unicode correctly (not as underscores)
69
+ # Use tmux -u to force UTF-8 mode as a belt-and-suspenders measure
70
+ exec docker exec -it \
71
+ -e LANG=en_US.UTF-8 \
72
+ -e LC_ALL=en_US.UTF-8 \
73
+ --user vscode "$CONTAINER_ID" bash -c "
74
+ export LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
70
75
  if tmux has-session -t '$TMUX_SESSION' 2>/dev/null; then
71
- tmux attach-session -t '$TMUX_SESSION'
76
+ tmux -u attach-session -t '$TMUX_SESSION'
72
77
  else
73
- tmux new-session -d -s '$TMUX_SESSION' -c /workspaces
78
+ tmux -u new-session -d -s '$TMUX_SESSION' -c /workspaces
74
79
  sleep 0.5
75
80
  tmux send-keys -t '$TMUX_SESSION' 'cc' Enter
76
- tmux attach-session -t '$TMUX_SESSION'
81
+ tmux -u attach-session -t '$TMUX_SESSION'
77
82
  fi
78
83
  "
@@ -78,7 +78,16 @@
78
78
  "customizations": {
79
79
  "vscode": {
80
80
  "settings": {
81
- "terminal.integrated.defaultProfile.linux": "bash",
81
+ "terminal.integrated.profiles.linux": {
82
+ "tmux": {
83
+ "path": "tmux",
84
+ "args": ["-u", "new-session", "-A", "-s", "claude-teams"]
85
+ },
86
+ "bash": {
87
+ "path": "bash"
88
+ }
89
+ },
90
+ "terminal.integrated.defaultProfile.linux": "tmux",
82
91
  "terminal.integrated.enableBell": true,
83
92
  "remote.extensionKind": {
84
93
  "wenbopan.vscode-terminal-osc-notifier": ["ui"]
@@ -47,13 +47,29 @@ for rc in ~/.bashrc ~/.zshrc; do
47
47
  sed -i '/alias specwright=/d' "$rc"
48
48
  fi
49
49
 
50
- # --- Add environment and aliases ---
50
+ # --- Add environment, auto-tmux, and aliases ---
51
51
  echo "" >> "$rc"
52
52
  echo "# Claude Code environment and aliases (managed by setup-aliases.sh)" >> "$rc"
53
53
  # Export CLAUDE_CONFIG_DIR so it's available in all shells (not just VS Code remoteEnv)
54
54
  if ! grep -q 'export CLAUDE_CONFIG_DIR=' "$rc" 2>/dev/null; then
55
55
  echo "export CLAUDE_CONFIG_DIR=\"${CLAUDE_CONFIG_DIR}\"" >> "$rc"
56
56
  fi
57
+ # Export UTF-8 locale so tmux renders Unicode correctly (docker exec doesn't inherit locale)
58
+ if ! grep -q 'export LANG=en_US.UTF-8' "$rc" 2>/dev/null; then
59
+ echo 'export LANG=en_US.UTF-8' >> "$rc"
60
+ echo 'export LC_ALL=en_US.UTF-8' >> "$rc"
61
+ fi
62
+ # Auto-enter tmux for Agent Teams split-pane support
63
+ # Guards: not already in tmux, interactive shell only, tmux available
64
+ if ! grep -q 'Auto-enter tmux' "$rc" 2>/dev/null; then
65
+ cat >> "$rc" << 'TMUX_BLOCK'
66
+
67
+ # Auto-enter tmux for Agent Teams split-pane support
68
+ if [ -z "$TMUX" ] && [ -n "$PS1" ] && command -v tmux &>/dev/null; then
69
+ exec tmux -u new-session -A -s claude-teams
70
+ fi
71
+ TMUX_BLOCK
72
+ fi
57
73
  echo "$ALIAS_CC" >> "$rc"
58
74
  echo "$ALIAS_CLAUDE" >> "$rc"
59
75
  echo "$ALIAS_CCRAW" >> "$rc"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeforge-dev",
3
- "version": "1.5.4",
3
+ "version": "1.5.6",
4
4
  "description": "Complete development container that sets up Claude Code with modular devcontainer features, modern dev tools, and persistent configurations. Drop it into any project and get a production-ready AI development environment in minutes.",
5
5
  "main": "setup.js",
6
6
  "bin": {