Telegram Amiga 0.0.8 alpha - MorphOS
Pre-release
Pre-release
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_MIGRATEmid-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 todownloadsas
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.