prjct-cli 0.64.1 → 1.1.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,10 +1,310 @@
1
1
  # Changelog
2
2
 
3
- ## [0.64.1] - 2026-02-05
3
+ ## [1.1.0] - 2026-02-05
4
+
5
+ ### Features
6
+
7
+ - visual workflow status command (PRJ-140) (#109)
8
+
9
+
10
+ ## [1.1.0] - 2026-02-05
11
+
12
+ ### Features
13
+
14
+ - **Workflow visualization (PRJ-140)**: New `p. status` command with visual workflow diagram
15
+
16
+ ### Implementation Details
17
+
18
+ Added visual workflow status template showing:
19
+ - ASCII workflow diagram with current position indicator (sync → task → work → done → ship)
20
+ - Subtask tree visualization with status icons (✅/🔄/⬜)
21
+ - Progress bar for subtask completion
22
+ - Paused tasks, queue summary, and recent ships
23
+ - Context staleness indicator from `prjct status --json`
24
+ - Compact mode for single-line status output
25
+
26
+ ### Learnings
27
+
28
+ - Template-first approach: Complex visualizations can be defined entirely in markdown templates without code changes
29
+
30
+ ### Test Plan
31
+
32
+ #### For QA
33
+ 1. Run `prjct sync` to install new status template
34
+ 2. Run `p. status` - verify workflow diagram displays
35
+ 3. Verify subtask tree shows correct status icons
36
+ 4. Test `p. status compact` for single-line output
37
+
38
+ #### For Users
39
+ - New `p. status` command shows visual workflow overview
40
+ - No breaking changes
41
+
42
+
43
+ ## [1.0.0] - 2026-02-05
44
+
45
+ ### Features
46
+
47
+ - add input source tagging for context items (PRJ-102) (#106)
48
+ - add timeout management with configurable limits (PRJ-111) (#104)
49
+ - implement graceful degradation for missing dependencies (PRJ-114) (#103)
50
+ - add .prjct-state.md local state file for persistence (PRJ-112) (#102)
51
+ - hierarchical AGENTS.md resolution and template improvements (PRJ-101) (#99)
52
+ - add staleness detection for CLAUDE.md context (PRJ-120) (#97)
53
+ - complete Linear/JIRA workflow integration (#95)
54
+ - monorepo support with nested PRJCT.md inheritance (PRJ-118) (#94)
55
+ - implement output tiers for cleaner CLI output (#88)
56
+ - modular CLAUDE.md for reduced token usage - PRJ-94 (#86)
57
+ - Add showMetrics config option - PRJ-70 (#82)
58
+ - Selective memory retrieval based on task relevance - PRJ-107 (#81)
59
+ - Add session stats to p. stats command - PRJ-89 (#80)
60
+ - Lazy template loading with TTL cache - PRJ-76 (#79)
61
+ - Add confidence scores to all stored preferences - PRJ-104 (#78)
62
+ - Context diff preview before sync applies - PRJ-125 (#77)
63
+ - Unified output system with new methods - PRJ-130 (#76)
64
+ - Error messages with context and recovery hints - PRJ-131 (#75)
65
+ - Read-before-write enforcement for templates - PRJ-108 (#74)
66
+ - Complete and improve help text documentation - PRJ-133 (#73)
67
+ - Workflow hooks via natural language - PRJ-137 (#72)
68
+ - Subtask progress dashboard with domain colors - PRJ-138 (#71)
69
+ - preserve user customizations during sync - PRJ-115 (#70)
70
+ - automated release pipeline - PRJ-147 (#68)
71
+ - add project indexing and analysis services (PRJ-85, PRJ-87) (#66)
72
+ - metrics display in output (PRJ-68, PRJ-69) (#54)
73
+ - add prjct uninstall command (PRJ-146) (#65)
74
+ - add prjct doctor command (PRJ-117) (#62)
75
+ - smart watch mode - auto-sync on file changes (PRJ-123) (#61)
76
+ - add --quiet flag for silent output (PRJ-97) (#60)
77
+ - interactive onboarding wizard (PRJ-124) (#58)
78
+ - smart context filtering tools for AI agents (PRJ-127) (#57)
79
+ - workflow state machine + bidirectional Linear sync (#55)
80
+ - progress indicators for long-running operations (PRJ-129) (#52)
81
+ - agent activity stream for real-time visibility (PRJ-135) (#51)
82
+ - show explicit next steps after each command (PRJ-136) (#50)
83
+ - multi-agent output Phase 3 - Auto-detect + Continue.dev (PRJ-126) (#49)
84
+ - multi-agent output Phase 2 - Copilot + Windsurf (PRJ-126) (#48)
85
+ - multi-agent context output - Phase 1 (PRJ-126) (#47)
86
+ - bidirectional sync Linear ↔ prjct (PRJ-142) (#46)
87
+ - migrate Linear and JIRA from MCP to native SDK (PRJ-141) (#45)
88
+ - enhance skill system with remote installation and lock file (#44)
89
+ - Windsurf IDE support (PRJ-66) (#43)
90
+ - Google Antigravity support via Skills (PRJ-64) (#42)
91
+ - add mandatory plan-before-action rule to all agents
92
+ - Cursor IDE support (PRJ-63) (#40)
93
+ - Cursor IDE support (PRJ-63)
94
+ - dual platform support - Claude + Gemini (PRJ-62) (#39)
95
+ - 100% agentic task routing with subtask fragmentation
96
+ - add agent/skill orchestrator + agentskills.io integration
97
+ - auto-install MCP servers + individual command skills
98
+ - AI-powered ticket enrichment + 4 tracker integrations v0.33.0
99
+ - JIRA MCP integration for corporate SSO v0.32.0
100
+ - JIRA Integration v0.31.0 (#30)
101
+ - PM Expert auto-enrichment + statusline fixes v0.30.2
102
+ - add p. update command for manual sync
103
+ - modular statusline with Linear integration v0.29.0 (#29)
104
+ - redesign build and release flow for npm
105
+ - modular statusline with Linear integration v0.29.0
106
+ - integrate issue tracker and AI enrichment for project management
107
+ - per-project task filtering for status bar v0.28.0
108
+ - Skill integration system v0.27.0 (#24)
109
+ - Claude Code Skill Integration (Agentic) v0.27.0
110
+ - Complete development cycle with workflow integrity v0.26.0
111
+ - Unified /p:task command + auto-sync notification v0.24.0
112
+ - Branch + PR workflow v0.23.0
113
+ - Notion per-project databases + skill registration v0.22.0
114
+ - add optional Notion integration v0.21.0
115
+ - enhance error handling and permissions management
116
+ - UX/UI Design Agent Integration v0.20.0
117
+ - prompt-builder fix + web removal v0.19.0
118
+ - add TestSprite integration for AI-powered testing
119
+ - CLI-API sync bridge + /p:auth command v0.18.0
120
+ - Claude Code sub-agents integration v0.17.0
121
+ - Security, performance, and architecture improvements v0.16.1
122
+ - Dead code cleanup - remove ~6,600 lines v0.16.0
123
+ - Add MCP server configuration for Context7
124
+ - Template optimization - reduce 39 to 27 commands v0.15.0
125
+ - Refactor Project Management with UUID Migration and Enhanced Context Handling
126
+ - Enhance Project Management with Terminal Dock and UI Improvements
127
+ - Actionable Dashboard + Session Recovery v0.14.0
128
+ - Add MomentumWidget + Code workspace + Weekly reports
129
+ - Ship Deep Sync + Cleanup migrations v0.13.0
130
+ - MigrationGate + bug fixes
131
+ - JSON-First Architecture (Zero Data Loss)
132
+ - Implement project stats API and enhance UI components
133
+ - Enhance project management and terminal functionality in web application
134
+ - Revamp web application with Next.js and enhanced features
135
+ - Introduce new server and web components for prjct
136
+ - Release 0.10.14 with 100% agentic delegation and task tool integration
137
+ - Add ⚡ prjct branding with animated spinner
138
+ - 100% agentic agent assignment - JS=orchestrator, Claude=decisions
139
+ - 100% agentic system - eliminate all procedural keyword-based logic
140
+ - Release 0.10.10 with executable templates and context reduction
141
+ - Release 0.10.8 with minimal output system and reduced CLI verbosity
142
+ - Release 0.10.7 with critical improvements and enhanced context handling
143
+ - Enhanced global CLAUDE.md template for better prjct usage
144
+ - Rich project context for Claude
145
+ - Dynamic project context for Claude
146
+ - Intelligent Agent System & Performance Optimization (v0.10.0)
147
+ - add November 22, 2025 release notes for version 0.9.1
148
+ - context optimization and prompt conciseness
149
+ - add legacy installation detector and cleanup system for pre-v0.8.2 curl installations
150
+ - add system timestamp tools and optimize top 7 templates
151
+ - memory-efficient file operations for large JSONL files
152
+ - simplify installation to npm-only with automatic post-install setup
153
+ - v0.8.0 - conversational interface with zero memorization
154
+ - add comprehensive testing documentation
155
+ - add website component tests and configure vitest workspace
156
+ - migrate test suite to Vitest with coverage reporting
157
+ - add isSupported flag to agent detection for Claude and Terminal agents
158
+ - add setup, migrate-all commands and mark roadmap/status/build as implemented
159
+ - redesign footer layout and add AI policy page with updated navigation
160
+ - add Vercel Analytics and Speed Insights tracking to website
161
+ - simplify workflow to 5 essential commands
162
+ - rebrand from project management to developer momentum tool with streamlined templates and workflows
163
+ - add editor uninstallation and smart project data fusion to prjct init
164
+ - add first-time setup flow and auto-initialization for all commands
165
+ - add auto-migration from v0.1.0 projects during post-install hook
166
+ - add auto-install and clean uninstall functionality with editor tracking
167
+ - add GitHub Packages support and track installed editors in config
168
+ - add Windows compatibility feature card to changelog
169
+ - add automatic npm publication and update detection system
170
+ - publish prjct-cli to npm registry
171
+ - remove bun and homebrew installation methods
172
+ - add natural language interface with English and Spanish support
173
+ - add interactive workflow system with capability detection and installation
174
+ - release v0.3.0 with interactive editor selection and codebase analysis
175
+ - add project management workflows for analyzing, tracking, and fixing tasks
176
+ - update CNAME handling and add 404 page for better routing
177
+ - add cleanup and design commands with advanced options
178
+ - initialize project structure with core files and documentation
4
179
 
5
180
  ### Bug Fixes
6
181
 
7
182
  - generate IDE context files with correct paths and formats (PRJ-122) (#107)
183
+ - improve sync output with summary-first format (PRJ-100) (#100)
184
+ - correct template paths and agent loading in CLAUDE.md (#93)
185
+ - make lefthook hooks portable (no bun required) (#92)
186
+ - skip lefthook in CI environments (#91)
187
+ - use npm instead of bun in lefthook hooks (#90)
188
+ - add pre-commit hooks to prevent commits with lint errors (#89)
189
+ - remove legacy p.*.md commands on sync
190
+ - ensure test isolation in IndexStorage tests
191
+ - remove MCP integrations, keep only Context7 (#87)
192
+ - make Linear/JIRA templates explicitly ignore MCP tools
193
+ - remove MCP inheritance from Linear/JIRA templates
194
+ - standardize confirmation pattern across all commands (#85)
195
+ - LLM debe manejar los prompts, no el CLI - PRJ-149 (#84)
196
+ - Claude over-plans simple commands like p. sync - PRJ-148 (#83)
197
+ - implement silent memory application - PRJ-103 (#69)
198
+ - ignore tar warning in release workflow - PRJ-147
199
+ - remove --provenance (requires public repo) - PRJ-147
200
+ - use Production environment for npm secrets - PRJ-147
201
+ - use semver-sorted tags for version detection - PRJ-147
202
+ - npm auth configuration for CI publish - PRJ-147
203
+ - add Bun setup for test runner in CI - PRJ-147
204
+ - use npm instead of bun for CI tests - PRJ-147
205
+ - remove IDE files from repo - PRJ-144, PRJ-145
206
+ - add --help handler in CLI entry point for CI compatibility
207
+ - update tests for CI compatibility
208
+ - CI workflow - remove unsupported bun reporter flag and fix verification
209
+ - enforce workflow steps in templates (PRJ-143) (#56)
210
+ - add $PRJCT_CLI prefix to relative paths in templates (PRJ-143)
211
+ - use stderr for Linear connection log to not break JSON output
212
+ - show Cursor in same format as other providers in --version
213
+ - Cursor command syntax (PRJ-65) (#41)
214
+ - reduce permission prompts from 50+ to 1 (#38)
215
+ - cleanup legacy files and fix TS error (#37)
216
+ - chore: release v0.35.2
217
+ - connect CLI workflow to CommandExecutor
218
+ - execute orchestration in TypeScript, not just paths (#36)
219
+ - execute orchestration in TypeScript, not just paths
220
+ - remove unsafe 'as unknown' casts (PRJ-54)
221
+ - complete error differentiation (Phase 3) (#35)
222
+ - enable enrichment by default in statusline config
223
+ - self-healing setup in bin/prjct v0.30.1
224
+ - distribution system overhaul - remove fallback, always read from npm root v0.30.0
225
+ - setup.ts auto-execute when run directly
226
+ - remove duplicate statusline version check
227
+ - dynamic path resolution for compiled dist/
228
+ - ALWAYS run postinstall setup, remove global detection
229
+ - detect /opt/homebrew for M1/M2 Macs in postinstall
230
+ - handle bun test warnings in release script
231
+ - include assets/ in npm package + add linear to router
232
+ - add cliVersion to project.json on postinstall
233
+ - resolve symlinks in bin/prjct for npm install
234
+ - agents only write to global storage v0.18.2
235
+ - agents only in global storage + auto-migrate legacy v0.18.1
236
+ - serve.js use start instead of start:prod
237
+ - Remove migration gate from production
238
+ - Restore sidebar collapse + fix server OOM crash
239
+ - Prevent terminal session loss on navigation
240
+ - Terminal responsive & performance issues
241
+ - Server runs in production mode, port 9472
242
+ - Export commands as singleton for direct invocation
243
+ - Update global CLAUDE.md on sync, analyze, and init
244
+ - Add glob dependency and update to modern API
245
+ - critical memory leaks - LRU cache, HTTP cleanup, session expiration
246
+ - ensure command templates always update by removing mtime checks and forcing overwrites
247
+ - resolve critical installation bugs and add auto-update functionality with visual feedback
248
+ - resolve TypeScript errors in website tests
249
+ - remove unused variables to pass lint
250
+ - update vercel build and install commands to use npm prefix syntax
251
+ - remove unused Globe import from Privacy.tsx
252
+ - resolve TypeScript errors in website build
253
+ - remove vercel.json, configure Root Directory in Vercel UI
254
+ - set rootDirectory to website for Vercel
255
+ - use npm --prefix for Vercel build command
256
+ - correct Vercel install command path
257
+ - configure Vercel deployment output directory
258
+ - restore Catppuccin-inspired ASCII art and fix undefined editor names in prjct start command
259
+ - update Badge import path to use correct casing
260
+ - return success exit code for help command
261
+ - remove install script tests from workflow
262
+ - add TERM environment variable to workflow steps
263
+ - add missing WorkflowsGuide.tsx to repository
264
+ - deploy install.sh and setup.sh to website
265
+ - replace inquirer with prompts for better CommonJS compatibility in interactive editor selection
266
+ - resolve installation path errors in setup scripts and add verification tests
267
+ - update init command to use global architecture and fix installer version display
268
+ - update install command URL to use www.prjct.app
269
+ - build(deps-dev): bump vite from 4.5.14 to 7.1.7 in /docs (#1)
270
+
271
+ ### Performance
272
+
273
+ - parallelize agent/skill loading with Promise.all (PRJ-110) (#101)
274
+ - parallelize sync operations for 30-50% speedup (PRJ-116) (#59)
275
+
276
+ ### Refactoring
277
+
278
+ - migrate from ESLint + Prettier to Biome
279
+ - consolidate and optimize CI workflows
280
+ - extract StackDetector from sync-service (PRJ-86) (#64)
281
+ - extract ContextFileGenerator from sync-service (PRJ-88) (#63)
282
+ - differentiate error types in catch blocks - Phase 2 (PRJ-60) (#34)
283
+ - differentiate error types in catch blocks (PRJ-51) (#33)
284
+ - simplify logger level detection logic (#32)
285
+ - consolidate hardcoded paths to use pathManager singleton (#31)
286
+ - type consolidation in core/types/ v0.20.1
287
+ - centralize types in core/types/ following DRY principles
288
+ - restructure command and agent modules for improved organization
289
+ - consolidate command and storage modules for improved structure
290
+ - migrate testing setup to Bun and enhance documentation
291
+ - Update project structure and enhance component functionality
292
+ - update command registry structure and remove unused imports
293
+ - remove open source references and GitHub links
294
+ - move Changelog link from header to footer
295
+ - use centralized helper utilities in commands
296
+ - migrate from GitHub Pages to Vercel deployment
297
+ - remove redundant title from changelog technical details section
298
+ - extract reusable components from Changelog.tsx
299
+ - sync install.sh from scripts directory to website/public and docs
300
+ - remove unnecessary comments from prjct.sh script
301
+ - remove unnecessary comments from command line parsing logic
302
+ - remove comments and unnecessary whitespace across core modules
303
+ - move author data and system fields from local to global config
304
+ - migrate legacy project files to new global structure with auto-migration
305
+ - rename landing directory to website and update deploy workflow paths
306
+ - update build paths from docs to lp directory in deploy workflow
307
+ - improve GitHub Pages deployment workflow with better file handling and directory structure
8
308
 
9
309
 
10
310
  ## [0.64.1] - 2026-02-05
@@ -26859,7 +26859,7 @@ var require_package = __commonJS({
26859
26859
  "package.json"(exports, module) {
26860
26860
  module.exports = {
26861
26861
  name: "prjct-cli",
26862
- version: "0.64.1",
26862
+ version: "1.1.0",
26863
26863
  description: "Context layer for AI agents. Project context for Claude Code, Gemini CLI, and more.",
26864
26864
  main: "core/index.ts",
26865
26865
  bin: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prjct-cli",
3
- "version": "0.64.1",
3
+ "version": "1.1.0",
4
4
  "description": "Context layer for AI agents. Project context for Claude Code, Gemini CLI, and more.",
5
5
  "main": "core/index.ts",
6
6
  "bin": {
@@ -0,0 +1,207 @@
1
+ ---
2
+ allowed-tools: [Read, Bash]
3
+ ---
4
+
5
+ # p. status
6
+
7
+ Visual workflow status showing current position in the prjct lifecycle.
8
+
9
+ ## Step 1: Resolve Project Paths
10
+
11
+ ```bash
12
+ # Get projectId from local config
13
+ cat .prjct/prjct.config.json | grep -o '"projectId"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4
14
+ ```
15
+
16
+ Set `globalPath = ~/.prjct-cli/projects/{projectId}`
17
+
18
+ ## Step 2: Read State and Context
19
+
20
+ READ:
21
+ - `{globalPath}/storage/state.json` → current task, paused, previous
22
+ - `{globalPath}/storage/queue.json` → upcoming tasks
23
+ - `{globalPath}/storage/shipped.json` → recent ships
24
+ - `{globalPath}/project.json` → lastSync timestamp
25
+
26
+ ```bash
27
+ # Get staleness info
28
+ prjct status --json 2>/dev/null || echo '{"isStale": false}'
29
+ ```
30
+
31
+ ## Step 3: Determine Workflow Position
32
+
33
+ Based on state.json, determine current position:
34
+
35
+ ```
36
+ IF no currentTask AND no previousTask:
37
+ position = "ready" # Ready to start (after sync)
38
+ ELSE IF currentTask.status == "active":
39
+ position = "working" # In task
40
+ ELSE IF currentTask.status == "in_review":
41
+ position = "reviewing" # PR open, waiting for merge
42
+ ELSE IF currentTask.status == "shipped":
43
+ position = "shipped" # Ready for next task
44
+ ELSE:
45
+ position = "idle"
46
+ ```
47
+
48
+ ## Step 4: Calculate Progress
49
+
50
+ ```
51
+ IF currentTask.subtasks exists:
52
+ completed = count where status == "completed"
53
+ total = subtasks.length
54
+ percent = (completed / total) * 100
55
+ progressBar = generateBar(percent, 10) # 10 chars wide
56
+ ```
57
+
58
+ Progress bar generation:
59
+ ```
60
+ filled = floor(percent / 10)
61
+ empty = 10 - filled
62
+ bar = "█" × filled + "░" × empty
63
+ ```
64
+
65
+ ## Step 5: Format Subtask Tree
66
+
67
+ ```
68
+ FOR EACH subtask in currentTask.subtasks:
69
+ IF index == currentSubtaskIndex:
70
+ prefix = "🔄" # Current
71
+ ELSE IF subtask.status == "completed":
72
+ prefix = "✅" # Done
73
+ ELSE:
74
+ prefix = "⬜" # Pending
75
+
76
+ connector = (index == last) ? "└─" : "├─"
77
+ OUTPUT: " {connector} {prefix} {subtask.description}"
78
+ ```
79
+
80
+ ---
81
+
82
+ ## Output: Workflow Diagram
83
+
84
+ ```
85
+ 📊 WORKFLOW STATUS
86
+
87
+ ┌─────────────────────────────────────────────────────────┐
88
+ │ │
89
+ │ sync ──▶ task ──▶ [work] ──▶ done ──▶ ship │
90
+ │ ○ ○ ● ○ ○ │
91
+ │ ▲ │
92
+ │ YOU ARE HERE │
93
+ │ │
94
+ └─────────────────────────────────────────────────────────┘
95
+ ```
96
+
97
+ Position indicators:
98
+ - `○` = not active
99
+ - `●` = current position
100
+ - Arrow indicates flow direction
101
+
102
+ ---
103
+
104
+ ## Output: Full Status
105
+
106
+ ```
107
+ 📊 WORKFLOW STATUS
108
+
109
+ ┌─────────────────────────────────────────────────────────┐
110
+ │ sync ──▶ task ──▶ work ──▶ done ──▶ ship │
111
+ │ {s} {t} {w} {d} {h} │
112
+ └─────────────────────────────────────────────────────────┘
113
+
114
+ 🎯 Current: {currentTask.parentDescription}
115
+ Branch: {currentTask.branch}
116
+ Type: {currentTask.type} | Started: {elapsed}
117
+ {IF linearId: "Linear: {linearId}"}
118
+
119
+ Progress: {progressBar} {completed}/{total} subtasks
120
+ {subtask tree}
121
+
122
+ ⏸️ Paused: {pausedTasks[0].description or "none"}
123
+
124
+ 📋 Queue: {queueCount} tasks
125
+ {IF queueCount > 0:}
126
+ • {queue[0].description}
127
+ • {queue[1].description}
128
+ {... up to 3}
129
+
130
+ 🚀 Last ship: {previousTask.description} ({daysSince})
131
+ {IF previousTask.prUrl: "PR: {prUrl}"}
132
+
133
+ 📡 Context: {staleness status}
134
+ Last sync: {timeSinceSync}
135
+ {IF isStale: "⚠️ Run `p. sync` to refresh"}
136
+ ```
137
+
138
+ ---
139
+
140
+ ## Output: Compact (`p. status compact`)
141
+
142
+ Single-line summary:
143
+
144
+ ```
145
+ {position_emoji} {currentTask.description} │ {progressBar} {completed}/{total} │ 📋 {queueCount} │ {staleness_emoji}
146
+ ```
147
+
148
+ Position emojis:
149
+ - 🔄 = working
150
+ - 👀 = reviewing
151
+ - ✅ = shipped
152
+ - 💤 = idle
153
+
154
+ Staleness emojis:
155
+ - ✅ = fresh
156
+ - ⚠️ = stale
157
+
158
+ ---
159
+
160
+ ## Output: No Active Task
161
+
162
+ ```
163
+ 📊 WORKFLOW STATUS
164
+
165
+ ┌─────────────────────────────────────────────────────────┐
166
+ │ sync ──▶ task ──▶ work ──▶ done ──▶ ship │
167
+ │ ● ○ ○ ○ ○ │
168
+ └─────────────────────────────────────────────────────────┘
169
+
170
+ 💤 No active task
171
+
172
+ 📋 Queue: {queueCount} tasks
173
+ {IF queueCount > 0:}
174
+ • {queue[0].description}
175
+
176
+ 🚀 Last ship: {previousTask.description} ({daysSince})
177
+
178
+ Next: `p. task "description"` or `p. task PRJ-XXX`
179
+ ```
180
+
181
+ ---
182
+
183
+ ## Elapsed Time Formatting
184
+
185
+ ```
186
+ IF minutes < 60: "{minutes}m"
187
+ ELSE IF hours < 24: "{hours}h {minutes}m"
188
+ ELSE: "{days}d {hours}h"
189
+ ```
190
+
191
+ ---
192
+
193
+ ## Context Staleness
194
+
195
+ From `prjct status --json`:
196
+ ```json
197
+ {
198
+ "isStale": true,
199
+ "commitsSinceSync": 15,
200
+ "daysSinceSync": 3,
201
+ "significantChanges": ["package.json", "tsconfig.json"]
202
+ }
203
+ ```
204
+
205
+ Display:
206
+ - Fresh (< 10 commits, < 3 days): `✅ Fresh (synced {time} ago)`
207
+ - Stale: `⚠️ Stale ({commits} commits, {days}d) - run p. sync`