Commit Graph

809 Commits

Author SHA1 Message Date
Jesús Pavón Abián
7399ac46d4 Commit 2025-11-07 09:24:02 +01:00
3af372973d fix: avoid passing params that are not editable to API Calls; display polls as attachments in post edit dialog, warns user about vote resetting when editing a post with poll 2025-11-06 17:39:55 -06:00
Claude
977de1332a Implement post editing functionality for Mastodon
Add ability to edit posts in Mastodon with full support for:
- Editing post text and content warnings
- Re-uploading or keeping existing media attachments
- Editing poll options (for posts with polls)
- Modifying visibility and language settings
- All features available through web interface

Changes:
- Add edit_post() method in Mastodon session to handle API calls
- Create editPost dialog class that loads existing post data
- Add edit_status() method to buffer controllers
- Add Edit menu item to base and notification menus
- Register edit_post action in all keymaps (no default key assigned)
- Add edit_post() action handler in main controller

The edit option is only enabled for the user's own posts (not boosts).
Users can access the feature through the context menu or by assigning
a keyboard shortcut in the keymap editor.
2025-11-06 14:37:12 +00:00
Mohamed
a4d5066156 Added shortcuts to the database manager and some more to the menu bar. Also fixed shortcuts for seeking so they're not both s 2025-10-02 16:26:50 -04:00
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
70a1c9fbcc Minimal code cleanup 2025-03-08 11:57:09 -06:00
ea79165362 Adjust the way pinned posts are sorted 2025-03-08 05:21:20 -06:00
3d7d1142d3 Attempt to load pinned posts when loading a timeline for an user 2025-03-08 01:15:34 -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
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
38fe9c149b Added controller to add and update filters 2025-03-05 13:12:22 -06:00
fccabf6eb5 Respect filters also when getting previous items 2025-03-03 12:00:33 -06: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
40689caef6 Mastodon: read long posts in GUI should be improved and work in all kinds of buffers 2024-11-26 23:23:36 -06:00
021dd0ae52 Mastodon: Fixed 'read long posts in GUI'. Now it should work as expected 2024-11-26 22:57:21 -06:00
002d0a5709 Mastodon: Allow to create user timelines from community local buffers 2024-11-26 22:44:38 -06:00
0f5a10c3fa Merge pull request #647 from Mohamed00/shortcutAllTheSettings
Added more keyboard shortcuts
2024-11-26 22:35:35 -06:00
5f7f34f29d Merge pull request #644 from Mohamed00/communityShortcut
Added keyboard shortcut for create community timeline action
2024-11-26 21:50:35 -06:00
438115d8e8 Fix: Removed line previously used for debug. Should close #637 2024-05-24 15:40:36 -06:00
fe43ce562c Feat: Read long posts from GUI 2024-05-22 17:55:52 -06:00
503bf72b11 change: Removed some settings that are no longer needed from our global settings dialog. 2024-05-22 17:42:23 -06:00
Mohamed
cd9756ae61 Added keyboard shortcut for create community timeline action 2024-05-21 14:59:47 -04:00
68651ff736 Feat: Open conversations from community timelines. 2024-05-21 12:50:43 -06:00
94ad7ce180 Fix: Added proper name to local and federated timelines for instances on startup. 2024-05-19 19:04:34 -06:00
9c2511561a Code cleanup 2024-05-18 17:24:28 -06:00
cd7279e83b Change: Added check for valid communities when creating a community timeline 2024-05-18 16:53:57 -06:00
533f15de55 Feat: Added support to display local and public timelines for remote instances 2024-05-18 14:17:06 -06:00
10d2c47f9a Updated code for handler 2024-05-17 17:46:49 -06:00
b39ccb9f2c Started implementation of community timelines 2024-05-17 17:45:47 -06:00
2a1d86f917 Feat: Added muting posts. 2024-05-17 16:38:26 -06:00
aee2a3b8b2 Feat: display users who boosted or favorited a post. 2024-05-17 13:58:54 -06:00
fd1a64c7b8 fix: Switch to Windows 11 keymap when running Windows 11. Closes #494 2024-05-16 10:52:11 -06:00
a5cd118b99 change: Improved translation services' settings. Closes #632 2024-05-16 08:58:41 -06:00
ee4f254825 Feat: Replaced old translator module. The new translator can translate by using LibreTranslate or DeepL with an user provided API key 2024-05-15 13:56:30 -06:00
a322507f8b Change: Dropped googletrans as is no longer maintaned. 2024-05-11 01:23:46 -06:00
d6d3f0810c Fix: Add search buffers inside searches in GUI 2024-02-07 12:14:06 -06:00
9f80891e1d Fix: Open actions dialogue from followers and following buffers. Closes #575 2024-02-07 12:04:24 -06:00
36420d6a5b Fix: Added missing parameter coming from WX Widgets to some calls. Fixes GUI buttons not responding when pressed in most buffers 2024-01-07 18:28:29 -06:00
cdcbcf754a Mastodon: Added actions for notifications. closes #517 2024-01-05 15:49:18 -06:00
e835274ce9 Mastodon: TWBlue should be able to ignore deleted messages, so it will load everything else properly 2023-12-31 14:45:05 -06:00
8b5c47da28 Core: Updated website references for TWBlue 2023-12-31 12:20:06 -06:00
6c43c419fe Mastodon: Added autocomplete users management in account settings; user autocomplete works already in posts 2023-10-11 11:44:43 -06:00
d56c8b4372 Renamed showUserProfile to user_details to keep compatibility with invisible interface and naming pattern of functions 2023-10-10 17:43:31 -06:00
b3e0b21ee7 Merge pull request #540 from Arfs6/stop_update_running_source
stop updating while running from source
2023-10-10 16:50:11 -06:00
Abdulqadir Ahmad
f4ec03099a added actions, following, followers and posts button to show user profile dialog 2023-08-27 17:56:39 +01:00