Novelist 0.2.1 — Faster, cleaner cold starts
Startup rewritten: code-split components, zero-flash themed pre-paint, 120ms view fades; plus the 1px white hairline at the top of macOS windows is gone.
0.2.1 is focused on the moment between launching the app and seeing your editor. No new features — every cold start is just faster and quieter.
Startup performance
- Code-split components: Editor, every dialog and panel, and the canvas / kanban / mindmap file editors are now dynamic imports. The first-paint JS chunk only contains what you actually see first — the sidebar, tab bar, welcome screen.
- On-demand locales: only the active language loads at boot (English stays resident as a fallback). The Simplified Chinese bundle no longer sits in the first JS chunk.
- Themed pre-paint:
index.htmlreads your saved theme from localStorage before CSS or JS load, and sets the html background to the matching color. Dark-theme users no longer see a white flash at cold boot. - View fades: Welcome ↔ project transitions now cross-fade over 120ms. Respects
prefers-reduced-motion.
Startup reliability
A previous build tried to eliminate the native white frame by starting the window with visible: false and letting the frontend call show() after mount. We’ve since wired up the Tauri capabilities it needs, added full phase-by-phase logging and unhandled-error capture to main.ts, and bolted on a 3-second safety timer that force-shows the window if any awaited step hangs. No more “process is alive but there’s no window.”
macOS polish
In dark themes, the very thin 1px white line at the top edge of the window is NSWindow’s top-edge highlight, drawn using the window’s current NSAppearance (default Aqua = light) against dark WebView content.
- We disable the macOS 11+
titlebarSeparatorin the setup hook. - A new command lets the frontend sync the NSWindow’s appearance to the active theme during
applyTheme(). Theme switches now update the window chrome too.
Also
- Startup phase marks now flow to both the browser console and Rust
tracing, making slow-start debugging easier. - Full list: upstream CHANGELOG