[2.2.0] Rowan: Horizontal beds, settings IA, glyph-s & Discord presence
Full Changelog: 2.1.3...2.2.0
2.2.0 Rowan is the layout and presence release of the Rowan line. The garden finally sits in horizontal beds under plugin widgets, the footer pins to the window, Settings get a clearer information architecture, glyph-s 2.7 powers local search, and Discord Rich Presence reflects what you are actually growing — still zero accounts, zero telemetry.
This release is 5 commits since 2.1.3 (feat + polish + garden/CSS durability + store toolbar + docs), plus companion Quote 1.6.0 on registry 3.5.4.
Numbers That Matter
| 3 | Habits per garden bed (hard cap with BED_FULL toast) |
| 2.7.0 | Vendored glyph-s search engine in-tree |
| 500 + 500 | Curated Quote banks — English and authentic Russian |
| 1 | Pinned footer — position: fixed on every theme and ambient |
| 0 | Cache-clear cloud leaking into the garden |
| 0 | Required accounts, cloud sync, or telemetry |
Engines (unchanged major)
| Engine | Role |
|---|---|
| CoreV6 | App shell, settings IA, i18n, release pipeline |
| GrowthKit3 | Habit growth, beds, schedules, analytics |
| IDB3 | IndexedDB persistence |
| PLE1 | Plugin sandbox + store UI |
Garden. Horizontal beds.
Beds are no longer flat headers floating in a broken grid. Each bed is a full-width row under the plugins strip:
- Plugin widgets sit in
.garden-plugins-rowabove the beds - Each
.garden-bed-rowlays out up to 3 habit cards in equal columns - Rename / delete beds from the context menu
- Drag-and-drop into a full bed shows a clear bed full toast
- Trophy Garden remains the master switch for next-Legacy progress
- Calendar heatmap stays hidden until settings sync when disabled (no FOUC)
Shell. Footer that stays put.
Short gardens used to leave a floating chrome strip above empty space — especially on pink/ambient themes. The footer is now fixed to the bottom of the window, and .app-main keeps enough bottom padding so cards never hide underneath.
CSS durability: src/styles/main.css is the source of truth; shell.css is generated by prebuild (split-main-css). Editing only shell.css will be wiped on the next build.
Settings. Clearer rooms.
| Section | What changed |
|---|---|
| Focus | Dedicated Focus settings (hide chrome, auto-start) |
| Statistics | Garden heatmap toggle lives here |
| Storage | Former Data — cache size + clear in its own subsection |
| Updates | Check / auto-update toggles; Check uses the Search magnifier icon |
| Notifications | Per-plugin mute toggles + OS footnote |
| Search | Show/hide header search; rebuild index with progress bar |
| Sidebar | Material-style icons throughout |
Settings sheets use a flex column layout and generous bottom padding so the last lines (cache clear, OS notification hint, plugin cards) are no longer clipped by the window edge.
Search · glyph-s 2.7
- Vendored engine at
src/core/glyph-s/(engine, layout, polygon) - Header search can be hidden without removing the index
- Rebuild Index shows a determinate progress bar
- Index stays fully local — habits, plugins, beds, events, settings labels
Plugin store
- Compact one-line toolbar: search + category + sort
- Filters styled as Cultiva chips (label + select in one control)
- Search input is a fixed-height field (no native search balloon stretch)
- Install permissions as dash lists with clearer copy
- README / changelog rendered in release-note markdown style
Discord Rich Presence
Activity is driven by the garden, not static page strings:
- Habit counts / streaks in the presence text
- Stable
startTimestampfor the session (no reset every 15s or when opening Discord settings) discord:set-focus-sessionIPC for Focus / Pomodoro-style presence- Buttons: Get Cultiva (landing) · GitHub
- Unused
partySize/partyMaxremoved
Cache clear
Clearing the search cache no longer hijacks the loading-screen cloud. Dedicated orbs, force-hidden overlay when idle — no eternal blue pulses over the garden.
Companion plugins
| Plugin | Version | Notes |
|---|---|---|
| Quote | 1.6.0 | 500 curated EN + 500 authentic RU quotes |
| Registry | 3.5.4 | Ships with Quote 1.6.0 |
Radio / Weather / Time remain on the 2.1.3 companion line unless noted in cultiva-plugins.
Installation
| Platform | File |
|---|---|
| Windows | Cultiva-Setup-2.2.0.exe, Cultiva-Portable-2.2.0.exe |
| macOS Intel | Cultiva-2.2.0-mac-x64.dmg (+ .zip) |
| macOS Apple Silicon | Cultiva-2.2.0-mac-arm64.dmg (+ .zip) |
| Linux | Cultiva-2.2.0-linux-x86_64.AppImage, Cultiva-2.2.0-linux-amd64.deb |
Data lives in IndexedDB locally. No account required.
Upgrading from 2.1.x: garden data, beds, and plugins are preserved. Export a backup under Settings → Storage before updating, just in case.
For Developers
npm ci && npm test && npm run electron:build| Path | Note |
|---|---|
src/styles/main.css |
Edit layout here |
scripts/split-main-css.mjs |
Regenerates shell.css + public themes/ambient |
scripts/rebuild-main-from-shell.mjs |
Recovery if shell drifts ahead of main |
See CHANGELOG.md and CultivaProgress.md.
Commit log (since 2.1.3)
5 commits — click to expand
release(2.2.0): store toolbar, docs, Cultiva Progress, GitHub release notes
fix(garden): keep plugins row when clearing habit nodes
fix(ui): stop cache-cloud leak and straighten garden grid
fix(2.2.0): glyph-s 2.7, Discord activity presence, UI polish
feat(2.2.0): horizontal beds, settings IA, pinned footer
Author of every commit: krwg <shevotsukov@icloud.com> — no co-authors.
Links
| Resource | URL |
|---|---|
| Repository | https://github.com/krwg/cultiva |
| Landing | https://krwg.github.io/cultiva/ |
| Plugins | https://krwg.github.io/cultiva-plugins/ |
| Progress story | https://github.com/krwg/cultiva/blob/main/CultivaProgress.md |
| Wiki | https://github.com/krwg/cultiva/wiki |
Previous releases
Thank you for growing your habits with Cultiva.