trackops 2.0.4 → 2.0.6
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/LICENSE +21 -21
- package/README.md +660 -575
- package/bin/trackops.js +127 -106
- package/lib/cli-format.js +118 -0
- package/lib/config.js +352 -326
- package/lib/control.js +408 -246
- package/lib/env.js +234 -222
- package/lib/i18n.js +5 -4
- package/lib/init.js +390 -282
- package/lib/locale.js +41 -41
- package/lib/opera-bootstrap.js +1066 -880
- package/lib/opera.js +615 -444
- package/lib/preferences.js +74 -74
- package/lib/registry.js +214 -214
- package/lib/release.js +56 -56
- package/lib/runtime-state.js +144 -144
- package/lib/skills.js +114 -89
- package/lib/workspace.js +259 -248
- package/locales/en.json +311 -167
- package/locales/es.json +314 -170
- package/package.json +61 -58
- package/scripts/postinstall-locale.js +21 -21
- package/scripts/skills-marketplace-smoke.js +124 -124
- package/scripts/smoke-tests.js +563 -517
- package/scripts/sync-skill-version.js +21 -21
- package/scripts/validate-skill.js +103 -103
- package/skills/trackops/SKILL.md +126 -122
- package/skills/trackops/agents/openai.yaml +7 -7
- package/skills/trackops/locales/en/SKILL.md +126 -122
- package/skills/trackops/locales/en/references/activation.md +94 -90
- package/skills/trackops/locales/en/references/troubleshooting.md +73 -67
- package/skills/trackops/locales/en/references/workflow.md +55 -32
- package/skills/trackops/references/activation.md +94 -90
- package/skills/trackops/references/troubleshooting.md +73 -67
- package/skills/trackops/references/workflow.md +55 -32
- package/skills/trackops/skill.json +29 -29
- package/templates/hooks/post-checkout +2 -2
- package/templates/hooks/post-commit +2 -2
- package/templates/hooks/post-merge +2 -2
- package/templates/opera/agent.md +28 -27
- package/templates/opera/architecture/dependency-graph.md +24 -24
- package/templates/opera/architecture/runtime-automation.md +24 -24
- package/templates/opera/architecture/runtime-operations.md +34 -34
- package/templates/opera/en/agent.md +22 -21
- package/templates/opera/en/architecture/dependency-graph.md +24 -24
- package/templates/opera/en/architecture/runtime-automation.md +24 -24
- package/templates/opera/en/architecture/runtime-operations.md +34 -34
- package/templates/opera/en/reviews/delivery-audit.md +18 -18
- package/templates/opera/en/reviews/integration-audit.md +18 -18
- package/templates/opera/en/router.md +24 -19
- package/templates/opera/references/autonomy-and-recovery.md +117 -117
- package/templates/opera/references/opera-cycle.md +193 -193
- package/templates/opera/registry.md +28 -28
- package/templates/opera/reviews/delivery-audit.md +18 -18
- package/templates/opera/reviews/integration-audit.md +18 -18
- package/templates/opera/router.md +54 -49
- package/templates/skills/changelog-updater/SKILL.md +69 -69
- package/templates/skills/commiter/SKILL.md +99 -99
- package/templates/skills/opera-contract-auditor/SKILL.md +38 -38
- package/templates/skills/opera-contract-auditor/locales/en/SKILL.md +38 -38
- package/templates/skills/opera-policy-guard/SKILL.md +26 -26
- package/templates/skills/opera-policy-guard/locales/en/SKILL.md +26 -26
- package/templates/skills/opera-skill/SKILL.md +279 -0
- package/templates/skills/opera-skill/locales/en/SKILL.md +279 -0
- package/templates/skills/opera-skill/locales/en/references/phase-dod.md +138 -0
- package/templates/skills/opera-skill/references/phase-dod.md +138 -0
- package/templates/skills/project-starter-skill/SKILL.md +150 -131
- package/templates/skills/project-starter-skill/locales/en/SKILL.md +143 -105
- package/templates/skills/project-starter-skill/references/opera-cycle.md +195 -193
- package/ui/css/base.css +284 -284
- package/ui/css/charts.css +425 -425
- package/ui/css/components.css +1107 -1107
- package/ui/css/onboarding.css +133 -133
- package/ui/css/terminal.css +125 -125
- package/ui/css/timeline.css +58 -58
- package/ui/css/tokens.css +284 -284
- package/ui/favicon.svg +5 -5
- package/ui/index.html +99 -99
- package/ui/js/charts.js +526 -526
- package/ui/js/console-logger.js +172 -172
- package/ui/js/filters.js +247 -247
- package/ui/js/icons.js +129 -129
- package/ui/js/keyboard.js +229 -229
- package/ui/js/router.js +142 -142
- package/ui/js/theme.js +100 -100
- package/ui/js/time-tracker.js +248 -248
- package/ui/js/views/dashboard.js +870 -870
- package/ui/js/views/flash.js +47 -47
- package/ui/js/views/projects.js +745 -745
- package/ui/js/views/scrum.js +476 -476
- package/ui/js/views/settings.js +331 -331
- package/ui/js/views/timeline.js +265 -265
package/ui/js/views/flash.js
CHANGED
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* flash.js — Sistema de toasts / notificaciones
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
const DURATION = 3500;
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Muestra una notificación tipo toast
|
|
9
|
-
* @param {string} message
|
|
10
|
-
* @param {'success'|'error'|'warning'|'info'} [type='info']
|
|
11
|
-
* @param {number} [duration] ms antes de desaparecer (0 = permanente)
|
|
12
|
-
*/
|
|
13
|
-
export function flash(message, type = 'info', duration = DURATION) {
|
|
14
|
-
const container = document.getElementById('flash-container');
|
|
15
|
-
if (!container) return;
|
|
16
|
-
|
|
17
|
-
const icons = {
|
|
18
|
-
success: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>',
|
|
19
|
-
error: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>',
|
|
20
|
-
warning: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>',
|
|
21
|
-
info: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="16" x2="12" y2="12"/><line x1="12" y1="8" x2="12.01" y2="8"/></svg>',
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
const colorMap = {
|
|
25
|
-
success: 'var(--success)',
|
|
26
|
-
error: 'var(--danger)',
|
|
27
|
-
warning: 'var(--warning)',
|
|
28
|
-
info: 'var(--accent)',
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const toastEl = document.createElement('div');
|
|
32
|
-
toastEl.className = `flash flash-${type}`;
|
|
33
|
-
toastEl.setAttribute('role', 'alert');
|
|
34
|
-
toastEl.innerHTML = `
|
|
35
|
-
<span style="color:${colorMap[type] || 'var(--accent)'}; flex-shrink:0">${icons[type] || icons.info}</span>
|
|
36
|
-
<span>${message}</span>
|
|
37
|
-
`;
|
|
38
|
-
|
|
39
|
-
container.appendChild(toastEl);
|
|
40
|
-
|
|
41
|
-
if (duration > 0) {
|
|
42
|
-
setTimeout(() => {
|
|
43
|
-
toastEl.classList.add('flash-exit');
|
|
44
|
-
setTimeout(() => toastEl.remove(), 300);
|
|
45
|
-
}, duration);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* flash.js — Sistema de toasts / notificaciones
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
const DURATION = 3500;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Muestra una notificación tipo toast
|
|
9
|
+
* @param {string} message
|
|
10
|
+
* @param {'success'|'error'|'warning'|'info'} [type='info']
|
|
11
|
+
* @param {number} [duration] ms antes de desaparecer (0 = permanente)
|
|
12
|
+
*/
|
|
13
|
+
export function flash(message, type = 'info', duration = DURATION) {
|
|
14
|
+
const container = document.getElementById('flash-container');
|
|
15
|
+
if (!container) return;
|
|
16
|
+
|
|
17
|
+
const icons = {
|
|
18
|
+
success: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>',
|
|
19
|
+
error: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>',
|
|
20
|
+
warning: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>',
|
|
21
|
+
info: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="16" x2="12" y2="12"/><line x1="12" y1="8" x2="12.01" y2="8"/></svg>',
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const colorMap = {
|
|
25
|
+
success: 'var(--success)',
|
|
26
|
+
error: 'var(--danger)',
|
|
27
|
+
warning: 'var(--warning)',
|
|
28
|
+
info: 'var(--accent)',
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const toastEl = document.createElement('div');
|
|
32
|
+
toastEl.className = `flash flash-${type}`;
|
|
33
|
+
toastEl.setAttribute('role', 'alert');
|
|
34
|
+
toastEl.innerHTML = `
|
|
35
|
+
<span style="color:${colorMap[type] || 'var(--accent)'}; flex-shrink:0">${icons[type] || icons.info}</span>
|
|
36
|
+
<span>${message}</span>
|
|
37
|
+
`;
|
|
38
|
+
|
|
39
|
+
container.appendChild(toastEl);
|
|
40
|
+
|
|
41
|
+
if (duration > 0) {
|
|
42
|
+
setTimeout(() => {
|
|
43
|
+
toastEl.classList.add('flash-exit');
|
|
44
|
+
setTimeout(() => toastEl.remove(), 300);
|
|
45
|
+
}, duration);
|
|
46
|
+
}
|
|
47
|
+
}
|