0.4.0 Coconut: Notifications & Plugins & Ambient Layers
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:
- Decodes
src/images/favicon.icowithdecode-ico - Upscales the best frame to 256×256 with
sharp - Writes a multi-size ICO via
to-ico→build/icon.icoandelectron/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
safeStoragewhere available, XSS-hardening in plugin-facing UI paths, integrity checks on plugin flows. - Desktop polish — app icon in the packaged
.exeand 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 |
