openvibers/openvibe.work Commits
openvibe-shared v4.223.1 (was v4.223.0) (#277)
Changes
@@@ -278,6 +278,6 @@ Part of the [OpenVibe network](https://openvibe.network). Built in the open by [<!-- versions:start -->- openvibe-contracts: v0.416.0- openvibe-sdk: v0.150.0--- openvibe-shared: v4.223.0++- openvibe-shared: v4.223.1- openvibe-publishing: v1.7.0<!-- versions:end -->@@@ -9,11 +9,11 @@"domain": "openvibe.work","contracts": "openvibe-contracts v0.416.0","sdk": "openvibe-sdk v0.150.0",-- "shared": "openvibe-shared v4.223.0",++ "shared": "openvibe-shared v4.223.1","packages": ["openvibe-contracts v0.416.0","openvibe-sdk v0.150.0",-- "openvibe-shared v4.223.0",++ "openvibe-shared v4.223.1","openvibe-publishing v1.7.0"],"summary": "OpenVibe.Work gathers job listings from five public job boards (Arbeitnow, We Work Remotely, RemoteOK, Hacker News and Remotive) under their terms — four arrive through OpenVibe.Sources, and Remotive is read directly because its robots.txt keeps Sources out — 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.416.0","openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.7.0","openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.150.0",-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.223.0",++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.223.1","pg": "^8.23.0"},"devDependencies": {@@@ -1290,9 +1290,9 @@}},"node_modules/openvibe-shared": {-- "version": "4.223.0",-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.223.0",-- "integrity": "sha512-l1woGnTQxcgpSr3OdpODwtWC8MNVIF/SbJrudnLIlZEwWreid2tucAi15AaPi1aFLWi8MvYLfCaD81IWRbxRHA==",++ "version": "4.223.1",++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.223.1",++ "integrity": "sha512-fSkUepZHobap/oX9GbYVWeVwRZteD+FXUsT4+W2F7u3F3annBzS8BGLRM1K4vcl2+GBcwL3TKbE3IeTjbfUPRA==","license": "MIT","dependencies": {"clean-css": "^5.3.3",@@@ -26,7 +26,7 @@"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.416.0","openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.7.0","openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.150.0",-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.223.0",++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.223.1","pg": "^8.23.0"},"engines": {@@@ -259,7 +259,10 @@ const first = async (t, path) => (await t.get(path)).json();});await check('search is limited per caller, and past it the API says so with Retry-After', async () => {-- const busy = await boot({ callerLimits: true, limitsNow: () => Date.now() });++ // A fixed clock: on the real one a run that crosses a minute boundary starts a fresh budget and the++ // 61st search never sees 60 in one minute.++ const clock = Date.UTC(2026, 8, 27, 12, 0, 15);++ const busy = await boot({ callerLimits: true, limitsNow: () => clock });try {await busy.ctx.ingest.runAll();let limited = null;
@@ -278,6 +278,6 @@ Part of the [OpenVibe network](https://openvibe.network). Built in the open by [
@@ -278,6 +278,6 @@ Part of the [OpenVibe network](https://openvibe.network). Built in the open by [
<!-- versions:start -->
<!-- versions:start -->
- openvibe-contracts: v0.416.0
- openvibe-contracts: v0.416.0
- openvibe-sdk: v0.150.0
- openvibe-sdk: v0.150.0
-- openvibe-shared: v4.223.0
+- openvibe-shared: v4.223.1
- openvibe-publishing: v1.7.0
- openvibe-publishing: v1.7.0
<!-- versions:end -->
<!-- versions:end -->
@@ -9,11 +9,11 @@
@@ -9,11 +9,11 @@
"domain": "openvibe.work",
"domain": "openvibe.work",
"contracts": "openvibe-contracts v0.416.0",
"contracts": "openvibe-contracts v0.416.0",
"sdk": "openvibe-sdk v0.150.0",
"sdk": "openvibe-sdk v0.150.0",
- "shared": "openvibe-shared v4.223.0",
+ "shared": "openvibe-shared v4.223.1",
"packages": [
"packages": [
"openvibe-contracts v0.416.0",
"openvibe-contracts v0.416.0",
"openvibe-sdk v0.150.0",
"openvibe-sdk v0.150.0",
- "openvibe-shared v4.223.0",
+ "openvibe-shared v4.223.1",
"openvibe-publishing v1.7.0"
"openvibe-publishing v1.7.0"
],
],
"summary": "OpenVibe.Work gathers job listings from five public job boards (Arbeitnow, We Work Remotely, RemoteOK, Hacker News and Remotive) under their terms — four arrive through OpenVibe.Sources, and Remotive is read directly because its robots.txt keeps Sources out — 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 five public job boards (Arbeitnow, We Work Remotely, RemoteOK, Hacker News and Remotive) under their terms — four arrive through OpenVibe.Sources, and Remotive is read directly because its robots.txt keeps Sources out — 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.416.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.416.0",
"openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.7.0",
"openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.7.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.150.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.150.0",
- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.223.0",
+ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.223.1",
"pg": "^8.23.0"
"pg": "^8.23.0"
},
},
"devDependencies": {
"devDependencies": {
@@ -1290,9 +1290,9 @@
@@ -1290,9 +1290,9 @@
}
}
},
},
"node_modules/openvibe-shared": {
"node_modules/openvibe-shared": {
- "version": "4.223.0",
- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.223.0",
- "integrity": "sha512-l1woGnTQxcgpSr3OdpODwtWC8MNVIF/SbJrudnLIlZEwWreid2tucAi15AaPi1aFLWi8MvYLfCaD81IWRbxRHA==",
+ "version": "4.223.1",
+ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.223.1",
+ "integrity": "sha512-fSkUepZHobap/oX9GbYVWeVwRZteD+FXUsT4+W2F7u3F3annBzS8BGLRM1K4vcl2+GBcwL3TKbE3IeTjbfUPRA==",
"license": "MIT",
"license": "MIT",
"dependencies": {
"dependencies": {
"clean-css": "^5.3.3",
"clean-css": "^5.3.3",
@@ -26,7 +26,7 @@
@@ -26,7 +26,7 @@
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.416.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.416.0",
"openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.7.0",
"openvibe-publishing": "https://codeload.github.com/OpenVibers/OpenVibe.Publishing/tar.gz/refs/tags/v1.7.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.150.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.150.0",
- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.223.0",
+ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.223.1",
"pg": "^8.23.0"
"pg": "^8.23.0"
},
},
"engines": {
"engines": {
@@ -259,7 +259,10 @@ const first = async (t, path) => (await t.get(path)).json();
@@ -259,7 +259,10 @@ const first = async (t, path) => (await t.get(path)).json();
});
});
await check('search is limited per caller, and past it the API says so with Retry-After', async () => {
await check('search is limited per caller, and past it the API says so with Retry-After', async () => {
- const busy = await boot({ callerLimits: true, limitsNow: () => Date.now() });
+ // A fixed clock: on the real one a run that crosses a minute boundary starts a fresh budget and the
+ // 61st search never sees 60 in one minute.
+ const clock = Date.UTC(2026, 8, 27, 12, 0, 15);
+ const busy = await boot({ callerLimits: true, limitsNow: () => clock });
try {
try {
await busy.ctx.ingest.runAll();
await busy.ctx.ingest.runAll();
let limited = null;
let limited = null;