From d4f55747fdc5a048f378a369cebb917e9282d1a1 Mon Sep 17 00:00:00 2001 From: Kieron Lanning Date: Fri, 6 Nov 2026 13:41:28 +0000 Subject: [PATCH 1/4] build(deps): adopt the astroc4 1.0.0-prerelease.5 integration --- bun.lock | 4 ++-- src/astro.config.ts | 20 +++++++--------- src/config/react-compiler-runtime.ts | 36 ---------------------------- src/config/satteri-mermaid.ts | 9 ++++--- src/package.json | 2 +- 5 files changed, 17 insertions(+), 54 deletions(-) delete mode 100644 src/config/react-compiler-runtime.ts diff --git a/bun.lock b/bun.lock index e7766b3..d37d596 100644 --- a/bun.lock +++ b/bun.lock @@ -14,7 +14,7 @@ "@astrojs/react": "7.1.2", "@likec4/core": "1.60.0", "@pagefind/default-ui": "1.5.2", - "@purview-dev/astroc4": "1.0.0-prerelease.4", + "@purview-dev/astroc4": "1.0.0-prerelease.5", "likec4": "1.60.0", "preact": "10.29.8", "react": "19.3.1", @@ -452,7 +452,7 @@ "@prefresh/vite": ["@prefresh/vite@2.4.12", "", { "dependencies": { "@babel/core": "^7.22.1", "@prefresh/babel-plugin": "^0.5.2", "@prefresh/core": "^1.5.0", "@prefresh/utils": "^1.2.0", "@rollup/pluginutils": "^4.2.1" }, "peerDependencies": { "preact": "^10.4.0 || ^11.0.0-0", "vite": ">=2.0.0" } }, "sha512-FY1fzXpUjiuosznMV0YM7XAOPZjB5FIdWS0W24+XnlxYkt9hNAwwsiKYn+cuTEoMtD/ZVazS5QVssBr9YhpCQA=="], - "@purview-dev/astroc4": ["@purview-dev/astroc4@1.0.0-prerelease.4", "", { "peerDependencies": { "@astrojs/markdown-satteri": ">=0.4.6", "@astrojs/react": ">=7.1.2", "@astrojs/starlight": ">=0.42.8", "@likec4/core": ">=1.59.4", "astro": ">=7.4.4", "likec4": ">=1.59.4", "react": ">=19.0.0", "react-dom": ">=19.0.0", "shiki": ">=1.0.0" } }, "sha512-rUSpRZ6alP90NIhNHDmsVUfQcG00xBHvwf58jTYojknecTIfGoOHBk7XX92kPWxs8ou26zLBNOWCzCrzlk4l8w=="], + "@purview-dev/astroc4": ["@purview-dev/astroc4@1.0.0-prerelease.5", "", { "peerDependencies": { "@astrojs/markdown-satteri": ">=0.4.6", "@astrojs/react": ">=7.1.2", "@astrojs/starlight": ">=0.42.8", "@likec4/core": ">=1.59.4", "astro": ">=7.4.4", "likec4": ">=1.59.4", "react": ">=19.0.0", "react-dom": ">=19.0.0", "shiki": ">=1.0.0" }, "optionalPeers": ["@astrojs/starlight"] }, "sha512-2BiIPzpQcBw7rd5pdmCqXHsiHGd/FXDgBy1xeSlh5neb2VIm6eiICOwe8tl57cHzNXM+pMwZ+JK0zvWhbvHRfw=="], "@purview-dev/website": ["@purview-dev/website@workspace:src"], diff --git a/src/astro.config.ts b/src/astro.config.ts index 346e16e..a7ac204 100644 --- a/src/astro.config.ts +++ b/src/astro.config.ts @@ -8,7 +8,6 @@ import starlight from '@astrojs/starlight'; import astroc4 from '@purview-dev/astroc4'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'astro/config'; -import { fileURLToPath } from 'node:url'; import starlightLinksValidator from 'starlight-links-validator'; import starlightLlmsTxt from 'starlight-llms-txt'; import starlightSidebarTopics from 'starlight-sidebar-topics'; @@ -196,6 +195,10 @@ export default defineConfig({ plugins: [ // The live astroc4 demo (src/pages/examples/astroc4.mdx) is the site // dogfooding the plugin it catalogues: real fences and real views. + // + // This is the Starlight entry point, so it belongs in `plugins` — the + // plain-Astro `@purview-dev/astroc4/integration` shape in `integrations` + // would render diagrams but skip the translated UI and the highlighting. astroc4({ vitePlugin: { workspace: 'src/likec4' }, highlighting: { ref: 'v1.60.0' }, @@ -285,21 +288,14 @@ export default defineConfig({ ], vite: { plugins: [tailwindcss()], - resolve: { - alias: { - // LikeC4's React bundle imports React's CommonJS compiler runtime with - // a named `c` export. Vite 8's Rolldown optimiser does not expose that - // export from the development build, so the islands fail to hydrate. - // The bridge is the same `useMemoCache` call in ESM form. - 'react/compiler-runtime': fileURLToPath( - new URL('./config/react-compiler-runtime.ts', import.meta.url), - ), - }, - }, optimizeDeps: { // LikeC4 is a dependency added at build time; listing its React entry // and the React runtime means a cold dev start pre-bundles them instead // of serving them raw and producing "504 Outdated Optimize Dep". + // + // `react/compiler-runtime` is deliberately absent: astroc4 1.0.0-prerelease.5 + // adds it to this list itself (only when the site has not), which is what + // keeps the LikeC4 islands hydrating in `astro dev`. include: [ 'react', 'react-dom', diff --git a/src/config/react-compiler-runtime.ts b/src/config/react-compiler-runtime.ts deleted file mode 100644 index 151c064..0000000 --- a/src/config/react-compiler-runtime.ts +++ /dev/null @@ -1,36 +0,0 @@ -import * as React from 'react'; - -/** - * ESM bridge for `react/compiler-runtime` (aliased in `astro.config.ts`). - * - * LikeC4's React bundle is compiled with the React Compiler and imports - * `{ c }` from React's compiler runtime. That package is CommonJS, and its - * development build assigns `exports.c` inside a conditional IIFE. Vite 8's - * Rolldown optimiser does not see that as a named export, so the dev server - * serves a default-only module and every LikeC4 island fails to hydrate with - * "does not provide an export named 'c'". - * - * The runtime's whole implementation is `dispatcher.useMemoCache(size)`; this - * bridge calls the same React internal the CJS runtime reads. It is pinned to - * the React 19 client internals (React itself is pinned in package.json), and - * it fails loudly rather than silently returning a cache outside a render. - */ -interface ReactClientInternals { - H?: { useMemoCache?: (size: number) => unknown }; -} - -const INTERNALS_KEY = '__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE'; - -const internals = (React as unknown as Record)[INTERNALS_KEY] as - | ReactClientInternals - | undefined; - -export function c(size: number): unknown { - const useMemoCache = internals?.H?.useMemoCache; - if (!useMemoCache) { - throw new Error( - 'react/compiler-runtime: useMemoCache is only available while a React component renders.', - ); - } - return useMemoCache(size); -} diff --git a/src/config/satteri-mermaid.ts b/src/config/satteri-mermaid.ts index 0b73c64..f2e719a 100644 --- a/src/config/satteri-mermaid.ts +++ b/src/config/satteri-mermaid.ts @@ -7,11 +7,14 @@ import { defineMdastPlugin } from 'satteri'; * block is highlighted, so the browser-side Mermaid script can draw them. * * This is the Sätteri equivalent of the remark plugin the site used before - * Astro 7.4 (and before astroc4 required the Sätteri pipeline): a Sätteri - * plugin declares one visitor per node type rather than a single tree walker, - * so only `code` nodes are visited. Replacing the node with an `html` node is + * Astro 7.4 made Sätteri the default Markdown processor: a Sätteri plugin + * declares one visitor per node type rather than a single tree walker, so only + * `code` nodes are visited. Replacing the node with an `html` node is * deliberate — the output is exactly the element the Mermaid runtime expects, * and it does not depend on the converter honouring `data.hName`. + * + * `markdown.processor` is the site's own; astroc4 appends its ```likec4 fence + * transform to whatever processor the site registered, so the two coexist. */ function escapeHtml(value: string): string { return value.replace(/&/g, '&').replace(//g, '>'); diff --git a/src/package.json b/src/package.json index 548a0a1..80dd4eb 100644 --- a/src/package.json +++ b/src/package.json @@ -36,7 +36,7 @@ "@astrojs/react": "7.1.2", "@likec4/core": "1.60.0", "@pagefind/default-ui": "1.5.2", - "@purview-dev/astroc4": "1.0.0-prerelease.4", + "@purview-dev/astroc4": "1.0.0-prerelease.5", "likec4": "1.60.0", "preact": "10.29.8", "react": "19.3.1", From c169e3ea6a12fabc399427f3265eec3c8002966b Mon Sep 17 00:00:00 2001 From: Kieron Lanning Date: Fri, 6 Nov 2026 13:41:32 +0000 Subject: [PATCH 2/4] feat(docs): publish a folder README at the folder's own address --- .../skills/docs-aggregation-rules/SKILL.md | 11 +++++--- docs/decisions/0011-documentation-folders.md | 3 ++- src/src/lib/docs/links.ts | 17 ++++++++++--- src/tests/unit/docs.test.ts | 25 +++++++++++++++++++ 4 files changed, 48 insertions(+), 8 deletions(-) diff --git a/.agents/skills/docs-aggregation-rules/SKILL.md b/.agents/skills/docs-aggregation-rules/SKILL.md index c3ea877..6f2657a 100644 --- a/.agents/skills/docs-aggregation-rules/SKILL.md +++ b/.agents/skills/docs-aggregation-rules/SKILL.md @@ -112,8 +112,10 @@ The wikis of several product repositories are mirrored into `docs/wiki`, so the - A page's slug is its path from the docs root (ADR 0011): a flat corpus keeps the single-segment slug (`Getting-Started.md` → `getting-started`, served at `/docs//getting-started/`), and a topic folder stays a path segment (`schemas/Custom-Rules.md` → - `/docs//schemas/custom-rules/`). A `docsPage` in a use case must use a slug that still resolves - in the **default** channel, which is why it stays a single segment. + `/docs//schemas/custom-rules/`). A nested `README.md` is the folder's index, so + `guide/README.md` publishes at `/docs//guide/` (the root `README.md` stays the landing page). + A `docsPage` in a use case must use a slug that still resolves in the **default** channel, which + is why it stays a single segment. ## Injected front matter (per page) @@ -134,8 +136,9 @@ H1s are demoted to keep one title per document. - The sidebar mirrors the published tree (ADR 0011): every folder in a slug becomes a nested `starlight` group labelled with the folder's name spelled out (`schemas` → `Schemas`), placed where its first page appears and holding all of that folder's pages in channel order. Nesting is - recursive, a folder's `index.md` links the folder's own address, and a flat corpus renders exactly - the flat list it always did (`buildChannelItems` in `src/lib/docs/sidebar.ts`). + recursive, a folder's `index.md` or nested `README.md` links the folder's own address, and a flat + corpus renders exactly the flat list it always did (`buildChannelItems` in + `src/lib/docs/sidebar.ts`). - Each aggregated page also names the folders above it, above the title, in the same spelling as the sidebar (`PageTitle.astro` + `docSectionTrail`). - Archived projects are excluded from the docs portal, the sidebar topics, and per-project LLM diff --git a/docs/decisions/0011-documentation-folders.md b/docs/decisions/0011-documentation-folders.md index 9cc8d2d..eb16c7e 100644 --- a/docs/decisions/0011-documentation-folders.md +++ b/docs/decisions/0011-documentation-folders.md @@ -95,7 +95,8 @@ address disagrees with. So the display follows the slug: appears and absorbs its later pages, so a folder is listed once and the sync's reading order (`docs.order` / `_Sidebar.md`) survives. - Nesting is recursive, because a slug is a path: `guides/getting-started/install` - is a group inside a group. A folder's index file (`schemas/index.md`) is + is a group inside a group. A folder's index file (`schemas/index.md`, or a + nested `README.md` — the file GitHub renders as the folder's landing page) is published at the folder's own address, so its sidebar entry links the folder. - A flat corpus has no folder in any slug, so it produces no group and no code path changes for the projects that never nested. diff --git a/src/src/lib/docs/links.ts b/src/src/lib/docs/links.ts index 84e806e..31dbfe8 100644 --- a/src/src/lib/docs/links.ts +++ b/src/src/lib/docs/links.ts @@ -38,15 +38,26 @@ export function slugifyDocFile(fileName: string): string { * is reduced to lower-case ASCII letters, digits and inner dashes, and only the * file's own `.md`/`.mdx` extension is dropped. `isUrlSafeDocSlug` is the contract * a slug has to satisfy before it is published. + * + * A nested `README.md` is its folder's index page, the way GitHub renders it, so + * `guide/README.md` publishes at the folder's own address (`guide/index`). The + * docs root's own README keeps the `readme` slug, because root selection maps it + * to the project landing page (`index`). */ export function docSlug(relativePath: string): string { const segments = relativePath .split(/[/\\]/) .filter((segment) => segment !== '' && segment !== '.'); return segments - .map((segment, index) => - reduceSegment(index === segments.length - 1 ? segment.replace(/\.(md|mdx)$/i, '') : segment), - ) + .map((segment, index) => { + if (index < segments.length - 1) { + return reduceSegment(segment); + } + const fileName = segment.replace(/\.(md|mdx)$/i, ''); + return segments.length > 1 && fileName.toLowerCase() === 'readme' + ? 'index' + : reduceSegment(fileName); + }) .join('/'); } diff --git a/src/tests/unit/docs.test.ts b/src/tests/unit/docs.test.ts index 7d3ddb7..0b57376 100644 --- a/src/tests/unit/docs.test.ts +++ b/src/tests/unit/docs.test.ts @@ -81,6 +81,18 @@ describe('docSlug', () => { expect(docSlug('Ünïcode/Page.md')).toBe('n-code/page'); expect(docSlug('API v2 (beta)/Page.md')).toBe('api-v2-beta/page'); }); + + test("publishes a folder's README at the folder's own address", () => { + expect(docSlug('guide/README.md')).toBe('guide/index'); + expect(docSlug('contributing/readme.md')).toBe('contributing/index'); + expect(docSlug('a/b/README.mdx')).toBe('a/b/index'); + }); + + test('keeps the docs root README distinguishable from a folder index', () => { + // Root selection maps the `readme` slug to `index`; a folder README is + // already an index, so the two never collide. + expect(docSlug('README.md')).toBe('readme'); + }); }); describe('isUrlSafeDocSlug', () => { @@ -364,6 +376,19 @@ describe('link rewriting inside a topic folder', () => { '[Source](https://github.com/purview-dev/demo/blob/main/src/src/Z.cs)', ); }); + + test("resolves links from a folder's README index like any sibling page", () => { + // `guides/README.md` becomes `guides/index`, so a link beside it is a sibling. + const fromIndex = nested({ + pagePath: 'guides/README.md', + knownSlugs: new Set(['index', 'guides/index', 'guides/plain-astro']), + slugAliases: new Map([['readme', 'index']]), + }); + expect(rewriteDocMarkdown('[Plain Astro](Plain-Astro.md)', fromIndex)).toBe( + '[Plain Astro]()', + ); + expect(rewriteDocMarkdown('[Home](../README.md)', fromIndex)).toBe('[Home]()'); + }); }); describe('docs root page selection', () => { From 335f8d334886793b94a4ff1289f285bc097cbc28 Mon Sep 17 00:00:00 2001 From: Kieron Lanning Date: Fri, 6 Nov 2026 13:41:33 +0000 Subject: [PATCH 3/4] docs(astroc4): record the plain-Astro entry point and the moved guide pages --- src/src/data/projects/astroc4.yml | 69 ++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 11 deletions(-) diff --git a/src/src/data/projects/astroc4.yml b/src/src/data/projects/astroc4.yml index 36c88ef..d05e90f 100644 --- a/src/src/data/projects/astroc4.yml +++ b/src/src/data/projects/astroc4.yml @@ -4,13 +4,16 @@ id: astroc4 name: Astroc4 shortDescription: Interactive LikeC4 architecture diagrams for Astro and Starlight, with fences and syntax highlighting. description: >- - A Starlight plugin that puts LikeC4 architecture diagrams inside an Astro site. A - ```likec4 fence in an .mdx page becomes a laid-out, interactive diagram at build time, an - empty fence or renders a view of the site's own .c4 model, and Expressive Code - gains LikeC4 syntax highlighting derived from the language's Langium grammar rather than a - hand-maintained TextMate file. The grammar is resolved while Astro loads its configuration, - cached per repo@ref, and can be pinned, run offline from a bundled snapshot, or allowed to - degrade to a warning, so a docs build is as reproducible as the package versions beside it. + A Starlight plugin and a plain-Astro integration that put LikeC4 architecture diagrams inside + an Astro site. A ```likec4 fence in an .mdx page becomes a laid-out, interactive diagram at + build time, an empty fence or renders a view of the site's own .c4 model, and + Expressive Code gains LikeC4 syntax highlighting derived from the language's Langium grammar + rather than a hand-maintained TextMate file. The Starlight entry point also injects the + component UI strings through Starlight's i18n; the plain-Astro entry point supplies the same + compiler and fence transform without Starlight. The grammar is resolved while Astro loads its + configuration, cached per repo@ref, and can be pinned, run offline from a bundled snapshot, or + allowed to degrade to a warning, so a docs build is as reproducible as the package versions + beside it. origin: >- Documentation about a system drifts from the system as soon as the diagram is a picture that someone has to redraw. LikeC4 keeps the diagram as a model in the repository, but a docs site @@ -24,9 +27,9 @@ useWhen: >- together, and code fences in the LikeC4 language to be coloured without owning an ec.config.mjs. avoidWhen: >- - Your site is not Astro/Starlight (the plugin hooks Starlight's config and ships React islands), - or the architecture diagram is drawn once and does not need to stay in step with the code — a - static image is cheaper than a model, a compiler and a browser island. + Your site is not Astro (both entry points compile the model through LikeC4's Vite plugin and + ship React islands), or the architecture diagram is drawn once and does not need to stay in + step with the code — a static image is cheaper than a model, a compiler and a browser island. repository: purview-dev/astroc4 category: developer-tooling status: preview @@ -34,11 +37,25 @@ order: 75 docs: source: github-path path: docs/wiki + # The guide pages moved into a topic folder, so their published URLs gain a + # `guide/` segment. The old flat addresses keep working through a meta-refresh + # redirect, written only once the destination page is published (ADR 0011). + redirects: + architecture: contributing/architecture + components: guide/components + configuration-reference: guide/configuration-reference + fences: guide/fences + getting-started: guide/getting-started + icons: guide/icons + internationalization: guide/internationalization + local-development: contributing/local-development + repository-ci-cd: contributing/repository-ci-cd + syntax-highlighting: guide/syntax-highlighting skills: true packages: - id: '@purview-dev/astroc4' registry: npm - description: The Starlight plugin, the fence transform, the grammar pipeline and the Astro components. + description: The Starlight plugin, the plain-Astro integration, the fence transform, the grammar pipeline and the Astro components. primary: true related: - aspirec4 @@ -84,6 +101,36 @@ useCases: shipping a blank frame, and layouts are memoised by a hash of the snippet so a page re-rendered on every dev edit pays for it once. The same fence in a .md page stays a code block deliberately, because Astro cannot put a component there. + - audience: developer + title: The same diagrams in a plain Astro site, without Starlight + scenario: >- + The documentation site is plain Astro rather than Starlight, so a Starlight plugin would be + inert there and the diagrams have no way to reach the page. + code: | + // astro.config.mjs + import { defineConfig } from 'astro/config'; + import mdx from '@astrojs/mdx'; + import expressiveCode from 'astro-expressive-code'; + import astroc4 from '@purview-dev/astroc4/integration'; + + export default defineConfig({ + integrations: [astroc4(), expressiveCode(), mdx()], + }); + language: js + outcome: >- + The same component and ```likec4 fences work without Starlight: the integration + compiles the site's .c4 model, appends the fence transform to the Markdown processor, and + pre-bundles what the React island needs. The site keeps the parts that are its own decision — + @astrojs/mdx and, when it wants ```c4 highlighting, Expressive Code with an ec.config.mjs + that registers likec4Language. + evidence: >- + Both entry points call the same likec4Integration(): the plain-Astro example in the + repository builds with astro check and astro build, and its dev server is driven in a browser + to prove the island hydrates. @astrojs/react is the one integration astroc4 adds itself when + the site has not — the islands are client:only="react" — and React is not added twice when + the site already configures it. What a plain site gives up is documented: Astro.locals.t is + Starlight's, so the components render English, and the highlighting option exists only on + the Starlight plugin. - audience: developer title: Highlighting that follows LikeC4, with no ec.config.mjs scenario: >- From e775728d4af65dd68c65ab9432ee481d9829b5c3 Mon Sep 17 00:00:00 2001 From: Kieron Lanning Date: Fri, 6 Nov 2026 13:41:34 +0000 Subject: [PATCH 4/4] test(fixtures): refresh the astroc4 release data for 1.0.0-prerelease.5 --- src/fixtures/github/releases/astroc4.json | 43 +++++++++++++++++++++++ src/fixtures/github/repos/astroc4.json | 6 ++-- src/fixtures/npm/purview-dev-astroc4.json | 11 +++--- src/fixtures/releases/index.json | 24 +++++++++---- 4 files changed, 69 insertions(+), 15 deletions(-) diff --git a/src/fixtures/github/releases/astroc4.json b/src/fixtures/github/releases/astroc4.json index ee0f2f7..e933dee 100644 --- a/src/fixtures/github/releases/astroc4.json +++ b/src/fixtures/github/releases/astroc4.json @@ -1,4 +1,47 @@ [ + { + "url": "https://api.github.com/repos/purview-dev/astroc4/releases/436363619", + "assets_url": "https://api.github.com/repos/purview-dev/astroc4/releases/436363619/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/astroc4/releases/436363619/assets{?name,label}", + "html_url": "https://github.com/purview-dev/astroc4/releases/tag/v1.0.0-prerelease.5", + "id": 436363619, + "author": { + "login": "github-actions[bot]", + "id": 41898282, + "node_id": "MDM6Qm90NDE4OTgyODI=", + "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/github-actions%5Bbot%5D", + "html_url": "https://github.com/apps/github-actions", + "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers", + "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}", + "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}", + "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions", + "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs", + "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos", + "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}", + "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events", + "type": "Bot", + "user_view_type": "public", + "site_admin": false + }, + "node_id": "RE_kwDOVhwi5M4aAmFj", + "tag_name": "v1.0.0-prerelease.5", + "target_commitish": "main", + "name": "v1.0.0-prerelease.5", + "draft": false, + "immutable": false, + "prerelease": true, + "created_at": "2026-11-06T10:25:03Z", + "updated_at": "2026-11-06T10:26:09Z", + "published_at": "2026-11-06T10:26:09Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/astroc4/tarball/v1.0.0-prerelease.5", + "zipball_url": "https://api.github.com/repos/purview-dev/astroc4/zipball/v1.0.0-prerelease.5", + "body": "## What's Changed\n* docs: record the dist-tag and publish-order follow-ups by @kieronlanning in https://github.com/purview-dev/astroc4/pull/7\n* ci: publish without an approval prompt by @kieronlanning in https://github.com/purview-dev/astroc4/pull/8\n* docs: fold the wiki into guide/ and contributing/, and drop mkdocs by @kieronlanning in https://github.com/purview-dev/astroc4/pull/9\n* docs: describe the removal without naming the tools by @kieronlanning in https://github.com/purview-dev/astroc4/pull/10\n* docs: point the skills and the guide at the LikeC4 DSL skill by @kieronlanning in https://github.com/purview-dev/astroc4/pull/11\n* docs: describe the grammar cache without a build path by @kieronlanning in https://github.com/purview-dev/astroc4/pull/12\n* docs: install LikeC4's skill from likec4.dev, not its GitHub mirror by @kieronlanning in https://github.com/purview-dev/astroc4/pull/13\n* docs: removed old roadmap by @kieronlanning in https://github.com/purview-dev/astroc4/pull/14\n* docs: added version badge to readme.md by @kieronlanning in https://github.com/purview-dev/astroc4/pull/15\n* fix: npm version badge by @kieronlanning in https://github.com/purview-dev/astroc4/pull/16\n* feat: plain Astro support, and the smoke suite run against the packed package by @kieronlanning in https://github.com/purview-dev/astroc4/pull/17\n\n\n**Full Changelog**: https://github.com/purview-dev/astroc4/compare/v1.0.0-prerelease.4...v1.0.0-prerelease.5", + "mentions_count": 1 + }, { "url": "https://api.github.com/repos/purview-dev/astroc4/releases/433624030", "assets_url": "https://api.github.com/repos/purview-dev/astroc4/releases/433624030/assets", diff --git a/src/fixtures/github/repos/astroc4.json b/src/fixtures/github/repos/astroc4.json index 8bbf505..3dc2cc7 100644 --- a/src/fixtures/github/repos/astroc4.json +++ b/src/fixtures/github/repos/astroc4.json @@ -66,14 +66,14 @@ "releases_url": "https://api.github.com/repos/purview-dev/astroc4/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/astroc4/deployments", "created_at": "2026-11-03T18:31:42Z", - "updated_at": "2026-11-04T08:50:48Z", - "pushed_at": "2026-11-04T08:50:45Z", + "updated_at": "2026-11-06T13:22:37Z", + "pushed_at": "2026-11-06T13:22:33Z", "git_url": "git://github.com/purview-dev/astroc4.git", "ssh_url": "git@github.com:purview-dev/astroc4.git", "clone_url": "https://github.com/purview-dev/astroc4.git", "svn_url": "https://github.com/purview-dev/astroc4", "homepage": "https://purview.dev/projects/astroc4/", - "size": 336, + "size": 424, "stargazers_count": 1, "watchers_count": 1, "language": "TypeScript", diff --git a/src/fixtures/npm/purview-dev-astroc4.json b/src/fixtures/npm/purview-dev-astroc4.json index 04a593e..1a2c914 100644 --- a/src/fixtures/npm/purview-dev-astroc4.json +++ b/src/fixtures/npm/purview-dev-astroc4.json @@ -5,13 +5,14 @@ "1.0.0-prerelease.1", "1.0.0-prerelease.2", "1.0.0-prerelease.3", - "1.0.0-prerelease.4" + "1.0.0-prerelease.4", + "1.0.0-prerelease.5" ], "distTags": { - "latest": "1.0.0-prerelease.4", - "prerelease": "1.0.0-prerelease.4" + "latest": "1.0.0-prerelease.5", + "prerelease": "1.0.0-prerelease.5" }, - "publishedAt": "2026-11-04T07:35:57.303Z", - "weeklyDownloads": null, + "publishedAt": "2026-11-06T10:26:34.324Z", + "weeklyDownloads": 803, "deprecated": false } diff --git a/src/fixtures/releases/index.json b/src/fixtures/releases/index.json index 44d09a0..947a69c 100644 --- a/src/fixtures/releases/index.json +++ b/src/fixtures/releases/index.json @@ -1,6 +1,6 @@ { "schema": 3, - "retrievedAt": "2026-11-04T09:09:11.026Z", + "retrievedAt": "2026-11-06T13:25:51.228Z", "repos": { "purview-dev/telemetry-sourcegenerator": { "name": "telemetry-sourcegenerator", @@ -350,7 +350,7 @@ "stargazersCount": 1, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-11-04T08:50:48Z", + "updatedAt": "2026-11-06T13:22:37Z", "hasDiscussions": false }, "purview-dev/dotnet-logging-source-generators": { @@ -2893,6 +2893,15 @@ } ], "purview-dev/astroc4": [ + { + "tagName": "v1.0.0-prerelease.5", + "name": "v1.0.0-prerelease.5", + "body": "## What's Changed\n* docs: record the dist-tag and publish-order follow-ups by @kieronlanning in https://github.com/purview-dev/astroc4/pull/7\n* ci: publish without an approval prompt by @kieronlanning in https://github.com/purview-dev/astroc4/pull/8\n* docs: fold the wiki into guide/ and contributing/, and drop mkdocs by @kieronlanning in https://github.com/purview-dev/astroc4/pull/9\n* docs: describe the removal without naming the tools by @kieronlanning in https://github.com/purview-dev/astroc4/pull/10\n* docs: point the skills and the guide at the LikeC4 DSL skill by @kieronlanning in https://github.com/purview-dev/astroc4/pull/11\n* docs: describe the grammar cache without a build path by @kieronlanning in https://github.com/purview-dev/astroc4/pull/12\n* docs: install LikeC4's skill from likec4.dev, not its GitHub mirror by @kieronlanning in https://github.com/purview-dev/astroc4/pull/13\n* docs: removed old roadmap by @kieronlanning in https://github.com/purview-dev/astroc4/pull/14\n* docs: added version badge to readme.md by @kieronlanning in https://github.com/purview-dev/astroc4/pull/15\n* fix: npm version badge by @kieronlanning in https://github.com/purview-dev/astroc4/pull/16\n* feat: plain Astro support, and the smoke suite run against the packed package by @kieronlanning in https://github.com/purview-dev/astroc4/pull/17\n\n\n**Full Changelog**: https://github.com/purview-dev/astroc4/compare/v1.0.0-prerelease.4...v1.0.0-prerelease.5", + "prerelease": true, + "draft": false, + "publishedAt": "2026-11-06T10:26:09Z", + "htmlUrl": "https://github.com/purview-dev/astroc4/releases/tag/v1.0.0-prerelease.5" + }, { "tagName": "v1.0.0-prerelease.4", "name": "v1.0.0-prerelease.4", @@ -4756,14 +4765,15 @@ "1.0.0-prerelease.1", "1.0.0-prerelease.2", "1.0.0-prerelease.3", - "1.0.0-prerelease.4" + "1.0.0-prerelease.4", + "1.0.0-prerelease.5" ], "distTags": { - "latest": "1.0.0-prerelease.4", - "prerelease": "1.0.0-prerelease.4" + "latest": "1.0.0-prerelease.5", + "prerelease": "1.0.0-prerelease.5" }, - "publishedAt": "2026-11-04T07:35:57.303Z", - "weeklyDownloads": null, + "publishedAt": "2026-11-06T10:26:34.324Z", + "weeklyDownloads": 803, "deprecated": false } }