Changelog

Catatan rilis Rekamedika

Riwayat rilis Rekamedika: fitur baru, perbaikan, peningkatan performa, dan pembaruan dokumentasi di setiap versi, diurutkan dari yang terbaru.

Versi saat iniv0.1.0
  1. v0.1.0

    TerbaruDetail

    Fitur Baru

    • ui: copyable error report on every error surface — boundaries, route errors, toasts, inline banners, empty states, and the agent chat all offer one "Salin detail error" action that puts a full diagnostic report on the clipboard: code, HTTP status, endpoint, page URL and route, the signed-in operator (name, email, user id, tenant, facility, roles), the last ten things they clicked, and browser/timezone. Labels only, never input values — a rejected patient form cannot put a NIK on the clipboard
    • api: gate refusals are now distinguishable. insufficient-scope, feature-disabled and payment-required were in the error catalog but nothing produced them; every gate threw a bare FORBIDDEN, so "ask your admin for access", "this feature is off for your facility" and "your subscription lapsed" all rendered as one generic denial

    Perbaikan

    • server: disable Hyperdrive query caching — it served a stale empty result to /two-factor/verify-totp, breaking MFA enrolment in production with "TOTP not enabled" for every user. /two-factor/enable reads auth_two_factor immediately before inserting the row, and Hyperdrive cached that read. tRPC was never affected (its resolvers run in a transaction, which Hyperdrive does not cache); better-auth's adapter queries are not
    • api: a 423 account lockout and a 406 both resolved to bad-request client-side — fromHttpStatus filtered on tRPC equivalence, which skipped every catalog entry that has none
    • api: resolveError ignored the RFC 9457 type and recomputed the slug from the coarse tRPC code, flattening every precise error back to its generic parent
    • api: map the remaining REST dialect codes (missing_encounter, validation_failed, invalid_date, missing_field, invalid_terminology) onto canonical slugs
    • dashboard: the MFA screen no longer shows better-auth's raw English "TOTP not enabled" — it says, in Indonesian, that the enrolment secret expired and the page needs reloading for a fresh QR

    Dokumentasi

    • Hyperdrive caching must stay disabled — recorded in the deployment runbook and beside the binding in apps/server/wrangler.jsonc, since caching is on by default and returns whenever the config is recreated
  2. v0.0.1

    Detail

    Fitur Baru

    • web: marketing site (landing, about, contact, legal, register) on TanStack Start, deployed as a Cloudflare Worker at rekamedika.com
    • web: editorial blog with tag filtering, reading time, table of contents, RSS, and per-page markdown twins
    • dashboard: product surfaces for registration, encounters, laboratory results, and FHIR Practitioner profiles
    • server: Hono/tRPC API worker with SATUSEHAT and BPJS integration paths
    • db: Drizzle/Postgres schema for the encounter spine, laboratory results, and the SDM (HR) lifecycle — contracts, leave, appraisals, offboarding
    • ui: shared @rekamedika/ui design system — Mintlify-inspired monochrome surfaces, single Mint Green accent, Inter type scale, pill controls, and square cards
    • mcp: remote MCP worker exposing the operator's AI agent tools
    • og: Takumi OG-image worker rendering per-page social cards at og.rekamedika.com

    Dokumentasi

    • Design system spec (DESIGN.md), deployment runbook, and security audit checked into the repository