Appearance and themes
Wrengle recolors your workspace through semantic roles such as background, surface, text, accent, status, border, and focus. Choose a ready-made theme, or save several named custom themes for different environments.
Open Settings → Appearance to manage themes.
Choose the app mode
The app mode and the theme you've selected are separate controls:
- Light always uses the theme assigned to the Light slot.
- Dark always uses the theme assigned to the Dark slot.
- System follows the operating-system appearance and switches between those two assignments as the operating-system setting changes.
Use the Light theme and Dark theme tabs to configure each slot independently. For example, System can use Paper & Ink during the day and Midnight Blue at night. Editing one slot doesn't replace the other.
Built-in themes
Built-in themes are ready to use, and you can't overwrite them. To make one your own, choose Create theme, then select it as the starting palette.
| Mode | Theme | Character |
|---|---|---|
| Light | Current Wrengle | Wrengle's crisp light workspace and restrained teal defaults |
| Light | Paper & Ink | Warm, low-glare paper with deep neutral text |
| Light | Clear Sky | Cool white surfaces with a focused blue accent |
| Light | Sage Paper | Soft green neutrals for a calm working canvas |
| Light | Lavender Desk | Quiet lavender surfaces with a plum accent |
| Light | Clay Studio | Warm cream surfaces with an earthy clay accent |
| Light | High Contrast | Strong boundaries and high-contrast text |
| Dark | Current Wrengle | Wrengle's near-black workspace and teal defaults |
| Dark | Midnight Blue | Navy surfaces with a clear sky-blue accent |
| Dark | Evergreen Night | Deep green surfaces with a soft green accent |
| Dark | Plum Night | Dark plum surfaces with a lavender accent |
| Dark | Warm Ember | Warm charcoal surfaces with an ember accent |
| Dark | High Contrast | Near-black surfaces with bright text and focus |
Theme cards show representative background, surface, text, accent, and status colors. Select a card to inspect it in the preview, then choose Apply to assign it to the active Light or Dark slot. Cancel leaves the current assignment unchanged.
Where themes apply
The active palette follows you across Wrengle's first-party surfaces, including the note canvas and editor chrome, dialogs, workflows, graphs, charts, and the terminal. App-owned canvas defaults, controls, menus, focus states, and native form controls update with the resolved Light or Dark theme.
The terminal's app-owned background, text, muted text, borders, hover states, cursor, and selection come from that same semantic palette. Explicit terminal values set through Advanced colors take precedence for a custom theme. ANSI prompt and command-output colors stay shell-owned, so changing the app theme doesn't rewrite your shell's color configuration.
Themes change app-owned presentation, not the meaning of your saved content. Explicit document colors and non-Neutral chart swatches are preserved, and so are embedded images, audio, video, and other media. The chart Neutral swatch is the intentional exception: it opts a shape or connector back into theme-relative app defaults, so those channels follow the active palette. Choosing another named chart swatch keeps its authored colors when the app theme changes.
The chart format stores channel colors, but not whether a value came from a swatch or the Custom field. A Custom channel equal to one of Wrengle's default shape, frame, text, or connector colors is therefore also theme-relative by value. Choose a different hex value when that channel must stay fixed across themes. Charts saved with the earlier Contrast swatch stay fixed.
Create a custom theme
Choose Create theme, pick Light or Dark, give it a name, and choose a built-in starting point. Theme names are trimmed, can run 1–40 characters, and must be unique within that mode regardless of letter case.
The guided editor starts you on the colors that make the largest visual difference:
- Background
- Surface
- Text
- Muted text
- Accent
- Accent text
The preview updates as you work, without recoloring the rest of the app. Choose Save to add the theme to Your themes, or Cancel to discard the draft. Saving a theme doesn't silently change the other appearance slot.
Open Advanced colors to search and edit the complete registered token set, including status, recording, sidebar, chart chrome, border, input, and focus roles. Custom themes store only their differences from the selected built-in starting point, so a small edit stays easy to follow.
From Your themes, apply, duplicate, rename, or delete a theme. The library-level Export control copies all your custom themes together. Deleting an assigned theme asks for confirmation; Wrengle falls back to that theme's built-in starting point and offers an immediate Undo action.
Contrast and color checks
Before saving, Wrengle checks color syntax and the important foreground/background pairs:
- Normal text on the background, text on surfaces, and text on the accent must reach 4.5:1.
- Muted text is checked against the same 4.5:1 target.
- The focus indicator is checked against a 3:1 target.
An invalid color, low-contrast normal text, or low-contrast accent text blocks saving and identifies the field to fix. Lower-priority muted-text or focus warnings show the affected pair and require the explicit Save anyway acknowledgement. That acknowledgement can help for a personal theme, but it doesn't make the low-contrast choice accessible to other users. Start with a High Contrast preset when stronger separation is the priority.
Import and export
Export creates versioned JSON containing appearance mode, Light and Dark assignments, custom theme names, starting presets, and color overrides. It doesn't contain notes, transcripts, vault paths, account details, credentials, or plugin state. Wrengle resets internal revision and theme activity timestamps in the portable export, so if you copy it to the clipboard those values are already scrubbed.
Import accepts a Wrengle theme JSON document only after it passes the same schema, registered-token, name, and safe color-literal checks the editor uses. Import is limited to 256 KiB per document and 100 custom themes. Wrengle refuses oversized, malformed, unsupported, or executable content — JSON is treated as data and is never run as code.
Import is a safe merge: it adds remapped copies of the custom themes and
doesn't change the current app mode or either live assignment. Review an
imported theme in the scoped preview, then choose Apply yourself.
Exports from the earlier per-mode color editor (mode plus overrides) are
also accepted and converted into named Light and Dark themes. If an
imported or legacy theme has low required-text contrast, Apply stays
disabled until you explicitly acknowledge Apply anyway beside the
preview.
Keep an export if you want to move a theme library to another Wrengle installation. Theme settings are app-local and are not stored in the note vault, so vault sync alone doesn't move them between devices.
Storage, privacy, and upgrades
Wrengle stores your theme library in its local application settings as the single copy it treats as authoritative. A small materialized Light/Dark cache is also kept locally so the correct colors can be painted during startup before the settings screen loads. Theme selection, editing, import, and export make no theme-specific network request.
Upgrading from the earlier theme editor, Wrengle preserves your selected
Light, Dark, or System mode and migrates existing per-mode token overrides
into named custom themes. Safe legacy CSS color literals such as short hex,
named colors, and rgb(...) remain valid. Light and Dark overrides stay
independent. This release also makes a one-time move from the earlier
built-in preset versions to theme-aware versions for saved assignments and
custom-theme starting points, which makes previously fixed terminal chrome
follow the selected palette while retaining authored semantic and
explicit terminal overrides. Historical built-in versions remain resolvable
for compatibility; future versions aren't applied implicitly.
If Wrengle can't read your local theme settings, it keeps persistence blocked so it doesn't overwrite an unread saved library. Appearance shows a retry notice, and session changes stay temporary until storage succeeds. A native close request or app restart first waits for startup theme loading and every queued theme-library write. That wait has a limit: if the local settings bridge stalls or still fails after a retry, Wrengle returns control, keeps the window open, clears any Settings search, opens Appearance, and asks you to retry instead of silently discarding the change. The close notice also offers an explicit Discard & close action when you intentionally want to leave without saving the session-only theme change.
While a custom-theme form has unsaved changes, Wrengle keeps the designer mounted. Closing Settings with the close button, Escape, or the backdrop; switching Settings category, search, app mode, or Light/Dark theme tab; and automatic restart are all held until you choose Save theme or Cancel. Native app close returns you to the same intact designer and offers Discard & close only as an explicit recovery action. If an app update has already installed, its banner keeps a Restart now action available; using it after Save or Cancel retries only the safe restart, and it doesn't download or install the update again.
Plugin theme delivery stays compatible. A plugin view continues to receive
{ theme, themeTokens }, where theme is the resolved light or dark
value and themeTokens is the materialized palette. Plugin-authored CSS must consume
that payload to follow the active palette — Wrengle doesn't rewrite a
plugin's own styles. Custom theme names, the theme library, and the inactive
appearance slot aren't added to the plugin bridge.