openvibers/openvibe.work CHANGELOG.md

CHANGELOG.md

main 2.7 KB · 35 lines · markdown

1# Changelog
2
3What changed in OpenVibe.Work, newest first. Each site also publishes its patch notes at /updates.
4
5## 0.2.0 — 2026-10-08
6
7**Job listings, searchable, with their provenance — and saved searches.**
8
9- **Listings, gathered from open boards.** A background ingest reads Arbeitnow, Remotive and RemoteOK through their
10 public APIs (server/jobs/sources.js, server/ingest/). Each board's terms are applied as written: the source is named
11 and the original listing is linked on every page that shows it, and only a short plain-text excerpt is stored — never
12 the full description. Every listing keeps the board's own id and URL, and a listing without both a title, a company,
13 an id and an http(s) link back is refused rather than published. The ingest is off unless `WORK_INGEST=on`, calls a
14 source at most every six hours (exactly the four a day Remotive's terms allow), upserts on `(source, source_id)`, and
15 expires a listing no board has shown for 30 days.
16- **Search** at `/jobs` (`q`, `remote`, `type`, `location`), newest first, 30 a page with a cursor, with facets for
17 remote and job type. One listing at `/jobs/:id`, with a schema.org `JobPosting` whose `url` is the original.
18- **Saved searches** for a signed-in person: save the search you are looking at, and `/saved` shows each one with the
19 count of listings that appeared since you last looked (opening the page is what clears it).
20- **The API** at `/api/v1`: `GET /jobs`, `GET /jobs/:id`, `GET /sources` (each board's terms as applied and its last
21 fetch), and `POST`/`GET`/`DELETE /saved-searches`. Reading is public; a saved search is a person's.
22- **Pages**: a home page with the search box, the latest remote listings and each source with its count; `/sources`,
23 which states each board's terms as applied; and `/docs` for the API. A sitemap carrying the newest listings, and
24 `llms.txt` pointing a crawler at the listings and the sources.
25- **Limits**: the search and the saved-search writes have per-caller budgets of their own
26 (`work.jobs.search`, `work.saved_searches.write`).
27- **New tables**: `work_listings`, `work_saved_searches`, `work_source_fetches` (`migrations/0002_listings.sql`).
28- **New tools**: `npm run ingest` reads every board once and exits.
29- Also: `test/skeleton.test.js` now skips itself in a generated service (this repository, whose skeleton placeholders
30 were already rewritten), saying so, rather than asserting against a rewrite that can no longer happen.
31
32## 0.1.0 — 2026-10-08
33
34- **First release:** the service starts from the OpenVibe skeleton — sign-in with OpenVibe.Network (OAuth 2 + PKCE), server-rendered pages through the OpenVibe Frame, the `/api/v1` mount with per-caller limits, crawl artifacts, PostgreSQL migrations, the deploy files and the test suite.
35