Skip to content

Commit 1871533

Browse files
authored
Merge pull request #27 from AnExiledDev/fix/ccstatusline-deployment
Fix ccstatusline config not deploying after .claude location move
2 parents b2261ed + 8ec6e0c commit 1871533

File tree

30 files changed

+332
-78
lines changed

30 files changed

+332
-78
lines changed

.devcontainer/CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,23 @@
5252

5353
### Fixed
5454

55+
#### CCStatusLine Deployment
56+
- **`CONFIG_SOURCE_DIR` deprecation guard**`setup.sh` now detects stale `CONFIG_SOURCE_DIR=/workspaces/.claude` in `.env`, overrides to `$DEVCONTAINER_DIR/config`, and auto-comments the line on disk; the wrong path caused `setup-config.sh` to skip the file manifest entirely, leaving ccstatusline (and all manifest-based configs) undeployed
57+
- **System template directory permissions**`install.sh` now chowns `/usr/local/share/ccstatusline/` to the target user so `setup-config.sh` can write the template file during post-start
58+
- **Silent copy failures**`setup-config.sh` now reports warnings when file deployment fails instead of logging success after a failed `cp`
59+
60+
#### Post-Integration Review Fixes
61+
- **skill-engine** — worktree skill definition uses weighted tuples (was plain strings, caused crash)
62+
- **dangerous-command-blocker** — fail closed on unexpected exceptions (was fail-open)
63+
- **ticket-workflow** — remove redundant `ValueError` from exception handlers
64+
- **workspace-scope-guard** — use maxsplit in variable assignment detection
65+
- **Shell scripts** — add executable bit to `check-setup.sh`, quote `PLUGIN_BLACKLIST` variable, add `set -uo pipefail` to tmux installer, replace deprecated `which` with `command -v`, normalize `&>` redirects in setup scripts
66+
- **Documentation** — update agent count to 21, skill count to 38, plugin count to 14 across all docs site pages
67+
- **Documentation** — add missing plugin pages for git-workflow and prompt-snippets
68+
- **Documentation** — add `cc-orc` and `dbr` to commands reference
69+
- **Documentation** — remove merge conflict marker from first-session.md
70+
- **Documentation** — update architecture.md directory tree with new plugins
71+
5572
#### CodeRabbit Review Fixes
5673
- **`implementer.md`** — changed PostToolUse hook (fires every Edit) to Stop hook (fires once at task end) with 120s timeout; prevents redundant test runs during multi-file tasks
5774
- **`tester.md`** — increased Stop hook timeout from 30s to 120s to accommodate larger test suites

.devcontainer/connect-external-terminal.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ echo "Found container: $CONTAINER_NAME ($CONTAINER_ID)"
4949
echo ""
5050

5151
# Check if tmux is available in the container
52-
if ! docker exec "$CONTAINER_ID" which tmux >/dev/null 2>&1; then
52+
if ! docker exec "$CONTAINER_ID" command -v tmux >/dev/null 2>&1; then
5353
echo "ERROR: tmux is not installed in the container."
5454
echo "Rebuild the devcontainer to install the tmux feature."
5555
exit 1

.devcontainer/features/ccstatusline/install.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ echo "[ccstatusline] Widget config managed by file-manifest.json"
7777
# Create directories so wrapper doesn't fail before first post-start
7878
mkdir -p "${USER_HOME}/.config/ccstatusline"
7979
mkdir -p /usr/local/share/ccstatusline
80+
chown "${USERNAME}:${USERNAME}" /usr/local/share/ccstatusline
8081
chown "${USERNAME}:${USERNAME}" "${USER_HOME}/.config/ccstatusline" 2>/dev/null || true
8182

8283
# Create session resume helper script for custom-command widget

.devcontainer/features/tmux/install.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/bash
22
# SPDX-License-Identifier: GPL-3.0-only
33
# Copyright (c) 2026 Marcus Krueger
4-
set -e
4+
set -euo pipefail
55

66
VERSION="${VERSION:-latest}"
77

.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/block-dangerous.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,9 @@ def main():
127127
# Fail closed: can't parse means can't verify safety
128128
sys.exit(2)
129129
except Exception as e:
130-
# Log error but don't block on hook failure
130+
# Fail closed: unexpected errors should block, not allow
131131
print(f"Hook error: {e}", file=sys.stderr)
132-
sys.exit(0)
132+
sys.exit(2)
133133

134134

135135
if __name__ == "__main__":

.devcontainer/plugins/devs-marketplace/plugins/skill-engine/scripts/skill-suggester.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -546,18 +546,19 @@
546546
},
547547
"worktree": {
548548
"phrases": [
549-
"create a worktree",
550-
"work in a worktree",
551-
"git worktree",
552-
"worktree",
553-
"parallel branches",
554-
"isolate my work",
555-
"clean up worktrees",
556-
"list worktrees",
557-
"set up a worktree",
558-
"enter worktree",
549+
("create a worktree", 0.9),
550+
("work in a worktree", 0.8),
551+
("git worktree", 0.9),
552+
("worktree", 0.7),
553+
("parallel branches", 0.6),
554+
("isolate my work", 0.5),
555+
("clean up worktrees", 0.8),
556+
("list worktrees", 0.7),
557+
("set up a worktree", 0.8),
558+
("enter worktree", 0.8),
559559
],
560560
"terms": ["worktree", "EnterWorktree", "WorktreeCreate"],
561+
"priority": 5,
561562
},
562563
}
563564

.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/scripts/ticket-linker.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def fetch_ticket(number: int) -> str | None:
7171

7272
try:
7373
data = json.loads(result.stdout)
74-
except (json.JSONDecodeError, ValueError):
74+
except json.JSONDecodeError:
7575
return None
7676

7777
title = data.get("title", "(no title)")
@@ -103,7 +103,7 @@ def main():
103103

104104
try:
105105
data = json.loads(raw)
106-
except (json.JSONDecodeError, ValueError):
106+
except json.JSONDecodeError:
107107
sys.exit(0)
108108

109109
prompt = data.get("prompt", "")

.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/guard-workspace-scope.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ def extract_primary_command(command: str) -> str:
157157
while i < len(tokens):
158158
tok = tokens[i]
159159
# Skip inline variable assignments: VAR=value
160-
if "=" in tok and not tok.startswith("-") and tok.split("=")[0].isidentifier():
160+
if "=" in tok and not tok.startswith("-") and tok.split("=", 1)[0].isidentifier():
161161
i += 1
162162
continue
163163
# Skip sudo and its flags

.devcontainer/scripts/check-setup.sh

100644100755
File mode changed.

.devcontainer/scripts/setup-config.sh

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,21 +98,30 @@ jq -r '.[] | [.src, .dest, (.destFilename // "__NONE__"), (.enabled // true | to
9898
# Apply overwrite strategy
9999
case "$overwrite" in
100100
always)
101-
cp "$src_path" "$dest_path"
102-
log "Copied $src$dest_path (always)"
101+
if cp "$src_path" "$dest_path" 2>/dev/null; then
102+
log "Copied $src$dest_path (always)"
103+
else
104+
warn "Failed to copy $src$dest_path (permission denied?)"
105+
fi
103106
;;
104107
never)
105108
if [ ! -f "$dest_path" ]; then
106-
cp "$src_path" "$dest_path"
107-
log "Copied $src$dest_path (new)"
109+
if cp "$src_path" "$dest_path" 2>/dev/null; then
110+
log "Copied $src$dest_path (new)"
111+
else
112+
warn "Failed to copy $src$dest_path (permission denied?)"
113+
fi
108114
else
109115
log "Skipping $src (exists, overwrite=never)"
110116
fi
111117
;;
112118
if-changed | *)
113119
if should_copy "$src_path" "$dest_path"; then
114-
cp "$src_path" "$dest_path"
115-
log "Copied $src$dest_path (changed)"
120+
if cp "$src_path" "$dest_path" 2>/dev/null; then
121+
log "Copied $src$dest_path (changed)"
122+
else
123+
warn "Failed to copy $src$dest_path (permission denied?)"
124+
fi
116125
else
117126
log "Skipping $src (unchanged)"
118127
fi

0 commit comments

Comments
 (0)