b3eb5dc6ec
Standardise loading state naming across dashboard hooks
2026-04-21 19:12:43 +02:00
094fb4fece
Replace index keys with stable keys in editable list components
2026-04-21 19:04:18 +02:00
4da2703966
Move constant inline styles into makeStyles
2026-04-21 18:47:18 +02:00
86a7336ac0
Refactor shared data source selection for dashboard and map
2026-04-21 17:56:59 +02:00
e244a85291
Extract generic useListData hook for shared list fetching
2026-04-21 17:53:58 +02:00
e683108965
Standardise AbortController cancellation in setup and server health hooks
...
Add abortable API signals for setup status and server health/log fetches, document hook cancellation patterns, and cover stale refresh cancellation with tests.
2026-04-21 17:38:35 +02:00
cf5a000bf5
Add AbortSignal support to dashboard/blocklist APIs and hooks
2026-04-21 17:29:05 +02:00
51e340fa33
backup
2026-04-20 20:19:43 +02:00
69d5cffabd
Remove duplicate api/file_config.ts and consolidate raw file APIs into api/config.ts
2026-04-20 20:19:20 +02:00
8b4a2f0b71
Fix useMapData debounce loading state
2026-04-20 20:10:48 +02:00
1694ac17f8
Add React.memo to heavy dashboard components
2026-04-20 20:00:59 +02:00
1d6564aa32
Add route code splitting and Vite vendor chunk splitting
2026-04-20 19:53:56 +02:00
27369b43d6
Memoize Fluent chart token resolution
2026-04-20 19:47:10 +02:00
20412dd94b
Memoize dashboard and history table columns
2026-04-20 19:28:29 +02:00
e593498de5
Strengthen setup password validation
...
- Add backend Pydantic password complexity validation for setup
- Update frontend setup page with password rule feedback and strength indicator
- Add/adjust setup API tests for password validation
- Document setup password requirements
- Fix frontend test type annotation issue
2026-04-20 19:23:12 +02:00
cc8c71906f
Add auth expiry interceptor and session-expired redirect
2026-04-19 20:31:49 +02:00
d0991e0d40
Fix SetupGuard error handling and add retry UI
2026-04-19 20:20:31 +02:00
c58eb240b1
Fix KVEditor duplicate key rename validation
...
Prevent users from renaming a KVEditor entry to an existing key and show inline validation errors.
2026-04-19 19:59:13 +02:00
082dcc7ee1
Fix BanUnbanForm floating promises and add submit guards
2026-04-19 19:42:39 +02:00
76c9f388a8
Fix HistoryPage stale appliedQuery effect and add mount query regression test
2026-04-19 19:36:44 +02:00
5446f6c3e1
Fix jail banned IP loading race with AbortController
2026-04-19 19:31:03 +02:00
7fb0cc727f
Surface setup error state instead of console.warn in useSetup
2026-04-19 18:53:02 +02:00
b6303cff72
Remove production test scaffolding from useMapData and update MapPage tests
2026-04-19 18:47:29 +02:00
e7582c4bae
Relocate misplaced frontend files
2026-04-19 18:36:55 +02:00
d44a667592
Fix unsafe frontend casts and mark Task 18 done
2026-04-19 18:25:32 +02:00
e6ee525e0f
Deduplicate TimeRange type in frontend type definitions
2026-04-19 18:21:51 +02:00
09a1d3c7b7
Move frontend runtime constants out of types/ban.ts
2026-04-19 18:18:24 +02:00
d99d6bd119
Replace inline frontend styles with makeStyles and design tokens
2026-04-19 12:04:24 +02:00
91269448d0
Replace ErrorBoundary fallback with Fluent UI styles and dialog compliance
2026-04-19 09:44:14 +02:00
47f9c602d4
Finish Task 13: extract remaining page subcomponents and clean page files
2026-04-19 09:38:23 +02:00
38b9d35255
Refactor frontend pages and config components into single-component files for Task 13
2026-04-19 09:30:35 +02:00
6c053cdaee
Add AbortController cleanup to async frontend effects
2026-04-18 21:30:57 +02:00
2105f8b435
Task 11: Remove direct API calls from components
2026-04-18 21:20:45 +02:00
3f197b1ad7
Split multi-hook frontend modules into single-hook files
2026-04-18 20:47:44 +02:00
fba7675eb8
Move auth and timezone hooks into dedicated hook files
2026-04-18 20:35:28 +02:00
d9550ae4aa
Split frontend config API into file_config, server, and health modules
2026-04-18 20:32:38 +02:00
96f75db75f
chore: release v0.9.19
2026-04-05 22:47:42 +02:00
6e2abe9d97
Fix world map country selection handling and preserve map during re-fetch
2026-04-05 22:44:50 +02:00
acdb0e1f03
backup
2026-04-05 22:18:06 +02:00
f1e3d4c4c9
Make Map companion table header and pagination sticky
2026-04-05 22:17:24 +02:00
c51858ec71
Add country-specific companion table filtering for map page
2026-04-05 22:12:06 +02:00
c03a5c1cbc
backup
2026-04-05 21:46:25 +02:00
eb983799cd
chore: release v0.9.18
2026-04-05 21:45:28 +02:00
d3f564d66f
Remove inline map count labels and hide archive source badges
2026-04-05 20:59:28 +02:00
bbd57c808b
chore: release v0.9.17
2026-04-05 20:44:43 +02:00
ffaa14f864
Switch dashboard/map/history views to archive source for long-term data
...
Update fail2ban dbpurgeage to 648000 and history sync backfill/pagination for archive-based 7.5 day history.
2026-04-05 20:21:54 +02:00
7d09b78437
chore: release v0.9.16
2026-04-05 18:54:02 +02:00
8e2bb5d3fb
Migrate WorldMap to d3-geo, fix TopoJSON country ID mappings and update tests
2026-04-05 18:50:44 +02:00
bfe0daf754
Fix WorldMap hover highlight by memoizing style objects and handlers
...
Memoize per-Geography style objects with useMemo so React.memo can
skip re-renders when only the tooltip position changes. Stabilize
mouse event handlers with useCallback using data-* attributes instead
of per-Geography closures. This eliminates the state-update race
condition that caused hover fill colors to flash back to defaults.
2026-04-01 14:53:38 +02:00
13823b1182
fix(history): unify History filter bar with Jail and IP inputs
2026-04-01 09:37:38 +02:00