From 4867cd10f1ae041b68f252ed7e8607b0e31e2dc2 Mon Sep 17 00:00:00 2001 From: Kieron Lanning Date: Fri, 16 Oct 2026 13:53:09 +0100 Subject: [PATCH] feat: adeded artchitests and live nuget update --- .agents/agents/catalogue-onboarder.agent.md | 20 +- .agents/prompts/add-project.prompt.md | 18 +- .agents/skills/add-catalogue-project/SKILL.md | 4 +- .agents/skills/add-project-intake/SKILL.md | 168 ++++++ .agents/skills/github-repo-metadata/SKILL.md | 5 +- .agents/skills/site-validation-loop/SKILL.md | 7 + .github/copilot-instructions.md | 6 +- AGENTS.md | 6 +- README.md | 12 +- docs/decisions/0003-agent-tooling.md | 5 +- docs/decisions/0008-live-nuget-versions.md | 94 ++++ package.json | 2 +- src/fixtures/github/releases/architests.json | 87 +++ .../github/releases/aspire-resourcekit.json | 43 ++ src/fixtures/github/releases/build-sdk.json | 215 +++++++ src/fixtures/github/releases/build.json | 464 +++++++++++++++ .../github/releases/engineering-playbook.json | 87 +++ src/fixtures/github/releases/results.json | 86 +++ .../releases/sourcegenerator-framework.json | 86 +++ .../releases/telemetry-sourcegenerator.json | 260 ++++----- .../github/releases/value-objects.json | 86 +++ src/fixtures/github/releases/zodsharp.json | 129 +++++ src/fixtures/github/repos/architests.json | 188 +++++++ .../github/repos/aspire-resourcekit.json | 6 +- src/fixtures/github/repos/aspirec4.json | 6 +- src/fixtures/github/repos/build-sdk.json | 6 +- src/fixtures/github/repos/build.json | 6 +- src/fixtures/github/repos/containers.json | 10 +- .../github/repos/engineering-playbook.json | 189 +++++++ src/fixtures/github/repos/results.json | 6 +- .../repos/sourcegenerator-framework.json | 12 +- .../repos/telemetry-sourcegenerator.json | 12 +- src/fixtures/github/repos/value-objects.json | 6 +- src/fixtures/github/repos/zodsharp.json | 6 +- .../purview.architecture.testing.nuspec | 25 + .../nuspec/purview.aspire.resourcekit.nuspec | 22 +- .../nuget/nuspec/purview.build.nuspec | 4 +- .../nuget/nuspec/purview.buildsdk.nuspec | 4 +- .../nuspec/purview.results.aspnetcore.nuspec | 8 +- .../nuget/nuspec/purview.results.nuspec | 4 +- ...purview.results.zodsharp.aspnetcore.nuspec | 20 +- .../nuspec/purview.results.zodsharp.nuspec | 12 +- .../purview.sourcegeneratorframework.nuspec | 4 +- ...ew.sourcegeneratorframework.testing.nuspec | 12 +- ...rcegeneratorframework.testing.tunit.nuspec | 28 +- .../purview.telemetry.sourcegenerator.nuspec | 4 +- .../nuget/nuspec/purview.valueobjects.nuspec | 8 +- .../nuspec/purview.zodsharp.aspnetcore.nuspec | 12 +- .../purview.zodsharp.newtonsoftjson.nuspec | 16 +- .../nuget/nuspec/purview.zodsharp.nuspec | 8 +- .../purview.zodsharp.systemtextjson.nuspec | 16 +- .../nuget/purview.architecture.testing.json | 7 + .../nuget/purview.aspire.resourcekit.json | 3 +- src/fixtures/nuget/purview.build.json | 6 +- src/fixtures/nuget/purview.buildsdk.json | 7 +- .../nuget/purview.results.aspnetcore.json | 4 +- src/fixtures/nuget/purview.results.json | 4 +- .../purview.results.zodsharp.aspnetcore.json | 4 +- .../nuget/purview.results.zodsharp.json | 4 +- .../purview.sourcegeneratorframework.json | 4 +- ...view.sourcegeneratorframework.testing.json | 4 +- ...ourcegeneratorframework.testing.tunit.json | 4 +- .../purview.telemetry.sourcegenerator.json | 5 +- src/fixtures/nuget/purview.valueobjects.json | 4 +- .../nuget/purview.zodsharp.aspnetcore.json | 5 +- src/fixtures/nuget/purview.zodsharp.json | 5 +- .../purview.zodsharp.newtonsoftjson.json | 5 +- .../purview.zodsharp.systemtextjson.json | 5 +- .../search/Purview.Architecture.Testing.json | 65 +++ .../search/Purview.Aspire.ResourceKit.json | 11 +- src/fixtures/nuget/search/Purview.Build.json | 26 +- .../nuget/search/Purview.BuildSdk.json | 31 +- .../search/Purview.Results.AspNetCore.json | 16 +- .../Purview.Results.ZodSharp.AspNetCore.json | 16 +- .../search/Purview.Results.ZodSharp.json | 16 +- .../nuget/search/Purview.Results.json | 16 +- ...ourceGeneratorFramework.Testing.TUnit.json | 16 +- ...view.SourceGeneratorFramework.Testing.json | 16 +- .../Purview.SourceGeneratorFramework.json | 16 +- .../Purview.Telemetry.SourceGenerator.json | 21 +- .../nuget/search/Purview.ValueObjects.json | 22 +- .../search/Purview.ZodSharp.AspNetCore.json | 21 +- .../Purview.ZodSharp.NewtonsoftJson.json | 21 +- .../Purview.ZodSharp.SystemTextJson.json | 21 +- .../nuget/search/Purview.ZodSharp.json | 21 +- src/fixtures/releases/index.json | 526 ++++++++++++++---- .../components/ProjectVersionSnapshot.astro | 188 +++++-- src/src/components/islands/InstallPanel.tsx | 70 ++- .../components/islands/PackageVersions.tsx | 80 ++- src/src/data/projects/architests.yml | 177 ++++++ src/src/data/projects/results.yml | 8 +- src/src/lib/releases/live.ts | 343 ++++++++++++ src/src/lib/releases/transform.ts | 54 +- src/src/pages/index.astro | 25 +- src/src/pages/projects/[project].astro | 19 +- src/src/styles/global.css | 36 ++ src/tests/dist/built-output.test.ts | 6 +- src/tests/unit/live-versions.test.ts | 377 +++++++++++++ 98 files changed, 4348 insertions(+), 563 deletions(-) create mode 100644 .agents/skills/add-project-intake/SKILL.md create mode 100644 docs/decisions/0008-live-nuget-versions.md create mode 100644 src/fixtures/github/releases/architests.json create mode 100644 src/fixtures/github/releases/engineering-playbook.json create mode 100644 src/fixtures/github/repos/architests.json create mode 100644 src/fixtures/github/repos/engineering-playbook.json create mode 100644 src/fixtures/nuget/nuspec/purview.architecture.testing.nuspec create mode 100644 src/fixtures/nuget/purview.architecture.testing.json create mode 100644 src/fixtures/nuget/search/Purview.Architecture.Testing.json create mode 100644 src/src/data/projects/architests.yml create mode 100644 src/src/lib/releases/live.ts create mode 100644 src/tests/unit/live-versions.test.ts diff --git a/.agents/agents/catalogue-onboarder.agent.md b/.agents/agents/catalogue-onboarder.agent.md index 34425eb..3345df9 100644 --- a/.agents/agents/catalogue-onboarder.agent.md +++ b/.agents/agents/catalogue-onboarder.agent.md @@ -26,6 +26,7 @@ configuration, concrete use cases, tags/metadata, and a green `just validate`. Load and apply these skills before writing anything: +- `add-project-intake` — the questions to ask the human, and what recon answers instead. - `add-catalogue-project` — the ordered onboarding procedure and the record skeleton. - `project-manifest-reference` — every field, the allowed vocabularies, and the hard rules. - `docs-aggregation-rules` — how `github-path`, `wiki`, and `readme` sources are aggregated. @@ -49,18 +50,23 @@ The most important rules are: ## Workflow 1. **Recon** — repository metadata, docs tree, packages, releases (skills list the exact commands). -2. **Classify** — Purview-owned (`projects:`) or collaboration (`externalProjects:`); choose +2. **Ask** — put the intake questions from `add-project-intake` that recon cannot answer: `category` + (confirm), `experimental`, the use-case audiences and story, relationships and credit, curation, + and permission to fix upstream topics/description. Lead with a recommendation and its evidence; + never invent a use case, and stop rather than guess. +3. **Classify** — Purview-owned (`projects:`) or collaboration (`externalProjects:`); settle `category` and `status` from the schema vocabulary (never invent values). -3. **Author** — add the record in the correct `order`, with `docs`, `packages`, `targetFrameworks`, +4. **Author** — add the record in the correct `order`, with `docs`, `packages`, `targetFrameworks`, `install`, `related`/`acknowledgments` where they apply, and at least one use case. -4. **Fix upstream metadata** — set GitHub topics (tags), make the description useful, enable +5. **Fix upstream metadata** — set GitHub topics (tags), make the description useful, enable discussions only when `discussions: true` is declared. -5. **Integrate and prove** — run `just data-sync`, then `just check-projects`, `bun run typecheck`, +6. **Integrate and prove** — run `just data-sync`, then `just check-projects`, `bun run typecheck`, `bun run test`, `just check-generated`, and finally `just validate`. Confirm the docs page count, the sidebar topic, the `/_llms-txt/.txt` bundle, and the catalogue/use-case cards. -6. **Report** — list the record added, the evidence gathered (docs pages, packages, release - channel), the checks run, and anything that still needs a human (for example, no stable release - yet, or docs that should be moved into a `docs/` folder upstream). +7. **Report** — list the record added, the evidence gathered (docs pages, packages, release + channel), the answers received (and any assumption taken where the human was unavailable), the + checks run, and anything that still needs a human (for example, no stable release yet, or docs + that should be moved into a `docs/` folder upstream). ## Constraints diff --git a/.agents/prompts/add-project.prompt.md b/.agents/prompts/add-project.prompt.md index 8828bfd..63921b7 100644 --- a/.agents/prompts/add-project.prompt.md +++ b/.agents/prompts/add-project.prompt.md @@ -14,16 +14,22 @@ Inputs (fill in before running): - Experimental? `yes` / `no` — `yes` sets the `experimental` flag (ADR 0004); it does not replace `status` - Notes: anything known about docs location, package ids, or the story to tell +Anything left blank is answered by recon, or asked using the intake questions in +`.agents/skills/add-project-intake/SKILL.md` (category, experimental, relationships, credit, and the +use-case story cannot be derived from the repository). + ## Instructions Load and follow these skills, in order: -1. `.agents/skills/add-catalogue-project/SKILL.md` — the end-to-end procedure. -2. `.agents/skills/project-manifest-reference/SKILL.md` — fields and rules. -3. `.agents/skills/docs-aggregation-rules/SKILL.md` — the `docs` configuration. -4. `.agents/skills/use-case-authoring/SKILL.md` — the use cases. -5. `.agents/skills/github-repo-metadata/SKILL.md` — topics and stability signals. -6. `.agents/skills/site-validation-loop/SKILL.md` — the checks to run. +1. `.agents/skills/add-project-intake/SKILL.md` — the intake interview: the questions to ask before + writing anything, and the field each answer decides. +2. `.agents/skills/add-catalogue-project/SKILL.md` — the end-to-end procedure. +3. `.agents/skills/project-manifest-reference/SKILL.md` — fields and rules. +4. `.agents/skills/docs-aggregation-rules/SKILL.md` — the `docs` configuration. +5. `.agents/skills/use-case-authoring/SKILL.md` — the use cases. +6. `.agents/skills/github-repo-metadata/SKILL.md` — topics and stability signals. +7. `.agents/skills/site-validation-loop/SKILL.md` — the checks to run. Use the `catalogue-onboarder` agent if it is available. diff --git a/.agents/skills/add-catalogue-project/SKILL.md b/.agents/skills/add-catalogue-project/SKILL.md index 2227250..6aca2be 100644 --- a/.agents/skills/add-catalogue-project/SKILL.md +++ b/.agents/skills/add-catalogue-project/SKILL.md @@ -17,8 +17,8 @@ tags: Use this skill when a repository must be added to (or promoted within) the Purview-Dev website. -Related: `project-manifest-reference`, `docs-aggregation-rules`, `use-case-authoring`, -`github-repo-metadata`, `site-validation-loop`. +Related: `add-project-intake`, `project-manifest-reference`, `docs-aggregation-rules`, +`use-case-authoring`, `github-repo-metadata`, `site-validation-loop`. ## Step 0 — decide the target collection diff --git a/.agents/skills/add-project-intake/SKILL.md b/.agents/skills/add-project-intake/SKILL.md new file mode 100644 index 0000000..cf37a1f --- /dev/null +++ b/.agents/skills/add-project-intake/SKILL.md @@ -0,0 +1,168 @@ +--- +name: add-project-intake +description: Use when starting to add a repository to the Purview-Dev website catalogue — the intake interview: what to ask the human, what recon answers instead, and how each answer maps to a manifest field, its vocabulary, its recommended default, and the invariant it protects. +category: purview-dev-website +roles: + - catalogue + - intake + - requirements +tags: + - projects-yml + - questions + - recon + - decisions +--- + +# add-project-intake Skill + +This is the front door for adding a project. It covers **the decisions a human has to make** and +turns them into a short, ordered question set; the mechanical work that follows lives in +`add-catalogue-project`. Related: `project-manifest-reference`, `docs-aggregation-rules`, +`use-case-authoring`, `github-repo-metadata`, `site-validation-loop`. + +The catalogue is a curated surface, not a mirror of GitHub. Recon can fill most fields exactly; +the rest are judgement calls that must be **asked, not guessed** — a wrong `category` or `status` +is catalogue drift that no check catches, and a fabricated use case is worse than a missing one. + +## Rule 1 — recon first, then ask only what recon cannot answer + +Never ask a question whose answer is in the repository. Fetch it, show the evidence, and move on. + +| Answered by recon (never ask) | Command | +| --- | --- | +| Owner, description, topics, archived, default branch, discussions, homepage | `gh api repos//` | +| Docs layout and the landing-page candidates | `gh api "repos///git/trees/main?recursive=1"` | +| Package ids and the release channel | `curl https://api.nuget.org/v3-flatcontainer//index.json` | +| `install` kind, target frameworks, the reader-facing package set | the nuspec / `.config/purview-build.json` | + +The commands and the evidence to record are listed in `add-catalogue-project` (Step 1). Recon first +also means the questions below arrive with a **recommended default** and the evidence for it, so the +human confirms rather than supplies from memory. + +## Rule 2 — ask these questions + +Each row is one decision. Ask one at a time, lead with the recommendation, and name the field it +decides. "Required" means stop and ask; "confirm" means propose a value and let the human correct it. + +### Identity and scope + +| # | Question | Decides | Default / rule | +| --- | --- | --- | --- | +| 1 | Is this repository owned by `purview-dev`, or is it a collaboration? **Required only when the owner is ambiguous** (a fork, a shared org, a repo the org contributes to but does not own). | `projects:` vs `externalProjects:` | Owner from `gh api`. Only `purview-dev/*` may go in `projects:`; collaborations get a link-out card and no docs aggregation. | +| 2 | The `id` is normally the repository name. **If a `purview.dev/projects//` URL is already published** (NuGet `projectUrl`, repository homepage), the id is committed — changing it breaks a live link. Confirm before choosing a different id. | `id` | Repository name. Lowercase `[a-z0-9-]`. | +| 3 | For any project with `docs`, the display `name` must slugify to exactly `id` (the LLM bundle is emitted at `/_llms-txt/.txt` while the UI links `/_llms-txt/.txt`). **Required whenever the natural display name does not slugify to the id** — e.g. "Architecture Testing" → `architecture-testing`, which is not `architests`. Ask which side moves: rename the display name, or change the id (and the URL). | `name` | A display name that slugifies to `id`; must not start with `Purview `. | + +### Classification (judgement — confirm, never pick silently) + +| # | Question | Decides | Default / rule | +| --- | --- | --- | --- | +| 4 | Which `category`? **Required when the project straddles two** (for example architecture tests: `developer-tooling` — a tool you add to a repository — or `validation` — the input/data-validation bucket, currently ZodSharp). | `category` | Exactly one of the seven vocabulary values; never a new label. | +| 5 | `status` follows the release channel: an archived repository is `archived`, prerelease-only tooling is `preview`, a project with a stable (non-prerelease) NuGet version is `stable`. **Ask only when the channel and the intent disagree** — a stable package for a project that is not yet recommended (keep `preview` and record why), or a package that is not published yet. | `status` | Derived from GitHub `archived` + the NuGet index; never "stable" without a stable version. | +| 6 | Is this an **experiment** — the API, defaults and packaging may change between prereleases and there is no production support guarantee? **Ask; it is orthogonal to `status`** and invalid on an archived project. | `experimental` | `false`. `true` adds a warning badge to the catalogue and every aggregated docs page (ADR 0004). | + +### Documentation (recon decides; ask only on a failure mode) + +| # | Question | Decides | Default / rule | +| --- | --- | --- | --- | +| 7 | Where do the docs live — `docs/`, a wiki mirrored into `docs/wiki/`, or only `README.md`? | `docs.source`, `docs.path` | `github-path` at `docs` when the tree has one; `wiki` for a real wiki; `readme` publishes exactly one page. | +| 8 | **Required when there is no conventional root page** (`index.md` / `Home.md` / `readme.md`): which page should be the landing page? **Required when a conventional root page exists but a different page should lead:** promoting it means the conventional page must be removed with `exclude`. | `docs.rootPage`, `docs.exclude` | Conventional index wins by default; `rootPage` may only override it when that file is excluded, or aggregation raises `DocsValidationError`. | +| 9 | The repository default branch is not `main` — can it be renamed, or should the docs move? (Aggregation only reads `main`.) | `docs` viability | **Required** — a non-`main` branch silently yields no pages. | + +### Packages, install and frameworks (recon decides; ask to confirm the reader's choice) + +| # | Question | Decides | Default / rule | +| --- | --- | --- | --- | +| 10 | When there is more than one package: **which one should a reader install first?** | `packages[].primary` | Exactly one `primary: true` when there are two or more packages. | +| 11 | Is any declared package internal-only (an abstractions or runtime companion) rather than something a consumer installs? | `packages[].description` | Declare it anyway with a description; only one is primary. | +| 12 | How is the primary package consumed — a plain NuGet reference, an MSBuild SDK, or a `dotnet` tool? | `install` | `nuget`; recon from the nuspec / `purview-build.json`. | +| 13 | *(Do not ask.)* Which target frameworks does it publish? | `targetFrameworks` | Read from the nuspec; the guard compares it and `just fix-projects` can rewrite it. | + +### Curation and relationships (only the human knows these) + +| # | Question | Decides | Default / rule | +| --- | --- | --- | --- | +| 14 | Should it be featured on the home page? | `featured` | `false`. | +| 15 | Does it belong at a particular position in the catalogue, or may I pick an unused `order`? | `order` | An unused value (the catalogue uses tens, 10–95). Values must stay unique. | +| 16 | Which catalogue projects does it genuinely relate to? Does anything supersede it, or does it supersede anything? | `related`, `supersedes`, `supersededBy` | `[]` / unset. Every id must already exist in the catalogue. | +| 17 | What upstream work does it credit (a fork, a port, a library it is built on)? | `acknowledgments` | None. Only for derived work; include a URL. | +| 18 | GitHub Discussions is enabled — should the project page link it? | `discussions` | `false`; only `true` when Discussions is actually enabled. | + +### Use cases (the story — always ask) + +| # | Question | Decides | +| --- | --- | --- | +| 19 | Which audiences should this speak to — `developer`, `team-lead`, `architect`, `contributor`? Do not tag everything `developer`; a project with an adoption or architecture story should say so. | `useCases[].audience` | +| 20 | For each audience: **what situation is the reader in, and what do they get back?** | `useCases[].scenario`, `.outcome` | +| 21 | **What is the fact that proves it?** A before/after, a count, a generated output, a measured property — not "faster" or "easier". | `useCases[].evidence` | +| 22 | Which aggregated docs page backs each example? | `useCases[].docsPage` | + +Aim for two to four strong examples, not one per audience. `code` requires `language`; the slug must +resolve to a real page under `/docs//` (see `use-case-authoring`). + +### Upstream changes (ask before touching the product repository) + +| # | Question | Decides | +| --- | --- | --- | +| 23 | Repository topics are missing or poor — they are the site's tag chips. May I set them? | tags (`check-projects` **fails** on no topics) | +| 24 | The description is thin — it backs the `shortDescription` fallback and social metadata. May I improve it? | `shortDescription` fallback, `og:` metadata | +| 25 | Is there a schema or artefact worth mirroring to a stable `purview.dev` URL (an `assets:` entry), or is it already published elsewhere? | `assets` | + +## Rule 3 — the minimum question set + +When recon answers everything else, this is the whole interview. Ask nothing more. + +1. **Category** — confirm against the vocabulary (question 4). +2. **Experimental?** — yes/no (question 6). +3. **Use cases** — audiences, the situation/outcome, and one evidence fact each (questions 19–22). +4. **Relationships and credit** — `related`, `supersedes`/`supersededBy`, `acknowledgments` + (questions 16–17). +5. **Curation** — `featured`, and whether `order` matters (questions 14–15). +6. **Upstream permission** — topics and description (questions 23–24). + +Everything else is recon or a derived default. Ask the three identity/documentation/package +questions (3, 8, 10) **only when recon hit the failure mode that makes them ambiguous**. + +## Rule 4 — how to ask + +- **One decision per question**, phrased so the answer is a value, not a discussion. +- **Lead with the recommendation and its evidence**: "The packages publish a stable 1.1.0 and the + repo is active, so I'll set `status: stable` — correct?". +- **Ask before assuming intent**: `experimental`, `featured`, `related`, `supersedes`, + `acknowledgments`, and the whole use-case story are not derivable. +- **Never ask the human to decide something the guard decides**: versions, target frameworks, the + docs file list, or whether the repository is archived. +- **If the human is unavailable**, take the recon-derived default, mark it in the report as an + assumption, and list it as an open question rather than stalling the whole onboarding. + +## Rule 5 — stop and ask instead of inventing + +Stop and ask the human when: + +- a use case cannot be evidenced from the repository (never write marketing prose); +- documentation does not exist upstream (configure `docs` for what exists, or leave it unset — do not + fabricate pages); +- the repository is a collaboration that would need `externalProjects:` but the human expects a + `/projects//` page; +- a `purview.dev/projects//` URL is already published for a different id; +- the release channel and the intended `status`/`experimental` disagree. + +## Where each answer is checked + +Answers become a record; the guard proves the mechanical ones. Confirm the judgement calls in the +report — no check will catch them. + +| Answer | Guard (`just check-projects`) | +| --- | --- | +| `id`, `order` | duplicate id/order → **fail** | +| `name` | must slugify to `id` when `docs` is set → **fail** | +| `category`, `experimental`, use-case prose | not machine-checkable → **judgement; record it** | +| `status` | archived vs active repo, stable vs stable package → **fail**; preview with a stable package → **observation** | +| `docs` | no pages, non-`main` branch → **fail**; no landing page → **observation** | +| `packages` | duplicate id, >1 `primary`, unpublished package → **fail** | +| `targetFrameworks` | mismatch with the published nuspec → **observation** (`just fix-projects`) | +| `related`/`supersedes`/`supersededBy` | unknown id → **fail** (loader) | +| topics | none set → **fail** | +| `discussions` | `true` without Discussions → **fail** | + +Finish the interview by handing the answers to `add-catalogue-project`, then run the validation loop +in `site-validation-loop`. diff --git a/.agents/skills/github-repo-metadata/SKILL.md b/.agents/skills/github-repo-metadata/SKILL.md index 16df5a6..9f7a78b 100644 --- a/.agents/skills/github-repo-metadata/SKILL.md +++ b/.agents/skills/github-repo-metadata/SKILL.md @@ -16,7 +16,10 @@ tags: The manifest is curated, but several site surfaces read **live repository metadata** that is fetched at build time into `src/.cache/releases/releases.json` (`fetchGitHubRepo`, `fetchNuGetIndex`, -`fetchNuGetSearch` in `src/src/lib/releases/github.ts`). +`fetchNuGetSearch` in `src/src/lib/releases/github.ts`). NuGet **version numbers** are the one +exception: the browser re-checks them against the flat-container index and stores the result +(ADR 0008, `src/src/lib/releases/live.ts`), so a published version appears without a redeploy. +Everything else in the table below is build-time. ## What comes from where diff --git a/.agents/skills/site-validation-loop/SKILL.md b/.agents/skills/site-validation-loop/SKILL.md index 83b4a1d..d8d3335 100644 --- a/.agents/skills/site-validation-loop/SKILL.md +++ b/.agents/skills/site-validation-loop/SKILL.md @@ -86,6 +86,13 @@ missing schema never silently ships a broken URL. `DATA_FALLBACK_TO_FIXTURES=false` makes `auto` fail loudly instead of silently using fixtures. Set `GITHUB_TOKEN` (or `gh auth token`) to avoid unauthenticated rate limits. +The one thing the **browser** fetches is the NuGet **version numbers** a page already displays +(ADR 0008, `src/src/lib/releases/live.ts`): the build-time value renders first, a strictly higher +live version replaces it, and the result is stored in `localStorage` for six hours. The home-page +snapshot, the package tables on `/releases/` and project pages, and the version pinned in the +install snippets refresh this way. Nothing else is fetched client-side, and no check depends on the +live value — `just check-projects` and `tests/dist` assert the build-time output. + ## Rules - **Never edit generated files** (`src/src/content/docs/**`, `src/.cache/**`, `src/dist/**`). diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 5c7690e..d74fedc 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -23,6 +23,9 @@ package is `src/`. observations when they disagree with the packages' published NuGet versions and frameworks. Apply the machine-applicable ones with `just fix-projects` (dry run; pass `--write` to edit). - Keep documentation where it lives (the product repository). This site aggregates it at build time. +- Keep the NuGet version hydration intact (ADR 0008): the build-time version renders first, the + browser only ever raises it, and the result is stored in `localStorage` for six hours. Do not move + any other data to the client. - Use Conventional Commits and keep changes small and reviewable. ## Never @@ -43,7 +46,8 @@ package is `src/`. ## Task routing - Adding a project → `.agents/agents/catalogue-onboarder.agent.md` and - `.agents/skills/add-catalogue-project/SKILL.md`. + `.agents/skills/add-project-intake/SKILL.md` (the questions to ask) then + `.agents/skills/add-catalogue-project/SKILL.md` (the procedure). - Auditing/fixing the catalogue → `.agents/agents/catalogue-auditor.agent.md` and `.agents/skills/audit-catalogue-projects/SKILL.md`. - Any other change → `.agents/` holds the manifest reference, docs-aggregation rules, use-case diff --git a/AGENTS.md b/AGENTS.md index b5f3997..dfdc62e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -28,7 +28,9 @@ from the repository root and delegated to the package. - **Task runner:** Just (`justfile`; switches to pwsh on Windows). - **All external data is fetched at build time**, never by the visitor's browser: GitHub/NuGet release data, the documentation mirror, and any `assets:` a project mirrors into `public/`, cached - under `src/.cache/` with committed fixtures as the offline fallback. + under `src/.cache/` with committed fixtures as the offline fallback. The one exception is the NuGet + **version numbers** the page already displays: the browser re-checks them against the NuGet + flat-container index, applies any higher version, and stores it (ADR 0008). ### Generated outputs — never edit by hand @@ -114,6 +116,8 @@ Do not assume this file contains everything; consult `.agents/` while planning. - `.agents/agents/catalogue-onboarder.agent.md` — add and integrate a project end-to-end. - `.agents/agents/catalogue-auditor.agent.md` — audit (and repair) the whole catalogue. - `.agents/skills/add-catalogue-project/SKILL.md` — the ordered onboarding procedure. +- `.agents/skills/add-project-intake/SKILL.md` — the intake interview: the questions to ask, what + recon answers instead, and the field each answer decides. - `.agents/skills/audit-catalogue-projects/SKILL.md` — the audit procedure and report format. - `.agents/skills/project-manifest-reference/SKILL.md` — every manifest field and rule. - `.agents/skills/docs-aggregation-rules/SKILL.md` — how repository docs become `/docs//`. diff --git a/README.md b/README.md index 171b637..e0e1798 100644 --- a/README.md +++ b/README.md @@ -308,6 +308,16 @@ cache. Version selection is based on semver tags because the organisation's changesets automation publishes `vX.Y.Z-prerelease.N` tags with the GitHub `prerelease` flag set to `false`. +The one thing the browser does fetch is the **NuGet version numbers the page +already shows**: the build-time value renders first, then the browser re-checks +the NuGet flat-container index, applies any strictly higher version, and stores +the result in `localStorage` for six hours. This is what lets a published package +appear without redeploying the site (ADR 0008, `src/lib/releases/live.ts`). The +home-page snapshot, the package tables on `/releases/` and the project pages, and +the version pinned in the install snippets all refresh this way; the GitHub +release cards, downloads, docs, `llms*.txt`, `discover.json` and the sitemap stay +build-time. + - `just fetch-releases` fetches live data into `src/.cache/releases/releases.json` (typed, versioned, timestamped, gitignored). - Without a cache, the site falls back to committed fixtures under @@ -339,7 +349,7 @@ auditing the ones already published (ADR 0003): | Task | Agent | Skills | | ---- | ----- | ------ | -| Add and integrate a repository | `.agents/agents/catalogue-onboarder.agent.md` | `add-catalogue-project`, `project-manifest-reference`, `docs-aggregation-rules`, `use-case-authoring`, `github-repo-metadata` | +| Add and integrate a repository | `.agents/agents/catalogue-onboarder.agent.md` | `add-project-intake`, `add-catalogue-project`, `project-manifest-reference`, `docs-aggregation-rules`, `use-case-authoring`, `github-repo-metadata` | | Audit and repair the catalogue | `.agents/agents/catalogue-auditor.agent.md` | `audit-catalogue-projects`, plus the reference skills | `AGENTS.md` holds the repository context and the mandatory rules, `.github/copilot-instructions.md` diff --git a/docs/decisions/0003-agent-tooling.md b/docs/decisions/0003-agent-tooling.md index 68b8373..d03f14e 100644 --- a/docs/decisions/0003-agent-tooling.md +++ b/docs/decisions/0003-agent-tooling.md @@ -35,8 +35,9 @@ This repository gains `AGENTS.md` (authoritative repository context and mandator - **Agents** — `catalogue-onboarder` (add and integrate a project) and `catalogue-auditor` (audit and repair the catalogue). -- **Skills** — `add-catalogue-project`, `audit-catalogue-projects`, `project-manifest-reference`, - `docs-aggregation-rules`, `use-case-authoring`, `github-repo-metadata`, `site-validation-loop`. +- **Skills** — `add-project-intake`, `add-catalogue-project`, `audit-catalogue-projects`, + `project-manifest-reference`, `docs-aggregation-rules`, `use-case-authoring`, + `github-repo-metadata`, `site-validation-loop`. - **Prompts** — `add-project.prompt.md`, `audit-projects.prompt.md`. The skills document what the code actually does (schema vocabularies and loader rules, the three diff --git a/docs/decisions/0008-live-nuget-versions.md b/docs/decisions/0008-live-nuget-versions.md new file mode 100644 index 0000000..be4f907 --- /dev/null +++ b/docs/decisions/0008-live-nuget-versions.md @@ -0,0 +1,94 @@ +# ADR 0008 — Live NuGet versions in the browser + +- Status: accepted +- Date: 2026-10-16 + +## Context + +ADR 0001 (decisions 2 and 4) makes the site fully static: all external data is fetched once during +the build, and the visitor's browser never queries GitHub or NuGet. That keeps the site fast, +token-free, and identical for every visitor, and it remains the right default for almost everything +the site shows. + +A NuGet version is the exception. It changes without any change to this repository, and it changes +at exactly the moment a product release completes — which is independent of when this site is +deployed. Because the version is baked into the HTML, a package published minutes after a deploy +stays invisible on the home-page snapshot, the releases table, the project page, and inside the +copy-paste install snippets until the next deploy. The site routinely advertises a version one +release behind, and the fix is a redeploy of a site that did not change. + +The build already reads this data from the NuGet flat-container index +(`https://api.nuget.org/v3-flatcontainer`), and both the flat-container and the search endpoints send +`Access-Control-Allow-Origin: *`. The browser can therefore read the same source directly, with no +proxy, no server, and no credential. + +## Decisions + +### 1. Version numbers are hydrated, never replaced + +Every page still renders the build-time version into the HTML. The browser applies any stored copy +immediately, then re-checks NuGet in the background. A visitor without JavaScript, or without +network access, sees exactly what the build produced — the site degrades to the ADR 0001 behaviour +rather than to an empty table. + +### 2. A live version may only raise the displayed version + +The build reconciles GitHub release tags into the NuGet candidate list +(`reconcileWithGitHubReleases`), so the build-time value can legitimately be ahead of the +flat-container index — `Purview.EventSourcing` currently shows stable `1.1.1` from a release tag +while NuGet publishes only `2.0.0-prerelease.x`. The browser therefore replaces a version only when +the live one is strictly higher (`preferNewer`). A version a visitor is looking at never moves +backwards. + +The withholding rule is re-applied to the merged pair, not per channel. Because the build can be +ahead of NuGet, a merge can raise the stable release past a live prerelease that used to outrank it, +or pair a live prerelease with a build-time stable it trails; either way the prerelease must stay +withheld, or the page would advertise a trailing prerelease beside a newer stable release. + +### 3. One stored cache, stale-while-revalidate, six-hour TTL + +Fetched versions are stored in `localStorage` under `purview.live-nuget-versions.v1`, keyed by +package id, with a schema version and a fetch timestamp. The stored copy is applied instantly; a +fetch runs only when the copy is missing or older than six hours. Concurrent islands on one page +share a single request per package set, and a stored copy is merged rather than overwritten so a +package that could not be fetched keeps its last value. + +### 4. Every surface that shows a NuGet version refreshes + +The releases package table, the project-page package table, the home-page project snapshot, and the +version pinned inside the install snippets. The install snippets are included deliberately: a table +that says `1.1.0` beside a copy-paste command that says `1.0.6` is worse than a uniformly stale +page. The GitHub release cards, download counts, repository topics, documentation, `llms*.txt`, +`discover.json`, and the sitemap stay build-time — they are content and discovery artefacts, not a +moving version number. + +### 5. One module owns the behaviour + +`src/src/lib/releases/live.ts` is isomorphic and free of Node APIs: the cache read/write, the fetch, +the version maths (`latestFromVersions`, `preferNewer`, `mergeVersionPair`, `rollupPackageVersions`), +the shared tooltips, and the status message. The Preact islands and the home-page script all use it, +so the server-rendered value and the refreshed value are computed by the same code. + +### 6. Failures are silent and non-destructive + +A package that cannot be fetched is simply absent from the result; a total failure leaves the stored +copy — or the build-time value — in place and the page renders exactly as built. There is no retry +storm, and no error state that hides data. + +## Consequences + +- A published package version appears on the site within one page view, without a redeploy. +- The browser now makes an unauthenticated request to `api.nuget.org` that carries no visitor data, + at most once per package set per six hours. +- `live.ts` is the first module shared between the server render and a browser script. It must stay + free of Node imports and of anything that would pull `manifest/load` or the filesystem into the + client bundle. +- The home page gains a small bundled script; the snapshot table itself is unchanged and remains + island-free. Version-badge styling moved into `.pv-version-badge` in `global.css` so the script + can swap a version by setting a single `data-version` attribute. +- Machine-readable outputs (`llms.txt`, `discover.json`, the sitemap) remain build-time and can + therefore report a version one release behind, because crawlers do not run the script. That is + acceptable, and it is why the human-facing surfaces are the ones that refresh. +- `AGENTS.md`, `README.md`, and the `github-repo-metadata` and `site-validation-loop` skills record + the exception: external data is fetched at build time *except* the NuGet version numbers the + browser re-checks. diff --git a/package.json b/package.json index 86c90cc..642a810 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "purview-dev", - "version": "0.6.0", + "version": "0.7.0", "private": true, "description": "Purview-Dev public website and unified documentation portal (workspace root).", "license": "MIT", diff --git a/src/fixtures/github/releases/architests.json b/src/fixtures/github/releases/architests.json new file mode 100644 index 0000000..4fde152 --- /dev/null +++ b/src/fixtures/github/releases/architests.json @@ -0,0 +1,87 @@ +[ + { + "url": "https://api.github.com/repos/purview-dev/architests/releases/414865011", + "assets_url": "https://api.github.com/repos/purview-dev/architests/releases/414865011/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/architests/releases/414865011/assets{?name,label}", + "html_url": "https://github.com/purview-dev/architests/releases/tag/v1.1.1", + "id": 414865011, + "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_kwDOVMHoTc4YulZz", + "tag_name": "v1.1.1", + "target_commitish": "main", + "name": "v1.1.1", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-16T10:59:42Z", + "updated_at": "2026-10-16T11:01:18Z", + "published_at": "2026-10-16T11:01:18Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/architests/tarball/v1.1.1", + "zipball_url": "https://api.github.com/repos/purview-dev/architests/zipball/v1.1.1", + "body": "## What's Changed\n* feat: sample, documentation, package metadata and an extending skill by @kieronlanning in https://github.com/purview-dev/architests/pull/1\n\n## New Contributors\n* @kieronlanning made their first contribution in https://github.com/purview-dev/architests/pull/1\n\n**Full Changelog**: https://github.com/purview-dev/architests/compare/v1.1.0...v1.1.1", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/architests/releases/414830198", + "assets_url": "https://api.github.com/repos/purview-dev/architests/releases/414830198/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/architests/releases/414830198/assets{?name,label}", + "html_url": "https://github.com/purview-dev/architests/releases/tag/v1.1.0", + "id": 414830198, + "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_kwDOVMHoTc4Yuc52", + "tag_name": "v1.1.0", + "target_commitish": "main", + "name": "v1.1.0", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-16T10:28:26Z", + "updated_at": "2026-10-16T10:30:00Z", + "published_at": "2026-10-16T10:30:00Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/architests/tarball/v1.1.0", + "zipball_url": "https://api.github.com/repos/purview-dev/architests/zipball/v1.1.0", + "body": "**Full Changelog**: https://github.com/purview-dev/architests/commits/v1.1.0" + } +] diff --git a/src/fixtures/github/releases/aspire-resourcekit.json b/src/fixtures/github/releases/aspire-resourcekit.json index f384ca6..6b9cc4e 100644 --- a/src/fixtures/github/releases/aspire-resourcekit.json +++ b/src/fixtures/github/releases/aspire-resourcekit.json @@ -1,4 +1,47 @@ [ + { + "url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/releases/414659502", + "assets_url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/releases/414659502/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/aspire-resourcekit/releases/414659502/assets{?name,label}", + "html_url": "https://github.com/purview-dev/aspire-resourcekit/releases/tag/v1.0.1", + "id": 414659502, + "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_kwDOTZLmtM4YtzOu", + "tag_name": "v1.0.1", + "target_commitish": "main", + "name": "v1.0.1", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-16T07:16:00Z", + "updated_at": "2026-10-16T07:18:43Z", + "published_at": "2026-10-16T07:18:43Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/tarball/v1.0.1", + "zipball_url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/zipball/v1.0.1", + "body": "\n\n## What's Changed\n### Other Changes\n* Chore/build sdk 1.0.4 by @kieronlanning in https://github.com/purview-dev/aspire-resourcekit/pull/49\n* build: Purview.Build as a local tool, SDK 1.0.5 and aligned package versions by @kieronlanning in https://github.com/purview-dev/aspire-resourcekit/pull/50\n* chore: move authored skills to repository-root skills folder by @kieronlanning in https://github.com/purview-dev/aspire-resourcekit/pull/51\n\n\n**Full Changelog**: https://github.com/purview-dev/aspire-resourcekit/compare/v1.0.0.1...v1.0.1", + "mentions_count": 1 + }, { "url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/releases/405496483", "assets_url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/releases/405496483/assets", diff --git a/src/fixtures/github/releases/build-sdk.json b/src/fixtures/github/releases/build-sdk.json index 9795836..5f8229e 100644 --- a/src/fixtures/github/releases/build-sdk.json +++ b/src/fixtures/github/releases/build-sdk.json @@ -1,4 +1,219 @@ [ + { + "url": "https://api.github.com/repos/purview-dev/build-sdk/releases/414835797", + "assets_url": "https://api.github.com/repos/purview-dev/build-sdk/releases/414835797/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/build-sdk/releases/414835797/assets{?name,label}", + "html_url": "https://github.com/purview-dev/build-sdk/releases/tag/v1.0.7", + "id": 414835797, + "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_kwDOSmgZrc4YueRV", + "tag_name": "v1.0.7", + "target_commitish": "main", + "name": "v1.0.7", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-16T10:35:30Z", + "updated_at": "2026-10-16T10:36:39Z", + "published_at": "2026-10-16T10:36:39Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/build-sdk/tarball/v1.0.7", + "zipball_url": "https://api.github.com/repos/purview-dev/build-sdk/zipball/v1.0.7", + "body": "## What's Changed\n* chore: move Purview.Architecture.Testing to purview-dev/architests by @kieronlanning in https://github.com/purview-dev/build-sdk/pull/40\n\n\n**Full Changelog**: https://github.com/purview-dev/build-sdk/compare/v1.0.6...v1.0.7", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/build-sdk/releases/413969564", + "assets_url": "https://api.github.com/repos/purview-dev/build-sdk/releases/413969564/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/build-sdk/releases/413969564/assets{?name,label}", + "html_url": "https://github.com/purview-dev/build-sdk/releases/tag/v1.0.6", + "id": 413969564, + "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_kwDOSmgZrc4YrKyc", + "tag_name": "v1.0.6", + "target_commitish": "main", + "name": "v1.0.6", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-15T15:23:48Z", + "updated_at": "2026-10-15T15:25:17Z", + "published_at": "2026-10-15T15:25:17Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/build-sdk/tarball/v1.0.6", + "zipball_url": "https://api.github.com/repos/purview-dev/build-sdk/zipball/v1.0.6", + "body": "## What's Changed\n* build: Purview.Build as a local tool by @kieronlanning in https://github.com/purview-dev/build-sdk/pull/38\n* Adding assembly name gen class by @kieronlanning in https://github.com/purview-dev/build-sdk/pull/39\n\n\n**Full Changelog**: https://github.com/purview-dev/build-sdk/compare/v1.0.5...v1.0.6", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/build-sdk/releases/410488706", + "assets_url": "https://api.github.com/repos/purview-dev/build-sdk/releases/410488706/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/build-sdk/releases/410488706/assets{?name,label}", + "html_url": "https://github.com/purview-dev/build-sdk/releases/tag/v1.0.5", + "id": 410488706, + "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_kwDOSmgZrc4Yd4-C", + "tag_name": "v1.0.5", + "target_commitish": "main", + "name": "v1.0.5", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-12T10:32:24Z", + "updated_at": "2026-10-12T10:33:21Z", + "published_at": "2026-10-12T10:33:21Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/build-sdk/tarball/v1.0.5", + "zipball_url": "https://api.github.com/repos/purview-dev/build-sdk/zipball/v1.0.5", + "body": "## What's Changed\n* docs: correct the test-detection and namespace-stripping claims by @kieronlanning in https://github.com/purview-dev/build-sdk/pull/37\n\n\n**Full Changelog**: https://github.com/purview-dev/build-sdk/compare/v1.0.4...v1.0.5", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/build-sdk/releases/407108523", + "assets_url": "https://api.github.com/repos/purview-dev/build-sdk/releases/407108523/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/build-sdk/releases/407108523/assets{?name,label}", + "html_url": "https://github.com/purview-dev/build-sdk/releases/tag/v1.0.4", + "id": 407108523, + "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_kwDOSmgZrc4YQ_ur", + "tag_name": "v1.0.4", + "target_commitish": "main", + "name": "v1.0.4", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-08T17:45:54Z", + "updated_at": "2026-10-08T17:47:17Z", + "published_at": "2026-10-08T17:47:17Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/build-sdk/tarball/v1.0.4", + "zipball_url": "https://api.github.com/repos/purview-dev/build-sdk/zipball/v1.0.4", + "body": "## What's Changed\n* Fix/tfm floor and mirrored file tracking by @kieronlanning in https://github.com/purview-dev/build-sdk/pull/36\n\n\n**Full Changelog**: https://github.com/purview-dev/build-sdk/compare/v1.0.3.1...v1.0.4", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/build-sdk/releases/406990665", + "assets_url": "https://api.github.com/repos/purview-dev/build-sdk/releases/406990665/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/build-sdk/releases/406990665/assets{?name,label}", + "html_url": "https://github.com/purview-dev/build-sdk/releases/tag/v1.0.3.1", + "id": 406990665, + "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_kwDOSmgZrc4YQi9J", + "tag_name": "v1.0.3.1", + "target_commitish": "main", + "name": "v1.0.3.1", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-08T15:33:43Z", + "updated_at": "2026-10-08T15:34:55Z", + "published_at": "2026-10-08T15:34:55Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/build-sdk/tarball/v1.0.3.1", + "zipball_url": "https://api.github.com/repos/purview-dev/build-sdk/zipball/v1.0.3.1", + "body": "## What's Changed\n* fix: target frameworks were empty under certain conditions by @kieronlanning in https://github.com/purview-dev/build-sdk/pull/35\n\n\n**Full Changelog**: https://github.com/purview-dev/build-sdk/compare/v1.0.3.0...v1.0.3.1", + "mentions_count": 1 + }, { "url": "https://api.github.com/repos/purview-dev/build-sdk/releases/405192586", "assets_url": "https://api.github.com/repos/purview-dev/build-sdk/releases/405192586/assets", diff --git a/src/fixtures/github/releases/build.json b/src/fixtures/github/releases/build.json index 1fe815e..adfaaa9 100644 --- a/src/fixtures/github/releases/build.json +++ b/src/fixtures/github/releases/build.json @@ -1,4 +1,468 @@ [ + { + "url": "https://api.github.com/repos/purview-dev/build/releases/414010479", + "assets_url": "https://api.github.com/repos/purview-dev/build/releases/414010479/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/build/releases/414010479/assets{?name,label}", + "html_url": "https://github.com/purview-dev/build/releases/tag/v0.5.4", + "id": 414010479, + "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_kwDOULKrys4YrUxv", + "tag_name": "v0.5.4", + "target_commitish": "main", + "name": "v0.5.4", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-15T16:05:48Z", + "updated_at": "2026-10-15T16:07:15Z", + "published_at": "2026-10-15T16:07:12Z", + "assets": [ + { + "url": "https://api.github.com/repos/purview-dev/build/releases/assets/644400286", + "id": 644400286, + "node_id": "RA_kwDOULKrys4maMSe", + "name": "Purview.Build.0.5.4.nupkg", + "label": "", + "uploader": { + "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 + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 11903723, + "digest": "sha256:0069d1fad32a97bb59cc26cdfea12266a71fa5235431799ec846359cc0fa8a30", + "download_count": 0, + "created_at": "2026-10-15T16:07:14Z", + "updated_at": "2026-10-15T16:07:15Z", + "browser_download_url": "https://github.com/purview-dev/build/releases/download/v0.5.4/Purview.Build.0.5.4.nupkg" + }, + { + "url": "https://api.github.com/repos/purview-dev/build/releases/assets/644400256", + "id": 644400256, + "node_id": "RA_kwDOULKrys4maMSA", + "name": "Purview.Build.0.5.4.snupkg", + "label": "", + "uploader": { + "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 + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 122973, + "digest": "sha256:b82d49d5033ddfe740d09dfb33d0ff4a629324b088dfb4a9edf206ec5349fd6f", + "download_count": 0, + "created_at": "2026-10-15T16:07:13Z", + "updated_at": "2026-10-15T16:07:13Z", + "browser_download_url": "https://github.com/purview-dev/build/releases/download/v0.5.4/Purview.Build.0.5.4.snupkg" + } + ], + "tarball_url": "https://api.github.com/repos/purview-dev/build/tarball/v0.5.4", + "zipball_url": "https://api.github.com/repos/purview-dev/build/zipball/v0.5.4", + "body": "## What's Changed\n* build: take Purview.Build 0.5.3 by @kieronlanning in https://github.com/purview-dev/build/pull/28\n* Chore/skills root folder by @kieronlanning in https://github.com/purview-dev/build/pull/29\n* ci: make global.json the single source of truth for the SDK version by @kieronlanning in https://github.com/purview-dev/build/pull/30\n* Fix pack by @kieronlanning in https://github.com/purview-dev/build/pull/31\n\n\n**Full Changelog**: https://github.com/purview-dev/build/compare/v0.5.3...v0.5.4", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/build/releases/411422814", + "assets_url": "https://api.github.com/repos/purview-dev/build/releases/411422814/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/build/releases/411422814/assets{?name,label}", + "html_url": "https://github.com/purview-dev/build/releases/tag/v0.5.3", + "id": 411422814, + "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_kwDOULKrys4YhdBe", + "tag_name": "v0.5.3", + "target_commitish": "main", + "name": "v0.5.3", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-13T07:47:12Z", + "updated_at": "2026-10-13T07:48:28Z", + "published_at": "2026-10-13T07:48:26Z", + "assets": [ + { + "url": "https://api.github.com/repos/purview-dev/build/releases/assets/636302003", + "id": 636302003, + "node_id": "RA_kwDOULKrys4l7TKz", + "name": "Purview.Build.0.5.3.nupkg", + "label": "", + "uploader": { + "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 + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 11887708, + "digest": "sha256:29fd2bc29c7362aaec26cb49148935d64173c1b0855cde988ec2ed01a8c16dac", + "download_count": 0, + "created_at": "2026-10-13T07:48:28Z", + "updated_at": "2026-10-13T07:48:28Z", + "browser_download_url": "https://github.com/purview-dev/build/releases/download/v0.5.3/Purview.Build.0.5.3.nupkg" + }, + { + "url": "https://api.github.com/repos/purview-dev/build/releases/assets/636301987", + "id": 636301987, + "node_id": "RA_kwDOULKrys4l7TKj", + "name": "Purview.Build.0.5.3.snupkg", + "label": "", + "uploader": { + "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 + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 122173, + "digest": "sha256:4417bfa1c90fe1582b584d3916fdf7e620b9230e2286e9d0929c6eece8706d63", + "download_count": 0, + "created_at": "2026-10-13T07:48:27Z", + "updated_at": "2026-10-13T07:48:27Z", + "browser_download_url": "https://github.com/purview-dev/build/releases/download/v0.5.3/Purview.Build.0.5.3.snupkg" + } + ], + "tarball_url": "https://api.github.com/repos/purview-dev/build/tarball/v0.5.3", + "zipball_url": "https://api.github.com/repos/purview-dev/build/zipball/v0.5.3", + "body": "## What's Changed\n* fix: configurable RequiredCompilerFlags, local-tool install, and dogfood path (0.5.3) by @kieronlanning in https://github.com/purview-dev/build/pull/27\n\n\n**Full Changelog**: https://github.com/purview-dev/build/compare/v0.5.2...v0.5.3", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/build/releases/407132679", + "assets_url": "https://api.github.com/repos/purview-dev/build/releases/407132679/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/build/releases/407132679/assets{?name,label}", + "html_url": "https://github.com/purview-dev/build/releases/tag/v0.5.2", + "id": 407132679, + "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_kwDOULKrys4YRFoH", + "tag_name": "v0.5.2", + "target_commitish": "main", + "name": "v0.5.2", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-08T18:16:07Z", + "updated_at": "2026-10-08T18:17:30Z", + "published_at": "2026-10-08T18:17:27Z", + "assets": [ + { + "url": "https://api.github.com/repos/purview-dev/build/releases/assets/622625071", + "id": 622625071, + "node_id": "RA_kwDOULKrys4lHIEv", + "name": "Purview.Build.0.5.2.nupkg", + "label": "", + "uploader": { + "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 + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 11887507, + "digest": "sha256:5950cde06c1fa492ef405ef26d1e36d29b44a27528a7e98463b6b9dd4a0a6edf", + "download_count": 0, + "created_at": "2026-10-08T18:17:28Z", + "updated_at": "2026-10-08T18:17:29Z", + "browser_download_url": "https://github.com/purview-dev/build/releases/download/v0.5.2/Purview.Build.0.5.2.nupkg" + }, + { + "url": "https://api.github.com/repos/purview-dev/build/releases/assets/622625110", + "id": 622625110, + "node_id": "RA_kwDOULKrys4lHIFW", + "name": "Purview.Build.0.5.2.snupkg", + "label": "", + "uploader": { + "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 + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 121999, + "digest": "sha256:169fd40ba35e340e2201c6c98a852d5ee641e7ba9eaf7bbfb73286012242c614", + "download_count": 0, + "created_at": "2026-10-08T18:17:29Z", + "updated_at": "2026-10-08T18:17:29Z", + "browser_download_url": "https://github.com/purview-dev/build/releases/download/v0.5.2/Purview.Build.0.5.2.snupkg" + } + ], + "tarball_url": "https://api.github.com/repos/purview-dev/build/tarball/v0.5.2", + "zipball_url": "https://api.github.com/repos/purview-dev/build/zipball/v0.5.2", + "body": "## What's Changed\n* Fix/stale ca1515 suppression and build sdk 1.0.4 by @kieronlanning in https://github.com/purview-dev/build/pull/26\n\n\n**Full Changelog**: https://github.com/purview-dev/build/compare/v0.5.1...v0.5.2", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/build/releases/405630531", + "assets_url": "https://api.github.com/repos/purview-dev/build/releases/405630531/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/build/releases/405630531/assets{?name,label}", + "html_url": "https://github.com/purview-dev/build/releases/tag/v0.5.1", + "id": 405630531, + "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_kwDOULKrys4YLW5D", + "tag_name": "v0.5.1", + "target_commitish": "main", + "name": "v0.5.1", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-07T10:11:13Z", + "updated_at": "2026-10-07T10:12:33Z", + "published_at": "2026-10-07T10:12:30Z", + "assets": [ + { + "url": "https://api.github.com/repos/purview-dev/build/releases/assets/618313874", + "id": 618313874, + "node_id": "RA_kwDOULKrys4k2riS", + "name": "Purview.Build.0.5.1.nupkg", + "label": "", + "uploader": { + "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 + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 11887126, + "digest": "sha256:2dd7f3fa7705cdacc6ba979383652b178cb0aaac688ced1be51a798e5c738b36", + "download_count": 0, + "created_at": "2026-10-07T10:12:32Z", + "updated_at": "2026-10-07T10:12:33Z", + "browser_download_url": "https://github.com/purview-dev/build/releases/download/v0.5.1/Purview.Build.0.5.1.nupkg" + }, + { + "url": "https://api.github.com/repos/purview-dev/build/releases/assets/618313836", + "id": 618313836, + "node_id": "RA_kwDOULKrys4k2rhs", + "name": "Purview.Build.0.5.1.snupkg", + "label": "", + "uploader": { + "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 + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 121825, + "digest": "sha256:e97acb17e7539bdeb7eb2a1bff703595b458ad187635fc0e7f76e5d84142bdc0", + "download_count": 0, + "created_at": "2026-10-07T10:12:31Z", + "updated_at": "2026-10-07T10:12:31Z", + "browser_download_url": "https://github.com/purview-dev/build/releases/download/v0.5.1/Purview.Build.0.5.1.snupkg" + } + ], + "tarball_url": "https://api.github.com/repos/purview-dev/build/tarball/v0.5.1", + "zipball_url": "https://api.github.com/repos/purview-dev/build/zipball/v0.5.1", + "body": "## What's Changed\n* feat: added json schema by @kieronlanning in https://github.com/purview-dev/build/pull/25\n\n\n**Full Changelog**: https://github.com/purview-dev/build/compare/v0.4.0...v0.5.1", + "mentions_count": 1 + }, { "url": "https://api.github.com/repos/purview-dev/build/releases/405194567", "assets_url": "https://api.github.com/repos/purview-dev/build/releases/405194567/assets", diff --git a/src/fixtures/github/releases/engineering-playbook.json b/src/fixtures/github/releases/engineering-playbook.json new file mode 100644 index 0000000..e68e344 --- /dev/null +++ b/src/fixtures/github/releases/engineering-playbook.json @@ -0,0 +1,87 @@ +[ + { + "url": "https://api.github.com/repos/purview-dev/engineering-playbook/releases/414390062", + "assets_url": "https://api.github.com/repos/purview-dev/engineering-playbook/releases/414390062/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/engineering-playbook/releases/414390062/assets{?name,label}", + "html_url": "https://github.com/purview-dev/engineering-playbook/releases/tag/v0.1.0-prerelease.2", + "id": 414390062, + "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_kwDOVFVAJ84Ysxcu", + "tag_name": "v0.1.0-prerelease.2", + "target_commitish": "main", + "name": "v0.1.0-prerelease.2", + "draft": false, + "immutable": false, + "prerelease": true, + "created_at": "2026-10-16T00:04:26Z", + "updated_at": "2026-10-16T00:05:25Z", + "published_at": "2026-10-16T00:05:25Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/engineering-playbook/tarball/v0.1.0-prerelease.2", + "zipball_url": "https://api.github.com/repos/purview-dev/engineering-playbook/zipball/v0.1.0-prerelease.2", + "body": "## What's Changed\n* build: Purview.Build as a local tool and SDK 1.0.5 by @kieronlanning in https://github.com/purview-dev/engineering-playbook/pull/1\n* docs: add agent skills distribution page and canonical skills by @kieronlanning in https://github.com/purview-dev/engineering-playbook/pull/2\n* feat: architecture policy, enforcement tests and guidance skills by @kieronlanning in https://github.com/purview-dev/engineering-playbook/pull/3\n* Chore/skills root folder by @kieronlanning in https://github.com/purview-dev/engineering-playbook/pull/5\n\n## New Contributors\n* @kieronlanning made their first contribution in https://github.com/purview-dev/engineering-playbook/pull/1\n\n**Full Changelog**: https://github.com/purview-dev/engineering-playbook/compare/v0.1.0-prerelease.1...v0.1.0-prerelease.2", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/engineering-playbook/releases/409999732", + "assets_url": "https://api.github.com/repos/purview-dev/engineering-playbook/releases/409999732/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/engineering-playbook/releases/409999732/assets{?name,label}", + "html_url": "https://github.com/purview-dev/engineering-playbook/releases/tag/v0.1.0-prerelease.1", + "id": 409999732, + "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_kwDOVFVAJ84YcBl0", + "tag_name": "v0.1.0-prerelease.1", + "target_commitish": "main", + "name": "v0.1.0-prerelease.1", + "draft": false, + "immutable": false, + "prerelease": true, + "created_at": "2026-10-12T00:01:46Z", + "updated_at": "2026-10-12T00:02:54Z", + "published_at": "2026-10-12T00:02:54Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/engineering-playbook/tarball/v0.1.0-prerelease.1", + "zipball_url": "https://api.github.com/repos/purview-dev/engineering-playbook/zipball/v0.1.0-prerelease.1", + "body": "**Full Changelog**: https://github.com/purview-dev/engineering-playbook/commits/v0.1.0-prerelease.1" + } +] diff --git a/src/fixtures/github/releases/results.json b/src/fixtures/github/releases/results.json index ed72ecc..97f1ffa 100644 --- a/src/fixtures/github/releases/results.json +++ b/src/fixtures/github/releases/results.json @@ -1,4 +1,90 @@ [ + { + "url": "https://api.github.com/repos/purview-dev/results/releases/414835349", + "assets_url": "https://api.github.com/repos/purview-dev/results/releases/414835349/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/results/releases/414835349/assets{?name,label}", + "html_url": "https://github.com/purview-dev/results/releases/tag/v1.0.2", + "id": 414835349, + "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_kwDOUz-6es4YueKV", + "tag_name": "v1.0.2", + "target_commitish": "main", + "name": "v1.0.2", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-16T10:33:49Z", + "updated_at": "2026-10-16T10:36:06Z", + "published_at": "2026-10-16T10:36:06Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/results/tarball/v1.0.2", + "zipball_url": "https://api.github.com/repos/purview-dev/results/zipball/v1.0.2", + "body": "## What's Changed\n* Better zod vo integration by @kieronlanning in https://github.com/purview-dev/results/pull/5\n\n\n**Full Changelog**: https://github.com/purview-dev/results/compare/v1.0.0.1...v1.0.2", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/results/releases/407183473", + "assets_url": "https://api.github.com/repos/purview-dev/results/releases/407183473/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/results/releases/407183473/assets{?name,label}", + "html_url": "https://github.com/purview-dev/results/releases/tag/v1.0.0.1", + "id": 407183473, + "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_kwDOUz-6es4YRSBx", + "tag_name": "v1.0.0.1", + "target_commitish": "main", + "name": "v1.0.0.1", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-08T19:17:49Z", + "updated_at": "2026-10-08T19:20:40Z", + "published_at": "2026-10-08T19:20:40Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/results/tarball/v1.0.0.1", + "zipball_url": "https://api.github.com/repos/purview-dev/results/zipball/v1.0.0.1", + "body": "## What's Changed\n* Chore/build sdk 1.0.4 by @kieronlanning in https://github.com/purview-dev/results/pull/4\n\n\n**Full Changelog**: https://github.com/purview-dev/results/compare/v1.0.0...v1.0.0.1", + "mentions_count": 1 + }, { "url": "https://api.github.com/repos/purview-dev/results/releases/405484151", "assets_url": "https://api.github.com/repos/purview-dev/results/releases/405484151/assets", diff --git a/src/fixtures/github/releases/sourcegenerator-framework.json b/src/fixtures/github/releases/sourcegenerator-framework.json index c023389..9141b55 100644 --- a/src/fixtures/github/releases/sourcegenerator-framework.json +++ b/src/fixtures/github/releases/sourcegenerator-framework.json @@ -1,4 +1,90 @@ [ + { + "url": "https://api.github.com/repos/purview-dev/sourcegenerator-framework/releases/414374554", + "assets_url": "https://api.github.com/repos/purview-dev/sourcegenerator-framework/releases/414374554/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/sourcegenerator-framework/releases/414374554/assets{?name,label}", + "html_url": "https://github.com/purview-dev/sourcegenerator-framework/releases/tag/v1.1.1", + "id": 414374554, + "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_kwDOTv0SC84Ystqa", + "tag_name": "v1.1.1", + "target_commitish": "main", + "name": "v1.1.1", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-15T23:29:34Z", + "updated_at": "2026-10-15T23:36:46Z", + "published_at": "2026-10-15T23:36:46Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/sourcegenerator-framework/tarball/v1.1.1", + "zipball_url": "https://api.github.com/repos/purview-dev/sourcegenerator-framework/zipball/v1.1.1", + "body": "## What's Changed\n* chore: move authored skills to repository-root skills folder by @kieronlanning in https://github.com/purview-dev/sourcegenerator-framework/pull/41\n\n\n**Full Changelog**: https://github.com/purview-dev/sourcegenerator-framework/compare/v1.1.0...v1.1.1", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/sourcegenerator-framework/releases/411553103", + "assets_url": "https://api.github.com/repos/purview-dev/sourcegenerator-framework/releases/411553103/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/sourcegenerator-framework/releases/411553103/assets{?name,label}", + "html_url": "https://github.com/purview-dev/sourcegenerator-framework/releases/tag/v1.1.0", + "id": 411553103, + "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_kwDOTv0SC84Yh81P", + "tag_name": "v1.1.0", + "target_commitish": "main", + "name": "v1.1.0", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-13T10:21:25Z", + "updated_at": "2026-10-13T10:28:59Z", + "published_at": "2026-10-13T10:28:59Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/sourcegenerator-framework/tarball/v1.1.0", + "zipball_url": "https://api.github.com/repos/purview-dev/sourcegenerator-framework/zipball/v1.1.0", + "body": "## What's Changed\n* Chore/build sdk 1.0.4 by @kieronlanning in https://github.com/purview-dev/sourcegenerator-framework/pull/39\n* build: take Purview.Build 0.5.3 by @kieronlanning in https://github.com/purview-dev/sourcegenerator-framework/pull/40\n\n\n**Full Changelog**: https://github.com/purview-dev/sourcegenerator-framework/compare/v1.0.0...v1.1.0", + "mentions_count": 1 + }, { "url": "https://api.github.com/repos/purview-dev/sourcegenerator-framework/releases/405201218", "assets_url": "https://api.github.com/repos/purview-dev/sourcegenerator-framework/releases/405201218/assets", diff --git a/src/fixtures/github/releases/telemetry-sourcegenerator.json b/src/fixtures/github/releases/telemetry-sourcegenerator.json index 89085b8..b444a7c 100644 --- a/src/fixtures/github/releases/telemetry-sourcegenerator.json +++ b/src/fixtures/github/releases/telemetry-sourcegenerator.json @@ -1,4 +1,133 @@ [ + { + "url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/414384811", + "assets_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/414384811/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/414384811/assets{?name,label}", + "html_url": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/tag/v5.0.4", + "id": 414384811, + "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_kwDOLblSmc4YswKr", + "tag_name": "v5.0.4", + "target_commitish": "main", + "name": "v5.0.4", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-15T23:49:37Z", + "updated_at": "2026-10-15T23:55:33Z", + "published_at": "2026-10-15T23:55:33Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/tarball/v5.0.4", + "zipball_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/zipball/v5.0.4", + "body": "## What's Changed\n* chore: move authored skills to repository-root skills folder by @kieronlanning in https://github.com/purview-dev/telemetry-sourcegenerator/pull/146\n\n\n**Full Changelog**: https://github.com/purview-dev/telemetry-sourcegenerator/compare/v5.0.3...v5.0.4", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/411583809", + "assets_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/411583809/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/411583809/assets{?name,label}", + "html_url": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/tag/v5.0.3", + "id": 411583809, + "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_kwDOLblSmc4YiEVB", + "tag_name": "v5.0.3", + "target_commitish": "main", + "name": "v5.0.3", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-13T11:03:53Z", + "updated_at": "2026-10-13T11:07:04Z", + "published_at": "2026-10-13T11:07:04Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/tarball/v5.0.3", + "zipball_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/zipball/v5.0.3", + "body": "## What's Changed\n* Chore/build sdk 1.0.4 by @kieronlanning in https://github.com/purview-dev/telemetry-sourcegenerator/pull/144\n* build: take Purview.Build 0.5.3 by @kieronlanning in https://github.com/purview-dev/telemetry-sourcegenerator/pull/145\n\n\n**Full Changelog**: https://github.com/purview-dev/telemetry-sourcegenerator/compare/v5.0.2...v5.0.3", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/406080605", + "assets_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/406080605/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/406080605/assets{?name,label}", + "html_url": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/tag/v5.0.2", + "id": 406080605, + "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_kwDOLblSmc4YNExd", + "tag_name": "v5.0.2", + "target_commitish": "main", + "name": "v5.0.2", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-07T19:07:30Z", + "updated_at": "2026-10-07T19:13:33Z", + "published_at": "2026-10-07T19:13:33Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/tarball/v5.0.2", + "zipball_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/zipball/v5.0.2", + "body": "## What's Changed\n* Telemetry name gen by @kieronlanning in https://github.com/purview-dev/telemetry-sourcegenerator/pull/143\n\n\n**Full Changelog**: https://github.com/purview-dev/telemetry-sourcegenerator/compare/v5.0.1...v5.0.2", + "mentions_count": 1 + }, { "url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/405475875", "assets_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/405475875/assets", @@ -1406,7 +1535,7 @@ "state": "uploaded", "size": 253928, "digest": null, - "download_count": 2, + "download_count": 3, "created_at": "2024-06-09T08:05:16Z", "updated_at": "2024-06-09T08:05:16Z", "browser_download_url": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/download/v1.0.12/Purview.Telemetry.SourceGenerator.1.0.12.symbols.nupkg.tar.xz" @@ -2112,134 +2241,5 @@ "zipball_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/zipball/v1.07", "body": "## What's Changed\r\n* perf: speculative performance improvemnt, testing HasListeners before… by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/33\r\n\r\n\r\n**Full Changelog**: https://github.com/purview-dev/purview-telemetry-sourcegenerator/compare/v1.0.6...v1.07", "mentions_count": 1 - }, - { - "url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/154370519", - "assets_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/154370519/assets", - "upload_url": "https://uploads.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/154370519/assets{?name,label}", - "html_url": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/tag/v1.0.5", - "id": 154370519, - "author": { - "login": "kieronlanning", - "id": 5364423, - "node_id": "MDQ6VXNlcjUzNjQ0MjM=", - "avatar_url": "https://avatars.githubusercontent.com/u/5364423?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/kieronlanning", - "html_url": "https://github.com/kieronlanning", - "followers_url": "https://api.github.com/users/kieronlanning/followers", - "following_url": "https://api.github.com/users/kieronlanning/following{/other_user}", - "gists_url": "https://api.github.com/users/kieronlanning/gists{/gist_id}", - "starred_url": "https://api.github.com/users/kieronlanning/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/kieronlanning/subscriptions", - "organizations_url": "https://api.github.com/users/kieronlanning/orgs", - "repos_url": "https://api.github.com/users/kieronlanning/repos", - "events_url": "https://api.github.com/users/kieronlanning/events{/privacy}", - "received_events_url": "https://api.github.com/users/kieronlanning/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "node_id": "RE_kwDOLblSmc4JM4HX", - "tag_name": "v1.0.5", - "target_commitish": "main", - "name": "v1.0.5", - "draft": false, - "immutable": false, - "prerelease": false, - "created_at": "2024-05-06T09:08:21Z", - "updated_at": "2024-05-06T09:09:48Z", - "published_at": "2024-05-06T09:09:48Z", - "assets": [], - "tarball_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/tarball/v1.0.5", - "zipball_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/zipball/v1.0.5", - "body": "## What's Changed\r\n* Fixed diagnostics ID duplication by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/27\r\n\r\n\r\n**Full Changelog**: https://github.com/purview-dev/purview-telemetry-sourcegenerator/compare/v1.0.4...v1.0.5", - "mentions_count": 1 - }, - { - "url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/153703070", - "assets_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/153703070/assets", - "upload_url": "https://uploads.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/153703070/assets{?name,label}", - "html_url": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/tag/v1.0.4", - "id": 153703070, - "author": { - "login": "kieronlanning", - "id": 5364423, - "node_id": "MDQ6VXNlcjUzNjQ0MjM=", - "avatar_url": "https://avatars.githubusercontent.com/u/5364423?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/kieronlanning", - "html_url": "https://github.com/kieronlanning", - "followers_url": "https://api.github.com/users/kieronlanning/followers", - "following_url": "https://api.github.com/users/kieronlanning/following{/other_user}", - "gists_url": "https://api.github.com/users/kieronlanning/gists{/gist_id}", - "starred_url": "https://api.github.com/users/kieronlanning/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/kieronlanning/subscriptions", - "organizations_url": "https://api.github.com/users/kieronlanning/orgs", - "repos_url": "https://api.github.com/users/kieronlanning/repos", - "events_url": "https://api.github.com/users/kieronlanning/events{/privacy}", - "received_events_url": "https://api.github.com/users/kieronlanning/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "node_id": "RE_kwDOLblSmc4JKVKe", - "tag_name": "v1.0.4", - "target_commitish": "main", - "name": "v1.0.4", - "draft": false, - "immutable": false, - "prerelease": false, - "created_at": "2024-05-01T18:53:22Z", - "updated_at": "2024-05-01T18:55:02Z", - "published_at": "2024-05-01T18:55:02Z", - "assets": [], - "tarball_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/tarball/v1.0.4", - "zipball_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/zipball/v1.0.4", - "body": "## What's Changed\r\n* docs: fixed sample app by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/22\r\n* docs: completed docs to wiki migration by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/23\r\n* docs: fixed invalid xml comments in attributes by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/24\r\n* test: fixed tests from xml comment change by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/25\r\n* fix: fixed invalid prefix modes for instruments by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/26\r\n\r\n\r\n**Full Changelog**: https://github.com/purview-dev/purview-telemetry-sourcegenerator/compare/v1.0.3...v1.0.4", - "mentions_count": 1 - }, - { - "url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/153554278", - "assets_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/153554278/assets", - "upload_url": "https://uploads.github.com/repos/purview-dev/telemetry-sourcegenerator/releases/153554278/assets{?name,label}", - "html_url": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/tag/v1.0.3", - "id": 153554278, - "author": { - "login": "kieronlanning", - "id": 5364423, - "node_id": "MDQ6VXNlcjUzNjQ0MjM=", - "avatar_url": "https://avatars.githubusercontent.com/u/5364423?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/kieronlanning", - "html_url": "https://github.com/kieronlanning", - "followers_url": "https://api.github.com/users/kieronlanning/followers", - "following_url": "https://api.github.com/users/kieronlanning/following{/other_user}", - "gists_url": "https://api.github.com/users/kieronlanning/gists{/gist_id}", - "starred_url": "https://api.github.com/users/kieronlanning/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/kieronlanning/subscriptions", - "organizations_url": "https://api.github.com/users/kieronlanning/orgs", - "repos_url": "https://api.github.com/users/kieronlanning/repos", - "events_url": "https://api.github.com/users/kieronlanning/events{/privacy}", - "received_events_url": "https://api.github.com/users/kieronlanning/received_events", - "type": "User", - "user_view_type": "public", - "site_admin": false - }, - "node_id": "RE_kwDOLblSmc4JJw1m", - "tag_name": "v1.0.3", - "target_commitish": "main", - "name": "v1.0.3", - "draft": false, - "immutable": false, - "prerelease": false, - "created_at": "2024-04-30T17:34:13Z", - "updated_at": "2024-04-30T17:35:41Z", - "published_at": "2024-04-30T17:35:41Z", - "assets": [], - "tarball_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/tarball/v1.0.3", - "zipball_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/zipball/v1.0.3", - "body": "## What's Changed\r\n* build(deps): bump xunit.runner.visualstudio from 2.5.8 to 2.8.0 by @dependabot in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/20\r\n* build(deps): bump xunit from 2.7.1 to 2.8.0 by @dependabot in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/19\r\n* Fix generic parameters and added AutoCounterAttribute by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/21\r\n\r\n\r\n**Full Changelog**: https://github.com/purview-dev/purview-telemetry-sourcegenerator/compare/v1.0.2...v1.0.3", - "mentions_count": 2 } ] diff --git a/src/fixtures/github/releases/value-objects.json b/src/fixtures/github/releases/value-objects.json index a7dc584..93474b9 100644 --- a/src/fixtures/github/releases/value-objects.json +++ b/src/fixtures/github/releases/value-objects.json @@ -1,4 +1,90 @@ [ + { + "url": "https://api.github.com/repos/purview-dev/value-objects/releases/414820065", + "assets_url": "https://api.github.com/repos/purview-dev/value-objects/releases/414820065/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/value-objects/releases/414820065/assets{?name,label}", + "html_url": "https://github.com/purview-dev/value-objects/releases/tag/v1.1.0", + "id": 414820065, + "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_kwDOUgS3hM4Yuabh", + "tag_name": "v1.1.0", + "target_commitish": "main", + "name": "v1.1.0", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-16T10:16:37Z", + "updated_at": "2026-10-16T10:20:14Z", + "published_at": "2026-10-16T10:20:14Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/value-objects/tarball/v1.1.0", + "zipball_url": "https://api.github.com/repos/purview-dev/value-objects/zipball/v1.1.0", + "body": "## What's Changed\n* Feat tostring mirroring by @kieronlanning in https://github.com/purview-dev/value-objects/pull/16\n\n\n**Full Changelog**: https://github.com/purview-dev/value-objects/compare/v1.0.1...v1.1.0", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/value-objects/releases/407137389", + "assets_url": "https://api.github.com/repos/purview-dev/value-objects/releases/407137389/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/value-objects/releases/407137389/assets{?name,label}", + "html_url": "https://github.com/purview-dev/value-objects/releases/tag/v1.0.1", + "id": 407137389, + "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_kwDOUgS3hM4YRGxt", + "tag_name": "v1.0.1", + "target_commitish": "main", + "name": "v1.0.1", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-08T18:20:15Z", + "updated_at": "2026-10-08T18:23:18Z", + "published_at": "2026-10-08T18:23:18Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/value-objects/tarball/v1.0.1", + "zipball_url": "https://api.github.com/repos/purview-dev/value-objects/zipball/v1.0.1", + "body": "## What's Changed\n* Fix/target framework sets and build sdk 1.0.4 by @kieronlanning in https://github.com/purview-dev/value-objects/pull/15\n\n\n**Full Changelog**: https://github.com/purview-dev/value-objects/compare/v1.0.0...v1.0.1", + "mentions_count": 1 + }, { "url": "https://api.github.com/repos/purview-dev/value-objects/releases/405469401", "assets_url": "https://api.github.com/repos/purview-dev/value-objects/releases/405469401/assets", diff --git a/src/fixtures/github/releases/zodsharp.json b/src/fixtures/github/releases/zodsharp.json index 9424ea3..3bdc1ac 100644 --- a/src/fixtures/github/releases/zodsharp.json +++ b/src/fixtures/github/releases/zodsharp.json @@ -1,4 +1,133 @@ [ + { + "url": "https://api.github.com/repos/purview-dev/zodsharp/releases/414803582", + "assets_url": "https://api.github.com/repos/purview-dev/zodsharp/releases/414803582/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/zodsharp/releases/414803582/assets{?name,label}", + "html_url": "https://github.com/purview-dev/zodsharp/releases/tag/v2.1.0", + "id": 414803582, + "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_kwDOTNzbhc4YuWZ-", + "tag_name": "v2.1.0", + "target_commitish": "main", + "name": "v2.1.0", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-16T09:57:54Z", + "updated_at": "2026-10-16T10:03:37Z", + "published_at": "2026-10-16T10:03:37Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/zodsharp/tarball/v2.1.0", + "zipball_url": "https://api.github.com/repos/purview-dev/zodsharp/zipball/v2.1.0", + "body": "## What's Changed\n* Added nonsentiel default tests by @kieronlanning in https://github.com/purview-dev/zodsharp/pull/54\n\n\n**Full Changelog**: https://github.com/purview-dev/zodsharp/compare/v2.0.2...v2.1.0", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/zodsharp/releases/407125783", + "assets_url": "https://api.github.com/repos/purview-dev/zodsharp/releases/407125783/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/zodsharp/releases/407125783/assets{?name,label}", + "html_url": "https://github.com/purview-dev/zodsharp/releases/tag/v2.0.2", + "id": 407125783, + "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_kwDOTNzbhc4YRD8X", + "tag_name": "v2.0.2", + "target_commitish": "main", + "name": "v2.0.2", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-08T18:05:34Z", + "updated_at": "2026-10-08T18:09:19Z", + "published_at": "2026-10-08T18:09:19Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/zodsharp/tarball/v2.0.2", + "zipball_url": "https://api.github.com/repos/purview-dev/zodsharp/zipball/v2.0.2", + "body": "## What's Changed\n* Fix/package identity and build sdk 1.0.4 by @kieronlanning in https://github.com/purview-dev/zodsharp/pull/53\n\n\n**Full Changelog**: https://github.com/purview-dev/zodsharp/compare/v2.0.1.1...v2.0.2", + "mentions_count": 1 + }, + { + "url": "https://api.github.com/repos/purview-dev/zodsharp/releases/406084218", + "assets_url": "https://api.github.com/repos/purview-dev/zodsharp/releases/406084218/assets", + "upload_url": "https://uploads.github.com/repos/purview-dev/zodsharp/releases/406084218/assets{?name,label}", + "html_url": "https://github.com/purview-dev/zodsharp/releases/tag/v2.0.1.1", + "id": 406084218, + "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_kwDOTNzbhc4YNFp6", + "tag_name": "v2.0.1.1", + "target_commitish": "main", + "name": "v2.0.1.1", + "draft": false, + "immutable": false, + "prerelease": false, + "created_at": "2026-10-07T19:12:58Z", + "updated_at": "2026-10-07T19:18:05Z", + "published_at": "2026-10-07T19:18:05Z", + "assets": [], + "tarball_url": "https://api.github.com/repos/purview-dev/zodsharp/tarball/v2.0.1.1", + "zipball_url": "https://api.github.com/repos/purview-dev/zodsharp/zipball/v2.0.1.1", + "body": "## What's Changed\n* fix: nullable scalar support by @kieronlanning in https://github.com/purview-dev/zodsharp/pull/52\n\n\n**Full Changelog**: https://github.com/purview-dev/zodsharp/compare/v2.0.1...v2.0.1.1", + "mentions_count": 1 + }, { "url": "https://api.github.com/repos/purview-dev/zodsharp/releases/405448291", "assets_url": "https://api.github.com/repos/purview-dev/zodsharp/releases/405448291/assets", diff --git a/src/fixtures/github/repos/architests.json b/src/fixtures/github/repos/architests.json new file mode 100644 index 0000000..e78b40b --- /dev/null +++ b/src/fixtures/github/repos/architests.json @@ -0,0 +1,188 @@ +{ + "id": 1421994061, + "node_id": "R_kgDOVMHoTQ", + "name": "architests", + "full_name": "purview-dev/architests", + "private": false, + "owner": { + "login": "purview-dev", + "id": 96894084, + "node_id": "O_kgDOBcZ8hA", + "avatar_url": "https://avatars.githubusercontent.com/u/96894084?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/purview-dev", + "html_url": "https://github.com/purview-dev", + "followers_url": "https://api.github.com/users/purview-dev/followers", + "following_url": "https://api.github.com/users/purview-dev/following{/other_user}", + "gists_url": "https://api.github.com/users/purview-dev/gists{/gist_id}", + "starred_url": "https://api.github.com/users/purview-dev/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/purview-dev/subscriptions", + "organizations_url": "https://api.github.com/users/purview-dev/orgs", + "repos_url": "https://api.github.com/users/purview-dev/repos", + "events_url": "https://api.github.com/users/purview-dev/events{/privacy}", + "received_events_url": "https://api.github.com/users/purview-dev/received_events", + "type": "Organization", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/purview-dev/architests", + "description": ".NET architecture tests driven by a policy file: declare responsibilities and dependency directions, then enforce them as TUnit tests at the project-reference and compiled-assembly level - including composition boundaries, forbidden packages and framework references, cycles, naming, and reviewed waivers.", + "fork": false, + "url": "https://api.github.com/repos/purview-dev/architests", + "forks_url": "https://api.github.com/repos/purview-dev/architests/forks", + "keys_url": "https://api.github.com/repos/purview-dev/architests/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/purview-dev/architests/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/purview-dev/architests/teams", + "hooks_url": "https://api.github.com/repos/purview-dev/architests/hooks", + "issue_events_url": "https://api.github.com/repos/purview-dev/architests/issues/events{/number}", + "events_url": "https://api.github.com/repos/purview-dev/architests/events", + "assignees_url": "https://api.github.com/repos/purview-dev/architests/assignees{/user}", + "branches_url": "https://api.github.com/repos/purview-dev/architests/branches{/branch}", + "tags_url": "https://api.github.com/repos/purview-dev/architests/tags", + "blobs_url": "https://api.github.com/repos/purview-dev/architests/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/purview-dev/architests/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/purview-dev/architests/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/purview-dev/architests/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/purview-dev/architests/statuses/{sha}", + "languages_url": "https://api.github.com/repos/purview-dev/architests/languages", + "stargazers_url": "https://api.github.com/repos/purview-dev/architests/stargazers", + "contributors_url": "https://api.github.com/repos/purview-dev/architests/contributors", + "subscribers_url": "https://api.github.com/repos/purview-dev/architests/subscribers", + "subscription_url": "https://api.github.com/repos/purview-dev/architests/subscription", + "commits_url": "https://api.github.com/repos/purview-dev/architests/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/purview-dev/architests/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/purview-dev/architests/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/purview-dev/architests/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/purview-dev/architests/contents/{+path}", + "compare_url": "https://api.github.com/repos/purview-dev/architests/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/purview-dev/architests/merges", + "archive_url": "https://api.github.com/repos/purview-dev/architests/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/purview-dev/architests/downloads", + "issues_url": "https://api.github.com/repos/purview-dev/architests/issues{/number}", + "pulls_url": "https://api.github.com/repos/purview-dev/architests/pulls{/number}", + "milestones_url": "https://api.github.com/repos/purview-dev/architests/milestones{/number}", + "notifications_url": "https://api.github.com/repos/purview-dev/architests/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/purview-dev/architests/labels{/name}", + "releases_url": "https://api.github.com/repos/purview-dev/architests/releases{/id}", + "deployments_url": "https://api.github.com/repos/purview-dev/architests/deployments", + "created_at": "2026-10-16T10:13:38Z", + "updated_at": "2026-10-16T11:15:39Z", + "pushed_at": "2026-10-16T11:01:17Z", + "git_url": "git://github.com/purview-dev/architests.git", + "ssh_url": "git@github.com:purview-dev/architests.git", + "clone_url": "https://github.com/purview-dev/architests.git", + "svn_url": "https://github.com/purview-dev/architests", + "homepage": "https://purview.dev/projects/architests/", + "size": 214, + "stargazers_count": 0, + "watchers_count": 0, + "language": "C#", + "has_issues": true, + "has_projects": false, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [ + "architecture", + "architecture-tests", + "csharp", + "dependency-rules", + "dotnet", + "nuget", + "roslyn", + "static-analysis", + "tunit" + ], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "main", + "permissions": { + "admin": true, + "maintain": true, + "push": true, + "triage": true, + "pull": true + }, + "temp_clone_token": "", + "allow_squash_merge": true, + "allow_merge_commit": true, + "allow_rebase_merge": true, + "allow_auto_merge": true, + "delete_branch_on_merge": true, + "allow_update_branch": true, + "use_squash_pr_title_as_default": false, + "squash_merge_commit_message": "COMMIT_MESSAGES", + "squash_merge_commit_title": "COMMIT_OR_PR_TITLE", + "merge_commit_message": "PR_TITLE", + "merge_commit_title": "MERGE_MESSAGE", + "custom_properties": {}, + "organization": { + "login": "purview-dev", + "id": 96894084, + "node_id": "O_kgDOBcZ8hA", + "avatar_url": "https://avatars.githubusercontent.com/u/96894084?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/purview-dev", + "html_url": "https://github.com/purview-dev", + "followers_url": "https://api.github.com/users/purview-dev/followers", + "following_url": "https://api.github.com/users/purview-dev/following{/other_user}", + "gists_url": "https://api.github.com/users/purview-dev/gists{/gist_id}", + "starred_url": "https://api.github.com/users/purview-dev/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/purview-dev/subscriptions", + "organizations_url": "https://api.github.com/users/purview-dev/orgs", + "repos_url": "https://api.github.com/users/purview-dev/repos", + "events_url": "https://api.github.com/users/purview-dev/events{/privacy}", + "received_events_url": "https://api.github.com/users/purview-dev/received_events", + "type": "Organization", + "user_view_type": "public", + "site_admin": false + }, + "security_and_analysis": { + "secret_scanning": { + "status": "enabled" + }, + "secret_scanning_push_protection": { + "status": "enabled" + }, + "dependabot_security_updates": { + "status": "disabled" + }, + "secret_scanning_non_provider_patterns": { + "status": "disabled" + }, + "secret_scanning_ai_detection": { + "status": "disabled" + }, + "secret_scanning_validity_checks": { + "status": "disabled" + }, + "secret_scanning_delegated_alert_dismissal": { + "status": "disabled" + }, + "secret_scanning_delegated_bypass": { + "status": "disabled" + } + }, + "network_count": 0, + "subscribers_count": 0 +} diff --git a/src/fixtures/github/repos/aspire-resourcekit.json b/src/fixtures/github/repos/aspire-resourcekit.json index 10ba9e2..2f62cdc 100644 --- a/src/fixtures/github/repos/aspire-resourcekit.json +++ b/src/fixtures/github/repos/aspire-resourcekit.json @@ -66,14 +66,14 @@ "releases_url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/aspire-resourcekit/deployments", "created_at": "2026-07-15T10:09:08Z", - "updated_at": "2026-10-07T07:28:16Z", - "pushed_at": "2026-10-07T07:30:39Z", + "updated_at": "2026-10-16T07:16:07Z", + "pushed_at": "2026-10-16T07:18:43Z", "git_url": "git://github.com/purview-dev/aspire-resourcekit.git", "ssh_url": "git@github.com:purview-dev/aspire-resourcekit.git", "clone_url": "https://github.com/purview-dev/aspire-resourcekit.git", "svn_url": "https://github.com/purview-dev/aspire-resourcekit", "homepage": "https://purview.dev/projects/aspire-resourcekit/", - "size": 4361, + "size": 4403, "stargazers_count": 2, "watchers_count": 2, "language": "C#", diff --git a/src/fixtures/github/repos/aspirec4.json b/src/fixtures/github/repos/aspirec4.json index 0739a75..22bfa56 100644 --- a/src/fixtures/github/repos/aspirec4.json +++ b/src/fixtures/github/repos/aspirec4.json @@ -66,14 +66,14 @@ "releases_url": "https://api.github.com/repos/purview-dev/aspirec4/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/aspirec4/deployments", "created_at": "2026-05-07T22:35:03Z", - "updated_at": "2026-10-07T07:28:42Z", - "pushed_at": "2026-10-07T07:30:09Z", + "updated_at": "2026-10-08T19:16:59Z", + "pushed_at": "2026-10-16T00:05:37Z", "git_url": "git://github.com/purview-dev/aspirec4.git", "ssh_url": "git@github.com:purview-dev/aspirec4.git", "clone_url": "https://github.com/purview-dev/aspirec4.git", "svn_url": "https://github.com/purview-dev/aspirec4", "homepage": "https://purview.dev/projects/aspirec4/", - "size": 10893, + "size": 13819, "stargazers_count": 9, "watchers_count": 9, "language": "C#", diff --git a/src/fixtures/github/repos/build-sdk.json b/src/fixtures/github/repos/build-sdk.json index 4be7815..85a09e7 100644 --- a/src/fixtures/github/repos/build-sdk.json +++ b/src/fixtures/github/repos/build-sdk.json @@ -66,14 +66,14 @@ "releases_url": "https://api.github.com/repos/purview-dev/build-sdk/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/build-sdk/deployments", "created_at": "2026-05-24T14:07:44Z", - "updated_at": "2026-10-06T22:32:50Z", - "pushed_at": "2026-10-06T22:34:03Z", + "updated_at": "2026-10-16T11:10:41Z", + "pushed_at": "2026-10-16T11:10:39Z", "git_url": "git://github.com/purview-dev/build-sdk.git", "ssh_url": "git@github.com:purview-dev/build-sdk.git", "clone_url": "https://github.com/purview-dev/build-sdk.git", "svn_url": "https://github.com/purview-dev/build-sdk", "homepage": "https://purview.dev/projects/build-sdk/", - "size": 1846, + "size": 2436, "stargazers_count": 1, "watchers_count": 1, "language": "C#", diff --git a/src/fixtures/github/repos/build.json b/src/fixtures/github/repos/build.json index 22279f5..6c05184 100644 --- a/src/fixtures/github/repos/build.json +++ b/src/fixtures/github/repos/build.json @@ -66,14 +66,14 @@ "releases_url": "https://api.github.com/repos/purview-dev/build/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/build/deployments", "created_at": "2026-09-01T18:12:54Z", - "updated_at": "2026-10-06T22:37:09Z", - "pushed_at": "2026-10-06T23:21:02Z", + "updated_at": "2026-10-15T16:05:54Z", + "pushed_at": "2026-10-15T16:07:12Z", "git_url": "git://github.com/purview-dev/build.git", "ssh_url": "git@github.com:purview-dev/build.git", "clone_url": "https://github.com/purview-dev/build.git", "svn_url": "https://github.com/purview-dev/build", "homepage": "https://purview.dev/projects/build/", - "size": 506, + "size": 548, "stargazers_count": 1, "watchers_count": 1, "language": "C#", diff --git a/src/fixtures/github/repos/containers.json b/src/fixtures/github/repos/containers.json index 724dea1..f5d0eba 100644 --- a/src/fixtures/github/repos/containers.json +++ b/src/fixtures/github/repos/containers.json @@ -66,14 +66,14 @@ "releases_url": "https://api.github.com/repos/purview-dev/containers/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/containers/deployments", "created_at": "2026-09-30T06:52:40Z", - "updated_at": "2026-10-07T08:30:54Z", - "pushed_at": "2026-10-07T08:30:50Z", + "updated_at": "2026-10-13T11:52:06Z", + "pushed_at": "2026-10-16T12:07:41Z", "git_url": "git://github.com/purview-dev/containers.git", "ssh_url": "git@github.com:purview-dev/containers.git", "clone_url": "https://github.com/purview-dev/containers.git", "svn_url": "https://github.com/purview-dev/containers", "homepage": "https://purview.dev/projects/containers/", - "size": 967, + "size": 586, "stargazers_count": 3, "watchers_count": 3, "language": "C#", @@ -87,7 +87,7 @@ "mirror_url": null, "archived": false, "disabled": false, - "open_issues_count": 0, + "open_issues_count": 1, "license": { "key": "mit", "name": "MIT License", @@ -123,7 +123,7 @@ ], "visibility": "public", "forks": 0, - "open_issues": 0, + "open_issues": 1, "watchers": 3, "default_branch": "main", "permissions": { diff --git a/src/fixtures/github/repos/engineering-playbook.json b/src/fixtures/github/repos/engineering-playbook.json new file mode 100644 index 0000000..29c8d05 --- /dev/null +++ b/src/fixtures/github/repos/engineering-playbook.json @@ -0,0 +1,189 @@ +{ + "id": 1414873127, + "node_id": "R_kgDOVFVAJw", + "name": "engineering-playbook", + "full_name": "purview-dev/engineering-playbook", + "private": false, + "owner": { + "login": "purview-dev", + "id": 96894084, + "node_id": "O_kgDOBcZ8hA", + "avatar_url": "https://avatars.githubusercontent.com/u/96894084?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/purview-dev", + "html_url": "https://github.com/purview-dev", + "followers_url": "https://api.github.com/users/purview-dev/followers", + "following_url": "https://api.github.com/users/purview-dev/following{/other_user}", + "gists_url": "https://api.github.com/users/purview-dev/gists{/gist_id}", + "starred_url": "https://api.github.com/users/purview-dev/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/purview-dev/subscriptions", + "organizations_url": "https://api.github.com/users/purview-dev/orgs", + "repos_url": "https://api.github.com/users/purview-dev/repos", + "events_url": "https://api.github.com/users/purview-dev/events{/privacy}", + "received_events_url": "https://api.github.com/users/purview-dev/received_events", + "type": "Organization", + "user_view_type": "public", + "site_admin": false + }, + "html_url": "https://github.com/purview-dev/engineering-playbook", + "description": "The reusable Purview engineering conventions - repository shape, architecture as tests, verification tiers, contracts and data exchange, testing, and agent enablement.", + "fork": false, + "url": "https://api.github.com/repos/purview-dev/engineering-playbook", + "forks_url": "https://api.github.com/repos/purview-dev/engineering-playbook/forks", + "keys_url": "https://api.github.com/repos/purview-dev/engineering-playbook/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/purview-dev/engineering-playbook/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/purview-dev/engineering-playbook/teams", + "hooks_url": "https://api.github.com/repos/purview-dev/engineering-playbook/hooks", + "issue_events_url": "https://api.github.com/repos/purview-dev/engineering-playbook/issues/events{/number}", + "events_url": "https://api.github.com/repos/purview-dev/engineering-playbook/events", + "assignees_url": "https://api.github.com/repos/purview-dev/engineering-playbook/assignees{/user}", + "branches_url": "https://api.github.com/repos/purview-dev/engineering-playbook/branches{/branch}", + "tags_url": "https://api.github.com/repos/purview-dev/engineering-playbook/tags", + "blobs_url": "https://api.github.com/repos/purview-dev/engineering-playbook/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/purview-dev/engineering-playbook/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/purview-dev/engineering-playbook/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/purview-dev/engineering-playbook/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/purview-dev/engineering-playbook/statuses/{sha}", + "languages_url": "https://api.github.com/repos/purview-dev/engineering-playbook/languages", + "stargazers_url": "https://api.github.com/repos/purview-dev/engineering-playbook/stargazers", + "contributors_url": "https://api.github.com/repos/purview-dev/engineering-playbook/contributors", + "subscribers_url": "https://api.github.com/repos/purview-dev/engineering-playbook/subscribers", + "subscription_url": "https://api.github.com/repos/purview-dev/engineering-playbook/subscription", + "commits_url": "https://api.github.com/repos/purview-dev/engineering-playbook/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/purview-dev/engineering-playbook/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/purview-dev/engineering-playbook/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/purview-dev/engineering-playbook/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/purview-dev/engineering-playbook/contents/{+path}", + "compare_url": "https://api.github.com/repos/purview-dev/engineering-playbook/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/purview-dev/engineering-playbook/merges", + "archive_url": "https://api.github.com/repos/purview-dev/engineering-playbook/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/purview-dev/engineering-playbook/downloads", + "issues_url": "https://api.github.com/repos/purview-dev/engineering-playbook/issues{/number}", + "pulls_url": "https://api.github.com/repos/purview-dev/engineering-playbook/pulls{/number}", + "milestones_url": "https://api.github.com/repos/purview-dev/engineering-playbook/milestones{/number}", + "notifications_url": "https://api.github.com/repos/purview-dev/engineering-playbook/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/purview-dev/engineering-playbook/labels{/name}", + "releases_url": "https://api.github.com/repos/purview-dev/engineering-playbook/releases{/id}", + "deployments_url": "https://api.github.com/repos/purview-dev/engineering-playbook/deployments", + "created_at": "2026-10-12T00:01:55Z", + "updated_at": "2026-10-16T00:04:32Z", + "pushed_at": "2026-10-16T07:01:21Z", + "git_url": "git://github.com/purview-dev/engineering-playbook.git", + "ssh_url": "git@github.com:purview-dev/engineering-playbook.git", + "clone_url": "https://github.com/purview-dev/engineering-playbook.git", + "svn_url": "https://github.com/purview-dev/engineering-playbook", + "homepage": null, + "size": 322, + "stargazers_count": 0, + "watchers_count": 0, + "language": "C#", + "has_issues": true, + "has_projects": true, + "has_downloads": false, + "has_wiki": true, + "has_pages": false, + "has_discussions": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 0, + "license": { + "key": "mit", + "name": "MIT License", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit", + "node_id": "MDc6TGljZW5zZTEz" + }, + "allow_forking": true, + "is_template": false, + "web_commit_signoff_required": false, + "has_pull_requests": true, + "pull_request_creation_policy": "all", + "topics": [ + "architecture-tests", + "best-practices", + "coding-agents", + "conventions", + "csharp", + "documentation", + "dotnet", + "engineering", + "msbuild-sdk", + "tunit" + ], + "visibility": "public", + "forks": 0, + "open_issues": 0, + "watchers": 0, + "default_branch": "main", + "permissions": { + "admin": true, + "maintain": true, + "push": true, + "triage": true, + "pull": true + }, + "temp_clone_token": "", + "allow_squash_merge": true, + "allow_merge_commit": true, + "allow_rebase_merge": true, + "allow_auto_merge": true, + "delete_branch_on_merge": true, + "allow_update_branch": true, + "use_squash_pr_title_as_default": false, + "squash_merge_commit_message": "COMMIT_MESSAGES", + "squash_merge_commit_title": "COMMIT_OR_PR_TITLE", + "merge_commit_message": "PR_TITLE", + "merge_commit_title": "MERGE_MESSAGE", + "custom_properties": {}, + "organization": { + "login": "purview-dev", + "id": 96894084, + "node_id": "O_kgDOBcZ8hA", + "avatar_url": "https://avatars.githubusercontent.com/u/96894084?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/purview-dev", + "html_url": "https://github.com/purview-dev", + "followers_url": "https://api.github.com/users/purview-dev/followers", + "following_url": "https://api.github.com/users/purview-dev/following{/other_user}", + "gists_url": "https://api.github.com/users/purview-dev/gists{/gist_id}", + "starred_url": "https://api.github.com/users/purview-dev/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/purview-dev/subscriptions", + "organizations_url": "https://api.github.com/users/purview-dev/orgs", + "repos_url": "https://api.github.com/users/purview-dev/repos", + "events_url": "https://api.github.com/users/purview-dev/events{/privacy}", + "received_events_url": "https://api.github.com/users/purview-dev/received_events", + "type": "Organization", + "user_view_type": "public", + "site_admin": false + }, + "security_and_analysis": { + "secret_scanning": { + "status": "enabled" + }, + "secret_scanning_push_protection": { + "status": "enabled" + }, + "dependabot_security_updates": { + "status": "disabled" + }, + "secret_scanning_non_provider_patterns": { + "status": "disabled" + }, + "secret_scanning_ai_detection": { + "status": "disabled" + }, + "secret_scanning_validity_checks": { + "status": "disabled" + }, + "secret_scanning_delegated_alert_dismissal": { + "status": "disabled" + }, + "secret_scanning_delegated_bypass": { + "status": "disabled" + } + }, + "network_count": 0, + "subscribers_count": 0 +} diff --git a/src/fixtures/github/repos/results.json b/src/fixtures/github/repos/results.json index 8cc60cd..62ad5ec 100644 --- a/src/fixtures/github/repos/results.json +++ b/src/fixtures/github/repos/results.json @@ -66,14 +66,14 @@ "releases_url": "https://api.github.com/repos/purview-dev/results/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/results/deployments", "created_at": "2026-09-29T23:01:43Z", - "updated_at": "2026-10-07T07:13:09Z", - "pushed_at": "2026-10-07T07:15:05Z", + "updated_at": "2026-10-16T10:33:55Z", + "pushed_at": "2026-10-16T10:36:06Z", "git_url": "git://github.com/purview-dev/results.git", "ssh_url": "git@github.com:purview-dev/results.git", "clone_url": "https://github.com/purview-dev/results.git", "svn_url": "https://github.com/purview-dev/results", "homepage": "https://purview.dev/projects/results/", - "size": 789, + "size": 520, "stargazers_count": 1, "watchers_count": 1, "language": "C#", diff --git a/src/fixtures/github/repos/sourcegenerator-framework.json b/src/fixtures/github/repos/sourcegenerator-framework.json index fcba66e..e044676 100644 --- a/src/fixtures/github/repos/sourcegenerator-framework.json +++ b/src/fixtures/github/repos/sourcegenerator-framework.json @@ -66,16 +66,16 @@ "releases_url": "https://api.github.com/repos/purview-dev/sourcegenerator-framework/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/sourcegenerator-framework/deployments", "created_at": "2026-08-06T12:26:03Z", - "updated_at": "2026-10-06T22:47:00Z", - "pushed_at": "2026-10-06T22:51:55Z", + "updated_at": "2026-10-15T23:29:41Z", + "pushed_at": "2026-10-15T23:36:46Z", "git_url": "git://github.com/purview-dev/sourcegenerator-framework.git", "ssh_url": "git@github.com:purview-dev/sourcegenerator-framework.git", "clone_url": "https://github.com/purview-dev/sourcegenerator-framework.git", "svn_url": "https://github.com/purview-dev/sourcegenerator-framework", "homepage": "https://purview.dev/projects/sourcegenerator-framework/", - "size": 8568, - "stargazers_count": 2, - "watchers_count": 2, + "size": 8757, + "stargazers_count": 3, + "watchers_count": 3, "language": "C#", "has_issues": true, "has_projects": false, @@ -121,7 +121,7 @@ "visibility": "public", "forks": 0, "open_issues": 0, - "watchers": 2, + "watchers": 3, "default_branch": "main", "permissions": { "admin": true, diff --git a/src/fixtures/github/repos/telemetry-sourcegenerator.json b/src/fixtures/github/repos/telemetry-sourcegenerator.json index b3db7b5..73579f1 100644 --- a/src/fixtures/github/repos/telemetry-sourcegenerator.json +++ b/src/fixtures/github/repos/telemetry-sourcegenerator.json @@ -66,16 +66,16 @@ "releases_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/telemetry-sourcegenerator/deployments", "created_at": "2024-03-04T18:31:56Z", - "updated_at": "2026-10-07T07:00:07Z", - "pushed_at": "2026-10-07T07:04:38Z", + "updated_at": "2026-10-15T23:49:42Z", + "pushed_at": "2026-10-15T23:55:32Z", "git_url": "git://github.com/purview-dev/telemetry-sourcegenerator.git", "ssh_url": "git@github.com:purview-dev/telemetry-sourcegenerator.git", "clone_url": "https://github.com/purview-dev/telemetry-sourcegenerator.git", "svn_url": "https://github.com/purview-dev/telemetry-sourcegenerator", "homepage": "https://purview.dev/projects/telemetry-sourcegenerator/", - "size": 7630, - "stargazers_count": 35, - "watchers_count": 35, + "size": 7740, + "stargazers_count": 36, + "watchers_count": 36, "language": "C#", "has_issues": true, "has_projects": false, @@ -125,7 +125,7 @@ "visibility": "public", "forks": 2, "open_issues": 0, - "watchers": 35, + "watchers": 36, "default_branch": "main", "permissions": { "admin": true, diff --git a/src/fixtures/github/repos/value-objects.json b/src/fixtures/github/repos/value-objects.json index 282c1fa..a129cfc 100644 --- a/src/fixtures/github/repos/value-objects.json +++ b/src/fixtures/github/repos/value-objects.json @@ -66,14 +66,14 @@ "releases_url": "https://api.github.com/repos/purview-dev/value-objects/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/value-objects/deployments", "created_at": "2026-09-18T15:09:15Z", - "updated_at": "2026-10-07T06:54:13Z", - "pushed_at": "2026-10-07T06:56:37Z", + "updated_at": "2026-10-16T10:16:43Z", + "pushed_at": "2026-10-16T10:20:14Z", "git_url": "git://github.com/purview-dev/value-objects.git", "ssh_url": "git@github.com:purview-dev/value-objects.git", "clone_url": "https://github.com/purview-dev/value-objects.git", "svn_url": "https://github.com/purview-dev/value-objects", "homepage": "https://purview.dev/projects/value-objects/", - "size": 646, + "size": 664, "stargazers_count": 1, "watchers_count": 1, "language": "C#", diff --git a/src/fixtures/github/repos/zodsharp.json b/src/fixtures/github/repos/zodsharp.json index dac6940..abd9fea 100644 --- a/src/fixtures/github/repos/zodsharp.json +++ b/src/fixtures/github/repos/zodsharp.json @@ -66,14 +66,14 @@ "releases_url": "https://api.github.com/repos/purview-dev/zodsharp/releases{/id}", "deployments_url": "https://api.github.com/repos/purview-dev/zodsharp/deployments", "created_at": "2026-07-04T22:19:44Z", - "updated_at": "2026-10-07T06:24:39Z", - "pushed_at": "2026-10-07T06:29:48Z", + "updated_at": "2026-10-16T09:58:01Z", + "pushed_at": "2026-10-16T10:03:37Z", "git_url": "git://github.com/purview-dev/zodsharp.git", "ssh_url": "git@github.com:purview-dev/zodsharp.git", "clone_url": "https://github.com/purview-dev/zodsharp.git", "svn_url": "https://github.com/purview-dev/zodsharp", "homepage": "https://purview.dev/projects/zodsharp/", - "size": 1123, + "size": 1306, "stargazers_count": 1, "watchers_count": 1, "language": "C#", diff --git a/src/fixtures/nuget/nuspec/purview.architecture.testing.nuspec b/src/fixtures/nuget/nuspec/purview.architecture.testing.nuspec new file mode 100644 index 0000000..418cb10 --- /dev/null +++ b/src/fixtures/nuget/nuspec/purview.architecture.testing.nuspec @@ -0,0 +1,25 @@ + + + + Purview.Architecture.Testing + 1.1.1 + Purview Architecture Testing + Kieron Lanning + MIT + https://licenses.nuget.org/MIT + purview-logo-light.png + README.md + https://purview.dev/projects/architests/ + Enforces a repository's architecture policy as TUnit tests: project and type-level dependency direction, sibling independence, composition boundaries, forbidden packages and framework references, cycles and naming. Ships the policy JSON Schema and a TUnit base class, so a consuming repository adds a policy file and one derived test class. + Copyright © 2026 Purview-Dev + architecture architecture-tests dependency-rules dependency-matrix type-level-dependencies tunit policy purview dotnet testing + + + + + + + + + + \ No newline at end of file diff --git a/src/fixtures/nuget/nuspec/purview.aspire.resourcekit.nuspec b/src/fixtures/nuget/nuspec/purview.aspire.resourcekit.nuspec index 083ee4a..973e24f 100644 --- a/src/fixtures/nuget/nuspec/purview.aspire.resourcekit.nuspec +++ b/src/fixtures/nuget/nuspec/purview.aspire.resourcekit.nuspec @@ -2,7 +2,7 @@ Purview.Aspire.ResourceKit - 1.0.0.1 + 1.0.1 Purview Aspire ResourceKit Purview Contributors MIT @@ -12,22 +12,22 @@ https://purview.dev/projects/aspire-resourcekit/ Composable and test-friendly Aspire resource isolation model for local, running, and publishing modes. aspire resource-kit apphost testing - + - - - + + + - - - + + + - - - + + + diff --git a/src/fixtures/nuget/nuspec/purview.build.nuspec b/src/fixtures/nuget/nuspec/purview.build.nuspec index 3b311fa..8064fa1 100644 --- a/src/fixtures/nuget/nuspec/purview.build.nuspec +++ b/src/fixtures/nuget/nuspec/purview.build.nuspec @@ -2,7 +2,7 @@ Purview.Build - 0.4.0 + 0.5.4 Purview Contributors MIT https://licenses.nuget.org/MIT @@ -13,6 +13,6 @@ - + \ No newline at end of file diff --git a/src/fixtures/nuget/nuspec/purview.buildsdk.nuspec b/src/fixtures/nuget/nuspec/purview.buildsdk.nuspec index 40aa7a3..7b3e6eb 100644 --- a/src/fixtures/nuget/nuspec/purview.buildsdk.nuspec +++ b/src/fixtures/nuget/nuspec/purview.buildsdk.nuspec @@ -2,7 +2,7 @@ Purview.BuildSdk - 1.0.3 + 1.0.7 Purview.BuildSdk MIT https://licenses.nuget.org/MIT @@ -14,7 +14,7 @@ - + diff --git a/src/fixtures/nuget/nuspec/purview.results.aspnetcore.nuspec b/src/fixtures/nuget/nuspec/purview.results.aspnetcore.nuspec index 224ae31..a770a93 100644 --- a/src/fixtures/nuget/nuspec/purview.results.aspnetcore.nuspec +++ b/src/fixtures/nuget/nuspec/purview.results.aspnetcore.nuspec @@ -2,7 +2,7 @@ Purview.Results.AspNetCore - 1.0.0 + 1.0.2 Purview Results ASP.NET Core Kieron Lanning MIT @@ -13,13 +13,13 @@ Maps Purview.Results results onto ASP.NET Core responses, including ProblemDetails for expected failures. Copyright © 2026 Purview-Dev results result aspnetcore problemdetails minimal-api purview - + - + - + diff --git a/src/fixtures/nuget/nuspec/purview.results.nuspec b/src/fixtures/nuget/nuspec/purview.results.nuspec index d1e6dcd..63d86be 100644 --- a/src/fixtures/nuget/nuspec/purview.results.nuspec +++ b/src/fixtures/nuget/nuspec/purview.results.nuspec @@ -2,7 +2,7 @@ Purview.Results - 1.0.0 + 1.0.2 Purview Results Kieron Lanning MIT @@ -13,7 +13,7 @@ Dependency-free Result<TValue, TError> for .NET, with C# 15 union ergonomics for its error cases and integrations that let expected failures flow through a value instead of an exception. Copyright © 2026 Purview-Dev results result railway error-handling union unions csharp-15 net11 purview - + diff --git a/src/fixtures/nuget/nuspec/purview.results.zodsharp.aspnetcore.nuspec b/src/fixtures/nuget/nuspec/purview.results.zodsharp.aspnetcore.nuspec index ea29dc1..2aa2250 100644 --- a/src/fixtures/nuget/nuspec/purview.results.zodsharp.aspnetcore.nuspec +++ b/src/fixtures/nuget/nuspec/purview.results.zodsharp.aspnetcore.nuspec @@ -2,7 +2,7 @@ Purview.Results.ZodSharp.AspNetCore - 1.0.0 + 1.0.2 Purview Results ZodSharp ASP.NET Core Kieron Lanning MIT @@ -13,19 +13,19 @@ Maps Purview result failures that carry ZodSharp validation errors onto ASP.NET Core HttpValidationProblemDetails responses. Copyright © 2026 Purview-Dev results result aspnetcore problemdetails validation zod purview - + - - - - + + + + - - - - + + + + diff --git a/src/fixtures/nuget/nuspec/purview.results.zodsharp.nuspec b/src/fixtures/nuget/nuspec/purview.results.zodsharp.nuspec index 6aaa1ed..c664943 100644 --- a/src/fixtures/nuget/nuspec/purview.results.zodsharp.nuspec +++ b/src/fixtures/nuget/nuspec/purview.results.zodsharp.nuspec @@ -2,7 +2,7 @@ Purview.Results.ZodSharp - 1.0.0 + 1.0.2 Purview Results ZodSharp Kieron Lanning MIT @@ -13,15 +13,15 @@ Bridges ZodSharp ValidationResult<T> values into Purview.Results, so validation outcomes flow through the result pipeline as ordinary error values instead of exceptions. Copyright © 2026 Purview-Dev results result validation zod zodsharp purview - + - - + + - - + + diff --git a/src/fixtures/nuget/nuspec/purview.sourcegeneratorframework.nuspec b/src/fixtures/nuget/nuspec/purview.sourcegeneratorframework.nuspec index 852fd74..0c9ebf8 100644 --- a/src/fixtures/nuget/nuspec/purview.sourcegeneratorframework.nuspec +++ b/src/fixtures/nuget/nuspec/purview.sourcegeneratorframework.nuspec @@ -2,7 +2,7 @@ Purview.SourceGeneratorFramework - 1.0.0 + 1.1.1 Purview Contributors MIT https://licenses.nuget.org/MIT @@ -10,7 +10,7 @@ README.md https://purview.dev/projects/sourcegenerator-framework/ Purview SourceGeneratorFramework libraries for building and testing incremental C# source generators. - + diff --git a/src/fixtures/nuget/nuspec/purview.sourcegeneratorframework.testing.nuspec b/src/fixtures/nuget/nuspec/purview.sourcegeneratorframework.testing.nuspec index 5c0db06..607563f 100644 --- a/src/fixtures/nuget/nuspec/purview.sourcegeneratorframework.testing.nuspec +++ b/src/fixtures/nuget/nuspec/purview.sourcegeneratorframework.testing.nuspec @@ -2,7 +2,7 @@ Purview.SourceGeneratorFramework.Testing - 1.0.0 + 1.1.1 Purview Contributors MIT https://licenses.nuget.org/MIT @@ -10,17 +10,17 @@ README.md https://purview.dev/projects/sourcegenerator-framework/ Purview SourceGeneratorFramework libraries for building and testing incremental C# source generators. - + - + - + @@ -29,7 +29,7 @@ - + @@ -38,7 +38,7 @@ - + diff --git a/src/fixtures/nuget/nuspec/purview.sourcegeneratorframework.testing.tunit.nuspec b/src/fixtures/nuget/nuspec/purview.sourcegeneratorframework.testing.tunit.nuspec index 90cfd0d..d5c5f30 100644 --- a/src/fixtures/nuget/nuspec/purview.sourcegeneratorframework.testing.tunit.nuspec +++ b/src/fixtures/nuget/nuspec/purview.sourcegeneratorframework.testing.tunit.nuspec @@ -2,7 +2,7 @@ Purview.SourceGeneratorFramework.Testing.TUnit - 1.0.0 + 1.1.1 Purview Contributors MIT https://licenses.nuget.org/MIT @@ -10,21 +10,21 @@ README.md https://purview.dev/projects/sourcegenerator-framework/ Purview SourceGeneratorFramework libraries for building and testing incremental C# source generators. - + - - - + + + - - - + + + @@ -33,9 +33,9 @@ - - - + + + @@ -44,9 +44,9 @@ - - - + + + diff --git a/src/fixtures/nuget/nuspec/purview.telemetry.sourcegenerator.nuspec b/src/fixtures/nuget/nuspec/purview.telemetry.sourcegenerator.nuspec index a4ee43d..c25ee29 100644 --- a/src/fixtures/nuget/nuspec/purview.telemetry.sourcegenerator.nuspec +++ b/src/fixtures/nuget/nuspec/purview.telemetry.sourcegenerator.nuspec @@ -2,7 +2,7 @@ Purview.Telemetry.SourceGenerator - 5.0.1 + 5.0.4 Purview Telemetry Source Generator Kieron Lanning MIT @@ -13,7 +13,7 @@ .NET Source Generator for interface-based telemetry generating tracing, logs, and metrics. Copyright © 2026 Purview-Dev logs log logger logging source-generator high-performance-logging otel open-telemetry telemetry traces tracing metric metrics meter meters instrumentation instruments events distributed-traces distributed-tracing melt dotnet aspnet - + diff --git a/src/fixtures/nuget/nuspec/purview.valueobjects.nuspec b/src/fixtures/nuget/nuspec/purview.valueobjects.nuspec index 9821228..4110f0a 100644 --- a/src/fixtures/nuget/nuspec/purview.valueobjects.nuspec +++ b/src/fixtures/nuget/nuspec/purview.valueobjects.nuspec @@ -2,7 +2,7 @@ Purview.ValueObjects - 1.0.0 + 1.1.0 Purview Value Objects Kieron Lanning MIT @@ -10,10 +10,10 @@ purview-logo-light.png README.md https://purview.dev/projects/value-objects/ - Source-generated scalar and complex value objects for .NET. Brings F#-style single-case types to C# with Create/Hydrate factories, normalization, validation, equality, comparison, implicit conversions, and JSON serialization for DTOs, Entity Framework, and domain models. + Source-generated scalar and complex value objects for .NET. Brings F#-style single-case types to C# with Create/Hydrate factories, normalization, validation, equality, comparison, implicit conversions, JSON serialization, and the underlying value's formatting and parsing interfaces for DTOs, Entity Framework, and domain models. Copyright © 2026 Purview-Dev - purview dotnet value-objects value-object scalar source-generator domain-driven-design dto serialization json entity-framework - + purview dotnet value-objects value-object scalar source-generator domain-driven-design dto serialization json entity-framework formatting parsing + diff --git a/src/fixtures/nuget/nuspec/purview.zodsharp.aspnetcore.nuspec b/src/fixtures/nuget/nuspec/purview.zodsharp.aspnetcore.nuspec index 2c8ed41..f080178 100644 --- a/src/fixtures/nuget/nuspec/purview.zodsharp.aspnetcore.nuspec +++ b/src/fixtures/nuget/nuspec/purview.zodsharp.aspnetcore.nuspec @@ -2,7 +2,7 @@ Purview.ZodSharp.AspNetCore - 2.0.1 + 2.1.0 ZodSharp Contributors,Purview-Dev Contributors MIT https://licenses.nuget.org/MIT @@ -11,19 +11,19 @@ https://purview.dev/projects/zodsharp/ ASP.NET Core ProblemDetails integration for ZodSharp validation results. zod validation aspnetcore problemdetails - + - + - + - + - + diff --git a/src/fixtures/nuget/nuspec/purview.zodsharp.newtonsoftjson.nuspec b/src/fixtures/nuget/nuspec/purview.zodsharp.newtonsoftjson.nuspec index f415562..74be50d 100644 --- a/src/fixtures/nuget/nuspec/purview.zodsharp.newtonsoftjson.nuspec +++ b/src/fixtures/nuget/nuspec/purview.zodsharp.newtonsoftjson.nuspec @@ -2,7 +2,7 @@ Purview.ZodSharp.NewtonsoftJson - 2.0.1 + 2.1.0 ZodSharp Contributors,Purview-Dev Contributors MIT https://licenses.nuget.org/MIT @@ -11,26 +11,26 @@ https://purview.dev/projects/zodsharp/ A high-performance C# port of Zod schema validation library. Features zero-allocation validation, struct-based rules, fluent API, and source generator support for maximum performance. zod validation schema json - + - + - - + + - + - + - + diff --git a/src/fixtures/nuget/nuspec/purview.zodsharp.nuspec b/src/fixtures/nuget/nuspec/purview.zodsharp.nuspec index 9d6fd5b..492b3ef 100644 --- a/src/fixtures/nuget/nuspec/purview.zodsharp.nuspec +++ b/src/fixtures/nuget/nuspec/purview.zodsharp.nuspec @@ -2,7 +2,7 @@ Purview.ZodSharp - 2.0.1 + 2.1.0 ZodSharp Contributors,Purview-Dev Contributors MIT https://licenses.nuget.org/MIT @@ -13,11 +13,11 @@ Features zero-allocation validation, struct-based rules, fluent API, and source generator support for maximum performance. zod validation schema - + - - + + diff --git a/src/fixtures/nuget/nuspec/purview.zodsharp.systemtextjson.nuspec b/src/fixtures/nuget/nuspec/purview.zodsharp.systemtextjson.nuspec index 20fae63..a01d25f 100644 --- a/src/fixtures/nuget/nuspec/purview.zodsharp.systemtextjson.nuspec +++ b/src/fixtures/nuget/nuspec/purview.zodsharp.systemtextjson.nuspec @@ -2,7 +2,7 @@ Purview.ZodSharp.SystemTextJson - 2.0.1 + 2.1.0 ZodSharp Contributors,Purview-Dev Contributors MIT https://licenses.nuget.org/MIT @@ -11,23 +11,23 @@ https://purview.dev/projects/zodsharp/ A high-performance C# port of Zod schema validation library. Features zero-allocation validation, struct-based rules, fluent API, and source generator support for maximum performance. zod validation schema json - + - - - + + + - + - + - + diff --git a/src/fixtures/nuget/purview.architecture.testing.json b/src/fixtures/nuget/purview.architecture.testing.json new file mode 100644 index 0000000..4ec05d6 --- /dev/null +++ b/src/fixtures/nuget/purview.architecture.testing.json @@ -0,0 +1,7 @@ +{ + "versions": [ + "1.0.6", + "1.1.0", + "1.1.1" + ] +} diff --git a/src/fixtures/nuget/purview.aspire.resourcekit.json b/src/fixtures/nuget/purview.aspire.resourcekit.json index af09c88..7a1ce5d 100644 --- a/src/fixtures/nuget/purview.aspire.resourcekit.json +++ b/src/fixtures/nuget/purview.aspire.resourcekit.json @@ -42,6 +42,7 @@ "1.0.0-prerelease.40", "1.0.0-prerelease.41", "1.0.0", - "1.0.0.1" + "1.0.0.1", + "1.0.1" ] } diff --git a/src/fixtures/nuget/purview.build.json b/src/fixtures/nuget/purview.build.json index d83907d..7f6764a 100644 --- a/src/fixtures/nuget/purview.build.json +++ b/src/fixtures/nuget/purview.build.json @@ -12,6 +12,10 @@ "0.3.4", "0.3.5", "0.3.6", - "0.4.0" + "0.4.0", + "0.5.1", + "0.5.2", + "0.5.3", + "0.5.4" ] } diff --git a/src/fixtures/nuget/purview.buildsdk.json b/src/fixtures/nuget/purview.buildsdk.json index 4a5fb38..4f310eb 100644 --- a/src/fixtures/nuget/purview.buildsdk.json +++ b/src/fixtures/nuget/purview.buildsdk.json @@ -10,6 +10,11 @@ "1.0.2", "1.0.2.1", "1.0.2.2", - "1.0.3" + "1.0.3", + "1.0.3.1", + "1.0.4", + "1.0.5", + "1.0.6", + "1.0.7" ] } diff --git a/src/fixtures/nuget/purview.results.aspnetcore.json b/src/fixtures/nuget/purview.results.aspnetcore.json index 6221fea..3db63ee 100644 --- a/src/fixtures/nuget/purview.results.aspnetcore.json +++ b/src/fixtures/nuget/purview.results.aspnetcore.json @@ -2,6 +2,8 @@ "versions": [ "1.0.0-prerelease.1", "1.0.0-prerelease.2", - "1.0.0" + "1.0.0", + "1.0.0.1", + "1.0.2" ] } diff --git a/src/fixtures/nuget/purview.results.json b/src/fixtures/nuget/purview.results.json index 6221fea..3db63ee 100644 --- a/src/fixtures/nuget/purview.results.json +++ b/src/fixtures/nuget/purview.results.json @@ -2,6 +2,8 @@ "versions": [ "1.0.0-prerelease.1", "1.0.0-prerelease.2", - "1.0.0" + "1.0.0", + "1.0.0.1", + "1.0.2" ] } diff --git a/src/fixtures/nuget/purview.results.zodsharp.aspnetcore.json b/src/fixtures/nuget/purview.results.zodsharp.aspnetcore.json index 6221fea..3db63ee 100644 --- a/src/fixtures/nuget/purview.results.zodsharp.aspnetcore.json +++ b/src/fixtures/nuget/purview.results.zodsharp.aspnetcore.json @@ -2,6 +2,8 @@ "versions": [ "1.0.0-prerelease.1", "1.0.0-prerelease.2", - "1.0.0" + "1.0.0", + "1.0.0.1", + "1.0.2" ] } diff --git a/src/fixtures/nuget/purview.results.zodsharp.json b/src/fixtures/nuget/purview.results.zodsharp.json index 6221fea..3db63ee 100644 --- a/src/fixtures/nuget/purview.results.zodsharp.json +++ b/src/fixtures/nuget/purview.results.zodsharp.json @@ -2,6 +2,8 @@ "versions": [ "1.0.0-prerelease.1", "1.0.0-prerelease.2", - "1.0.0" + "1.0.0", + "1.0.0.1", + "1.0.2" ] } diff --git a/src/fixtures/nuget/purview.sourcegeneratorframework.json b/src/fixtures/nuget/purview.sourcegeneratorframework.json index 318ffda..55683b6 100644 --- a/src/fixtures/nuget/purview.sourcegeneratorframework.json +++ b/src/fixtures/nuget/purview.sourcegeneratorframework.json @@ -53,6 +53,8 @@ "1.0.0-prerelease.52", "1.0.0-prerelease.53", "1.0.0-prerelease.54", - "1.0.0" + "1.0.0", + "1.1.0", + "1.1.1" ] } diff --git a/src/fixtures/nuget/purview.sourcegeneratorframework.testing.json b/src/fixtures/nuget/purview.sourcegeneratorframework.testing.json index 318ffda..55683b6 100644 --- a/src/fixtures/nuget/purview.sourcegeneratorframework.testing.json +++ b/src/fixtures/nuget/purview.sourcegeneratorframework.testing.json @@ -53,6 +53,8 @@ "1.0.0-prerelease.52", "1.0.0-prerelease.53", "1.0.0-prerelease.54", - "1.0.0" + "1.0.0", + "1.1.0", + "1.1.1" ] } diff --git a/src/fixtures/nuget/purview.sourcegeneratorframework.testing.tunit.json b/src/fixtures/nuget/purview.sourcegeneratorframework.testing.tunit.json index 318ffda..55683b6 100644 --- a/src/fixtures/nuget/purview.sourcegeneratorframework.testing.tunit.json +++ b/src/fixtures/nuget/purview.sourcegeneratorframework.testing.tunit.json @@ -53,6 +53,8 @@ "1.0.0-prerelease.52", "1.0.0-prerelease.53", "1.0.0-prerelease.54", - "1.0.0" + "1.0.0", + "1.1.0", + "1.1.1" ] } diff --git a/src/fixtures/nuget/purview.telemetry.sourcegenerator.json b/src/fixtures/nuget/purview.telemetry.sourcegenerator.json index f06702e..4cdf88f 100644 --- a/src/fixtures/nuget/purview.telemetry.sourcegenerator.json +++ b/src/fixtures/nuget/purview.telemetry.sourcegenerator.json @@ -67,6 +67,9 @@ "5.0.0-prerelease.18", "5.0.0-prerelease.19", "5.0.0", - "5.0.1" + "5.0.1", + "5.0.2", + "5.0.3", + "5.0.4" ] } diff --git a/src/fixtures/nuget/purview.valueobjects.json b/src/fixtures/nuget/purview.valueobjects.json index 690e2d8..cf3c6f8 100644 --- a/src/fixtures/nuget/purview.valueobjects.json +++ b/src/fixtures/nuget/purview.valueobjects.json @@ -11,6 +11,8 @@ "1.0.0-prerelease.9", "1.0.0-prerelease.10", "1.0.0-prerelease.11", - "1.0.0" + "1.0.0", + "1.0.1", + "1.1.0" ] } diff --git a/src/fixtures/nuget/purview.zodsharp.aspnetcore.json b/src/fixtures/nuget/purview.zodsharp.aspnetcore.json index 6520603..59fb7fa 100644 --- a/src/fixtures/nuget/purview.zodsharp.aspnetcore.json +++ b/src/fixtures/nuget/purview.zodsharp.aspnetcore.json @@ -29,6 +29,9 @@ "2.0.0-prerelease.27", "2.0.0-prerelease.28", "2.0.0", - "2.0.1" + "2.0.1", + "2.0.1.1", + "2.0.2", + "2.1.0" ] } diff --git a/src/fixtures/nuget/purview.zodsharp.json b/src/fixtures/nuget/purview.zodsharp.json index 6520603..59fb7fa 100644 --- a/src/fixtures/nuget/purview.zodsharp.json +++ b/src/fixtures/nuget/purview.zodsharp.json @@ -29,6 +29,9 @@ "2.0.0-prerelease.27", "2.0.0-prerelease.28", "2.0.0", - "2.0.1" + "2.0.1", + "2.0.1.1", + "2.0.2", + "2.1.0" ] } diff --git a/src/fixtures/nuget/purview.zodsharp.newtonsoftjson.json b/src/fixtures/nuget/purview.zodsharp.newtonsoftjson.json index 6520603..59fb7fa 100644 --- a/src/fixtures/nuget/purview.zodsharp.newtonsoftjson.json +++ b/src/fixtures/nuget/purview.zodsharp.newtonsoftjson.json @@ -29,6 +29,9 @@ "2.0.0-prerelease.27", "2.0.0-prerelease.28", "2.0.0", - "2.0.1" + "2.0.1", + "2.0.1.1", + "2.0.2", + "2.1.0" ] } diff --git a/src/fixtures/nuget/purview.zodsharp.systemtextjson.json b/src/fixtures/nuget/purview.zodsharp.systemtextjson.json index 6520603..59fb7fa 100644 --- a/src/fixtures/nuget/purview.zodsharp.systemtextjson.json +++ b/src/fixtures/nuget/purview.zodsharp.systemtextjson.json @@ -29,6 +29,9 @@ "2.0.0-prerelease.27", "2.0.0-prerelease.28", "2.0.0", - "2.0.1" + "2.0.1", + "2.0.1.1", + "2.0.2", + "2.1.0" ] } diff --git a/src/fixtures/nuget/search/Purview.Architecture.Testing.json b/src/fixtures/nuget/search/Purview.Architecture.Testing.json new file mode 100644 index 0000000..356547e --- /dev/null +++ b/src/fixtures/nuget/search/Purview.Architecture.Testing.json @@ -0,0 +1,65 @@ +{ + "@context": { + "@vocab": "http://schema.nuget.org/schema#", + "@base": "https://api.nuget.org/v3/registration5-semver1/" + }, + "totalHits": 1, + "data": [ + { + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.architecture.testing/index.json", + "@type": "Package", + "registration": "https://api.nuget.org/v3/registration5-semver1/purview.architecture.testing/index.json", + "id": "Purview.Architecture.Testing", + "version": "1.1.1", + "description": "Enforces a repository's architecture policy as TUnit tests: project and type-level dependency direction, sibling independence, composition boundaries, forbidden packages and framework references, cycles and naming. Ships the policy JSON Schema and a TUnit base class, so a consuming repository adds a policy file and one derived test class.", + "summary": "", + "title": "Purview Architecture Testing", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.architecture.testing/1.1.1/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.Architecture.Testing/1.1.1/license", + "projectUrl": "https://purview.dev/projects/architests/", + "tags": [ + "architecture", + "architecture-tests", + "dependency-rules", + "dependency-matrix", + "type-level-dependencies", + "tunit", + "policy", + "purview", + "dotnet", + "testing" + ], + "authors": [ + "Kieron Lanning" + ], + "owners": [ + "kieronlanning" + ], + "totalDownloads": 0, + "verified": false, + "packageTypes": [ + { + "name": "Dependency" + } + ], + "versions": [ + { + "version": "1.0.6", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.architecture.testing/1.0.6.json" + }, + { + "version": "1.1.0", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.architecture.testing/1.1.0.json" + }, + { + "version": "1.1.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.architecture.testing/1.1.1.json" + } + ], + "vulnerabilities": [] + } + ] +} diff --git a/src/fixtures/nuget/search/Purview.Aspire.ResourceKit.json b/src/fixtures/nuget/search/Purview.Aspire.ResourceKit.json index 109dd57..28ea9ec 100644 --- a/src/fixtures/nuget/search/Purview.Aspire.ResourceKit.json +++ b/src/fixtures/nuget/search/Purview.Aspire.ResourceKit.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.aspire.resourcekit/index.json", "id": "Purview.Aspire.ResourceKit", - "version": "1.0.0.1", + "version": "1.0.1", "description": "Composable and test-friendly Aspire resource isolation model for local, running, and publishing modes.", "summary": "", "title": "Purview Aspire ResourceKit", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.aspire.resourcekit/1.0.0.1/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.Aspire.ResourceKit/1.0.0.1/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.aspire.resourcekit/1.0.1/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.Aspire.ResourceKit/1.0.1/license", "projectUrl": "https://purview.dev/projects/aspire-resourcekit/", "tags": [ "aspire", @@ -46,6 +46,11 @@ "version": "1.0.0.1", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.aspire.resourcekit/1.0.0.1.json" + }, + { + "version": "1.0.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.aspire.resourcekit/1.0.1.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.Build.json b/src/fixtures/nuget/search/Purview.Build.json index 663ea74..4db6fa5 100644 --- a/src/fixtures/nuget/search/Purview.Build.json +++ b/src/fixtures/nuget/search/Purview.Build.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.build/index.json", "id": "Purview.Build", - "version": "0.4.0", + "version": "0.5.4", "description": "Shared build/test/release pipeline for purview-dev. A Modular Pipelines based .NET tool (Purview.Build) with a GitHub composite action and reusable workflows; consumers configure, the pipeline runs.", "summary": "", "title": "Purview.Build", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.build/0.4.0/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.Build/0.4.0/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.build/0.5.4/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.Build/0.5.4/license", "projectUrl": "https://purview.dev/projects/build/", "tags": [], "authors": [ @@ -96,6 +96,26 @@ "version": "0.4.0", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.build/0.4.0.json" + }, + { + "version": "0.5.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.build/0.5.1.json" + }, + { + "version": "0.5.2", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.build/0.5.2.json" + }, + { + "version": "0.5.3", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.build/0.5.3.json" + }, + { + "version": "0.5.4", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.build/0.5.4.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.BuildSdk.json b/src/fixtures/nuget/search/Purview.BuildSdk.json index 922f57a..d0e0549 100644 --- a/src/fixtures/nuget/search/Purview.BuildSdk.json +++ b/src/fixtures/nuget/search/Purview.BuildSdk.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.buildsdk/index.json", "id": "Purview.BuildSdk", - "version": "1.0.3", + "version": "1.0.7", "description": "A reusable MSBuild SDK that provides standardised .NET project defaults, code style enforcement, configurable testing framework wiring (TUnit, Xunit, or None), mocking provider wiring (TUnitMocks, NSubstitute, or None), and Central Package Management integration. Drop in via Directory.Build.props to apply uniformly across every project in a repo.", "summary": "", "title": "Purview.BuildSdk", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.buildsdk/1.0.3/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.BuildSdk/1.0.3/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.buildsdk/1.0.7/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.BuildSdk/1.0.7/license", "projectUrl": "https://purview.dev/projects/build-sdk/", "tags": [ "msbuild", @@ -72,6 +72,31 @@ "version": "1.0.3", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.buildsdk/1.0.3.json" + }, + { + "version": "1.0.3.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.buildsdk/1.0.3.1.json" + }, + { + "version": "1.0.4", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.buildsdk/1.0.4.json" + }, + { + "version": "1.0.5", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.buildsdk/1.0.5.json" + }, + { + "version": "1.0.6", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.buildsdk/1.0.6.json" + }, + { + "version": "1.0.7", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.buildsdk/1.0.7.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.Results.AspNetCore.json b/src/fixtures/nuget/search/Purview.Results.AspNetCore.json index c321974..84819f6 100644 --- a/src/fixtures/nuget/search/Purview.Results.AspNetCore.json +++ b/src/fixtures/nuget/search/Purview.Results.AspNetCore.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.results.aspnetcore/index.json", "id": "Purview.Results.AspNetCore", - "version": "1.0.0", + "version": "1.0.2", "description": "Maps Purview.Results results onto ASP.NET Core responses, including ProblemDetails for expected failures.", "summary": "", "title": "Purview Results ASP.NET Core", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.results.aspnetcore/1.0.0/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.Results.AspNetCore/1.0.0/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.results.aspnetcore/1.0.2/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.Results.AspNetCore/1.0.2/license", "projectUrl": "https://purview.dev/projects/results/", "tags": [ "results", @@ -43,6 +43,16 @@ "version": "1.0.0", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.results.aspnetcore/1.0.0.json" + }, + { + "version": "1.0.0.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.results.aspnetcore/1.0.0.1.json" + }, + { + "version": "1.0.2", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.results.aspnetcore/1.0.2.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.Results.ZodSharp.AspNetCore.json b/src/fixtures/nuget/search/Purview.Results.ZodSharp.AspNetCore.json index a2bb8da..8bf9aca 100644 --- a/src/fixtures/nuget/search/Purview.Results.ZodSharp.AspNetCore.json +++ b/src/fixtures/nuget/search/Purview.Results.ZodSharp.AspNetCore.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.results.zodsharp.aspnetcore/index.json", "id": "Purview.Results.ZodSharp.AspNetCore", - "version": "1.0.0", + "version": "1.0.2", "description": "Maps Purview result failures that carry ZodSharp validation errors onto ASP.NET Core HttpValidationProblemDetails responses.", "summary": "", "title": "Purview Results ZodSharp ASP.NET Core", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.results.zodsharp.aspnetcore/1.0.0/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.Results.ZodSharp.AspNetCore/1.0.0/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.results.zodsharp.aspnetcore/1.0.2/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.Results.ZodSharp.AspNetCore/1.0.2/license", "projectUrl": "https://purview.dev/projects/results/", "tags": [ "results", @@ -44,6 +44,16 @@ "version": "1.0.0", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.results.zodsharp.aspnetcore/1.0.0.json" + }, + { + "version": "1.0.0.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.results.zodsharp.aspnetcore/1.0.0.1.json" + }, + { + "version": "1.0.2", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.results.zodsharp.aspnetcore/1.0.2.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.Results.ZodSharp.json b/src/fixtures/nuget/search/Purview.Results.ZodSharp.json index d0c42c3..ff11b05 100644 --- a/src/fixtures/nuget/search/Purview.Results.ZodSharp.json +++ b/src/fixtures/nuget/search/Purview.Results.ZodSharp.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.results.zodsharp/index.json", "id": "Purview.Results.ZodSharp", - "version": "1.0.0", + "version": "1.0.2", "description": "Bridges ZodSharp ValidationResult values into Purview.Results, so validation outcomes flow through the result pipeline as ordinary error values instead of exceptions.", "summary": "", "title": "Purview Results ZodSharp", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.results.zodsharp/1.0.0/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.Results.ZodSharp/1.0.0/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.results.zodsharp/1.0.2/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.Results.ZodSharp/1.0.2/license", "projectUrl": "https://purview.dev/projects/results/", "tags": [ "results", @@ -43,6 +43,16 @@ "version": "1.0.0", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.results.zodsharp/1.0.0.json" + }, + { + "version": "1.0.0.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.results.zodsharp/1.0.0.1.json" + }, + { + "version": "1.0.2", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.results.zodsharp/1.0.2.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.Results.json b/src/fixtures/nuget/search/Purview.Results.json index edacba4..32f7ccb 100644 --- a/src/fixtures/nuget/search/Purview.Results.json +++ b/src/fixtures/nuget/search/Purview.Results.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.results/index.json", "id": "Purview.Results", - "version": "1.0.0", + "version": "1.0.2", "description": "Dependency-free Result for .NET, with C# 15 union ergonomics for its error cases and integrations that let expected failures flow through a value instead of an exception.", "summary": "", "title": "Purview Results", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.results/1.0.0/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.Results/1.0.0/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.results/1.0.2/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.Results/1.0.2/license", "projectUrl": "https://purview.dev/projects/results/", "tags": [ "results", @@ -46,6 +46,16 @@ "version": "1.0.0", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.results/1.0.0.json" + }, + { + "version": "1.0.0.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.results/1.0.0.1.json" + }, + { + "version": "1.0.2", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.results/1.0.2.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.SourceGeneratorFramework.Testing.TUnit.json b/src/fixtures/nuget/search/Purview.SourceGeneratorFramework.Testing.TUnit.json index 9d4b30f..ed9976c 100644 --- a/src/fixtures/nuget/search/Purview.SourceGeneratorFramework.Testing.TUnit.json +++ b/src/fixtures/nuget/search/Purview.SourceGeneratorFramework.Testing.TUnit.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.sourcegeneratorframework.testing.tunit/index.json", "id": "Purview.SourceGeneratorFramework.Testing.TUnit", - "version": "1.0.0", + "version": "1.1.1", "description": "Purview SourceGeneratorFramework libraries for building and testing incremental C# source generators.", "summary": "", "title": "Purview.SourceGeneratorFramework.Testing.TUnit", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.sourcegeneratorframework.testing.tunit/1.0.0/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.SourceGeneratorFramework.Testing.TUnit/1.0.0/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.sourcegeneratorframework.testing.tunit/1.1.1/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.SourceGeneratorFramework.Testing.TUnit/1.1.1/license", "projectUrl": "https://purview.dev/projects/sourcegenerator-framework/", "tags": [], "authors": [ @@ -36,6 +36,16 @@ "version": "1.0.0", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.sourcegeneratorframework.testing.tunit/1.0.0.json" + }, + { + "version": "1.1.0", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.sourcegeneratorframework.testing.tunit/1.1.0.json" + }, + { + "version": "1.1.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.sourcegeneratorframework.testing.tunit/1.1.1.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.SourceGeneratorFramework.Testing.json b/src/fixtures/nuget/search/Purview.SourceGeneratorFramework.Testing.json index a595320..5ba41fd 100644 --- a/src/fixtures/nuget/search/Purview.SourceGeneratorFramework.Testing.json +++ b/src/fixtures/nuget/search/Purview.SourceGeneratorFramework.Testing.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.sourcegeneratorframework.testing/index.json", "id": "Purview.SourceGeneratorFramework.Testing", - "version": "1.0.0", + "version": "1.1.1", "description": "Purview SourceGeneratorFramework libraries for building and testing incremental C# source generators.", "summary": "", "title": "Purview.SourceGeneratorFramework.Testing", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.sourcegeneratorframework.testing/1.0.0/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.SourceGeneratorFramework.Testing/1.0.0/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.sourcegeneratorframework.testing/1.1.1/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.SourceGeneratorFramework.Testing/1.1.1/license", "projectUrl": "https://purview.dev/projects/sourcegenerator-framework/", "tags": [], "authors": [ @@ -36,6 +36,16 @@ "version": "1.0.0", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.sourcegeneratorframework.testing/1.0.0.json" + }, + { + "version": "1.1.0", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.sourcegeneratorframework.testing/1.1.0.json" + }, + { + "version": "1.1.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.sourcegeneratorframework.testing/1.1.1.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.SourceGeneratorFramework.json b/src/fixtures/nuget/search/Purview.SourceGeneratorFramework.json index 3226acc..5c3585d 100644 --- a/src/fixtures/nuget/search/Purview.SourceGeneratorFramework.json +++ b/src/fixtures/nuget/search/Purview.SourceGeneratorFramework.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.sourcegeneratorframework/index.json", "id": "Purview.SourceGeneratorFramework", - "version": "1.0.0", + "version": "1.1.1", "description": "Purview SourceGeneratorFramework libraries for building and testing incremental C# source generators.", "summary": "", "title": "Purview.SourceGeneratorFramework", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.sourcegeneratorframework/1.0.0/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.SourceGeneratorFramework/1.0.0/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.sourcegeneratorframework/1.1.1/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.SourceGeneratorFramework/1.1.1/license", "projectUrl": "https://purview.dev/projects/sourcegenerator-framework/", "tags": [], "authors": [ @@ -36,6 +36,16 @@ "version": "1.0.0", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.sourcegeneratorframework/1.0.0.json" + }, + { + "version": "1.1.0", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.sourcegeneratorframework/1.1.0.json" + }, + { + "version": "1.1.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.sourcegeneratorframework/1.1.1.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.Telemetry.SourceGenerator.json b/src/fixtures/nuget/search/Purview.Telemetry.SourceGenerator.json index 023193a..dce2c17 100644 --- a/src/fixtures/nuget/search/Purview.Telemetry.SourceGenerator.json +++ b/src/fixtures/nuget/search/Purview.Telemetry.SourceGenerator.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.telemetry.sourcegenerator/index.json", "id": "Purview.Telemetry.SourceGenerator", - "version": "5.0.1", + "version": "5.0.4", "description": ".NET Source Generator for interface-based telemetry generating tracing, logs, and metrics.", "summary": "", "title": "Purview Telemetry Source Generator", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.telemetry.sourcegenerator/5.0.1/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.Telemetry.SourceGenerator/5.0.1/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.telemetry.sourcegenerator/5.0.4/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.Telemetry.SourceGenerator/5.0.4/license", "projectUrl": "https://purview.dev/projects/telemetry-sourcegenerator/", "tags": [ "logs", @@ -190,6 +190,21 @@ "version": "5.0.1", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.telemetry.sourcegenerator/5.0.1.json" + }, + { + "version": "5.0.2", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.telemetry.sourcegenerator/5.0.2.json" + }, + { + "version": "5.0.3", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.telemetry.sourcegenerator/5.0.3.json" + }, + { + "version": "5.0.4", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.telemetry.sourcegenerator/5.0.4.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.ValueObjects.json b/src/fixtures/nuget/search/Purview.ValueObjects.json index d143b48..51800e2 100644 --- a/src/fixtures/nuget/search/Purview.ValueObjects.json +++ b/src/fixtures/nuget/search/Purview.ValueObjects.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.valueobjects/index.json", "id": "Purview.ValueObjects", - "version": "1.0.0", - "description": "Source-generated scalar and complex value objects for .NET. Brings F#-style single-case types to C# with Create/Hydrate factories, normalization, validation, equality, comparison, implicit conversions, and JSON serialization for DTOs, Entity Framework, and domain models.", + "version": "1.1.0", + "description": "Source-generated scalar and complex value objects for .NET. Brings F#-style single-case types to C# with Create/Hydrate factories, normalization, validation, equality, comparison, implicit conversions, JSON serialization, and the underlying value's formatting and parsing interfaces for DTOs, Entity Framework, and domain models.", "summary": "", "title": "Purview Value Objects", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.valueobjects/1.0.0/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.ValueObjects/1.0.0/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.valueobjects/1.1.0/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.ValueObjects/1.1.0/license", "projectUrl": "https://purview.dev/projects/value-objects/", "tags": [ "purview", @@ -28,7 +28,9 @@ "dto", "serialization", "json", - "entity-framework" + "entity-framework", + "formatting", + "parsing" ], "authors": [ "Kieron Lanning" @@ -48,6 +50,16 @@ "version": "1.0.0", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.valueobjects/1.0.0.json" + }, + { + "version": "1.0.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.valueobjects/1.0.1.json" + }, + { + "version": "1.1.0", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.valueobjects/1.1.0.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.ZodSharp.AspNetCore.json b/src/fixtures/nuget/search/Purview.ZodSharp.AspNetCore.json index 1d5f479..e79ae38 100644 --- a/src/fixtures/nuget/search/Purview.ZodSharp.AspNetCore.json +++ b/src/fixtures/nuget/search/Purview.ZodSharp.AspNetCore.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.aspnetcore/index.json", "id": "Purview.ZodSharp.AspNetCore", - "version": "2.0.1", + "version": "2.1.0", "description": "ASP.NET Core ProblemDetails integration for ZodSharp validation results.", "summary": "", "title": "Purview.ZodSharp.AspNetCore", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.zodsharp.aspnetcore/2.0.1/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.ZodSharp.AspNetCore/2.0.1/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.zodsharp.aspnetcore/2.1.0/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.ZodSharp.AspNetCore/2.1.0/license", "projectUrl": "https://purview.dev/projects/zodsharp/", "tags": [ "zod", @@ -46,6 +46,21 @@ "version": "2.0.1", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.aspnetcore/2.0.1.json" + }, + { + "version": "2.0.1.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.aspnetcore/2.0.1.1.json" + }, + { + "version": "2.0.2", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.aspnetcore/2.0.2.json" + }, + { + "version": "2.1.0", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.aspnetcore/2.1.0.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.ZodSharp.NewtonsoftJson.json b/src/fixtures/nuget/search/Purview.ZodSharp.NewtonsoftJson.json index 03b200c..ebfda7a 100644 --- a/src/fixtures/nuget/search/Purview.ZodSharp.NewtonsoftJson.json +++ b/src/fixtures/nuget/search/Purview.ZodSharp.NewtonsoftJson.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.newtonsoftjson/index.json", "id": "Purview.ZodSharp.NewtonsoftJson", - "version": "2.0.1", + "version": "2.1.0", "description": "A high-performance C# port of Zod schema validation library. Features zero-allocation validation, struct-based rules, fluent API, and source generator support for maximum performance.", "summary": "", "title": "Purview.ZodSharp.NewtonsoftJson", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.zodsharp.newtonsoftjson/2.0.1/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.ZodSharp.NewtonsoftJson/2.0.1/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.zodsharp.newtonsoftjson/2.1.0/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.ZodSharp.NewtonsoftJson/2.1.0/license", "projectUrl": "https://purview.dev/projects/zodsharp/", "tags": [ "zod", @@ -46,6 +46,21 @@ "version": "2.0.1", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.newtonsoftjson/2.0.1.json" + }, + { + "version": "2.0.1.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.newtonsoftjson/2.0.1.1.json" + }, + { + "version": "2.0.2", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.newtonsoftjson/2.0.2.json" + }, + { + "version": "2.1.0", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.newtonsoftjson/2.1.0.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.ZodSharp.SystemTextJson.json b/src/fixtures/nuget/search/Purview.ZodSharp.SystemTextJson.json index 6c074ed..72810dd 100644 --- a/src/fixtures/nuget/search/Purview.ZodSharp.SystemTextJson.json +++ b/src/fixtures/nuget/search/Purview.ZodSharp.SystemTextJson.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.systemtextjson/index.json", "id": "Purview.ZodSharp.SystemTextJson", - "version": "2.0.1", + "version": "2.1.0", "description": "A high-performance C# port of Zod schema validation library. Features zero-allocation validation, struct-based rules, fluent API, and source generator support for maximum performance.", "summary": "", "title": "Purview.ZodSharp.SystemTextJson", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.zodsharp.systemtextjson/2.0.1/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.ZodSharp.SystemTextJson/2.0.1/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.zodsharp.systemtextjson/2.1.0/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.ZodSharp.SystemTextJson/2.1.0/license", "projectUrl": "https://purview.dev/projects/zodsharp/", "tags": [ "zod", @@ -46,6 +46,21 @@ "version": "2.0.1", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.systemtextjson/2.0.1.json" + }, + { + "version": "2.0.1.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.systemtextjson/2.0.1.1.json" + }, + { + "version": "2.0.2", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.systemtextjson/2.0.2.json" + }, + { + "version": "2.1.0", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp.systemtextjson/2.1.0.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/nuget/search/Purview.ZodSharp.json b/src/fixtures/nuget/search/Purview.ZodSharp.json index 5aa1054..6dce1ee 100644 --- a/src/fixtures/nuget/search/Purview.ZodSharp.json +++ b/src/fixtures/nuget/search/Purview.ZodSharp.json @@ -10,12 +10,12 @@ "@type": "Package", "registration": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp/index.json", "id": "Purview.ZodSharp", - "version": "2.0.1", + "version": "2.1.0", "description": "A high-performance C# port of Zod schema validation library.\n\t\t\tFeatures zero-allocation validation, struct-based rules, fluent API,\n\t\t\tand source generator support for maximum performance.", "summary": "", "title": "Purview.ZodSharp", - "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.zodsharp/2.0.1/icon", - "licenseUrl": "https://www.nuget.org/packages/Purview.ZodSharp/2.0.1/license", + "iconUrl": "https://api.nuget.org/v3-flatcontainer/purview.zodsharp/2.1.0/icon", + "licenseUrl": "https://www.nuget.org/packages/Purview.ZodSharp/2.1.0/license", "projectUrl": "https://purview.dev/projects/zodsharp/", "tags": [ "zod", @@ -45,6 +45,21 @@ "version": "2.0.1", "downloads": 0, "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp/2.0.1.json" + }, + { + "version": "2.0.1.1", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp/2.0.1.1.json" + }, + { + "version": "2.0.2", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp/2.0.2.json" + }, + { + "version": "2.1.0", + "downloads": 0, + "@id": "https://api.nuget.org/v3/registration5-semver1/purview.zodsharp/2.1.0.json" } ], "vulnerabilities": [] diff --git a/src/fixtures/releases/index.json b/src/fixtures/releases/index.json index 4021b09..ba60f73 100644 --- a/src/fixtures/releases/index.json +++ b/src/fixtures/releases/index.json @@ -1,6 +1,6 @@ { "schema": 2, - "retrievedAt": "2026-10-07T09:23:19.376Z", + "retrievedAt": "2026-10-16T12:17:43.716Z", "repos": { "purview-dev/telemetry-sourcegenerator": { "name": "telemetry-sourcegenerator", @@ -30,10 +30,10 @@ "telemetry", "tracing" ], - "stargazersCount": 35, + "stargazersCount": 36, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-10-07T07:00:07Z", + "updatedAt": "2026-10-15T23:49:42Z", "hasDiscussions": false }, "purview-dev/event-sourcing": { @@ -90,7 +90,7 @@ "stargazersCount": 1, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-10-07T06:24:39Z", + "updatedAt": "2026-10-16T09:58:01Z", "hasDiscussions": false }, "purview-dev/value-objects": { @@ -122,7 +122,7 @@ "stargazersCount": 1, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-10-07T06:54:13Z", + "updatedAt": "2026-10-16T10:16:43Z", "hasDiscussions": false }, "purview-dev/sourcegenerator-framework": { @@ -149,10 +149,10 @@ "source-generators", "testing" ], - "stargazersCount": 2, + "stargazersCount": 3, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-10-06T22:47:00Z", + "updatedAt": "2026-10-15T23:29:41Z", "hasDiscussions": false }, "purview-dev/results": { @@ -180,7 +180,7 @@ "stargazersCount": 1, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-10-07T07:13:09Z", + "updatedAt": "2026-10-16T10:33:55Z", "hasDiscussions": false }, "purview-dev/aspire-resourcekit": { @@ -208,7 +208,7 @@ "stargazersCount": 2, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-10-07T07:28:16Z", + "updatedAt": "2026-10-16T07:16:07Z", "hasDiscussions": false }, "purview-dev/aspirec4": { @@ -241,7 +241,7 @@ "stargazersCount": 9, "openIssuesCount": 2, "defaultBranch": "main", - "updatedAt": "2026-10-07T07:28:42Z", + "updatedAt": "2026-10-08T19:16:59Z", "hasDiscussions": false }, "purview-dev/build": { @@ -267,7 +267,7 @@ "stargazersCount": 1, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-10-06T22:37:09Z", + "updatedAt": "2026-10-15T16:05:54Z", "hasDiscussions": false }, "purview-dev/build-sdk": { @@ -297,7 +297,7 @@ "stargazersCount": 1, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-10-06T22:32:50Z", + "updatedAt": "2026-10-16T11:10:41Z", "hasDiscussions": false }, "purview-dev/dotnet-logging-source-generators": { @@ -313,6 +313,29 @@ "updatedAt": "2024-04-28T11:21:49Z", "hasDiscussions": false }, + "purview-dev/architests": { + "name": "architests", + "fullName": "purview-dev/architests", + "description": ".NET architecture tests driven by a policy file: declare responsibilities and dependency directions, then enforce them as TUnit tests at the project-reference and compiled-assembly level - including composition boundaries, forbidden packages and framework references, cycles, naming, and reviewed waivers.", + "archived": false, + "homepage": "https://purview.dev/projects/architests/", + "topics": [ + "architecture", + "architecture-tests", + "csharp", + "dependency-rules", + "dotnet", + "nuget", + "roslyn", + "static-analysis", + "tunit" + ], + "stargazersCount": 0, + "openIssuesCount": 0, + "defaultBranch": "main", + "updatedAt": "2026-10-16T11:15:39Z", + "hasDiscussions": false + }, "purview-dev/containers": { "name": "containers", "fullName": "purview-dev/containers", @@ -341,14 +364,65 @@ "wslc" ], "stargazersCount": 3, + "openIssuesCount": 1, + "defaultBranch": "main", + "updatedAt": "2026-10-13T11:52:06Z", + "hasDiscussions": false + }, + "purview-dev/engineering-playbook": { + "name": "engineering-playbook", + "fullName": "purview-dev/engineering-playbook", + "description": "The reusable Purview engineering conventions - repository shape, architecture as tests, verification tiers, contracts and data exchange, testing, and agent enablement.", + "archived": false, + "homepage": null, + "topics": [ + "architecture-tests", + "best-practices", + "coding-agents", + "conventions", + "csharp", + "documentation", + "dotnet", + "engineering", + "msbuild-sdk", + "tunit" + ], + "stargazersCount": 0, "openIssuesCount": 0, "defaultBranch": "main", - "updatedAt": "2026-10-07T08:30:54Z", + "updatedAt": "2026-10-16T00:04:32Z", "hasDiscussions": false } }, "releases": { "purview-dev/telemetry-sourcegenerator": [ + { + "tagName": "v5.0.4", + "name": "v5.0.4", + "body": "## What's Changed\n* chore: move authored skills to repository-root skills folder by @kieronlanning in https://github.com/purview-dev/telemetry-sourcegenerator/pull/146\n\n\n**Full Changelog**: https://github.com/purview-dev/telemetry-sourcegenerator/compare/v5.0.3...v5.0.4", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-15T23:55:33Z", + "htmlUrl": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/tag/v5.0.4" + }, + { + "tagName": "v5.0.3", + "name": "v5.0.3", + "body": "## What's Changed\n* Chore/build sdk 1.0.4 by @kieronlanning in https://github.com/purview-dev/telemetry-sourcegenerator/pull/144\n* build: take Purview.Build 0.5.3 by @kieronlanning in https://github.com/purview-dev/telemetry-sourcegenerator/pull/145\n\n\n**Full Changelog**: https://github.com/purview-dev/telemetry-sourcegenerator/compare/v5.0.2...v5.0.3", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-13T11:07:04Z", + "htmlUrl": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/tag/v5.0.3" + }, + { + "tagName": "v5.0.2", + "name": "v5.0.2", + "body": "## What's Changed\n* Telemetry name gen by @kieronlanning in https://github.com/purview-dev/telemetry-sourcegenerator/pull/143\n\n\n**Full Changelog**: https://github.com/purview-dev/telemetry-sourcegenerator/compare/v5.0.1...v5.0.2", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-07T19:13:33Z", + "htmlUrl": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/tag/v5.0.2" + }, { "tagName": "v5.0.1", "name": "v5.0.1", @@ -681,33 +755,6 @@ "draft": false, "publishedAt": "2024-05-20T21:40:33Z", "htmlUrl": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/tag/v1.07" - }, - { - "tagName": "v1.0.5", - "name": "v1.0.5", - "body": "## What's Changed\r\n* Fixed diagnostics ID duplication by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/27\r\n\r\n\r\n**Full Changelog**: https://github.com/purview-dev/purview-telemetry-sourcegenerator/compare/v1.0.4...v1.0.5", - "prerelease": false, - "draft": false, - "publishedAt": "2024-05-06T09:09:48Z", - "htmlUrl": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/tag/v1.0.5" - }, - { - "tagName": "v1.0.4", - "name": "v1.0.4", - "body": "## What's Changed\r\n* docs: fixed sample app by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/22\r\n* docs: completed docs to wiki migration by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/23\r\n* docs: fixed invalid xml comments in attributes by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/24\r\n* test: fixed tests from xml comment change by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/25\r\n* fix: fixed invalid prefix modes for instruments by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/26\r\n\r\n\r\n**Full Changelog**: https://github.com/purview-dev/purview-telemetry-sourcegenerator/compare/v1.0.3...v1.0.4", - "prerelease": false, - "draft": false, - "publishedAt": "2024-05-01T18:55:02Z", - "htmlUrl": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/tag/v1.0.4" - }, - { - "tagName": "v1.0.3", - "name": "v1.0.3", - "body": "## What's Changed\r\n* build(deps): bump xunit.runner.visualstudio from 2.5.8 to 2.8.0 by @dependabot in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/20\r\n* build(deps): bump xunit from 2.7.1 to 2.8.0 by @dependabot in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/19\r\n* Fix generic parameters and added AutoCounterAttribute by @kieronlanning in https://github.com/purview-dev/purview-telemetry-sourcegenerator/pull/21\r\n\r\n\r\n**Full Changelog**: https://github.com/purview-dev/purview-telemetry-sourcegenerator/compare/v1.0.2...v1.0.3", - "prerelease": false, - "draft": false, - "publishedAt": "2024-04-30T17:35:41Z", - "htmlUrl": "https://github.com/purview-dev/telemetry-sourcegenerator/releases/tag/v1.0.3" } ], "purview-dev/event-sourcing": [ @@ -839,6 +886,33 @@ } ], "purview-dev/zodsharp": [ + { + "tagName": "v2.1.0", + "name": "v2.1.0", + "body": "## What's Changed\n* Added nonsentiel default tests by @kieronlanning in https://github.com/purview-dev/zodsharp/pull/54\n\n\n**Full Changelog**: https://github.com/purview-dev/zodsharp/compare/v2.0.2...v2.1.0", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-16T10:03:37Z", + "htmlUrl": "https://github.com/purview-dev/zodsharp/releases/tag/v2.1.0" + }, + { + "tagName": "v2.0.2", + "name": "v2.0.2", + "body": "## What's Changed\n* Fix/package identity and build sdk 1.0.4 by @kieronlanning in https://github.com/purview-dev/zodsharp/pull/53\n\n\n**Full Changelog**: https://github.com/purview-dev/zodsharp/compare/v2.0.1.1...v2.0.2", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-08T18:09:19Z", + "htmlUrl": "https://github.com/purview-dev/zodsharp/releases/tag/v2.0.2" + }, + { + "tagName": "v2.0.1.1", + "name": "v2.0.1.1", + "body": "## What's Changed\n* fix: nullable scalar support by @kieronlanning in https://github.com/purview-dev/zodsharp/pull/52\n\n\n**Full Changelog**: https://github.com/purview-dev/zodsharp/compare/v2.0.1...v2.0.1.1", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-07T19:18:05Z", + "htmlUrl": "https://github.com/purview-dev/zodsharp/releases/tag/v2.0.1.1" + }, { "tagName": "v2.0.1", "name": "v2.0.1", @@ -1111,6 +1185,24 @@ } ], "purview-dev/value-objects": [ + { + "tagName": "v1.1.0", + "name": "v1.1.0", + "body": "## What's Changed\n* Feat tostring mirroring by @kieronlanning in https://github.com/purview-dev/value-objects/pull/16\n\n\n**Full Changelog**: https://github.com/purview-dev/value-objects/compare/v1.0.1...v1.1.0", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-16T10:20:14Z", + "htmlUrl": "https://github.com/purview-dev/value-objects/releases/tag/v1.1.0" + }, + { + "tagName": "v1.0.1", + "name": "v1.0.1", + "body": "## What's Changed\n* Fix/target framework sets and build sdk 1.0.4 by @kieronlanning in https://github.com/purview-dev/value-objects/pull/15\n\n\n**Full Changelog**: https://github.com/purview-dev/value-objects/compare/v1.0.0...v1.0.1", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-08T18:23:18Z", + "htmlUrl": "https://github.com/purview-dev/value-objects/releases/tag/v1.0.1" + }, { "tagName": "v1.0.0", "name": "v1.0.0", @@ -1221,6 +1313,24 @@ } ], "purview-dev/sourcegenerator-framework": [ + { + "tagName": "v1.1.1", + "name": "v1.1.1", + "body": "## What's Changed\n* chore: move authored skills to repository-root skills folder by @kieronlanning in https://github.com/purview-dev/sourcegenerator-framework/pull/41\n\n\n**Full Changelog**: https://github.com/purview-dev/sourcegenerator-framework/compare/v1.1.0...v1.1.1", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-15T23:36:46Z", + "htmlUrl": "https://github.com/purview-dev/sourcegenerator-framework/releases/tag/v1.1.1" + }, + { + "tagName": "v1.1.0", + "name": "v1.1.0", + "body": "## What's Changed\n* Chore/build sdk 1.0.4 by @kieronlanning in https://github.com/purview-dev/sourcegenerator-framework/pull/39\n* build: take Purview.Build 0.5.3 by @kieronlanning in https://github.com/purview-dev/sourcegenerator-framework/pull/40\n\n\n**Full Changelog**: https://github.com/purview-dev/sourcegenerator-framework/compare/v1.0.0...v1.1.0", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-13T10:28:59Z", + "htmlUrl": "https://github.com/purview-dev/sourcegenerator-framework/releases/tag/v1.1.0" + }, { "tagName": "v1.0.0", "name": "v1.0.0", @@ -1484,6 +1594,24 @@ } ], "purview-dev/results": [ + { + "tagName": "v1.0.2", + "name": "v1.0.2", + "body": "## What's Changed\n* Better zod vo integration by @kieronlanning in https://github.com/purview-dev/results/pull/5\n\n\n**Full Changelog**: https://github.com/purview-dev/results/compare/v1.0.0.1...v1.0.2", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-16T10:36:06Z", + "htmlUrl": "https://github.com/purview-dev/results/releases/tag/v1.0.2" + }, + { + "tagName": "v1.0.0.1", + "name": "v1.0.0.1", + "body": "## What's Changed\n* Chore/build sdk 1.0.4 by @kieronlanning in https://github.com/purview-dev/results/pull/4\n\n\n**Full Changelog**: https://github.com/purview-dev/results/compare/v1.0.0...v1.0.0.1", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-08T19:20:40Z", + "htmlUrl": "https://github.com/purview-dev/results/releases/tag/v1.0.0.1" + }, { "tagName": "v1.0.0", "name": "v1.0.0", @@ -1513,6 +1641,15 @@ } ], "purview-dev/aspire-resourcekit": [ + { + "tagName": "v1.0.1", + "name": "v1.0.1", + "body": "\n\n## What's Changed\n### Other Changes\n* Chore/build sdk 1.0.4 by @kieronlanning in https://github.com/purview-dev/aspire-resourcekit/pull/49\n* build: Purview.Build as a local tool, SDK 1.0.5 and aligned package versions by @kieronlanning in https://github.com/purview-dev/aspire-resourcekit/pull/50\n* chore: move authored skills to repository-root skills folder by @kieronlanning in https://github.com/purview-dev/aspire-resourcekit/pull/51\n\n\n**Full Changelog**: https://github.com/purview-dev/aspire-resourcekit/compare/v1.0.0.1...v1.0.1", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-16T07:18:43Z", + "htmlUrl": "https://github.com/purview-dev/aspire-resourcekit/releases/tag/v1.0.1" + }, { "tagName": "v1.0.0.1", "name": "v1.0.0.1", @@ -1922,6 +2059,42 @@ } ], "purview-dev/build": [ + { + "tagName": "v0.5.4", + "name": "v0.5.4", + "body": "## What's Changed\n* build: take Purview.Build 0.5.3 by @kieronlanning in https://github.com/purview-dev/build/pull/28\n* Chore/skills root folder by @kieronlanning in https://github.com/purview-dev/build/pull/29\n* ci: make global.json the single source of truth for the SDK version by @kieronlanning in https://github.com/purview-dev/build/pull/30\n* Fix pack by @kieronlanning in https://github.com/purview-dev/build/pull/31\n\n\n**Full Changelog**: https://github.com/purview-dev/build/compare/v0.5.3...v0.5.4", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-15T16:07:12Z", + "htmlUrl": "https://github.com/purview-dev/build/releases/tag/v0.5.4" + }, + { + "tagName": "v0.5.3", + "name": "v0.5.3", + "body": "## What's Changed\n* fix: configurable RequiredCompilerFlags, local-tool install, and dogfood path (0.5.3) by @kieronlanning in https://github.com/purview-dev/build/pull/27\n\n\n**Full Changelog**: https://github.com/purview-dev/build/compare/v0.5.2...v0.5.3", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-13T07:48:26Z", + "htmlUrl": "https://github.com/purview-dev/build/releases/tag/v0.5.3" + }, + { + "tagName": "v0.5.2", + "name": "v0.5.2", + "body": "## What's Changed\n* Fix/stale ca1515 suppression and build sdk 1.0.4 by @kieronlanning in https://github.com/purview-dev/build/pull/26\n\n\n**Full Changelog**: https://github.com/purview-dev/build/compare/v0.5.1...v0.5.2", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-08T18:17:27Z", + "htmlUrl": "https://github.com/purview-dev/build/releases/tag/v0.5.2" + }, + { + "tagName": "v0.5.1", + "name": "v0.5.1", + "body": "## What's Changed\n* feat: added json schema by @kieronlanning in https://github.com/purview-dev/build/pull/25\n\n\n**Full Changelog**: https://github.com/purview-dev/build/compare/v0.4.0...v0.5.1", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-07T10:12:30Z", + "htmlUrl": "https://github.com/purview-dev/build/releases/tag/v0.5.1" + }, { "tagName": "v0.4.0", "name": "v0.4.0", @@ -2059,6 +2232,51 @@ } ], "purview-dev/build-sdk": [ + { + "tagName": "v1.0.7", + "name": "v1.0.7", + "body": "## What's Changed\n* chore: move Purview.Architecture.Testing to purview-dev/architests by @kieronlanning in https://github.com/purview-dev/build-sdk/pull/40\n\n\n**Full Changelog**: https://github.com/purview-dev/build-sdk/compare/v1.0.6...v1.0.7", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-16T10:36:39Z", + "htmlUrl": "https://github.com/purview-dev/build-sdk/releases/tag/v1.0.7" + }, + { + "tagName": "v1.0.6", + "name": "v1.0.6", + "body": "## What's Changed\n* build: Purview.Build as a local tool by @kieronlanning in https://github.com/purview-dev/build-sdk/pull/38\n* Adding assembly name gen class by @kieronlanning in https://github.com/purview-dev/build-sdk/pull/39\n\n\n**Full Changelog**: https://github.com/purview-dev/build-sdk/compare/v1.0.5...v1.0.6", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-15T15:25:17Z", + "htmlUrl": "https://github.com/purview-dev/build-sdk/releases/tag/v1.0.6" + }, + { + "tagName": "v1.0.5", + "name": "v1.0.5", + "body": "## What's Changed\n* docs: correct the test-detection and namespace-stripping claims by @kieronlanning in https://github.com/purview-dev/build-sdk/pull/37\n\n\n**Full Changelog**: https://github.com/purview-dev/build-sdk/compare/v1.0.4...v1.0.5", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-12T10:33:21Z", + "htmlUrl": "https://github.com/purview-dev/build-sdk/releases/tag/v1.0.5" + }, + { + "tagName": "v1.0.4", + "name": "v1.0.4", + "body": "## What's Changed\n* Fix/tfm floor and mirrored file tracking by @kieronlanning in https://github.com/purview-dev/build-sdk/pull/36\n\n\n**Full Changelog**: https://github.com/purview-dev/build-sdk/compare/v1.0.3.1...v1.0.4", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-08T17:47:17Z", + "htmlUrl": "https://github.com/purview-dev/build-sdk/releases/tag/v1.0.4" + }, + { + "tagName": "v1.0.3.1", + "name": "v1.0.3.1", + "body": "## What's Changed\n* fix: target frameworks were empty under certain conditions by @kieronlanning in https://github.com/purview-dev/build-sdk/pull/35\n\n\n**Full Changelog**: https://github.com/purview-dev/build-sdk/compare/v1.0.3.0...v1.0.3.1", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-08T15:34:55Z", + "htmlUrl": "https://github.com/purview-dev/build-sdk/releases/tag/v1.0.3.1" + }, { "tagName": "v1.0.3.0", "name": "v1.0.3.0", @@ -2277,6 +2495,26 @@ } ], "purview-dev/dotnet-logging-source-generators": [], + "purview-dev/architests": [ + { + "tagName": "v1.1.1", + "name": "v1.1.1", + "body": "## What's Changed\n* feat: sample, documentation, package metadata and an extending skill by @kieronlanning in https://github.com/purview-dev/architests/pull/1\n\n## New Contributors\n* @kieronlanning made their first contribution in https://github.com/purview-dev/architests/pull/1\n\n**Full Changelog**: https://github.com/purview-dev/architests/compare/v1.1.0...v1.1.1", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-16T11:01:18Z", + "htmlUrl": "https://github.com/purview-dev/architests/releases/tag/v1.1.1" + }, + { + "tagName": "v1.1.0", + "name": "v1.1.0", + "body": "**Full Changelog**: https://github.com/purview-dev/architests/commits/v1.1.0", + "prerelease": false, + "draft": false, + "publishedAt": "2026-10-16T10:30:00Z", + "htmlUrl": "https://github.com/purview-dev/architests/releases/tag/v1.1.0" + } + ], "purview-dev/containers": [ { "tagName": "v1.0.0-prerelease.6", @@ -2332,6 +2570,26 @@ "publishedAt": "2026-09-30T16:41:23Z", "htmlUrl": "https://github.com/purview-dev/containers/releases/tag/v1.0.0-prerelease.1" } + ], + "purview-dev/engineering-playbook": [ + { + "tagName": "v0.1.0-prerelease.2", + "name": "v0.1.0-prerelease.2", + "body": "## What's Changed\n* build: Purview.Build as a local tool and SDK 1.0.5 by @kieronlanning in https://github.com/purview-dev/engineering-playbook/pull/1\n* docs: add agent skills distribution page and canonical skills by @kieronlanning in https://github.com/purview-dev/engineering-playbook/pull/2\n* feat: architecture policy, enforcement tests and guidance skills by @kieronlanning in https://github.com/purview-dev/engineering-playbook/pull/3\n* Chore/skills root folder by @kieronlanning in https://github.com/purview-dev/engineering-playbook/pull/5\n\n## New Contributors\n* @kieronlanning made their first contribution in https://github.com/purview-dev/engineering-playbook/pull/1\n\n**Full Changelog**: https://github.com/purview-dev/engineering-playbook/compare/v0.1.0-prerelease.1...v0.1.0-prerelease.2", + "prerelease": true, + "draft": false, + "publishedAt": "2026-10-16T00:05:25Z", + "htmlUrl": "https://github.com/purview-dev/engineering-playbook/releases/tag/v0.1.0-prerelease.2" + }, + { + "tagName": "v0.1.0-prerelease.1", + "name": "v0.1.0-prerelease.1", + "body": "**Full Changelog**: https://github.com/purview-dev/engineering-playbook/commits/v0.1.0-prerelease.1", + "prerelease": true, + "draft": false, + "publishedAt": "2026-10-12T00:02:54Z", + "htmlUrl": "https://github.com/purview-dev/engineering-playbook/releases/tag/v0.1.0-prerelease.1" + } ] }, "packages": { @@ -2405,12 +2663,15 @@ "5.0.0-prerelease.18", "5.0.0-prerelease.19", "5.0.0", - "5.0.1" + "5.0.1", + "5.0.2", + "5.0.3", + "5.0.4" ], "targetFrameworks": [ ".NETStandard2.0" ], - "targetFrameworksVersion": "5.0.1" + "targetFrameworksVersion": "5.0.4" }, "Purview.EventSourcing": { "id": "Purview.EventSourcing", @@ -2713,7 +2974,10 @@ "2.0.0-prerelease.27", "2.0.0-prerelease.28", "2.0.0", - "2.0.1" + "2.0.1", + "2.0.1.1", + "2.0.2", + "2.1.0" ], "targetFrameworks": [ "net10.0", @@ -2721,7 +2985,7 @@ "net8.0", "net9.0" ], - "targetFrameworksVersion": "2.0.1" + "targetFrameworksVersion": "2.1.0" }, "Purview.ZodSharp.SystemTextJson": { "id": "Purview.ZodSharp.SystemTextJson", @@ -2755,7 +3019,10 @@ "2.0.0-prerelease.27", "2.0.0-prerelease.28", "2.0.0", - "2.0.1" + "2.0.1", + "2.0.1.1", + "2.0.2", + "2.1.0" ], "targetFrameworks": [ "net10.0", @@ -2763,7 +3030,7 @@ "net8.0", "net9.0" ], - "targetFrameworksVersion": "2.0.1" + "targetFrameworksVersion": "2.1.0" }, "Purview.ZodSharp.NewtonsoftJson": { "id": "Purview.ZodSharp.NewtonsoftJson", @@ -2797,7 +3064,10 @@ "2.0.0-prerelease.27", "2.0.0-prerelease.28", "2.0.0", - "2.0.1" + "2.0.1", + "2.0.1.1", + "2.0.2", + "2.1.0" ], "targetFrameworks": [ "net10.0", @@ -2805,7 +3075,7 @@ "net8.0", "net9.0" ], - "targetFrameworksVersion": "2.0.1" + "targetFrameworksVersion": "2.1.0" }, "Purview.ZodSharp.AspNetCore": { "id": "Purview.ZodSharp.AspNetCore", @@ -2839,7 +3109,10 @@ "2.0.0-prerelease.27", "2.0.0-prerelease.28", "2.0.0", - "2.0.1" + "2.0.1", + "2.0.1.1", + "2.0.2", + "2.1.0" ], "targetFrameworks": [ "net10.0", @@ -2847,7 +3120,7 @@ "net8.0", "net9.0" ], - "targetFrameworksVersion": "2.0.1" + "targetFrameworksVersion": "2.1.0" }, "Purview.ValueObjects": { "id": "Purview.ValueObjects", @@ -2863,7 +3136,9 @@ "1.0.0-prerelease.9", "1.0.0-prerelease.10", "1.0.0-prerelease.11", - "1.0.0" + "1.0.0", + "1.0.1", + "1.1.0" ], "targetFrameworks": [ "net10.0", @@ -2871,7 +3146,7 @@ "net8.0", "net9.0" ], - "targetFrameworksVersion": "1.0.0" + "targetFrameworksVersion": "1.1.0" }, "Purview.SourceGeneratorFramework": { "id": "Purview.SourceGeneratorFramework", @@ -2929,12 +3204,14 @@ "1.0.0-prerelease.52", "1.0.0-prerelease.53", "1.0.0-prerelease.54", - "1.0.0" + "1.0.0", + "1.1.0", + "1.1.1" ], "targetFrameworks": [ ".NETStandard2.0" ], - "targetFrameworksVersion": "1.0.0" + "targetFrameworksVersion": "1.1.1" }, "Purview.SourceGeneratorFramework.Testing": { "id": "Purview.SourceGeneratorFramework.Testing", @@ -2992,7 +3269,9 @@ "1.0.0-prerelease.52", "1.0.0-prerelease.53", "1.0.0-prerelease.54", - "1.0.0" + "1.0.0", + "1.1.0", + "1.1.1" ], "targetFrameworks": [ ".NETStandard2.0", @@ -3000,7 +3279,7 @@ "net8.0", "net9.0" ], - "targetFrameworksVersion": "1.0.0" + "targetFrameworksVersion": "1.1.1" }, "Purview.SourceGeneratorFramework.Testing.TUnit": { "id": "Purview.SourceGeneratorFramework.Testing.TUnit", @@ -3058,7 +3337,9 @@ "1.0.0-prerelease.52", "1.0.0-prerelease.53", "1.0.0-prerelease.54", - "1.0.0" + "1.0.0", + "1.1.0", + "1.1.1" ], "targetFrameworks": [ ".NETStandard2.0", @@ -3066,70 +3347,67 @@ "net8.0", "net9.0" ], - "targetFrameworksVersion": "1.0.0" + "targetFrameworksVersion": "1.1.1" }, "Purview.Results": { "id": "Purview.Results", "versions": [ "1.0.0-prerelease.1", "1.0.0-prerelease.2", - "1.0.0" + "1.0.0", + "1.0.0.1", + "1.0.2" ], "targetFrameworks": [ "net10.0", "net11.0" ], - "targetFrameworksVersion": "1.0.0" - }, - "Purview.Results.SourceGenerator": { - "id": "Purview.Results.SourceGenerator", - "versions": [ - "1.0.0-prerelease.1", - "1.0.0-prerelease.2" - ], - "targetFrameworks": [ - ".NETStandard2.0" - ], - "targetFrameworksVersion": "1.0.0-prerelease.2" + "targetFrameworksVersion": "1.0.2" }, "Purview.Results.AspNetCore": { "id": "Purview.Results.AspNetCore", "versions": [ "1.0.0-prerelease.1", "1.0.0-prerelease.2", - "1.0.0" + "1.0.0", + "1.0.0.1", + "1.0.2" ], "targetFrameworks": [ "net10.0", "net11.0" ], - "targetFrameworksVersion": "1.0.0" + "targetFrameworksVersion": "1.0.2" }, "Purview.Results.ZodSharp": { "id": "Purview.Results.ZodSharp", "versions": [ "1.0.0-prerelease.1", "1.0.0-prerelease.2", - "1.0.0" + "1.0.0", + "1.0.0.1", + "1.0.2" ], "targetFrameworks": [ "net10.0", "net11.0" ], - "targetFrameworksVersion": "1.0.0" + "targetFrameworksVersion": "1.0.2" }, "Purview.Results.ZodSharp.AspNetCore": { "id": "Purview.Results.ZodSharp.AspNetCore", "versions": [ "1.0.0-prerelease.1", "1.0.0-prerelease.2", - "1.0.0" + "1.0.0", + "1.0.0.1", + "1.0.2" ], "targetFrameworks": [ "net10.0", "net11.0" ], - "targetFrameworksVersion": "1.0.0" + "targetFrameworksVersion": "1.0.2" }, "Purview.Aspire.ResourceKit": { "id": "Purview.Aspire.ResourceKit", @@ -3176,14 +3454,15 @@ "1.0.0-prerelease.40", "1.0.0-prerelease.41", "1.0.0", - "1.0.0.1" + "1.0.0.1", + "1.0.1" ], "targetFrameworks": [ "net10.0", "net8.0", "net9.0" ], - "targetFrameworksVersion": "1.0.0.1" + "targetFrameworksVersion": "1.0.1" }, "AspireC4.Hosting": { "id": "AspireC4.Hosting", @@ -3233,10 +3512,14 @@ "0.3.4", "0.3.5", "0.3.6", - "0.4.0" + "0.4.0", + "0.5.1", + "0.5.2", + "0.5.3", + "0.5.4" ], "targetFrameworks": [], - "targetFrameworksVersion": "0.4.0" + "targetFrameworksVersion": "0.5.4" }, "Purview.BuildSdk": { "id": "Purview.BuildSdk", @@ -3251,12 +3534,29 @@ "1.0.2", "1.0.2.1", "1.0.2.2", - "1.0.3" + "1.0.3", + "1.0.3.1", + "1.0.4", + "1.0.5", + "1.0.6", + "1.0.7" ], "targetFrameworks": [ ".NETStandard2.0" ], - "targetFrameworksVersion": "1.0.3" + "targetFrameworksVersion": "1.0.7" + }, + "Purview.Architecture.Testing": { + "id": "Purview.Architecture.Testing", + "versions": [ + "1.0.6", + "1.1.0", + "1.1.1" + ], + "targetFrameworks": [ + "net10.0" + ], + "targetFrameworksVersion": "1.1.1" }, "Purview.Containers": { "id": "Purview.Containers", @@ -3417,7 +3717,7 @@ "packageSearch": { "Purview.Telemetry.SourceGenerator": { "id": "Purview.Telemetry.SourceGenerator", - "version": "5.0.1", + "version": "5.0.4", "description": ".NET Source Generator for interface-based telemetry generating tracing, logs, and metrics.", "totalDownloads": 17495, "tags": [ @@ -3460,7 +3760,7 @@ "Purview.EventSourcing.Validation.ZodSharp": null, "Purview.ZodSharp": { "id": "Purview.ZodSharp", - "version": "2.0.1", + "version": "2.1.0", "description": "A high-performance C# port of Zod schema validation library.\n\t\t\tFeatures zero-allocation validation, struct-based rules, fluent API,\n\t\t\tand source generator support for maximum performance.", "totalDownloads": 1898, "tags": [ @@ -3474,7 +3774,7 @@ }, "Purview.ZodSharp.SystemTextJson": { "id": "Purview.ZodSharp.SystemTextJson", - "version": "2.0.1", + "version": "2.1.0", "description": "A high-performance C# port of Zod schema validation library. Features zero-allocation validation, struct-based rules, fluent API, and source generator support for maximum performance.", "totalDownloads": 1512, "tags": [ @@ -3489,7 +3789,7 @@ }, "Purview.ZodSharp.NewtonsoftJson": { "id": "Purview.ZodSharp.NewtonsoftJson", - "version": "2.0.1", + "version": "2.1.0", "description": "A high-performance C# port of Zod schema validation library. Features zero-allocation validation, struct-based rules, fluent API, and source generator support for maximum performance.", "totalDownloads": 1395, "tags": [ @@ -3504,7 +3804,7 @@ }, "Purview.ZodSharp.AspNetCore": { "id": "Purview.ZodSharp.AspNetCore", - "version": "2.0.1", + "version": "2.1.0", "description": "ASP.NET Core ProblemDetails integration for ZodSharp validation results.", "totalDownloads": 1537, "tags": [ @@ -3519,8 +3819,8 @@ }, "Purview.ValueObjects": { "id": "Purview.ValueObjects", - "version": "1.0.0", - "description": "Source-generated scalar and complex value objects for .NET. Brings F#-style single-case types to C# with Create/Hydrate factories, normalization, validation, equality, comparison, implicit conversions, and JSON serialization for DTOs, Entity Framework, and domain models.", + "version": "1.1.0", + "description": "Source-generated scalar and complex value objects for .NET. Brings F#-style single-case types to C# with Create/Hydrate factories, normalization, validation, equality, comparison, implicit conversions, JSON serialization, and the underlying value's formatting and parsing interfaces for DTOs, Entity Framework, and domain models.", "totalDownloads": 662, "tags": [ "purview", @@ -3533,7 +3833,9 @@ "dto", "serialization", "json", - "entity-framework" + "entity-framework", + "formatting", + "parsing" ], "published": null, "deprecated": false, @@ -3541,7 +3843,7 @@ }, "Purview.SourceGeneratorFramework": { "id": "Purview.SourceGeneratorFramework", - "version": "1.0.0", + "version": "1.1.1", "description": "Purview SourceGeneratorFramework libraries for building and testing incremental C# source generators.", "totalDownloads": 4486, "tags": [], @@ -3551,7 +3853,7 @@ }, "Purview.SourceGeneratorFramework.Testing": { "id": "Purview.SourceGeneratorFramework.Testing", - "version": "1.0.0", + "version": "1.1.1", "description": "Purview SourceGeneratorFramework libraries for building and testing incremental C# source generators.", "totalDownloads": 4001, "tags": [], @@ -3561,7 +3863,7 @@ }, "Purview.SourceGeneratorFramework.Testing.TUnit": { "id": "Purview.SourceGeneratorFramework.Testing.TUnit", - "version": "1.0.0", + "version": "1.1.1", "description": "Purview SourceGeneratorFramework libraries for building and testing incremental C# source generators.", "totalDownloads": 3711, "tags": [], @@ -3571,7 +3873,7 @@ }, "Purview.Results": { "id": "Purview.Results", - "version": "1.0.0", + "version": "1.0.2", "description": "Dependency-free Result for .NET, with C# 15 union ergonomics for its error cases and integrations that let expected failures flow through a value instead of an exception.", "totalDownloads": 0, "tags": [ @@ -3589,10 +3891,9 @@ "deprecated": false, "listed": true }, - "Purview.Results.SourceGenerator": null, "Purview.Results.AspNetCore": { "id": "Purview.Results.AspNetCore", - "version": "1.0.0", + "version": "1.0.2", "description": "Maps Purview.Results results onto ASP.NET Core responses, including ProblemDetails for expected failures.", "totalDownloads": 0, "tags": [ @@ -3609,7 +3910,7 @@ }, "Purview.Results.ZodSharp": { "id": "Purview.Results.ZodSharp", - "version": "1.0.0", + "version": "1.0.2", "description": "Bridges ZodSharp ValidationResult values into Purview.Results, so validation outcomes flow through the result pipeline as ordinary error values instead of exceptions.", "totalDownloads": 0, "tags": [ @@ -3626,7 +3927,7 @@ }, "Purview.Results.ZodSharp.AspNetCore": { "id": "Purview.Results.ZodSharp.AspNetCore", - "version": "1.0.0", + "version": "1.0.2", "description": "Maps Purview result failures that carry ZodSharp validation errors onto ASP.NET Core HttpValidationProblemDetails responses.", "totalDownloads": 0, "tags": [ @@ -3644,7 +3945,7 @@ }, "Purview.Aspire.ResourceKit": { "id": "Purview.Aspire.ResourceKit", - "version": "1.0.0.1", + "version": "1.0.1", "description": "Composable and test-friendly Aspire resource isolation model for local, running, and publishing modes.", "totalDownloads": 2695, "tags": [ @@ -3680,7 +3981,7 @@ }, "Purview.Build": { "id": "Purview.Build", - "version": "0.4.0", + "version": "0.5.4", "description": "Shared build/test/release pipeline for purview-dev. A Modular Pipelines based .NET tool (Purview.Build) with a GitHub composite action and reusable workflows; consumers configure, the pipeline runs.", "totalDownloads": 1361, "tags": [], @@ -3690,7 +3991,7 @@ }, "Purview.BuildSdk": { "id": "Purview.BuildSdk", - "version": "1.0.3", + "version": "1.0.7", "description": "A reusable MSBuild SDK that provides standardised .NET project defaults, code style enforcement, configurable testing framework wiring (TUnit, Xunit, or None), mocking provider wiring (TUnitMocks, NSubstitute, or None), and Central Package Management integration. Drop in via Directory.Build.props to apply uniformly across every project in a repo.", "totalDownloads": 455, "tags": [ @@ -3709,6 +4010,27 @@ "deprecated": false, "listed": true }, + "Purview.Architecture.Testing": { + "id": "Purview.Architecture.Testing", + "version": "1.1.1", + "description": "Enforces a repository's architecture policy as TUnit tests: project and type-level dependency direction, sibling independence, composition boundaries, forbidden packages and framework references, cycles and naming. Ships the policy JSON Schema and a TUnit base class, so a consuming repository adds a policy file and one derived test class.", + "totalDownloads": 0, + "tags": [ + "architecture", + "architecture-tests", + "dependency-rules", + "dependency-matrix", + "type-level-dependencies", + "tunit", + "policy", + "purview", + "dotnet", + "testing" + ], + "published": null, + "deprecated": false, + "listed": true + }, "Purview.Containers": null, "Purview.Containers.Core": null, "Purview.Containers.Wsl": null, diff --git a/src/src/components/ProjectVersionSnapshot.astro b/src/src/components/ProjectVersionSnapshot.astro index daade7d..4dadcce 100644 --- a/src/src/components/ProjectVersionSnapshot.astro +++ b/src/src/components/ProjectVersionSnapshot.astro @@ -1,14 +1,21 @@ --- import StatusBadge from '~/components/StatusBadge.astro'; +import type { ProjectPackageVersions } from '~/lib/releases/live'; +import { + prereleaseTooltip, + projectTooltip, +} from '~/lib/releases/live'; import type { ProjectVersionRollup } from '~/lib/releases/transform'; import { withBase } from '~/lib/urls'; interface Props { /** One row per active project, rolled up from that project's NuGet packages. */ rows: ProjectVersionRollup[]; + /** The build-time versions behind each row, so the browser can recompute it live (ADR 0008). */ + packages: ProjectPackageVersions[]; } -const { rows } = Astro.props; +const { rows, packages } = Astro.props; function formatDate(value: string | null): string { if (!value) { @@ -20,27 +27,15 @@ function formatDate(value: string | null): string { : date.toLocaleDateString('en-GB', { year: 'numeric', month: 'short', day: 'numeric' }); } -/** - * Explanation for a blanked prerelease cell (or for packages that trail the - * headline version), so the suppressed detail stays discoverable on hover. - */ -function prereleaseTooltip(row: ProjectVersionRollup): string | undefined { - if (row.prereleaseVersion) { - return row.laggingPackageCount > 0 - ? `${row.laggingPackageCount} of ${row.packageCount} packages are not on this version` - : undefined; - } - if (row.suppressedPrerelease && row.stableVersion) { - return `Prerelease ${row.suppressedPrerelease} is older than the stable release ${row.stableVersion}`; - } - return undefined; -} - -function projectTooltip(row: ProjectVersionRollup): string | undefined { - return row.laggingPackageCount > 0 - ? `${row.laggingPackageCount} of ${row.packageCount} packages are on older versions` - : undefined; -} +/** The per-project package versions the browser refresh recomputes each row from. */ +const livePayload = { + projects: rows.map((row) => ({ + projectId: row.projectId, + packages: packages + .filter((pkg) => pkg.projectId === row.projectId) + .map((pkg) => ({ id: pkg.packageId, stable: pkg.stable, prerelease: pkg.prerelease })), + })), +}; --- { @@ -80,33 +75,31 @@ function projectTooltip(row: ProjectVersionRollup): string | undefined { {row.projectName} - + {row.packageCount} package{row.packageCount === 1 ? '' : 's'} - {row.stableVersion ? ( - - {row.stableVersion} - - ) : ( - — - )} + + {row.stableVersion ?? '—'} + - {row.prereleaseVersion ? ( - - {row.prereleaseVersion} - - ) : ( - - — - - )} + + {row.prereleaseVersion ?? '—'} + {row.latestRelease ? ( @@ -134,3 +127,114 @@ function projectTooltip(row: ProjectVersionRollup): string | undefined { ) } + + + + diff --git a/src/src/components/islands/InstallPanel.tsx b/src/src/components/islands/InstallPanel.tsx index be1492d..541d9ba 100644 --- a/src/src/components/islands/InstallPanel.tsx +++ b/src/src/components/islands/InstallPanel.tsx @@ -1,6 +1,16 @@ -import type { InstallOption, InstallTab } from '~/lib/install'; +import type { InstallKind, InstallOption, InstallTab } from '~/lib/install'; -import { useState } from 'preact/hooks'; +import { useEffect, useState } from 'preact/hooks'; + +import { installTabs } from '~/lib/install'; +import { + isStale, + latestFromVersions, + preferNewer, + readLiveVersions, + refreshLiveVersions, + type LiveVersions, +} from '~/lib/releases/live'; /** macOS-style traffic light dots that frame the code window, matching Expressive Code. */ function FrameDots() { @@ -70,15 +80,61 @@ function CopyBlock({ label, detail, code }: InstallOption) { } interface Props { + /** The tabs as rendered at build time, so the panel works without JavaScript. */ tabs: InstallTab[]; + /** The package the snippets install, used to re-check the version live. */ + packageId?: string; + /** How the package is consumed, so the tabs can be rebuilt for a newer version. */ + kind?: InstallKind; + /** The build-time version baked into the snippets. */ + version?: string | null; } -export default function InstallPanel({ tabs }: Props) { +export default function InstallPanel({ tabs, packageId, kind, version = null }: Props) { const [active, setActive] = useState(0); - if (tabs.length === 0) { + const [resolvedTabs, setResolvedTabs] = useState(tabs); + + // The snippets pin a version, so a live version bump has to reach them too: + // otherwise the table would say 1.1.0 while the copy-paste command still says + // 1.0.6 (ADR 0008). A live version only replaces the build-time one when it is + // higher. + useEffect(() => { + if (!packageId || !kind) { + return; + } + let cancelled = false; + const apply = (live: LiveVersions | null) => { + const versions = live?.versions[packageId]; + if (!versions) { + return; + } + const pair = latestFromVersions(versions); + const next = preferNewer(version, pair.stable ?? pair.prerelease); + if (next !== null && next !== version) { + setResolvedTabs(installTabs(kind, packageId, next)); + } + }; + const stored = readLiveVersions(); + apply(stored); + if (stored && !isStale(stored)) { + return () => { + cancelled = true; + }; + } + void refreshLiveVersions([packageId], stored).then((refreshed) => { + if (!cancelled) { + apply(refreshed); + } + }); + return () => { + cancelled = true; + }; + }, [packageId, kind, version]); + + if (resolvedTabs.length === 0) { return null; } - const tab = tabs[Math.min(active, tabs.length - 1)]; + const tab = resolvedTabs[Math.min(active, resolvedTabs.length - 1)]; if (!tab) { return null; } @@ -89,7 +145,7 @@ export default function InstallPanel({ tabs }: Props) { } event.preventDefault(); const direction = event.key === 'ArrowRight' ? 1 : -1; - const next = (active + direction + tabs.length) % tabs.length; + const next = (active + direction + resolvedTabs.length) % resolvedTabs.length; setActive(next); document.getElementById(`install-tab-${next}`)?.focus(); }; @@ -103,7 +159,7 @@ export default function InstallPanel({ tabs }: Props) { tabIndex={-1} class="flex flex-wrap gap-1 px-1" > - {tabs.map((tabOption, index) => ( + {resolvedTabs.map((tabOption, index) => (