aidevops 3.31.75 → 3.31.78

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
@@ -60,7 +60,7 @@ The result: an AI operations platform that manages projects across every busines
60
60
  [![Copyright](https://img.shields.io/badge/Copyright-Marcus%20Quinn%202025--2026-blue.svg)](https://github.com/marcusquinn)
61
61
 
62
62
  <!-- Release & Version Info -->
63
- [![Version](https://img.shields.io/badge/Version-3.31.75-blue.svg)](https://github.com/marcusquinn/aidevops/releases)
63
+ [![Version](https://img.shields.io/badge/Version-3.31.78-blue.svg)](https://github.com/marcusquinn/aidevops/releases)
64
64
  [![npm version](https://img.shields.io/npm/v/aidevops)](https://www.npmjs.com/package/aidevops)
65
65
  [![Homebrew](https://img.shields.io/badge/homebrew-marcusquinn%2Ftap-orange)](https://github.com/marcusquinn/homebrew-tap)
66
66
  [![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.75
1
+ 3.31.78
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.75
8
+ # Version: 3.31.78
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.75",
3
+ "version": "3.31.78",
4
4
  "description": "AI DevOps Framework - AI-assisted development workflows, code quality, and deployment automation",
5
5
  "type": "module",
6
6
  "workspaces": [
@@ -362,15 +362,26 @@ export const statusFixture: GuiStatusData = {
362
362
  preview_policy: "hidden_while_locked",
363
363
  actions_policy: "disabled_while_locked",
364
364
  },
365
+ {
366
+ id: "security-routing",
367
+ label: "Security routing metadata",
368
+ data_class: "config metadata",
369
+ labels: ["internal", "provider-allowed"],
370
+ surface_ids: ["security"],
371
+ encrypted: true,
372
+ state: "not_configured",
373
+ preview_policy: "hidden_while_locked",
374
+ actions_policy: "disabled_while_locked",
375
+ },
365
376
  {
366
377
  id: "provider-routing",
367
378
  label: "Provider routing metadata",
368
379
  data_class: "config metadata",
369
380
  labels: ["internal", "provider-allowed"],
370
- surface_ids: ["security", "aiProviders"],
381
+ surface_ids: ["aiProviders"],
371
382
  encrypted: true,
372
383
  state: "not_configured",
373
- preview_policy: "hidden_while_locked",
384
+ preview_policy: "metadata_only",
374
385
  actions_policy: "disabled_while_locked",
375
386
  },
376
387
  {
@@ -37,7 +37,7 @@ import {
37
37
  import type { ContrastPreference, ConversationMode, FontPreference, FontSizePreference, ShellMode, SidebarMode, SurfaceIconName, SurfaceId, SurfaceNavGroup, SurfaceNavItem, ThemePreference } from "./app-model";
38
38
  import { dashboardNavItem, navGroups, sidebarModeForSurface, surfaceRecordCounts, text } from "./app-model";
39
39
  import { SidebarFooter, wrappedOptionIndex } from "./AppearanceControls";
40
- import { VaultPadlock, vaultCollectionForSurface } from "./VaultBadges";
40
+ import { VaultPadlock, vaultCollectionForSurface, vaultCollectionTooltip } from "./VaultBadges";
41
41
 
42
42
  function AidevopsPromptIcon() {
43
43
  return (
@@ -338,7 +338,7 @@ function SidebarItem({ activeSurface, item, recordCount, setActiveSurface, showC
338
338
  }) {
339
339
  const isActive = activeSurface === item.id;
340
340
  const vaultCollection = vaultCollectionForSurface(status.vault, item.id);
341
- const vaultTooltip = vaultCollection ? ` ${text.vaultTooltip}` : "";
341
+ const vaultTooltip = vaultCollection ? ` ${vaultCollectionTooltip(vaultCollection)}` : "";
342
342
  const tooltip = `${item.label}: ${item.description}${vaultTooltip}`;
343
343
  const shouldShowCount = showCount && recordCount !== undefined && recordCount > 0;
344
344
 
@@ -12,7 +12,15 @@ export function vaultCollectionForSurface(
12
12
 
13
13
  export function isVaultSurfaceLocked(vault: GuiVaultStatusData, surface: SurfaceId): boolean {
14
14
  const collection = vaultCollectionForSurface(vault, surface);
15
- return surface !== "vault" && collection?.encrypted === true && !vault.unlocked;
15
+ return surface !== "vault" && collection?.encrypted === true && collection?.preview_policy === "hidden_while_locked" && !vault.unlocked;
16
+ }
17
+
18
+ export function vaultCollectionTooltip(collection: GuiVaultCollectionSummary): string {
19
+ if (collection.preview_policy === "metadata_only") {
20
+ return text.vaultMetadataPreview;
21
+ }
22
+
23
+ return text.vaultTooltip;
16
24
  }
17
25
 
18
26
  export function VaultPadlock({ collection, compact = false, vault }: {
@@ -23,11 +31,10 @@ export function VaultPadlock({ collection, compact = false, vault }: {
23
31
  const locked = collection.state !== "unlocked" || !vault.unlocked;
24
32
  const stateLabel = locked ? "Locked" : "Unlocked";
25
33
  const Icon = locked ? FiLock : FiUnlock;
26
- const tooltip = `${stateLabel}: ${text.vaultTooltip}`;
34
+ const tooltip = `${stateLabel}: ${vaultCollectionTooltip(collection)}`;
27
35
 
28
36
  return (
29
37
  <span
30
- aria-label={`${stateLabel} by aidevops Vault: ${collection.label}`}
31
38
  className={compact ? "vault-padlock compact" : "vault-padlock"}
32
39
  data-vault-state={locked ? "locked" : "unlocked"}
33
40
  title={tooltip}
@@ -316,6 +316,7 @@ export const text = {
316
316
  vaultSetup: "First-use Setup",
317
317
  vaultStatus: "Status",
318
318
  vaultSync: "Sync",
319
+ vaultMetadataPreview: "Encrypted by aidevops Vault; metadata previews stay visible while locked, and protected previews plus write actions require a local unlock.",
319
320
  vaultTooltip: "Encrypted by aidevops Vault; contents visible only when unlocked through app or authorised vault commands.",
320
321
  vaultUnlockCta: "Unlock Vault",
321
322
  vaultUnlockHint: "Run `aidevops vault unlock` in a local terminal and enter the passphrase only into the hidden prompt.",
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.75
15
+ # Version: 3.31.78
16
16
  #
17
17
  # Quick Install:
18
18
  # npm install -g aidevops && aidevops update (recommended)