Changelog
Catatan rilis Rekamedika
Riwayat rilis Rekamedika: fitur baru, perbaikan, peningkatan performa, dan pembaruan dokumentasi di setiap versi, diurutkan dari yang terbaru.
v0.1.0
DetailFitur 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-disabledandpayment-requiredwere in the error catalog but nothing produced them; every gate threw a bareFORBIDDEN, 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/enablereadsauth_two_factorimmediately 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-requestclient-side —fromHttpStatusfiltered on tRPC equivalence, which skipped every catalog entry that has none - api:
resolveErrorignored the RFC 9457typeand 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
v0.0.1
DetailFitur 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/uidesign 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