Sidebar Customization
Pin, unpin, and reorder the icon rail on the left edge of the window.
The icon rail along the left edge of the Mosaic window is user-customizable. Torrents is anchored at the top (you can’t navigate the app without it) and Settings is anchored at the bottom corner (the conventional desktop-app home for preferences); everything in between is yours to arrange.
What can be pinned
Every settings pane is a pinnable target. Pinning a pane drops a shortcut icon on the rail that, when clicked, navigates straight to that pane in one step — no detour through the settings menu. Useful for the panes you live in:
- Categories / Tags — if you reshuffle them often
- Schedule — if you actively manage bandwidth windows
- RSS — if you tend to feed activity
- Blocklist — if you refresh on a cadence
The Default pinned set is Torrents, Schedule, RSS, About (plus Settings at the bottom corner).
Pin / unpin
Three entry points, pick whichever fits the moment:
- Pin button in Settings. Every row in the Settings sidebar has a small pin icon at the right edge. Outline pin (only visible on hover) = unpinned; filled accent-color pin (always visible) = pinned. Click to toggle.
- Right-click an icon on the rail. Pops a context menu with a single “Unpin from Sidebar” action. Torrents and Settings are locked and don’t show the menu.
- Drag. Grab any non-locked icon and drag it to a new position on the rail. A thin accent line on the top/bottom edge of the row you’re hovering shows where the drop will land. Dropping above Torrents (the locked first slot) lands at position 1.
Visibility gates
Some panes have visibility gates — admin-only on the daemon, desktop-only for Desktop, RSS gated by the manage_rss permission, etc. These gates apply at render time, not at save time:
- An admin who pins the Users pane and then logs in as a member account just sees that icon hidden from the rail. The underlying pin survives the round-trip and reappears when they log back in as admin.
- The Desktop pane is hidden in browser-mode (the SPA running against
mosaicd’s web interface) but stays pinned in the underlying state, so amosaicuser who pins Desktop on the GUI keeps that pin when the SPA happens to load over HTTP.
Persistence
Pin state lives in localStorage under mosaic.sidebar_pins.v1 as a single ordered array — membership = pinned, position = order. It’s per-browser-profile, not synced across devices or shared between the desktop app and the web SPA: pinning a pane on the desktop doesn’t carry over to a phone browser, and vice versa.
On load, three invariants are applied: unknown ids are filtered out (so a downgrade-then-upgrade doesn’t leave stale entries surfacing as broken icons), duplicates are deduped, and Torrents is forced to the front.
Caveats
- Torrents and Settings are non-negotiable. You can’t unpin Torrents (the main view) or Settings (the entry point to everything else). Drag and right-click are disabled on both.
- Pins are per-browser-profile. Clearing browser storage resets to the defaults; private/incognito windows always start fresh.
- Order only matters between Torrents and Settings. The Settings slot at the bottom corner is structural; you can’t move it elsewhere or put another icon below it.