feat: osv-startup.ps1 — gradient glow boxes, green inner text, purple-to-green border effect [Phase 4]

This commit is contained in:
chrischristiansen-glitch 2026-05-22 02:44:37 +02:00
parent 5ceb0cd282
commit b993055bbd

View File

@ -5,8 +5,6 @@ $REPO = "G:\Shared drives\OS-VAUCO-DRIVE\OSVauco"
$PING = "https://opax.vauco.no/ping" $PING = "https://opax.vauco.no/ping"
$LOG = "$REPO\docs\OSVAUCO_OPAX_SESSION_LOG.md" $LOG = "$REPO\docs\OSVAUCO_OPAX_SESSION_LOG.md"
$W = 52 $W = 52
$LINE = " " + ("" * $W)
$THIN = " " + ("" * $W)
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
Set-Location $REPO Set-Location $REPO
@ -15,82 +13,116 @@ Clear-Host
$gcOK = $adcOK = $opaxOK = $gitOK = $false $gcOK = $adcOK = $opaxOK = $gitOK = $false
$gitOut = git pull 2>&1; $gitOK = ($LASTEXITCODE -eq 0) $gitOut = git pull 2>&1; $gitOK = ($LASTEXITCODE -eq 0)
try { $gcAcc = gcloud auth list --filter=status:ACTIVE --format="value(account)" 2>$null try { $gcAcc = gcloud auth list --filter=status:ACTIVE --format="value(account)" 2>$null
if ($gcAcc) { $gcOK = $true; gcloud config set project propane-will-491900-m5 2>$null|Out-Null if ($gcAcc) { $gcOK = $true
gcloud config set project propane-will-491900-m5 2>$null|Out-Null
gcloud config set compute/region us-central1 2>$null|Out-Null } } catch {} gcloud config set compute/region us-central1 2>$null|Out-Null } } catch {}
try { if (gcloud auth application-default print-access-token 2>$null) { $adcOK = $true } } catch {} try { if (gcloud auth application-default print-access-token 2>$null) { $adcOK = $true } } catch {}
try { if ((Invoke-RestMethod -Uri $PING -TimeoutSec 5).status -eq 'ok') { $opaxOK = $true } } catch {} try { if ((Invoke-RestMethod -Uri $PING -TimeoutSec 5).status -eq 'ok') { $opaxOK = $true } } catch {}
$allOK = $gitOK -and $opaxOK -and $gcOK $allOK = $gitOK -and $opaxOK -and $gcOK
$BC = if ($allOK) { 'Green' } else { 'Yellow' }
$IC = if ($allOK) { 'Green' } else { 'Gray' } $IC = if ($allOK) { 'Green' } else { 'Gray' }
$P = 'Magenta'
function Box($text, $color) { # Gradient top-border: Magenta -> DarkGreen -> Green
$pad = $W - 4 - $text.Length $G1 = 'Magenta'; $G2 = 'DarkGreen'; $G3 = 'Green'
if ($pad -lt 0) { $text = $text.Substring(0, $W-5) + ""; $pad = 0 }
Write-Host ("" + $text + (" " * $pad) + "") -ForegroundColor $color function GlowBox($lines) {
} # Top border — gradient left=purple, mid=darkgreen, right=green
function Glow($label, $val, $ok) { $seg = [math]::Floor($W / 3)
$sym = if ($ok) { "" } else { "" } Write-Host " " -NoNewline
$col = if ($ok) { 'Green' } else { 'Yellow' } Write-Host ("" * $seg) -NoNewline -ForegroundColor $G1
$line = "$sym $label : $val" Write-Host ("" * $seg) -NoNewline -ForegroundColor $G2
Box $line $col Write-Host ("" * ($W - $seg*2)) -ForegroundColor $G3
foreach ($line in $lines) {
$pad = $W - 4 - $line.Length
if ($pad -lt 0) { $line = $line.Substring(0, $W - 5) + ""; $pad = 0 }
Write-Host " " -NoNewline
Write-Host "" -NoNewline -ForegroundColor $G1
Write-Host (" " + $line + (" " * $pad) + " ") -NoNewline -ForegroundColor Green
Write-Host "" -ForegroundColor $G3
}
# Bottom border — gradient right=purple, mid=darkgreen, left=green
Write-Host " " -NoNewline
Write-Host ("" * ($W - $seg*2)) -NoNewline -ForegroundColor $G3
Write-Host ("" * $seg) -NoNewline -ForegroundColor $G2
Write-Host ("" * $seg) -ForegroundColor $G1
} }
# ── TOPP ──────────────────────────────────────────────────── function ThinBox($lines, $titleColor) {
Write-Host " " -NoNewline
Write-Host ("" * $W) -ForegroundColor $titleColor
foreach ($line in $lines) {
$pad = $W - 4 - $line.Length
if ($pad -lt 0) { $line = $line.Substring(0, $W - 5) + ""; $pad = 0 }
$ok = $line -match "^✅"
$col = if ($ok) { 'Green' } else { 'Gray' }
Write-Host " " -NoNewline
Write-Host "" -NoNewline -ForegroundColor $titleColor
Write-Host (" " + $line + (" " * ($pad+1))) -ForegroundColor $col
}
Write-Host " " -NoNewline
Write-Host ("" * $W) -ForegroundColor $titleColor
}
# ══ TOPP GLOW-BOKS ══════════════════════════════════════════
Write-Host "" Write-Host ""
Write-Host $LINE -ForegroundColor $BC GlowBox @(
Box " O S V A U C O · O P A X" $BC "",
Box " VS Code · us-central1 · gemini-2.5-pro" $IC " O S V A U C O · O P A X",
Box " $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" $IC " us-central1 · gemini-2.5-pro",
Write-Host $LINE -ForegroundColor $BC " $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')",
""
)
Write-Host "" Write-Host ""
# ── NESTE OPPGAVE ─────────────────────────────────────────── # ══ NESTE OPPGAVE ═══════════════════════════════════════════
Write-Host " ■ NESTE OPPGAVE" -ForegroundColor $P Write-Host " ■ NESTE OPPGAVE" -ForegroundColor Magenta
Write-Host $THIN -ForegroundColor $P $nesteLines = @()
if (Test-Path $LOG) { if (Test-Path $LOG) {
$m = [regex]::Match((Get-Content $LOG -Raw -Encoding UTF8),'(?s)## NESTE OPPGAVE\r?\n(.*?)(?=\r?\n## |$)') $m = [regex]::Match((Get-Content $LOG -Raw -Encoding UTF8),'(?s)## NESTE OPPGAVE\r?\n(.*?)(?=\r?\n## |$)')
if ($m.Success) { if ($m.Success) {
$m.Groups[1].Value.Trim() -split "`n" | Select-Object -First 3 | ForEach-Object { $nesteLines = $m.Groups[1].Value.Trim() -split "`n" |
$t = $_.Trim(); if ($t -and $t -ne '---') { Box $t $BC } Where-Object { $_.Trim() -and $_.Trim() -ne '---' } |
} Select-Object -First 2 |
} else { Box "Sjekk docs/VAUCO_OS_ROADMAP.md" Yellow } ForEach-Object { $_.Trim() }
} else { Box "Session log ikke funnet" Yellow } }
Write-Host $THIN -ForegroundColor $P
Write-Host ""
# ── DOCS ────────────────────────────────────────────────────
Write-Host " ■ SISTE DOCS" -ForegroundColor $P
Write-Host $THIN -ForegroundColor $P
git -C $REPO log -3 --pretty=format:"%h %cd %s" --date=short -- docs 2>&1 | ForEach-Object {
$s = $_ -replace '[^\x00-\x7FæøåÆØÅ—“”]+',''
Box $s DarkGreen
} }
Write-Host $THIN -ForegroundColor $P if (-not $nesteLines) { $nesteLines = @("Sjekk docs/VAUCO_OS_ROADMAP.md") }
ThinBox $nesteLines Magenta
Write-Host "" Write-Host ""
# ── STATUS ────────────────────────────────────────────────── # ══ DOCS ════════════════════════════════════════════════════
Write-Host " ■ STATUS" -ForegroundColor $P Write-Host " ■ SISTE DOCS" -ForegroundColor Magenta
Write-Host $THIN -ForegroundColor $P $docLines = git -C $REPO log -3 --pretty=format:"%h %cd %s" --date=short -- docs 2>&1 |
Glow "Git " (if ($gitOut -match 'Already') {'up to date'} else {'oppdatert'}) $gitOK ForEach-Object { ($_ -replace '[^\x00-\x7F\u00e6\u00f8\u00e5\u00c6\u00d8\u00c5\u2014\u2013]+','').Trim() }
Glow "GCP " ($gcAcc -replace '@vauco.no','') $gcOK ThinBox $docLines DarkGreen
Glow "ADC " (if ($adcOK) {'OK'} else {'kjør: gcloud auth application-default login'}) $adcOK
Glow "OPAX" "opax.vauco.no" $opaxOK
Write-Host $THIN -ForegroundColor $P
Write-Host "" Write-Host ""
# ── BUNN ──────────────────────────────────────────────────── # ══ STATUS ══════════════════════════════════════════════════
Write-Host $LINE -ForegroundColor $BC Write-Host " ■ STATUS" -ForegroundColor Magenta
$statusLines = @(
("✅ Git : " + (if ($gitOut -match 'Already') {'up to date'} else {'oppdatert'})),
((if ($gcOK) {'✅'} else {'⚠ '}) + " GCP : " + ($gcAcc -replace '@vauco.no','')),
((if ($adcOK) {'✅'} else {'⚠ '}) + " ADC : " + (if ($adcOK) {'OK'} else {'gcloud auth application-default login'})),
((if ($opaxOK) {'✅'} else {'❌'}) + " OPAX : opax.vauco.no")
)
ThinBox $statusLines Magenta
Write-Host ""
# ══ BUNN GLOW-BOKS ══════════════════════════════════════════
if ($allOK) { if ($allOK) {
Box " ▶▶ ALL SYSTEMS GREEN ◀◀" 'Green' GlowBox @("", " ▶▶ ALL SYSTEMS GREEN ◀◀", "")
} else { } else {
Box " ⚠ PARTIAL — sjekk status over" 'Yellow' Write-Host " " -NoNewline
Write-Host ("" * $W) -ForegroundColor Yellow
Write-Host " █ ⚠ PARTIAL — sjekk status over" -ForegroundColor Yellow
Write-Host " " -NoNewline
Write-Host ("" * $W) -ForegroundColor Yellow
} }
Write-Host $LINE -ForegroundColor $BC
Write-Host "" Write-Host ""
# ── CUSTOM PROMPT ─────────────────────────────────────────── # ══ CUSTOM PROMPT ═══════════════════════════════════════════
function prompt { function prompt {
Write-Host " G:\Shared-drives\" -NoNewline -ForegroundColor Magenta Write-Host " G:\Shared-drives\" -NoNewline -ForegroundColor Magenta
Write-Host "OS" -NoNewline -ForegroundColor White Write-Host "OS" -NoNewline -ForegroundColor White