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 +61 -0
- package/assets/statusline/components/git.sh +32 -2
- package/assets/statusline/lib/theme.sh +8 -8
- package/assets/statusline/themes/default.json +2 -2
- package/core/__tests__/agentic/command-executor.test.ts +659 -0
- package/core/__tests__/services/hierarchical-agent-resolver.test.ts +359 -0
- package/core/__tests__/services/nested-context-resolver.test.ts +443 -0
- package/core/__tests__/services/staleness-checker.test.ts +204 -0
- package/core/__tests__/storage/storage-manager.test.ts +379 -0
- package/core/commands/analysis.ts +59 -1
- package/core/commands/analytics.ts +9 -0
- package/core/commands/command-data.ts +16 -0
- package/core/commands/commands.ts +7 -0
- package/core/commands/register.ts +1 -0
- package/core/domain/agent-loader.ts +197 -3
- package/core/index.ts +4 -0
- package/core/schemas/project.ts +3 -0
- package/core/services/hierarchical-agent-resolver.ts +234 -0
- package/core/services/index.ts +3 -0
- package/core/services/nested-context-resolver.ts +467 -3
- package/core/services/staleness-checker.ts +262 -0
- package/core/services/sync-service.ts +3 -0
- package/dist/bin/prjct.mjs +957 -364
- package/package.json +1 -1
- package/templates/commands/done.md +61 -13
- package/templates/commands/merge.md +11 -18
- package/templates/commands/ship.md +75 -42
- package/templates/commands/task.md +53 -19
- package/templates/global/CLAUDE.md +27 -0
- package/templates/global/STORAGE-SPEC.md +138 -3
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
|
-
|
|
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;
|
|
11
|
-
DEFAULT_ACCENT='\033[38;5;
|
|
12
|
-
DEFAULT_SECONDARY='\033[38;5;
|
|
13
|
-
DEFAULT_MUTED='\033[38;5;
|
|
14
|
-
DEFAULT_SUCCESS='\033[38;5;
|
|
15
|
-
DEFAULT_ERROR='\033[38;5;
|
|
16
|
-
DEFAULT_WARNING='\033[38;5;
|
|
17
|
-
DEFAULT_PURPLE='\033[38;5;
|
|
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": "
|
|
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": "│",
|