<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Roadmap on fedtail</title><link>https://fedtail.dmesg.online/ru/tags/roadmap/</link><description>Recent content in Roadmap on fedtail</description><generator>Hugo</generator><language>ru-RU</language><atom:link href="https://fedtail.dmesg.online/ru/tags/roadmap/index.xml" rel="self" type="application/rss+xml"/><item><title>Возможности fedtail</title><link>https://fedtail.dmesg.online/ru/docs/features/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/ru/docs/features/</guid><description>&lt;!-- generated by tools/sync.py from the fedtail repo; do not edit --&gt;&#10;&lt;aside class="note"&gt;&#10; &lt;p class="note__title"&gt;Примечание&lt;/p&gt;&#10; &lt;p&gt;В релизе 0.16.0 документации в этом виде ещё нет, поэтому здесь состояние версии в разработке (0.17.0.dev0). Что появится только в ней, видно по столбцу «С версии».&lt;/p&gt;&#10; &lt;/aside&gt;&lt;p&gt;Состояние на версию &lt;strong&gt;0.17.0 (в работе)&lt;/strong&gt;. Это полный перечень возможностей fedtail: что делает&#10;каждая, чем включается и выключается, с какой версии есть, на каком API или протоколе стоит и&#10;как то же самое сделано у других клиентов. Здесь же — планы и то, от чего отказались, с&#10;причинами.&lt;/p&gt;</description></item><item><title>Что будет в 0.17.0</title><link>https://fedtail.dmesg.online/ru/docs/next/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fedtail.dmesg.online/ru/docs/next/</guid><description>&lt;!-- generated by tools/sync.py from the fedtail repo; do not edit --&gt;&#10;&lt;p&gt;Это ещё не вышло: так выглядит раздел 0.17.0 в журнале изменений на сегодня. Последний релиз — 0.16.0. Журнал по-английски, как в репозитории; до выхода что-то может поменяться.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The server&amp;rsquo;s rate limit is kept to: fedtail reads its X-RateLimit headers, keeps&#10;quiet once fewer requests are left than two poll rounds and a reserve, until the&#10;server&amp;rsquo;s window starts anew, and asks nothing while it is spent. One line in the&#10;status bar says until when — instead of a &amp;ldquo;429&amp;rdquo; for every lane, every round (as on&#10;GoToSocial with a few lists, the live stream waking the poller every few seconds).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Trying a theme from the menu no longer freezes the window for seconds: the lanes out&#10;of sight let their cards go first (drawn anew when opened), and the tabs out of sight&#10;are rebuilt when they come into view.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Less freezing after a poll: the lanes and their unread counts are worked out in the&#10;poll thread before the window hears of news, and unread counts are cached until a&#10;lane or a read mark changes — the sidebar asked every lane after every event, reading&#10;thousands of stored posts between two frames (250 ms to a second).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;fedtail --layout single|columns|split&lt;/code&gt; and &lt;code&gt;--theme NAME&lt;/code&gt;: the layout or the theme for&#10;one run, the config untouched.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Five themes in the spirit of messengers, for &lt;code&gt;ui.layout = &amp;quot;split&amp;quot;&lt;/code&gt; above all: &lt;code&gt;qip-retro&lt;/code&gt;&#10;(QIP Infium&amp;rsquo;s pale blue), &lt;code&gt;qip-modern&lt;/code&gt; (QIP 2012, flat), &lt;code&gt;mra&lt;/code&gt; and &lt;code&gt;mra-blue&lt;/code&gt; (the&#10;Mail.ru Agent&amp;rsquo;s orange and blue), &lt;code&gt;psi&lt;/code&gt;. They write a post as a message: &amp;ldquo;Name (15:25:43&#10;23/06/2007)&amp;rdquo; over it, mine and the others&amp;rsquo; in colours of their own — &lt;code&gt;shape.card_header = &amp;quot;chat&amp;quot;&lt;/code&gt;, &lt;code&gt;colors.chat_me&lt;/code&gt; / &lt;code&gt;chat_them&lt;/code&gt;, &lt;code&gt;words.chat&lt;/code&gt; / &lt;code&gt;chat_date&lt;/code&gt; for any theme.&#10;Their icons and colours are fedtail&amp;rsquo;s own, not anyone&amp;rsquo;s skin.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Help gets a &amp;ldquo;Server and federation&amp;rdquo; part under its contents: About the server, What it&#10;can do (the probe) and Federation status open on its right side, as pages of the same&#10;panel — the settings-like window of Psi or QIP, only for what to read, not to set&#10;(settings stay a file).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;ui.layout = &amp;quot;split&amp;quot;&lt;/code&gt; (&lt;code&gt;&amp;quot;qip&amp;quot;&lt;/code&gt;, its first name, is still understood), the first step of&#10;a messenger-style layout (docs/LAYOUTS.md): the&#10;lanes in a narrow roster window of their own, as in QIP, Psi or the Mail.ru Agent — who&#10;I am and what&amp;rsquo;s new in Activity on top, a search line, the lanes in folding groups&#10;&amp;ldquo;▾ Personal (2/9)&amp;rdquo; (with something new / all), each with its count, a line of its&#10;newest post and its author&amp;rsquo;s face. fedtail starts with the roster only; a double&#10;click (or Enter) opens a lane in the messages window — the main one, without the&#10;sidebar, its tabs drawn as tabs; closing the last tab closes it. Under the tabs, an&#10;input line is always there: in a thread&amp;rsquo;s tab it answers the thread (a private talk&#10;stays private), in a lane&amp;rsquo;s tab it writes a new post; who sees it, a warning, and ⤢ for&#10;the full Compose window. At the bottom of the roster, the menu and the accounts&#10;(@me ▾); ⚙ (or a right click on empty space) sets how it looks: compact — a line an&#10;item, without the header, the search or the buttons, only where there&amp;rsquo;s something new,&#10;without groups, above other windows (&lt;code&gt;ui.roster_on_top&lt;/code&gt; says how it starts). Closing&#10;the roster closes fedtail (to the tray with &lt;code&gt;ui.close_to_tray&lt;/code&gt;). Followed threads and private&#10;talks stand there as contacts of their own (&amp;ldquo;Threads&amp;rdquo;, &amp;ldquo;Talks&amp;rdquo;, the freshest&#10;&lt;code&gt;ui.roster_threads&lt;/code&gt;): who began it and how, or who is in it.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;fedtail took GoToSocial 0.22 for Mastodon: its version says only &amp;ldquo;0.22.1+git-…&amp;rdquo;.&#10;Now it reads the instance document&amp;rsquo;s &lt;code&gt;source_url&lt;/code&gt; and GoToSocial&amp;rsquo;s own keys, and asks&#10;the server&amp;rsquo;s nodeinfo when still unsure — so × in Activity hides here instead of&#10;asking the server, and the probe says right what GoToSocial can&amp;rsquo;t. Translating is&#10;read from the newer instance document (Mastodon said &amp;ldquo;no&amp;rdquo; before when it could).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Server info → What it can do: &amp;ldquo;Copy&amp;rdquo; (a Markdown table, for a bug report or a chat),&#10;&amp;ldquo;Save…&amp;rdquo; to a file, Ctrl+C copies the selected rows.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;≡ → Server info has a &amp;ldquo;What it can do&amp;rdquo; tab: &amp;ldquo;Check&amp;rdquo; asks the server about two dozen&#10;features with harmless one-item GETs (a few seconds, in the background) and lists yes /&#10;no / closed to me / unclear, with the limits; the last check is kept. The answers also&#10;decide which buttons fedtail offers.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Help: in the comparison tables the header row stays on top while the rows scroll under&#10;it, so a ✓ always says whose it is.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Every built-in theme comes with its fonts (all SIL OFL 1.1, all with Cyrillic, nothing&#10;to install): PT Serif in &lt;code&gt;paper&lt;/code&gt;, IBM Plex Mono in &lt;code&gt;terminal&lt;/code&gt;, IBM Plex Sans in &lt;code&gt;nord&lt;/code&gt;,&#10;Source Sans 3 and Source Code Pro in &lt;code&gt;night&lt;/code&gt; and &lt;code&gt;solarized&lt;/code&gt;, Open Sans in &lt;code&gt;point&lt;/code&gt;,&#10;Arimo in &lt;code&gt;juick&lt;/code&gt;, Comfortaa and Nunito in &lt;code&gt;pink&lt;/code&gt;, PT Sans in &lt;code&gt;contrast&lt;/code&gt;, Fira Mono in&#10;&lt;code&gt;bnw&lt;/code&gt; where DejaVu is missing. &lt;code&gt;ui.fonts&lt;/code&gt; chooses whose: the theme&amp;rsquo;s (default), the&#10;system&amp;rsquo;s, or your own (&lt;code&gt;ui.font&lt;/code&gt;, &lt;code&gt;ui.mono_font&lt;/code&gt; — any of these by name too).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;× on a row of Activity on GoToSocial: the server can&amp;rsquo;t dismiss one notification (only&#10;clear them all), and fedtail used to ask it anyway — a 404 in the log, the row stayed,&#10;and &amp;ldquo;Clear&amp;rdquo; went missing until a restart. Now × hides the row here (and stays hidden&#10;after the next fetch); on Mastodon it goes from the server too. It never mutes&#10;anything: new ones of the kind come as before. The tooltip says which it is.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Fonts of your own: &lt;code&gt;ui.fonts = &amp;quot;custom&amp;quot;&lt;/code&gt; with &lt;code&gt;ui.font&lt;/code&gt; (a list works: the first one&#10;there), &lt;code&gt;ui.mono_font&lt;/code&gt; for #ids. Fonts needn&amp;rsquo;t be installed: .ttf / .otf in&#10;&lt;code&gt;~/.config/fedtail/fonts/&lt;/code&gt; are picked up at start, and a theme can bring its own&#10;(&lt;code&gt;[font] files&lt;/code&gt;, next to its .toml).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Muting a thread works on GoToSocial: the server can&amp;rsquo;t, so fedtail mutes it itself — the&#10;thread&amp;rsquo;s mentions are dropped as they come (replies there tag everyone in the thread by&#10;themselves), even replies under posts fedtail never saw, and what came before leaves&#10;the lanes. It used to say &amp;ldquo;Your server can&amp;rsquo;t do that&amp;rdquo; and hide the item; now the item&#10;is always in the ⋯ menu, and on Mastodon it asks the server as well.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Reply with quotes: ⋯ → &amp;ldquo;Reply with quote&amp;rdquo; puts the post (or what&amp;rsquo;s selected in it) into&#10;the reply as a &lt;code&gt;&amp;gt; &lt;/code&gt; quote; a right click on selected text → &amp;ldquo;Quote in reply&amp;rdquo;. With the&#10;reply already open the quote goes where the cursor is, so a long post can be answered&#10;sentence by sentence without copying. &lt;code&gt;post.quote_prefix&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Web: the ≡ menu (write, my profile, refresh, all read, help, keys, about) and a post&amp;rsquo;s&#10;⋯ menu (reply with quote, subscribe / leave / mute the thread, copy the link, delete my&#10;post); &lt;code&gt;q&lt;/code&gt; replies with a quote. A reply shows the whole post it answers: select a piece,&#10;&amp;ldquo;❝ Quote in reply&amp;rdquo; puts it at the cursor. The picture viewer goes through the post&amp;rsquo;s&#10;pictures with ← / → and the side buttons.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Terminal interface: &lt;code&gt;p&lt;/code&gt; shows the profile for real — the screen used to scroll its header&#10;away as the first post was highlighted, and what stayed looked like a lane. Lanes by&#10;keyboard: &lt;code&gt;[&lt;/code&gt; / &lt;code&gt;]&lt;/code&gt;, &lt;code&gt;1&lt;/code&gt;…&lt;code&gt;9&lt;/code&gt;, &lt;code&gt;h&lt;/code&gt; into the lane list (&lt;code&gt;j&lt;/code&gt; / &lt;code&gt;k&lt;/code&gt; move there), &lt;code&gt;l&lt;/code&gt; back;&#10;Tab now really goes between lanes and posts. &amp;ldquo;Activity&amp;rdquo; and &amp;ldquo;Follow requests&amp;rdquo; show&#10;their rows (they were empty: they aren&amp;rsquo;t post lanes); &lt;code&gt;a&lt;/code&gt; / &lt;code&gt;d&lt;/code&gt; answer a request.&#10;Pictures drawn with half blocks: a post&amp;rsquo;s first one small in the lane&#10;(&lt;code&gt;tui.pictures&lt;/code&gt;, &lt;code&gt;tui.picture_rows&lt;/code&gt;), &lt;code&gt;v&lt;/code&gt; — all of them full screen, ← / →, &lt;code&gt;o&lt;/code&gt; — the&#10;original in the browser. Needs Pillow (&lt;code&gt;python3-pil&lt;/code&gt;).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Unsubscribing from a thread mutes its mentions too (&lt;code&gt;subs.leave_mutes&lt;/code&gt;, on): leaving&#10;used to stop &amp;ldquo;Subscriptions&amp;rdquo; only, while auto-tagged replies kept coming.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The opossum holding its own tail is back: the app&amp;rsquo;s icon (&lt;code&gt;ui.app_icon&lt;/code&gt;) and the picture&#10;in About. It is a sticker from an official Telegram sticker pack.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The config&amp;rsquo;s reference comes in English too: &lt;code&gt;config.example.en.toml&lt;/code&gt; lies next to&#10;&lt;code&gt;config.example.ru.toml&lt;/code&gt; (the old &lt;code&gt;config.example.toml&lt;/code&gt; goes). A new config is written in&#10;the desktop&amp;rsquo;s language; &lt;code&gt;--update-config&lt;/code&gt; and &lt;code&gt;--rebuild-config&lt;/code&gt; keep the language your&#10;file is in.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Help inside: ≡ → &amp;ldquo;Help&amp;rdquo; opens it as a panel over the lanes, like the compose panel —&#10;the contents on the left, search through it all, Back and Forward. Short pages, each&#10;ending in &amp;ldquo;In detail →&amp;rdquo; links into the full feature list and the settings reference,&#10;which come with it and work offline. In Russian and in English.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;≡ → &amp;ldquo;What&amp;rsquo;s this?&amp;rdquo;: point the mouse at a button and get the longer story — what it&#10;does, which config key changes it, where the help says more. For the session from the&#10;menu, or from the start with &lt;code&gt;ui.whats_this&lt;/code&gt;. Neither has a key: F1 is next to Esc.&#10;The hint is a window of its own, beside the cursor and never under it: a long Qt&#10;tooltip there was hidden and shown again round and round until the window froze.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The docs come in Russian and English, &lt;code&gt;docs/ru/&lt;/code&gt; and &lt;code&gt;docs/en/&lt;/code&gt;: the feature list now says&#10;since which version each feature is there, and fedtail next to thirteen other clients is&#10;one matrix a chapter (&lt;code&gt;comparison.md&lt;/code&gt;). All of it, the config reference and the shared&#10;pieces of the READMEs are built by &lt;code&gt;tools/docs_build.py&lt;/code&gt;; a test keeps them in step.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The database no longer grows for ever. Every &lt;code&gt;storage.gc_hours&lt;/code&gt; (6) fedtail forgets posts&#10;nothing points at any more — no lane, followed thread, activity entry or reply draft;&#10;boosted and quoted posts and parents of kept ones up the thread stay, and so do your own&#10;posts and anything stored in the last &lt;code&gt;storage.grace_hours&lt;/code&gt; (48). A forgotten post is&#10;fetched again when needed; short ids are kept for good. The file really shrinks&#10;(incremental vacuum; an older file is converted once, at the first start — it may take&#10;a moment). If it is still over &lt;code&gt;storage.max_mb&lt;/code&gt; (1 GB), lanes get shorter until it fits&#10;and grow back later. New &lt;code&gt;[storage]&lt;/code&gt; options; &lt;code&gt;storage gc:&lt;/code&gt; lines in the log.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Pictures that didn&amp;rsquo;t come no longer stay blank until a restart. When the server answered&#10;with an error twice (busy, restarting, still fetching a remote post&amp;rsquo;s media), fedtail&#10;asks again by itself in 1, 5 and 30 minutes for the cards still waiting, and a card&#10;that gave up gets the picture when it comes. The log now says the HTTP status&#10;(&amp;ldquo;HTTP 503&amp;rdquo;) instead of just &amp;ldquo;HTTPError&amp;rdquo;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;The web interface, rebuilt: a &amp;ldquo;Write&amp;rdquo; button (and ✎ on a phone) opens a composer with a&#10;content warning, who sees it, the language and a character count; drafts are kept in&#10;the browser. Replies start with the right @names and never go wider than what they&#10;answer. Pictures in a grid with a viewer, video, gifs and audio; a picture that doesn&amp;rsquo;t&#10;come says so, links to the original and is tried again later. Polls with bars and&#10;voting, link cards, quotes, custom emoji, a profile&amp;rsquo;s header, fields with ✓ verified,&#10;follow / requested. &amp;ldquo;More&amp;rdquo; at the end of a lane loads older posts. The command line has&#10;a line of its own. Lanes slide in on a phone; light and dark follow the system.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Inside: the terminal, the TUI and the web interface work on fedtail&amp;rsquo;s own data model&#10;(&lt;code&gt;fedtail/model&lt;/code&gt;, &lt;code&gt;fedtail/core/view.py&lt;/code&gt;) instead of the server&amp;rsquo;s JSON — stage 2 of&#10;docs/PROTOCOLS.md; so does the Qt window, all of it. The Mastodon API itself lives in&#10;&lt;code&gt;fedtail/protocols/mastodon/&lt;/code&gt; behind a protocol interface (stage 3), and what the server&#10;can do is kept in one place (stage 4): a button the server refuses goes at once, and&#10;stays gone after a reconnect. Nothing changes in what they&#10;show, except that the web page and &lt;code&gt;fedtail post -v&lt;/code&gt; say &amp;ldquo;followers&amp;rdquo; (&lt;code&gt;private&lt;/code&gt; still&#10;works).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item></channel></rss>