Skip to content

[2.2.0] Rowan: Horizontal beds, settings IA, glyph-s & Discord presence

Choose a tag to compare

@github-actions github-actions released this 18 Jul 18:13

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-row above the beds
  • Each .garden-bed-row lays 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 startTimestamp for the session (no reset every 15s or when opening Discord settings)
  • discord:set-focus-session IPC for Focus / Pomodoro-style presence
  • Buttons: Get Cultiva (landing) · GitHub
  • Unused partySize / partyMax removed

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.