openvibers/openvibe.publishing Commits
README and STATUS list all fifteen products that pin Publishing, and which release each line uses (#57)
Changes
@@@ -13,10 +13,12 @@ seven sites render through `openvibe-shared/shell` (additive). v1.3.0 forwards t`updated` and `url` through `layout.renderDocument` to the shell (additive). v1.4.0 adds `openvibe-publishing/search-feed`,which puts a record product's pages in OpenVibe.Search (additive). v1.4.1 keeps a request path that starts withseveral slashes (`//feed/`) on the site in `seo.canonicalUrl`, where it threw (a 500 on News, Deals and Blog). The exit proof (`examples/two-products`) runs in `npm test`.--Releases v0.1.0 to v1.4.1 are tagged (see [CHANGELOG.md](CHANGELOG.md)). All seven publication products pin v1.3.0--on PostgreSQL today, and all seven are public: openvibe.wiki, openvibe.blog, openvibe.news, openvibe.reviews,--openvibe.deals, openvibe.coupons and openvibe.trade. Seven record products pin v1.4.0 for the search feed: Work, Rent,--Help, Inventory, Quest, Food and Host. Each adopts a release by pinning its tag.++Releases v0.1.0 to v1.4.1 are tagged (see [CHANGELOG.md](CHANGELOG.md)). Fifteen products pin a release. The seven++publication products run on PostgreSQL and are public: openvibe.wiki, openvibe.blog, openvibe.news, openvibe.reviews,++openvibe.deals, openvibe.coupons and openvibe.trade (on 2026-10-22 Blog, News and Deals pinned v1.4.1, the other four++v1.3.0). Seven more use `search-feed` to put their pages in OpenVibe.Search: Work, Rent, Help, Inventory, Quest, Host and++OpenVibe.Games (its creator worlds); Food uses the AI draft client. Each adopts a release by pinning its tag, and++OpenVibe.Contracts' `docs/ESTATE.md` lists every pin.**Package:** `openvibe-publishing` (CommonJS, Node ≥ 20, production runs Node 22).**License:** MIT, like OpenVibe.Shared.@@@ -409,9 +411,9 @@ eval "$(node_modules/openvibe-sdk/scripts/test-services.sh up)" && fnm exec --us- `openvibe-sdk` ≥ 0.15.0 (`openvibe-sdk/db`), a peer dependency supplied by the consumer: its`createDb` handle (and `pg` in production, `@electric-sql/pglite` in tests) reach the stores through-- the product. Tests pin v0.35.0.++ the product. Tests pin v0.60.0.- PostgreSQL 18 (through PgBouncer in transaction mode), the product's own database (ADR-035).--- `openvibe-shared` ≥ 1.5.0 (`seo`), a peer dependency supplied by the consumer (tests use v1.25.0).++- `openvibe-shared` ≥ 1.5.0 (`seo`), a peer dependency supplied by the consumer (tests use v4.4.0).- Contracts it produces for: `common.entity-ref@1`, `media.media-ref@1`, `events.event-envelope@1`and `search.index-document@1` (validated in tests against `openvibe-contracts` v0.209.0, adevDependency: nothing in `lib/` needs it at runtime).@@@ -29,22 +29,31 @@"search-feed"],"consumers": [-- "OpenVibe.Wiki (v1.3.0 on PostgreSQL; public at https://openvibe.wiki)",-- "OpenVibe.Blog (v1.3.0 on PostgreSQL; public at https://openvibe.blog)",-- "OpenVibe.News (v1.3.0 on PostgreSQL; public at https://openvibe.news)",-- "OpenVibe.Reviews (v1.3.0 on PostgreSQL; public at https://openvibe.reviews)",-- "OpenVibe.Deals (v1.3.0 on PostgreSQL; public at https://openvibe.deals)",-- "OpenVibe.Coupons (v1.3.0 on PostgreSQL; public at https://openvibe.coupons)",-- "OpenVibe.Trade (v1.3.0 on PostgreSQL; public at https://openvibe.trade)"++ "OpenVibe.Wiki (https://openvibe.wiki): revisions, schedule, taxonomy, citations, media, discussion, seo, authorship, index-hooks, ssr, layout",++ "OpenVibe.Blog (https://openvibe.blog): the same plus ai and ingest",++ "OpenVibe.News (https://openvibe.news): revisions, taxonomy, citations, discussion, seo, authorship, index-hooks, ssr, ingest, publication, layout",++ "OpenVibe.Reviews (https://openvibe.reviews): revisions, discussion, seo, authorship, index-hooks, ssr, ingest, publication, layout",++ "OpenVibe.Deals (https://openvibe.deals): discussion, seo, index-hooks, ssr, ingest, publication, layout",++ "OpenVibe.Coupons (https://openvibe.coupons): seo, index-hooks, ssr, ingest, publication, layout",++ "OpenVibe.Trade (https://openvibe.trade): revisions, seo, authorship, index-hooks, ssr, ingest, publication, layout",++ "OpenVibe.Help (https://openvibe.help): search-feed",++ "OpenVibe.Host (https://openvibe.host): search-feed, ingest, discussion",++ "OpenVibe.Inventory (https://inventory.openvibe.network): search-feed",++ "OpenVibe.Quest (https://openvibe.quest): search-feed",++ "OpenVibe.Rent (https://openvibe.rent): search-feed, ai",++ "OpenVibe.Work (https://openvibe.work): search-feed",++ "OpenVibe.Games (https://openvibe.games, apps/server): search-feed for creator worlds",++ "OpenVibe.Food (https://openvibe.food): ai"],++ "consumerPins": "each consumer pins one release tag; OpenVibe.Contracts docs/ESTATE.md lists them","plannedConsumers": [],"exitProof": "examples/two-products + test/two-products.test.js","contracts": "openvibe-contracts v0.209.0 (devDependency): emits search.index-document@1 and events.event-envelope@1 (validated in tests)","sdk": "openvibe-sdk v0.60.0","shared": "openvibe-shared v4.4.0","dependsOn": [-- "openvibe-sdk >=0.15.0 (peer; tests pin v0.35.0)",-- "openvibe-shared >=1.5.0 (optional peer; tests pin v2.6.0; layout needs >=2.6.0)",++ "openvibe-sdk >=0.15.0 (peer; tests pin v0.60.0)",++ "openvibe-shared >=1.5.0 (optional peer; tests pin v4.4.0; layout needs >=2.6.0)","PostgreSQL 18 through PgBouncer (the product's database)"],"tests": "npm test (Node 22): 19 files, 143 cases; test/postgres.test.js runs on PostgreSQL 18 + PgBouncer when OV_TEST_PG_URL is set (CI starts the containers), else it is listed as skipped",
@@ -13,10 +13,12 @@ seven sites render through `openvibe-shared/shell` (additive). v1.3.0 forwards t
@@ -13,10 +13,12 @@ seven sites render through `openvibe-shared/shell` (additive). v1.3.0 forwards t
`updated` and `url` through `layout.renderDocument` to the shell (additive). v1.4.0 adds `openvibe-publishing/search-feed`,
`updated` and `url` through `layout.renderDocument` to the shell (additive). v1.4.0 adds `openvibe-publishing/search-feed`,
which puts a record product's pages in OpenVibe.Search (additive). v1.4.1 keeps a request path that starts with
which puts a record product's pages in OpenVibe.Search (additive). v1.4.1 keeps a request path that starts with
several slashes (`//feed/`) on the site in `seo.canonicalUrl`, where it threw (a 500 on News, Deals and Blog). The exit proof (`examples/two-products`) runs in `npm test`.
several slashes (`//feed/`) on the site in `seo.canonicalUrl`, where it threw (a 500 on News, Deals and Blog). The exit proof (`examples/two-products`) runs in `npm test`.
-Releases v0.1.0 to v1.4.1 are tagged (see [CHANGELOG.md](CHANGELOG.md)). All seven publication products pin v1.3.0
-on PostgreSQL today, and all seven are public: openvibe.wiki, openvibe.blog, openvibe.news, openvibe.reviews,
-openvibe.deals, openvibe.coupons and openvibe.trade. Seven record products pin v1.4.0 for the search feed: Work, Rent,
-Help, Inventory, Quest, Food and Host. Each adopts a release by pinning its tag.
+Releases v0.1.0 to v1.4.1 are tagged (see [CHANGELOG.md](CHANGELOG.md)). Fifteen products pin a release. The seven
+publication products run on PostgreSQL and are public: openvibe.wiki, openvibe.blog, openvibe.news, openvibe.reviews,
+openvibe.deals, openvibe.coupons and openvibe.trade (on 2026-10-22 Blog, News and Deals pinned v1.4.1, the other four
+v1.3.0). Seven more use `search-feed` to put their pages in OpenVibe.Search: Work, Rent, Help, Inventory, Quest, Host and
+OpenVibe.Games (its creator worlds); Food uses the AI draft client. Each adopts a release by pinning its tag, and
+OpenVibe.Contracts' `docs/ESTATE.md` lists every pin.
**Package:** `openvibe-publishing` (CommonJS, Node ≥ 20, production runs Node 22).
**Package:** `openvibe-publishing` (CommonJS, Node ≥ 20, production runs Node 22).
**License:** MIT, like OpenVibe.Shared.
**License:** MIT, like OpenVibe.Shared.
@@ -409,9 +411,9 @@ eval "$(node_modules/openvibe-sdk/scripts/test-services.sh up)" && fnm exec --us
@@ -409,9 +411,9 @@ eval "$(node_modules/openvibe-sdk/scripts/test-services.sh up)" && fnm exec --us
- `openvibe-sdk` ≥ 0.15.0 (`openvibe-sdk/db`), a peer dependency supplied by the consumer: its
- `openvibe-sdk` ≥ 0.15.0 (`openvibe-sdk/db`), a peer dependency supplied by the consumer: its
`createDb` handle (and `pg` in production, `@electric-sql/pglite` in tests) reach the stores through
`createDb` handle (and `pg` in production, `@electric-sql/pglite` in tests) reach the stores through
- the product. Tests pin v0.35.0.
+ the product. Tests pin v0.60.0.
- PostgreSQL 18 (through PgBouncer in transaction mode), the product's own database (ADR-035).
- PostgreSQL 18 (through PgBouncer in transaction mode), the product's own database (ADR-035).
-- `openvibe-shared` ≥ 1.5.0 (`seo`), a peer dependency supplied by the consumer (tests use v1.25.0).
+- `openvibe-shared` ≥ 1.5.0 (`seo`), a peer dependency supplied by the consumer (tests use v4.4.0).
- Contracts it produces for: `common.entity-ref@1`, `media.media-ref@1`, `events.event-envelope@1`
- Contracts it produces for: `common.entity-ref@1`, `media.media-ref@1`, `events.event-envelope@1`
and `search.index-document@1` (validated in tests against `openvibe-contracts` v0.209.0, a
and `search.index-document@1` (validated in tests against `openvibe-contracts` v0.209.0, a
devDependency: nothing in `lib/` needs it at runtime).
devDependency: nothing in `lib/` needs it at runtime).
@@ -29,22 +29,31 @@
@@ -29,22 +29,31 @@
"search-feed"
"search-feed"
],
],
"consumers": [
"consumers": [
- "OpenVibe.Wiki (v1.3.0 on PostgreSQL; public at https://openvibe.wiki)",
- "OpenVibe.Blog (v1.3.0 on PostgreSQL; public at https://openvibe.blog)",
- "OpenVibe.News (v1.3.0 on PostgreSQL; public at https://openvibe.news)",
- "OpenVibe.Reviews (v1.3.0 on PostgreSQL; public at https://openvibe.reviews)",
- "OpenVibe.Deals (v1.3.0 on PostgreSQL; public at https://openvibe.deals)",
- "OpenVibe.Coupons (v1.3.0 on PostgreSQL; public at https://openvibe.coupons)",
- "OpenVibe.Trade (v1.3.0 on PostgreSQL; public at https://openvibe.trade)"
+ "OpenVibe.Wiki (https://openvibe.wiki): revisions, schedule, taxonomy, citations, media, discussion, seo, authorship, index-hooks, ssr, layout",
+ "OpenVibe.Blog (https://openvibe.blog): the same plus ai and ingest",
+ "OpenVibe.News (https://openvibe.news): revisions, taxonomy, citations, discussion, seo, authorship, index-hooks, ssr, ingest, publication, layout",
+ "OpenVibe.Reviews (https://openvibe.reviews): revisions, discussion, seo, authorship, index-hooks, ssr, ingest, publication, layout",
+ "OpenVibe.Deals (https://openvibe.deals): discussion, seo, index-hooks, ssr, ingest, publication, layout",
+ "OpenVibe.Coupons (https://openvibe.coupons): seo, index-hooks, ssr, ingest, publication, layout",
+ "OpenVibe.Trade (https://openvibe.trade): revisions, seo, authorship, index-hooks, ssr, ingest, publication, layout",
+ "OpenVibe.Help (https://openvibe.help): search-feed",
+ "OpenVibe.Host (https://openvibe.host): search-feed, ingest, discussion",
+ "OpenVibe.Inventory (https://inventory.openvibe.network): search-feed",
+ "OpenVibe.Quest (https://openvibe.quest): search-feed",
+ "OpenVibe.Rent (https://openvibe.rent): search-feed, ai",
+ "OpenVibe.Work (https://openvibe.work): search-feed",
+ "OpenVibe.Games (https://openvibe.games, apps/server): search-feed for creator worlds",
+ "OpenVibe.Food (https://openvibe.food): ai"
],
],
+ "consumerPins": "each consumer pins one release tag; OpenVibe.Contracts docs/ESTATE.md lists them",
"plannedConsumers": [],
"plannedConsumers": [],
"exitProof": "examples/two-products + test/two-products.test.js",
"exitProof": "examples/two-products + test/two-products.test.js",
"contracts": "openvibe-contracts v0.209.0 (devDependency): emits search.index-document@1 and events.event-envelope@1 (validated in tests)",
"contracts": "openvibe-contracts v0.209.0 (devDependency): emits search.index-document@1 and events.event-envelope@1 (validated in tests)",
"sdk": "openvibe-sdk v0.60.0",
"sdk": "openvibe-sdk v0.60.0",
"shared": "openvibe-shared v4.4.0",
"shared": "openvibe-shared v4.4.0",
"dependsOn": [
"dependsOn": [
- "openvibe-sdk >=0.15.0 (peer; tests pin v0.35.0)",
- "openvibe-shared >=1.5.0 (optional peer; tests pin v2.6.0; layout needs >=2.6.0)",
+ "openvibe-sdk >=0.15.0 (peer; tests pin v0.60.0)",
+ "openvibe-shared >=1.5.0 (optional peer; tests pin v4.4.0; layout needs >=2.6.0)",
"PostgreSQL 18 through PgBouncer (the product's database)"
"PostgreSQL 18 through PgBouncer (the product's database)"
],
],
"tests": "npm test (Node 22): 19 files, 143 cases; test/postgres.test.js runs on PostgreSQL 18 + PgBouncer when OV_TEST_PG_URL is set (CI starts the containers), else it is listed as skipped",
"tests": "npm test (Node 22): 19 files, 143 cases; test/postgres.test.js runs on PostgreSQL 18 + PgBouncer when OV_TEST_PG_URL is set (CI starts the containers), else it is listed as skipped",