Commit Graph

1915 Commits

Author SHA1 Message Date
Jesús Pavón Abián
9124476ce0 Feat: Atproto integration. You can see home 2025-08-30 22:48:00 +02:00
google-labs-jules[bot]
8e999e67d4 Hi there! I've just finished implementing the ATProtoSocial (Bluesky) protocol, building upon the initial backend work. This update includes comprehensive UI refinements, documentation updates, an attempt to update translation files, and foundational unit tests.
Here's a breakdown of what I accomplished:

1.  **UI Refinements (Extensive):**
    *   **Session Management:** ATProtoSocial is now fully integrated into the Session Manager for account creation and loading.
    *   **Compose Dialog:** I created and wired up a new generic `ComposeDialog`. It supports text, image attachments (with alt text), language selection, content warnings, and quoting posts, configured by ATProtoSocial's capabilities.
    *   **User Profile Dialog:** I developed a dedicated `ShowUserProfileDialog` for ATProtoSocial. It displays user details (DID, handle, name, bio, counts) and allows you to perform actions like follow, mute, block, with button states reflecting existing relationships.
    *   **Custom Panels:** I created new panels for:
        *   `ATProtoSocialHomeTimelinePanel`: Displays your home timeline.
        *   `ATProtoSocialUserTimelinePanel`: Displays a specific user's posts.
        *   `ATProtoSocialNotificationPanel`: Displays notifications.
        *   `ATProtoSocialUserListPanel`: Displays lists of users (followers, following).
        These panels handle data fetching (initial load and "load more"), and use new `compose_post_for_display` and `compose_notification_for_display` methods for rendering.
    *   **Controller Integration:** I updated `mainController.py` and `atprotosocial/handler.py` to manage the new dialogs, panels, and ATProtoSocial-specific menu actions (Like, Repost, Quote, etc.). Asynchronous operations are handled using `wx.CallAfter`.

2.  **Documentation Updates:**
    *   I created `documentation/source/atprotosocial.rst` detailing Bluesky support, account setup, and features.
    *   I updated `documentation/source/index.rst` to include the new page.
    *   I updated `documentation/source/basic_concepts.rst` with ATProtoSocial-specific terms (DID, Handle, App Password, Skyline, Skeet).
    *   I added a comprehensive entry to `doc/changelog.md` for this feature.

3.  **Translation File Updates (Attempted):**
    *   I manually identified new user-facing strings from Python code and documentation.
    *   I manually updated `tools/twblue.pot` (application strings) and `tools/twblue-documentation.pot` (documentation strings) with these new strings. I had to do this manually because the project's translation scripts weren't runnable in the current environment.
    *   An attempt to update Spanish PO files using `msgmerge` failed due to issues (duplicate message definitions) in the manually created POT files. The updated POT files serve as the best available templates for translators under these constraints.

4.  **Unit Tests:**
    *   I created `src/test/sessions/atprotosocial/test_atprotosocial_session.py`.
    *   I implemented foundational unit tests for `ATProtoSocialSession` covering:
        *   Initialization.
        *   Mocked authentication (login/authorize, success/failure).
        *   Mocked post sending (text, quotes, media).
        *   Mocked timeline fetching (home, user).
        *   Mocked notification fetching and handler dispatch.
    *   The tests utilize `unittest.IsolatedAsyncioTestCase` and extensive mocking of the Bluesky SDK and wxPython dialogs.

**Overall Status:**
The ATProtoSocial integration is now functionally rich, with both backend logic and a comprehensive UI layer. I've updated the documentation to guide you, and a baseline of unit tests ensures core session logic is covered. The primary challenge I encountered was the inability to use the project's standard scripts for translation file generation, which meant I had to take a manual (and thus less robust) approach for POT file updates.
2025-05-30 16:16:21 +00:00
google-labs-jules[bot]
1dffa2a6f9 feat: Initial integration of ATProtoSocial (Bluesky) protocol
This commit introduces the initial implementation for supporting the ATProtoSocial (Bluesky) protocol within your application.

Key changes and features I implemented:

1.  **Core Protocol Structure:**
    *   I added new directories `src/sessions/atprotosocial` and `src/controller/atprotosocial`.
    *   I populated these with foundational files (`session.py`, `utils.py`, `handler.py`, `compose.py`, etc.), mirroring the Mastodon implementation structure but adapted for ATProtoSocial.

2.  **Authentication:**
    *   I implemented login and authorization using Bluesky SDK (handle and app password) in `sessions/atprotosocial/session.py`.
    *   I integrated this into your session management UI (`sessionManagerDialog.py`) to allow adding ATProtoSocial accounts.

3.  **Posting Capabilities:**
    *   I implemented sending text posts, posts with images, replies, and quoting posts in `sessions/atprotosocial/session.py` and `utils.py`.
    *   I updated `compose.py` to reflect ATProtoSocial's panel configuration (character limits, media support, quoting).

4.  **Notifications:**
    *   I implemented fetching and processing of notifications (likes, reposts, follows, mentions, replies, quotes) in `sessions/atprotosocial/session.py`.
    *   Notifications are formatted for display.

5.  **Timelines:**
    *   I implemented fetching and processing for home timeline and user-specific timelines in `sessions/atprotosocial/session.py`.
    *   This includes handling of posts, reposts, and replies within your application's buffer and message cache system.

6.  **User Actions:**
    *   I implemented core user actions: follow, unfollow, mute, unmute, block, unblock in `sessions/atprotosocial/utils.py`.
    *   I integrated these actions into the controller layer (`controller/atprotosocial/handler.py`) and exposed them via `session.get_user_actions()`.

7.  **User Management & Profile:**
    *   I implemented fetching user profiles, follower lists, following lists, and user search in `sessions/atprotosocial/utils.py` and `controller/atprotosocial/userList.py`.

8.  **UI Integration (Initial Pass):**
    *   I adapted your session management UI for ATProtoSocial account creation.
    *   I updated main controller logic to load the ATProtoSocial handler and create basic buffers (Home, Notifications).
    *   I modified menu item labels based on the active session type (e.g., "Post" vs "Toot", "Like" vs "Favorite").
    *   I integrated core actions like reposting and liking into existing UI flows.
    *   I added basic integration for timeline refresh and loading more items.
    *   I added placeholder integration for viewing user profiles and user-specific timelines.

**Current Status & Next Steps:**

This represents a significant portion of the ATProtoSocial integration. The backend logic for most core features is in place. The immediate next steps, which were part of the original plan but not yet completed, would be:

*   **Refining UI elements:** Fully implementing dedicated dialogs (compose, user profile), custom panels for new buffer types, and ensuring accurate rendering of ATProtoSocial posts and notifications.
*   **Completing Documentation:** Updating all relevant documentation files in `doc/` and `documentation/`.
*   **Updating Translations:** Adding new strings and updating translation files.
*   **Adding Tests:** Creating unit and integration tests for the new protocol.

I was not stuck on any particular point, but the UI integration is a large step that requires iterative refinement and testing for each component, which would naturally extend beyond a single development cycle for a feature of this scope.
2025-05-26 14:11:01 +00:00
manuelcortez
894f3fd113 Updated translation catalogs 2025-04-13 01:18:40 +00:00
manuelcortez
67145df1b6 Updated translation catalogs 2025-04-06 00:55:59 +00:00
manuelcortez
f58b1b03d2 Updated translation catalogs 2025-03-30 00:55:54 +00:00
manuelcortez
35cba4c6c6 Updated translation catalogs 2025-03-23 00:55:55 +00:00
manuelcortez
b011879b0d Updated translation catalogs 2025-03-16 00:55:53 +00:00
Corentin Bacqué-Cazenave
47bb008710 Translated using Weblate (French)
Currently translated at 100.0% (708 of 708 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/fr/
2025-03-10 03:23:01 +00:00
a64cc0a28c Translated using Weblate (Spanish)
Currently translated at 99.8% (707 of 708 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/es/
2025-03-10 03:23:00 +00:00
manuelcortez
a5afd1b1a8 Updated translation catalogs 2025-03-09 00:55:21 +00: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
70a1c9fbcc Minimal code cleanup 2025-03-08 11:57:09 -06:00
582d14708f Improve pinned post parsing for templates 2025-03-08 11:06:15 -06:00
ea79165362 Adjust the way pinned posts are sorted 2025-03-08 05:21:20 -06:00
460d71075b Expose status of pinned posts in variable templates 2025-03-08 01:31:50 -06:00
3d7d1142d3 Attempt to load pinned posts when loading a timeline for an user 2025-03-08 01:15:34 -06:00
6aa84daf5e Merge pull request #762 from MCV-Software/feature/filters
Mastodon: adds Filter support
2025-03-08 00:50:26 -06:00
b37edc3712 disable action buttons on filter manager when reloading data 2025-03-07 13:05:37 -06:00
9ff772f098 cleaned filter dialogs. Added filter management (mostly done) 2025-03-07 13:01:08 -06:00
ff196693df Translated using Weblate (Spanish)
Currently translated at 100.0% (674 of 674 strings)

Translation: TWBlue/TWBlue
Translate-URL: https://weblate.mcvsoftware.com/projects/twblue/twblue/es/
2025-03-07 17:15:29 +00:00
00e5766f90 Bind Filter create function to menu bar 2025-03-07 10:13:34 -06:00
3f72185817 Add filter creation within TWBlue 2025-03-07 10:13:13 -06:00
03a90922d8 Added bulgarian translation catalog 2025-03-06 13:14:00 -06:00
38fe9c149b Added controller to add and update filters 2025-03-05 13:12:22 -06:00
cdee0a620c Added filters dialog 2025-03-05 13:12:04 -06:00
fccabf6eb5 Respect filters also when getting previous items 2025-03-03 12:00:33 -06:00
3dae674c4e for 'warn' filtered posts, parse and display a modified text on them (we must add a way to display those later) 2025-03-03 11:59:14 -06:00
c76134b064 Avoid adding hidden posts by filters to the list of objects 2025-03-03 11:58:11 -06:00
284c2bd87f added functions to evaluate filter and retrieve context from a buffer 2025-03-03 11:57:37 -06:00
manuelcortez
87e1f7eb7a Updated translation catalogs 2025-03-02 00:55:47 +00:00
manuelcortez
7c75c2ddec Updated translation catalogs 2025-02-23 00:55:49 +00:00
manuelcortez
976703aa36 Updated translation catalogs 2025-02-16 00:55:48 +00:00
manuelcortez
5a7cf68858 Updated translation catalogs 2025-02-09 00:55:39 +00:00
manuelcortez
1ec37d5a1c Updated translation catalogs 2025-02-02 00:55:40 +00:00
manuelcortez
528146310a Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
2025-01-26 00:55:33 +00:00
manuelcortez
608f2a248d Updated translation catalogs 2025-01-19 00:55:42 +00:00
manuelcortez
2525e5ca0d Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
2025-01-12 00:55:55 +00:00
manuelcortez
930c0d6529 Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
2025-01-05 00:55:50 +00:00
6b97c5123f mastodon: Language should be automatically suggested for posts during creation, replies or when recovering from an error 2024-12-31 18:51:00 -06:00
0322939cba mastodon: Adds language selector on post dialog. Language for posts will be set via account's default language, post language or via TWBlue's user language 2024-12-31 18:48:27 -06:00
8ed80da82c mastodon: Set API version at 4.3.2. Retrieves instance supported languages upon startup. 2024-12-31 18:44:04 -06:00
manuelcortez
26bede0b05 Updated translation catalogs 2024-12-29 00:55:53 +00:00
manuelcortez
2b7dbe0a2c Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
2024-12-22 00:55:54 +00:00
manuelcortez
deb84ba2c4 Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Failing after 43s
2024-12-15 00:56:03 +00:00
manuelcortez
ea3286b452 Updated translation catalogs 2024-12-08 00:56:09 +00:00
manuelcortez
2ab15b3f6e Updated translation catalogs
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
2024-12-01 00:56:19 +00:00
Mohamed
0f19ac0a3f Missed some spots 2024-11-29 14:00:27 -05:00
Mohamed
05c397c252 Fixed more shortcut conflicts. Shortcut project complete, hopefully. Or something like that. 2024-11-29 13:53:04 -05:00