Commit Graph

58 Commits

Author SHA1 Message Date
Sarto ef90c0d72b ratelimit 2026-04-30 22:07:20 +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
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 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 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 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
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 baa5a82748 feat: update channel notifications and hints in index.html for improved user experience 2026-04-04 01:51:55 +03:30
Sarto dbcf7fe5d0 feat: implement dynamic versioning in build.gradle and display app version in index.html; enhance resolver scanning messages in I18N 2026-04-04 01:28:24 +03:30
Sarto 4712be5c18 feat: enhance MainActivity with system window insets handling and improve WebView alert dialogs; update index.html for better user feedback on loading states 2026-04-04 01:00:13 +03:30
Sarto 0568fc61e7 feat: improve resolver scan log handling by using includes for event detection 2026-04-03 23:27:51 +03:30
Sarto 3ad823ed76 feat: enhance client probing mechanism and improve resolver scan logging 2026-04-03 23:10:58 +03:30
Sarto 3746dbdf1b feat: improve status message handling in MainActivity and enhance loading progress indication in index.html 2026-04-03 22:38:00 +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 d1b3fb94ec feat: update log panel toggle icon and set initial visibility to hidden 2026-04-01 21:13:11 +03:30
Sarto 2450993c44 feat: update app icons and enhance message limit configuration in server setup 2026-04-01 21:01:23 +03:30
Sarto 0a8499e4d2 feat: remove service control buttons from MainActivity and update UI layout 2026-03-31 20:17:26 +03:30