Skip to content

Telegram Amiga 0.0.9 alpha - AmigaOS 4.x

Pre-release
Pre-release

Choose a tag to compare

@kaffeine1 kaffeine1 released this 07 Aug 13:37
· 9 commits to main since this release

Telegram Amiga 0.0.9 alpha for AmigaOS 4.x.

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.