Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>Grove: Grow a Tree as You CodeNew to Visual Studio Code? Get it now.
Grove: Grow a Tree as You Code

Grove: Grow a Tree as You Code

Haritha M

|
1 install
| (0) | Free
Grow a tree in your sidebar as you code. Six species that sprout, branch and blossom from the hours you put in, not the lines you write.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Grove 🌳

Grow a tree in your sidebar as you code. It sprouts, branches, and blossoms from the work you actually do — no goals to set, nothing to check off.

How it grows

Presence is the engine. An hour at the keyboard is an hour of work whether you typed every character yourself or steered something else into writing them, so the tree mostly measures that you showed up. Typing is texture on top.

Source Worth
Being at the keyboard 6 per active minute, while VS Code is focused
Typing 0.08 per character, capped per edit so a big paste isn't a shortcut
Saving a file 3
Running a terminal command 3

"Active" is generous on purpose. Typing, scrolling, switching files, running something in the terminal or just clicking around all count as signs of life, and any of them keeps the minutes counting for the next five — because writing a prompt and reading the reply is real work that this extension has no way to see.

Terminal commands are picked up through shell integration, which VS Code enables by default for bash, zsh, fish and PowerShell. Keystrokes inside a terminal are not observable by any extension, so a long session in vim or a REPL counts as presence rather than as typing.

No minute can be worth more than 60, which never affects honest work (sustained fast typing peaks around 54) but flattens anything generating edits mechanically, like a formatter loop or a file watcher.

A normal-rate tree reaches Ancient at 6000, so about 10 hands-on hours or 15 AI-steered ones. Set grove.growthRate to slow for a two-week tree or fast for a weekend one.

Stages: Seed → Sprout → Seedling → Sapling → Grown → Blossoming → Ancient.

At normal rate that is roughly 15 minutes to Sprout, 2–3 hours to Sapling, and 10–15 hours to Ancient — a week or two of ordinary use.

Where it shows up

Three places, in descending order of how much room they take:

  • The sidebar — the tree, its stats, and the gallery.
  • The Explorer — a compact row with the tree and its progress. Click it to open the full view. Collapse or hide it like any other Explorer section.
  • The status bar — stage and overall progress.

Water and thirst

Stay away for a day and a bit and your tree gets thirsty: it loses colour, droops, the grass browns off, and the stone beside it pulls a face.

Coming back to work does not undo it. The droop you return to is held until you run Grove: Water Tree — otherwise the first keystroke would quietly erase the only sign the tree was ever neglected, and there would be nothing left for watering to fix. Thirst is purely cosmetic either way: growth is never lost, only posture and colour. Turn it off entirely with grove.decay.

Species

Six to choose from via grove.species, each with its own shape and pace:

  • Oak — broad round canopy, slow and steady
  • Cherry — slender trunk that erupts into pink blossom
  • Pine — tall stacked evergreen tiers, barely notices you leaving
  • Bonsai — a sinuous trunk and layered pads, rewards long projects
  • Willow — drooping strands, thirsty and worth it
  • Banyan — a vast canopy on its own aerial roots, until one tree is a grove

Changing species plants a fresh seed. Anything past Seed is kept on the gallery, so switching never means losing what you grew.

Commands

  • Grove: Show My Tree
  • Grove: Water Tree
  • Grove: Plant a New Tree
  • Grove: Show Gallery
  • Grove: Clear Gallery

Settings

Setting Default What it does
grove.species oak Which tree to grow
grove.growthRate normal How quickly work turns into growth
grove.showStatusBar true Show stage and progress in the status bar
grove.decay true Let the tree get thirsty while you're away

Development

npm install
npm run compile   # or: npm run watch

Press F5 to launch an Extension Development Host.

Growth and thirst are both tuned for days of real use, so set grove.debugCommands to true and the palette gains Grove: Debug — Fast Forward: jump to any stage, grow by 10%, or backdate the tree's last drink so it wilts on demand. It drives the same events real work does, so what you see is what a genuinely grown tree looks like.

Everything about a tree's shape lives in src/species.ts. The whole species descriptor is posted to the webview, which draws from it and nothing else — so adding a species is a matter of describing it there and, if it needs a shape the existing trunk and crown kinds don't cover, adding that kind to media/tree-draw.js.

Your tree is stored in VS Code's global state, so it follows you across workspaces. Two windows open at once each keep their own copy and merge on focus, so progress is never double-counted or lost to whichever saved last.

npm test            # 58 tests, no dependencies
npm run typecheck   # tsc, no output
npm run package     # builds a .vsix

TESTING.md covers what the suite cannot: whether the trees actually look right. Growth and thirst run on a scale of days, so it leans on the debug command throughout.

Publishing

package.json carries SET_ME placeholders in publisher, repository, bugs and homepage. vsce refuses to build while publisher is one, which is deliberate — an extension published under the wrong ID cannot be moved.

  1. Create a publisher at marketplace.visualstudio.com/manage and put its ID in publisher.
  2. Create a Personal Access Token in Azure DevOps with Marketplace → Manage scope, and npx vsce login <publisher>.
  3. Point repository, bugs and homepage at the repo, or delete all three. They only feed the marketplace listing; vsce warns without them but builds.
  4. npm run package to get a .vsix, or npm run publish to go live.
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft