Compare commits

...

12 Commits

Author SHA1 Message Date
128575df05 Fixed a typo 2025-03-08 14:28:26 -06:00
64af7dc02b Added new release notes 2025-03-08 14:11:46 -06:00
6a8ef9b523 Include a previous setuptools version 2025-03-08 14:10:49 -06:00
2a4a17fdeb Fixed update links 2025-03-08 13:57:30 -06:00
Mira P
bea28d8d19 Translated using Weblate (Bulgarian)
Currently translated at 28.7% (200 of 696 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/bg/
2025-03-08 18:23:01 +00:00
Corentin Bacqué-Cazenave
89a89778aa Translated using Weblate (French)
Currently translated at 100.0% (674 of 674 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/fr/
2025-03-08 18:23:00 +00:00
2b4a66aa05 Bumped to a new version 2025-03-08 11:59:48 -06:00
70a1c9fbcc Minimal code cleanup 2025-03-08 11:57:09 -06:00
76dae8bcf8 Prepare changelog for release 2025-03-08 11:51:43 -06:00
b432873500 Fix some typos on changelog 2025-03-08 11:32:03 -06:00
45bee2bf57 Updated changelog 2025-03-08 11:15:47 -06:00
921fe631e0 Merge pull request #763 from MCV-Software/features/pinned-posts
Mastodon: Loads pinned posts in user timelines and supports announcing when the focused post is pinned
2025-03-08 11:08:16 -06:00
10 changed files with 317 additions and 339 deletions

View File

@@ -2,8 +2,12 @@ TWBlue Changelog
## changes in this version
In this version, we have focused on providing initial support for Mastodon filters and pinned posts. From TWBlue, it is now possible to initially use filters for posts in most buffers, as well as manage them (create, edit, and delete filters, in addition to adding keywords). A new variable has also been added for post templates in the invisible interface that allows displaying whether a post has been pinned by its author.
* Mastodon:
* Added filters support to TWBlue. Filters are only implemented in posts for the moment. TWBlue will, depending in the selected settings, hide behind a content warning or completely ignore a post based on filters. Also it is possible to add, delete or edit filters from the buffer menu in the menu bar.
* A language selector has been added for posting in TWBlue. It is now possible to choose the language in which a post will be made, which will be useful for content filtering and other language-dependent features. The default language can be chosen based on your Mastodon accounts language, the language of the post youre replying to, or, if no automatic selection is possible, TWBlues own language will be used by default.
* TWBlue now supports announcing (via a new template variable for posts) pinned posts. You can edit your posts template and use the $pinned variable. When reading the post, TWBlue will indicate if the post is pinned. Also, when loading an user timeline, pinned posts will be loaded at the top or bottom of the buffer according to local settings.
* TWBlue should be able to display all posts in the post displayer dialog.
* reading long posts in the graphical user interface should work better.

View File

@@ -1,13 +1,10 @@
## Changelog
In this version of TWBlue, which is being released several months after the previous one, we focused on adding initial support for GoToSocial-type networks. GoToSocial is a server for creating decentralized networks similar to Mastodon. Its API is very similar but retains some differences. In this version, TWBlue can be used to log into GoToSocial accounts, although there will be some features, such as the Streaming API and Markdown support, that are not yet functional. Another significant addition is support for creating community timelines, which will allow you to load the local and public timeline of remote instances. This is useful if your instance does not federate directly with them, as it will allow you to see posts from other communities and interact directly with them. Finally, the translation module has been rewritten; it now supports using LibreTranslate by default and DeepL, for which an API key is required. Below is the detailed list of changes:
In this version, we have focused on providing initial support for Mastodon filters and pinned posts. From TWBlue, it is now possible to initially use filters for posts in most buffers, as well as manage them (create, edit, and delete filters, in addition to adding keywords). A new variable has also been added for post templates in the invisible interface that allows displaying whether a post has been pinned by its author.
* Core:
* Added Initial Support to GoToSocial. Some features are not fully implemented yet, although GoToXocial instances should be able to be used as normal sessions in TWBlue. Streaming, poll options and markdown are not supported but planned for the near future.
* The translation module has been rewritten. Now, instead of offering translations with Google Translator, the user can choose between [LibreTranslate,](https://github.com/LibreTranslate/LibreTranslate) which requires no configuration thanks to the [instance of the NVDA Spanish community;](https://translate.nvda.es) or translate using [DeepL,](https://deepl.com) for which it is necessary to create an account on DeepL and [subscribe to a DeepL API Free plan](https://support.deepl.com/hc/en-us/articles/360021200939-DeepL-API-Free) to obtain the API key which can be used to translate up to 500000 characters every month. The API key can be entered in the global options dialog, under a new tab called translation services. When translating a text, the translation engine can be changed. When changing the translation engine, the target language must be selected again before translation takes place.
* TWBlue should be able to switch to Windows 11 Keymap when running under Windows 11. ([#494](https://github.com/mcv-software/twblue/issues/494))
* Mastodon:
* Added support for viewing communities: A community timeline is the local or public timeline of another instance. This is especially useful when the instance one is part of does not federate with other remote instances. The posts displayed are only those that are shared publicly. It is possible to interact with the posts from community timelines, but it should be noted that TWBlue will take some time to retrieve the post one wishes to interact with.
* When viewing a post, a button displays the number of boosts and times it has been added to favorites. Clicking on that button will open a list of users who have interacted with the post. From that list, it is possible to view profiles and perform common user actions.
* Now it is possible to mute conversations in Mastodon sessions. To do this, there is a button that can be called "Mute" or "Unmute Conversation" in the dialog to display the post. Conversations that have been muted will not generate notifications or mentions when they receive new replies. Only conversations that you are a part of can be muted.
* Fixed an error that caused TWBlue to be unable to properly display the user action dialog from the followers or following buffer. ([#575](https://github.com/mcv-software/twblue/issues/575))
* Added filters support to TWBlue. Filters are only implemented in posts for the moment. TWBlue will, depending in the selected settings, hide behind a content warning or completely ignore a post based on filters. Also it is possible to add, delete or edit filters from the buffer menu in the menu bar.
* A language selector has been added for posting in TWBlue. It is now possible to choose the language in which a post will be made, which will be useful for content filtering and other language-dependent features. The default language can be chosen based on your Mastodon accounts language, the language of the post youre replying to, or, if no automatic selection is possible, TWBlues own language will be used by default.
* TWBlue now supports announcing (via a new template variable for posts) pinned posts. You can edit your posts template and use the $pinned variable. When reading the post, TWBlue will indicate if the post is pinned. Also, when loading an user timeline, pinned posts will be loaded at the top or bottom of the buffer according to local settings.
* TWBlue should be able to display all posts in the post displayer dialog.
* reading long posts in the graphical user interface should work better.

View File

@@ -43,6 +43,7 @@ requests==2.32.3
requests-oauthlib==2.0.0
requests-toolbelt==1.0.0
rfc3986==2.0.0
setuptools==69.0.0
six==1.17.0
sniffio==1.3.1
sound_lib @ git+https://github.com/accessibleapps/sound_lib@a439f0943fb95ee7b6ba24f51a686f47c4ad66b2

View File

@@ -572,7 +572,6 @@ class BaseBuffer(base.Buffer):
except MastodonNotFoundError:
output.speak(_("No status found with that ID"))
return
# print(item)
msg = messages.viewPost(self.session, item, offset_hours=self.session.db["utc_offset"], item_url=self.get_item_url(item=item))
def ocr_image(self):

View File

@@ -254,7 +254,6 @@ class post(messages.basicMessage):
langs = self.session.supported_languages
lang = self.message.language.GetSelection()
if lang >= 0:
print(langs[lang].code)
return langs[lang].code
return None

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,18 +1,19 @@
# Corentin Bacqué-Cazenave <corentin@progaccess.net>, 2022, 2023, 2024.
# Corentin Bacqué-Cazenave <corentin@progaccess.net>, 2022, 2023, 2024, 2025.
msgid ""
msgstr ""
"Project-Id-Version: TW Blue 0.94\n"
"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n"
"POT-Creation-Date: 2025-03-02 00:55+0000\n"
"PO-Revision-Date: 2024-06-04 16:03+0000\n"
"PO-Revision-Date: 2025-03-08 18:23+0000\n"
"Last-Translator: Corentin Bacqué-Cazenave <corentin@progaccess.net>\n"
"Language-Team: French <https://weblate.mcvsoftware.com/projects/twblue/"
"twblue/fr/>\n"
"Language: fr\n"
"Language-Team: French "
"<https://weblate.mcvsoftware.com/projects/twblue/twblue/fr/>\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 5.10.1\n"
"Generated-By: Babel 2.17.0\n"
#: languageHandler.py:61
@@ -593,9 +594,8 @@ msgid "Show user profile"
msgstr "Voir le &profil de l'utilisateur"
#: controller/mastodon/handler.py:53
#, fuzzy
msgid "Create c&ommunity timeline"
msgstr "Créer une chronologie de communauté"
msgstr "Créer une chronologie de c&ommunauté"
#: controller/mastodon/handler.py:94
msgid "Timelines"
@@ -963,14 +963,12 @@ msgid "Autocomplete users' settings"
msgstr "Paramètres d'autocomplétion utilisateurs"
#: extra/autocompletionUsers/mastodon/wx_scan.py:11
#, fuzzy
msgid "Add &followers to database"
msgstr "Ajouter des abonnés à la base de données"
msgstr "Ajouter des &abonnés à la base de données"
#: extra/autocompletionUsers/mastodon/wx_scan.py:12
#, fuzzy
msgid "Add f&ollowing to database"
msgstr "Ajouter un abonnement à la base de données"
msgstr "Ajouter un ab&onnement à la base de données"
#: extra/autocompletionUsers/mastodon/wx_scan.py:26
msgid "Updating autocompletion database"
@@ -2134,103 +2132,87 @@ msgid "Message"
msgstr "Message"
#: wxUI/dialogs/configuration.py:15
#, fuzzy
msgid "&Language"
msgstr "Langue"
msgstr "&Langue"
#: wxUI/dialogs/configuration.py:22
#, fuzzy, python-brace-format
#, python-brace-format
msgid "&Ask before exiting {0}"
msgstr "Demander avant de quitter {0}"
msgstr "&Demander avant de quitter {0}"
#: wxUI/dialogs/configuration.py:24
#, fuzzy
msgid "&Disable Streaming functions"
msgstr "Désactiver les fonctions de streaming"
msgstr "D&ésactiver les fonctions de streaming"
#: wxUI/dialogs/configuration.py:27
#, fuzzy
msgid "&Buffer update interval, in minutes"
msgstr "Intervalle de mise à jour des tampons, en minutes"
msgstr "&Intervalle de mise à jour des tampons, en minutes"
#: wxUI/dialogs/configuration.py:33
#, fuzzy, python-brace-format
#, python-brace-format
msgid "Pla&y a sound when {0} launches"
msgstr "Jouer un son lorsque {0} démarre"
msgstr "&Jouer un son lorsque {0} démarre"
#: wxUI/dialogs/configuration.py:35
#, fuzzy, python-brace-format
#, python-brace-format
msgid "Sp&eak a message when {0} launches"
msgstr "Dire un message lorsque {0} démarre"
msgstr "Dire un &message lorsque {0} démarre"
#: wxUI/dialogs/configuration.py:37
#, fuzzy
msgid "&Use invisible interface's keyboard shortcuts while GUI is visible"
msgstr ""
"Utilisez les raccourcis clavier de l'interface invisible alors que "
"l'interface graphique est affichée"
"Utilisez les raccourcis clavier de l'interface invisible lorsque l'interface "
"&graphique est affichée"
#: wxUI/dialogs/configuration.py:39
#, fuzzy
msgid "A&ctivate Sapi5 when any other screen reader is not being run"
msgstr ""
"Activer Sapi5 lorsqu'il n'y a aucun autre lecteur d'écran en cours "
"d'exécution"
"Activer Sapi&5 lorsqu'aucun autre lecteur d'écran n'est en cours d'exécution"
#: wxUI/dialogs/configuration.py:41
#, fuzzy
msgid "&Hide GUI on launch"
msgstr "Masquer l'interface graphique au démarrage"
msgstr "&Masquer l'interface graphique au démarrage"
#: wxUI/dialogs/configuration.py:43
#, fuzzy
msgid "&Read long posts in GUI"
msgstr "Lire les posts longs dans l'interface graphique"
msgstr "&Lire les posts longs dans l'interface graphique"
#: wxUI/dialogs/configuration.py:46
#, fuzzy
msgid "&Keymap"
msgstr "Configuration clavier"
msgstr "&Configuration clavier"
#: wxUI/dialogs/configuration.py:51
#, fuzzy, python-brace-format
#, python-brace-format
msgid "Check for u&pdates when {0} launches"
msgstr "Vérifier les mises à jour lorsque {0} démarre"
msgstr "Vérifier les mises &à jour lorsque {0} démarre"
#: wxUI/dialogs/configuration.py:61
#, fuzzy
msgid "Proxy &type: "
msgstr "Type de proxy: "
msgstr "T&ype de proxy : "
#: wxUI/dialogs/configuration.py:68
#, fuzzy
msgid "Proxy s&erver: "
msgstr "Serveur proxy: "
msgstr "&Serveur proxy : "
#: wxUI/dialogs/configuration.py:74
#, fuzzy
msgid "&Port: "
msgstr "Port: "
msgstr "&Port : "
#: wxUI/dialogs/configuration.py:80
#, fuzzy
msgid "&User: "
msgstr "Utilisateur: "
msgstr "&Utilisateur : "
#: wxUI/dialogs/configuration.py:86
#, fuzzy
msgid "P&assword: "
msgstr "Mot de passe: "
msgstr "&Mot de passe : "
#: wxUI/dialogs/configuration.py:98
#, fuzzy
msgid "Enable automatic s&peech feedback"
msgstr "Activer le retour automatique de la parole"
msgstr "Activer le retour automatique par la &parole"
#: wxUI/dialogs/configuration.py:100
#, fuzzy
msgid "Enable automatic &Braille feedback"
msgstr "Activer le retour automatique en braille"
msgstr "Activer le retour automatique en &Braille"
#: wxUI/dialogs/configuration.py:108
msgid "Buffer"
@@ -2241,19 +2223,16 @@ msgid "Status"
msgstr "Statut"
#: wxUI/dialogs/configuration.py:111
#, fuzzy
msgid "S&how/hide"
msgstr "Afficher / masquer"
msgstr "&Afficher/masquer"
#: wxUI/dialogs/configuration.py:112
#, fuzzy
msgid "Move &up"
msgstr "Déplacer vers le haut"
msgstr "Déplacer vers le &haut"
#: wxUI/dialogs/configuration.py:113
#, fuzzy
msgid "Move &down"
msgstr "Déplacer vers le bas"
msgstr "Déplacer vers le &bas"
#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188
#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196
@@ -2282,19 +2261,16 @@ msgid "The buffer is already at the bottom of the list."
msgstr "Le tampon est déjà en bas de la liste."
#: wxUI/dialogs/configuration.py:205
#, fuzzy
msgid "&LibreTranslate API URL: "
msgstr "URL de l'API LibreTranslate : "
msgstr "URL de l'API &LibreTranslate : "
#: wxUI/dialogs/configuration.py:211
#, fuzzy
msgid "LibreTranslate API &Key (optional): "
msgstr "Clé API LibreTranslate (facultatif) : "
msgstr "&Clé API LibreTranslate (facultatif) : "
#: wxUI/dialogs/configuration.py:217
#, fuzzy
msgid "&DeepL API Key: "
msgstr "Clé API DeepL : "
msgstr "Clé API &DeepL : "
#: wxUI/dialogs/configuration.py:231
#, python-brace-format
@@ -2314,9 +2290,8 @@ msgid "Translation services"
msgstr "&Traduire"
#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170
#, fuzzy
msgid "&Save"
msgstr "Enregistrer"
msgstr "&Enregistrer"
#: wxUI/dialogs/configuration.py:253
#: wxUI/dialogs/mastodon/communityTimeline.py:27
@@ -2465,139 +2440,119 @@ msgid "User autocompletion settings"
msgstr "Paramètres d'autocomplétion utilisateur"
#: wxUI/dialogs/mastodon/configuration.py:15
#, fuzzy
msgid ""
"Scan acc&ount and add followers and following users to the user "
"autocompletion database"
msgstr ""
"Analyser le compte et ajouter les abonnés et abonnements à la base de "
"&Scanner le compte et ajouter les abonnés et abonnements à la base de "
"données d'autocomplétion des utilisateurs"
#: wxUI/dialogs/mastodon/configuration.py:16
#, fuzzy
msgid "&Manage autocompletion database"
msgstr "Gérer la base de données d'autocomplétion"
msgstr "&Gérer la base de données d'autocomplétion"
#: wxUI/dialogs/mastodon/configuration.py:21
#, fuzzy
msgid "&Disable Streaming API endpoints"
msgstr "Désactiver les fonctionnalités de l'API de streaming"
msgstr "Désactiver les fonctionnalités de l'API de &streaming"
#: wxUI/dialogs/mastodon/configuration.py:23
#, fuzzy
msgid "&Relative timestamps"
msgstr "Temps relatifs"
msgstr "&Temps relatifs"
#: wxUI/dialogs/mastodon/configuration.py:25
#, fuzzy
msgid ""
"R&ead preferences from instance (default visibility when publishing and "
"displaying sensitive content)"
msgstr ""
"Lire les préférences depuis l'instance (visibillité par défaut lors de la"
" publication et de l'affichage de contenu sensible)"
"&Lire les préférences depuis l'instance (visibillité par défaut lors de la "
"publication et de l'affichage de contenu sensible)"
#: wxUI/dialogs/mastodon/configuration.py:28
#, fuzzy
msgid "&Items on each API call"
msgstr "Éléments pour chaque appel à l'API"
msgstr "&Éléments pour chaque appel à l'API"
#: wxUI/dialogs/mastodon/configuration.py:34
#, fuzzy
msgid ""
"I&nverted buffers: The newest items will be shown at the beginning while "
"the oldest at the end"
msgstr ""
"Tampons inversés : Les nouveaux éléments seront affichés au début et les "
"Tampons &inversés : Les nouveaux éléments seront affichés au début et les "
"plus anciens à la fin."
#: wxUI/dialogs/mastodon/configuration.py:36
#, fuzzy
msgid "&Ask confirmation before boosting a post"
msgstr "Demander confirmation avant de partager un post"
msgstr "Demander &une confirmation avant de partager un post"
#: wxUI/dialogs/mastodon/configuration.py:38
#, fuzzy
msgid "S&how screen names instead of full names"
msgstr "Afficher les noms d'écran au lieu des noms complets"
msgstr "Afficher les noms d'&affichage à la place des noms complets"
#: wxUI/dialogs/mastodon/configuration.py:40
#, fuzzy
msgid "Hide e&mojis in usernames"
msgstr "Cacher les emojis dans les noms d'utilisateur"
msgstr "Cacher les mojis dans les noms d'utilisateur"
#: wxUI/dialogs/mastodon/configuration.py:42
#, fuzzy
msgid ""
"&Number of items per buffer to cache in database (0 to disable caching, "
"blank for unlimited)"
msgstr ""
"Nombre d'éléments par tampon en cache dans la base de données (0 pour "
"désactiver la mise en cache, laissez en blanc pour illimité)"
"&Nombre d'éléments par tampon en cache dans la base de données (0 pour "
"désactiver la mise en cache, blanc pour illimité)"
#: wxUI/dialogs/mastodon/configuration.py:46
#, fuzzy
msgid ""
"&Load cache for items in memory (much faster in big datasets but requires"
" more RAM)"
msgstr ""
"Charger le cache des éléments en mémoire (plus rapide sur les grosses "
"bases de données mais nécessite plus de RAM)"
"&Charger le cache des éléments en mémoire (plus rapide sur les grosses bases "
"de données mais nécessite plus de RAM)"
#: wxUI/dialogs/mastodon/configuration.py:53
#, fuzzy, python-brace-format
#, python-brace-format
msgid "Edit template for &posts. Current template: {}"
msgstr "Éditer le modèle pour les posts. Modèle actuel : {}"
msgstr "Éditer le modèle pour les &posts. Modèle actuel : {}"
#: wxUI/dialogs/mastodon/configuration.py:55
#, fuzzy, python-brace-format
#, python-brace-format
msgid "Edit template for c&onversations. Current template: {}"
msgstr "Éditer le modèle pour les conversations. Modèle actuel : {}"
msgstr "Éditer le modèle pour les c&onversations. Modèle actuel : {}"
#: wxUI/dialogs/mastodon/configuration.py:57
#, fuzzy, python-brace-format
#, python-brace-format
msgid "Edit template for p&ersons. Current template: {}"
msgstr "Éditer le modèles pour les personnes. Modèle actuel : {}"
msgstr "Éditer le modèles pour les p&ersonnes. Modèle actuel : {}"
#: wxUI/dialogs/mastodon/configuration.py:65
#, fuzzy
msgid "&Volume"
msgstr "Volume"
msgstr "&Volume"
#: wxUI/dialogs/mastodon/configuration.py:76
#, fuzzy
msgid "S&ession mute"
msgstr "Session muette"
msgstr "&Session muette"
#: wxUI/dialogs/mastodon/configuration.py:78
#, fuzzy
msgid "&Output device"
msgstr "Périphérique de sortie"
msgstr "Périphérique de &sortie"
#: wxUI/dialogs/mastodon/configuration.py:85
#, fuzzy
msgid "&Input device"
msgstr "Périphérique d'entrée"
msgstr "Périphérique d'&entrée"
#: wxUI/dialogs/mastodon/configuration.py:93
#, fuzzy
msgid "Sound &pack"
msgstr "Pack de sons"
msgstr "&Pack de sons"
#: wxUI/dialogs/mastodon/configuration.py:99
#, fuzzy
msgid "Indicate &audio or video in posts with sound"
msgstr "Indiquer un audio ou une vidéo dans un post par un son"
msgstr "Indiquer les posts &audio ou vidéo par un son"
#: wxUI/dialogs/mastodon/configuration.py:101
#, fuzzy
msgid "Indicate posts containing i&mages with sound"
msgstr "Indiquer les posts contenants des images par un son"
msgstr "Indiquer les posts contenants des &images par un son"
#: wxUI/dialogs/mastodon/configuration.py:124
#, fuzzy
msgid "&Language for OCR"
msgstr "Langue pour l'OCR"
msgstr "Langue pour la &ROC"
#: wxUI/dialogs/mastodon/configuration.py:149
msgid "Feedback"
@@ -2748,7 +2703,6 @@ msgid "&Visibility"
msgstr "&Visibilité"
#: wxUI/dialogs/mastodon/postDialogs.py:54
#, fuzzy
msgid "Language"
msgstr "Langue"
@@ -4563,4 +4517,3 @@ msgstr "Abo&nnement"
#~ msgid "Remember state for mention all and long tweet"
#~ msgstr "Se souvenir de l'état pour \"Répondre à tous\" et \"Tweet long\""

View File

@@ -1,7 +1,7 @@
{"current_version": "2024.05.23",
"description": "Read long posts in GUI, display posts with unicode characters and several buffixes.",
{"current_version": "2025.03.08",
"description": "Initial filter support, added pinned posts. Fixed some minor issues.",
"date": "unknown",
"downloads":
{"Windows32": "https://github.com/MCV-Software/TWBlue/releases/download/v2024.05.23/TWBlue_portable_v2024.05.23.zip",
"Windows64": "https://github.com/MCV-Software/TWBlue/releases/download/v2024.05.23/TWBlue_portable_v2024.05.23.zip"}
{"Windows32": "https://github.com/MCV-Software/TWBlue/releases/download/v2025.03.08/TWBlue_portable_v2024.05.23.zip",
"Windows64": "https://github.com/MCV-Software/TWBlue/releases/download/v2025.03.08/TWBlue_portable_v2025.03.08.zip"}
}