Repositories openvibers openvibe.publishing official

openvibers/openvibe.publishing

Open source publishing packages: drafts, revisions, citations, SEO gate, feeds and structured data for Wiki, Blog, News, Reviews, Deals, Coupons and Trade.

Get it

Get this repository

Clone over HTTPS

A Git token is made for this copy and shown once. It can read and write the repositories you own, and expires in an hour.

git clone https://git.openvibe.codes/openvibers/openvibe.publishing.git
Clone to my computer

OpenVibe Link asks you on your computer. The folder is inside the root you chose in Link, and the request ends after two minutes.

Clone to my computer
Open in Codes

A Codes session clones from our disk: no network, no GitHub quota. When this repository has a GitHub twin, Codes pushes there too.

Open in Codes
Files at main
.githubopenvibe-shared v4.223.0 (was v4.214.0) (#226)19 h ago
.gitignoreopenvibe-publishing 0.1.0: shared publishing packages (revisions, schedule, taxonomy, citations, media, discussion, seo gate, authorship, index hooks, ssr) with the two-products exit proof23 Sept 202643 B
AGENTS.mdAGENTS.md: the context an agent starts from (#225)1 days ago10.6 KB
CHANGELOG.md1.7.1: a callout with no title starts at its padding (#204)3 days ago36.2 KB
CITATION.cffREADME first screen and CITATION.cff (#202)3 days ago519 B
CLAUDE.mdAGENTS.md: the context an agent starts from (#225)1 days ago11 B
LICENSEopenvibe-publishing 0.1.0: shared publishing packages (revisions, schedule, taxonomy, citations, media, discussion, seo gate, authorship, index hooks, ssr) with the two-products exit proof23 Sept 20261.0 KB
README.mdopenvibe-shared v4.235.0 (was v4.234.0) (#240)21 min ago30.6 KB
SECURITY.mdSECURITY.md: how to report a vulnerability ([email protected], 7-day reply, scope, supported versions)24 Sept 2026986 B
STATUS.jsonopenvibe-shared v4.235.0 (was v4.234.0) (#240)21 min ago4.7 KB
blocks.css1.7.1: a callout with no title starts at its padding (#204)3 days ago9.9 KB
docsBump release metadata to 1.3.0 and fix the AI summary migration notes4 Oct 2026
examplesPublishing 1.0.0: the stores run on PostgreSQL through openvibe-sdk/db, async (ADR-035 and its amendment: PostgreSQL 18 behind PgBouncer is every service's system of record, one SQL dialect, PGlite in tests). Every store (revisions, citations, media, discussion refs, schedule, the review log, taxonomy, redirects, the index sequencer) takes the product's openvibe-sdk/db handle instead of a better-sqlite3 one, and every method that touches data is async with the 0.4 names and result shapes. Each data method takes the caller's transaction handle as an optional first argument, so a product's own write and the stores' writes commit or roll back together; multi-statement store writes run in their own db.tx or in a savepoint of the caller's, so a 412/404/410 leaves the caller's transaction usable; indexSequencer.stamp(t, doc) takes the handle always, like outbox.enqueue(t, …). Stores no longer create tables: each module exports schema(prefix) (seo redirectsSchema, index-hooks sequencerSchema, and the root schema({ … }) joining several) for the product's migrations, and store.ensureSchema() runs it for tests. The DDL uses bigint identity keys, jsonb, bigint epoch ms, timestamptz for citations' retrieved_at and COLLATE "C" on identifiers, keeps every CHECK, turns the RAISE(ABORT) guards into PL/pgSQL triggers (SQLSTATE 23001), and has an index under every statement the stores send. Writers of one entity take pg_advisory_xact_lock where 0.4 relied on SQLite's single writer; the scheduler claims with one UPDATE … FOR UPDATE SKIP LOCKED; get-or-create uses ON CONFLICT; loops became ANY/unnest queries and batched inserts (setTerms, attachMany, carryForward, drafts, verify); lists are bounded, cross-entity lists page by keyset (after), and new batch reads (revisions.getMany, citations.forRevisions, reviews.latestMany, taxonomy.termsForMany) keep list routes free of N+1. openvibe-sdk >=0.15.0 is a peer (one copy of the data layer per service; the sql fragments must come from the handle's own SDK), better-sqlite3 is dropped, and PGlite, pg and the SDK v0.15.0 tag are devDependencies. The two-product example applies generated migrations with db.migrate and writes its Search events in the same transaction. Every 0.4 test is kept on PGlite; new schema, transaction, query-count and PgBouncer integration tests; CI starts the PostgreSQL 18 + PgBouncer containers. npm test (Node 22.22.1): 16/16 files, 121 cases with the containers (8 through PgBouncer); 15/16 and 1 skipped without them.28 Sept 2026
index.js1.6.0: the rich block model (openvibe-publishing/blocks) (#186)4 days ago2.7 KB
libopenvibe-shared v4.186.0 (was v4.179.0) (#206)3 days ago
package-lock.jsonopenvibe-shared v4.235.0 (was v4.234.0) (#240)21 min ago32.2 KB
package.jsonopenvibe-shared v4.235.0 (was v4.234.0) (#240)21 min ago2.2 KB
testopenvibe-shared v4.197.0 (was v4.186.0) (#209)3 days ago