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 <id> 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 <chat-number> [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/
|