shipwright-cli 2.2.1 → 2.3.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 +19 -19
- package/dashboard/public/index.html +224 -8
- package/dashboard/public/styles.css +1078 -4
- package/dashboard/server.ts +1100 -15
- package/dashboard/src/canvas/interactions.ts +74 -0
- package/dashboard/src/canvas/layout.ts +85 -0
- package/dashboard/src/canvas/overlays.ts +117 -0
- package/dashboard/src/canvas/particles.ts +105 -0
- package/dashboard/src/canvas/renderer.ts +191 -0
- package/dashboard/src/components/charts/bar.ts +54 -0
- package/dashboard/src/components/charts/donut.ts +25 -0
- package/dashboard/src/components/charts/pipeline-rail.ts +105 -0
- package/dashboard/src/components/charts/sparkline.ts +82 -0
- package/dashboard/src/components/header.ts +616 -0
- package/dashboard/src/components/modal.ts +413 -0
- package/dashboard/src/components/terminal.ts +144 -0
- package/dashboard/src/core/api.ts +381 -0
- package/dashboard/src/core/helpers.ts +118 -0
- package/dashboard/src/core/router.ts +190 -0
- package/dashboard/src/core/sse.ts +38 -0
- package/dashboard/src/core/state.ts +150 -0
- package/dashboard/src/core/ws.ts +143 -0
- package/dashboard/src/design/icons.ts +131 -0
- package/dashboard/src/design/tokens.ts +160 -0
- package/dashboard/src/main.ts +68 -0
- package/dashboard/src/types/api.ts +337 -0
- package/dashboard/src/views/activity.ts +185 -0
- package/dashboard/src/views/agent-cockpit.ts +236 -0
- package/dashboard/src/views/agents.ts +72 -0
- package/dashboard/src/views/fleet-map.ts +299 -0
- package/dashboard/src/views/insights.ts +298 -0
- package/dashboard/src/views/machines.ts +162 -0
- package/dashboard/src/views/metrics.ts +420 -0
- package/dashboard/src/views/overview.ts +409 -0
- package/dashboard/src/views/pipeline-theater.ts +219 -0
- package/dashboard/src/views/pipelines.ts +595 -0
- package/dashboard/src/views/team.ts +362 -0
- package/dashboard/src/views/timeline.ts +389 -0
- package/dashboard/tsconfig.json +21 -0
- package/docs/AGI-PLATFORM-PLAN.md +5 -5
- package/docs/AGI-WHATS-NEXT.md +19 -16
- package/docs/README.md +2 -0
- package/package.json +8 -1
- package/scripts/check-version-consistency.sh +72 -0
- package/scripts/lib/daemon-adaptive.sh +610 -0
- package/scripts/lib/daemon-dispatch.sh +489 -0
- package/scripts/lib/daemon-failure.sh +387 -0
- package/scripts/lib/daemon-patrol.sh +1113 -0
- package/scripts/lib/daemon-poll.sh +1202 -0
- package/scripts/lib/daemon-state.sh +550 -0
- package/scripts/lib/daemon-triage.sh +490 -0
- package/scripts/lib/helpers.sh +81 -0
- package/scripts/lib/pipeline-intelligence.sh +0 -6
- package/scripts/lib/pipeline-quality-checks.sh +3 -1
- package/scripts/lib/pipeline-stages.sh +20 -0
- package/scripts/sw +109 -168
- package/scripts/sw-activity.sh +1 -1
- package/scripts/sw-adaptive.sh +2 -2
- package/scripts/sw-adversarial.sh +1 -1
- package/scripts/sw-architecture-enforcer.sh +1 -1
- package/scripts/sw-auth.sh +14 -6
- package/scripts/sw-autonomous.sh +1 -1
- package/scripts/sw-changelog.sh +2 -2
- package/scripts/sw-checkpoint.sh +1 -1
- package/scripts/sw-ci.sh +1 -1
- package/scripts/sw-cleanup.sh +1 -1
- package/scripts/sw-code-review.sh +1 -1
- package/scripts/sw-connect.sh +1 -1
- package/scripts/sw-context.sh +1 -1
- package/scripts/sw-cost.sh +1 -1
- package/scripts/sw-daemon.sh +53 -4817
- package/scripts/sw-dashboard.sh +1 -1
- package/scripts/sw-db.sh +1 -1
- package/scripts/sw-decompose.sh +1 -1
- package/scripts/sw-deps.sh +1 -1
- package/scripts/sw-developer-simulation.sh +1 -1
- package/scripts/sw-discovery.sh +1 -1
- package/scripts/sw-doc-fleet.sh +1 -1
- package/scripts/sw-docs-agent.sh +1 -1
- package/scripts/sw-docs.sh +1 -1
- package/scripts/sw-doctor.sh +49 -1
- package/scripts/sw-dora.sh +1 -1
- package/scripts/sw-durable.sh +1 -1
- package/scripts/sw-e2e-orchestrator.sh +1 -1
- package/scripts/sw-eventbus.sh +1 -1
- package/scripts/sw-feedback.sh +1 -1
- package/scripts/sw-fix.sh +6 -5
- package/scripts/sw-fleet-discover.sh +1 -1
- package/scripts/sw-fleet-viz.sh +3 -3
- package/scripts/sw-fleet.sh +1 -1
- package/scripts/sw-github-app.sh +5 -2
- package/scripts/sw-github-checks.sh +1 -1
- package/scripts/sw-github-deploy.sh +1 -1
- package/scripts/sw-github-graphql.sh +1 -1
- package/scripts/sw-guild.sh +1 -1
- package/scripts/sw-heartbeat.sh +1 -1
- package/scripts/sw-hygiene.sh +1 -1
- package/scripts/sw-incident.sh +1 -1
- package/scripts/sw-init.sh +112 -9
- package/scripts/sw-instrument.sh +6 -1
- package/scripts/sw-intelligence.sh +5 -1
- package/scripts/sw-jira.sh +1 -1
- package/scripts/sw-launchd.sh +1 -1
- package/scripts/sw-linear.sh +20 -9
- package/scripts/sw-logs.sh +1 -1
- package/scripts/sw-loop.sh +2 -1
- package/scripts/sw-memory.sh +10 -1
- package/scripts/sw-mission-control.sh +1 -1
- package/scripts/sw-model-router.sh +4 -1
- package/scripts/sw-otel.sh +4 -4
- package/scripts/sw-oversight.sh +1 -1
- package/scripts/sw-pipeline-composer.sh +3 -1
- package/scripts/sw-pipeline-vitals.sh +4 -6
- package/scripts/sw-pipeline.sh +19 -56
- package/scripts/sw-pipeline.sh.mock +7 -0
- package/scripts/sw-pm.sh +5 -2
- package/scripts/sw-pr-lifecycle.sh +1 -1
- package/scripts/sw-predictive.sh +4 -1
- package/scripts/sw-prep.sh +3 -2
- package/scripts/sw-ps.sh +1 -1
- package/scripts/sw-public-dashboard.sh +10 -4
- package/scripts/sw-quality.sh +1 -1
- package/scripts/sw-reaper.sh +1 -1
- package/scripts/sw-recruit.sh +25 -1
- package/scripts/sw-regression.sh +2 -1
- package/scripts/sw-release-manager.sh +1 -1
- package/scripts/sw-release.sh +7 -5
- package/scripts/sw-remote.sh +1 -1
- package/scripts/sw-replay.sh +1 -1
- package/scripts/sw-retro.sh +1 -1
- package/scripts/sw-scale.sh +11 -5
- package/scripts/sw-security-audit.sh +1 -1
- package/scripts/sw-self-optimize.sh +172 -7
- package/scripts/sw-session.sh +1 -1
- package/scripts/sw-setup.sh +1 -1
- package/scripts/sw-standup.sh +4 -3
- package/scripts/sw-status.sh +1 -1
- package/scripts/sw-strategic.sh +2 -1
- package/scripts/sw-stream.sh +8 -2
- package/scripts/sw-swarm.sh +12 -10
- package/scripts/sw-team-stages.sh +1 -1
- package/scripts/sw-templates.sh +1 -1
- package/scripts/sw-testgen.sh +3 -2
- package/scripts/sw-tmux-pipeline.sh +2 -1
- package/scripts/sw-tmux.sh +1 -1
- package/scripts/sw-trace.sh +1 -1
- package/scripts/sw-tracker-jira.sh +1 -0
- package/scripts/sw-tracker-linear.sh +1 -0
- package/scripts/sw-tracker.sh +24 -6
- package/scripts/sw-triage.sh +1 -1
- package/scripts/sw-upgrade.sh +1 -1
- package/scripts/sw-ux.sh +1 -1
- package/scripts/sw-webhook.sh +1 -1
- package/scripts/sw-widgets.sh +2 -2
- package/scripts/sw-worktree.sh +1 -1
- package/dashboard/public/app.js +0 -4422
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<a href="https://github.com/sethdford/shipwright/actions/workflows/test.yml"><img src="https://github.com/sethdford/shipwright/actions/workflows/test.yml/badge.svg" alt="Tests"></a>
|
|
14
14
|
<a href="https://github.com/sethdford/shipwright/actions/workflows/shipwright-pipeline.yml"><img src="https://github.com/sethdford/shipwright/actions/workflows/shipwright-pipeline.yml/badge.svg" alt="Pipeline"></a>
|
|
15
15
|
<img src="https://img.shields.io/badge/tests-103_suites_passing-4ade80?style=flat-square" alt="103 suites">
|
|
16
|
-
<img src="https://img.shields.io/badge/version-2.
|
|
16
|
+
<img src="https://img.shields.io/badge/version-2.3.0-00d4ff?style=flat-square" alt="v2.3.0">
|
|
17
17
|
<img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="MIT License">
|
|
18
18
|
<img src="https://img.shields.io/badge/bash-3.2%2B-7c3aed?style=flat-square" alt="Bash 3.2+">
|
|
19
19
|
</p>
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
## Table of Contents
|
|
24
24
|
|
|
25
25
|
- [Shipwright Builds Itself](#shipwright-builds-itself)
|
|
26
|
-
- [What's New in v2.
|
|
26
|
+
- [What's New in v2.3.0](#whats-new-in-v230)
|
|
27
27
|
- [How It Works](#how-it-works)
|
|
28
28
|
- [Install](#install)
|
|
29
29
|
- [Quick Start](#quick-start)
|
|
@@ -46,17 +46,16 @@ This repo uses Shipwright to process its own issues. Label a GitHub issue with `
|
|
|
46
46
|
|
|
47
47
|
---
|
|
48
48
|
|
|
49
|
-
## What's New in v2.
|
|
49
|
+
## What's New in v2.3.0
|
|
50
50
|
|
|
51
|
-
**
|
|
51
|
+
**Docs & platform polish** — doc-fleet, shared libs, policy schema, release infra:
|
|
52
52
|
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
- **
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
- **CI auto-discovery** — All 103 test suites now run in CI (previously 26)
|
|
53
|
+
- **Doc-fleet** — Five Cursor agents (doc-architect, claude-md, strategy-curator, pattern-writer, readme-optimizer) keep docs, strategy, and README in sync
|
|
54
|
+
- **Pipeline lib split** — `scripts/lib/pipeline-quality.sh`, `daemon-health.sh`, `policy.sh` for reuse and tests
|
|
55
|
+
- **Policy schema** — `config/policy.json` and `docs/config-policy.md` for hygiene, quality, and platform rules
|
|
56
|
+
- **Release infra** — npm, GitHub Releases (darwin/linux/windows), Homebrew tap; `scripts/build-release.sh` and `.github/workflows/release.yml` ship all platforms
|
|
57
|
+
|
|
58
|
+
**v2.1.2**: AGI-level recruit — `recruit match` / `team` / `route`, cross-system integration, 103 test suites in CI
|
|
60
59
|
|
|
61
60
|
**v2.1.0**: tmux visual overhaul — role-colored borders, pipeline status widgets, active pane depth
|
|
62
61
|
|
|
@@ -103,18 +102,19 @@ When tests fail, the pipeline re-enters the build loop with error context — se
|
|
|
103
102
|
|
|
104
103
|
## Install
|
|
105
104
|
|
|
105
|
+
**One-command install** (recommended):
|
|
106
|
+
|
|
106
107
|
```bash
|
|
107
|
-
|
|
108
|
+
git clone https://github.com/sethdford/shipwright.git && cd shipwright && ./install.sh
|
|
108
109
|
```
|
|
109
110
|
|
|
110
111
|
<details>
|
|
111
112
|
<summary>Other methods</summary>
|
|
112
113
|
|
|
113
|
-
**
|
|
114
|
+
**curl**
|
|
114
115
|
|
|
115
116
|
```bash
|
|
116
|
-
|
|
117
|
-
cd shipwright && ./install.sh
|
|
117
|
+
curl -fsSL https://raw.githubusercontent.com/sethdford/shipwright/main/scripts/install-remote.sh | bash
|
|
118
118
|
```
|
|
119
119
|
|
|
120
120
|
**npm** (global)
|
|
@@ -163,7 +163,7 @@ shipwright fleet start
|
|
|
163
163
|
shipwright fix "upgrade deps" --repos ~/a,~/b,~/c
|
|
164
164
|
|
|
165
165
|
# Release automation
|
|
166
|
-
shipwright
|
|
166
|
+
shipwright version bump 2.2.2
|
|
167
167
|
shipwright changelog generate
|
|
168
168
|
```
|
|
169
169
|
|
|
@@ -382,7 +382,7 @@ shipwright fix "feat: add auth" --repos ~/a,~/b,~/c
|
|
|
382
382
|
shipwright fleet-viz
|
|
383
383
|
|
|
384
384
|
# Release automation
|
|
385
|
-
shipwright
|
|
385
|
+
shipwright version bump 2.2.2
|
|
386
386
|
shipwright changelog generate
|
|
387
387
|
shipwright deploys list
|
|
388
388
|
|
|
@@ -396,11 +396,11 @@ shipwright upgrade --apply
|
|
|
396
396
|
shipwright --help
|
|
397
397
|
```
|
|
398
398
|
|
|
399
|
-
See [.claude/CLAUDE.md](.claude/CLAUDE.md) for the complete 100+ command reference organized by workflow. Full documentation: [
|
|
399
|
+
See [.claude/CLAUDE.md](.claude/CLAUDE.md) for the complete 100+ command reference organized by workflow. Full documentation: [https://sethdford.github.io/shipwright](https://sethdford.github.io/shipwright).
|
|
400
400
|
|
|
401
401
|
## Pipeline Templates for Teams
|
|
402
402
|
|
|
403
|
-
|
|
403
|
+
24 team templates covering the full SDLC:
|
|
404
404
|
|
|
405
405
|
```bash
|
|
406
406
|
shipwright templates list
|
|
@@ -59,9 +59,12 @@
|
|
|
59
59
|
<div class="header-center" id="connection">
|
|
60
60
|
<span class="connection-dot offline" id="connection-dot"></span>
|
|
61
61
|
<span class="connection-text" id="connection-text">OFFLINE</span>
|
|
62
|
-
<span class="cost-ticker" id="cost-ticker"
|
|
62
|
+
<span class="cost-ticker" id="cost-ticker">
|
|
63
|
+
<span id="cost-24h"></span>
|
|
64
|
+
<span id="cost-budget"></span>
|
|
65
|
+
</span>
|
|
63
66
|
</div>
|
|
64
|
-
<div class="header-right">
|
|
67
|
+
<div class="header-right header-actions">
|
|
65
68
|
<button
|
|
66
69
|
class="emergency-brake-btn"
|
|
67
70
|
id="emergency-brake"
|
|
@@ -86,6 +89,9 @@
|
|
|
86
89
|
</button>
|
|
87
90
|
<div class="user-dropdown" id="user-dropdown">
|
|
88
91
|
<div class="dropdown-username" id="dropdown-username">—</div>
|
|
92
|
+
<button class="dropdown-link" id="open-notifications">
|
|
93
|
+
Notifications
|
|
94
|
+
</button>
|
|
89
95
|
<a class="dropdown-link" href="/auth/logout">Sign out</a>
|
|
90
96
|
</div>
|
|
91
97
|
</div>
|
|
@@ -104,6 +110,9 @@
|
|
|
104
110
|
<button class="tab-btn" data-tab="machines">Machines</button>
|
|
105
111
|
<button class="tab-btn" data-tab="insights">Insights</button>
|
|
106
112
|
<button class="tab-btn" data-tab="team">Team</button>
|
|
113
|
+
<button class="tab-btn" data-tab="fleet-map">Map</button>
|
|
114
|
+
<button class="tab-btn" data-tab="pipeline-theater">Theater</button>
|
|
115
|
+
<button class="tab-btn" data-tab="agent-cockpit">Cockpit</button>
|
|
107
116
|
<div class="tab-indicator" id="tab-indicator"></div>
|
|
108
117
|
</div>
|
|
109
118
|
</nav>
|
|
@@ -122,6 +131,15 @@
|
|
|
122
131
|
|
|
123
132
|
<!-- Main Content -->
|
|
124
133
|
<main class="main" id="main-content">
|
|
134
|
+
<!-- Stale Data Banner -->
|
|
135
|
+
<div
|
|
136
|
+
class="stale-data-banner"
|
|
137
|
+
id="stale-data-banner"
|
|
138
|
+
style="display: none"
|
|
139
|
+
>
|
|
140
|
+
<span class="stale-icon">\u23F1</span>
|
|
141
|
+
Data last updated <span id="stale-data-age">?</span> ago
|
|
142
|
+
</div>
|
|
125
143
|
<!-- ═══ OVERVIEW TAB ═══ -->
|
|
126
144
|
<div class="tab-panel active" id="panel-overview">
|
|
127
145
|
<!-- Stats Row -->
|
|
@@ -164,7 +182,6 @@
|
|
|
164
182
|
<button
|
|
165
183
|
class="btn btn-sm btn-start"
|
|
166
184
|
id="daemon-btn-start"
|
|
167
|
-
onclick="daemonControl('start')"
|
|
168
185
|
title="Start daemon"
|
|
169
186
|
>
|
|
170
187
|
Start
|
|
@@ -172,7 +189,6 @@
|
|
|
172
189
|
<button
|
|
173
190
|
class="btn btn-sm btn-stop"
|
|
174
191
|
id="daemon-btn-stop"
|
|
175
|
-
onclick="daemonControl('stop')"
|
|
176
192
|
title="Stop daemon"
|
|
177
193
|
>
|
|
178
194
|
Stop
|
|
@@ -180,7 +196,6 @@
|
|
|
180
196
|
<button
|
|
181
197
|
class="btn btn-sm btn-pause"
|
|
182
198
|
id="daemon-btn-pause"
|
|
183
|
-
onclick="daemonControl('pause')"
|
|
184
199
|
title="Pause/Resume daemon"
|
|
185
200
|
>
|
|
186
201
|
Pause
|
|
@@ -188,7 +203,6 @@
|
|
|
188
203
|
<button
|
|
189
204
|
class="btn btn-sm btn-patrol"
|
|
190
205
|
id="daemon-btn-patrol"
|
|
191
|
-
onclick="daemonControl('patrol')"
|
|
192
206
|
title="Run patrol now"
|
|
193
207
|
>
|
|
194
208
|
Run Patrol
|
|
@@ -477,6 +491,48 @@
|
|
|
477
491
|
>
|
|
478
492
|
<span class="metric-label">DORA GRADES</span>
|
|
479
493
|
</div>
|
|
494
|
+
|
|
495
|
+
<!-- Bottleneck alerts -->
|
|
496
|
+
<div
|
|
497
|
+
class="metric-card metric-card-wide"
|
|
498
|
+
id="bottleneck-alert-container"
|
|
499
|
+
></div>
|
|
500
|
+
|
|
501
|
+
<!-- Stage performance -->
|
|
502
|
+
<div
|
|
503
|
+
class="metric-card metric-card-wide"
|
|
504
|
+
id="stage-performance-container"
|
|
505
|
+
></div>
|
|
506
|
+
|
|
507
|
+
<!-- Cost breakdown -->
|
|
508
|
+
<div
|
|
509
|
+
class="metric-card metric-card-wide"
|
|
510
|
+
id="cost-breakdown-container"
|
|
511
|
+
></div>
|
|
512
|
+
|
|
513
|
+
<!-- Cost trend -->
|
|
514
|
+
<div
|
|
515
|
+
class="metric-card metric-card-wide"
|
|
516
|
+
id="cost-trend-container"
|
|
517
|
+
></div>
|
|
518
|
+
|
|
519
|
+
<!-- DORA trend -->
|
|
520
|
+
<div
|
|
521
|
+
class="metric-card metric-card-wide"
|
|
522
|
+
id="dora-trend-container"
|
|
523
|
+
></div>
|
|
524
|
+
|
|
525
|
+
<!-- Throughput trend -->
|
|
526
|
+
<div
|
|
527
|
+
class="metric-card metric-card-wide"
|
|
528
|
+
id="throughput-trend-container"
|
|
529
|
+
></div>
|
|
530
|
+
|
|
531
|
+
<!-- Capacity forecast -->
|
|
532
|
+
<div
|
|
533
|
+
class="metric-card metric-card-wide"
|
|
534
|
+
id="capacity-forecast-container"
|
|
535
|
+
></div>
|
|
480
536
|
</div>
|
|
481
537
|
</div>
|
|
482
538
|
|
|
@@ -564,6 +620,21 @@
|
|
|
564
620
|
</div>
|
|
565
621
|
</section>
|
|
566
622
|
|
|
623
|
+
<!-- Team Actions -->
|
|
624
|
+
<div
|
|
625
|
+
class="team-actions"
|
|
626
|
+
style="margin: 1rem 0; display: flex; gap: 0.5rem"
|
|
627
|
+
>
|
|
628
|
+
<button class="btn-primary" id="btn-create-invite">
|
|
629
|
+
Create Invite Link
|
|
630
|
+
</button>
|
|
631
|
+
</div>
|
|
632
|
+
<div
|
|
633
|
+
id="team-invite-result"
|
|
634
|
+
style="display: none"
|
|
635
|
+
class="invite-result"
|
|
636
|
+
></div>
|
|
637
|
+
|
|
567
638
|
<!-- Developer Cards -->
|
|
568
639
|
<section class="section-header">
|
|
569
640
|
<h2 class="section-label">CONNECTED DEVELOPERS</h2>
|
|
@@ -582,12 +653,87 @@
|
|
|
582
653
|
<div class="team-activity" id="team-activity">
|
|
583
654
|
<div class="empty-state">No team activity yet.</div>
|
|
584
655
|
</div>
|
|
656
|
+
|
|
657
|
+
<!-- Integrations Status -->
|
|
658
|
+
<section class="section-header" style="margin-top: 2rem">
|
|
659
|
+
<h2 class="section-label">INTEGRATIONS</h2>
|
|
660
|
+
</section>
|
|
661
|
+
<div id="integrations-status" class="integrations-panel">
|
|
662
|
+
<div class="empty-state"><p>Loading...</p></div>
|
|
663
|
+
</div>
|
|
664
|
+
|
|
665
|
+
<!-- Admin/Debug Panel (admin only) -->
|
|
666
|
+
<section class="section-header" style="margin-top: 2rem">
|
|
667
|
+
<h2 class="section-label">ADMIN / DEBUG</h2>
|
|
668
|
+
</section>
|
|
669
|
+
<div id="admin-debug-panel" class="admin-debug-panel">
|
|
670
|
+
<div
|
|
671
|
+
class="admin-debug-controls"
|
|
672
|
+
style="display: flex; gap: 0.5rem; margin-bottom: 1rem"
|
|
673
|
+
>
|
|
674
|
+
<button class="btn-secondary btn-sm" id="btn-db-health">
|
|
675
|
+
DB Health
|
|
676
|
+
</button>
|
|
677
|
+
<button class="btn-secondary btn-sm" id="btn-db-events">
|
|
678
|
+
Recent Events
|
|
679
|
+
</button>
|
|
680
|
+
<button class="btn-secondary btn-sm" id="btn-db-jobs">Jobs</button>
|
|
681
|
+
<button class="btn-secondary btn-sm" id="btn-db-heartbeats">
|
|
682
|
+
Heartbeats
|
|
683
|
+
</button>
|
|
684
|
+
<button class="btn-secondary btn-sm" id="btn-db-costs">
|
|
685
|
+
Today's Costs
|
|
686
|
+
</button>
|
|
687
|
+
</div>
|
|
688
|
+
<div id="admin-debug-output" class="admin-debug-output">
|
|
689
|
+
<div class="empty-state">
|
|
690
|
+
<p>Click a button above to inspect</p>
|
|
691
|
+
</div>
|
|
692
|
+
</div>
|
|
693
|
+
</div>
|
|
694
|
+
|
|
695
|
+
<!-- Machine Claim/Release -->
|
|
696
|
+
<section class="section-header" style="margin-top: 2rem">
|
|
697
|
+
<h2 class="section-label">ISSUE CLAIM</h2>
|
|
698
|
+
</section>
|
|
699
|
+
<div id="claim-panel" class="claim-panel">
|
|
700
|
+
<div class="form-row" style="gap: 0.5rem; align-items: end">
|
|
701
|
+
<div class="form-group">
|
|
702
|
+
<label class="form-label" for="claim-issue">Issue #</label>
|
|
703
|
+
<input
|
|
704
|
+
type="number"
|
|
705
|
+
id="claim-issue"
|
|
706
|
+
class="form-input"
|
|
707
|
+
placeholder="123"
|
|
708
|
+
style="width: 100px"
|
|
709
|
+
/>
|
|
710
|
+
</div>
|
|
711
|
+
<div class="form-group">
|
|
712
|
+
<label class="form-label" for="claim-machine">Machine</label>
|
|
713
|
+
<input
|
|
714
|
+
type="text"
|
|
715
|
+
id="claim-machine"
|
|
716
|
+
class="form-input"
|
|
717
|
+
placeholder="build-01"
|
|
718
|
+
style="width: 150px"
|
|
719
|
+
/>
|
|
720
|
+
</div>
|
|
721
|
+
<button class="btn-primary btn-sm" id="btn-claim">Claim</button>
|
|
722
|
+
<button class="btn-secondary btn-sm" id="btn-release">
|
|
723
|
+
Release
|
|
724
|
+
</button>
|
|
725
|
+
</div>
|
|
726
|
+
<div
|
|
727
|
+
id="claim-result"
|
|
728
|
+
style="margin-top: 0.5rem; font-size: 0.85rem"
|
|
729
|
+
></div>
|
|
730
|
+
</div>
|
|
585
731
|
</div>
|
|
586
732
|
</main>
|
|
587
733
|
|
|
588
734
|
<!-- Footer -->
|
|
589
735
|
<footer class="footer">
|
|
590
|
-
<span>Shipwright Fleet Command
|
|
736
|
+
<span>Shipwright Fleet Command v2.3.0</span>
|
|
591
737
|
<span>Dashboard refreshes via WebSocket</span>
|
|
592
738
|
</footer>
|
|
593
739
|
|
|
@@ -642,6 +788,71 @@
|
|
|
642
788
|
</div>
|
|
643
789
|
</div>
|
|
644
790
|
|
|
791
|
+
<!-- Notifications Settings Modal -->
|
|
792
|
+
<div class="modal-overlay" id="notifications-modal" style="display: none">
|
|
793
|
+
<div class="modal-card modal-wide">
|
|
794
|
+
<div class="modal-header">
|
|
795
|
+
<h3 class="modal-title">Notification Settings</h3>
|
|
796
|
+
<button class="modal-close" id="notif-modal-close">×</button>
|
|
797
|
+
</div>
|
|
798
|
+
<div class="modal-body">
|
|
799
|
+
<p class="text-muted">
|
|
800
|
+
Configure webhooks to receive alerts when pipelines complete, fail,
|
|
801
|
+
or trigger alerts.
|
|
802
|
+
</p>
|
|
803
|
+
<div class="form-row" style="margin-top: 1rem">
|
|
804
|
+
<div class="form-group" style="flex: 3">
|
|
805
|
+
<label class="form-label" for="notif-webhook-url"
|
|
806
|
+
>Webhook URL</label
|
|
807
|
+
>
|
|
808
|
+
<input
|
|
809
|
+
type="url"
|
|
810
|
+
id="notif-webhook-url"
|
|
811
|
+
class="form-input"
|
|
812
|
+
placeholder="https://hooks.slack.com/services/..."
|
|
813
|
+
/>
|
|
814
|
+
</div>
|
|
815
|
+
<div class="form-group" style="flex: 1">
|
|
816
|
+
<label class="form-label" for="notif-webhook-label">Label</label>
|
|
817
|
+
<input
|
|
818
|
+
type="text"
|
|
819
|
+
id="notif-webhook-label"
|
|
820
|
+
class="form-input"
|
|
821
|
+
placeholder="Slack"
|
|
822
|
+
/>
|
|
823
|
+
</div>
|
|
824
|
+
</div>
|
|
825
|
+
<div class="form-row" style="margin-top: 0.5rem">
|
|
826
|
+
<label class="form-label" style="margin-right: 0.5rem"
|
|
827
|
+
>Events:</label
|
|
828
|
+
>
|
|
829
|
+
<label
|
|
830
|
+
><input type="checkbox" id="notif-evt-all" checked /> All</label
|
|
831
|
+
>
|
|
832
|
+
<label
|
|
833
|
+
><input type="checkbox" id="notif-evt-completed" />
|
|
834
|
+
Completed</label
|
|
835
|
+
>
|
|
836
|
+
<label
|
|
837
|
+
><input type="checkbox" id="notif-evt-failed" /> Failed</label
|
|
838
|
+
>
|
|
839
|
+
<label><input type="checkbox" id="notif-evt-alert" /> Alerts</label>
|
|
840
|
+
</div>
|
|
841
|
+
<button
|
|
842
|
+
class="btn-primary"
|
|
843
|
+
id="notif-add-webhook"
|
|
844
|
+
style="margin-top: 0.75rem"
|
|
845
|
+
>
|
|
846
|
+
Add Webhook
|
|
847
|
+
</button>
|
|
848
|
+
<div id="notif-webhook-list" style="margin-top: 1rem"></div>
|
|
849
|
+
<div style="margin-top: 1rem; display: flex; gap: 0.5rem">
|
|
850
|
+
<button class="btn-secondary" id="notif-test-btn">Send Test</button>
|
|
851
|
+
</div>
|
|
852
|
+
</div>
|
|
853
|
+
</div>
|
|
854
|
+
</div>
|
|
855
|
+
|
|
645
856
|
<!-- Add Machine Modal -->
|
|
646
857
|
<div class="modal-overlay" id="add-machine-modal" style="display: none">
|
|
647
858
|
<div class="modal-card modal-wide">
|
|
@@ -811,6 +1022,11 @@
|
|
|
811
1022
|
</div>
|
|
812
1023
|
</div>
|
|
813
1024
|
|
|
814
|
-
|
|
1025
|
+
<!-- New visualization tab panels -->
|
|
1026
|
+
<div class="tab-panel" id="panel-fleet-map"></div>
|
|
1027
|
+
<div class="tab-panel" id="panel-pipeline-theater"></div>
|
|
1028
|
+
<div class="tab-panel" id="panel-agent-cockpit"></div>
|
|
1029
|
+
|
|
1030
|
+
<script src="dist/main.js"></script>
|
|
815
1031
|
</body>
|
|
816
1032
|
</html>
|