34 Commits

Author SHA1 Message Date
Sarto 625b00d815 feat: downlaod profile images and fix some bugs ( #75 #76 #77 #78 #79 ) 2026-05-05 20:00:27 +03:30
Sarto 213dc86881 feat: per-profile channels cache + UX fixes (2x media playback, profile-switch race, pinch-zoom, bg picker) 2026-05-04 11:43:41 +03:30
Sarto 989fec3cec feat: relays for download media 2026-04-30 16:57:11 +03:30
Sarto b4e9cd8714 feat: media download with DNS query 2026-04-29 01:45:27 +03:30
Sarto 452d8462c4 feat: preserve display name when merging cached messages 2026-04-22 17:38:10 +03:30
Sepehr 2bd4835674 feat: lazy background title fetch with disk cache and backoff
- Persist display names in per-channel JSON cache files (Name +
  DisplayName fields on cachedChannel). GetAllTitles reads all ch_*.json
  files; PutTitle updates a channel file in-place without losing messages.

- Replace blocking FetchTitles calls in fetchMeta and refreshChannel with
  an instant disk read (GetAllTitles) applied before the SSE broadcast,
  so channels appear with cached titles immediately on every load.

- ensureTitlesFetched runs in a single background goroutine (titlesMu +
  titlesLoading guard prevents duplicates). On success it persists titles
  and pushes an SSE update. On error or empty response it backs off for
  5 minutes so an old server does not cause endless retries.

- Block 0 of TitlesChannel now carries a uint16 total-block-count prefix
  (added in rebuildTitlesBlocks). FetchTitles reads the count from block 0
  and fetches all remaining blocks in parallel instead of sequentially.

- FetchTitles timeout raised from 10 s to 1 minute.
2026-04-21 21:19:29 -04:00
Sepehr 85558074b4 feat: add TitlesChannel (0xFFF9) for per-channel display names
- Add dedicated TitlesChannel (0xFFF9) following the VersionChannel pattern
- Server encodes name→title map via EncodeTitlesData/DecodeTitlesData
- Metadata wire format unchanged for backward compatibility with old clients
- All three fetchers (public Telegram, MTProto, X/Nitter) extract and store display names
- Client fetches TitlesChannel with a 10s deadline; falls back to channel handles gracefully on old servers
- Old clients are unaffected — they never query 0xFFF9
2026-04-20 18:27:11 -04:00
Sarto 4111d5115a Refactor scanner presets, and add iran lion and sun flag 2026-04-15 15:04:11 +03:30
Sarto 904d6997a3 feat: implement resolver bank functionality and add verifyer to fetcher 2026-04-14 23:40:47 +03:30
Sarto 6c1765e881 feat: add automatic hourly resolver health-check and UI toggle 2026-04-14 17:51:16 +03:30
Sarto 2d3b71bd04 better resolver score board (faster load) +UI features 2026-04-14 02:06:32 +03:30
Sarto a828f314ef feat: add XPublicReader for fetching public posts from X via Nitter RSS 2026-04-12 16:58:03 +03:30
Sarto ca54375e5e add internal scanner with iran Famous Public DNS Servers from SlipNet 2026-04-11 22:35:58 +03:30
Sarto 8c413f9ebf feat: Implement version tracking, fix telegram fetcher, hourly report, fix add channel bug 2026-04-11 15:45:59 +03:30
Sarto 59e526c073 first let user chose to start scanner or use old ones / fix cache bug / shufle resolvers 2026-04-07 03:35:07 +03:30
Sarto 63d46b4540 feat: implement saved resolvers feature with UI prompt and API integration 2026-04-06 23:58:48 +03:30
Sarto 956856562e feat: add cache clear and rescan APIs and message cache
- Implemented /api/cache/clear endpoint to delete all files in the cache directory.
- Added tests for cache clear functionality, including cases for empty cache and method not allowed.
- Introduced /api/rescan endpoint to trigger a manual rescan of the configured channels.
- Added tests for rescan functionality, covering cases for not configured, method not allowed, and successful rescans.
- Enhanced server initialization to bootstrap configuration from active profile if config.json is missing.
2026-04-06 00:18:37 +03:30
Sarto 9c53dad419 Enhance DNS resolver functionality and UI settings
- Refactor fetcher tests to improve coverage and add new tests for resolver scoring and query handling.
- Update ResolverChecker to retry every minute until a healthy resolver is found and adjust timeout settings.
- Introduce scatter parameter in the configuration to allow concurrent DNS requests, with UI adjustments for user input.
- Modify metadata fetching logic to utilize cached data efficiently and ensure fresh data is fetched when necessary.
- Implement server-side handling for fetch progress, including countdowns and UI updates during long fetch operations.
2026-04-04 19:04:11 +03:30
Sarto 1311126e71 feat: reduce fetcher timeout from 30 seconds to 15 seconds for improved responsiveness 2026-04-04 10:43:30 +03:30
Sarto f3194a3191 feat: increase fetch interval to 10 minutes for PublicReader and TelegramReader to optimize resource usage 2026-04-04 02:26:27 +03:30
Sarto 3ad823ed76 feat: enhance client probing mechanism and improve resolver scan logging 2026-04-03 23:10:58 +03:30
Sarto 271e6f569e Implement profiles management and settings API
- Added Profile and ProfileList structs to manage user profiles with unique IDs and nicknames.
- Introduced endpoints for CRUD operations on profiles: `/api/profiles` for managing profiles and `/api/profiles/switch` for switching active profiles.
- Implemented settings management with an endpoint `/api/settings` to handle user preferences like font size and debug mode.
- Enhanced the server to load and save profiles from a `profiles.json` file.
- Updated the fetcher initialization to respect the active profile's configuration.
- Added comprehensive end-to-end tests for profiles and settings APIs to ensure functionality and persistence.
2026-04-03 22:08:54 +03:30
Sarto b89fc93829 fix: adjust timeouts and payload sizes for improved performance; enhance UI styles and responsiveness 2026-03-31 17:37:19 +03:30
Sarto 6dda44125d change edns0 2026-03-30 22:18:17 +03:30
Sarto 45372ea39d fix: increase timeout and EDNS buffer size for improved DNS resolution 2026-03-30 21:56:16 +03:30
Sarto f7c611f69a make telegram login optional and add admin features for send message or change server configuration 2026-03-30 18:08:48 +03:30
Sarto 5988c5bc1e remove dead code and change retry count for client 2026-03-28 03:46:26 +03:30
Sarto 266d8faf2d change max attempt from 3 to 6 2026-03-26 18:56:56 +03:30
Sarto c20f6a0ea7 refactor: adjust runNoise method to use a fixed interval for decoy queries 2026-03-26 03:37:55 +03:30
Sarto 3aa7dc3244 feat: add message limit option for Telegram channels and update progress display 2026-03-26 01:51:00 +03:30
Sarto 0e9a12beac feat: add debug logging for response data in FetchBlock method 2026-03-26 01:37:39 +03:30
Sarto ab93b48d80 fix: increase timeout values for resolver and web server 2026-03-25 23:23:28 +03:30
Sarto e9226d6543 feat: implement AES-256 block cipher for query encryption and decryption 2026-03-25 23:13:33 +03:30
Sarto 5f43bfe076 feat: 🎉 first version 2026-03-25 11:30:02 +03:30