diff --git a/scripts/osv-startup.ps1 b/scripts/osv-startup.ps1 index 1aff796..4d083fd 100644 --- a/scripts/osv-startup.ps1 +++ b/scripts/osv-startup.ps1 @@ -5,8 +5,6 @@ $REPO = "G:\Shared drives\OS-VAUCO-DRIVE\OSVauco" $PING = "https://opax.vauco.no/ping" $LOG = "$REPO\docs\OSVAUCO_OPAX_SESSION_LOG.md" $W = 52 -$LINE = " " + ("█" * $W) -$THIN = " " + ("─" * $W) [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 Set-Location $REPO @@ -15,82 +13,116 @@ Clear-Host $gcOK = $adcOK = $opaxOK = $gitOK = $false $gitOut = git pull 2>&1; $gitOK = ($LASTEXITCODE -eq 0) 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 {} 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 {} $allOK = $gitOK -and $opaxOK -and $gcOK -$BC = if ($allOK) { 'Green' } else { 'Yellow' } $IC = if ($allOK) { 'Green' } else { 'Gray' } -$P = 'Magenta' -function Box($text, $color) { - $pad = $W - 4 - $text.Length - if ($pad -lt 0) { $text = $text.Substring(0, $W-5) + "…"; $pad = 0 } - Write-Host (" █ " + $text + (" " * $pad) + " █") -ForegroundColor $color -} -function Glow($label, $val, $ok) { - $sym = if ($ok) { "✅" } else { "⚠ " } - $col = if ($ok) { 'Green' } else { 'Yellow' } - $line = "$sym $label : $val" - Box $line $col +# Gradient top-border: Magenta -> DarkGreen -> Green +$G1 = 'Magenta'; $G2 = 'DarkGreen'; $G3 = 'Green' + +function GlowBox($lines) { + # Top border — gradient left=purple, mid=darkgreen, right=green + $seg = [math]::Floor($W / 3) + Write-Host " " -NoNewline + Write-Host ("█" * $seg) -NoNewline -ForegroundColor $G1 + Write-Host ("█" * $seg) -NoNewline -ForegroundColor $G2 + 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 $LINE -ForegroundColor $BC -Box " O S V A U C O · O P A X" $BC -Box " VS Code · us-central1 · gemini-2.5-pro" $IC -Box " $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" $IC -Write-Host $LINE -ForegroundColor $BC +GlowBox @( + "", + " O S V A U C O · O P A X", + " us-central1 · gemini-2.5-pro", + " $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')", + "" +) Write-Host "" -# ── NESTE OPPGAVE ─────────────────────────────────────────── -Write-Host " ■ NESTE OPPGAVE" -ForegroundColor $P -Write-Host $THIN -ForegroundColor $P +# ══ NESTE OPPGAVE ═══════════════════════════════════════════ +Write-Host " ■ NESTE OPPGAVE" -ForegroundColor Magenta +$nesteLines = @() if (Test-Path $LOG) { $m = [regex]::Match((Get-Content $LOG -Raw -Encoding UTF8),'(?s)## NESTE OPPGAVE\r?\n(.*?)(?=\r?\n## |$)') if ($m.Success) { - $m.Groups[1].Value.Trim() -split "`n" | Select-Object -First 3 | ForEach-Object { - $t = $_.Trim(); if ($t -and $t -ne '---') { Box $t $BC } - } - } else { Box "Sjekk docs/VAUCO_OS_ROADMAP.md" Yellow } -} 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 + $nesteLines = $m.Groups[1].Value.Trim() -split "`n" | + Where-Object { $_.Trim() -and $_.Trim() -ne '---' } | + Select-Object -First 2 | + ForEach-Object { $_.Trim() } + } } -Write-Host $THIN -ForegroundColor $P +if (-not $nesteLines) { $nesteLines = @("Sjekk docs/VAUCO_OS_ROADMAP.md") } +ThinBox $nesteLines Magenta Write-Host "" -# ── STATUS ────────────────────────────────────────────────── -Write-Host " ■ STATUS" -ForegroundColor $P -Write-Host $THIN -ForegroundColor $P -Glow "Git " (if ($gitOut -match 'Already') {'up to date'} else {'oppdatert'}) $gitOK -Glow "GCP " ($gcAcc -replace '@vauco.no','') $gcOK -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 +# ══ DOCS ════════════════════════════════════════════════════ +Write-Host " ■ SISTE DOCS" -ForegroundColor Magenta +$docLines = git -C $REPO log -3 --pretty=format:"%h %cd %s" --date=short -- docs 2>&1 | + ForEach-Object { ($_ -replace '[^\x00-\x7F\u00e6\u00f8\u00e5\u00c6\u00d8\u00c5\u2014\u2013]+','').Trim() } +ThinBox $docLines DarkGreen Write-Host "" -# ── BUNN ──────────────────────────────────────────────────── -Write-Host $LINE -ForegroundColor $BC +# ══ STATUS ══════════════════════════════════════════════════ +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) { - Box " ▶▶ ALL SYSTEMS GREEN ◀◀" 'Green' + GlowBox @("", " ▶▶ ALL SYSTEMS GREEN ◀◀", "") } 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 "" -# ── CUSTOM PROMPT ─────────────────────────────────────────── +# ══ CUSTOM PROMPT ═══════════════════════════════════════════ function prompt { Write-Host " G:\Shared-drives\" -NoNewline -ForegroundColor Magenta Write-Host "OS" -NoNewline -ForegroundColor White