Short: Native MTProto Telegram chat client Author: Michele Dipace Uploader: michele dipace kaffeine net (Michele Dipace) Type: comm/tcp Version: 0.0.9 Replaces: comm/tcp/tgamiga.x86_64-aros.lha Requires: AROS (x86_64) with a TCP/IP stack (AROSTCP) Architecture: i386-aros WHAT IS THIS? ------------- Telegram Amiga brings real, live Telegram chat to the Amiga -- not through a gateway, a proxy service or a web wrapper, but by speaking Telegram's own MTProto protocol natively, from scratch, on your machine. You sign in to your normal Telegram account, your chat list appears, and you talk to people (and they talk back) on hardware that may well be older than they are. Everything is built in: RSA, Diffie-Hellman, AES, SHA and the SRP two- factor login are implemented inside the program. Zero external dependencies -- no MUI, no ixemul.library, no AmiSSL, no TCP helper beyond your system's own bsdsocket stack. One program, two faces, one engine and one saved login: TelegramAmiga - the native Intuition/GadTools GUI: chat list with real profile-picture avatars, message bubbles, scrollbars, mouse wheel, context menus. This package ships its icon. The same binary also runs a full-screen text/console client from a Shell -- the manual gives the command line. WHAT CAN I ACTUALLY DO WITH IT? ------------------------------- Read and send messages in private chats, groups and channels. Download a received file (right-click -> Download) or send one from disk, up to 250 MiB on this build, including files over 10 MiB. Photos appear immediately as blurred previews, refine from a bounded download and reuse decoded pixels from disk when reopened. Click one for a larger progressive viewer, or disable inline loading on a slower machine and open only the images you choose. Forward one message to Saved Messages in a click, or choose another destination through chat search. Use the pinned Saved Messages chat as a cloud transfer drawer between the Amiga and your phone or PC. Reply to a specific message (right-click it). Edit or delete your own messages. See real delivery state: one tick = sent, two blue ticks = read, updating live. See who is typing. Search for chats. Send messages from your desk at work and find the conversation already synced when you get home to the Amiga -- and the other way round. Message times follow your Amiga clock. Unread badges and your chat order survive restarts. The window remembers where you left it, and can open on its own screen if you prefer a dedicated page for chatting. GETTING STARTED --------------- 1. Copy this drawer to a WRITABLE volume (not from the archive directly). 2. Double-click TelegramAmiga (or TelegramAmiga-TUI on very low-end setups). 3. First run walks you through the normal Telegram login: phone number, the code Telegram sends you, and your cloud password if you use two-factor. That is all -- next time it goes straight to your chats. The login is stored in telegram-auth.bin next to the program. Treat that file like a house key: NEVER copy it around or share it -- anyone who has it has your Telegram session. Full EN and IT manuals are in the archive, including per-platform notes and troubleshooting. WHAT IS NEW IN 0.0.9 -------------------- ADDED - The full-screen TUI now word-wraps transcript messages on narrow consoles, with indented continuation lines and hard breaks for overlong words. Its composer grows from one to three screen rows before reverting to a bounded tail view, while scrollback continues to move by logical messages. - Photo messages now offer Save photo as... from their context menu whether inline display is enabled or not. The fixed-size viewer exposes the same action on the S key; both use a save requester, prefer the best cached original JPEG, fetch the viewer-size JPEG on demand when necessary and ask before replacing an existing file. - Settings now includes a persistent photo-cache limit (10, 50 or 200 MiB, or Unlimited; default 50 MiB) and a confirmed Clear photo cache action. The client catalogs photos/ incrementally during idle time, prunes the oldest files without evicting photos currently on screen, and never touches the separate avatar cache. - Photo messages now use Telegram's embedded stripped thumbnail as an instant blurred preview while the bounded network image is fetched and refined. The tiny preview is cached separately, works in the transcript and viewer, and does not start background work when inline photos are disabled. - The Telegram menu now groups persistent preferences under Settings: download drawer, inline photos and Photo dithering with Full, Light and Off levels. Each change is written immediately and restored at next start. - Clicking a photo, including the [Photo] label while inline photos are disabled, now opens one reusable fixed-size viewer window. It requests a larger bounded Telegram image, keeps a separate -l.jpg disk cache and reveals the JPEG progressively without evicting transcript photo slots. - The GUI now has a persistent Settings > Inline photos toggle. It defaults to on except on AmigaOS 3 systems without RTG or with a CPU below a 68040; every explicit choice wins over the hardware default. Disabling it restores lightweight [Photo] bubbles without background photo fetch or decode work. - A message can now be forwarded to Saved Messages from its GUI context menu. The TUI provides /forward for the latest message and /forward for an explicit Telegram message ID. Forwarding uses the layer-214 messages.forwardMessages method and reports Telegram RPC failures by name. - The GUI's Forward to... action now reuses the local-first chat search as a destination picker, including browse and online results. The TUI provides /forwardto [message-id] for the same peer-to-peer operation. - Photo messages now render inline in GUI bubbles. The client selects a bounded Telegram thumbnail for each platform, downloads it incrementally through the existing multi-DC file channel, and reuses the on-disk photos/ cache on later paints and runs. Text-only and failed-download fallbacks remain usable. - JPEG files can now be sent as Telegram photos from the GUI, Workbench drop or the TUI /photo command. The existing non-blocking upload engine is reused; photos above 10 MiB are sent as documents with explicit status feedback. CHANGED - AmigaOS 3 chooses the first-run Inline photos default from the active screen and CPU: it starts disabled without RTG or below a 68040. This automatic value is never written to disk, so hardware upgrades are detected; an explicit user toggle remains persistent in either direction. - AmigaOS 3.x now discovers cybergraphics.library at runtime and sends inline-photo and viewer RGB888 rows directly to compatible true-colour RTG screens. AGA and systems without a validated CyberGraphX target keep the existing zero-dependency pen-grid renderer. - Photo decode and canonical-cache reads now size their idle slices from measured execution time instead of a fixed CPU-family assumption. Slow 68k machines retain the conservative floor, while fast 68k accelerators ramp up toward a roughly 120 ms work budget and use a short wake cadence until the visible photo queue is drained. - JPEG decode, canonical-cache reads and photo replay now keep independent measured budgets. Slow palette mapping can no longer throttle entropy decode on accelerated 68k systems, and diagnostics identify the cost centre for every pacing adjustment. - Non-68k photo scheduling now starts bounded background work without waiting behind a continuous pointer-event stream, advances larger JPEG and palette slices, and loads normal canonical RGB frames in about two chunks. The conservative m68k pacing remains unchanged. - Final canonical photo frames are now cached atomically as versioned RGB888 files beside their JPEGs. Reopening a viewed chat can load the exact pixels in bounded idle chunks without decoding JPEG again; corrupt or stale cache entries are discarded and rebuilt automatically. - Non-68k targets now select an approximately 800-pixel inline Telegram source within a 1 MiB cap. Final-pass upscales use bilinear filtering, while coarse preview passes and ordinary downscales retain the bounded fast path. - MorphOS RTG screens now keep photos in RGB888 and replay them directly to the CyberGraphX window after the off-screen frame blit when its friend bitmap is not a CGX target. The runtime-checked pen-grid fallback remains available for paletted screens and incompatible drivers. - Live resize now paints only the window background while intermediate sizes are arriving. On AfA_OS it also clears the current client area at the first size event, so the system's opaque resize stretches only blank background; the complete frame is rebuilt once after release. Crash-safe diagnostics mark resize begin, rebuild, repaint and end without changing the final layout. - Inline photos now decode once into a platform-sized canonical cache and repaint from that cache at every bubble size. Resize paints never trigger a JPEG decode, modern RTG targets use optional RGB888 output, paletted screens use ordered dithering, and larger bounded thumbnails improve detail without making repaints depend on image size. - Inline JPEG decoding now advances in bounded idle slices outside the paint path using browser-style quality passes: a complete coarse 1/8 image appears first, then 1/4 and final detail replace it atomically. Input, scrolling and resize events keep priority, and incomplete bands never enter a paint. - The AfA_OS compatibility renderer now composes complete bitmap-font runs in memory and submits one BltTemplate per run instead of one per glyph. Native text rendering on systems without AfA_OS is unchanged. - Inline-photo decoding now follows the visible viewport: the topmost visible photo is advanced first, off-screen partial decoders wait, and idle periods use larger bounded slices without taking priority over queued GUI events. - The canonical photo cache now keeps four slots on 68k and six on wider targets. True LRU eviction skips active and currently visible photos, so a third visible image no longer makes an earlier one disappear. - Hidden chats now remain in the local peer cache. They stay out of the normal sidebar, appear immediately in local search with a (hidden) marker, and return to the sidebar when opened, without an online search or cache reload. FIXED - Temporary quiet-log files no longer litter the program drawer: they live in T: and are cleaned up at startup and exit. - TUI composer threshold crossings now repaint only the separator and the one-to-three composer rows, restoring just the transcript rows that become visible again. Direct character echo and rubout remain active on wrapped composer rows, so narrow 68000 consoles no longer flash or pause per key. - Local five-lane test packaging now creates AROS media only with Rock Ridge plus Joliet, verifies the executable inside every archive and ISO, rejects reused volume labels and keeps the macOS hybrid path limited to AmigaOS 4. - Progressive transcript photos and the photo viewer now share one owner-checked decode pipeline. Back-to-back fetch completions remain queued until the current image commits, preventing one photo from being repeated or split across another message bubble on fast targets. - Shell launches now carry the same 1 MiB minimum-stack contract as Workbench icons. AROS also swaps to a private safe stack when a launcher supplies less; OS3 and OS4 reject unsafe bounds instead of entering the stack-heavy GUI. - Photo source selection now prefers baseline JPEG sizes that the bundled decoder supports. If a downloaded size is rejected, the client retries a smaller untried baseline size instead of rejecting the whole photo for the rest of the session; transcript and viewer use the same bounded fallback. - Final photo-quality upscales now derive fixed-point coordinates without a 32-bit overflow, preventing large images from repeating rows or tiles when the detailed frame replaces a stripped or coarse preview. - Every visible stripped photo preview is now prepared before serialized network and quality work begins, so later photos and the on-demand viewer no longer remain grey while an earlier image is being refined. - Background photo work can no longer wait forever behind continuous window events or an inactive window. The heartbeat now advances it, visible failed fetches are re-queued, and a clicked viewer photo has queue priority. - The JPEG drop requester now offers Photo, File and Cancel as distinct actions; its Cancel button and Escape key leave the file untouched. - Empty inline-photo preference files now fall back cleanly to the default setting without relying on an unchecked read result. - Documents with a caption now keep the caption and append the downloadable file label on a new line instead of hiding the attachment name. - Inline-photo cache downloads no longer become permanently suppressed after a transient network, datacenter or filesystem failure. Opt-in live diagnostics now identify each fetch and render stage without logging chat content. - Inline photos on MorphOS now use the proven pen-grid renderer instead of an RGB888 path that could leave decoded photos grey. Other RTG targets validate the destination bitmap with a write/read self-check and fall back for the whole session when the driver cannot replay RGB pixels reliably. - Photo fetch, decode and partial replay now remain suspended for the complete resize cycle. A stable placeholder frame is built first and cached images are restored on the next idle paint, avoiding buffer access during reallocation. - --gui-live-debug now records a bounded set of AfA_OS full-paint metrics: render/blit clock ticks, primitive count, batched and fallback text blits, and RGB-row or pen-run photo replay work. Normal GUI runs remain unchanged. A COMMUNITY PROJECT ------------------- MIT licensed, non-commercial, written for the love of the platform. Bug reports and wishes are very welcome -- testers on real hardware (A1200s, A4000s, Pegasos, Sam, FPGA machines) are what moves this project forward. Source + issues: https://github.com/kaffeine1/telegram-amiga Development diary: https://androidlab.it/en/telegram-amiga-mtproto-client-development-diary/