Finish the Cairn OBS rename through services, docs, and assets
The rename commit before this one covered module paths and the obvious user-facing strings; this is the rest of it -- the places where "sentry" was a default value, a filename, or a picture rather than a word in a sentence. Defaults that changed: CLICKHOUSE_DATABASE (sentry -> cairnobs), POSTGRES_DATABASE (sentry_metadata -> cairnobs_metadata), and POSTGRES_USERNAME (sentry -> cairnobs), across api/alerting/ingest and the enterprise binaries, plus the compose files and migrate scripts that create those objects. These are *defaults*, so a deployment that sets them explicitly is unaffected -- but any deployment relying on the old defaults must have its environment updated before it picks this up, or it will come up pointing at a database that doesn't exist. Also: the light-mode logo variants (the dark ones existed alone, so the landing page and sidebar rendered a dark mark on a light background), regenerated favicons, and the docs/README/threat-model prose that still said Sentry.
@@ -2,8 +2,8 @@
|
||||
<!-- Favicon: simplified 3-stone mark on terminal-dark rounded square -->
|
||||
<rect x="0" y="0" width="64" height="64" rx="14" fill="#0D1117"/>
|
||||
<g>
|
||||
<rect x="12" y="38" width="40" height="13" rx="6.5" fill="#FF8A00" transform="rotate(-2 32 44.5)"/>
|
||||
<rect x="18" y="24" width="28" height="12" rx="6" fill="#FF9D2E" transform="rotate(3 32 30)"/>
|
||||
<rect x="23" y="12" width="18" height="10" rx="5" fill="#FFB157" transform="rotate(-3 32 17)"/>
|
||||
<path d="M14,50 L10,45 L13,40 L22,37 L34,40 L44,37 L53,41 L50,47 L40,51 L26,48 Z" fill="#FF8A00"/>
|
||||
<path d="M20,35 L16,30 L19,25 L28,23 L36,26 L44,23 L47,28 L43,34 L32,36 L24,33 Z" fill="#FF9D2E"/>
|
||||
<path d="M24,21 L21,16 L25,12 L32,11 L38,13 L41,17 L38,21 L31,22 L27,20 Z" fill="#FFB157"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 551 B After Width: | Height: | Size: 550 B |
@@ -1,10 +1,10 @@
|
||||
<svg width="600" height="140" viewBox="0 0 600 140" xmlns="http://www.w3.org/2000/svg">
|
||||
<!-- Horizontal lockup for dark backgrounds -->
|
||||
<g transform="translate(20,10) scale(0.6)">
|
||||
<rect x="30" y="142" width="140" height="42" rx="20" fill="#E6690E" transform="rotate(-1.5 100 163)"/>
|
||||
<rect x="48" y="106" width="104" height="38" rx="18" fill="#FF8A00" transform="rotate(2.5 100 125)"/>
|
||||
<rect x="64" y="73" width="72" height="34" rx="16" fill="#FF9D2E" transform="rotate(-3 100 90)"/>
|
||||
<rect x="78" y="43" width="44" height="30" rx="14" fill="#FFB157" transform="rotate(3.5 100 58)"/>
|
||||
<path d="M32,184 L20,172 L26,155 L18,146 L46,138 L82,144 L112,134 L150,140 L176,150 L182,168 L170,184 L142,192 L100,182 L64,190 Z" fill="#E6690E"/>
|
||||
<path d="M54,144 L42,134 L50,118 L44,108 L68,100 L96,106 L118,98 L142,106 L156,116 L150,132 L160,142 L132,150 L100,140 L70,148 Z" fill="#FF8A00"/>
|
||||
<path d="M68,106 L58,96 L64,82 L60,72 L80,66 L100,72 L116,64 L132,74 L138,86 L130,98 L138,106 L112,112 L88,104 L72,110 Z" fill="#FF9D2E"/>
|
||||
<path d="M80,70 L72,60 L78,48 L74,40 L92,36 L106,42 L116,34 L126,44 L124,56 L130,66 L108,72 L92,64 L82,70 Z" fill="#FFB157"/>
|
||||
</g>
|
||||
<text x="160" y="87" font-family="'JetBrains Mono','Fira Code',ui-monospace,monospace" font-size="48" font-weight="700" fill="#F2F2F2" letter-spacing="-1">cairn</text>
|
||||
<text x="342" y="87" font-family="'JetBrains Mono','Fira Code',ui-monospace,monospace" font-size="48" font-weight="700" fill="#FF8A00" letter-spacing="1"> obs</text>
|
||||
|
||||
|
Before Width: | Height: | Size: 1017 B After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,12 @@
|
||||
<svg width="600" height="140" viewBox="0 0 600 140" xmlns="http://www.w3.org/2000/svg">
|
||||
<!-- Horizontal lockup for light backgrounds -->
|
||||
<g transform="translate(20,10) scale(0.6)">
|
||||
<path d="M32,184 L20,172 L26,155 L18,146 L46,138 L82,144 L112,134 L150,140 L176,150 L182,168 L170,184 L142,192 L100,182 L64,190 Z" fill="#E6690E"/>
|
||||
<path d="M54,144 L42,134 L50,118 L44,108 L68,100 L96,106 L118,98 L142,106 L156,116 L150,132 L160,142 L132,150 L100,140 L70,148 Z" fill="#FF8A00"/>
|
||||
<path d="M68,106 L58,96 L64,82 L60,72 L80,66 L100,72 L116,64 L132,74 L138,86 L130,98 L138,106 L112,112 L88,104 L72,110 Z" fill="#FF9D2E"/>
|
||||
<path d="M80,70 L72,60 L78,48 L74,40 L92,36 L106,42 L116,34 L126,44 L124,56 L130,66 L108,72 L92,64 L82,70 Z" fill="#FFB157"/>
|
||||
</g>
|
||||
<text x="160" y="87" font-family="'JetBrains Mono','Fira Code',ui-monospace,monospace" font-size="48" font-weight="700" fill="#111315" letter-spacing="-1">cairn</text>
|
||||
<text x="342" y="87" font-family="'JetBrains Mono','Fira Code',ui-monospace,monospace" font-size="48" font-weight="700" fill="#E6690E" letter-spacing="1"> obs</text>
|
||||
<rect x="540" y="49" width="14" height="38" fill="#E6690E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -1,10 +1,10 @@
|
||||
<svg width="360" height="360" viewBox="0 0 360 360" xmlns="http://www.w3.org/2000/svg">
|
||||
<!-- Stacked lockup for dark backgrounds / square placements -->
|
||||
<g transform="translate(80,30) scale(1.0)">
|
||||
<rect x="30" y="142" width="140" height="42" rx="20" fill="#E6690E" transform="rotate(-1.5 100 163)"/>
|
||||
<rect x="48" y="106" width="104" height="38" rx="18" fill="#FF8A00" transform="rotate(2.5 100 125)"/>
|
||||
<rect x="64" y="73" width="72" height="34" rx="16" fill="#FF9D2E" transform="rotate(-3 100 90)"/>
|
||||
<rect x="78" y="43" width="44" height="30" rx="14" fill="#FFB157" transform="rotate(3.5 100 58)"/>
|
||||
<path d="M32,184 L20,172 L26,155 L18,146 L46,138 L82,144 L112,134 L150,140 L176,150 L182,168 L170,184 L142,192 L100,182 L64,190 Z" fill="#E6690E"/>
|
||||
<path d="M54,144 L42,134 L50,118 L44,108 L68,100 L96,106 L118,98 L142,106 L156,116 L150,132 L160,142 L132,150 L100,140 L70,148 Z" fill="#FF8A00"/>
|
||||
<path d="M68,106 L58,96 L64,82 L60,72 L80,66 L100,72 L116,64 L132,74 L138,86 L130,98 L138,106 L112,112 L88,104 L72,110 Z" fill="#FF9D2E"/>
|
||||
<path d="M80,70 L72,60 L78,48 L74,40 L92,36 L106,42 L116,34 L126,44 L124,56 L130,66 L108,72 L92,64 L82,70 Z" fill="#FFB157"/>
|
||||
</g>
|
||||
<text x="180" y="290" font-family="'JetBrains Mono','Fira Code',ui-monospace,monospace" font-size="42" font-weight="700" fill="#F2F2F2" letter-spacing="-1" text-anchor="middle">cairn <tspan fill="#FF8A00">obs</tspan></text>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 859 B After Width: | Height: | Size: 1017 B |
@@ -0,0 +1,10 @@
|
||||
<svg width="360" height="360" viewBox="0 0 360 360" xmlns="http://www.w3.org/2000/svg">
|
||||
<!-- Stacked lockup for light backgrounds / square placements -->
|
||||
<g transform="translate(80,30) scale(1.0)">
|
||||
<path d="M32,184 L20,172 L26,155 L18,146 L46,138 L82,144 L112,134 L150,140 L176,150 L182,168 L170,184 L142,192 L100,182 L64,190 Z" fill="#E6690E"/>
|
||||
<path d="M54,144 L42,134 L50,118 L44,108 L68,100 L96,106 L118,98 L142,106 L156,116 L150,132 L160,142 L132,150 L100,140 L70,148 Z" fill="#FF8A00"/>
|
||||
<path d="M68,106 L58,96 L64,82 L60,72 L80,66 L100,72 L116,64 L132,74 L138,86 L130,98 L138,106 L112,112 L88,104 L72,110 Z" fill="#FF9D2E"/>
|
||||
<path d="M80,70 L72,60 L78,48 L74,40 L92,36 L106,42 L116,34 L126,44 L124,56 L130,66 L108,72 L92,64 L82,70 Z" fill="#FFB157"/>
|
||||
</g>
|
||||
<text x="180" y="290" font-family="'JetBrains Mono','Fira Code',ui-monospace,monospace" font-size="42" font-weight="700" fill="#111315" letter-spacing="-1" text-anchor="middle">cairn <tspan fill="#E6690E">obs</tspan></text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1018 B |
@@ -9,9 +9,10 @@
|
||||
type CurrentSession,
|
||||
type LocalSession
|
||||
} from '$lib/api';
|
||||
import { getTheme, setTheme, type Theme } from '$lib/theme.svelte';
|
||||
import { getTheme, setTheme, isLight, type Theme } from '$lib/theme.svelte';
|
||||
import { getDensity, toggleDensity } from '$lib/density.svelte';
|
||||
import logo from '$lib/assets/logo-horizontal-dark.svg';
|
||||
import logoDark from '$lib/assets/logo-horizontal-dark.svg';
|
||||
import logoLight from '$lib/assets/logo-horizontal-light.svg';
|
||||
|
||||
let {
|
||||
onOpenPalette,
|
||||
@@ -84,7 +85,7 @@
|
||||
<aside class="sidebar" class:mobile-open={mobileOpen}>
|
||||
<div class="brand">
|
||||
<a href="/" class="brand-link" onclick={onCloseMobile}>
|
||||
<img src={logo} alt="Cairn OBS" class="brand-logo" />
|
||||
<img src={isLight() ? logoLight : logoDark} alt="Cairn OBS" class="brand-logo" />
|
||||
</a>
|
||||
<button type="button" class="close-mobile" onclick={onCloseMobile} aria-label="Close menu">✕</button>
|
||||
</div>
|
||||
|
||||
@@ -34,10 +34,33 @@ const initial = readStored();
|
||||
let theme = $state<Theme>(initial);
|
||||
apply(initial);
|
||||
|
||||
// Tracks the OS preference live (not just at load) so "system" stays
|
||||
// accurate across a theme change the user makes outside the app, same
|
||||
// as app.css/tokens.css's own `prefers-color-scheme` media query does
|
||||
// automatically for CSS -- anything in JS that needs to know "is the UI
|
||||
// actually light right now" (e.g. picking a light/dark logo asset) has
|
||||
// to track this the same way, or it drifts from what's on screen.
|
||||
let prefersLight = $state(
|
||||
typeof window !== 'undefined' ? window.matchMedia('(prefers-color-scheme: light)').matches : false
|
||||
);
|
||||
if (typeof window !== 'undefined') {
|
||||
window
|
||||
.matchMedia('(prefers-color-scheme: light)')
|
||||
.addEventListener('change', (e) => (prefersLight = e.matches));
|
||||
}
|
||||
|
||||
export function getTheme(): Theme {
|
||||
return theme;
|
||||
}
|
||||
|
||||
// Whether the rendered UI is in light mode right now -- explicit
|
||||
// "light", or "system" while the OS itself prefers light. Mirrors
|
||||
// app.css's `html[data-theme='light']` / `prefers-color-scheme: light`
|
||||
// precedence exactly.
|
||||
export function isLight(): boolean {
|
||||
return theme === 'light' || (theme === 'system' && prefersLight);
|
||||
}
|
||||
|
||||
export function setTheme(t: Theme) {
|
||||
theme = t;
|
||||
apply(t);
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
// /search (the old root; every prior link/shortcut/drill-down that
|
||||
// used to point at "/" expecting the query page now points at
|
||||
// "/search" explicitly, see NavSidebar/CommandPalette/drilldown.ts).
|
||||
import logo from '$lib/assets/logo-stacked-dark.svg';
|
||||
import logoDark from '$lib/assets/logo-stacked-dark.svg';
|
||||
import logoLight from '$lib/assets/logo-stacked-light.svg';
|
||||
import { isLight } from '$lib/theme.svelte';
|
||||
import { Button } from '$lib/components/ui';
|
||||
|
||||
const shortcuts: { href: string; label: string; hint: string }[] = [
|
||||
@@ -15,7 +17,7 @@
|
||||
</script>
|
||||
|
||||
<main>
|
||||
<img src={logo} alt="Cairn OBS" class="logo" />
|
||||
<img src={isLight() ? logoLight : logoDark} alt="Cairn OBS" class="logo" />
|
||||
<p class="tagline">
|
||||
One query bar for filter/stats queries and free-text search across every host and service
|
||||
you're shipping logs from.
|
||||
|
||||