From ee024dcbc4d8b012428c7baa3de014ebd8baf1ad Mon Sep 17 00:00:00 2001 From: Raul Jimenez Ortega Date: Wed, 4 Nov 2026 19:52:02 +0100 Subject: [PATCH 1/2] docs: separate the workspace-internal packages from the published ones MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Packages table listed nine entries and meant two different things by them. Eight are on npm; `discover-feed` is `"private": true` and its own README opens with "Internal, workspace-only package." Someone reading the table had no way to tell, and `npm i @opentechevents/discover-feed` 404s. `feed-urls` and `preview-feed` were missing from the table entirely — also internal, so leaving them out was consistent, but it left the repo with no single place that says what they are or who uses them. So the published table now holds only published packages, and the three internal ones get their own table with the thing that actually matters about them: which apps depend on them. All three exist for the same reason — two apps in this repo needed the same logic and a second copy would have drifted — and none carries a compatibility promise. Also corrects the versioning sentence: `migrate` does not follow the spec minor it implements, because it spans versions rather than implementing one. Co-Authored-By: Claude Opus 5 --- README.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0109103..c98ab59 100644 --- a/README.md +++ b/README.md @@ -24,14 +24,27 @@ Design rationale lives in [DESIGN.md](DESIGN.md); the spec lives in | [`@opentechevents/import-ics`](packages/import-ics/) | iCalendar (`.ics`) → partial OTE event documents (review-and-complete). | | [`@opentechevents/import-jsonld`](packages/import-jsonld/) | schema.org Event JSON-LD in an HTML page → partial OTE event documents. | | [`@opentechevents/build-feed`](packages/build-feed/) | `events/*.json` + `ote.config.json` → validated `feed.json` + `feed.ics` + `feed.xml`. | -| [`@opentechevents/discover-feed`](packages/discover-feed/) | Reference implementation of feed discovery: response bytes + content-type + URL → candidate feed URLs. No network. | All connectors are pure functions with a thin CLI on top. They never invent data: a field absent in the input stays absent in the output. -Published packages follow the OTE spec minor they implement (`0.4.x` speaks -OTE spec v0.4). Each package also has its own changelog so fixes and -improvements can be traced package by package. +Most packages follow the OTE spec minor they implement (`0.4.x` speaks OTE +spec v0.4). `migrate` is the exception and is versioned on its own: it spans +versions rather than implementing one. Each package also has its own +changelog so fixes and improvements can be traced package by package. + +### Workspace-internal packages + +These are **not published to npm** (`"private": true`). They exist because +two apps in this repo needed the same logic and a second copy would have +drifted — not as libraries for outside use, so they carry no compatibility +promise and can change shape whenever their callers do. + +| Package | What it does | Used by | +| --- | --- | --- | +| [`@opentechevents/discover-feed`](packages/discover-feed/) | Reference implementation of feed discovery: response bytes + content-type + URL → candidate feed URLs. No network. | `apps/validator`, `workers/validator` | +| [`@opentechevents/feed-urls`](packages/feed-urls/) | `?repo=owner/name` → the URLs a browser can actually fetch a fork's published files from, including the custom-domain cases. | `apps/publish`, `apps/preview`, `apps/editor` | +| [`@opentechevents/preview-feed`](packages/preview-feed/) | Normalizes the three export formats (JSON, ICS, RSS) into one `PreviewFeed`/`PreviewEvent` shape for display. | `apps/embed`, `apps/preview`, `apps/editor` | ## Apps From 12c7fbd58e5fa2f63839d4a93521667e3982a4df Mon Sep 17 00:00:00 2001 From: Raul Jimenez Ortega Date: Wed, 4 Nov 2026 19:52:41 +0100 Subject: [PATCH 2/2] docs: the spec badge still said v0.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The repo implements OTE Spec 0.6.0 — the badge at the top of the README and the versioning sentence below the table both still claimed 0.4. The badge is the first thing a visitor reads about which spec this kit speaks. Co-Authored-By: Claude Opus 5 --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c98ab59..978354e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![CI](https://github.com/OpenTechEvents/ote-tools/actions/workflows/ci.yml/badge.svg)](https://github.com/OpenTechEvents/ote-tools/actions/workflows/ci.yml) [![Deploy tools site](https://github.com/OpenTechEvents/ote-tools/actions/workflows/deploy-tools.yml/badge.svg)](https://github.com/OpenTechEvents/ote-tools/actions/workflows/deploy-tools.yml) -![OTE spec](https://img.shields.io/badge/OTE%20spec-v0.4-2563eb) +![OTE spec](https://img.shields.io/badge/OTE%20spec-v0.6-2563eb) ![Node](https://img.shields.io/badge/node-%3E%3D22-339933) ![pnpm](https://img.shields.io/badge/pnpm-11.13.1-f69220) @@ -28,8 +28,8 @@ Design rationale lives in [DESIGN.md](DESIGN.md); the spec lives in All connectors are pure functions with a thin CLI on top. They never invent data: a field absent in the input stays absent in the output. -Most packages follow the OTE spec minor they implement (`0.4.x` speaks OTE -spec v0.4). `migrate` is the exception and is versioned on its own: it spans +Most packages follow the OTE spec minor they implement (`0.6.x` speaks OTE +spec v0.6). `migrate` is the exception and is versioned on its own: it spans versions rather than implementing one. Each package also has its own changelog so fixes and improvements can be traced package by package.