openvibers/openvibe.work Commits
openvibe-shared v4.126.0 (was v4.124.0) (#209)
Changes
@@@ -91,7 +91,7 @@ Its own PostgreSQL tables, created by [migrations/](migrations/) and written by- **PostgreSQL** (`DATABASE_URL`, `DATABASE_DIRECT_URL`; an embedded PGlite database in development via`WORK_PGLITE_DIR`) and **Valkey** for shared limit counters (`VALKEY_URL`, `VALKEY_PREFIX`).- **Packages**: `openvibe-contracts` v0.289.1, `openvibe-sdk` v0.94.0 (`db`, `auth`, `account-data`, `limits`,-- `valkey`, `service`) and `openvibe-shared` v4.124.0 (`frame`, `legal`, `serve`, `release`, `metrics`, `ready`,++ `valkey`, `service`) and `openvibe-shared` v4.126.0 (`frame`, `legal`, `serve`, `release`, `metrics`, `ready`,`seo`, `shell`, `cache-policy`, `showcase`, `app-icon`).## Capabilities@@@ -274,6 +274,6 @@ Part of the [OpenVibe network](https://openvibe.network). Built in the open by [<!-- versions:start -->- openvibe-contracts: v0.315.0- openvibe-sdk: v0.94.0--- openvibe-shared: v4.124.0++- openvibe-shared: v4.126.0- openvibe-publishing: v1.4.0<!-- versions:end -->@@@ -9,11 +9,11 @@"domain": "openvibe.work","contracts": "openvibe-contracts v0.315.0","sdk": "openvibe-sdk v0.94.0",-- "shared": "openvibe-shared v4.124.0",++ "shared": "openvibe-shared v4.126.0","packages": ["openvibe-contracts v0.315.0","openvibe-sdk v0.94.0",-- "openvibe-shared v4.124.0",++ "openvibe-shared v4.126.0","openvibe-publishing v1.4.0"],"summary": "OpenVibe.Work gathers job listings from three public job boards (Arbeitnow, Remotive, RemoteOK) under their terms — the source is named and the original listing is linked on every page, and only a short excerpt is kept. It searches them with facets, shows one listing with a schema.org JobPosting whose url is the original, and lets a signed-in person keep a search, see what is new since they last looked, get alerts through OpenVibe.Watch, track the jobs they apply to with a status history, and ask their OpenVibe.Actor agent to help prepare an application. Public reads need no token.",@@@ -18,7 +18,7 @@"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.315.0","openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.4.0","openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.94.0",-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.124.0",++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.126.0","pg": "^8.23.0"},"devDependencies": {@@@ -1209,9 +1209,9 @@}},"node_modules/openvibe-shared": {-- "version": "4.124.0",-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.124.0",-- "integrity": "sha512-L0u70eK/W5njDfFyH/njXA8cWP2POrsIhWlKPngyF2qXLGSo+8Cup/UDzbO+Bo7zFhniI67iuSLPVSQmAdEzfw==",++ "version": "4.126.0",++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.126.0",++ "integrity": "sha512-LF1eiR8xaT2wRtNSQ0qvVHu0lo8lfb2jPpRmkUkK8BJjNzF07fxZNuEcO16GIYYpXy7eloIMwu/DHcZwhF/Xtw==","license": "MIT","dependencies": {"jsonwebtoken": "^9.0.0",@@@ -26,7 +26,7 @@"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.315.0","openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.4.0","openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.94.0",-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.124.0",++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.126.0","pg": "^8.23.0"},"engines": {@@@ -116,7 +116,9 @@ function createSettings({ db, env = process.env, log = console, fetchImpl = globrequireFresh: (req) => String(req.get('x-ov-fresh') || '') === '1',log: appLog,});-- app.use(routes.handle);++ // The owner's test route is mounted in front of the store's dispatcher: openvibe-shared 4.125.0 gave++ // adminRoutes a test route of its own, and the dispatcher answers it first (it wants an acting subject,++ // this one the service-token capability). 2026-11-07, the openvibe-shared v4.126.0 pin round.app.post(`${BASE_PATH}/:namespace/test/:key`, guard, async (req, res) => {if (req.params.namespace !== NAMESPACE) return res.status(404).json({ error: 'no such configuration namespace' });let key = String(req.params.key || '');@@@ -130,6 +132,7 @@ function createSettings({ db, env = process.env, log = console, fetchImpl = globreturn res.status(200).json({ ok: false, detail: 'failed — the test did not finish. The service log has the reason.' });}});++ app.use(routes.handle);return routes;}
@@ -91,7 +91,7 @@ Its own PostgreSQL tables, created by [migrations/](migrations/) and written by
@@ -91,7 +91,7 @@ Its own PostgreSQL tables, created by [migrations/](migrations/) and written by
- **PostgreSQL** (`DATABASE_URL`, `DATABASE_DIRECT_URL`; an embedded PGlite database in development via
- **PostgreSQL** (`DATABASE_URL`, `DATABASE_DIRECT_URL`; an embedded PGlite database in development via
`WORK_PGLITE_DIR`) and **Valkey** for shared limit counters (`VALKEY_URL`, `VALKEY_PREFIX`).
`WORK_PGLITE_DIR`) and **Valkey** for shared limit counters (`VALKEY_URL`, `VALKEY_PREFIX`).
- **Packages**: `openvibe-contracts` v0.289.1, `openvibe-sdk` v0.94.0 (`db`, `auth`, `account-data`, `limits`,
- **Packages**: `openvibe-contracts` v0.289.1, `openvibe-sdk` v0.94.0 (`db`, `auth`, `account-data`, `limits`,
- `valkey`, `service`) and `openvibe-shared` v4.124.0 (`frame`, `legal`, `serve`, `release`, `metrics`, `ready`,
+ `valkey`, `service`) and `openvibe-shared` v4.126.0 (`frame`, `legal`, `serve`, `release`, `metrics`, `ready`,
`seo`, `shell`, `cache-policy`, `showcase`, `app-icon`).
`seo`, `shell`, `cache-policy`, `showcase`, `app-icon`).
## Capabilities
## Capabilities
@@ -274,6 +274,6 @@ Part of the [OpenVibe network](https://openvibe.network). Built in the open by [
@@ -274,6 +274,6 @@ Part of the [OpenVibe network](https://openvibe.network). Built in the open by [
<!-- versions:start -->
<!-- versions:start -->
- openvibe-contracts: v0.315.0
- openvibe-contracts: v0.315.0
- openvibe-sdk: v0.94.0
- openvibe-sdk: v0.94.0
-- openvibe-shared: v4.124.0
+- openvibe-shared: v4.126.0
- openvibe-publishing: v1.4.0
- openvibe-publishing: v1.4.0
<!-- versions:end -->
<!-- versions:end -->
@@ -9,11 +9,11 @@
@@ -9,11 +9,11 @@
"domain": "openvibe.work",
"domain": "openvibe.work",
"contracts": "openvibe-contracts v0.315.0",
"contracts": "openvibe-contracts v0.315.0",
"sdk": "openvibe-sdk v0.94.0",
"sdk": "openvibe-sdk v0.94.0",
- "shared": "openvibe-shared v4.124.0",
+ "shared": "openvibe-shared v4.126.0",
"packages": [
"packages": [
"openvibe-contracts v0.315.0",
"openvibe-contracts v0.315.0",
"openvibe-sdk v0.94.0",
"openvibe-sdk v0.94.0",
- "openvibe-shared v4.124.0",
+ "openvibe-shared v4.126.0",
"openvibe-publishing v1.4.0"
"openvibe-publishing v1.4.0"
],
],
"summary": "OpenVibe.Work gathers job listings from three public job boards (Arbeitnow, Remotive, RemoteOK) under their terms — the source is named and the original listing is linked on every page, and only a short excerpt is kept. It searches them with facets, shows one listing with a schema.org JobPosting whose url is the original, and lets a signed-in person keep a search, see what is new since they last looked, get alerts through OpenVibe.Watch, track the jobs they apply to with a status history, and ask their OpenVibe.Actor agent to help prepare an application. Public reads need no token.",
"summary": "OpenVibe.Work gathers job listings from three public job boards (Arbeitnow, Remotive, RemoteOK) under their terms — the source is named and the original listing is linked on every page, and only a short excerpt is kept. It searches them with facets, shows one listing with a schema.org JobPosting whose url is the original, and lets a signed-in person keep a search, see what is new since they last looked, get alerts through OpenVibe.Watch, track the jobs they apply to with a status history, and ask their OpenVibe.Actor agent to help prepare an application. Public reads need no token.",
@@ -18,7 +18,7 @@
@@ -18,7 +18,7 @@
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.315.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.315.0",
"openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.4.0",
"openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.4.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.94.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.94.0",
- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.124.0",
+ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.126.0",
"pg": "^8.23.0"
"pg": "^8.23.0"
},
},
"devDependencies": {
"devDependencies": {
@@ -1209,9 +1209,9 @@
@@ -1209,9 +1209,9 @@
}
}
},
},
"node_modules/openvibe-shared": {
"node_modules/openvibe-shared": {
- "version": "4.124.0",
- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.124.0",
- "integrity": "sha512-L0u70eK/W5njDfFyH/njXA8cWP2POrsIhWlKPngyF2qXLGSo+8Cup/UDzbO+Bo7zFhniI67iuSLPVSQmAdEzfw==",
+ "version": "4.126.0",
+ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.126.0",
+ "integrity": "sha512-LF1eiR8xaT2wRtNSQ0qvVHu0lo8lfb2jPpRmkUkK8BJjNzF07fxZNuEcO16GIYYpXy7eloIMwu/DHcZwhF/Xtw==",
"license": "MIT",
"license": "MIT",
"dependencies": {
"dependencies": {
"jsonwebtoken": "^9.0.0",
"jsonwebtoken": "^9.0.0",
@@ -26,7 +26,7 @@
@@ -26,7 +26,7 @@
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.315.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.315.0",
"openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.4.0",
"openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.4.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.94.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.94.0",
- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.124.0",
+ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.126.0",
"pg": "^8.23.0"
"pg": "^8.23.0"
},
},
"engines": {
"engines": {
@@ -116,7 +116,9 @@ function createSettings({ db, env = process.env, log = console, fetchImpl = glob
@@ -116,7 +116,9 @@ function createSettings({ db, env = process.env, log = console, fetchImpl = glob
requireFresh: (req) => String(req.get('x-ov-fresh') || '') === '1',
requireFresh: (req) => String(req.get('x-ov-fresh') || '') === '1',
log: appLog,
log: appLog,
});
});
- app.use(routes.handle);
+ // The owner's test route is mounted in front of the store's dispatcher: openvibe-shared 4.125.0 gave
+ // adminRoutes a test route of its own, and the dispatcher answers it first (it wants an acting subject,
+ // this one the service-token capability). 2026-11-07, the openvibe-shared v4.126.0 pin round.
app.post(`${BASE_PATH}/:namespace/test/:key`, guard, async (req, res) => {
app.post(`${BASE_PATH}/:namespace/test/:key`, guard, async (req, res) => {
if (req.params.namespace !== NAMESPACE) return res.status(404).json({ error: 'no such configuration namespace' });
if (req.params.namespace !== NAMESPACE) return res.status(404).json({ error: 'no such configuration namespace' });
let key = String(req.params.key || '');
let key = String(req.params.key || '');
@@ -130,6 +132,7 @@ function createSettings({ db, env = process.env, log = console, fetchImpl = glob
@@ -130,6 +132,7 @@ function createSettings({ db, env = process.env, log = console, fetchImpl = glob
return res.status(200).json({ ok: false, detail: 'failed — the test did not finish. The service log has the reason.' });
return res.status(200).json({ ok: false, detail: 'failed — the test did not finish. The service log has the reason.' });
}
}
});
});
+ app.use(routes.handle);
return routes;
return routes;
}
}