Fix regressions from admin modularization refactor.
1007953
AuthorBotCursorcommited on
Refactor admin API into service and repository layers.
d6061d6
AuthorBotCursorcommited on
Add publish-help contact form with support email routing.
a36a535
AuthorBotCursorcommited on
Revert "Complete platform presence stack with ISBN enrichment and manual overrides."
92d849b
AuthorBotcommited on
Complete platform presence stack with ISBN enrichment and manual overrides.
6d8ebbb
AuthorBotCursorcommited on
Add Platform Presence Scanner for URL import distribution scoring.
c5d0d2d
AuthorBotCursorcommited on
Harden book URL import across top platforms and swap Bookshop for WorldCat in UI.
0e7f062
AuthorBotCursorcommited on
Improve multi-platform book URL import with ranked catalog matching.
e61653c
AuthorBotCursorcommited on
Fix: bypass Redis cache on preview (force_refresh) so improved Amazon scraper runs fresh
83c6e17
AuthorBotcommited on
feat: full cover+genre extraction from all platforms - platform HTML parsers + DB fields
8ef8ff2
AuthorBotcommited on
fix: SyntaxError in books.py β close preview return dict before import-url decorator
8a6b72c
AuthorBotcommited on
feat: URL import now auto-indexes scraped metadata instantly β no file upload needed
ba24df7
AuthorBotcommited on
feat: deep book metadata extraction - author bio, genre, ratings, pages
2bfc0e2
AuthorBotcommited on
feat: book URL import - 10 platforms, 3-step UI, scraper service
2a566aa
AuthorBotcommited on
feat: show IP address in sessions + persistent login until logout - Add ip_address field to ChatSession model (VARCHAR 45, handles IPv4+IPv6) - Store real client IP at session/init time via get_real_ip() - Expose ip_address in /sessions list and /sessions/{id}/transcript responses - DB migration: ip_address column added to chat_sessions - Bump REFRESH_TOKEN_EXPIRE_DAYS from 7 to 30 days (stay logged in 1 month) - Fix auth-client.js: refreshAccessToken only clears session on 401/403, not on network/5xx errors (HF cold-start safe) - Fix restoreSession: keeps session alive when refresh fails transiently, only clears on explicit auth rejection
cb1aefd
AuthorBotcommited on
feat: proper visitor analytics system - New Visitor model (visitor_uid + fingerprint fallback, first_seen/last_seen/page_views, geo, device) - VisitorRepository with upsert + analytics queries - visitor_tracker.py: record_visitor() upserts on every session/init - session/init accepts visitor_uid in request body (HF-Spaces iframe-safe, no cookies) - 4 new analytics endpoints: /visitors /geo /devices /sessions/stats - geo.py: region extraction + X-Real-IP support - DB migration: visitor_uid column on chat_sessions - ARCHITECTURE.md updated
3ae7860
AuthorBotcommited on
fix: 5 critical storage bugs + 3 SQLite/SSE bugs -- tracker.py: db.flush() after add() so chat messages/analytics are persisted -- chat.py: flush->commit for durable ChatSession row -- settings.py: fix session mismatch in all PUT routes (widget-config, profile, personality, notifications, password) - setattr on cross-session user was discarded; now uses UPDATE stmt on route db -- aggregator.py: replace PostgreSQL-only gen_random_uuid() with uuid4() param for SQLite -- ingest.py: fix SSE channel name mismatch subscriber vs publisher -- superadmin_service.py: fix naive/aware datetime TypeError in extend_subscription