Installation
Retr-0 is currently distributed as an unpacked Chrome extension while the project is being developed.
- Install Node.js 20 or newer.
- Clone the repository and run
npm install. - Run
npm run build. - Open
chrome://extensions, enable Developer mode, and choose Load unpacked. - Select the repository's
distdirectory.
Using Retr-0
Open the popup from Chrome's toolbar. The global switch controls whether the extension is active. The current-site switch adds or removes the current domain from the exclusion list. Settings persist through browser restarts.
Modes and intensity
Windows 98 Retro is the full translation: gray surfaces, title bars, hard edges, native-feeling controls, and local cursors. Modern 98 keeps the same design vocabulary with calmer depth and spacing. Intensity changes how deeply the visual system takes over; it is global rather than per-site.
How it works
The content layer classifies elements by their semantic HTML, ARIA roles, class names, and visual signals. A button receives a button treatment; a dialog becomes a window; a card becomes a beveled surface. A small site-adapter layer preserves recognizable brand accents without rebuilding the site.
content/ classifier.ts semantic element roles transformer.ts idempotent class application mutation-handler.ts dynamic DOM + SPA updates theme-manager.ts mode and intensity tokens site-adapter.ts brand identity hints
Troubleshooting
If a site needs its original UI, use the current-site switch or remove the domain from Settings → Websites. If an app updates its interface after load, Retr-0 observes inserted elements without rescanning the whole document. Browser-internal pages such as chrome:// cannot be transformed by Chrome extensions.
Development
Run the type checker with npm run typecheck and build the extension with npm run build. Load dist in Chrome after each build. Keep content-engine code independent from the popup and settings surfaces so site adapters can grow without coupling to UI.
Privacy
Retr-0 is local-first. It does not collect browsing history, page contents, telemetry, advertising identifiers, or account data. Settings are stored using Chrome's sync storage so preferences can follow the browser profile.
Contributing
Read CONTRIBUTING.md, open an issue with a reproducible site example, or submit a focused pull request. Please do not add remote assets, tracking, or site-specific hacks when a reusable semantic rule will do.