Commit Graph

75 Commits

Author SHA1 Message Date
Sarto 6c1bb9f58f feat: add GitHub update check and APK handling for in-app updates 2026-05-02 17:22:28 +03:30
Sarto ad1196173a fix dns media downlaod timeouts and video play in android 2026-05-02 00:37:47 +03:30
Sarto ace8ce8627 feat: better handle back button and exit 2026-05-01 22:49:52 +03:30
Sarto 68009f5d92 fix some bugs! 2026-05-01 21:42:37 +03:30
Sarto c603442d01 fix teleport bug! 2026-05-01 11:48:21 +03:30
Sarto 76d958bdff feat: implement media handling via native bridge for Android 2026-05-01 00:01:51 +03:30
Sarto fea393a627 fix: update User-Agent header for GitHub requests and improve commit messages 2026-04-30 23:42:15 +03:30
Sarto ef90c0d72b ratelimit 2026-04-30 22:07:20 +03:30
Sarto 0defe0489b fix: enhance error handling in GitHub raw fetch with detailed rate limit and auth error context 2026-04-30 21:23:14 +03:30
Sarto 7834f0f598 fix: update Android build process to use cgo for DNS resolution and streamline HTTP client configuration 2026-04-30 20:52:06 +03:30
Sarto 503852fce9 feat: implement custom HTTP client for GitHub relay with fallback DNS support 2026-04-30 19:45:43 +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 11946c0147 fix: enhance "new messages" handling with sticky separator and improved lastSeen timestamp management #35 2026-04-27 14:30:30 +03:30
Sarto 2f5a735203 fix: improve media parsing logic for Telegram messages and add regression tests for premium emojis 2026-04-27 13:46:32 +03:30
Sarto f40af8fbb1 feat: add host flag to configure web UI listen address
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 16:50:47 +03:30
Sepehr 2ff7cbd751 fix: use matchMedia for mobile nav to fix background restore bug
window.innerWidth can briefly report the desktop viewport width when
the page is restored from a long Android background session, causing
openChat() to skip adding chat-open even though chatIsOpen is true.

Replace all window.innerWidth checks with mobileQuery.matches so the
JS breakpoint always agrees with CSS. Also swap the resize listener
for mobileQuery.addEventListener('change') which only fires when the
breakpoint actually crosses, and add a visibilitychange handler to
re-apply chat-open when the app returns to the foreground.
2026-04-24 17:05:00 -04:00
Sarto e815dba9ec Merge pull request #25 from sepehr-alipour/fix/mobile-chat-layout-state
fix: restore chat-open state on viewport resize to prevent split layout bug
2026-04-24 02:17:26 +03:30
Sepehr a3fc6cc133 fix: restore chat-open state on viewport resize to prevent split layout bug 2026-04-23 18:13:49 -04:00
Sarto fce8f0dd65 feat: update chat name display to support emoji and custom HTML 2026-04-23 11:25:45 +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 1496b00a94 feat: show @handle subtitle in channel list and chat header; add mobile kebab menu
- Channel list: always show @handle as subtitle below display name for Telegram channels
- Chat header: show @handle as subtitle below channel title
- Mobile (<768px): hide Search/Export buttons; show them in a ⋮ kebab menu (rightmost button)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 19:17:12 -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
Sepehr dd77610f18 fix: store display names separately to preserve channel handle identifiers
- Add DisplayName field to ChannelInfo in the wire protocol
- Add displayNames map to Feed; SetChannelDisplayName no longer mutates
  f.channels, keeping handles stable for cache keys and management
- Public fetcher: extract title via extractChannelTitle, pass to feed
- Telegram fetcher: capture ch.Title / user.FirstName from MTProto API
- Frontend: render DisplayName as sidebar label, keep Name as identifier
2026-04-20 18:27:11 -04:00
Sarto 74e12801da fix: change proggress-bar timeout 2026-04-20 16:53:09 +03:30
Sarto dfa2bf6aee feat: enhance channel refresh handling with progress tracking and auto-remove functionality 2026-04-20 15:56:21 +03:30
Sarto c241920e6e refactor: update refresh handling to support multiple concurrent operations 2026-04-20 14:30:28 +03:30
Sepehr a874740e92 fix: linkify raw text to preserve URLs with & in query params
Previously linkify received pre-escaped text, so & in URLs became &amp;
causing the regex to truncate URLs at query-string boundaries. Now
linkify escapes HTML internally so URLs are matched against raw text.
Also adds [label](url) markdown link support.
2026-04-17 10:19:31 -04:00
Sarto 8a426ef21f feat: enhance message parsing with support for polls and replies, and improve HTML rendering 2026-04-16 14:34:02 +03:30
Sarto 158bec5d4c feat: remove app name preset functionality and related UI elements 2026-04-16 00:58:17 +03:30
Sarto c5d32e0506 fix 2026-04-15 23:23:23 +03:30
Sarto a4bda5d155 feat: enhance settings UI with full-width buttons and improved cache clearing functionality 2026-04-15 22:34:55 +03:30
Sarto 4968bd191e feat: implement app name presets and enhance password management UI 2026-04-15 21:48:51 +03:30
Sarto 99f63f2e8e feat: add app customization features including dynamic icon and name changes 2026-04-15 18:32:04 +03:30
Sarto 0d236d3834 feat: implement password protection and app customization features for Android 2026-04-15 17:24:57 +03:30
Sarto 4111d5115a Refactor scanner presets, and add iran lion and sun flag 2026-04-15 15:04:11 +03:30
Sarto 7b65d605b8 fix: ensure resolvers have default port and update bank resolver handling 2026-04-15 01:38:36 +03:30
Sarto 1712206835 fix: update fetcher stats persistence and improve profile saving method 2026-04-15 00:47:37 +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 9ab82c33ba feat: add background image handling and language/theme settings API 2026-04-14 03:33:21 +03:30
Sarto d5d8763b3a fix: update background image handling in chat area for improved visibility 2026-04-14 03:22:19 +03:30
Sarto 894fbbdfd6 fix: remove fixed background attachment for improved responsiveness 2026-04-14 02:56:39 +03:30
Sarto 2d3b71bd04 better resolver score board (faster load) +UI features 2026-04-14 02:06:32 +03:30
Sarto 487ff23840 feat: improve frontend (add light theme, handle back button, get approve for resolver checker, new message lable, ... ) 2026-04-13 22:08:19 +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 f360a14e46 style: increase gap in layout for better spacing 2026-04-08 04:45:00 +03:30
Sarto cbc85cef98 format code! 2026-04-08 04:33:09 +03:30