settings

{#if !notifications.supported}system notifications are unavailable in this browser. tab counts still work. {:else if notifications.error}{notifications.error} {:else if notifications.requesting}waiting for the browser’s permission… {:else if notifications.permission === 'denied'}notifications are blocked. allow them in this site’s browser settings, then turn this on. {:else}tab counts are always on, and clear when you return.{/if}

theme

arrows(event, themes.map((theme) => theme.id), prefs.theme, (id) => (prefs.theme = id))}> {#each themes as theme (theme.id)} {/each}

{prefs.theme === 'system' ? `following your system, which is ${prefs.resolved} right now` : `always ${prefs.theme}`}

colours

arrows(event, ['light', 'dark'] as Mode[], editing, (mode) => (editing = mode))}> {#each ['light', 'dark'] as Mode[] as mode (mode)} {/each}
{#each SEASONS as season (season.id)} {/each}
{#each ACCENTS as accent (accent.id)} {/each}
{#each fields as field (field.key)} {/each}
advanced colours

errors and removals share a colour. additions also colour successful activity.

{#each advanced as field (field.key)} {/each}

leave the speaker hex empty to follow the accent automatically. syntax highlighting is unchanged.

{#if notice}

{notice}

{/if}

fonts

{#each fontFields as field (field.key)}

{field.sample}

{/each} {#each installed as family (family)}{/each}
{#if 'queryLocalFonts' in window} {/if}

any font installed on this computer, by name; a comma adds fallbacks. kept in this browser and a cookie, so every albedo web port opens the same way.

text

{#if prefs.text.own} {/if}

MCP sign-ins

colours from madoromi 微睡 by samhain, inks of pilot iroshizuku