aidevops 3.29.3 → 3.29.5

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.29.3-blue.svg)](https://github.com/marcusquinn/aidevops/releases)
61
+ [![Version](https://img.shields.io/badge/Version-3.29.5-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.29.3
1
+ 3.29.5
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.29.3
8
+ # Version: 3.29.5
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.29.3",
3
+ "version": "3.29.5",
4
4
  "description": "AI DevOps Framework - AI-assisted development workflows, code quality, and deployment automation",
5
5
  "type": "module",
6
6
  "workspaces": [
@@ -913,15 +913,15 @@ final class AppDelegate: NSObject, NSApplicationDelegate, WKNavigationDelegate,
913
913
  <meta charset="utf-8">
914
914
  <meta name="viewport" content="width=device-width, initial-scale=1">
915
915
  <style>
916
- :root { --accent: #b2e969; --border: #2c3324; --panel: #11130f; --muted: #b9c3b0; }
916
+ :root { --accent: hsl(123 74% 66%); --border: rgb(255 255 255 / 11%); --panel: #151515; --muted: rgb(255 255 255 / 70%); }
917
917
  * { box-sizing: border-box; }
918
- body { background: radial-gradient(ellipse at top left, rgb(178 233 105 / 10%), transparent 34%), #0a0a0a; color: #f6f7f2; font: 15px -apple-system, BlinkMacSystemFont, sans-serif; height: 100vh; margin: 0; }
918
+ 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; }
919
919
  .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%); }
920
920
  h1 { font-size: 22px; margin: 0 0 10px; }
921
921
  p { color: #b9c3b0; line-height: 1.5; margin: 0; }
922
- code { color: #b2e969; }
922
+ code { color: var(--accent); }
923
923
  .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; }
924
- .brand { align-items: center; backdrop-filter: blur(18px); background: rgb(17 19 15 / 78%); border: 1px solid rgb(178 233 105 / 34%); border-radius: 24px; box-shadow: 0 24px 90px rgb(178 233 105 / 14%), 0 20px 80px rgb(0 0 0 / 35%); 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; }
924
+ .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; }
925
925
  .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; }
926
926
  .brand span { color: #f6f7f2; font-size: .48em; letter-spacing: -0.04em; margin-right: .18em; }
927
927
  .brand b, .brand em { color: var(--accent); font-style: normal; }
@@ -947,7 +947,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate, WKNavigationDelegate,
947
947
  .status { align-items: center; display: flex; gap: 10px; grid-column: 1 / -1; justify-content: center; padding: 0 12px; }
948
948
  .status i { border-radius: 999px; height: 8px; width: 8px; }
949
949
  .status span { height: 10px; width: 96px; }
950
- .rail i, .sidebar b, .sidebar span, .sidebar i, .workspace b, .workspace span, .workspace i, .cards i, .block, .status i, .status span { animation: pulse 1.35s ease-in-out infinite; background: linear-gradient(90deg, #1a2116, rgb(178 233 105 / 18%), #1a2116); background-size: 220% 100%; border: 1px solid var(--border); border-radius: 999px; display: block; }
950
+ .rail i, .sidebar b, .sidebar span, .sidebar i, .workspace b, .workspace span, .workspace i, .cards i, .block, .status i, .status span { animation: pulse 1.35s ease-in-out infinite; background: linear-gradient(90deg, #202020, hsl(123 74% 66% / 16%), #202020); background-size: 220% 100%; border: 1px solid var(--border); border-radius: 999px; display: block; }
951
951
  .block, .cards i { border-radius: 18px; }
952
952
  @keyframes pulse { 0% { background-position: 120% 0; opacity: .52; } 50% { opacity: .95; } 100% { background-position: -120% 0; opacity: .52; } }
953
953
  @keyframes cursor { 0%, 48% { opacity: 1; } 49%, 100% { opacity: 0; } }
@@ -4,19 +4,67 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>aidevops GUI</title>
7
+ <script>
8
+ (() => {
9
+ try {
10
+ const params = new URLSearchParams(window.location.search);
11
+ const savedTheme = window.localStorage.getItem("aidevops-gui-theme");
12
+ const systemDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
13
+ document.documentElement.dataset.theme = savedTheme === "light" || savedTheme === "dark" ? savedTheme : systemDark ? "dark" : "light";
14
+ if (params.get("desktop") === "macos") {
15
+ document.documentElement.dataset.desktopShell = "macos";
16
+ }
17
+ } catch {
18
+ document.documentElement.dataset.theme = "dark";
19
+ }
20
+ })();
21
+ </script>
22
+ <style>
23
+ :root { --accent-hue: 123; --accent: hsl(var(--accent-hue) 50% 36%); --bg-secondary: #f8f8f8; --border: rgb(0 0 0 / 13%); --surface: #fff; --surface-elevated: #fff; --surface-muted: #f0f0f0; --text-primary: #111; --text-secondary: rgb(17 17 17 / 75%); color-scheme: light; }
24
+ :root[data-theme="dark"] { --accent: hsl(var(--accent-hue) 74% 66%); --bg-secondary: #111; --border: rgb(255 255 255 / 11%); --surface: #0a0a0a; --surface-elevated: #151515; --surface-muted: #202020; --text-primary: #fff; --text-secondary: rgb(255 255 255 / 70%); color-scheme: dark; }
25
+ * { box-sizing: border-box; }
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
+ .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
+ .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; }
30
+ .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
+ .loading-brand-chevron, .loading-brand-cursor { color: var(--accent); }
32
+ .loading-brand-cursor { animation: loading-cursor-blink 0.95s steps(1, end) infinite; }
33
+ .loading-brand-status { color: var(--text-secondary); font-size: 0.78rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; }
34
+ .loading-panel, .desktop-status-bar { background: color-mix(in srgb, var(--surface-elevated) 96%, transparent); border: 1px solid var(--border); border-radius: 18px; box-shadow: inset 0 1px 0 rgb(255 255 255 / 10%); overflow: hidden; }
35
+ .machine-rail { align-content: start; display: grid; gap: 10px; justify-items: center; padding: 12px 8px; }
36
+ .app-sidebar { display: grid; grid-template-rows: auto auto 1fr auto; }
37
+ .app-inset { display: grid; grid-template-rows: auto 1fr; }
38
+ .loading-sidebar-header, .loading-workspace-header { align-items: center; display: flex; gap: 12px; padding: 16px; }
39
+ .loading-sidebar-footer, .loading-list, .loading-workspace-body { display: grid; gap: 12px; padding: 16px; }
40
+ .loading-sidebar-footer { border-top: 1px solid var(--border); margin-top: auto; }
41
+ .loading-workspace-header { border-bottom: 1px solid var(--border); }
42
+ .loading-workspace-header .loading-search { flex: 1; }
43
+ .loading-card-grid { display: grid; gap: 14px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
44
+ .desktop-status-bar { align-items: center; display: flex; gap: 10px; grid-column: 1 / -1; justify-content: center; padding: 0 12px; }
45
+ .loading-line, .loading-pill, .loading-orb, .loading-logo, .loading-icon, .loading-search, .loading-circle, .loading-card, .loading-panel-block, .loading-dot { animation: loading-pulse 1.35s ease-in-out infinite; background: linear-gradient(90deg, color-mix(in srgb, var(--surface-muted) 76%, transparent), color-mix(in srgb, var(--accent) 16%, var(--surface-elevated)), color-mix(in srgb, var(--surface-muted) 76%, transparent)); background-size: 220% 100%; border: 1px solid var(--border); display: block; }
46
+ .loading-line { border-radius: 999px; height: 14px; width: 100%; } .loading-line-wide { width: min(72%, 260px); } .loading-line-short { width: 58%; } .loading-line-hero { height: 34px; width: min(56%, 520px); } .loading-orb { border-radius: 999px; height: 48px; width: 48px; } .loading-logo { border-radius: 11px; height: 44px; width: 44px; } .loading-icon, .loading-circle { border-radius: 999px; height: 34px; width: 34px; } .loading-dot { border-radius: 999px; height: 8px; width: 8px; } .loading-pill, .loading-search { border-radius: 999px; height: 40px; width: 100%; } .loading-card { border-radius: 18px; height: 128px; } .loading-panel-block { border-radius: 20px; height: 240px; } .desktop-status-bar .loading-line { height: 10px; width: 96px; }
47
+ @keyframes loading-pulse { 0% { background-position: 120% 0; opacity: 0.52; } 50% { opacity: 0.95; } 100% { background-position: -120% 0; opacity: 0.52; } }
48
+ @keyframes loading-cursor-blink { 0%, 48% { opacity: 1; } 49%, 100% { opacity: 0; } }
49
+ @media (prefers-reduced-motion: reduce) { .loading-line, .loading-pill, .loading-orb, .loading-logo, .loading-icon, .loading-search, .loading-circle, .loading-card, .loading-panel-block, .loading-dot, .loading-brand-cursor { animation: none; } }
50
+ </style>
7
51
  </head>
8
52
  <body>
9
53
  <div id="root">
10
- <main class="app-shell">
11
- <aside class="sidebar" aria-label="Dashboard navigation">
12
- <div class="brand-mark">aidevops</div>
13
- <button class="nav-item active" type="button"><span>Overview</span><small>Loading local dashboard.</small></button>
54
+ <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
+ <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
+ <aside class="app-sidebar loading-panel" aria-label="sidebar">
58
+ <div class="loading-sidebar-header"><span class="loading-logo"></span><span class="loading-line loading-line-wide"></span></div>
59
+ <span class="loading-pill"></span>
60
+ <div class="loading-list"><span class="loading-line loading-line-short"></span><span class="loading-line"></span><span class="loading-line"></span><span class="loading-line loading-line-short"></span><span class="loading-line"></span><span class="loading-line"></span><span class="loading-line loading-line-short"></span><span class="loading-line"></span></div>
61
+ <div class="loading-sidebar-footer"><span class="loading-pill"></span><span class="loading-line"></span></div>
14
62
  </aside>
15
- <section class="content" aria-label="aidevops status">
16
- <p class="eyebrow">Read-only local dashboard scaffold</p>
17
- <h1>aidevops control plane</h1>
18
- <p class="lede">Loading the local GUI. If this message stays visible, refresh the page or check ~/Library/Logs/aidevops-gui/web.log.</p>
63
+ <section class="app-inset loading-panel" aria-label="workspace">
64
+ <div class="loading-workspace-header"><span class="loading-icon"></span><span class="loading-line loading-line-wide"></span><span class="loading-search"></span><span class="loading-circle"></span><span class="loading-circle"></span></div>
65
+ <div class="loading-workspace-body"><span class="loading-line loading-line-hero"></span><div class="loading-card-grid"><span class="loading-card"></span><span class="loading-card"></span><span class="loading-card"></span><span class="loading-card"></span><span class="loading-card"></span><span class="loading-card"></span></div><span class="loading-panel-block"></span></div>
19
66
  </section>
67
+ <div class="desktop-status-bar" aria-label="status bar"><span class="loading-dot"></span><span class="loading-line"></span><span class="loading-line"></span><span class="loading-line"></span><span class="loading-line"></span></div>
20
68
  </main>
21
69
  </div>
22
70
  <script type="module" src="/src/main.tsx"></script>
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.29.3
15
+ # Version: 3.29.5
16
16
  #
17
17
  # Quick Install:
18
18
  # npm install -g aidevops && aidevops update (recommended)