CraftLife-1.4.0
CraftLife v1.4.0 — Full Parity Release
Ringkasan (ID): Setiap halaman React kini 1:1 dalam fitur & perilaku dengan referensi PyQt (P30–P46). Jam aplikasi & timestamp chat mengikuti zona lokasi pengguna (bukan zona server), dan chat Friends/Guild sudah realtime serta lengkap. Game rules tetap 100% di
database.py(backend), tidak pernah diduplikasi di TypeScript.
CraftLife v1.4.0 is a Windows-first desktop RPG life-tracker. Everything local works fully offline; Supabase cloud remains optional for multi-device sync and online social features.
✨ Highlights
- Full page parity — every React page now matches the PyQt reference feature-for-feature (P30–P46 complete).
- User-local time everywhere — the app clock and all chat timestamps now follow your device's timezone, not the server's.
- Rebuilt Friends & Guild chat — attachments, reply, edit, delete, reactions, load-earlier, typing indicator (cloud), and reliable send.
- Real boss combat feedback — every attack shows damage dealt, damage blocked, boss HP remaining, crits, shield, revive, and ultimate effects.
🆕 What's new / changed (by page)
| Page | Change |
|---|---|
| Home | Sleep↔productivity chart now stretches edge-to-edge. |
| Profile | Hero Customization moved here from Settings; class change limited to once per 7 days. |
| Habits / Dailies / Quests | Removed duplicate quick-template buttons (already in the Templates menu). |
| SportTrack | Reps chart now renders; added the folder system like habits/dailies/quests. |
| Economy | Savings accept any user-entered amount; investments store your current total value; transaction cards show the name (not category); full subscription dialog (name/icon/cost/due/period/auto-renew/notes); dialogs follow the active currency (no more hardcoded IDR). |
| Health & Food | Food DB names translated (id/en); weight/height 7-day trend charts stretch properly. |
| Love Space | Couple profile & couple account brought to 1:1 parity. |
| Learning | 3-tab slide (Sources / Chat AI / Studio Generate); layout stretches when a tab is closed. |
| Music | Faster, wider lyric search; found lyrics are live time-synced (min:sec) to playback. |
| Crafting | A consumable requirement with quantity 0 now blocks crafting. |
| Shop | Buff item descriptions shown in Bag/Inventory; consumable qty 0 displays as 0; re-buying increments by the amount bought. |
| Pets | New scaling: below level 25 = 1 pet; level 25+ = 2 + floor((level-25)/5) pets (25→2, 30→3, 35→4…). Buffs recalculate on equip/unequip. |
| Friends | Chat is now full parity: attachments (≤5), reply, edit, delete, reactions + remove, load earlier (50/page), typing indicator, 3s refresh — hybrid cloud/local storage. |
| Guild | Chat no longer "silently unsent" (fixed local send path) + full dialog (send, leader clear-all, 3s poll); Spyglass now has a real effect (reveals full boss stats); attacks show full damage/blocked-HP info; boss start is leader-only. |
| Navbar | Shows all active buffs. |
🐛 Bug fixes
- App clock was 7h off (e.g. 06:00 when it should be 13:18 WIB) — the clock now renders in the user's local timezone instead of the server's.
- Friends & Guild chat timestamps now sync exactly with the app clock via per-message epoch timestamps (works regardless of server zone: UTC, WIB, Windows
tzset()no-op, etc.). - Guild chat messages "not sent" — send path was targeting the online (cloud) guild while the page showed the local guild; now local-only, matching PyQt.
- Chart stretching, currency formatting, and translation-key gaps cleaned up across pages.
✅ Verification
py_compile— all core modules pass.tsc --noEmit— 0 errors.vite build— clean production build.- Backend smoke tests — auth, bootstrap/server clock, guild create/messages, friends chat, boss catalog all pass.
- i18n — 3,694 keys consistent across
translations.py↔WEB_I18N_KEYS↔messages.json(id + en).
⬇️ Install / update
- Windows: download
craftlife-1.4.0.zip, extract, runCraftLife.exe(no Node required). - Auto-update: the app checks
app-updates/GitHub Releases on launch and applies updates with SHA-256 verification.
☁️ Cloud (Supabase) — for self-hosters / operators
- Apply
supabase/migrations/*.sqlin file order (see README — 13 files, from20260812000000_initial_social_cloud.sqlto20260821010000_app_updates.sql). - Deploy the
chat-attachment-maintenanceEdge Function for scheduled attachment cleanup. - No new Supabase migration is required by v1.4.0 itself beyond those already in the repo.
📌 Notes
- Legacy PyQt widgets are kept and reachable with
CRAFTLIFE_WEB_UI=0; action parity (not pixel-identical skins) is the goal. - Game/business rules live only in
database.py; the frontend never re-implements RPG math. - Windows is the supported release target; Linux/macOS may run from source.