trackops 1.0.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/README.md +326 -270
- package/bin/trackops.js +102 -70
- package/lib/config.js +260 -35
- package/lib/control.js +517 -475
- package/lib/env.js +227 -0
- package/lib/i18n.js +61 -53
- package/lib/init.js +135 -46
- package/lib/locale.js +63 -0
- package/lib/opera-bootstrap.js +523 -0
- package/lib/opera.js +319 -170
- package/lib/registry.js +27 -13
- package/lib/release.js +56 -0
- package/lib/resources.js +42 -0
- package/lib/server.js +907 -554
- package/lib/skills.js +148 -124
- package/lib/workspace.js +260 -0
- package/locales/en.json +331 -139
- package/locales/es.json +331 -139
- package/package.json +7 -9
- package/scripts/skills-marketplace-smoke.js +124 -0
- package/scripts/smoke-tests.js +445 -0
- package/scripts/sync-skill-version.js +21 -0
- package/scripts/validate-skill.js +88 -0
- package/skills/trackops/SKILL.md +64 -0
- package/skills/trackops/agents/openai.yaml +3 -0
- package/skills/trackops/references/activation.md +39 -0
- package/skills/trackops/references/troubleshooting.md +34 -0
- package/skills/trackops/references/workflow.md +20 -0
- package/skills/trackops/scripts/bootstrap-trackops.js +201 -0
- package/skills/trackops/skill.json +29 -0
- package/templates/opera/en/agent.md +26 -0
- package/templates/opera/en/genesis.md +79 -0
- package/templates/opera/en/references/autonomy-and-recovery.md +23 -0
- package/templates/opera/en/references/opera-cycle.md +62 -0
- package/templates/opera/en/registry.md +28 -0
- package/templates/opera/en/router.md +39 -0
- package/templates/opera/genesis.md +79 -94
- package/templates/skills/changelog-updater/locales/en/SKILL.md +11 -0
- package/templates/skills/commiter/locales/en/SKILL.md +11 -0
- package/templates/skills/project-starter-skill/locales/en/SKILL.md +24 -0
- package/ui/css/panels.css +956 -953
- package/ui/index.html +1 -1
- package/ui/js/api.js +211 -194
- package/ui/js/app.js +200 -199
- package/ui/js/i18n.js +14 -0
- package/ui/js/onboarding.js +439 -437
- package/ui/js/state.js +130 -129
- package/ui/js/utils.js +175 -172
- package/ui/js/views/board.js +255 -254
- package/ui/js/views/execution.js +256 -256
- package/ui/js/views/insights.js +340 -339
- package/ui/js/views/overview.js +365 -364
- package/ui/js/views/settings.js +340 -202
- package/ui/js/views/sidebar.js +131 -132
- package/ui/js/views/skills.js +163 -162
- package/ui/js/views/tasks.js +406 -405
- package/ui/js/views/topbar.js +239 -183
package/locales/en.json
CHANGED
|
@@ -1,142 +1,334 @@
|
|
|
1
|
-
{
|
|
2
|
-
"status.pending": "Pending",
|
|
3
|
-
"status.in_progress": "In progress",
|
|
4
|
-
"status.in_review": "In review",
|
|
5
|
-
"status.blocked": "Blocked",
|
|
6
|
-
"status.completed": "Completed",
|
|
7
|
-
"status.cancelled": "Cancelled",
|
|
8
|
-
|
|
9
|
-
"doc.header.taskPlan": "{projectName} — Task Plan (task_plan.md)",
|
|
10
|
-
"doc.header.progress": "{projectName} — Progress Log (progress.md)",
|
|
11
|
-
"doc.header.findings": "{projectName} — Findings Library (findings.md)",
|
|
12
|
-
"doc.autogenerated": "AUTO-GENERATED from `project_control.json`. Do not edit manually.",
|
|
13
|
-
|
|
14
|
-
"doc.section.operativeState": "Operative State",
|
|
15
|
-
"doc.section.externalDecisions": "Pending external decisions",
|
|
16
|
-
"doc.section.readyTasks": "Next ready tasks",
|
|
17
|
-
"doc.section.currentState": "Current State",
|
|
18
|
-
"doc.section.executionSummary": "Execution Summary",
|
|
19
|
-
"doc.section.activeTasks": "Active tasks",
|
|
20
|
-
"doc.section.reviewTasks": "Tasks in review",
|
|
21
|
-
"doc.section.activeBlockers": "Active blockers",
|
|
22
|
-
"doc.section.recentActivity": "Recent activity",
|
|
23
|
-
"doc.section.milestones": "Registered Milestones",
|
|
24
|
-
"doc.section.openFindings": "Open Findings",
|
|
25
|
-
"doc.section.resolvedFindings": "Resolved Findings",
|
|
26
|
-
"doc.section.phase": "Phase {phaseId} — {phaseLabel}",
|
|
27
|
-
|
|
28
|
-
"doc.label.activePhase": "Active phase",
|
|
29
|
-
"doc.label.currentFocus": "Current focus",
|
|
30
|
-
"doc.label.deliveryTarget": "Delivery target",
|
|
31
|
-
"doc.label.blockers": "Blockers",
|
|
32
|
-
"doc.label.nextStep": "Recommended next step",
|
|
33
|
-
"doc.label.phase": "Phase",
|
|
34
|
-
"doc.label.lastTest": "Last test",
|
|
35
|
-
"doc.label.nextStepShort": "Next step",
|
|
36
|
-
"doc.label.lastUpdate": "Last operational update",
|
|
37
|
-
"doc.label.progress": "Progress: {completed}/{total} required tasks completed",
|
|
38
|
-
"doc.label.phaseActive": "Active",
|
|
39
|
-
"doc.label.phaseClosed": "Closed",
|
|
40
|
-
"doc.label.phasePending": "Pending",
|
|
41
|
-
"doc.label.totalTasks": "Total tasks",
|
|
42
|
-
"doc.label.completedTasks": "Completed",
|
|
43
|
-
"doc.label.inProgressTasks": "In progress",
|
|
44
|
-
"doc.label.inReviewTasks": "In review",
|
|
45
|
-
"doc.label.pendingTasks": "Pending",
|
|
46
|
-
"doc.label.blockedTasks": "Blocked",
|
|
47
|
-
"doc.label.findingOpen": "open",
|
|
48
|
-
"doc.label.findingResolved": "resolved",
|
|
49
|
-
"doc.label.findingStatus": "Status",
|
|
50
|
-
"doc.label.findingDetail": "Detail",
|
|
51
|
-
"doc.label.findingImpact": "Impact",
|
|
52
|
-
|
|
53
|
-
"doc.label.noBlockers": "None",
|
|
54
|
-
"doc.label.noOpenTasks": "No open tasks",
|
|
55
|
-
"doc.label.noReadyTasks": "No ready tasks; check blockers.",
|
|
56
|
-
"doc.label.noTasks": "No registered tasks",
|
|
57
|
-
"doc.label.noFindings": "No open findings.",
|
|
58
|
-
"doc.label.noResolvedFindings": "No resolved findings on record.",
|
|
59
|
-
"doc.label.noDecisions": "None",
|
|
60
|
-
"doc.label.noActiveTasks": "No tasks in progress at the moment.",
|
|
61
|
-
"doc.label.noReviewTasks": "No tasks in review.",
|
|
62
|
-
"doc.label.noActiveBlockers": "No active blockers.",
|
|
63
|
-
"doc.label.noHistory": "No recorded movements.",
|
|
64
|
-
|
|
65
|
-
"cli.runtimeUpdated": "Runtime updated at {path}",
|
|
66
|
-
"cli.docsSynced": "Operational documentation synced.",
|
|
67
|
-
"cli.taskUpdated": "Task '{taskId}' updated with action '{action}'.",
|
|
68
|
-
"cli.taskNotFound": "Task '{taskId}' not found.",
|
|
69
|
-
"cli.actionNotSupported": "Unsupported action: {action}",
|
|
70
|
-
"cli.mustProvideActionAndId": "You must specify action and task id.",
|
|
71
|
-
"cli.noReadyTasks": "No ready tasks. Check blockers and dependencies.",
|
|
72
|
-
"cli.hooksInstalled": "Git hooks installed in .githooks",
|
|
73
|
-
"cli.hooksError": "Could not configure core.hooksPath.",
|
|
74
|
-
"cli.noProjectFound": "No project_control.json found in this directory or parents.",
|
|
75
|
-
"cli.emptyNote": "Empty note.",
|
|
76
|
-
"cli.undocumentedBlocker": "Undocumented blocker.",
|
|
77
|
-
|
|
78
|
-
"cli.status.title": "{projectName} — Operational Control",
|
|
79
|
-
"cli.status.focus": "Focus: {focus}",
|
|
80
|
-
"cli.status.activePhase": "Active phase: {phaseId} — {phaseLabel}",
|
|
81
|
-
"cli.status.tasks": "Tasks: {completed} completed, {inProgress} in progress, {inReview} in review, {pending} pending, {blocked} blocked",
|
|
82
|
-
"cli.status.readyTasks": "Next ready tasks:",
|
|
83
|
-
"cli.status.noReadyTasks": "No ready tasks; check blockers or dependencies.",
|
|
84
|
-
"cli.status.blockers": "Blockers:",
|
|
85
|
-
"cli.status.noBlockers": "No blockers.",
|
|
86
|
-
"cli.status.decisions": "External decisions:",
|
|
87
|
-
"cli.status.noDecisions": "None.",
|
|
88
|
-
"cli.status.repo": "Repository:",
|
|
89
|
-
"cli.status.branch": "Branch: {branch} | Tree: {treeStatus}",
|
|
90
|
-
"cli.status.treeClean": "clean",
|
|
91
|
-
"cli.status.treeDirty": "dirty ({staged} staged, {unstaged} unstaged, {untracked} untracked)",
|
|
92
|
-
"cli.status.lastCommit": "Last commit: {hash} {subject}",
|
|
93
|
-
"cli.status.divergence": "Divergence: ahead {ahead}, behind {behind}",
|
|
94
|
-
"cli.status.runtime": "Runtime: {path}",
|
|
95
|
-
"cli.status.docsSynced": "Docs synced: {status}",
|
|
96
|
-
"cli.status.docsSyncedYes": "yes",
|
|
97
|
-
"cli.status.docsSyncedNo": "no ({files})",
|
|
98
|
-
|
|
99
|
-
"cli.next.phase": "phase",
|
|
100
|
-
"cli.next.priority": "priority",
|
|
101
|
-
"cli.next.stream": "stream",
|
|
102
|
-
"cli.next.summary": "summary",
|
|
103
|
-
|
|
104
|
-
"cli.help.title": "Project operational control",
|
|
105
|
-
"cli.help.usage": "Usage:",
|
|
106
|
-
|
|
107
|
-
"server.ready": "Ops dashboard ready at http://{host}:{port}",
|
|
108
|
-
"server.
|
|
109
|
-
"server.
|
|
110
|
-
"server.
|
|
111
|
-
"server.
|
|
112
|
-
"server.
|
|
113
|
-
"server.
|
|
114
|
-
"server.
|
|
115
|
-
"server.
|
|
116
|
-
"server.
|
|
117
|
-
"server.
|
|
118
|
-
|
|
119
|
-
"
|
|
120
|
-
"
|
|
121
|
-
"
|
|
122
|
-
"
|
|
123
|
-
"
|
|
124
|
-
"
|
|
125
|
-
"
|
|
126
|
-
"
|
|
127
|
-
"
|
|
128
|
-
|
|
129
|
-
"
|
|
130
|
-
|
|
131
|
-
"
|
|
132
|
-
"
|
|
133
|
-
"
|
|
134
|
-
|
|
135
|
-
"
|
|
136
|
-
"
|
|
137
|
-
"
|
|
138
|
-
"
|
|
1
|
+
{
|
|
2
|
+
"status.pending": "Pending",
|
|
3
|
+
"status.in_progress": "In progress",
|
|
4
|
+
"status.in_review": "In review",
|
|
5
|
+
"status.blocked": "Blocked",
|
|
6
|
+
"status.completed": "Completed",
|
|
7
|
+
"status.cancelled": "Cancelled",
|
|
8
|
+
|
|
9
|
+
"doc.header.taskPlan": "{projectName} — Task Plan (task_plan.md)",
|
|
10
|
+
"doc.header.progress": "{projectName} — Progress Log (progress.md)",
|
|
11
|
+
"doc.header.findings": "{projectName} — Findings Library (findings.md)",
|
|
12
|
+
"doc.autogenerated": "AUTO-GENERATED from `project_control.json`. Do not edit manually.",
|
|
13
|
+
|
|
14
|
+
"doc.section.operativeState": "Operative State",
|
|
15
|
+
"doc.section.externalDecisions": "Pending external decisions",
|
|
16
|
+
"doc.section.readyTasks": "Next ready tasks",
|
|
17
|
+
"doc.section.currentState": "Current State",
|
|
18
|
+
"doc.section.executionSummary": "Execution Summary",
|
|
19
|
+
"doc.section.activeTasks": "Active tasks",
|
|
20
|
+
"doc.section.reviewTasks": "Tasks in review",
|
|
21
|
+
"doc.section.activeBlockers": "Active blockers",
|
|
22
|
+
"doc.section.recentActivity": "Recent activity",
|
|
23
|
+
"doc.section.milestones": "Registered Milestones",
|
|
24
|
+
"doc.section.openFindings": "Open Findings",
|
|
25
|
+
"doc.section.resolvedFindings": "Resolved Findings",
|
|
26
|
+
"doc.section.phase": "Phase {phaseId} — {phaseLabel}",
|
|
27
|
+
|
|
28
|
+
"doc.label.activePhase": "Active phase",
|
|
29
|
+
"doc.label.currentFocus": "Current focus",
|
|
30
|
+
"doc.label.deliveryTarget": "Delivery target",
|
|
31
|
+
"doc.label.blockers": "Blockers",
|
|
32
|
+
"doc.label.nextStep": "Recommended next step",
|
|
33
|
+
"doc.label.phase": "Phase",
|
|
34
|
+
"doc.label.lastTest": "Last test",
|
|
35
|
+
"doc.label.nextStepShort": "Next step",
|
|
36
|
+
"doc.label.lastUpdate": "Last operational update",
|
|
37
|
+
"doc.label.progress": "Progress: {completed}/{total} required tasks completed",
|
|
38
|
+
"doc.label.phaseActive": "Active",
|
|
39
|
+
"doc.label.phaseClosed": "Closed",
|
|
40
|
+
"doc.label.phasePending": "Pending",
|
|
41
|
+
"doc.label.totalTasks": "Total tasks",
|
|
42
|
+
"doc.label.completedTasks": "Completed",
|
|
43
|
+
"doc.label.inProgressTasks": "In progress",
|
|
44
|
+
"doc.label.inReviewTasks": "In review",
|
|
45
|
+
"doc.label.pendingTasks": "Pending",
|
|
46
|
+
"doc.label.blockedTasks": "Blocked",
|
|
47
|
+
"doc.label.findingOpen": "open",
|
|
48
|
+
"doc.label.findingResolved": "resolved",
|
|
49
|
+
"doc.label.findingStatus": "Status",
|
|
50
|
+
"doc.label.findingDetail": "Detail",
|
|
51
|
+
"doc.label.findingImpact": "Impact",
|
|
52
|
+
|
|
53
|
+
"doc.label.noBlockers": "None",
|
|
54
|
+
"doc.label.noOpenTasks": "No open tasks",
|
|
55
|
+
"doc.label.noReadyTasks": "No ready tasks; check blockers.",
|
|
56
|
+
"doc.label.noTasks": "No registered tasks",
|
|
57
|
+
"doc.label.noFindings": "No open findings.",
|
|
58
|
+
"doc.label.noResolvedFindings": "No resolved findings on record.",
|
|
59
|
+
"doc.label.noDecisions": "None",
|
|
60
|
+
"doc.label.noActiveTasks": "No tasks in progress at the moment.",
|
|
61
|
+
"doc.label.noReviewTasks": "No tasks in review.",
|
|
62
|
+
"doc.label.noActiveBlockers": "No active blockers.",
|
|
63
|
+
"doc.label.noHistory": "No recorded movements.",
|
|
64
|
+
|
|
65
|
+
"cli.runtimeUpdated": "Runtime updated at {path}",
|
|
66
|
+
"cli.docsSynced": "Operational documentation synced.",
|
|
67
|
+
"cli.taskUpdated": "Task '{taskId}' updated with action '{action}'.",
|
|
68
|
+
"cli.taskNotFound": "Task '{taskId}' not found.",
|
|
69
|
+
"cli.actionNotSupported": "Unsupported action: {action}",
|
|
70
|
+
"cli.mustProvideActionAndId": "You must specify action and task id.",
|
|
71
|
+
"cli.noReadyTasks": "No ready tasks. Check blockers and dependencies.",
|
|
72
|
+
"cli.hooksInstalled": "Git hooks installed in .githooks",
|
|
73
|
+
"cli.hooksError": "Could not configure core.hooksPath.",
|
|
74
|
+
"cli.noProjectFound": "No project_control.json found in this directory or parents.",
|
|
75
|
+
"cli.emptyNote": "Empty note.",
|
|
76
|
+
"cli.undocumentedBlocker": "Undocumented blocker.",
|
|
77
|
+
|
|
78
|
+
"cli.status.title": "{projectName} — Operational Control",
|
|
79
|
+
"cli.status.focus": "Focus: {focus}",
|
|
80
|
+
"cli.status.activePhase": "Active phase: {phaseId} — {phaseLabel}",
|
|
81
|
+
"cli.status.tasks": "Tasks: {completed} completed, {inProgress} in progress, {inReview} in review, {pending} pending, {blocked} blocked",
|
|
82
|
+
"cli.status.readyTasks": "Next ready tasks:",
|
|
83
|
+
"cli.status.noReadyTasks": "No ready tasks; check blockers or dependencies.",
|
|
84
|
+
"cli.status.blockers": "Blockers:",
|
|
85
|
+
"cli.status.noBlockers": "No blockers.",
|
|
86
|
+
"cli.status.decisions": "External decisions:",
|
|
87
|
+
"cli.status.noDecisions": "None.",
|
|
88
|
+
"cli.status.repo": "Repository:",
|
|
89
|
+
"cli.status.branch": "Branch: {branch} | Tree: {treeStatus}",
|
|
90
|
+
"cli.status.treeClean": "clean",
|
|
91
|
+
"cli.status.treeDirty": "dirty ({staged} staged, {unstaged} unstaged, {untracked} untracked)",
|
|
92
|
+
"cli.status.lastCommit": "Last commit: {hash} {subject}",
|
|
93
|
+
"cli.status.divergence": "Divergence: ahead {ahead}, behind {behind}",
|
|
94
|
+
"cli.status.runtime": "Runtime: {path}",
|
|
95
|
+
"cli.status.docsSynced": "Docs synced: {status}",
|
|
96
|
+
"cli.status.docsSyncedYes": "yes",
|
|
97
|
+
"cli.status.docsSyncedNo": "no ({files})",
|
|
98
|
+
|
|
99
|
+
"cli.next.phase": "phase",
|
|
100
|
+
"cli.next.priority": "priority",
|
|
101
|
+
"cli.next.stream": "stream",
|
|
102
|
+
"cli.next.summary": "summary",
|
|
103
|
+
|
|
104
|
+
"cli.help.title": "Project operational control",
|
|
105
|
+
"cli.help.usage": "Usage:",
|
|
106
|
+
|
|
107
|
+
"server.ready": "Ops dashboard ready at http://{host}:{port}",
|
|
108
|
+
"server.bannerTitle": "Serving!",
|
|
109
|
+
"server.localUrl": "- Local: {url}",
|
|
110
|
+
"server.networkUrl": "- Network: {url}",
|
|
111
|
+
"server.networkAltUrl": "- Network alt: {url}",
|
|
112
|
+
"server.copiedToClipboard": "Copied local address to clipboard!",
|
|
113
|
+
"server.clipboardUnavailable": "Could not copy the local address to the clipboard.",
|
|
114
|
+
"server.portFallback": "Requested port {requestedPort} was busy; using {actualPort}.",
|
|
115
|
+
"server.portBusyStrict": "Requested port {port} is already in use.",
|
|
116
|
+
"server.portSearchExhausted": "Could not find a free port starting at {port} after {limit} attempts.",
|
|
117
|
+
"server.invalidPort": "Invalid port: {value}.",
|
|
118
|
+
"server.noNetworkAddress": "- Network: no usable external address detected.",
|
|
119
|
+
"server.defaultProject": "Default project: {name} ({id})",
|
|
120
|
+
"server.titleRequired": "Title is required.",
|
|
121
|
+
"server.taskCreatedNote": "Task created from dashboard.",
|
|
122
|
+
"server.taskEditedNote": "Task edited from dashboard.",
|
|
123
|
+
"server.payloadTooLarge": "Payload too large (>{limit}).",
|
|
124
|
+
"server.invalidJson": "Invalid JSON.",
|
|
125
|
+
"server.sessionNotFound": "Session not found.",
|
|
126
|
+
"server.noActiveSession": "No active session to start stream.",
|
|
127
|
+
"server.commandRequired": "A command is required.",
|
|
128
|
+
"server.projectNotResolved": "Could not resolve project.",
|
|
129
|
+
"server.invalidLocale": "Invalid locale: {value}.",
|
|
130
|
+
|
|
131
|
+
"init.welcome": "Project initialized with trackops.",
|
|
132
|
+
"init.opsExists": "Ops is already installed in this project.",
|
|
133
|
+
"init.created": "Created {file}",
|
|
134
|
+
"init.updated": "Updated {file}",
|
|
135
|
+
"init.registered": "Project registered in the global portfolio.",
|
|
136
|
+
"init.defaultFocus": "Operational project bootstrap",
|
|
137
|
+
"init.defaultTarget": "Project managed with trackops",
|
|
138
|
+
"init.defaultTaskTitle": "Set up project with trackops",
|
|
139
|
+
"init.defaultTaskSummary": "Verify initial structure, adjust phases and confirm operational integration.",
|
|
140
|
+
|
|
141
|
+
"opera.installed": "OPERA methodology installed (v{version}).",
|
|
142
|
+
"opera.alreadyInstalled": "OPERA is already installed in this project (v{version}).",
|
|
143
|
+
"opera.notInstalled": "OPERA is not installed in this project.",
|
|
144
|
+
"opera.upgraded": "OPERA upgraded to v{version}.",
|
|
145
|
+
"opera.primitiveDetected": "Existing OPERA installation detected (not managed by Ops).",
|
|
146
|
+
|
|
147
|
+
"skill.installed": "Skill '{name}' installed.",
|
|
148
|
+
"skill.removed": "Skill '{name}' uninstalled.",
|
|
149
|
+
"skill.notFound": "Skill '{name}' not found in the catalog.",
|
|
150
|
+
"skill.alreadyInstalled": "Skill '{name}' is already installed.",
|
|
139
151
|
"skill.notInstalled": "Skill '{name}' is not installed.",
|
|
140
152
|
"skill.catalogTitle": "Available skills:",
|
|
141
|
-
"skill.listTitle": "Installed skills:"
|
|
153
|
+
"skill.listTitle": "Installed skills:",
|
|
154
|
+
|
|
155
|
+
"cli.status.bootstrap": "Bootstrap: {status} | Locale: {locale}",
|
|
156
|
+
|
|
157
|
+
"bootstrap.header": "OPERA bootstrap",
|
|
158
|
+
"bootstrap.subtitle": "Confirm the core project context to turn OPERA from templates into a real operating framework.",
|
|
159
|
+
"bootstrap.question.desiredOutcome": "Desired outcome",
|
|
160
|
+
"bootstrap.question.externalServices": "External services (comma separated)",
|
|
161
|
+
"bootstrap.question.sourceOfTruth": "Source of truth",
|
|
162
|
+
"bootstrap.question.payload": "Delivery payload / target",
|
|
163
|
+
"bootstrap.question.behaviorRules": "Behavior rules (semicolon separated)",
|
|
164
|
+
"bootstrap.question.inputSchema": "Input schema JSON",
|
|
165
|
+
"bootstrap.question.outputSchema": "Output schema JSON",
|
|
166
|
+
"bootstrap.question.invariants": "Architectural invariants (semicolon separated)",
|
|
167
|
+
"bootstrap.question.pipeline": "Pipeline steps (semicolon separated)",
|
|
168
|
+
"bootstrap.question.templates": "Template files (comma separated)",
|
|
169
|
+
"bootstrap.question.repoTasks": "Include optional repo tasks? [y/n]",
|
|
170
|
+
"bootstrap.completed": "OPERA bootstrap completed.",
|
|
171
|
+
"bootstrap.pending": "OPERA bootstrap saved as pending. Resume with 'trackops opera bootstrap --resume'.",
|
|
172
|
+
"bootstrap.infer.envSourceHint": "Environment files detected",
|
|
173
|
+
"bootstrap.noneDefined": "Not defined yet.",
|
|
174
|
+
"bootstrap.pendingValue": "Pending definition.",
|
|
175
|
+
"bootstrap.servicePending": "pending",
|
|
176
|
+
"bootstrap.defaultFocus": "Complete OPERA bootstrap",
|
|
177
|
+
"bootstrap.defaultTarget": "Target delivery pending definition",
|
|
178
|
+
"bootstrap.blocker.missingData": "Core bootstrap data is still missing.",
|
|
179
|
+
"bootstrap.history.seeded": "Seeded by OPERA bootstrap.",
|
|
180
|
+
"bootstrap.acceptance.discovery": "Discovery questions answered.",
|
|
181
|
+
"bootstrap.acceptance.schema": "Input/output schema defined in genesis.md.",
|
|
182
|
+
"bootstrap.acceptance.rules": "Behavior rules documented.",
|
|
183
|
+
"bootstrap.acceptance.plan": "Plan reviewed and accepted.",
|
|
184
|
+
"bootstrap.acceptance.env": "Required credentials verified.",
|
|
185
|
+
"bootstrap.acceptance.tests": "Connectivity checks passing.",
|
|
186
|
+
"bootstrap.acceptance.shape": "External shapes validated against genesis.md.",
|
|
187
|
+
"bootstrap.acceptance.findings": "Findings documented.",
|
|
188
|
+
"bootstrap.acceptance.sops": "SOPs documented.",
|
|
189
|
+
"bootstrap.acceptance.tools": "Core tools implemented.",
|
|
190
|
+
"bootstrap.acceptance.graph": "Pipeline graph documented.",
|
|
191
|
+
"bootstrap.acceptance.integration": "Integration tests passing.",
|
|
192
|
+
"bootstrap.acceptance.outputs": "Outputs validated against templates.",
|
|
193
|
+
"bootstrap.acceptance.delivery": "Delivery format reviewed.",
|
|
194
|
+
"bootstrap.acceptance.ui": "UI review completed when applicable.",
|
|
195
|
+
"bootstrap.acceptance.tmp": ".tmp cleaned.",
|
|
196
|
+
"bootstrap.acceptance.deploy": "Deployment completed.",
|
|
197
|
+
"bootstrap.acceptance.triggers": "Triggers configured.",
|
|
198
|
+
"bootstrap.acceptance.smoke": "Smoke test passing.",
|
|
199
|
+
"bootstrap.task.bootstrap.title": "Complete OPERA bootstrap",
|
|
200
|
+
"bootstrap.task.bootstrap.summary": "Turn the installed OPERA structure into a project-specific operating model.",
|
|
201
|
+
"bootstrap.task.prove.title": "Validate integrations",
|
|
202
|
+
"bootstrap.task.prove.summary": "Verify credentials, connectivity, and response shapes before building further.",
|
|
203
|
+
"bootstrap.task.structure.title": "Structure the system",
|
|
204
|
+
"bootstrap.task.structure.summary": "Document SOPs, implement tools, and capture the dependency graph.",
|
|
205
|
+
"bootstrap.task.refine.title": "Refine delivery",
|
|
206
|
+
"bootstrap.task.refine.summary": "Validate outputs against templates and polish the delivery format.",
|
|
207
|
+
"bootstrap.task.automate.title": "Automate runtime",
|
|
208
|
+
"bootstrap.task.automate.summary": "Configure deployment, triggers, and smoke validation.",
|
|
209
|
+
"bootstrap.task.repoReadme.title": "Align README with OPERA context",
|
|
210
|
+
"bootstrap.task.repoReadme.summary": "Review whether README should reflect the OPERA bootstrap.",
|
|
211
|
+
"bootstrap.task.repoLicense.title": "Review license policy",
|
|
212
|
+
"bootstrap.task.repoLicense.summary": "Confirm whether license metadata must be updated.",
|
|
213
|
+
"bootstrap.task.repoChangelog.title": "Define changelog policy",
|
|
214
|
+
"bootstrap.task.repoChangelog.summary": "Decide how CHANGELOG.md should be maintained in this project.",
|
|
215
|
+
"bootstrap.task.repoGithub.title": "Review GitHub governance tasks",
|
|
216
|
+
"bootstrap.task.repoGithub.summary": "Check whether repository automation or governance tasks should be enabled.",
|
|
217
|
+
"bootstrap.field.desiredOutcome": "Desired outcome",
|
|
218
|
+
"bootstrap.field.sourceOfTruth": "Source of truth",
|
|
219
|
+
"bootstrap.field.payload": "Payload",
|
|
220
|
+
"bootstrap.field.inputSchema": "Input schema",
|
|
221
|
+
"bootstrap.field.outputSchema": "Output schema",
|
|
222
|
+
"bootstrap.decisionImpact": "Required to complete the OPERA bootstrap.",
|
|
223
|
+
"bootstrap.finding.genesisConflictTitle": "Genesis requires manual review",
|
|
224
|
+
"bootstrap.finding.genesisConflictDetail": "TrackOps detected a non-template genesis.md and stopped automatic overwrite.",
|
|
225
|
+
"bootstrap.finding.genesisConflictImpact": "Bootstrap cannot be completed until the existing constitution is reviewed.",
|
|
226
|
+
|
|
227
|
+
"ui.nav.overview": "Overview",
|
|
228
|
+
"ui.nav.tasks": "Tasks",
|
|
229
|
+
"ui.nav.board": "Board",
|
|
230
|
+
"ui.nav.execution": "Execution",
|
|
231
|
+
"ui.nav.skills": "Skills",
|
|
232
|
+
"ui.nav.insights": "Insights",
|
|
233
|
+
"ui.nav.settings": "Settings",
|
|
234
|
+
"ui.nav.help": "Help & Tour",
|
|
235
|
+
"ui.nav.logs": "Logs",
|
|
236
|
+
"ui.sidebar.aria": "Main navigation",
|
|
237
|
+
"ui.sidebar.home": "TrackOps — Go home",
|
|
238
|
+
"ui.sidebar.menu": "Menu",
|
|
239
|
+
"ui.sidebar.general": "General",
|
|
240
|
+
"ui.sidebar.pendingCount": "{count} pending",
|
|
241
|
+
"ui.sidebar.tasksBadge": "{count} tasks",
|
|
242
|
+
"ui.sidebar.errors": "errors",
|
|
243
|
+
"ui.topbar.openMenu": "Open menu",
|
|
244
|
+
"ui.topbar.searchAria": "Search tasks",
|
|
245
|
+
"ui.topbar.searchPlaceholder": "Search tasks...",
|
|
246
|
+
"ui.topbar.timer": "Time tracking",
|
|
247
|
+
"ui.topbar.syncAria": "Sync documentation",
|
|
248
|
+
"ui.topbar.sync": "Sync",
|
|
249
|
+
"ui.topbar.refresh": "Refresh state",
|
|
250
|
+
"ui.topbar.repoClean": "Clean repo",
|
|
251
|
+
"ui.topbar.repoDirty": "{staged}s {unstaged}u {untracked}?",
|
|
252
|
+
"ui.topbar.noBranch": "no branch",
|
|
253
|
+
"ui.topbar.unavailable": "unavailable",
|
|
254
|
+
"ui.topbar.activeProject": "Active project",
|
|
255
|
+
"ui.topbar.language": "Language",
|
|
256
|
+
"ui.topbar.languageAria": "Select dashboard language",
|
|
257
|
+
"ui.topbar.languageEs": "ES",
|
|
258
|
+
"ui.topbar.languageEn": "EN",
|
|
259
|
+
"ui.topbar.localeUpdated": "Language updated.",
|
|
260
|
+
"ui.topbar.syncing": "Syncing...",
|
|
261
|
+
"ui.topbar.synced": "Documentation synced.",
|
|
262
|
+
"ui.onboarding.prev": "Previous",
|
|
263
|
+
"ui.onboarding.next": "Next ->",
|
|
264
|
+
"ui.onboarding.start": "Start",
|
|
265
|
+
"ui.onboarding.step": "Step {current} of {total}",
|
|
266
|
+
"ui.onboarding.welcome.title": "Welcome to TrackOps",
|
|
267
|
+
"ui.onboarding.welcome.desc": "Your local operating engine for development. This tour only takes a couple of minutes.",
|
|
268
|
+
"ui.onboarding.nav.title": "Main navigation",
|
|
269
|
+
"ui.onboarding.nav.desc": "The sidebar takes you across the main views and highlights pending work.",
|
|
270
|
+
"ui.onboarding.kpi.title": "Instant metrics",
|
|
271
|
+
"ui.onboarding.kpi.desc": "The KPI cards summarize open, completed, blocked, and in-review work in real time.",
|
|
272
|
+
"ui.onboarding.activity.title": "Weekly activity",
|
|
273
|
+
"ui.onboarding.activity.desc": "This chart shows recent state changes so you can spot activity spikes and dead zones.",
|
|
274
|
+
"ui.onboarding.progress.title": "Global progress",
|
|
275
|
+
"ui.onboarding.progress.desc": "The donut breaks down task completion across the project.",
|
|
276
|
+
"ui.onboarding.time.title": "Time tracking",
|
|
277
|
+
"ui.onboarding.time.desc": "Track time per task and keep those records for later analysis.",
|
|
278
|
+
"ui.onboarding.search.title": "Global search",
|
|
279
|
+
"ui.onboarding.search.desc": "Filter tasks from anywhere and switch active projects from the top bar.",
|
|
280
|
+
"ui.onboarding.board.title": "Kanban board",
|
|
281
|
+
"ui.onboarding.board.desc": "Drag cards across columns to update state and regenerate operational docs.",
|
|
282
|
+
"ui.onboarding.tasks.title": "Task editor",
|
|
283
|
+
"ui.onboarding.tasks.desc": "Select a task to edit status, priority, acceptance criteria, and notes.",
|
|
284
|
+
"ui.onboarding.execution.title": "Integrated console",
|
|
285
|
+
"ui.onboarding.execution.desc": "Run shell commands directly from the dashboard.",
|
|
286
|
+
"ui.onboarding.insights.title": "Project insights",
|
|
287
|
+
"ui.onboarding.insights.desc": "Review health, time tracking, progress by phase, and recent activity.",
|
|
288
|
+
"ui.onboarding.skills.title": "Skill hub",
|
|
289
|
+
"ui.onboarding.skills.desc": "Install new capabilities for your copilot from the integrated catalog.",
|
|
290
|
+
"ui.onboarding.theme.title": "Light / dark theme",
|
|
291
|
+
"ui.onboarding.theme.desc": "Switch themes without leaving the dashboard.",
|
|
292
|
+
"ui.onboarding.done.title": "All set",
|
|
293
|
+
"ui.onboarding.done.desc": "You can relaunch this tour at any time from Help & Tour in the sidebar.",
|
|
294
|
+
|
|
295
|
+
"ui.execution.eyebrow": "Execution",
|
|
296
|
+
"ui.execution.title": "Command Console",
|
|
297
|
+
"ui.execution.run": "Run",
|
|
298
|
+
"ui.execution.command": "Command",
|
|
299
|
+
"ui.execution.commandAria": "Enter the command to run",
|
|
300
|
+
"ui.execution.runButtonAria": "Run command",
|
|
301
|
+
"ui.execution.quickTitle": "Quick commands",
|
|
302
|
+
"ui.execution.runQuick": "Run {label}",
|
|
303
|
+
"ui.execution.sessions": "Sessions",
|
|
304
|
+
"ui.execution.noSessions": "No active sessions.",
|
|
305
|
+
"ui.execution.noSessionTitle": "ops@terminal — no active session",
|
|
306
|
+
"ui.execution.stopAria": "Stop process",
|
|
307
|
+
"ui.execution.stop": "Stop",
|
|
308
|
+
"ui.execution.output": "Command output",
|
|
309
|
+
"ui.execution.outputPlaceholder": "# Run a command to see its output here...",
|
|
310
|
+
"ui.execution.started": "Started",
|
|
311
|
+
"ui.execution.running": "Running...",
|
|
312
|
+
"ui.execution.quick.status": "status",
|
|
313
|
+
"ui.execution.quick.sync": "sync docs",
|
|
314
|
+
"ui.execution.quick.next": "next tasks",
|
|
315
|
+
"ui.execution.quick.repo": "refresh repo",
|
|
316
|
+
"ui.settings.workspaceTitle": "Workspace",
|
|
317
|
+
"ui.settings.workspaceRoot": "Workspace root",
|
|
318
|
+
"ui.settings.appRoot": "App root",
|
|
319
|
+
"ui.settings.opsRoot": "Ops root",
|
|
320
|
+
"ui.settings.envTitle": "Environment",
|
|
321
|
+
"ui.settings.envHealthyBadge": "Ready",
|
|
322
|
+
"ui.settings.envMissingBadge": "{count} missing",
|
|
323
|
+
"ui.settings.envBridgeMode": "Bridge mode",
|
|
324
|
+
"ui.settings.envRootFile": "Root .env",
|
|
325
|
+
"ui.settings.envExampleFile": ".env.example",
|
|
326
|
+
"ui.settings.envAppBridge": "app/.env bridge",
|
|
327
|
+
"ui.settings.envRequiredKeys": "Required keys",
|
|
328
|
+
"ui.settings.envPresentKeys": "Present keys",
|
|
329
|
+
"ui.settings.envMissingKeys": "Missing keys",
|
|
330
|
+
"ui.settings.envNoMissing": "None",
|
|
331
|
+
"ui.settings.envLastAudit": "Last audit",
|
|
332
|
+
"ui.settings.envSync": "Sync env",
|
|
333
|
+
"ui.settings.envSynced": "Environment synced."
|
|
142
334
|
}
|