| Readme: | Short: Native MTProto Telegram chat client Uploader: michele.dipace@kaffeine.net (Michele Dipace) Author: Michele Dipace <michele.dipace@kaffeine.net> Type: comm/tcp Version: 0.0.93 Replaces: comm/tcp/tgamiga.ppc-morphos.lha Architecture: ppc-morphos Requires: MorphOS 3.x with its TCP/IP stack
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.93 ---------------------
ADDED - When the code Telegram delivers inside its app does not show up, the login screen offers the other route Telegram proposes for it, usually an SMS: press S once the wait it asks for has passed. The text client takes S at its code prompt too. The route and the wait were already in Telegram's answer and were being thrown away; the debug log now records both next to the delivery type. - A paperclip at the left of the composer opens the attachment requester. JPEG and PNG attachments offer Photo, File or Cancel, with the existing caption dialog; other attachments follow the file upload path. It remains available when emoji and inline photos are disabled. - "Settings > Enable emoji" switches the picker, composer button and graphical emoji on or off. With it off, messages keep their text emoticons and the composer keeps any emoji already entered. The choice is saved separately from photos. Like inline photos, emoji start off on native AGA/ECS/OCS screens or a 68k CPU below 68040; both need a 68040 or faster and an RTG screen to start on. Explicit on/off choices override the defaults. - A link preview that Telegram finishes later appears in the open chat by itself, including on a link just sent from this client. The title and description update the existing message; its picture uses the same Inline photos setting and bounded pipeline. The text client's cached transcript gains the preview too. - Emoji can be sent. "Insert emoji..." in the Telegram menu (Amiga+E) opens a panel above the composer: the recently used ones first, then the 109 emoji this client already reads back as text emoticons, in a grid walked with the arrow keys or clicked. ENTER inserts one at the caret and keeps the panel open, ESC closes it, and the recent row survives between runs. Inside the composer an emoji is drawn as a picture at least 16 pixels high, is edited and stepped over as one character, and goes out as its real Unicode codepoint. The pictures are Noto Emoji glyphs reduced to 16 pixels, shipped under the SIL Open Font License; see third_party/noto-emoji. A smiley button between the input and Send opens the same panel with the mouse, centred vertically on the visible input box even with a small font. - Received emoji show as pictures too, the same ones the picker offers. Small OS3 fonts such as Topaz 8 keep their size while the layout reserves a cell of at least 16 pixels for a readable emoji, with matching row spacing and caret positioning. Turning emoji off restores compact text rows and text emoticons. Clipboard text keeps the emoticon representation. - A PNG goes out as a photo. The photo gate now reads the file's own bytes rather than its name: a JPEG is walked through its first scan as before, a PNG through its chunks to IEND, so a truncated file of either kind is refused before a single part is uploaded. Telegram's photo limits, width plus height at most 10000 and at most 20 to 1, are checked from the header for the same reason, and the server's own refusals now come back in words instead of an RPC name. The menu requester, the drop target and the text client's /photo all take .png alongside .jpg. - A build file for AROS aarch64 (ARM64), aimed at the cross-toolchain used for AROS on the Raspberry Pi. The client needs no external SSL library, so the port is only a matter of the build recipe. That lane is not part of a release and is not validated yet: it builds and the login goes through, while the session file it leaves behind is still being looked at. Contributed by bohunamiga (PR #16).
FIXED - A new login gets its code again. Telegram had stopped delivering the in-app login code to this client: it accepted the request, said the code was on its way inside the app, and nothing ever reached the phone, on more than one account and with more than one api key. The connection now declares its system language as a full locale, en-US, instead of a bare en, the change other third-party clients found to bring the codes back; on a number where two requests in half an hour had produced nothing, the first one after it arrived. The same setting had worked since the first release and nobody had reported a problem with it: what changed was how Telegram treats it. Logins that were already saved were never affected. - The login screen no longer promises a code Telegram is not sending. One delivery answer means "add and verify a login email first", and it used to read like any other, so a first user waited for a message that could never arrive. That case now says what the account needs, and a delivery type this build does not recognise says so instead of pretending, with its number in the console and in the debug log. The log also records the delivery route and the digit count next to "send_code done", so a login that receives nothing can be diagnosed from the log alone. The delivery line on the code screen no longer cuts "phone" short. - Clicking URL text keeps the pointer aligned with literal characters such as underscores and tildes, including below a link preview. Wrapped URLs keep their complete text and link styling across lines. Clicking the preview picture still opens the image viewer. - Opening a photo's context menu or the Send photo dialog no longer freezes AfAOS while drawing its labels. Popup areas are copied from the completed buffer after photo replay, so menus, mentions and emoji stay above pictures during full repaints, refreshes and caret updates. The photo dialog also uses the compatible bitmap text and matching caption/button metrics. - Toggling emoji no longer resizes avatars in the chat list or header. The search field, chat rows and open-chat header keep their compact native font dimensions too, with centred text and avatars, including initials. Names and previews still fit graphical emoji; clicks, scrolling and row reordering follow the same compact layout. - Composer text, caret and selection use the font's real baseline, correcting the low text position with taller MorphOS fonts. The Send label stays centred when the composer wraps onto several lines. - "Save photo as..." suggests .png for PNG bytes and .jpg for JPEG bytes, regardless of the internal cache name. An uncached image is fetched before the requester opens, then copied without conversion. Photos re-encoded by Telegram keep the received format; sending as File preserves the original. - The automatic inline-photo default checks the screen's actual bitmap. Having cybergraphics.library installed no longer makes an AGA/ECS/OCS screen count as RTG. Emoji use the same check, including on classic OS4.
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/
|