Releases: marcoodignoti/Shelf
Release list
Shelf v0.5.0
Shelf v0.5.0
Shelf v0.5.0 introduces Split View — the ability to place two note pages side by side in the same workspace, so you can read or write one page while referencing another.
Changes
- Split View (two pages side by side):
- Open a second page beside the current one from a new toolbar button, then pick the page to affiance from a searchable picker.
- A draggable divider resizes the two panes; the proportion is remembered across app restarts.
- New
SplitSlicestore manages primary/secondary panes and the active pane, with full persistence and auto-cleanup when a split page is deleted. - Toolbar dropdown menu (Scegli/Scambia/Chiudi) plus keyboard shortcuts:
⌘\toggle,⌘⇧\swap panes,⌘⇧]move focus between panes. - The sidebar highlights and targets whichever pane currently has focus.
- Extracted a reusable
PageSearchResultscomponent now shared by the command palette and the split picker.
Tester Notes
Open a page and click the new split-view button (Columns icon) in the editor toolbar to pick a second page. Verify both panes render and the divider is draggable; reload the app and confirm the split (both pages and the ratio) is restored. Test the ⌘\, ⌘⇧\, and ⌘⇧] shortcuts. Click into each pane and confirm the sidebar highlights that pane and opens clicked pages into it. Delete the secondary page and confirm the split auto-closes. Verify the split only appears in Notes mode (Studio and Home are unaffected).
Shelf v0.4.9
Shelf v0.4.9
Shelf v0.4.9 brings a modernized titlebar experience for Windows users, a redesign of the external assistant popover, and a fully polished landing page.
Changes
-
Modern Windows Titlebar & Custom Controls:
- Removed the native
titleBarOverlayclick dead zone, replacing it with a fully styled custom HTML titlebar. - Reworked window drag regions to ensure the sidebar toggle and window controls are always fully clickable without overlap.
- Compacted the left UI on Windows for a cleaner native feel without unnecessary offsets.
- Removed the native
-
External Assistant Redesign:
- Redesigned the assistant popover and used non-focus-stealing activation (
showInactive) to let you interact seamlessly with it. - Fixed test mock behaviors for the window focus cycle.
- Redesigned the assistant popover and used non-focus-stealing activation (
-
Landing Page Redesign:
- Simplified the visual layout using a minimal Cron/Linear-style editorial look.
- Inlined the product demo video directly into the Studio room media frame.
- Set up a self-hosted, subsetted Inter variable font to optimize performance.
Tester Notes
On Windows, confirm the custom window controls (minimize, maximize, close) are visible, functional, and match the app theme. Verify that clicking near the top-left sidebar toggle works reliably and isn't blocked by titlebar drag zones. On macOS/Windows, open the assistant popover and confirm it displays without stealing focus from the main window.
Shelf v0.4.8
Shelf v0.4.8
Shelf v0.4.8 reworks the sidebar update pill into a compact, fluid
affordance that stays out of your way and works whether the sidebar is open
or closed.
Changes
-
Compact update pill:
- Tighter pill with a heavier, slightly smaller label and a darker orange
accent in dark mode. - Removes the hover-revealed pause/cancel controls — the bar itself is the
affordance. Click the bar to cancel an in-flight download. - The progress fill always grows left→right.
- Tighter pill with a heavier, slightly smaller label and a darker orange
-
Fluid available→loading transition:
- Stacked crossfade layers move from "Aggiorna" to the progress bar without
layout shift, so the fill never appears to grow from the center. - A single always-mounted component instance portals into the sidebar when
open, so toggling the sidebar no longer resets the update check or loses
in-flight download state.
- Stacked crossfade layers move from "Aggiorna" to the progress bar without
-
Sidebar-closed variant:
- When the sidebar is closed, a compact Download-icon pill appears next to
the sidebar toggle. - Starting a download expands the pill into a progress bar that pushes the
breadcrumb aside with a smooth 280ms slide. - Cancelling or completing the download collapses the pill back to the
icon.
- When the sidebar is closed, a compact Download-icon pill appears next to
Tester Notes
With the sidebar open, confirm "Aggiorna" appears when an update is
available, clicking it starts a left-to-right progress bar, and clicking the
bar cancels the download. Close the sidebar and confirm the compact Download
icon appears next to the toggle, expands to a bar on click, slides the
breadcrumb right, and collapses back when the download ends. Toggle the
sidebar open/closed mid-download and verify the pill state persists without
re-checking.
Shelf v0.4.7
Shelf v0.4.7
Shelf v0.4.7 introduces the external Chat popover: an isolated provider
window for ChatGPT and Gemini that keeps Shelf's local workspace data private.
Changes
-
External Chat popover:
- Adds a sidebar Chat button and
Cmd+Shift+Ashortcut. - Opens ChatGPT or Gemini in an isolated Electron child window with dedicated
persistent provider sessions. - Preserves provider state and window bounds without reopening the popover at
app launch.
- Adds a sidebar Chat button and
-
Privacy and security contract:
- Keeps Shelf free of data-integrated AI: no notes, database, Studio content,
files, or command palette data are bridged into provider pages. - Replaces the old
no-aiguard with a contract guard that permits only the
isolated external assistant surface. - Enforces provider navigation allowlists,
https:URLs, isolated webviews,
and a minimal shell preload.
- Keeps Shelf free of data-integrated AI: no notes, database, Studio content,
-
Provider login and navigation polish:
- Supports Google OAuth and macOS passkey selection for provider login flows.
- Keeps ChatGPT project and conversation links inside the popover instead of
opening them externally. - Hides native traffic lights in the popover and moves the provider disclosure
above the webview so it does not collide with ChatGPT's composer.
Tester Notes
Open Chat from the sidebar or press Cmd+Shift+A. Confirm ChatGPT and Gemini
load, login state persists, ChatGPT project sidebar links open inside the
popover, and the disclosure text remains visible without covering the provider
composer.
Shelf v0.4.6
Shelf v0.4.6
Shelf v0.4.6 fixes a beta update download failure and adds live download
progress for self-update.
Changes
-
Beta update download reliability:
- Fixes
update download is not linked to a verified manifest, which fired
whenever two update checks overlapped (for example the auto-update notice
firing while the Settings panel ran its own check). A re-fetch of the
manifest no longer invalidates the download token the renderer is holding.
- Fixes
-
Download progress and cancellation:
- Self-update downloads now show a live progress bar with transfer rate and
estimated time remaining. - In-progress downloads can be cancelled; the verified token is preserved so
a retry does not require re-checking for updates.
- Self-update downloads now show a live progress bar with transfer rate and
Tester Notes
Open the Settings → Updates panel and trigger a beta update check, then open
another surface that runs an update check at roughly the same time. Confirm the
download still starts and completes without the "not linked to a verified
manifest" error, and that the progress bar and cancel button behave correctly.
Shelf v0.4.5
Shelf v0.4.5
Shelf v0.4.5 is a visual polish release for the floating main card, sidebar
chrome, and Studio split surface.
Changes
-
Floating main card refinement:
- The main workspace now reads as a rounded card with a transparent gutter and
a consistent subtle border around the Notes and Studio surfaces. - Header borders now close cleanly around the top and bottom edges, including
the Studio PDF toolbar.
- The main workspace now reads as a rounded card with a transparent gutter and
-
Sidebar and titlebar alignment:
- macOS traffic lights, the sidebar toggle, and breadcrumbs are vertically and
horizontally aligned with the floating main card. - Sidebar navigation has more breathing room below the traffic lights and
better left-column alignment.
- macOS traffic lights, the sidebar toggle, and breadcrumbs are vertically and
-
Sidebar resizing:
- Resizing now happens from the main card's left edge instead of a visible
divider inside the sidebar. - The resize handle is invisible until used, preserving the clean gutter.
- Resizing now happens from the main card's left edge instead of a visible
-
Settings window cleanup:
- Embedded Settings no longer duplicate macOS window controls or the close
button when opened as a full-screen app surface.
- Embedded Settings no longer duplicate macOS window controls or the close
Tester Notes
Open Notes and Studio with the sidebar both open and closed. Verify the gutter,
main card border, breadcrumbs, sidebar toggle, and traffic lights feel aligned.
Resize the sidebar from the left edge of the main card and confirm no visible
vertical divider appears.
Shelf v0.4.4
Shelf v0.4.4
Shelf v0.4.4 reworks the Settings surface into a focused full-screen window
and refreshes the sidebar and theme system with a lighter, more neutral look.
Changes
-
Settings redesign:
- Settings now open as an embedded full-screen window instead of a floating
modal, with a search bar to filter sections and macOS-style window chrome. - Reorganized navigation into Personal (Profile, Appearance, Shortcuts,
General) and Workspace (Updates, Import / Export, About) groups. - Renamed the "Preferences" section to "General".
- Settings now open as an embedded full-screen window instead of a floating
-
Quick settings popover:
- The sidebar footer button now opens a popover with account info, shortcuts
to key sections, and an inline system / light / dark theme stepper.
- The sidebar footer button now opens a popover with account info, shortcuts
-
Profile hero:
- The Profile section shows a large avatar, workspace name, and live stats
(notes, projects, PDFs, studio notes).
- The Profile section shows a large avatar, workspace name, and live stats
-
Native theme bridge:
- The Electron window theme now follows the app theme via a new
setNativeThemeSourceIPC bridge, and the sidebar dims its blur when the
window loses focus.
- The Electron window theme now follows the app theme via a new
-
Visual recalibration:
- Sidebar density, typography (lighter font weights), and a neutral grayscale
palette for both light and dark themes.
- Sidebar density, typography (lighter font weights), and a neutral grayscale
Tester Notes
Open Settings from the sidebar footer. Use the search bar to filter sections,
switch the theme from the inline stepper, and confirm the Profile hero shows
correct workspace stats. Verify the sidebar looks correct in light, dark, and
system theme, and that the blur dims when the window is inactive.
Shelf v0.4.3
Shelf v0.4.3
Shelf v0.4.3 is a stable patch release focused on preserving rich LLM chat
output when pasted into notes.
Changes
-
LLM paste fidelity:
- Preserved Markdown structure from chat output, including headings, lists,
links, quotes, inline code, code blocks, tables, and horizontal dividers. - Converted Markdown pipe tables into structured editor table blocks instead
of plain text. - Kept divider blocks, quote blocks, toggle list items, and standard links
safe across reload and search indexing.
- Preserved Markdown structure from chat output, including headings, lists,
-
Formula paste reliability:
- Protected LaTeX before Markdown parsing so inline formulas keep underscores,
backslashes, and compact parenthesized notation such as(E(r)). - Converted display math copied as
$$...$$,\[...\], raw bracket fences,
and bare LaTeX environments such asaligned,cases, and matrices into
formula blocks. - Collapsed accidental repeated equation separators from pasted formulas, so
================is repaired to a single=. - Repaired previously split bracketed and aligned formula groups when pages
are reopened or normalized.
- Protected LaTeX before Markdown parsing so inline formulas keep underscores,
Tester Notes
Paste output from an LLM chat that contains tables, dividers, Markdown formatting,
and multi-line physics formulas. Confirm the note keeps the same structure as the
chat view and formulas render as formula blocks instead of raw LaTeX text.
Shelf v0.4.2
Shelf v0.4.2
Shelf v0.4.2 is a stable patch release focused on packaging reliability,
Studio PDF stability, backend maintainability, and release confidence.
Changes
-
Studio stability:
- Fixed a Studio PDF cleanup crash that could surface when a PDF document proxy
does not expose the full PDF.jsdestroy()lifecycle. - Kept Studio document import/open flows covered by the full e2e suite.
- Fixed a Studio PDF cleanup crash that could surface when a PDF document proxy
-
Release reliability:
- Hardened macOS packaging so CI can recover Electron's app bundle if the
postinstall download is missing. - Published release checks now cover macOS packaging, Windows packaging,
Electron runtime smoke tests, e2e tests, bundle audits, and visual smoke. - Stabilized visual and editor e2e checks that were sensitive to CI rendering
and focus timing.
- Hardened macOS packaging so CI can recover Electron's app bundle if the
-
Backend and export hardening:
- Refactored backend command modules and shared helpers to make the Electron
backend easier to audit and maintain. - Hardened export hydration and Studio search index synchronization paths.
- Refactored backend command modules and shared helpers to make the Electron
-
Docs and launch polish:
- Rebuilt the landing page with real app imagery and current design tokens.
- Added launch and beta-testing materials for distribution checks.
Tester Notes
Verify that imported Studio PDFs open without an error boundary, that exported
workspaces include linked content correctly, and that the macOS and Windows
release artifacts install or launch normally.
Shelf v0.4.1
Shelf v0.4.1
Shelf v0.4.1 is a security hardening and performance optimization update. It addresses findings from the security audit, optimizes page tree traversals and database operations, refactors the state management layer, and refines the build bundle hygiene.
Changes
-
Security Hardening:
- Remediated database and WAL sidecar permissions to strict
0o600(L2). - Hardened dynamic KaTeX formula rendering by locking
trust: falseagainst adversarial XSS injection (L1). - Scoped Content Security Policy
connect-srcheader dynamically to the exact ephemeral port bound by the local Studio PDF server (L3). - Documented macOS ad-hoc library validation constraints (M2).
- Cleaned up build bundle hygiene by filtering out dev files, lockfiles, and configs from the released bundle (M1).
- Remediated database and WAL sidecar permissions to strict
-
Performance Optimizations:
- Optimized page tree traversals (visible page lookups, descendant scans, and page move validations) from quadratic
$O(n²)$ to linear$O(n)$ using parent-children index maps. - Eliminated redundant page re-renders in the Sidebar and Command Palette by wrapping Zustand store selectors in
useShallow. - Consolidated sequential column writes in
updatePageinto a single dynamic SQLite UPDATE query. - Reduced Electron IPC message size by omitting large page text/content when querying Studio page links.
- Bypassed costly
JSON.parseoperations and exceptions for plain-text search results in page preview queries. - Pre-computed sorting maps in database row tables, reducing JSON parsing complexity from
$O(n \log n)$ to$O(n)$ .
- Optimized page tree traversals (visible page lookups, descendant scans, and page move validations) from quadratic
-
Refactoring & Architecture:
- Decomposed the monolith
useAppStoreinto focused slices (pagesSlice,studioSlice,profileSlice,sharedSlice) to improve code health and modularity. - Replaced the new page icon in the sidebar nav with a cleaner Lucide
SquarePenicon.
- Decomposed the monolith
Tester Notes
Ensure the application launches correctly and runs cold startup within budget. Verify that large documents (800+ pages) and search results render instantly without UI lag.