Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,9 @@ jobs:
test -f .output/public/apps/standards/index.html
test -f .output/public/ideas/equivalence-engine/index.html
test -f .output/public/ideas/uniconfig/index.html
test -f .output/public/ideas/uniprovider/index.html
test -f .output/public/ideas/opr-directory/index.html
test -f .output/public/ideas/provider-mirror-backups/index.html

- name: Verify news, changelog, and feed artifacts
run: |
Expand Down
2 changes: 1 addition & 1 deletion README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ pnpm dev
* `public/` — Static assets (includes generated feeds under `public/news/`)
* `src/lib/news-posts.generated.json` / `changelog-entries.generated.json` — build outputs from `pnpm news:build`
* `app.config.ts` — SolidStart/Vinxi configuration
* `docs/` — Antora component (published on link:https://docs.devcentr.org/devcentr-org/[docs.devcentr.org])
* `docs/` — Antora component (published on link:https://docs.devcentr.org/devcentr-org/[docs.devcentr.org]); includes apps catalogue and inference/OPR guides
* `DESIGN.md` — Design philosophy and guidelines

== Site Generation
Expand Down
3 changes: 3 additions & 0 deletions app.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ export default defineConfig({
"/apps/standards",
"/ideas/equivalence-engine",
"/ideas/uniconfig",
"/ideas/uniprovider",
"/ideas/opr-directory",
"/ideas/provider-mirror-backups",
...newsRoutes,
],
},
Expand Down
2 changes: 2 additions & 0 deletions docs/modules/ROOT/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
** xref:explanation/news-and-changelog.adoc[News & changelog pipeline]
** xref:explanation/theme-reveal.adoc[Theme reveal]
** xref:explanation/stack-advisor.adoc[Stack Advisor]
** xref:explanation/apps-catalog.adoc[Apps catalogue]
** xref:explanation/inference-opr.adoc[Inference & OPR]
** xref:explanation/bootstrap-templates.adoc[Agent skills]
** xref:how-to/local-development.adoc[Local development]
** xref:help-and-support-plans.adoc[Help & support plans]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
= Provider search and mirror backups
:description: Vision service entry and news for provider-native search and consumer mirror backups.

== Catalogue

Added **Provider mirror backups** (services) with idea slug `provider-mirror-backups` — vision for opt-in mirror backups that mimic a provider's shape/API and provider-native fuzzy/vector search.

Near-term wedge: personal `.issues` submission archives plus Issues Browser forge metadata backups.

Prerender route and CI artifact check for `/ideas/provider-mirror-backups`.

== News

link:https://devcentr.org/news/2026-09-02-provider-search-and-mirror-backups[Provider search and consumer mirror backups]

== Docs

* xref:explanation/inference-opr.adoc[Inference — UniProvider & OPR] (mirror vision section)
* Encyclopedia: https://docs.devcentr.org/general-knowledge/explanation/infrastructure/provider-search-and-mirror-backups.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
= UniProvider, OPR, SoloMD, and OPR Directory
:description: Apps catalogue and news for Open Provider Registry ecosystem entries.

== Catalogue

Added to `src/lib/apps-catalog.ts`:

* **UniProvider** (products) — idea slug `uniprovider`
* **Open Provider Registry (OPR)** (standards) — links to `spec/opr.md`
* **OPR Directory** (services) — idea slug `opr-directory`; SolidStart on Netlify/Vercel

Prerender routes and CI artifact checks extended for `/ideas/uniprovider` and `/ideas/opr-directory`.

== News

* link:https://devcentr.org/news/2026-09-02-one-registration-protocol-for-model-runners[One registration protocol for model runners] — OPR as protocol vs product brand war
* link:https://devcentr.org/news/2026-09-02-solomd-for-markdown-on-disk[SoloMD for Markdown on disk] — editor consuming discovery via OpenAI-compat HTTP

Screenshots under `public/news/media/solomd-*.png`.

== Implementation note

OPR Directory moved from tentative skeleton to SolidStart implementation in `dev-centr/opr-directory`.

== Docs

* xref:explanation/inference-opr.adoc[Inference — UniProvider & OPR]
* Canonical spec: https://github.com/dev-centr/uniprovider/blob/main/spec/opr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
= MarkView for reading Markdown on disk
:description: News recommending MarkView as a third-party local Markdown viewer.

== News

link:https://devcentr.org/news/2026-09-03-markview-for-reading-markdown-on-disk[MarkView for reading Markdown on disk]

MarkView is recommended on the general-knowledge **recommended tools** list as a free native **viewer** (no editing) for macOS, Windows, and Linux.

Screenshot: `public/news/media/markview-biome-readme.png`.

== Scope

* **People's machines** — third-party tool for opening `.md` files outside Dev-Centr products
* **Not in-app** — DevCentr apps keep in-house rendering; org docs stay on Antora

== Docs

* https://docs.devcentr.org/general-knowledge/explanation/documentation/markdown-editors-on-disk.html[Markdown editors on local disk]
* https://docs.devcentr.org/general-knowledge/reference/recommended-tools.html[Recommended tools]
13 changes: 8 additions & 5 deletions docs/modules/ROOT/pages/changelog.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,25 @@

Timeline of notable documentation and site changes in the devcentr.org repository.

== 2026-09-02 — Provider mirror backups idea + news

* Apps catalog / idea: `/ideas/provider-mirror-backups` (vision service).
* News: Provider search and consumer mirror backups.

== 2026-09-03 — MarkView for reading Markdown

* News: MarkView as free local Markdown **viewer only** (no editing) for people’s machines; DevCentr products keep in-house rendering.
* Screenshot under `public/news/media/markview-biome-readme.png`.
* See xref:changelog-details/2026-09-03 - markview.adoc[Detailed changelog].

== 2026-09-02 — Provider mirror backups idea + news

* Apps catalog / idea: `/ideas/provider-mirror-backups` (vision service).
* News: Provider search and consumer mirror backups.
* See xref:changelog-details/2026-09-02 - provider-mirror-backups.adoc[Detailed changelog].

== 2026-09-02 — UniProvider, OPR, SoloMD, OPR Directory MVP

* Apps catalog: UniProvider (product), OPR (standards), OPR Directory (SolidStart service — Netlify/Vercel).
* News: SoloMD for Markdown on disk; one registration protocol for model runners.
* Screenshots under `public/news/media/solomd-*.png`.
* OPR Directory moved from tentative skeleton to SolidStart implementation (see `dev-centr/opr-directory`).
* See xref:changelog-details/2026-09-02 - uniprovider-opr-solod.adoc[Detailed changelog].

== 2026-08-25 — Stack Advisor multiselect + path docs

Expand Down
66 changes: 66 additions & 0 deletions docs/modules/ROOT/pages/explanation/apps-catalog.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
= Apps catalogue
:navtitle: Apps catalogue
:description: How devcentr.org lists products, services, and standards — catalog data, idea pages, and GitHub Pages routing.

The public **Apps** section (`/apps`) is a marketing catalogue for Dev-Centr offerings.
Data lives in a single TypeScript module; idea pages expand entries that need more context than a one-line summary.

== Categories

Three panes under `/apps`:

[cols="1,2",options="header"]
|===
| Route | Contents

| `/apps/products`
| Shipped or in-progress products (DevCentr, UniConfig, Stack Advisor, UniProvider, …)

| `/apps/services`
| Hosted or planned services (PackageHub, OPR Directory, provider mirror vision, …)

| `/apps/standards`
| Protocols and shared specs (CentrMark, Open Provider Registry)
|===

Each list item is a `CatalogItem` in `src/lib/apps-catalog.ts` with `id`, `name`, `summary`, `href`, optional `logo`, `tags`, and optional `ideaSlug`.

== Idea pages

Entries with an `ideaSlug` link to `/ideas/<slug>` for a longer overview and linked repositories.

Idea content is an `IdeaPage` in the same file (`ideas` array): `slug`, `title`, `category`, `overview`, and `repos[]`.

Rendering:

* Dynamic route: `src/routes/ideas/[slug].tsx` → `IdeaDetail` component
* Optional file route: `src/routes/ideas/<slug>.tsx` when Vinxi prerender must emit a static `index.html` at build time (see below)
* Breadcrumb: `Apps / <Category> / <Title>` via `PageTrail`; topic tags (e.g. `Tooling · Config`) sit below the trail, not in it

== Adding or updating an entry

. Edit `src/lib/apps-catalog.ts` — add or update `products`, `services`, or `standards`, and optionally an `ideas[]` record.
. Add a logo under `public/apps/logos/` when a product mark exists (omit when none).
. For a new idea slug:
** Add the slug to `app.config.ts` `router.prerender.routes` (e.g. `/ideas/uniprovider`) so Vinxi emits HTML at build time.
** `scripts/spa-fallback.mjs` also copies the SPA shell into `.output/public/ideas/<slug>/` for every slug in `ideas[]` — required for direct GitHub Pages loads when prerender misses a slug.
** Optionally add `src/routes/ideas/<slug>.tsx` as a dedicated file route (same pattern as `uniconfig.tsx`).
. Extend `.github/workflows/ci.yml` artifact checks for new `/ideas/<slug>/index.html` paths.
. Changelog: add a dated entry to xref:changelog.adoc[Changelog] with a detail page under `changelog-details/`.
. News (optional): narrative post under `content/news/` — see xref:explanation/news-and-changelog.adoc[News & changelog pipeline].

Deep product docs belong in the owning repo's Antora component (e.g. `uniconfig`, `general-knowledge`), not duplicated here.

== Key files

* Data: `src/lib/apps-catalog.ts`
* List UI: `src/components/catalog-page.tsx`
* Idea UI: `src/components/idea-detail.tsx`
* Routes: `src/routes/apps/`, `src/routes/ideas/`
* SPA fallback: `scripts/spa-fallback.mjs`
* Prerender list: `app.config.ts` → `router.prerender.routes`

== See also

* xref:explanation/inference-opr.adoc[Inference — UniProvider & OPR] — recent services/standards entries
* xref:explanation/site-architecture.adoc[Site architecture] — full route map and build pipeline
69 changes: 69 additions & 0 deletions docs/modules/ROOT/pages/explanation/inference-opr.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
= Inference — UniProvider & OPR
:navtitle: Inference & OPR
:description: How devcentr.org surfaces Open Provider Registry (OPR), UniProvider, and OPR Directory — catalogue entries and links to canonical specs.

September 2026 added inference-related catalogue entries and news.
This page documents what the **marketing site** exposes; protocol and implementation detail live in sibling repositories.

== Problem (one sentence)

Local model runners should register once in a **neutral format** so editors and aggregators discover them without each app inventing its own JSON drop folder.

== What appears on devcentr.org

[cols="1,2",options="header"]
|===
| Catalogue entry | Route / link

| **UniProvider** (product)
| `/ideas/uniprovider` — reference D library, CLI, well-known probes, localhost OpenAI-compat aggregator

| **Open Provider Registry (OPR)** (standard)
| Standards list → `spec/opr.md` on GitHub — on-disk manifests + optional HTTP

| **OPR Directory** (service)
| `/ideas/opr-directory` — SolidStart online catalog; providers self-register; apps poll `GET /opr/v1/providers`

| **Provider mirror backups** (vision)
| `/ideas/provider-mirror-backups` — architectural direction for consumer-portable data and provider-native search; near-term wedge via `.issues` archives
|===

News posts (September 2026):

* link:https://devcentr.org/news/2026-09-02-one-registration-protocol-for-model-runners[One registration protocol for model runners]
* link:https://devcentr.org/news/2026-09-02-solomd-for-markdown-on-disk[SoloMD for Markdown on disk] — editor slot that consumes OPR discovery via OpenAI-compat HTTP

== Canonical documentation (not in this repo)

[cols="1,2",options="header"]
|===
| Topic | Where

| OPR spec
| https://github.com/dev-centr/uniprovider/blob/main/spec/opr.md[`dev-centr/uniprovider` → `spec/opr.md`]

| UniProvider implementation
| https://github.com/dev-centr/uniprovider[dev-centr/uniprovider]

| Online directory app
| https://github.com/dev-centr/opr-directory[dev-centr/opr-directory] (SolidStart · Netlify/Vercel; planned `providers.devcentr.org`)

| Encyclopedia overview
| https://docs.devcentr.org/general-knowledge/explanation/infrastructure/uniprovider.html[general-knowledge — UniProvider and OPR]

| Provider search vision
| https://docs.devcentr.org/general-knowledge/explanation/infrastructure/provider-search-and-mirror-backups.html[general-knowledge — Provider search and mirror backups]
|===

== Boundaries

* **OPR** answers *what runners exist and how to reach them* — not routing which model to use for a job.
* **UniProvider** is a reference implementation; other aggregators may speak OPR without depending on it.
* **OPR Directory** is for publicly reachable providers; localhost runners stay on disk via UniProvider.
* **MarkView** (September news) is a third-party *viewer* for people's machines — not an in-app or org-docs renderer. See general-knowledge link:https://docs.devcentr.org/general-knowledge/explanation/documentation/markdown-editors-on-disk.html[Markdown editors on local disk].

== Maintaining catalogue copy

Edit `src/lib/apps-catalog.ts` and follow xref:explanation/apps-catalog.adoc[Apps catalogue] for idea pages, prerender routes, and CI checks.

Changelog: xref:changelog-details/2026-09-02 - uniprovider-opr-solod.adoc[2026-09-02 UniProvider & OPR], xref:changelog-details/2026-09-02 - provider-mirror-backups.adoc[2026-09-02 Provider mirror backups], xref:changelog-details/2026-09-03 - markview.adoc[2026-09-03 MarkView].
4 changes: 2 additions & 2 deletions docs/modules/ROOT/pages/explanation/site-architecture.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ devcentr.org is a **static** SolidStart (Vinxi) application.
| Apps catalogue (data in `src/lib/apps-catalog.ts`)

| `/ideas/:slug`
| Idea pages for catalogue entries with `ideaSlug`
| Idea pages for catalogue entries with `ideaSlug` (`uniconfig`, `uniprovider`, `opr-directory`, `provider-mirror-backups`, `equivalence-engine`)

| `/stack-advisor`
| Interactive stack decision flow (browse + advice modes; SDL from `stack-advisor` repo). `/toolchain-browser` and `/toolchain-advisor` redirect here.
Expand Down Expand Up @@ -76,7 +76,7 @@ Custom domain `devcentr.org` is configured in the repository's Pages settings.
== Key source locations

* `src/routes/` — page components
* `src/components/` — shared UI (header, footer, diagrams, toolchain browser widget, agent skills catalog)
* `src/components/` — shared UI (header, footer, diagrams, stack advisor widget, agent skills catalog, apps catalogue)
* `src/lib/` — catalog data, changelog loader, theme reveal, site links
* `content/news/` — authored news (see xref:explanation/news-and-changelog.adoc[News & changelog pipeline])
* `public/brand/` — SVG logo marks (canonical org assets live in `.github` profile repos)
Expand Down
1 change: 1 addition & 0 deletions docs/modules/ROOT/pages/how-to/local-development.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -77,5 +77,6 @@ See xref:walkthrough-vscode-and-ci.adoc[VS Code & CI walkthrough] for rationale.
* **Stale news or changelog** — run `pnpm news:build` after editing `content/news/` or after pulling sibling changelog files.
* **Advisor page empty** — run `pnpm sync-advisor` with `stack-advisor` checked out; verify `public/catalog/advisor.json` exists.
* **Skills / bootstrap selector empty** — run `pnpm sync-bootstrap-profiles` with `agent-rules` checked out; verify `public/catalog/bootstrap-profiles.json` exists (gitignored, not committed).
* **New idea page 404 on GitHub Pages** — add `/ideas/<slug>` to `app.config.ts` prerender routes; confirm `scripts/spa-fallback.mjs` ran in `postbuild`. See xref:explanation/apps-catalog.adoc[Apps catalogue].
* **CI fails `skills/index.html`** — Vinxi does not emit a directory index for client-only routes; `scripts/spa-fallback.mjs` must copy the SPA shell into `.output/public/skills/`.
* **Build fails on CI but works locally** — CI uses `pnpm install --no-frozen-lockfile`; ensure lockfile is committed after dependency changes.
6 changes: 6 additions & 0 deletions docs/modules/ROOT/pages/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ https://devcentr.org
| SDL catalog sync and `/stack-advisor`
| xref:explanation/stack-advisor.adoc[Stack Advisor]

| Products, services, standards, and idea pages
| xref:explanation/apps-catalog.adoc[Apps catalogue]

| UniProvider, OPR, OPR Directory (September 2026)
| xref:explanation/inference-opr.adoc[Inference & OPR]

| Agent skills catalog (`/skills`; `/templates` redirects)
| xref:explanation/bootstrap-templates.adoc[Agent skills]

Expand Down
2 changes: 1 addition & 1 deletion src/lib/apps-catalog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ export const products: CatalogItem[] = [
id: "stack-advisor",
name: "Stack Advisor",
summary:
"Reach a host · target · language · toolchain stack. Guided path or DIY filters; browse and advice are modes.",
"Reach a host · target · language · toolchain stack via one sample-based filter path; browse and advice are modes.",
href: "/stack-advisor",
tags: "Tooling · Toolchains",
},
Expand Down
Loading