Commit Graph

791 Commits

Author SHA1 Message Date
Jesús Pavón Abián
8402bc6d82 OCR en imágenes funciona. 2026-02-01 19:49:49 +01:00
Jesús Pavón Abián
c275ed9cf8 Refactor 2026-02-01 19:15:31 +01:00
Jesús Pavón Abián
13a9a6538d Sonidos 2026-02-01 19:03:36 +01:00
Jesús Pavón Abián
25ecd8b5fd Terminando de refactorizar 2026-02-01 18:58:38 +01:00
Jesús Pavón Abián
5d4ac82c4d Refactor 2026-02-01 15:04:26 +01:00
Jesús Pavón Abián
de10c927d9 Refactorización. Casi finalizado a falta de testeo profundo 2026-02-01 14:57:17 +01:00
Jesús Pavón Abián
ca3ee06738 Refactor 2026-02-01 14:48:00 +01:00
Jesús Pavón Abián
6ee67cc886 Commit de no perder cambios 2026-02-01 13:57:01 +01:00
Jesús Pavón Abián
f45af14229 Paginación 2026-02-01 13:17:49 +01:00
Jesús Pavón Abián
a99611215e Botones de interfaz gráficas ahora funcionan. 2026-02-01 13:16:54 +01:00
Jesús Pavón Abián
2b978bcafc Refactorización 2026-02-01 13:13:00 +01:00
Jesús Pavón Abián
fdcc77989e Más hilos 2026-02-01 13:08:35 +01:00
Jesús Pavón Abián
3e239f05c8 Los hilos funcionan ahora como en Mastodon. Refactorización de código 2026-02-01 13:07:16 +01:00
Jesús Pavón Abián
9bb1522eca Hilos funcionan. 2026-02-01 13:01:32 +01:00
Jesús Pavón Abián
6a5e4407ac Arreglado ver perfil. 2026-02-01 12:49:33 +01:00
Jesús Pavón Abián
d87d7ffcb5 Título de converrsaciones 2026-02-01 12:39:50 +01:00
Jesús Pavón Abián
4a9214ab71 Funciona ver posts. 2026-02-01 12:33:56 +01:00
Jesús Pavón Abián
f5b19b3457 Cambios 2026-02-01 11:59:04 +01:00
Jesús Pavón Abián
87915d9f22 Se ven posts con atajos 2026-02-01 10:45:24 +01:00
Jesús Pavón Abián
f7f12a1c7b Terminando integración 2026-02-01 10:42:05 +01:00
Jesús Pavón Abián
ec8d6ecada Merge next-gen 2026-02-01 09:07:27 +01:00
beb676d9ab mastodon: fix: ensure pagination works correctly with pinned posts
Some checks failed
Update translation files / update_catalogs (push) Failing after 3s
2026-01-21 12:00:50 -06:00
e5822ac8ee mastodon: feat: implement support for sending quoted posts 2026-01-21 10:57:00 -06:00
320c7a361c Fix HTML entity decoding when editing Mastodon posts (#893) 2026-01-21 08:44:13 -06:00
7a9337c07a feat(mastodon): Add support for editing announcement templates
Updated the template editor and account settings to allow customization of announcement display:

- Added default announcement template to mastodon.defaults.

- Updated templateEditor to recognize announcement variables.

- Added 'Edit template for announcements' button to account configuration dialog.

- Implemented template saving logic in settings controller.
2026-01-12 02:04:20 -06:00
15a9df2ca9 feat(mastodon): Add support for server announcements
Implemented a new 'Announcements' buffer to view instance-wide news. Features include:

- New buffer and UI panel for announcements.

- Support for templates and rendering of announcement content.

- 'Dismiss' functionality (mapped to Enter/Return) to mark announcements as read.

- Integrated into account settings for buffer management.
2026-01-12 01:53:03 -06:00
Jesús Pavón Abián
56d05b60a1 Avance 2026-01-11 20:16:39 +01:00
Jesús Pavón Abián
932e44a9c9 Avance 2026-01-11 20:13:56 +01:00
31bab4cf8a feat(mastodon): Add support for scheduled posts
- Added UI controls (checkbox, date/time pickers) to Post dialog

- Implemented validation logic (min 5 mins future)

- Updated session handler to pass scheduled_at to API
2026-01-11 02:49:46 -06:00
cb0bb4cf27 feat: implement mute conversation support for Mastodon
This feature allows users to visually hide muted conversations from the Home timeline. It includes:

- Automatic filtering of muted posts in Home.

- Immediate visual removal of posts when muting a conversation.

- New 'mute_conversation' action in context menu and keyboard shortcuts.

- Default shortcut: Alt+Win+Shift+Delete

- Win10/11 shortcut: Ctrl+Alt+Win+Backspace
2026-01-11 01:22:29 -06:00
Jesús Pavón Abián
9d9d86160d Commit 2026-01-10 19:46:53 +01:00
e4520a14e8 Merge pull request #842 from Mohamed00/evenMoreShortcuts
Some checks failed
Update translation files / update_catalogs (push) Has been cancelled
Added and improved more shortcuts
2025-11-07 09:54:14 -06:00
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