- Display client key and server key on Settings app cards with toggle
visibility and copy button
- Hide API keys table in Desa Mandiri Keys tab behind toggle + copy
- Add eye toggle to password inputs in Add App and Edit API Config
modals
- Backend now returns apiKey and clientApiKey in apps list endpoint
- Add 7D/30D/3M toggle on Daily Activity and Comparison Between Villages charts
- Switch LineChart to AreaChart with fillOpacity 0.4 for bold gradient fill
- Fix broken tooltip on all charts with custom dark card content
- Apply consistent chart style (tickLine, gridAxis, glow) to village detail page
- api.ts: getDailyActivity and getComparisonActivity now accept range param
- Migrate useQuery to useSWR for consistency (no mixed fetching)
- Fix trend badge: guard against undefined grid and NaN comparison
- Fix trend badge: hide when increase is exactly 0
- Fix version modal: use gridRef so background refetch cannot overwrite user edits
- ErrorDataTable: migrate to useSWR, expose refresh() via forwardRef so the
refresh button at the top also reloads the error table
Move Common Commands to docs/COMMANDS.md and add docs/CONVENTIONS.md
for frontend patterns (SWR, filters, Mantine, routing, API URLs).
CLAUDE.md now only contains runtime rules and pointers.
- extract shared UserFormFields component to eliminate form duplication between Add and Edit modals
- debounce search input (400ms) to prevent excessive API calls
- fix validation messages to show human-readable labels instead of internal field names
- fix pagination visibility condition (totalPage > 1)
- remove unused TbEdit import
Derive status from app.active flag instead of maintenance/bugs heuristic.
Remove version, minVersion, and maintenance from list/detail response
as these are fetched separately via the grid overview endpoint.
Apply uniform design system across all routes and components:
- Consistent header pattern with gradient-text titles, dimmed subtitles
- Loader type="dots" replacing text-based loading states
- Icon + text empty/error states with Paper+glass containers
- Full STATUS_COLOR/STATUS_LABEL maps for all BugStatus values
- dayjs timestamps, Tooltip on action icons, size="sm" on badges/pagination
- Modals with overlayProps blur and gradient save buttons
- Replace left-border Papers with clean Stack headers
- Translate all remaining Indonesian UI strings to English
- New monitoring-themed SVG logo and redesigned splash screen