Это ещё не вышло: так выглядит раздел 0.17.0 в журнале изменений на сегодня. Последний релиз — 0.16.0. Журнал по-английски, как в репозитории; до выхода что-то может поменяться.
fedtail took GoToSocial 0.22 for Mastodon: its version says only “0.22.1+git-…”. Now it reads the instance document’s
source_urland GoToSocial’s own keys, and asks the server’s nodeinfo when still unsure — so × in Activity hides here instead of asking the server, and the probe says right what GoToSocial can’t. Translating is read from the newer instance document (Mastodon said “no” before when it could).Server info → What it can do: “Copy” (a Markdown table, for a bug report or a chat), “Save…” to a file, Ctrl+C copies the selected rows.
≡ → Server info has a “What it can do” tab: “Check” asks the server about two dozen features with harmless one-item GETs (a few seconds, in the background) and lists yes / no / closed to me / unclear, with the limits; the last check is kept. The answers also decide which buttons fedtail offers.
Help: in the comparison tables the header row stays on top while the rows scroll under it, so a ✓ always says whose it is.
The
papertheme comes with its fonts: PT Serif and PT Mono (ParaType, SIL OFL 1.1) are in fedtail, nothing to install.× on a row of Activity on GoToSocial: the server can’t dismiss one notification (only clear them all), and fedtail used to ask it anyway — a 404 in the log, the row stayed, and “Clear” went missing until a restart. Now × hides the row here (and stays hidden after the next fetch); on Mastodon it goes from the server too. It never mutes anything: new ones of the kind come as before. The tooltip says which it is.
The font over the theme’s and the system’s:
ui.font(a list works: the first one installed),ui.mono_fontfor #ids. Fonts needn’t be installed: .ttf / .otf in~/.config/fedtail/fonts/are picked up at start, and a theme can bring its own ([font] files, next to its .toml).Muting a thread works on GoToSocial: the server can’t, so fedtail mutes it itself — the thread’s mentions are dropped as they come (replies there tag everyone in the thread by themselves), even replies under posts fedtail never saw, and what came before leaves the lanes. It used to say “Your server can’t do that” and hide the item; now the item is always in the ⋯ menu, and on Mastodon it asks the server as well.
Reply with quotes: ⋯ → “Reply with quote” puts the post (or what’s selected in it) into the reply as a
>quote; a right click on selected text → “Quote in reply”. With the reply already open the quote goes where the cursor is, so a long post can be answered sentence by sentence without copying.post.quote_prefix.Web: the ≡ menu (write, my profile, refresh, all read, help, keys, about) and a post’s ⋯ menu (reply with quote, subscribe / leave / mute the thread, copy the link, delete my post);
qreplies with a quote. A reply shows the whole post it answers: select a piece, “❝ Quote in reply” puts it at the cursor. The picture viewer goes through the post’s pictures with ← / → and the side buttons.Terminal interface:
pshows the profile for real — the screen used to scroll its header away as the first post was highlighted, and what stayed looked like a lane. Lanes by keyboard:[/],1…9,hinto the lane list (j/kmove there),lback; Tab now really goes between lanes and posts. “Activity” and “Follow requests” show their rows (they were empty: they aren’t post lanes);a/danswer a request. Pictures drawn with half blocks: a post’s first one small in the lane (tui.pictures,tui.picture_rows),v— all of them full screen, ← / →,o— the original in the browser. Needs Pillow (python3-pil).Unsubscribing from a thread mutes its mentions too (
subs.leave_mutes, on): leaving used to stop “Subscriptions” only, while auto-tagged replies kept coming.The opossum holding its own tail is back: the app’s icon (
ui.app_icon) and the picture in About. It is a sticker from an official Telegram sticker pack.The config’s reference comes in English too:
config.example.en.tomllies next toconfig.example.ru.toml(the oldconfig.example.tomlgoes). A new config is written in the desktop’s language;--update-configand--rebuild-configkeep the language your file is in.Help inside: ≡ → “Help” opens it as a panel over the lanes, like the compose panel — the contents on the left, search through it all, Back and Forward. Short pages, each ending in “In detail →” links into the full feature list and the settings reference, which come with it and work offline. In Russian and in English.
≡ → “What’s this?”: point the mouse at a button and get the longer story — what it does, which config key changes it, where the help says more. For the session from the menu, or from the start with
ui.whats_this. Neither has a key: F1 is next to Esc. The hint is a window of its own, beside the cursor and never under it: a long Qt tooltip there was hidden and shown again round and round until the window froze.The docs come in Russian and English,
docs/ru/anddocs/en/: the feature list now says since which version each feature is there, and fedtail next to thirteen other clients is one matrix a chapter (comparison.md). All of it, the config reference and the shared pieces of the READMEs are built bytools/docs_build.py; a test keeps them in step.The database no longer grows for ever. Every
storage.gc_hours(6) fedtail forgets posts nothing points at any more — no lane, followed thread, activity entry or reply draft; boosted and quoted posts and parents of kept ones up the thread stay, and so do your own posts and anything stored in the laststorage.grace_hours(48). A forgotten post is fetched again when needed; short ids are kept for good. The file really shrinks (incremental vacuum; an older file is converted once, at the first start — it may take a moment). If it is still overstorage.max_mb(1 GB), lanes get shorter until it fits and grow back later. New[storage]options;storage gc:lines in the log.Pictures that didn’t come no longer stay blank until a restart. When the server answered with an error twice (busy, restarting, still fetching a remote post’s media), fedtail asks again by itself in 1, 5 and 30 minutes for the cards still waiting, and a card that gave up gets the picture when it comes. The log now says the HTTP status (“HTTP 503”) instead of just “HTTPError”.
The web interface, rebuilt: a “Write” button (and ✎ on a phone) opens a composer with a content warning, who sees it, the language and a character count; drafts are kept in the browser. Replies start with the right @names and never go wider than what they answer. Pictures in a grid with a viewer, video, gifs and audio; a picture that doesn’t come says so, links to the original and is tried again later. Polls with bars and voting, link cards, quotes, custom emoji, a profile’s header, fields with ✓ verified, follow / requested. “More” at the end of a lane loads older posts. The command line has a line of its own. Lanes slide in on a phone; light and dark follow the system.
Inside: the terminal, the TUI and the web interface work on fedtail’s own data model (
fedtail/model,fedtail/core/view.py) instead of the server’s JSON — stage 2 of docs/PROTOCOLS.md; so does the Qt window, all of it. The Mastodon API itself lives infedtail/protocols/mastodon/behind a protocol interface (stage 3), and what the server can do is kept in one place (stage 4): a button the server refuses goes at once, and stays gone after a reconnect. Nothing changes in what they show, except that the web page andfedtail post -vsay “followers” (privatestill works).