aidevops 3.31.33 → 3.31.35

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 CHANGED
@@ -58,7 +58,7 @@ The result: an AI operations platform that manages projects across every busines
58
58
  [![Copyright](https://img.shields.io/badge/Copyright-Marcus%20Quinn%202025--2026-blue.svg)](https://github.com/marcusquinn)
59
59
 
60
60
  <!-- Release & Version Info -->
61
- [![Version](https://img.shields.io/badge/Version-3.31.33-blue.svg)](https://github.com/marcusquinn/aidevops/releases)
61
+ [![Version](https://img.shields.io/badge/Version-3.31.35-blue.svg)](https://github.com/marcusquinn/aidevops/releases)
62
62
  [![npm version](https://img.shields.io/npm/v/aidevops)](https://www.npmjs.com/package/aidevops)
63
63
  [![Homebrew](https://img.shields.io/badge/homebrew-marcusquinn%2Ftap-orange)](https://github.com/marcusquinn/homebrew-tap)
64
64
  [![GitHub repository](https://img.shields.io/badge/github-repository-181717.svg?logo=github)](https://github.com/marcusquinn/aidevops)
package/VERSION CHANGED
@@ -1 +1 @@
1
- 3.31.33
1
+ 3.31.35
package/aidevops.sh CHANGED
@@ -5,7 +5,7 @@
5
5
  # AI DevOps Framework CLI
6
6
  # Usage: aidevops <command> [options]
7
7
  #
8
- # Version: 3.31.33
8
+ # Version: 3.31.35
9
9
 
10
10
  set -euo pipefail
11
11
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aidevops",
3
- "version": "3.31.33",
3
+ "version": "3.31.35",
4
4
  "description": "AI DevOps Framework - AI-assisted development workflows, code quality, and deployment automation",
5
5
  "type": "module",
6
6
  "workspaces": [
@@ -64,7 +64,6 @@ gui_dependencies_present() {
64
64
  node_modules/vite/bin/vite.js
65
65
  node_modules/react
66
66
  node_modules/react-icons
67
- node_modules/@fontsource/cal-sans
68
67
  node_modules/@fontsource/courier-prime
69
68
  node_modules/@fontsource/dm-mono
70
69
  node_modules/@fontsource/dm-sans
@@ -127,10 +126,25 @@ write_icon_assets() {
127
126
  local iconset_dir="${resources_dir}/aidevops.iconset"
128
127
 
129
128
  cat > "$svg_path" <<'SVG'
130
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
131
- <rect width="512" height="512" rx="64" fill="#0a0a0a"/>
132
- <g transform="translate(36 36) scale(0.86)">
133
- <path fill="#B2E969" d="M73.4 150.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 288 73.4 150.6zM240 400h192c17.7 0 32 14.3 32 32s-14.3 32-32 32H240c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/>
129
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" role="img" aria-labelledby="title desc">
130
+ <title id="title">AI DevOps prompt icon</title>
131
+ <desc id="desc">A rounded black app icon with the cyan terminal prompt mark used in the website logo.</desc>
132
+ <defs>
133
+ <linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
134
+ <stop offset="0" stop-color="#000000"/>
135
+ <stop offset="1" stop-color="#030707"/>
136
+ </linearGradient>
137
+ <radialGradient id="glow" cx="50%" cy="50%" r="62%">
138
+ <stop offset="0" stop-color="#66d9f2" stop-opacity="0.22"/>
139
+ <stop offset="1" stop-color="#66d9f2" stop-opacity="0"/>
140
+ </radialGradient>
141
+ </defs>
142
+ <rect width="1024" height="1024" fill="none"/>
143
+ <rect x="88" y="88" width="848" height="848" rx="188" fill="url(#bg)"/>
144
+ <rect x="88" y="88" width="848" height="848" rx="188" fill="url(#glow)"/>
145
+ <rect x="116" y="116" width="792" height="792" rx="160" fill="none" stroke="#66d9f2" stroke-opacity="0.36" stroke-width="18"/>
146
+ <g transform="translate(512 522) scale(0.94) translate(-288 -256)">
147
+ <path fill="#8ce8ff" d="M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/>
134
148
  </g>
135
149
  </svg>
136
150
  SVG
@@ -1276,7 +1290,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate, WKNavigationDelegate,
1276
1290
  if title == "Starting aidevops" {
1277
1291
  contentHTML = """
1278
1292
  <main class="shell" aria-busy="true" aria-label="Loading aidevops interface">
1279
- <section class="brand" aria-label="Starting aidevops"><strong><span>aidevops</span><b>&gt;</b><em>_</em></strong><small>Preparing local GUI</small></section>
1293
+ <section class="brand" aria-label="Starting aidevops"><strong><svg viewBox="0 0 1024 1024" aria-hidden="true"><rect x="88" y="88" width="848" height="848" rx="188" fill="#000000"/><rect x="88" y="88" width="848" height="848" rx="188" fill="#66d9f2" opacity="0.22"/><rect x="116" y="116" width="792" height="792" rx="160" fill="none" stroke="#66d9f2" stroke-opacity="0.36" stroke-width="18"/><g transform="translate(512 522) scale(0.94) translate(-288 -256)"><path fill="#8ce8ff" d="M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></g></svg><span>aidevops</span><b>&gt;</b><em>_</em></strong><small>Preparing local GUI</small></section>
1280
1294
  <aside class="rail panel"><i></i><i></i><i></i><i></i><i></i><i></i></aside>
1281
1295
  <aside class="sidebar panel"><header><b></b><span></span></header><nav><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></nav><footer><i></i><i></i></footer></aside>
1282
1296
  <section class="workspace panel"><header><b></b><span></span><i></i><i></i></header><article><h1>\(escapedTitle)</h1><p>\(escapedDetail)</p><div class="cards"><i></i><i></i><i></i><i></i><i></i><i></i></div><div class="block"></div></article></section>
@@ -1293,16 +1307,17 @@ final class AppDelegate: NSObject, NSApplicationDelegate, WKNavigationDelegate,
1293
1307
  <meta charset="utf-8">
1294
1308
  <meta name="viewport" content="width=device-width, initial-scale=1">
1295
1309
  <style>
1296
- :root { --accent: hsl(123 74% 66%); --border: rgb(255 255 255 / 11%); --panel: #151515; --muted: rgb(255 255 255 / 70%); }
1310
+ :root { --accent: #66d9f2; --border: rgb(255 255 255 / 11%); --panel: #151515; --muted: rgb(255 255 255 / 70%); }
1297
1311
  * { box-sizing: border-box; }
1298
- body { background: radial-gradient(ellipse at top left, hsl(123 74% 66% / 16%), transparent 36%), #111; color: #fff; font: 15px -apple-system, BlinkMacSystemFont, sans-serif; height: 100vh; margin: 0; }
1312
+ body { background: radial-gradient(ellipse at top left, rgb(102 217 242 / 16%), transparent 36%), #111; color: #fff; font: 15px -apple-system, BlinkMacSystemFont, sans-serif; height: 100vh; margin: 0; }
1299
1313
  .message { background: var(--panel); border: 1px solid var(--border); border-radius: 18px; left: 50%; max-width: 560px; padding: 28px; position: fixed; top: 50%; transform: translate(-50%, -50%); }
1300
1314
  h1 { font-size: 22px; margin: 0 0 10px; }
1301
1315
  p { color: #b9c3b0; line-height: 1.5; margin: 0; }
1302
1316
  code { color: var(--accent); }
1303
1317
  .shell { display: grid; gap: 8px; grid-template-columns: 72px 302px minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) 30px; height: 100vh; padding: 30px 8px 8px; }
1304
- .brand { align-items: center; backdrop-filter: blur(18px); background: rgb(10 10 10 / 78%); border: 1px solid hsl(123 74% 66% / 34%); border-radius: 24px; box-shadow: 0 24px 90px hsl(123 74% 66% / 14%), 0 24px 80px rgb(0 0 0 / 40%); display: grid; gap: 10px; justify-items: center; left: 50%; padding: 26px 30px; position: fixed; top: 50%; transform: translate(-50%, -50%); width: min(360px, calc(100vw - 48px)); z-index: 20; }
1305
- .brand strong { align-items: baseline; display: inline-flex; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: clamp(34px, 7vw, 64px); font-weight: 900; letter-spacing: -0.08em; line-height: .9; }
1318
+ .brand { align-items: center; backdrop-filter: blur(18px); background: rgb(10 10 10 / 78%); border: 1px solid rgb(102 217 242 / 34%); border-radius: 24px; box-shadow: 0 24px 90px rgb(102 217 242 / 14%), 0 24px 80px rgb(0 0 0 / 40%); display: grid; gap: 10px; justify-items: center; left: 50%; padding: 26px 30px; position: fixed; top: 50%; transform: translate(-50%, -50%); width: min(360px, calc(100vw - 48px)); z-index: 20; }
1319
+ .brand strong { align-items: center; display: inline-flex; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: clamp(34px, 7vw, 64px); font-weight: 900; gap: .18em; letter-spacing: -0.08em; line-height: .9; }
1320
+ .brand svg { display: block; height: .96em; width: .96em; }
1306
1321
  .brand span { color: #f6f7f2; font-size: .48em; letter-spacing: -0.04em; margin-right: .18em; }
1307
1322
  .brand b, .brand em { color: var(--accent); font-style: normal; }
1308
1323
  .brand em { animation: cursor 0.95s steps(1, end) infinite; }
@@ -26,7 +26,8 @@
26
26
  body { background: radial-gradient(ellipse at top left, color-mix(in srgb, var(--accent) 16%, transparent) 0%, transparent 36%), var(--bg-secondary); color: var(--text-primary); font: 16px Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; margin: 0; }
27
27
  .app-shell { display: grid; gap: 8px; grid-template-columns: 72px 302px minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) 30px; height: 100vh; padding: 30px 8px 8px; }
28
28
  .loading-brand-overlay { align-items: center; backdrop-filter: blur(18px); background: color-mix(in srgb, var(--surface) 78%, transparent); border: 1px solid color-mix(in srgb, var(--accent) 34%, var(--border)); border-radius: 24px; box-shadow: 0 24px 90px color-mix(in srgb, var(--accent) 14%, transparent), 0 24px 80px rgb(0 0 0 / 40%); display: grid; gap: 10px; justify-items: center; left: 50%; padding: 26px 30px; position: fixed; top: 50%; transform: translate(-50%, -50%); width: min(360px, calc(100vw - 48px)); z-index: 20; }
29
- .loading-brand-mark { align-items: baseline; display: inline-flex; font-size: clamp(2.1rem, 7vw, 4rem); font-weight: 900; letter-spacing: -0.08em; line-height: 0.9; }
29
+ .loading-brand-mark { align-items: center; display: inline-flex; font-size: clamp(2.1rem, 7vw, 4rem); font-weight: 900; gap: 0.18em; letter-spacing: -0.08em; line-height: 0.9; }
30
+ .loading-brand-icon { display: block; height: 0.96em; width: 0.96em; }
30
31
  .loading-brand-word { color: color-mix(in srgb, var(--text-primary) 86%, var(--accent)); font-size: 0.48em; letter-spacing: -0.04em; margin-right: 0.18em; }
31
32
  .loading-brand-chevron, .loading-brand-cursor { color: var(--accent); }
32
33
  .loading-brand-cursor { animation: loading-cursor-blink 0.95s steps(1, end) infinite; }
@@ -52,7 +53,7 @@
52
53
  <body>
53
54
  <div id="root">
54
55
  <main class="app-shell app-loading-shell" aria-busy="true" aria-label="Loading aidevops interface">
55
- <section class="loading-brand-overlay" aria-label="Starting aidevops"><span class="loading-brand-mark" aria-hidden="true"><span class="loading-brand-word">aidevops</span><span class="loading-brand-chevron">&gt;</span><span class="loading-brand-cursor">_</span></span><span class="loading-brand-status">Preparing local GUI</span></section>
56
+ <section class="loading-brand-overlay" aria-label="Starting aidevops"><span class="loading-brand-mark" aria-hidden="true"><svg class="loading-brand-icon" viewBox="0 0 1024 1024"><rect x="88" y="88" width="848" height="848" rx="188" fill="#000000" /><rect x="88" y="88" width="848" height="848" rx="188" fill="#66d9f2" opacity="0.22" /><rect x="116" y="116" width="792" height="792" rx="160" fill="none" stroke="#66d9f2" stroke-opacity="0.36" stroke-width="18" /><g transform="translate(512 522) scale(0.94) translate(-288 -256)"><path fill="#8ce8ff" d="M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32z" /></g></svg><span class="loading-brand-word">aidevops</span><span class="loading-brand-chevron">&gt;</span><span class="loading-brand-cursor">_</span></span><span class="loading-brand-status">Preparing local GUI</span></section>
56
57
  <aside class="machine-rail loading-panel" aria-label="machine rail"><span class="loading-orb"></span><span class="loading-orb"></span><span class="loading-orb"></span><span class="loading-orb"></span><span class="loading-orb"></span><span class="loading-orb"></span></aside>
57
58
  <aside class="app-sidebar loading-panel" aria-label="sidebar">
58
59
  <div class="loading-sidebar-header"><span class="loading-logo"></span><span class="loading-line loading-line-wide"></span></div>
@@ -39,6 +39,19 @@ import { dashboardNavItem, navGroups, sidebarModeForSurface, surfaceRecordCounts
39
39
  import { SidebarFooter, wrappedOptionIndex } from "./AppearanceControls";
40
40
  import { VaultPadlock, vaultCollectionForSurface } from "./VaultBadges";
41
41
 
42
+ function AidevopsPromptIcon() {
43
+ return (
44
+ <svg className="brand-icon" viewBox="0 0 1024 1024" role="img" aria-label="AI DevOps prompt icon">
45
+ <rect className="brand-icon-bg" x="88" y="88" width="848" height="848" rx="188" />
46
+ <rect className="brand-icon-glow" x="88" y="88" width="848" height="848" rx="188" />
47
+ <rect className="brand-icon-ring" x="116" y="116" width="792" height="792" rx="160" />
48
+ <g transform="translate(512 522) scale(0.94) translate(-288 -256)">
49
+ <path className="brand-icon-glyph" d="M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32z" />
50
+ </g>
51
+ </svg>
52
+ );
53
+ }
54
+
42
55
  export { hueFromInputValue } from "./AppearanceControls";
43
56
 
44
57
  const surfaceIcons: Record<SurfaceIconName, IconType> = {
@@ -362,7 +375,7 @@ function SidebarHeader({ setActiveSurface, setShellMode, shellMode }: {
362
375
  <header className="sidebar-header">
363
376
  <div className="sidebar-titlebar">
364
377
  <button className="brand-lockup" onClick={() => { setShellMode("devices"); setActiveSurface(dashboardNavItem.id); }} title="Return to dashboard" type="button">
365
- <span className="terminal-mark" aria-hidden="true">›_</span>
378
+ <AidevopsPromptIcon />
366
379
  <strong>{text.aidevops}</strong>
367
380
  </button>
368
381
  <IconSwitch
@@ -579,6 +579,7 @@ code {
579
579
  letter-spacing: -0.05em;
580
580
  }
581
581
 
582
+ .brand-icon,
582
583
  .terminal-mark {
583
584
  align-items: center;
584
585
  background: color-mix(in srgb, var(--accent) 15%, #0a0a0a);
@@ -594,6 +595,33 @@ code {
594
595
  width: 44px;
595
596
  }
596
597
 
598
+ .brand-icon {
599
+ background: transparent;
600
+ border: 0;
601
+ display: block;
602
+ flex: 0 0 auto;
603
+ filter: drop-shadow(0 8px 18px rgb(0 0 0 / 24%));
604
+ }
605
+
606
+ .brand-icon-bg {
607
+ fill: #000000;
608
+ }
609
+
610
+ .brand-icon-glow {
611
+ fill: color-mix(in srgb, #66d9f2 22%, transparent);
612
+ }
613
+
614
+ .brand-icon-ring {
615
+ fill: none;
616
+ stroke: #66d9f2;
617
+ stroke-opacity: 0.36;
618
+ stroke-width: 18;
619
+ }
620
+
621
+ .brand-icon-glyph {
622
+ fill: #8ce8ff;
623
+ }
624
+
597
625
  .sidebar-history-controls {
598
626
  background: color-mix(in srgb, var(--surface-muted) 72%, transparent);
599
627
  border: 1px solid var(--border);
package/setup.sh CHANGED
@@ -12,7 +12,7 @@ shopt -s inherit_errexit 2>/dev/null || true
12
12
  # AI Assistant Server Access Framework Setup Script
13
13
  # Helps developers set up the framework for their infrastructure
14
14
  #
15
- # Version: 3.31.33
15
+ # Version: 3.31.35
16
16
  #
17
17
  # Quick Install:
18
18
  # npm install -g aidevops && aidevops update (recommended)