Skip to content

0.4.0 Coconut: Notifications & Plugins & Ambient Layers

Choose a tag to compare

@krwg krwg released this 13 May 18:54
· 9 commits to main since this release
image

Desktop habit tracker — offline first, Windows 10/11.

Release
Electron

Grow your habits. Grow yourself.
This release refines how Cultiva feels on screen, how plugins run safely, and how the Windows build ships — including a fix for portable installers.


I For everyone using Cultiva

Look & feel

Choose how the app reads in your space. Themes are grouped so light and dark palettes stay predictable, with Auto following the OS.

Appearance Themes you can pick
Light Light · Blossom · Frost · Cedar · Meadow · Orchard · Honeycrisp
Dark Dark · Evergreen · Ocean · Sunset · Pink · Moon · Dusk · Inkwell · Sequoia
System Auto (matches light/dark mode)

Ambient backgrounds

Garden and calendar share the same ambient layer. Pick a preset or your own photo:

Preset Notes
None Clean, distraction-free
Aurora Garden · Rainfall · Starlight · Snowfall · Fireflies Classic animated layers
Petal Drift · Silicon Mist · Ember Glow · Breeze Glass New motion presets
My Photo… JPEG / PNG / WebP / GIF, stored locally in your profile

Calendar

The calendar page uses the same ambient background pipeline as the garden, so switching theme or background feels consistent everywhere you plan your week.

Plugins (desktop)

  • Install community widgets from the registry (HTTPS), with safer fetching from the packaged app.
  • Plugin code runs in a sandboxed iframe — no direct access to privileged Electron APIs or the main DOM from plugin JavaScript.
  • New in 0.4.0: Cultiva can show plugin sheets, header chips, and garden HTML in the main window through a small, documented bridge (see https://github.com/krwg/Cultiva/wiki/Cultiva-Plugins-Guide).

Notifications & updates

  • Native OS notifications where supported, with settings that match the rest of the UI.
  • Auto-update from GitHub Releases is more resilient (softer handling when no update exists, respect for dev flags and DISABLE_AUTO_UPDATER).

Habits

  • Quantity habits get a proper log flow on desktop.
  • Numeric values are normalized so streaks and comparisons stay reliable.


II For GitHub contributors & packagers

Downloads

Artifact When to use it
Cultiva-Setup.exe Default install — shortcuts, uninstall entry, in-app updates when published on Releases
Cultiva-Portable.exe Copy-run workflows, USB sticks, machines where you prefer not to run an installer

Windows icon & portable build

electron-builder requires the Windows .ico to include at least a 256×256 image for the portable target. Cultiva’s favicon historically embedded smaller sizes only.

Fix: scripts/sync-build-icon.mjs (runs in prebuild) now:

  1. Decodes src/images/favicon.ico with decode-ico
  2. Upscales the best frame to 256×256 with sharp
  3. Writes a multi-size ICO via to-icobuild/icon.ico and electron/app-icon.ico

After npm install, npm run electron:build should produce both NSIS and portable artifacts without the previous image … must be at least 256x256 error.

Plugin architecture (summary)

Layer Responsibility
Main process File I/O, pluginHttpGet, install paths, notifications
Renderer + plugin-manager Registry fetch, sandbox host, injecting manifest.styles, main-window UI bridge
Sandbox iframe index.js as new Function(context, hooks, …) — storage RPC, hooks, sheet/header/garden messages

Instance methods on ES classes are exposed to the host proxy via prototype enumeration (so openWeatherModal and friends work reliably).

Notable commits (themes & scope)

High-level themes from main — use git log for the full graph:

  • 0.4.0 “Coconut” — appearance module split (theme-config.js, ambient-bg.js), settings & i18n refresh, updater hardening, plugin HTTP path, CSP relaxations for GitHub assets.
  • Plugins — sandboxed execution, IPC hardening, style injection from manifest, main-window bridge for sheets / header / garden.
  • Security & data — credential handling with safeStorage where available, XSS-hardening in plugin-facing UI paths, integrity checks on plugin flows.
  • Desktop polish — app icon in the packaged .exe and shortcuts, native notification wiring, sandbox CSP fixes.

Upgrade checklist

  • Back up %APPDATA%/Cultiva (or your portable folder) if you rely on local data.
  • Install 0.4.0 over 0.3.x — IndexedDB layout is forward-compatible for this track; if you hit issues, open an issue with logs from Help → DevTools (if exposed) or the terminal when running electron:dev.
  • Plugin authors: if you use the new main-window APIs, set "minAppVersion": "0.4.0" and republish on CultivaPlugins.

Links

Resource URL
Latest release https://github.com/krwg/Cultiva/releases/latest
Plugin author guide https://github.com/krwg/Cultiva/wiki/Cultiva-Plugins-Guide
Public plugin registry https://github.com/krwg/CultivaPlugins