prjct-cli 0.58.0 → 0.60.0

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,66 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.60.0] - 2026-02-05
4
+
5
+ ### Features
6
+
7
+ - hierarchical AGENTS.md resolution and template improvements (PRJ-101) (#99)
8
+
9
+
10
+ ## [0.60.0] - 2026-02-05
11
+
12
+ ### Features
13
+
14
+ - **Hierarchical AGENTS.md resolution (PRJ-101)**: Agent files can now be discovered and loaded hierarchically from any directory level
15
+ - **Learnings capture on task completion**: Templates now capture patterns, approaches, and decisions for LLM knowledge transfer
16
+ - **Local-first issue tracking**: READ LOCAL, WRITE REMOTE pattern for Linear/JIRA (faster, fewer tokens)
17
+
18
+ ### Changed
19
+
20
+ - **Statusline improvements**: `p/` → `p.`, branch names truncated to 10 chars, neutral colors
21
+ - **Templates use `prjct` CLI directly**: No more dependency on `$PRJCT_CLI` environment variable
22
+ - **Ship always marks Done**: Issue tracker status updated to Done after ship (work complete)
23
+
24
+ ### Implementation Details
25
+
26
+ Implemented hierarchical agent resolution allowing AGENTS.md files at any directory level to define domain-specific patterns. Extended NestedContextResolver to discover these files and HierarchicalAgentResolver to merge them. Updated templates to enforce issue tracker updates and capture learnings on completion.
27
+
28
+ ### Learnings
29
+
30
+ - LLMs tend to skip template steps even when marked mandatory - need explicit POST-MERGE sections
31
+ - `$PRJCT_CLI` may not be set - use `prjct` CLI directly
32
+ - Local-first caching critical for token efficiency
33
+ - Neutral colors better than brand colors for dev tools
34
+
35
+ ### Test Plan
36
+
37
+ #### For QA
38
+ 1. Run `p. sync` → Verify statusline shows `p.` instead of `p/`
39
+ 2. On long branch name → Verify truncates to 10 chars after `/`
40
+ 3. Run `p. task PRJ-XXX` → Should read from local `issues.json`, not API
41
+ 4. Run `p. done` → Should update Linear status to Done
42
+ 5. Run `p. ship` after merge → Must update issue tracker before outputting success
43
+
44
+ #### For Users
45
+ - Statusline: `p/` → `p.`, branch names truncated, neutral colors
46
+ - Templates enforce issue tracker updates (never skipped)
47
+ - Learnings captured on task completion for LLM knowledge transfer
48
+
49
+
50
+ ## [0.59.1] - 2026-02-05
51
+
52
+ ### Tests
53
+
54
+ - **command-executor.ts tests (PRJ-82)**: Added 26 unit tests for the command execution pipeline
55
+
56
+
57
+ ## [0.59.0] - 2026-02-05
58
+
59
+ ### Features
60
+
61
+ - add staleness detection for CLAUDE.md context (PRJ-120) (#97)
62
+
63
+
3
64
  ## [0.58.0] - 2026-02-05
4
65
 
5
66
  ### Features
@@ -1,6 +1,33 @@
1
1
  #!/bin/bash
2
2
  # prjct statusline - Git component
3
- # Displays the current branch and dirty status
3
+ # Displays the current branch (truncated) and dirty status
4
+
5
+ # Truncate branch name: keep prefix + 10 chars after slash
6
+ # feat/PRJ-101-hierarchical-scope → feat/PRJ-101-hi...
7
+ truncate_branch() {
8
+ local branch="$1"
9
+ local max_suffix=10
10
+
11
+ # If branch has a slash (e.g., feat/something)
12
+ if [[ "$branch" == *"/"* ]]; then
13
+ local prefix="${branch%%/*}"
14
+ local suffix="${branch#*/}"
15
+
16
+ # If suffix is longer than max, truncate with ...
17
+ if [[ ${#suffix} -gt $max_suffix ]]; then
18
+ suffix="${suffix:0:$max_suffix}..."
19
+ fi
20
+
21
+ echo "${prefix}/${suffix}"
22
+ else
23
+ # No slash, just truncate if too long
24
+ if [[ ${#branch} -gt 15 ]]; then
25
+ echo "${branch:0:15}..."
26
+ else
27
+ echo "$branch"
28
+ fi
29
+ fi
30
+ }
4
31
 
5
32
  component_git() {
6
33
  component_enabled "git" || return
@@ -41,5 +68,8 @@ component_git() {
41
68
 
42
69
  [[ -z "$branch" ]] && return
43
70
 
44
- echo -e "${SECONDARY}${branch}${dirty}${NC}"
71
+ # Truncate long branch names
72
+ local display_branch=$(truncate_branch "$branch")
73
+
74
+ echo -e "${SECONDARY}${display_branch}${dirty}${NC}"
45
75
  }
@@ -7,14 +7,14 @@ STATUSLINE_DIR="${HOME}/.prjct-cli/statusline"
7
7
  THEME_DIR="${STATUSLINE_DIR}/themes"
8
8
 
9
9
  # Default colors (ANSI 256) - used as fallback
10
- DEFAULT_PRIMARY='\033[38;5;51m' # Cyan - prjct brand
11
- DEFAULT_ACCENT='\033[38;5;220m' # Gold/Yellow
12
- DEFAULT_SECONDARY='\033[38;5;147m' # Light purple
13
- DEFAULT_MUTED='\033[38;5;242m' # Gray
14
- DEFAULT_SUCCESS='\033[38;5;114m' # Green
15
- DEFAULT_ERROR='\033[38;5;204m' # Pink/Red
16
- DEFAULT_WARNING='\033[38;5;214m' # Orange
17
- DEFAULT_PURPLE='\033[38;5;183m' # Purple
10
+ DEFAULT_PRIMARY='\033[38;5;252m' # Light gray/white - neutral
11
+ DEFAULT_ACCENT='\033[38;5;252m' # Light gray/white
12
+ DEFAULT_SECONDARY='\033[38;5;248m' # Medium gray
13
+ DEFAULT_MUTED='\033[38;5;245m' # Gray
14
+ DEFAULT_SUCCESS='\033[38;5;108m' # Muted green
15
+ DEFAULT_ERROR='\033[38;5;174m' # Muted red/pink
16
+ DEFAULT_WARNING='\033[38;5;180m' # Muted yellow
17
+ DEFAULT_PURPLE='\033[38;5;182m' # Muted purple
18
18
 
19
19
  # Default icons
20
20
  DEFAULT_ICON_PRJCT="⚡"
@@ -2,7 +2,7 @@
2
2
  "name": "prjct-default",
3
3
  "description": "Default prjct theme for Claude Code statusline",
4
4
  "colors": {
5
- "primary": "75",
5
+ "primary": "252",
6
6
  "accent": "252",
7
7
  "secondary": "248",
8
8
  "muted": "245",
@@ -12,7 +12,7 @@
12
12
  "purple": "182"
13
13
  },
14
14
  "icons": {
15
- "prjct": "p/",
15
+ "prjct": "p.",
16
16
  "dir": "󰉋",
17
17
  "git": "",
18
18
  "separator": "│",