Skip to content

Telegram Amiga 0.0.8 alpha - MorphOS

Pre-release
Pre-release

Choose a tag to compare

@kaffeine1 kaffeine1 released this 31 Jul 17:53

Telegram Amiga 0.0.8 alpha for MorphOS.

Added

  • Multi-DC downloads: a document stored on another Telegram datacenter now
    downloads from there (per-DC auth key with a one-time handshake, cached in
    data/telegram-auth-dc<N>.bin; FILE_MIGRATE mid-transfer hops too).
  • Local-first search: typing in the sidebar box filters YOUR chats instantly
    from the local cache; the final "Search Telegram..." row (or ENTER with no
    local match) runs the online search. The online search itself has two
    stages: it first looks through YOUR OWN dialogs on the server (which finds
    hidden chats and private groups that have no public username -- the way
    back after removing a chat from the list), and only when nothing matches
    does it ask the global Telegram search. With an EMPTY search box, the top
    row becomes "Browse all chats...": ENTER lists every dialog of the account
    from the server, hidden chats included -- the way back when the exact name
    escapes you.
  • Arrow-key navigation: up/down act on the panel under the pointer, like the
    wheel: over the sidebar they walk the chat list (ENTER opens), over the
    transcript they scroll the messages. In the search box they walk the
    result list.
  • Experimental plain-68000 build option (M68K_CPU=68000), not part of the
    released packages yet.
  • Clickable links: a http(s):// or www. URL inside a message is drawn blue
    and underlined, and clicking it opens the system browser via the
    OpenURL/URLOpen command; without one the URL is copied to the clipboard
    instead.
  • Foreign-DC avatars: a profile photo stored on another datacenter now
    downloads through the same multi-DC file channel instead of staying a
    blurred thumbnail forever.
  • Drag-and-drop upload: drop a file icon from the Workbench onto the chat
    window and it uploads to the open chat (the status names the file as soon
    as the drop lands), with the same non-blocking pump, progress and cancel
    as Send file...
  • Reload chat list menu item: re-page the dialog list from the server on
    demand, on every platform including MorphOS. Start-up no longer refetches
    the list on every run (a busy account felt heavy); the full fetch happens
    on the first login only.
  • Hidden chats memory: a chat removed from the list now STAYS removed across
    reloads and restarts; reopening it from the online search makes it visible
    again.
  • Archived chats are filtered out of the dialog list (main folder only);
    archive management is on the roadmap.
  • Configurable download drawer, picked from the menu ("Download drawer..."
    in the Telegram menu): a standard drawer
    requester, remembered for the next run. Downloading to a RAM: drawer is
    much quicker on a floppy or a slow disk. Defaults to downloads as
    before, and the file it writes (data/telegram-downloads.txt) can still
    be edited by hand.

Changed

  • AmigaOS 4: message ports and IO requests are now allocated through the
    OS4-native AllocSysObject/FreeSysObject family instead of the classic
    CreateMsgPort/CreateIORequest calls (community contribution, PR #10).
  • The transfer status line shows the rate next to the percentage
    (e.g. "Downloading 42% 38 KB/s"), averaged over a rolling window.
  • Downloads pipeline their chunks: the request for the next chunk goes out
    while the current one is still arriving, so its round trip stops costing
    wall-clock. Worth the most on slow or distant routes. Any hiccup drops the
    pipeline and the proven synchronous retry takes the chunk.
  • File transfers no longer freeze the window: one chunk moves per event-loop
    turn, so you can keep chatting, switch chats and receive messages while a
    file uploads or downloads. Close gadget or ESC cancels the transfer (a
    second close quits).
  • File transfers run on their own dedicated connection (second MTProto
    session), no longer interleaved with the live chat session.
  • Menus follow the system colours: new-look menubar and the context popup now
    drawn with the screen's own pens (dark stays dark on OS4.1, classic grey
    stays grey elsewhere).
  • Downloads write through a large buffer, so the drive is touched in big
    blocks instead of many small ones (a tester could hear the difference on
    an 030).
  • The transfer status says "ESC cancels" instead of "close or ESC cancels":
    the close gadget still works, but the hint now names the obvious key.
  • While a transfer is running the heavy live poll is throttled (the light
    push drain keeps messages flowing), which also speeds the transfer up.

Fixed

  • An adversarial review pass before the release found five defects, now
    fixed: a download into a deep drawer with a long attachment name could
    write past the end of the path buffer (the file name is now shortened,
    extension kept, and the drawer is never touched); an underscore or
    backtick inside a URL was swallowed from the drawn address and left the
    rest of the message in italic; the shortest addresses were underlined
    but not clickable; Cut/Paste in the sidebar search box did not refresh
    the filtered list; and unhiding a chat rewrote the hidden-chats file
    through a 128-entry buffer, resurfacing older hidden chats on accounts
    past that many.
  • Repeated GUI resize events could free, rebuild and repaint the double buffer
    for every intermediate size, freezing some AmiKit/RTG systems. Resize events
    are now coalesced before one rebuild, buffer release waits for the blitter,
    and Intuition redraws the final window frame.
  • AmiKit setups: the GUI froze the machine inside its very first paint on
    systems running AfA_OS 4.8, whose Text() cannot render into a layerless
    off-screen RastPort (our flicker-free double buffer). When AfA is loaded
    the client now draws bitmap text into the buffer itself via BltTemplate;
    layout and caret placement use those same bitmap-font metrics, and ordinary
    typing copies only the input strip instead of the complete window. Every
    other system keeps the native Text() path. (While hunting this, an
    AmiKit system-killer NOT caused by the client was also isolated: its bundled
    icon.library 51.4.533 can corrupt SysBase under
    Directory Opus; updating that library fixes crashes that happen with or
    without Telegram running.)
  • A wall clock stepped BACKWARDS while a query waited (AmiKit syncs time
    right after networking comes up) made the reply budget expire instantly:
    the budget now re-origins instead.
  • A stale rpc result left on the stream by an aborted query now surfaces as
    a clean soft-fail and reconnect, instead of ambiguous stream state on
    slow bsdsocket stacks.
  • The right-click popup was too narrow for its widest labels: the width is
    now measured from the actual items with the platform's own font (issue
    #11). Same report, same conclusion: "Download drawer..." moved out of the
    popup into the menu bar only -- it is a preference, not a message action.
  • Right-clicking OUTSIDE the window while it still had focus could leave you
    with no menu at all: the pointer tracking never checked whether the pointer
    had left the window, so the right-button trap stayed armed and suppressed
    the classic menu bar.
  • Double-clicking a search result opened the chat BELOW it: the first click
    already opens the result and replaces the sidebar, so the second landed on
    a different list. The second half of the double click is now ignored.
  • Pasting a text file kept its layout here but arrived as one paragraph on
    other clients: line breaks are now preserved (CR and CRLF normalised),
    instead of being flattened into spaces. The sidebar search box still takes
    one line.
  • Long pasted text with accented characters reached other clients as
    replacement characters (the UTF-8 conversion buffer had stayed at 1 KB
    while the composer grew).
  • Transfer percentage on files over ~41 MB: it wrapped back to 0 mid-file
    and climbed again (a 32-bit overflow in the percentage itself; the
    transfer was always fine).
  • Accounts whose first login predates the paged dialog bootstrap were stuck
    with a handful of chats in the sidebar: the Reload chat list menu item
    fetches the full (paged) list on demand.
  • Aminet only: the 0.0.7 AmigaOS 3.x archive shipped the wrong (AmigaOS 4)
    binary due to a case-insensitive filename collision in the packaging and
    was republished as 0.0.7a (same program, correct 68k binary). The GitHub
    zips were never affected. The packaging now checks the architecture of the
    binary inside every archive.