openvibers/openvibe.domains CHANGELOG.md

CHANGELOG.md

main 3.1 KB · 43 lines · markdown

Changelog

What changed in OpenVibe.Domains, newest first.

0.2.0 — 2026-10-28

  • The control panel (/panel, plan 2026-10-28 §5.1, DOM-2):
  • Sign in with OpenVibe.Network (client domains), then connect Cloudflare. The token is verified, then stored as a
    secret in your own Network project, granted to Domains for calls to api.cloudflare.com only (ADR-056). Domains'
    database (ov_domains) keeps its name, never its value.
  • Zones are synced; a zone's records are read live from Cloudflare.
  • Every change (yours, a bulk edit's or an agent's) is a proposal (domains.proposal@1): the record diff, why, what
    could break, and 7 days to decide. Approve on its page or in the Action Center. A record that moved since the
    proposal is refused as stale; an applied proposal rolls back in one step; everything is audited.
  • API: /api/v1/panel/*, /api/v1/proposals; Network's Action Center reads /api/v1/actions and decides with
    domains.actions.read and domains.proposal.decide. Account export and deletion (ADR-033).

0.1.0 — 2026-10-28

The service skeleton: a stateless read-only front over OpenVibe.Host's price catalog and OpenVibe.Tools' public
domain history.

  • Name parsing (server/names.js): a label and an optional ending from what a person types — a bare label with
    spaces or underscores, a full name, a URL with a scheme, path or port, an IDN (münchen.de) — normalized to ASCII
    for the Host call and kept in Unicode for display. 1–63 character labels, no edge hyphens, 253 characters total.
  • Pricing (server/pricing.js): every registrar row gains y1, y3, y5 and the renewal trap
    (renew ≥ 2 × register and renew − register ≥ 5), rounded to cents. USD rows are compared and sorted by y3;
    other currencies are kept after them and flagged currency_other.
  • Data clients (server/data/host.js, server/data/tools.js): injectable fetchImpl, 8-second timeouts, a
    2,000-entry in-process cache (catalog 10 minutes, ending 10, name check 2, domain history 10), a failure is null
    and one short log line.
  • Pages (server/http/pages.js): / (the popular first catalog page and the Tools lists), /search?q=
    (registry status and prices, noindex), /tld/:tld, /.dev 301, /d/:domain (public history plus its ending's
    prices), and a 404. The views are plain placeholders on the shared Frame for the main session to replace.
  • API (server/http/api.js): GET /api/v1/search?q=, /tlds, /tlds/:tld, /domains/:domain; CORS-open,
    public for five minutes, 400 problem+json for a bad name, 404 for an unknown ending, and a 120/min per-IP limit
    shared with /search.
  • Plumbing: helmet with Help's CSP, health, truthful readiness (Host and Tools are optional checks, so a failure
    is degraded, not 503), release.json and the release collector, /shared, robots.txt, sitemap.xml (every ending
    in the catalog pages), llms.txt, loopback-only metrics and graceful stop.
  • Repo: deploy files (systemd, nginx), CI, README, STATUS, SECURITY, LICENSE, .env.example and four test files.