The tag view can show bookmarks with all of its tags, add a tag to a selection, sort by score and remember its sort; the page filter takes several words and opens collapsed categories with a hit; the Recent sheet is two tiles across with the date, a page at a time, from every page. The action bar gets an eleventh button for the theme studio and answers the mouse better, every dashboard modal opens in the middle of the window, the edit-mode panel says what is in a block and offers its actions, the Glances Hosts table puts trouble first, and a fresh install starts on Ocean.
Tag view
- new — Any or all. With two or more tags the word between the pills is a switch: "or" shows the bookmarks with any of them, "and" only those with every one.
TagViewModel.matches(pool, tags, { mode }); the address carries it as#tag/a+b?all(hashFor,modeFromHash), so a reload or a shared link opens the same view. An "and" view with no matches offers Show any of them. - new — Add tag… on a selection. The selection bar gets Add tag…: one or more tags (commas) with the tags in use as autocomplete, put on every ticked row on its own page through the same
PATCH /api/bookmarksaddTagsthe suggestions use, with its undo. - new — Score sorts. The Score column header and the sort select sort by health score, highest first; bookmarks not checked yet go last in both directions.
- new — The sort is remembered per device (
nextdash:tag-view-sort), so the view opens on the sort last picked. - new — The search reads the tags, and takes several words.
applyFiltersmatches name, address, host and tags, and every word must match somewhere, in any order. - fix — Page sorts in the order of the page tabs.
TagViewModel.sortsorted by page id, so after reordering pages the column agreed with neither the tabs nor the rail; it takespageOrdernow. - fix — Open in the side panel counts as an open. It called
window.opendirectly, so opens, Last opened and Recent missed it; it goes throughrecordBookmarkOpenedlike the row's link. - fix — Health is asked again after a failed load.
ensureHealthkept its guard whenhealth.load()returned nothing, so the scores stayed away until a reload. - fix — The new tag view texts are translated. The eleven strings of the any/all switch, its hints, Show any of them and the Add tag… dialog were only fallbacks in
dashboard-tag-view.js, so they read in English in every language; they are in all six locale files now (dashboard.tagViewAnd,tagViewMode*Hint,tagViewEmptyAll,tagViewShowAny,tagViewAddTag*).
Page filter (Shift + F)
- new — Several words. Every word must match the row, in any order; each is marked in the name.
- new — Down and Enter.
↓or Enter in the bar puts the keyboard cursor on the first row left; Enter on a query that leaves one bookmark opens it. - fix — A hit in a collapsed category is shown. The count included rows inside collapsed categories that stayed folded; such a category opens (
grid-filter-open) while the query lasts, without touching its saved state, and its rows count for the keyboard. - fix — The keyboard cursor skips rows the filter hides.
_isNavigableRowdid not knowgrid-filter-hidden, soj/kcould land on a row nobody could see.
Recent bookmarks
- new — Two tiles across, with the date. The Recent sheet (
*) is a column of its own, 46rem at most and centred on the header, instead of the page's whole width in three columns. Each bookmark is a tile: a calendar block with the day and month it was last opened, the name and its key, the weekday and time (and how long ago, under a day), its category — or its page's name when it lives on another page — and how often it was opened, with a bar against the most opened. The full date is in the tile's tooltip. Dates follow the app's language (settings.language). - new — Earlier bookmarks, a page at a time. Ten to a page with a pager in the foot ("11–20 of 34", the page numbers, first and last with a gap between on long histories).
]andPageDowngo back,[andPageUpforward;←and→still walk the line. Open shown opens the page on screen. Every opening starts on the newest page. - new — Every page's bookmarks. The sheet reads the current page and
allBookmarks(DashboardRecent.recentPool), and asks for the cross-page load when startup skipped it. - fix — Quieter open buttons, centred over the pager.
Search
- fix — The search panel looks like the other overlays. On the Signature style it takes the overlay fill (
--ov-fill), so it is as opaque as Recent bookmarks; it used to follow the categories (--palette-fill, their alpha plus a tenth, never under 70%) and read as a thinner veil on glass. On Classic it has the modal's ground, corner and cast (search.css). Its results sit on the same slab as the recents list (modal.css), inset from the panel's edge. - fix — The modals on the dashboard read in its font. Recent bookmarks, the bookmark form, the tag cloud, notes, confirmations and the other modals opened on the bookmarks view take
--font-family-dashboard(Source Code Pro by default), as the search panel already did (font-size.css). In Config and the other views they stay in Inter.
Glances: Hosts
- new — Trouble first. Until a heading is pressed, the Hosts table lists a host that stopped answering first, then red, yellow and healthy ones, and last what is switched off or has no address; Config's order within each.
- new — The headings sort, as the other Glances tables do (
DashboardGlancesTable.build, idhosts); rows without a reading keep their order after the rest. - new — The fullest disk is named. The mount (
diskMount, sent all along and never drawn) stands beside its meter. - new — The last hour of the processor is a small line beside its meter:
glancesHostRow.cpuHour, the coarse points of the last hour, copied out of the ring (glancesHost.cpuHour). - new — Temperatures follow the weather's unit. With Fahrenheit picked for the weather, every Glances temperature is written in °F (
DashboardGlances.formatTemp/tempNumber); the yellow and red lines stay in Celsius.
Inbox tile
- fix — A link saved elsewhere shows without a reload.
inbox.jsonandtrash.jsonmove the data revision, but the Inbox and Trash tiles kept their cached answer; the revision check clears both and redraws them. - fix — A snoozed link comes back on the tile when it wakes. The tile cached the list with the sleeping links already dropped and has no beat of its own; it caches every item, splits waiting from asleep on each draw, and sets one timer for the first to wake.
- new — "N asleep". A line under the rows counts the snoozed links, so a short tile is not taken for the whole inbox.
Bookmarks view
- fix — The Collection menu is walked with the keys. It opened with nothing focused and the arrow keys did nothing; the first item takes the focus, and
↑/↓, Home and End move through it. - fix — Merge duplicates says when there is nothing to merge. When the report's groups had shrunk to one bookmark each, the action reloaded the list in silence; it says "No duplicates left to merge."
Action bar
- new — A theme studio button. The palette is the eleventh action button and opens the theme studio, as
Shift + Adoes. It sits last in the bar, is switched on and off under Config → Appearance → Action bar → Buttons shown (showThemeStudioButton, on by default, also for old settings files) and with:buttons theme, and stays off a phone layout.maxHeaderActionsand:maxactionsgo to 11. - new — A docked bar answers the mouse better. It comes back from anywhere along its edge, within 24px of it rather than 6px beside the bar, after the pointer rests there for 150ms, so a quick pass on the way to the Dock or the scrollbar leaves it away; resting on the handle does the same. Leaving the window through the edge beside the bar counts as reaching it. Called by the pointer it goes 700ms after the pointer leaves a 40px margin around it, or 1.5s after it came if the pointer never got there, instead of the full delay; a pointer parked on the edge has to leave it before the bar comes again (
action-bar-autohide.js). A frame now reads the latest pointer position, so a move that left the edge before the frame ran is no longer missed. - fix — The slide-away setting says what it still decides. Config → Appearance → Action bar reads "Slide a docked bar away after loading", and its explanation says the delay is for after a load or keyboard use, while a bar called back with the mouse goes shortly after the pointer leaves it whatever is picked (
actionBarAutoHideLabel,actionBarAutoHideInfoMessage). - fix — Every dashboard modal opens in the middle of the window. The search panel (search, commands, finders, the cheat sheet), Recent bookmarks, the pages panel, what's new and the quick-add omnibox sat above where the bottom dock used to be, or hung from the header (
.header-sheet); the tag cloud sat a little above the middle. They are all centred now, with the same 2rem margin above and below (search.css,modal.css,dashboard.css,positionModalindashboard-tag-cloud.js). The theme studio stays docked at the side, so the page it previews stays in view. The overlays are100vwwide instead of100%, because the stable scrollbar gutter made them a scrollbar narrower than the window and put every modal 5px left of centre. - fix — The search cursor follows the last typed character. The prompt row's gap and a margin stood between the text and the blinking
_; with text in the prompt the cursor now sits right after it. - fix — The search panel's side rail is readable. The scopes you are not in were drawn in the tertiary ink, and a scope the query does not reach dropped to 35% on top of that; they take the secondary ink now and dim to 60%. The scope you are in is never dimmed, even when it has no results yet.
- fix — "tab switches" lines up with the rail. The hint under the scopes is a row in their grid now:
⇥under the keys, "switches" under the names. The key is no longer part of the translated string (scopeRailHintbecamescopeRailHintLabel).
Edit mode
- new — The panel says what is in a block and offers its actions. A category shows its bookmarks, how many were opened this week and how many are broken, with Add bookmark, Move to page… and Delete; a widget its type and what it shows, with Settings…, Move to page… and Delete; a page its categories, bookmarks and widgets, with Add category and Delete page (not on the first page). The buttons do what the block's right-click menu does, with the same question before a delete (
dashboard-edit-mode-panel.js). The panel's text is a step larger. - new — A width that cannot be chosen says why. Spreading needs a limit on items per category, at least two columns and a layout that is not locked; the greyed-out choice names the missing one under the field. The one-column message used a key without its
dashboard.path and stayed English; it reads in every language now. - fix — A right-click menu stays open in edit mode. The right button's
auxclickfollows itscontextmenu; edit mode took it as a click, selected the block, and redrawing the panel closed the menu that had just opened, so a collection's menu (and any block's, after the first) never showed._handleClicknow leaves the right button to the menu (dashboard-edit-mode.js). - fix — The widget settings sheet takes its text colours from the theme. It hangs on
<body>, outside the Config layout that maps the theme's colours onto--text-mutedand friends, so its muted text fell back to a fixed grey on light and dark themes alike;.config-widget-overlaygets the same map (config-view.css,category-surface.css).
Themes
- fix — The views take the category surface and the glint. Under the Signature style with the category surface on Open, the Bookmarks, tag, inbox, containers and Glances views drew one plate in the material whatever it was; enamel, paper, velvet, ink and terminal now give their views the category card they draw, and a view's plate catches the same shine as a column (
theme-overlays.css,theme-signature.css). - fix — A setting changed on another device survives closing the theme studio. While the studio is open such a change waits; a save from this tab before it was read sent every field back as it was, and put the other device's value back on the server.
saveSettingsnow reads the waiting change first (_settingsChangedElsewhere,dashboard-data.js). - new — Ocean is the theme a fresh install starts on. Ocean [dark], with Ocean [light] for auto dark mode (
defaultThemeID,DEFAULT_THEMEintheme-loader.js, the Appearance ↺ default). Existing installs keep their theme; one still to run the v1.22.0 move lands on Aurora Glass as before, so its dialog stays right.
Docs
- MANUAL.md describes the Recent sheet (tiles, pager,
[]), the page filter's several words,↓/Enter and collapsed hits, the tag view's any/all switch (?all), Add tag…, Score sort and remembered sort, the Collection menu's keys, the Inbox tile's asleep line, the Glances Hosts table (trouble first, sorting, mount, last-hour line, °F) and Ocean as the fresh-install theme. - Manual screenshots retaken on a fresh seed: the Recent sheet, the edit-mode panel, Glances Hosts and every dashboard modal in the dashboard font. The shot kit now sets Celsius (the demo seed is Fahrenheit, which put "16°F" in Leiden's header and °F on the Glances page), and the Glances mock sends
cpuHourfor the Hosts graph. - MANUAL.md has the theme studio button (the eleventh), the slide-away setting's new name and how a docked bar answers the mouse, Recent and the search panel in the middle of the window, and the search panel's rail. The screenshots are retaken with the eleven-button bar, the centred modals and the readable rail; the action-bar shot presses
'only when the bar has gone, since on a bar still out it sends it away. - README screenshots retaken: every picture with the action bar now has its eleventh button, and search and commands open in the middle of the window.
- Config → Help in six languages: Themes (Ocean for a fresh install, the palette button), Search (the panel in the middle, the rail, the page filter's words and keys), Tags (any or all, Add tag…, sorting), Header (the theme studio button, how a docked bar slides away and comes back), Keyboard (
[]in Recent) and Glances hosts (trouble first, sorting, mount, last-hour line). The tips on the action bar and on Recent follow. - Config → Overview and About → News & features have three new cards since v1.22.5: any tag or every tag, Recent with the day you opened it, and the theme studio button.
- Cheat sheet: rows for paging Recent (
[], Page Up/Down) and for↓/Enter in the page filter; the HTML and PDF are regenerated. - Translations: every key added or changed in this release is in Dutch, German, French, Spanish and Chinese.
Tests
- fix — Two Docker timeline tests no longer age out.
TestDockerTimelineRecordsEventsandTestContainerNotifierOwnStopSignalrecorded their events on 29 September 2026, and the timeline prunes against the wall clock at 30 days, so from 29 October they found an empty timeline. Their clock starts an hour before now. - fix —
:maxactionsoffers 11 inedit-mode.spec.js, andwhats-new-hidden-release.spec.jsexpects v1.22.5 to lead the modal. - fix — Specs follow the action bar and the centred modals.
config-page-templatesopens the pages panel with,(a docked bar has slid away),look-migration-noticelooks for Open the Theme Studio inside its dialog (the action bar has a button of that name now),header-sheet-reduced-motionmeasures against the window's centre line,overlay-viewslets the five card materials give their view plate a layer (paper's grain), andrecents-tileswaits for the search component before it opens recents mode. - fix —
updated-noticekeeps the corner for its own card. The analytics invitation asks for the same corner a second after the Updated card; when it got there first, the Updated card waited behind it and the test timed out. The test answers the analytics question in its setup, and still waits for the notes to load before it closes them.