Repository navigation
Releases: e2sy/aether-browser
Release list
v1.5.0 — The Real-Browser Release
Five real-browser gaps closed in five audited builds — each committed separately with its own tests and a green CI run on Windows, macOS and Linux (73 new tests; full suite at 300+).
What is new
- Session restore — close Aether, reopen it, everything comes back: every window, every tab, pinned states, which tab was focused. Survives crashes too (unclean shutdowns are detected and still restored). Settings toggle: restore session.
- aether://downloads (Ctrl+J) — a real download manager: search, pause/resume, cancel, re-download, remove single items or clear the list (files on disk are always kept), click a finished row to reveal the file. History persists across boots.
- Bookmarks bar (Ctrl+Shift+B) — the row Chrome users miss: click to open, middle-click / Ctrl-click for a background tab, right-click for open-in-new-tab / remove. Live in every window, toggle from the menu, Settings, or the View checkbox.
- Private windows (Ctrl+Shift+N) — in-memory session: cookies, cache and site data never touch the disk, zero history writes, zero page-memory writes — and the full Shields stack (network + cosmetic + CSP) now runs on the private session too. Violet strip marks the window.
- Loading progress + site info — Chrome-style progress shimmer while pages load, tab spinner, and a clickable padlock chip in the omnibox: connection verdict, host, live shields counters.
Install (Windows)
Download Aether Setup 1.5.0.exe below and run it. macOS (.dmg/.zip) and Linux (.AppImage/.deb) build in CI — grab them from the Actions artifacts if you need them today.
Requirements: none for browsing. For the AI sidebar/agent: Ollama running locally (models are auto-detected — see the connection guide).
v1.4.0 — Customization Studio (make the browser yours)
The headline
Every pixel of Aether is now customizable — and it's open source, so the palette itself is forkable. Built to the ROADMAP v1.4 contract.
What's new
- Themes: dark (default), a real light theme (own readable muted/danger/ok tones — not an inversion filter), and follow-system. Every
aether://page AND the browser chrome are themed. - Accent colors: 8 curated presets + any custom color via the native picker. The engine derives the strong/tint/soft variants from your color automatically — buttons, focus rings and highlights stay coherent.
- UI size slider (85–125%) and 5 new-tab backgrounds (Aurora glow, Midnight, Slate, Daylight, Plain) + clock toggle.
- Corruption-proof by design: a typed appearance engine (
src/main/appearance.ts, pure) validates every field — a brokensettings.jsoncan never crash boot; garbage silently falls back per-field. - Live everywhere: accent/size apply instantly (CSS variables + broadcast to every window); theme/background re-render internal pages once so the swap is real, not simulated.
Under the hood
pages.tsnow contains zero hardcoded hex colors (grep-enforced) — everything flows through 16--ax-*CSS variables emitted per render.- 48 new tests (347 total across 11 suites): normalization (hostile blobs → defaults, never throws), palette coherence, CSS emission for both themes.
Windows installer attached below. macOS / Linux installers in the workflow artifacts.
v1.3.0 — Aether Search (our own search engine)
The headline
Aether now runs its own search pipeline. Framed first in docs/ROADMAP.md, built to that contract.
Honest framing: Aether is local-first and does not crawl the web — so Aether Search is an open metasearch layer: we fetch every source in parallel, strip tracking, dedupe, rank with our own scorer, brand the page, and say transparently which upstream fed each result.
What's new
- Parallel multi-source aggregation — DuckDuckGo, DuckDuckGo Lite and Bing run simultaneously (per-source timing chips on the page), failures are named per source instead of silently swallowed.
- Own ranking — tracking params stripped (utm_*, fbclid, gclid, …), URLs deduped, results scored by title/snippet term coverage and interleaved round-robin so no single source owns the top of the page. Every result wears a SOURCE badge.
- Instant answers, 100% local — a safe arithmetic engine (hand-written tokenizer + recursive-descent parser, no
eval, whitelist-only tokens) answers math queries before the network finishes. Computed on your device. - Omnibox suggestion feed — remote completions merged under your local history/bookmark matches (local first, deduped) in the address bar.
- Branded search page —
aether://searchrebuilt: aetherSearch wordmark, source badges, timing chips, and the AI answer as an optional card. The page is fully useful with zero Ollama — no more red banner dominating the experience.
Verification
- 62 new tests (299 total across 10 suites) — the calculator is fuzzed with hostile input (
eval(1),process.exit(1), overflow, unbalanced parens) - CI green on Ubuntu, Windows and macOS; installers built from the tagged commit
Windows installer attached below. macOS / Linux installers in the workflow artifacts.
v1.2.1 — Platform-Hardened Build (CI green on Windows / macOS / Linux)
The headline
The repo went public — and CI ran for the first time in the project's history. Four rounds of fix-and-push later, every platform is green: 237 unit tests + build + headless smoke on Ubuntu, Windows and macOS for every push.
What the first real CI run exposed (all latent for 13 versions)
npm run buildwas completely broken on Windows — the preload patcher located its target vianew URL(import.meta.url).pathname, which doubles the drive letter (D:\D:\...) underpath.resolve. Daily use never noticed becausenpm run devdoesn't invoke it.- All 9 test sandboxes used Unix-only shell (
cp -r), the.bin/esbuildsh shim (a platform ELF binary since esbuild 0.16 — both CLI routes dead on cmd.exe), andawait import(absolutePath)which throwsERR_UNSUPPORTED_ESM_URL_SCHEMEon win32. Rebuilt onfs.cpSync+ the esbuild JS API +pathToFileURL/fileURLToPath. - A test itself was platform-dependent — the v1.1.7 profile-recovery probe hardcoded
'-recovered\Cache', locking recovery candidate #1 only on Windows. - CI now runs the full suite (237 tests / 9 suites — was 3 stale ones) and release builds fire on every
v*tag.
Installers
Built by CI from the green commit — see the workflow run artifacts (Windows NSIS, macOS DMG/ZIP, Linux AppImage/DEB). Windows installer is attached below.
Full changelog: commit history — every milestone since v0.1.0 is tagged.
v1.2.0 — Brave-style Shields (the adblocker grows up)
The headline
The root cause of the YouTube blank page is found and fixed. The old integration injected 30 anti-adblock scriptlets into youtube.com; on Electron timing they hijacked the page's own JS plumbing and killed YouTube's bootstrap entirely — the document ended up as a single 257 KB <script> node with no title, no body, zero console output.
What's new
- Brave's two-tier Shields model — STANDARD (default): network blocking + cosmetic CSS only (CSP-safe). AGGRESSIVE (opt-in): adds the scriptlet tier for anti-adblock walls, with a breakage warning.
- Per-site Shields popup in the toolbar: shield button with live blocked-count badge, per-site on/off, per-site + total counters, top blocked hosts.
- Custom filter lists: uBlock presets (Ads / Privacy / Badware) + any
https://list URL, fetched fresh at boot with offline cache. - Site diagnostics tooling:
AETHER_PROBE=<url>+AETHER_SHIELDS_VERBOSE/NO_*env bisection kept as permanent support tools. - Safety by design: main frames are never blocked (v1.1.6 error pages stay truthful); Node fetch (AI/Ollama/search) never touches session webRequest — the AI pipeline is immune.
Verification
- YouTube renders fully (title/ytcfg/polymer OK, 1.17 MB app) while ad/tracker requests are blocked per boot
- 237 unit tests green across 9 suites; headless smoke asserts shields IPC + deterministic block counters
- CI runs the full suite on Ubuntu / Windows / macOS for every push
Full changelog: see commit history — every version since v0.1.0 is tagged.