Telegram Amiga 0.0.9 alpha - MorphOS
Pre-release
Pre-release
·
9 commits
to main
since this release
Telegram Amiga 0.0.9 alpha for MorphOS.
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 theSkey; 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. Settingsnow includes a persistent photo-cache limit (10, 50 or 200 MiB,
or Unlimited; default 50 MiB) and a confirmedClear photo cacheaction.
The client catalogsphotos/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 andPhoto ditheringwith 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.jpgdisk cache and
reveals the JPEG progressively without evicting transcript photo slots. - The GUI now has a persistent
Settings > Inline photostoggle. 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/forwardfor the latest message and/forward <id>for an
explicit Telegram message ID. Forwarding uses the layer-214
messages.forwardMessagesmethod 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-diskphotos/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/photocommand. 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 photosdefault 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.libraryat 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 oneBltTemplateper 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-debugnow 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.