openvibers/openvibe.rent CHANGELOG.md

CHANGELOG.md

main 4.0 KB · 52 lines · markdown

1# Changelog
2
3What changed in OpenVibe.Rent, newest first. Each site also publishes its patch notes at /updates.
4
5## 0.3.0 — 2026-10-12
6
7"Home prices around here" beside the affordable-housing results.
8
9- **FHFA House Price Index context.** `/housing` shows a small card above the results: the change in the FHFA
10 all-transactions index over the past year and five years, for the MSA that matches the place (or the state), rounded
11 to 0.1 %, with the latest quarter. The index is a repeat-sales index, not a price, and the card links back to FHFA.
12- **Ingest.** The FHFA master CSV is streamed line by line (never held whole), keeps only the traditional,
13 all-transactions, quarterly State and MSA rows from the last six years, and replaces them in one transaction — a
14 failed refresh keeps the previous rows. It runs from the background timer behind `RENT_HPI` (on in production) and
15 fetches at most once every 7 days.
16- **API.** `GET /api/v1/housing` answers `area_prices` (`{ place, level, year_change_pct, five_year_change_pct,
17 latest, source }`), or `null` when there is no data.
18
19## 0.2.0 — 2026-10-08
20
21The product: people post listings, anyone searches them, and reports bring a listing to staff.
22
23- **Listings, posted by people.** A signed-in person posts apartment, room, house, commercial, parking, equipment or
24 other: a title, a plain-text description, a price with an ISO 4217 currency from a short list and a period, a city
25 and an ISO 3166-1 alpha-2 country, and optionally a region, a neighbourhood, bedrooms, an available-from date and
26 an https or mailto contact link. At most 10 active listings and 5 new ones a day; each lasts 30 days and the owner
27 can renew it for 30 more.
28- **Never a street address.** A house number with a street is refused in the title, the description, the city, the
29 region and the neighbourhood — in the form and the API alike, with a message that says what to write instead.
30- **Search.** `/listings` and `GET /api/v1/listings`: q, kind, city, country, min, max and period, newest first,
31 30 a page with a cursor, and facets for kind and country. A filter we do not recognise is ignored, not an error.
32- **A listing page** with the safety note word for word, the contact link for signed-in viewers only (anyone else is
33 asked to sign in), and JSON-LD as an `Offer` only where the schema.org type is clear.
34- **Reports and staff.** One report per person per listing; three distinct reports hide it from search until staff
35 look. Staff (a Network role of `admin` or `global_mod`) read the queue at `/staff` and restore, hide or remove a
36 listing. A listing staff restored is not hidden again by the same reports.
37- **Saved searches.** Save the current filters and see, each time you open `/saved`, how many listings have appeared
38 since you last looked. Alerts that come to you arrive later through OpenVibe.Watch.
39- **No payments, no deposits, no messaging** in this version, and no scraped or partner sources: every listing is
40 text a person typed here, and the site says so. Sources arrive only when their terms are verified.
41- Pages added: `/listings`, `/listings/:id`, `/listings/:id/edit`, `/post`, `/mine`, `/saved`, `/safety`, `/staff`;
42 the home page is the product's own. Discovery carries every active listing in the sitemap, and robots.txt keeps
43 `/post`, `/mine`, `/saved` and `/staff` to people.
44- The per-caller budgets are declared (`rent.listing.create`, `rent.listing.report`, `rent.listing.renew`,
45 `rent.saved.create`), and the page forms take the same budget as the API so a form is not a way round a limit.
46- The home page's size budget moved from 24.9/6.2 KB to 28.4/6.5 KB (raw/Brotli) because it is a real home page now;
47 the budget was raised to 31.5/7.2 with the same ~10% headroom.
48
49## 0.1.0 — 2026-10-08
50
51- **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.
52