Skip to content

Releases: tortuvshin/grove

v0.3.1 — 2026-06-30

Choose a tag to compare

@tortuvshin tortuvshin released this 29 Jun 20:15

[0.3.1] — 2026-06-30

Docs-only patch. Every change since v0.3.0 (2026-06-11) has been
on the documentation site (docs/), the production-side home page,
and transitive dev-dependency bumps. No @grove-dev/* package source
code has changed.
Framework support, blueprints, CLI commands,
generated outputs, and schema are unchanged from v0.3.0.

Fixed

  • Production-site honesty pass on the standalone / page. The home page no longer advertises commands, file names, or framework support that don't exist in the code:
    • The mock terminal prompt and the "Get Started" lifecycle section no longer show fake grove add and grove deploy commands. The lifecycle now reflects the V1.0 CLI commands (import, validate, sync github, generate, sitemap, llms, build, cleanup stale, workflows sync) and the real default Astro workflow.
    • The mock terminal writes grove.config.ts, matching the file the Astro default template actually emits. (The previous mock said grove.config.yaml.)
    • The eight-framework logo wall is replaced with an honest "Astro today, SvelteKit / Next.js planned" status card plus the actual public package list (@grove-dev/core, @grove-dev/ui, @grove-dev/cli). Tailwind / Node.js / GitHub are no longer presented as framework adapters — they're tooling, not adapters.
    • The "Integrate with your favorite tools" orbital diagram is replaced with "One source, multiple outputs" (static HTML, sitemap.xml, llms.txt, llms-full.txt).
    • The "Why Grove" features section is reframed around the maintenance problem Grove actually solves (structure drift, stale metadata, review-as-cleanup, discovery-as-software, AI-readable fragments, maintainer-memory dependence) instead of generic capabilities.
  • JSON-LD SearchAction removed. The WebSite block in the home page (docs/src/layouts/HomeLayout.astro) and the global Starlight head config (docs/astro.config.mjs) no longer advertise a https://grove.dev.mn/search?q=... target. The route never existed; emitting it was invalid structured data.
  • Roadmap page renders correctly. The /roadmap/ route no longer prints the raw import { Content } from '../../../roadmap.md'; statement as visible page text. The content is now inlined as a Starlight .md content file, evaluated through the Starlight content layer.
  • Wrong GitHub organisation. All references to grove-dev/grove in source and content are replaced with the correct tortuvshin/grove. https://github.com/grove-dev/grove/... was returning 404.
  • Two broken internal links in Getting Started. /getting-started/add-your-first-record/ (typo) → /getting-started/add-your-first-project/. /getting-started/what-is-grove//introduction/.
  • Software version drift on the home page. The softwareVersion field in the homepage JSON-LD is corrected from 0.2.x to 0.3.0.
  • Home and roadmap images carry explicit width / height attributes and loading="lazy" to prevent layout shift and reduce initial paint cost. The home images that are decorative carry alt="".
  • Home sections are now wired to their headings via aria-labelledby, every CTA links to a real destination (no href="#" placeholders), and the main landmark carries an id="main-content" skip target.
  • Open-graph / Twitter metadata is emitted on every page through the Starlight head config.

Changed

  • Roadmap document rewritten. The new /roadmap/ page groups content by shipping status (Shipped / Next release / Later / Out of scope) instead of by wave narrative. The historical Wave 0 → Wave 5 plan is preserved as a link to the GitHub history.
  • Dep bumps: astro 6.4.6 → 7.0.3, tailwindcss 4.3.0 → 4.3.2, @types/node 25.9.2 → 26.0.1.

Packages: none (docs-only).

v0.3.0 — Initial public release

Choose a tag to compare

@tortuvshin tortuvshin released this 11 Jun 13:48

Grove is an open-source framework for growing useful community knowledge. Collect, structure, maintain, and improve the projects, tools, resources, and knowledge a community depends on — over years, not weeks. Every artifact is a file. Every space is forkable, diffable, and PR-friendly.

This is the first version of Grove that is ready to be picked up by a community. A real production space — Open Apps — already runs on it.


Try it in 60 seconds

pnpm dlx @grove-dev/cli@latest new my-space
cd my-space
pnpm install

pnpm exec grove import https://github.com/avelino/awesome-go
pnpm exec grove sync github
pnpm exec grove validate
pnpm exec grove generate
pnpm exec grove sitemap
pnpm exec grove llms
pnpm build

Drop the dist/ directory on Vercel, Netlify, Cloudflare Pages, or GitHub Pages.


What's in v0.3.0

Three V1 blueprints

Grove v0.3.0 ships a discriminated Resource union covering three fixed blueprints. The kind field on every record is checked against the blueprint in grove.config.ts at validation time.

Blueprint kind For
project-directory project Apps, packages, tools, services, repositories, internal systems. GitHub metadata optional.
resource-hub resource Guides, comparisons, explainers, links, knowledge collections.
ecosystem-map entity Organizations, products, communities, schools, ecosystem actors.

resource-hub and ecosystem-map are MVP in v0.3.0; full implementations ship alongside the Wave 2 framework-agnostic UI rebuild.

Six packages, one lockstep version

Package Role Status
@grove-dev/core Headless engine: schema, config, importers, validators, taxonomy, sync, build Stable
@grove-dev/ui Framework-agnostic UI primitives (filter, sort, score, slug) Roadmap (re-export)
@grove-dev/cli new / import / validate / generate / sync github / sitemap / llms / build / dev / workflows Stable
@grove-dev/astro Astro adapter — components, layouts, tokens, default template V1 supported
@grove-dev/svelte SvelteKit adapter In development
@grove-dev/nextjs Next.js adapter Post-V1

The grove CLI

Command What it does
grove new <name> Interactive scaffold — project name, framework, deploy target, blueprint
grove import <url> Turn a GitHub awesome-list README into one YAML record per resource
grove analyze Refresh GitHub activity / release / archive signals
grove validate Strict per-record validation with detailed issue reporting
grove generate Process data/records/*.yml into the buildable tree
grove sync github Same as analyze
grove cleanup stale Archive dead records
grove sitemap Emit sitemap.xml + robots.txt
grove llms Emit llms.txt + llms-full.txt for AI assistants
grove build Framework-aware build (astro build today)
grove dev Framework-aware dev server
grove workflows Sync the GitHub Actions templates into the current space

The Astro adapter — the V1 renderer

@grove-dev/astro is the supported renderer in v0.3.0. It ships:

  • ComponentsHero, ItemCard (blueprint-aware), RefinePanel, SmartLensTabs, ScoreBars, Icon, WhyThisExists, plus lens / pagination / chip primitives.
  • LayoutsBaseLayout (Starlight-integrated shell with SEO and theme toggle), SectionHeader, Container, Footer, Header, Seo.
  • Design tokens — Grove color, type, spacing, and motion tokens aligned to Starlight. Optional g-container-wide class for wider landing-page sections.
  • Default template — pages (homepage, directory, detail, about, submit, sitemap), Tailwind config, astro.config.mjs, a data/ placeholder, and .github/ workflows. No business logic — all filtering, sorting, and scoring lives in core / ui.

The Starlight docs site

A polished docs site at /docs, deployed to Cloudflare Pages. It covers:

  • Vision — why Grove exists and where it's going.
  • Architecture — the core / ui / adapter / template split, the discriminated Resource union, the three blueprints.
  • Three blueprint guides — one per kind.
  • Six workflow guides — for new space maintainers.
  • Philosophy and Maintainers — reframing Grove as a community knowledge framework, not an OSS directory tool.
  • Security policy, Release operations, Support — the operational surface.

Spaces built with Grove

  • Open Apps — production-ready open-source applications. The reference implementation running on @grove-dev/astro today.

If you fork Grove to launch a new space, send a PR to add it to this list — we're happy to link to it.


Repository layout

grove/
├── packages/
│   ├── core/        # Headless engine: schema, config, importers, validators, sitemap, llms.txt
│   ├── ui/          # Framework-agnostic UI primitives — roadmap-only in v0.3.0
│   ├── cli/         # new, import, validate, generate, sync, cleanup, workflows, build, dev
│   ├── astro/       # Astro adapter (V1 supported)
│   ├── nextjs/      # Next.js adapter — skeleton only
│   └── svelte/      # SvelteKit adapter — in development
├── examples/
│   └── openapps/    # Real Grove-powered space (the reference implementation)
├── docs/            # Framework documentation site (Starlight)
└── scripts/         # release.mjs, test-scaffold.mjs

A scaffolded space has only the data, branding, and .github/ workflows it needs:

my-space/
├── grove.config.ts          # name, tagline, blueprint, paths
├── data/
│   ├── records/             # one YAML per resource
│   ├── taxonomy/            # categories, topics, tags
│   ├── generated/           # build output (gitignored)
│   ├── health.yml           # optional: maintenance signals
│   └── decisions.yml        # visibility decisions
├── content/                 # methodology, about, guides
├── public/                  # logo, OG image, custom assets
├── .github/                 # workflows + issue templates
└── astro.config.mjs

Why Grove

Communities carry knowledge in many places: awesome lists on GitHub, READMEs, spreadsheets, internal docs, Notion pages, Slack threads. They all decay. Links rot, projects go stale, descriptions drift, contributions stop landing.

Grove treats community knowledge as something to grow, maintain, prune, and improve — not as a static list to publish and forget.

  • Collect — import from Markdown awesome lists, YAML, or hand-authored records.
  • Structure — categories, topics, tags, maintainers, organizations.
  • Maintain — optional signals (GitHub activity, releases, archive state) flag what needs review.
  • Improve — human curators make the final call via plain, reviewable data files.
  • Prune — visibility decisions (highlight / keep / needs_review / hide / remove / historical) keep the space healthy over years.

No database. No CMS. No admin dashboard. The whole space is plain text, in your repo.


What's fixed at v0.3.0

  • pnpm publish rewrites workspace:* deps to the resolved version in the tarball. The release script no longer does this manually, eliminating the "404 on a not-yet-published workspace package" install failure.
  • templates/default/ rewrites workspace:* deps only at publish time, not at scaffold time.
  • Starlight's reset and utility styles are imported via a resolved node_modules path, removing the fragile relative lookup that broke on first install.
  • ItemCard, RefinePanel, Header, and SectionHeader share a consistent design-token surface.
  • Repository URL validation accepts git+https, ssh://git@, and trailing-slash variants.

Security

  • Coordinated disclosure — see SECURITY.md. Email vulnerability reports to toroo.byamba@gmail.com. Do not file a public issue.
  • Weekly audit.github/workflows/audit.yml runs pnpm audit weekly and opens (or updates) a tracking issue on every failure.

Upgrade notes

There is no upgrade path because v0.3.0 is the initial public release. Prior 0.1.0 / 0.2.x builds were internal iterations and are not published to npm.

If you have been building against the pre-release CLI, sw...

Read more