MPC Web — Version Changelog
Versi aktif berikutnya: v0.10 (current v0.9). Chat sama → jangan bump, update bullet saja.
Independen dari app lain. Indeks: mpc-dev/docs/versions/README.md.
v0.9 — 2026-08-20
/otp: hapus hint demo1234; copy tenang bahwa kode 4 digit dikirim ke email dan berlaku 10 menit (selaras OTP email nyata di mpc-be).
v0.8 — 2026-08-15
- UI
/notifications(parity Android/iOS): kartu tenang tanpa aksen agresif, unread dot primer, Mark all read, loading/empty elegan. - Tanggal notifikasi hari ini: relatif (
Just now/10 minutes ago/1 hour ago); ticker 30 detik supaya label tidak stuck saat halaman tetap terbuka.
v0.7 — 2026-08-13
- Resto reservations (parity Android v1.17): halaman
/resto— intro "Dine at the Club", kartu space dariGET /spacesurutdisplay_order(foto/placeholder elegan, label "Private room"/"Dining area", "Up to N guests", "Minimum spend Rp X"), quiet link "Order food & drinks" →/book?step=addons. - Flow reservasi
/resto/reserve?id=: date picker forward-only, guests stepper 1..max_party_pax+ note "For larger groups, please contact us.", grid slot 30-menit dari availability API dengan copy "N-minute seating" (slot penuh disabled), konfirmasi (space/date/time/guests + note minimum spend "settled through food & beverage purchases at the venue") →POST /spaces/reservations→ success state dengan kode reservasi; error 400/409 ditampilkan sopan + slots di-refresh. - History: segmented filter Courts / Resto; list Resto dari
GET /spaces/reservations/me(space, tanggal, jam, guests, badge status, minimum spend) + Cancel dengan konfirmasi hanya untuk Confirmed + future + source ≠ CourtBundle. - Court detail: callout "Includes Private VIP Room — {name}" + "Minimum spend Rp X applies, settled through F&B." bila
bundled_spaceada; modelCourt+bundledSpace. - Nav: link "Resto" di header + quick action "Resto" di home.
- API client:
getSpaces,getSpaceAvailability,createSpaceReservation,getMySpaceReservations,cancelSpaceReservation; helpersrc/lib/resto/space.ts. - Court detail: copy callout VIP room disesuaikan bundling best-effort — "Included when the room is available for your slot".
/resto: hapus quiet link "Order food & drinks" — order F&B hanya ditawarkan setelah reservasi berhasil (link "Order food & drinks" di success state/resto/reserve).- Resto flow reorder + pre-order menu terikat reservasi (parity Android v1.17 / iOS v1.6): pilih tanggal dipindah ke landing
/resto(di atas daftar space, plus section "Your reservations" quiet reminder → link "See all" ke/history?tab=resto);/resto/reserve?id=&date=cuma tanya guests → time (tanggal dibawa dari landing, bukan dipilih ulang); copy "No minimum spend" saat space/reservasi tidak punya minimum spend. - Success state reservasi: CTA "Order food & drinks" ("You can also select your food & drinks now for your reservation.") + "Maybe later" → halaman baru
/resto/order?reservationId=(katalog F&B standalone, checkout ditagspace_reservation_id, tanpa court booking, langsung ke/payment). - Schema:
transactions.space_reservation_id(migration 021) menautkan pre-order F&B ke reservasi;GET /spaces/reservations/mesertakanorders[]; History Resto tampilkan pesanan menu yang terikat di bawah detail reservasi (bukan entri terpisah) viaReservationOrdersSummary. useCheckout: state baruspaceReservationId(di-set/reset via pre-order flow, dikirim sebagaispace_reservation_idsaatPOST /orders); guard pembayaran & syarat pick-up time F&B kini mengizinkan checkout tanpa court booking saat adaspaceReservationId.- Infra baru "pay existing invoice" di
useCheckout(existingTransactionId/existingInvoiceLabel/existingInvoiceAmount+setExistingInvoice, direset direset()):/paymentkini bercabang — bila diisi, skip validasi cart/build payload dan langsungrepo.completeTransaction(id), judul & tombol dinamis pakai label/nominal invoice (mis. "Pay Tip", "Pay Reschedule Fee"). - Fitur Tip di booking history: order Completed menampilkan section Tip di
/history(di bawah tombol Reschedule/Cancel/Review) — belum pernah tip → CTA "Give a Tip"; sudah pernah → kartu "Thank you for your generosity" dengan nominal (1x per order, status order diturunkan dari seluruh booking dalam transaksi yang sama, mirrorDeriveOrderStatusBE). Halaman baru/tip?transactionId=: chip Rp 5rb/10rb/20rb/30rb/50rb atau input manual (min Rp 5.000, tanpa batas atas) →POST /orders/:id/tip→ lanjut ke/paymentlewat infra existing-invoice di atas. /order-summary: saat transaksi existing-invoice berlabel "Tip", hero copy jadi "Thank You" + pesan apresiasi dan Payment Summary memakai nominal invoice; tombol jadi "Back to My Bookings" ke/historyuntuk semua existing-invoice pay (tip maupun reschedule fee), selain itu tetap alur checkout biasa.- Types/repo:
Transaction.transactionType/tipAmount(map daritransaction_type/tip_amount),repo.createOrderTip(orderId, amount)(POST orders/{id}/tip).
v0.6 — 2026-08-11
- API-only: hapus Developer Mode Dummy/API toggle; repo selalu memanggil mpc-be via BFF.
- Hapus
src/lib/dummy/data.ts; util tanggal/slot pindah kesrc/lib/booking/slots.ts. - Book: availability dari
GET /courts/availability(bulk), bukan algoritma dummy. - Community players dari
GET /users/players; empty state bila kosong. - Matchplay sync §10.1: create, participants, generate, update game, join; skor tersimpan di BE.
- Google Sign-In: tampilkan belum tersedia (tanpa mock token).
- Home: tanpa fallback dummy open matches / players.
- FnB Pick-up time: settings API, picker di cart rail,
fnb_pickup_timedi checkout (parity Android). - Court Detail showcase (parity Android v1.16): halaman
/courts?id=(hero gallery + thumbnail, badge kategori, love via favorites API, sharenavigator.share/copy link, perk chips, About, Specifications, sticky bar "Book This Court"); Home card court link ke detail (gambargallery[0]);/book?mode=court&courtId=preselect By court. - Order Complete lengkap: section Rent/F&B/Pro Shop/Coaching/Classes/Voucher + baris "Pick-up time" + Payment Summary penuh (subtotal per kategori, PPN/PB1/service, Total Paid, Payment Method).
- History detail: item Rent & F&B + pick-up time dari
GET /transactions/customer/:id(fnb_pickup_time+ items, split via katalog F&B).
v0.5 — 2026-08-10
repo.createMatch+ home “Publish open match”.- Parity: matches/notifications/favorites path mengikuti Android v1.15.
v0.4 — 2026-08-10
- Book: tabs/cart Rent + Pro Shop; inventory split
ProShop(ex Merch heuristic). - Book court picker (By time grid + By court rail): kartu teks saja, tanpa gambar.
- Court picker: daftar vertikal full-width (By court); harga hanya
/hr(By time + By court). - Hapus label "Find by".
- Schedule cart CTA Book + court rental total; court picker grid 2 kolom.
- Label Select Court; section By court muncul/hilang dengan animasi.
v0.3 — 2026-08-09
- Book: segmented By time / By court; quiet start-time labels (Passed/Full); home section "Courts".
- By court: image cards for court picker (parity with By time).
v0.2 — 2026-08-09
- Dummy courts parity: Court 1–3,
displayOrder1–3, Court 3 = VIP (API mode sudah fetch fresh — tidak ada bug stale RuntimeCatalog).
v0.1 — baseline
- Placeholder / scaffold web app awal.