Commit Graph

17 Commits

Author SHA1 Message Date
forust 145e7de7f4 Harden scraper inputs and exports
ci / lint-prettier (push) Successful in 7s
ci / lint-ruff (push) Successful in 5s
ci / lint-yaml (push) Successful in 6s
ci / lint-dockerfiles (push) Successful in 4s
ci / validate (push) Successful in 4s
ci / publish (push) Successful in 8s
2026-06-29 17:27:43 +02:00
forust a2c5ca7f2b feat: add dedicated account settings page 2026-06-28 00:36:05 +02:00
forust 5b27852b97 fix: URL-decode channel_id path params, strip @ prefix for state lookup 2026-06-27 21:53:52 +02:00
forust ff1ca13a03 feat: harden multi-account backend and add tests 2026-06-27 21:47:45 +02:00
forust 7aa5c84e63 fix: add search param to legacy /api/channels/{id}/messages endpoint 2026-06-27 21:28:08 +02:00
forust 881e7ddfca Harden account import/continuous behavior and finish multi-account UI polish 2026-06-27 21:26:18 +02:00
forust 1bd385e054 fix: add WAL mode for session SQLite to prevent 'database is locked', persist active account tab in localStorage 2026-06-27 15:45:05 +02:00
forust bb4e28a710 feat: add per-account API, auth, and continuous orchestration
- TelegramAuthManager rewritten for per-account clients/auth state
- ContinuousScrapeOrchestrator managing per-account continuous loops
- Full /api/accounts/* REST endpoints: CRUD, auth (QR/phone/password),
  channels, jobs, continuous config, settings, media toggle
- Legacy backward compat via legacy_account_id auto-detection
  (old /api/auth/*, /api/channels/*, /api/jobs/* still work for legacy
  single-account mode)
- load_messages() accepts account_id parameter for per-account data
- auth_status_for(), list_channels_snapshot() per-account helpers
- OpenAPI spec updated with all /api/accounts/* endpoints
2026-06-27 15:20:27 +02:00
forust ac5beb831b lint: fix bare except and unused variables 2026-06-19 11:52:30 +02:00
forust c5361f2271 Redesign message viewer as Telegram-style chat with bubbles, replies, infinite scroll, and orientation
- Chat bubbles with 1px border-radius, angular tail arrows
- Own messages right (blue), others left (dark) via sender_id vs user_id
- Reply preview with left border accent, clickable scroll to original
- Infinite scroll up via IntersectionObserver on scroll-sentinel
- Date separators (Today/Yesterday/date) between messages
- Full-height messages panel with sidebar (channels) + header
- Backend: reply_to_message data in load_messages(), user_id exposed in auth snapshot
- Auto-scroll to bottom on channel load (triple scrollTop fallback)
- history.scrollRestoration = manual to prevent mid-page jumps
2026-05-27 01:01:18 +02:00
forust 1dfe41950e Add graceful shutdown, logging, streaming with Range Requests, and state.json cache
- Graceful shutdown: SIGTERM/SIGINT handlers stop continuous scraper,
  disconnect Telegram client, drain running jobs with timeout
- Logging: replace print() with logging module throughout web server,
  basicConfig in main.py with structured log format
- Streaming: chunked file reads (64KB) instead of loading entire files
  into memory; full HTTP Range Request support (206 Partial Content)
  for video seeking in the browser
- Cache: TTL-based in-memory cache (1s) for state.json reads in
  StateStore, thread-safe with existing RLock
- Bugfix: send_error_json now converts HTTPStatus to int for JSON
2026-05-27 00:14:26 +02:00
forust d49fe28f08 Refactor server state and add health checks 2026-05-24 22:24:13 +02:00
forust a78a708757 Improve webui style and add api docs 2026-05-24 22:18:41 +02:00
forust ff000e88d4 Enchance weblog 2026-04-26 23:21:26 +02:00
forust be02eed378 Add export button for channel data and update API integration
Co-authored-by: Copilot <copilot@github.com>
2026-04-25 22:12:14 +02:00
forust db3641ddf9 Add web auth and continuous scraping logs 2026-04-25 02:34:35 +02:00
forust f57e1d63eb Add lightweight web control panel 2026-04-25 02:19:52 +02:00