|
@@ -0,0 +1,64 @@
|
|
|
|
|
+# Changelog — IRDB
|
|
|
|
|
+
|
|
|
|
|
+This is the **project-wide** changelog for the IRDB stack as a whole — a
|
|
|
|
|
+high-level record of what shipped in each cut of the bundled
|
|
|
|
|
+`docker-compose` deployment.
|
|
|
|
|
+
|
|
|
|
|
+The `api` and `ui` containers are versioned independently and have their
|
|
|
|
|
+own changelogs:
|
|
|
|
|
+
|
|
|
|
|
+- [`api/CHANGELOG.md`](./api/CHANGELOG.md)
|
|
|
|
|
+- [`ui/CHANGELOG.md`](./ui/CHANGELOG.md)
|
|
|
|
|
+
|
|
|
|
|
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
|
|
+and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
|
+
|
|
|
|
|
+Project-wide tags use the `v<MAJOR>.<MINOR>.<PATCH>` form so they don't
|
|
|
|
|
+collide with the per-component `api-v…` / `ui-v…` tags in this monorepo.
|
|
|
|
|
+
|
|
|
|
|
+## [Unreleased]
|
|
|
|
|
+
|
|
|
|
|
+## [0.9] — 2026-05-06
|
|
|
|
|
+
|
|
|
|
|
+First public preview of the bundled stack. Everything specified in
|
|
|
|
|
+[`SPEC.md`](./SPEC.md) milestones M1–M14 is in place; the `0.9` cut is
|
|
|
|
|
+the integration milestone where `api` 1.0.0 and `ui` 1.0.0 have been
|
|
|
|
|
+shipped together, hardened against the `SEC_REVIEW` findings, and
|
|
|
|
|
+verified end-to-end via the demo seed flow.
|
|
|
|
|
+
|
|
|
|
|
+The remaining gap to a `1.0` project tag is operational rather than
|
|
|
|
|
+functional — exercising the stack against real reporters/consumers,
|
|
|
|
|
+finalising the upgrade story, and locking down the Compose defaults for
|
|
|
|
|
+production deployment.
|
|
|
|
|
+
|
|
|
|
|
+### Highlights
|
|
|
|
|
+- Self-hosted abuse-report ingestion + tailored, decay-weighted blocklist
|
|
|
|
|
+ distribution as a Compose stack: `api` (Slim 4 / FrankenPHP JSON
|
|
|
|
|
+ backend), `ui` (Slim 4 / FrankenPHP PHP+Twig BFF), and optional
|
|
|
|
|
+ `mysql` and `scheduler` sidecars.
|
|
|
|
|
+- Four-kind token model (`reporter`, `consumer`, `admin`, `service`)
|
|
|
|
|
+ with SHA-256 hashing and a service-token + impersonation-header
|
|
|
|
|
+ pattern between the UI BFF and the api.
|
|
|
|
|
+- Reputation engine with linear and exponential decay, per-reporter
|
|
|
|
|
+ trust weighting, manual blocks and allowlist evaluated at distribution
|
|
|
|
|
+ time, and a 365-day hard cutoff.
|
|
|
|
|
+- GeoIP enrichment with MaxMind GeoLite2 and IPinfo adapters, refreshed
|
|
|
|
|
+ via an internal job.
|
|
|
|
|
+- OIDC login (Microsoft Entra ID, authorization code + PKCE) plus a
|
|
|
|
|
+ local admin form with Argon2id password validation.
|
|
|
|
|
+- Full admin UI: dashboard, IPs, subnets/allowlist, policies, reporters,
|
|
|
|
|
+ consumers, tokens, categories, audit log, and the settings page used
|
|
|
|
|
+ to display this version.
|
|
|
|
|
+- Public-endpoint audit emission with global + per-entity toggles so the
|
|
|
|
|
+ high-volume `report.received` / `blocklist.requested` rows can be
|
|
|
|
|
+ silenced without a container restart.
|
|
|
|
|
+- Hardening pass against the `SEC_REVIEW` queue (F1–F74 at time of
|
|
|
|
|
+ writing): security headers, secret scrubbing, request body caps,
|
|
|
|
|
+ bounded caches, rate limiting on public endpoints.
|
|
|
|
|
+
|
|
|
|
|
+### Container versions in this release
|
|
|
|
|
+- `api` — 1.0.0 (see [api/CHANGELOG.md](./api/CHANGELOG.md))
|
|
|
|
|
+- `ui` — 1.0.0 (see [ui/CHANGELOG.md](./ui/CHANGELOG.md))
|
|
|
|
|
+
|
|
|
|
|
+[Unreleased]: https://github.com/your-org/irdb/compare/v0.9...HEAD
|
|
|
|
|
+[0.9]: https://github.com/your-org/irdb/releases/tag/v0.9
|