ik
3ea08fa706
S03: Consistent site origin — trailingSlash never, canonical URLs
...
- Add trailingSlash: 'never' to Astro config
- Normalize sitemap paths to never use trailing slash
- Ensures consistent canonical URLs across all pages
- Prevents duplicate content from / vs /path/ variants
2026-09-10 05:53:36 +07:00
ik
2c7dd27b4f
T08: Python lock files, CI web unit tests, dependency audit
...
- Generate requirements-lock.txt and requirements-dev-lock.txt via pip-compile
- CI uses locked files for reproducible installs
- Add web unit tests to CI (npm run test:unit)
- Add dependency-audit job using pip-audit
- Add Makefile with lock/lock-dev targets for regeneration
2026-09-10 05:53:15 +07:00
ik
f550639456
R15: Fix D04/D06/D07 partial completion
...
D04: Add fish name-based fallback in _auto_publish (was external_id only)
D06: Cap confidence at 50% for 1 player, 65% for 2 players
D07: Set caught_at=None for community imports (not published_at)
D08: Already OK - activity_rows has no top-100 limit
- Add Fish import to community_importer.py
- Add 2 unit tests for D06 confidence caps
- Update test_community_importer.py for D04 name match behavior
2026-09-10 05:51:50 +07:00
ik
e2bed0db89
R13: Fix X-Forwarded-For trust boundary — only trust from known proxies
...
- Add _is_trusted_proxy() to check client IP against trusted CIDRs
- Only use X-Forwarded-For if connection came from trusted proxy
- Add TRUSTED_PROXY_CIDRS config (default: 127.0.0.1/32, ::1/128)
- Add parse_comma_separated_lists for env var parsing
- Add 3 unit tests: trusted CIDR check, untrusted ignores forwarded, trusted uses forwarded
2026-09-10 05:49:23 +07:00
ik
cc3b42eaf6
R12: Fix readiness — stale/failed community_scheduler blocks ready
...
- Add 'ready = ready and healthy' for community_scheduler check
- Add 'ready = False' for community_scheduler exception path
- Add 3 unit tests: success=ready, stale=not_ready, failed=not_ready
- Monitoring now correctly reports community import health
2026-09-10 05:46:49 +07:00
ik
6e0077bd4d
R10: Fix TimeoutError handling — use DOMException.TimeoutError check
...
- AbortSignal.timeout() throws DOMException with name='TimeoutError', not TypeError
- Check for DOMException.TimeoutError, TypeError(fetch), or Error(abort)
- Apply same fix to report.ts and report-screenshot.ts
- Timeout redirects to 'timeout' state, other errors to 'create_error'
2026-09-10 05:43:34 +07:00
ik
67681ee039
R09: Fix pagination — preserve filters and use offset from URL
...
- Read offset from URL search params (default 0)
- Pass offset to /api/v1/activity instead of hardcoded 0
- Append items when offset > 0 (infinite scroll behavior)
- Fix 'load more' link to not duplicate URL params
- Astro check: 0 errors, Python tests: 97 passed
2026-09-10 05:41:53 +07:00
ik
38bb871638
fix: R08 filter-compact-hidden display:none + details fallback for no-JS ( #1788956171115 )
2026-09-10 05:39:06 +07:00
ik
0b3a5ece4b
fix: R06 community_observations filters by fish/waterbody slug via JOIN ( #1788956171115 )
2026-09-10 05:38:22 +07:00
ik
fc878c81d4
fix: R04 site cooldown uses full registry for disabled sources; R05 remove proxy/scheduler from bootstrap ( #1788956171115 )
2026-09-10 05:37:38 +07:00
ik
d962ba2f90
fix: R02 activity API contract — PaginatedActivity + all consumers ( #1788956171115 )
2026-09-09 20:58:42 +07:00
ik
9ae05ef6f0
fix: S01 HTTP/SEO contract — noindex for errors, 422/503 status codes ( #1788956171115 )
2026-09-09 20:14:10 +07:00
ik
b31042337b
fix: U03 pagination + U04 form errors with retry ( #1788956171115 )
2026-09-09 20:08:20 +07:00
ik
63e33e1861
fix: audit P0-P1 — T03-T07, D01-D08, U01-U02 ( #1788956171115 )
2026-09-09 20:02:52 +07:00
ik
486b4e9645
fix: enforce community cooldown per site
2026-09-08 16:32:42 +07:00
ik
731eade7b3
fix: polish narrow mobile layouts
2026-09-08 16:29:03 +07:00
ik
6e21bb774d
perf: optimize public image assets
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-08 16:18:32 +07:00
ik
18855644a4
build: separate API development dependencies
2026-09-08 16:16:09 +07:00
ik
25114d18c4
build: make web image dependencies reproducible
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-08 13:26:26 +07:00
ik
1f63f71600
Fix review queue pagination and API fallback handling
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-08 13:24:58 +07:00
ik
ddb6909c4d
sync
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-08 09:31:41 +07:00
ik
8b2d7e2e1c
feat: suggest confirmed external aliases
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-07 18:57:09 +07:00
ik
214b328cd2
perf: cache public activity aggregates
2026-09-07 18:54:58 +07:00
ik
24ee01b9c3
feat: show catch freshness on spot details
2026-09-07 18:53:04 +07:00
ik
f04dbabb3c
fix: avoid duplicate leader panel
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-07 18:51:22 +07:00
ik
fa3b24fb1f
feat: add safe diagnostics export
2026-09-07 18:49:53 +07:00
ik
0f9c255596
feat: group duplicate field signals
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-07 18:45:16 +07:00
ik
02b67741f8
feat: expose deployment build identity
2026-09-07 18:43:20 +07:00
ik
ef8355904c
feat: paginate public field signals
2026-09-07 17:12:41 +07:00
ik
37aa8ec60d
feat: add open alpha banner
2026-09-07 17:11:08 +07:00
ik
dbe01359de
feat: illustrate empty states
2026-09-07 17:09:22 +07:00
ik
6d88ba030f
feat: add subtle fish silhouettes
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-07 17:08:11 +07:00
ik
0a27c55da7
feat: add fishing activity timeline
2026-09-07 17:06:44 +07:00
ik
72057c7b99
feat: add spot coordinate radar
2026-09-07 17:04:59 +07:00
ik
ebdeaf3659
feat: publish data source legend
2026-09-07 17:03:54 +07:00
ik
f2a97d2b80
feat: add unified data passports
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-07 17:02:14 +07:00
ik
3529b6a1c8
feat: complete brand icon and static caching
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-07 16:59:44 +07:00
ik
486016d977
feat: expose safe source health status
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-07 16:57:14 +07:00
ik
0701383c28
feat: schedule authorized community imports
2026-09-07 16:45:49 +07:00
ik
4e037eb7e8
feat: add canonical spot URLs
2026-09-07 16:43:12 +07:00
ik
233c5887eb
feat: add searchable fish and waterbody pages
2026-09-07 16:39:28 +07:00
ik
7e60daed6f
feat: add branded social preview
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-07 13:31:34 +07:00
ik
494a37ce8f
feat: establish public SEO foundation
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-07 13:29:13 +07:00
ik
9275799ce7
feat: display provenance and incomplete signals
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-07 13:21:15 +07:00
ik
7217356594
feat: enable safe community auto publishing
2026-09-07 13:00:58 +07:00
ik
c4d1c8b87b
feat: audit full alpha catalog
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-07 09:37:01 +07:00
ik
600abd81f5
test: define open alpha acceptance gates
2026-09-07 09:31:35 +07:00
ik
9e71215bd8
feat: publish open alpha policies
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
2026-09-07 09:29:26 +07:00
ik
24b33695b2
test: cover external staging queue UI
2026-09-07 09:25:32 +07:00
ik
d69ad9c01d
test: enforce accessibility quality gates
2026-09-07 09:12:30 +07:00