Releases: SysAdminDoc/Vantage
v0.9.0
v0.9.0 — 2026-05-01
Added
- Theme expansion — Appearance now supports System, Mocha, Macchiato, Frappe, and Latte. System resolves from
prefers-color-schemeand updates live when the browser or OS color scheme changes. - Animated background controls — Live backgrounds now expose Motion (System, Still, Calm, Full) and Atmosphere (Soft, Balanced, Vivid) controls. Reduced-motion preferences always force Still; Calm keeps ambient sky/weather movement while disabling rare flyovers, bursts, and parallax.
- Workspace visual profiles — workspace snapshots now include theme and scenery, and switching workspaces reapplies the effective theme/accent alongside the saved background.
- Workspace system-theme refresh — active workspaces that use the System theme now respond to browser/OS color-scheme changes even when the base profile uses a fixed theme.
- Live reduced-motion refresh — animated backgrounds now re-resolve Motion when browser/OS reduced-motion preferences change while Vantage is open.
- Motion settings clarity — the Background panel now explains whether System motion currently resolves to Full or Still.
- Accent-aware fallback atmosphere — the theme gradient shown when backgrounds are off now follows the active accent color instead of fixed mauve/blue tones.
- Visual background presets and readability — Background settings now include Focus, Ambient, Showcase, and Wallpaper presets, plus a Readability control that tunes overlay strength independently from Atmosphere.
- Scene preview controls and state badges — Live background settings now show resolved theme/motion/weather/scenery state badges and session-only preview controls for time, season, weather, scenery, and holiday variants.
- Background QA gallery —
qa-scenes.htmlrenders a grid of forced live-scene variants, withnode scripts/qa-scenes-smoke.mjscovering the gallery and visual-control hooks. - Local visual QA shim — local-server runs now get a guarded
chrome.storageshim so the new tab and QA gallery can render outside the extension runtime without changing installed-extension behavior. - Visual QA URL overrides — QA URLs now support deterministic theme, accent, motion, atmosphere, readability, and scenery overrides without saving those choices to user settings.
Install
Chrome / Edge / Brave / Vivaldi (Chromium):
- Download
Vantage-v0.9.0.zipbelow. - Extract to a permanent folder.
chrome://extensions→ enable Developer mode → Load unpacked → pick the folder.
The .crx is a secondary asset for Chromium forks that still accept self-signed packages.
Firefox (109+):
- Download
Vantage-v0.9.0-firefox.xpibelow. - Open
about:debugging→ This Firefox → Load Temporary Add-on… → pick the XPI.
(Temporary installs reset on browser restart — see README for permanent options.)
Verify integrity
sha256sum -c SHA256SUMS.txtv0.8.0
v0.8.0 — 2026-04-30
Added
- Wallpaper / background subsystem — six background kinds selectable from Settings → Appearance: Animated (existing sun-cycle), Solid color, Gradient (from/to + angle), Image URL, Image Upload (base64-stored), Bing Daily (fresh photo each day, cached per date). Shared blur (0–20 px) and brightness (50–150%) sliders for image-based kinds.
- Multi-profile workspaces — named layout profiles in Settings → Workspaces. Each workspace stores a snapshot of accent, background, layout, quicklinks config, and per-widget enabled flags. A workspace bar renders pill buttons below the utility bar when 2+ workspaces exist; switching wraps in
document.startViewTransition()for a smooth cross-fade. Workspace settings never mutate the base profile — computed aseffectiveSettingseach mount. - Quick-link folder groups — link items can be placed in named groups. Groups render as pill buttons; clicking opens a floating popover grid of that group's links. Popover closes on Esc or outside click. MutationObserver cleans up event listeners on unmount.
- Top Sites widget — reads
chrome.topSites.get()and renders a favicon pill row in the hero area. Falls back to initials if the favicon is unavailable. Hidden automatically on Firefox builds where the API is absent. - Feed deduplication — after merging all feeds in
feed-list.js, items are deduplicated by normalized URL (hostname + pathname, lowercase, trailing slash stripped) using a Set. - Feed filter rules — per-panel mute/highlight rules in Settings → RSS / News. Each rule has a regex pattern, field (title or URL), action (mute hides the item; highlight adds a colored left-border accent), and optional color. Rules are applied post-fetch before render.
- Reddit feed presets — a collapsible presets block in the RSS and News feed settings with one-click add buttons for r/all, r/popular, r/technology, r/worldnews, r/programming, and r/science.
- View Transitions API —
document.startViewTransition()wraps workspace switches and accent color changes for smooth page transitions (graceful no-op on browsers without support). - Storage quota panel — Settings → Storage shows
navigator.storage.estimate()usage and quota as a color-coded progress bar (yellow at 80%, red at 95%) plus a human-readable label. - Firefox container → workspace mapping — Firefox-only section in Settings. Reads
browser.contextualIdentities.query({})to list all containers and lets you assign each to a workspace. On page load the active container is detected viabrowser.tabs.getCurrent().cookieStoreIdand the mapped workspace is applied automatically. - AMO update feed — CI release workflow now generates
firefox-updates.json(AMO-compatible format) and commits it alongsideupdates.xml. Firefox manifest'sgecko.update_urlpoints to the raw GitHub URL so self-hosted XPI updates are auto-detected by the browser. - New SVG icons:
folder,folder-open,layers2,star,filter,hard-drive.
Changed
manifest.json—topSitesadded to permissions;https://www.bing.com/*added to host_permissions.manifest.firefox.json—topSites,contextualIdentities,tabsadded to permissions;https://www.bing.com/*added to host_permissions;gecko.update_urlnow set.src/main.js—mountAll()computeseffectiveSettingsonce from the active workspace before rendering all widgets; workspace bar rendered when workspaces are configured; Firefox container detection runs on init.src/storage.js— defaults extended withbackground,topsites,workspaces,feedFilters,containerMapkeys (done in prior v0.8.0 prep pass)..github/workflows/release.yml— "Update Omaha feed" step also generatesfirefox-updates.jsonand commits both files.
Install
Chrome / Edge / Brave / Vivaldi (Chromium):
- Download
Vantage-v0.8.0.zipbelow. - Extract to a permanent folder.
chrome://extensions→ enable Developer mode → Load unpacked → pick the folder.
The .crx is a secondary asset for Chromium forks that still accept self-signed packages.
Firefox (109+):
- Download
Vantage-v0.8.0-firefox.xpibelow. - Open
about:debugging→ This Firefox → Load Temporary Add-on… → pick the XPI.
(Temporary installs reset on browser restart — see README for permanent options.)
Verify integrity
sha256sum -c SHA256SUMS.txtv0.7.2
v0.7.2 — 2026-04-30
Added
- Firefox port —
manifest.firefox.jsonships alongsidemanifest.json. The CI release workflow now builds aVantage-vX.Y.Z-firefox.xpifrom the same source tree (Firefox manifest injected at package time). Requires Firefox 109+ (MV3 + service worker support). - Background script (
src/background.js) detects Firefox viatypeof browser !== "undefined"and opens a blank new tab (which Firefox routes to the overridden newtab page) instead of the Chrome-onlychrome://newtabURL. - SHA256SUMS.txt in every release now includes the Firefox XPI hash.
- Release notes updated to include Firefox install instructions (temporary via
about:debugging, permanent via DevEdition/Nightly or enterprise policy).
Technical
manifest.firefox.jsonincludesbrowser_specific_settings.gecko(id:vantage@sysadmindoc, strict_min_version:109.0) and omits"type": "module"from the background service worker declaration (ES module SW requires Firefox 128+; plain SW works from 109+).- All
chrome.*API calls in the extension page scripts are compatible with Firefox'schromenamespace alias — no polyfill required.
Install
Chrome / Edge / Brave / Vivaldi (Chromium):
- Download
Vantage-v0.7.2.zipbelow. - Extract to a permanent folder.
chrome://extensions→ enable Developer mode → Load unpacked → pick the folder.
The .crx is a secondary asset for Chromium forks that still accept self-signed packages.
Firefox (109+):
- Download
Vantage-v0.7.2-firefox.xpibelow. - Open
about:debugging→ This Firefox → Load Temporary Add-on… → pick the XPI.
(Temporary installs reset on browser restart — see README for permanent options.)
Verify integrity
sha256sum -c SHA256SUMS.txtv0.7.1
v0.7.1 — 2026-04-30
Added
- Collapsible settings sections — every section in the settings panel now has a click-to-expand/collapse header. State persists across opens via
sessionStorage. Appearance and Search default open; all others default closed. - Settings filter — search input at the top of the settings panel filters visible sections by keyword as you type.
- Accent color picker — 9 Catppuccin color options (Mauve, Blue, Green, Peach, Teal, Lavender, Red, Flamingo, Sky) selectable from color swatches in Appearance settings. Applied instantly via
data-accentattribute on<html>. Persists in settings. - Custom CSS injection — new "Custom CSS" settings section with a monospaced textarea. CSS is injected as
<style id="vantage-custom-css">on every load. Changes apply live while the settings panel is open. Supports all CSS custom properties (--accent,--base, etc.). - New SVG icons:
code,chevron-right.
Changed
src/storage.js— addedaccent: "mauve"andcustomCSS: ""to defaults.src/main.js— addedapplyAccent()andapplyCustomCSS()called on init and every settings change.
Install
- Download
Vantage-v0.7.1.zipbelow. - Extract to a permanent folder.
chrome://extensions→ enable Developer mode → Load unpacked → pick the folder.
The .crx is provided as a secondary asset for Chromium forks that still accept self-signed packages.
Verify integrity
sha256sum -c SHA256SUMS.txtv0.7.0
v0.7.0 — 2026-04-30
Major widget expansion — 10 new panels, a quick widget picker, and multi-embed support.
Added
- Widget picker — floating popover (grid icon in utility bar) to toggle any widget on/off without opening settings. Groups widgets by category. Inline embed management (add/remove/toggle each embed).
- To-Do List panel — add tasks, check them off, clear completed. Unread badge shows open task count.
- Notes panel — sticky-note grid with 5 color variants (blue/green/yellow/red/mauve). Click to expand inline editor with title, body, and color picker. Notes persist in settings.
- Bookmarks panel — reads Chrome bookmarks API and renders them as a favicon grid. Requires new
bookmarksmanifest permission. - World Clocks strip — slim horizontal strip below the hero section showing time in configurable IANA timezones.
- Crypto Prices panel — live prices via CoinGecko free API. Configurable coin list and fiat currency. Auto-refreshes every 5 minutes. Shows 24-hour change with color coding.
- GitHub panel — two tabs: Activity (your public event feed) and Trending (repos created in the last 7 days sorted by stars). Optional language filter.
- Quote of the Day banner — daily rotating quote from Quotable API (with 10 offline fallbacks). Cached per-day to avoid repeated fetches. Configurable tag filter. Manual refresh button.
- Photo of the Day panel — daily Picsum photo (seed-stable per date). Optional NASA APOD with API key.
- Countdown Timer panel — add labeled countdown events with target dates and color coding. Auto-removes past events (or shows "X days ago").
- Unit Converter panel — 7 categories: Length, Weight, Temperature, Volume, Speed, Data, and Area. Swap button to reverse conversion. Pure client-side math.
- Multiple embeds —
settings.embeds[]array replaces the singleembedobject. Add unlimited named iframes. Settings includes an embeds list with per-embed toggle + edit + delete. Existing single-embed settings auto-migrated. - 15 new SVG icons:
note,square,check-square,trending-up,message-square,hourglass,calculator,layout-grid,pencil,github,dollar-sign,arrow-left,arrows-up-down,plane(reused),layers(reused).
Changed
src/widgets/embed.js— signature changed fromrenderEmbed(mount, settings)torenderEmbed(mount, embedCfg, opts)whereembedCfgis one entry fromsettings.embeds[].src/main.js—FIXED_PANEL_KINDSexpanded; dynamic embed mounts synced insyncEmbedMounts(); panel reorder wired afterrequestAnimationFrame.
Fixed
- Style comment updated to v0.7.0.
Install
- Download
Vantage-v0.7.0.zipbelow. - Extract to a permanent folder.
chrome://extensions→ enable Developer mode → Load unpacked → pick the folder.
The .crx is provided as a secondary asset for Chromium forks that still accept self-signed packages.
Verify integrity
sha256sum -c SHA256SUMS.txtv0.6.2
v0.6.2 — 2026-04-29
Added
- Windy radar panel — embeds
embed.windy.comcentered on your weather city. Configurable overlay (wind, gusts, rain, temperature, clouds, pressure, humidity) and zoom level. Drag-to-reorder with the other reading panels. - Embed panel — generic configurable iframe for any external service (e.g. ADS-B Exchange flight tracker). Set a title and URL in Settings → Embed. Shows an "Open in new tab" link in the panel header and a graceful fallback if the site blocks embedding.
- New SVG icons:
plane(embed panel header),layers(used by overlay picker).
Install
- Download
Vantage-v0.6.2.zipbelow. - Extract to a permanent folder.
chrome://extensions→ enable Developer mode → Load unpacked → pick the folder.
The .crx is provided as a secondary asset for Chromium forks that still accept self-signed packages.
Verify integrity
sha256sum -c SHA256SUMS.txtv0.6.1
v0.6.1 — 2026-04-30
Fixed
- Disabled panel widgets (calendar, and alignment of news/rss) now set
display:noneon their mount element so a gray card box never shows when the widget is off. - Added missing
button--ghostCSS modifier (was referenced in settings but not defined, causing ghost buttons to render with the default surface background).
Added
- First-run setup wizard — shown automatically on new installs. Three layout presets: Minimal (search only), Standard (search + clock + weather + quick links + news), Full (all widgets). Optional personalize step lets you set your name and weather city (geocode or auto-detect). Wizard marks itself complete so it doesn't repeat on reload.
- Re-launch wizard from settings — Settings → Data → "Run wizard" button lets you switch layout presets or update your name/location at any time without manually toggling each widget.
Install
- Download
Vantage-v0.6.1.zipbelow. - Extract to a permanent folder.
chrome://extensions→ enable Developer mode → Load unpacked → pick the folder.
The .crx is provided as a secondary asset for Chromium forks that still accept self-signed packages.
Verify integrity
sha256sum -c SHA256SUMS.txtv0.6.0
v0.6.0 — 2026-04-29
Major feature wave driven by a 96-source research pass: three new widgets (air quality, calendar, Pomodoro), full data portability (JSON + OPML + share link), multi-proxy CORS resilience, storage persistence, extended twilight phases, and a full accessibility skip-link.
New widgets
- Air quality — live US AQI, PM2.5, PM10, and six pollen types from Open-Meteo Air Quality API (
air-quality-api.open-meteo.com). No account or API key required. Reuses the weather location. Compact pill in the utility bar; click to expand pollen detail. Color-coded by AQI band (green → maroon → hazardous). - iCal calendar — add any standard
.icsURL (Google Calendar → "Get shareable link → iCal", Outlook → "Publish calendar", any CalDAV feed). Events shown as upcoming list grouped by day, within a configurable window (1–30 days). CORS proxy fallback chain for hosted calendars. - Pomodoro timer — 25/5/15 work-break-long-break cycle (all durations configurable). Tab-blur auto-pauses; tab-focus auto-resumes.
navigator.locksensures only the active tab fires the phase-transition notification even when multiple new-tab pages are open. Web Notifications on completion. Live<title>countdown. Session-dot progress bar. Cross-tab state sync viachrome.storage.onChanged.
Data portability
- Settings JSON export — download current settings as
vantage-settings-YYYY-MM-DD.json. - Settings JSON import — load from file; replaces all settings.
- OPML export — download all RSS + News feeds as
vantage-feeds-YYYY-MM-DD.opml(Feedly / Inoreader / NetNewsWire compatible). Category attribute distinguishes rss vs news panels. - OPML import — merge feeds from any OPML file (no duplicates by URL; parent-outline or category attr determines panel).
- Config share link — copy a
chrome-extension://<id>/newtab.html#import=<base64>URL; opening it on any device with Vantage installed loads the encoded settings. Hash is consumed and stripped from the URL immediately.
Reliability
- Multi-proxy CORS chain — RSS and iCal fetches now walk
allorigins.win → corsproxy.iobefore failing. Single-proxy failure no longer breaks all feeds. navigator.storage.persist()— called on startup to ask the browser not to evict Vantage data under storage pressure.corsproxy.ioadded to host_permissions in manifest so MV3 allows the fallback fetch.
Animated background — extended twilight
sun-calc.jsnow returns eight twilight/golden-hour events in addition to the existing sunrise/sunset/dawn/dusk/noon:goldenHourEnd,goldenHourStart(sun at +6°),nauticalDawn,nauticalDusk(sun at -12°),astronomicalDawn,astronomicalDusk(sun at -18°).computePhase()uses these for granular phase labels:astronomical-night → astronomical-dawn → nautical-dawn → pre-dawn → sunrise → morning/midday/afternoon → golden-hour → sunset → dusk → nautical-dusk → astronomical-dusk → astronomical-night. The sky gradient is driven by the same continuous t-interpolation as before; phases now control star visibility with correct opacity at each twilight band.- Star opacity ladder:
astronomical-night(100%) →astronomical-dawn/dusk(90%) →nautical-dawn/dusk(60%) →dusk(55%) →pre-dawn(25%). - Golden-hour boundaries are now event-driven (actual +6° moment) rather than a fixed 5% fraction of day length — more accurate at high latitudes.
Accessibility
- Skip-to-main link — first focusable element in
newtab.html; visually hidden until focused. Resolves WCAG SC 2.4.1. - Toast host upgraded —
aria-live="assertive"+role="status"so Pomodoro phase-change toasts are announced immediately by screen readers. - Calendar panel uses standard panel-body structure; drag handle and refresh button follow existing ARIA patterns.
Install
- Download
Vantage-v0.6.0.zipbelow. - Extract to a permanent folder.
chrome://extensions→ enable Developer mode → Load unpacked → pick the folder.
The .crx is provided as a secondary asset for Chromium forks that still accept self-signed packages.
Verify integrity
sha256sum -c SHA256SUMS.txtv0.5.0
v0.5.0 — 2026-04-29
The animated background is production-ready. v0.5.0 rolls up the v0.4.7–v0.4.14 patch series: weather that actually reads as weather, sunrise/sunset times accurate to the second, and a clean focus state on the search bar.
Animated weather backgrounds — accurate, not decorative
- Storms render as storms. Wet/overcast weather (drizzle, overcast, rain, heavy-rain, storm, snow, heavy-snow) now overrides the time-of-day sky gradient with a flat slate palette via inline JS, sourced from the Apple Weather + community storm-weather color references. The previous
filter: saturate brightnessapproach cascaded to and dimmed the rain streak overlays themselves; we now never apply a parent filter to.bg. Sun is forced to opacity 0 during heavy weather, palm-tree silhouette is hidden — a beachy silhouette undercuts the downpour mood. - Rain looks like rain, not LCD bands. Rain streak overlays moved from a tiled gradient (which produced full-width horizontal stripes) to inline-SVG tiles with discrete
<line>elements at scattered x-positions and a 4px wind-shear tilt. Two layers (220×240 foreground, 280×320 parallax) at different durations for depth. Streaks are cool blue-white (rgba(220,235,255,0.85)) so they read as water on a slate sky. - Storm tiers match precipitation level. Open-Meteo's most common precip code in temperate climates is 63 ("rain"), not 65 ("heavy-rain") or 95+ ("storm"). The dark-sky / no-sun / no-palm treatment extends down to plain
rainso any precipitation reads as overcast wet-sky. Drizzle gets the gentlest treatment.
Sunrise / sunset accuracy
- NREL SPA primary, local NOAA fallback. Open-Meteo's
daily.sunrise/daily.sunset(NREL SPA, ±30 seconds) is the source of truth, parsed viautc_offset_secondsinto absolute-UTC moments — independent of browser timezone, correct across DST, correct in any hemisphere. Newsrc/utils/sun-calc.js(vendored NOAA Solar Calculator algorithm, ~120 LOC, no dependency) provides the offline fallback and supplies civil-twilightdawn/dusksince OM's free tier doesn't include them. - Civil-twilight phase boundaries. "pre-dawn" begins at civil dawn (sun 6° below horizon) and ends at sunrise; "dusk" begins at sunset and ends at civil dusk. Civil-twilight duration varies by latitude / time of year (~30 min equator, ~90 min summer-north), so transitions feel right anywhere.
- Day-rollover watcher. A one-shot timer fires ~5 minutes past the location's local midnight, recomputes sunrise/sunset for the new day, and chains the next rollover. Pages left open across midnight always reflect "today's" events.
- Polar regions handled. When the sun never rises (alwaysNight) or never sets (alwaysDay) — possible above ~66.5° latitude — sun-calc returns flags that the phase computation respects.
UI polish
- No more box-inside-a-box on the search input. The global
:focus-visiblering no longer paints inside the search wrapper's own focus-within ring. Single clean border on focus.
Install
- Download
Vantage-v0.5.0.zipbelow. - Extract to a permanent folder.
chrome://extensions→ enable Developer mode → Load unpacked → pick the folder.
The .crx is provided as a secondary asset for Chromium forks that still accept self-signed packages.
Verify integrity
sha256sum -c SHA256SUMS.txtv0.4.14
v0.4.14 — 2026-04-29
Fixed
- Purple inner outline on focused search input ("box inside a box"). The global
:focus-visible { box-shadow: var(--ring) }rule was applying the focus ring to.search-inputand the wrapper.search-formwas already showing its own ring via:focus-within. Result: two concentric purple rectangles. Suppressed the inner input's:focus-visiblering so only the wrapper highlights.
Install
- Download
Vantage-v0.4.14.zipbelow. - Extract to a permanent folder.
chrome://extensions→ enable Developer mode → Load unpacked → pick the folder.
The .crx is provided as a secondary asset for Chromium forks that still accept self-signed packages.
Verify integrity
sha256sum -c SHA256SUMS.txt