shipwright-cli 2.2.2 → 2.3.1
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 +12 -11
- 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.test.ts +362 -0
- package/dashboard/src/core/api.ts +381 -0
- package/dashboard/src/core/helpers.ts +118 -0
- package/dashboard/src/core/router.test.ts +266 -0
- package/dashboard/src/core/router.ts +190 -0
- package/dashboard/src/core/sse.ts +38 -0
- package/dashboard/src/core/state.test.ts +235 -0
- package/dashboard/src/core/state.ts +150 -0
- package/dashboard/src/core/ws.test.ts +216 -0
- package/dashboard/src/core/ws.ts +143 -0
- package/dashboard/src/design/icons.test.ts +105 -0
- package/dashboard/src/design/icons.ts +131 -0
- package/dashboard/src/design/tokens.test.ts +204 -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/dashboard/vitest.config.ts +27 -0
- package/docs/AGI-WHATS-NEXT.md +15 -15
- package/package.json +16 -2
- package/scripts/lib/helpers.sh +30 -0
- package/scripts/lib/pipeline-quality-checks.sh +1 -1
- package/scripts/lib/pipeline-stages.sh +59 -0
- package/scripts/sw +86 -167
- package/scripts/sw-activity.sh +1 -1
- package/scripts/sw-adaptive.sh +1 -1
- 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 +230 -13
- 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 +2 -2
- 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 +8 -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 +1 -1
- 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 +1 -1
- 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 +4 -1
- 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 +16 -0
- 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 +4 -1
- package/scripts/sw-scale.sh +4 -1
- package/scripts/sw-security-audit.sh +1 -1
- package/scripts/sw-self-optimize.sh +113 -1
- package/scripts/sw-session.sh +1 -1
- package/scripts/sw-setup.sh +1 -1
- package/scripts/sw-standup.sh +2 -1
- package/scripts/sw-status.sh +1 -1
- package/scripts/sw-strategic.sh +2 -1
- package/scripts/sw-stream.sh +1 -1
- package/scripts/sw-swarm.sh +6 -1
- 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 +1 -1
- package/scripts/sw-triage.sh +198 -11
- 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.1-00d4ff?style=flat-square" alt="v2.3.1">
|
|
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.1](#whats-new-in-v231)
|
|
27
27
|
- [How It Works](#how-it-works)
|
|
28
28
|
- [Install](#install)
|
|
29
29
|
- [Quick Start](#quick-start)
|
|
@@ -46,7 +46,7 @@ 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.1
|
|
50
50
|
|
|
51
51
|
**Docs & platform polish** — doc-fleet, shared libs, policy schema, release infra:
|
|
52
52
|
|
|
@@ -102,18 +102,19 @@ When tests fail, the pipeline re-enters the build loop with error context — se
|
|
|
102
102
|
|
|
103
103
|
## Install
|
|
104
104
|
|
|
105
|
+
**One-command install** (recommended):
|
|
106
|
+
|
|
105
107
|
```bash
|
|
106
|
-
|
|
108
|
+
git clone https://github.com/sethdford/shipwright.git && cd shipwright && ./install.sh
|
|
107
109
|
```
|
|
108
110
|
|
|
109
111
|
<details>
|
|
110
112
|
<summary>Other methods</summary>
|
|
111
113
|
|
|
112
|
-
**
|
|
114
|
+
**curl**
|
|
113
115
|
|
|
114
116
|
```bash
|
|
115
|
-
|
|
116
|
-
cd shipwright && ./install.sh
|
|
117
|
+
curl -fsSL https://raw.githubusercontent.com/sethdford/shipwright/main/scripts/install-remote.sh | bash
|
|
117
118
|
```
|
|
118
119
|
|
|
119
120
|
**npm** (global)
|
|
@@ -162,7 +163,7 @@ shipwright fleet start
|
|
|
162
163
|
shipwright fix "upgrade deps" --repos ~/a,~/b,~/c
|
|
163
164
|
|
|
164
165
|
# Release automation
|
|
165
|
-
shipwright
|
|
166
|
+
shipwright version bump 2.2.2
|
|
166
167
|
shipwright changelog generate
|
|
167
168
|
```
|
|
168
169
|
|
|
@@ -381,7 +382,7 @@ shipwright fix "feat: add auth" --repos ~/a,~/b,~/c
|
|
|
381
382
|
shipwright fleet-viz
|
|
382
383
|
|
|
383
384
|
# Release automation
|
|
384
|
-
shipwright
|
|
385
|
+
shipwright version bump 2.2.2
|
|
385
386
|
shipwright changelog generate
|
|
386
387
|
shipwright deploys list
|
|
387
388
|
|
|
@@ -395,11 +396,11 @@ shipwright upgrade --apply
|
|
|
395
396
|
shipwright --help
|
|
396
397
|
```
|
|
397
398
|
|
|
398
|
-
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).
|
|
399
400
|
|
|
400
401
|
## Pipeline Templates for Teams
|
|
401
402
|
|
|
402
|
-
|
|
403
|
+
24 team templates covering the full SDLC:
|
|
403
404
|
|
|
404
405
|
```bash
|
|
405
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.1</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>
|