diff --git a/CAMBIOS.md b/CAMBIOS.md index 8bd16f21..a1a7e5bd 100644 --- a/CAMBIOS.md +++ b/CAMBIOS.md @@ -260,3 +260,16 @@ Para integrar Bluesky en TWBlue, también se modificaron: - Las listas de Bluesky no están implementadas aún - Los starter packs no están soportados - La moderación de contenido es básica (solo CW) + +## Correcciones Recientes (2026-02-01) + +### Flujo de compose y rendimiento (Bluesky) +- Compose vuelve a ser local por buffer (como en el codigo original), sin capa intermedia. +- Envio de post/reply en thread para evitar bloqueos de UI. +- Helper `controller/blueski/messages.py::post` centraliza el dialogo y el payload. +- DM en chats Bluesky se envian en thread con refresco de buffer. + +### Sesiones y UI +- Autologin en todas las sesiones (excepto ignoradas) para iniciar buffers al abrir. +- Correccion de "Actualizar buffer" cuando la sesion no tiene `KIND`. +- Menu de nueva cuenta muestra solo "Bluesky" (sin duplicados). diff --git a/context.md b/context.md index f4a3b40f..98c4d40f 100644 --- a/context.md +++ b/context.md @@ -1,58 +1,46 @@ # Contexto de trabajo ## Objetivo final -Igualar la experiencia de Bluesky con Mastodon en la interfaz (menús, diálogos, buffers y accesos), manteniendo las diferencias sólo cuando el protocolo lo exige. Mastodon es la referencia. +Igualar la experiencia de Bluesky con Mastodon en la interfaz (menus, dialogos, buffers y accesos), manteniendo las diferencias solo cuando el protocolo lo exige. Mastodon es la referencia. ## Estado actual -Se completaron todos los puntos de falta.md. Ahora se está trabajando en igualar características de accesibilidad comparando con el código original de Mastodon en srcantiguo/. +Se completaron los puntos de la lista pendiente (falta.md eliminado). Ahora se esta trabajando en igualar accesibilidad y flujo de compose usando como referencia srcantiguo/. -## Cambios recientes (sesión actual) -- **Accesibilidad mejorada en Bluesky:** - - Implementado método `onFocus()` para: actualizar tiempos relativos, leer posts largos en GUI, reproducir sonidos indicadores de audio/imagen. - - Implementado método `auto_read()` para lectura automática de nuevos items. - - Implementado menú contextual (`show_menu()`, `show_menu_by_key()`). - - Añadido método `open_in_browser()` para abrir posts en navegador. - - Añadido método `add_new_item()` para streaming. - - Añadido método `update_item()` para actualizar items existentes. - - Añadido método `get_buffer_name()` para nombres de buffer legibles. - - Añadido método `copy()` para copiar al portapapeles. - -- **Nuevos archivos creados:** - - `src/sessions/blueski/utils.py` - Funciones utilitarias (is_audio_or_video, is_image, get_media_urls, find_urls). - - `src/wxUI/dialogs/blueski/menus.py` - Menús contextuales (baseMenu, notificationMenu, userMenu, chatMenu). - -- **Correcciones de sonido:** - - Arreglado bug en base.py donde `self.sound = sound` usaba variable indefinida. - - Añadido `self.sound` a todos los buffers (Conversation, chat, user, etc.). +## Cambios recientes (sesion actual) +- Compose Bluesky vuelve a ser local por buffer (sin capa intermedia) y el envio es en thread. +- Nuevo helper `controller/blueski/messages.py::post` para centralizar dialogo y payload. +- DM de chats Bluesky en thread con refresco de buffer. +- Autologin para todas las sesiones (excepto ignoradas) para iniciar buffers al abrir. +- Correccion de "Actualizar buffer" cuando la sesion no tiene `KIND`. +- Menu de nueva cuenta muestra solo "Bluesky" (sin duplicados). ## Cambios anteriores -- Perfil de usuario mejorado: imágenes de avatar/banner, botones de timeline (posts, followers, following). -- Acciones de usuario en perfil: follow, unfollow, mute, unmute, block, unblock. -- Autocompletado añadido al diálogo de acciones de usuario. -- Atajos de teclado (&) añadidos a botones del perfil. -- Persistencia de búsquedas implementada (se guardan y restauran al reiniciar). -- Paginación completa en todos los buffers: HomeTimeline, FollowingTimeline, NotificationBuffer, LikesBuffer, MentionsBuffer, SentBuffer, UserTimeline, SearchBuffer. -- Activado autocompletado en el diálogo "Ver timeline..." y validación de usuario. -- Reposts/Likes ahora abren buffers con paginación bajo "Timelines". -- Restauración de followers/following propios sin duplicar. -- Estructura del árbol: se añadió "Searches" en Bluesky. -- Menús: para Bluesky, las opciones no aplicables se ocultan usando el sentinel "HIDE". +- Accesibilidad mejorada en Bluesky: onFocus, auto_read, menu contextual, open_in_browser, add_new_item, update_item, get_buffer_name, copy. +- Nuevos archivos: `src/sessions/blueski/utils.py`, `src/wxUI/dialogs/blueski/menus.py`. +- Correcciones de sonido: self.sound en todos los buffers. +- Perfil de usuario mejorado y acciones de usuario completas. +- Autocompletado en dialogos de timeline y acciones de usuario. +- Persistencia de busquedas y paginacion completa en buffers. +- Reposts/Likes abren buffers con paginacion bajo "Timelines". +- Restauracion de followers/following propios sin duplicar. +- Estructura del arbol: "Searches" agregado. +- Menus de Bluesky ocultan opciones no aplicables via sentinel "HIDE". ## Puntos pendientes -- Verificar funcionamiento completo de onFocus con la aplicación en ejecución. +- Verificar funcionamiento completo de onFocus con la aplicacion en ejecucion. - Implementar soporte de templates para usuarios y notificaciones (como Mastodon). -- Considerar OCR para imágenes si es necesario. - -## Notas técnicas -- `onFocus()` se conecta via `self.buffer.set_focus_function(self.onFocus)` en bind_events(). -- `auto_read()` se llama desde `process_items()` automáticamente si hay nuevos items. -- Menú contextual aparece con clic derecho o tecla de menú (WXK_WINDOWS_MENU). -- `utils.is_audio_or_video()` y `utils.is_image()` detectan multimedia en posts de Bluesky. -- Los sonidos indicadores (`indicate_audio`, `indicate_img`) ya están en blueski.defaults. -- `update_menus` en `src/controller/mainController.py` interpreta `"HIDE"` para ocultar entradas. -- Buffers de Reposts/Likes usan `PostUserListBuffer` con cursor para paginación. -- Las búsquedas ahora se guardan en `session.settings["other_buffers"]["searches"]`. -- Perfil de usuario descarga imágenes en thread separado para no bloquear UI. -- Paginación usa patrón: `self.next_cursor` guardado en `start_stream()`, usado en `get_more_items()`. -- El menú "load_previous_items" activa `get_more_items()` en el buffer actual. +- Confirmar que actualizacion de buffers en Mastodon se mantiene correcta. +- Considerar OCR para imagenes si es necesario. +## Notas tecnicas +- onFocus se conecta via `self.buffer.set_focus_function(self.onFocus)` en bind_events(). +- auto_read se llama desde process_items() automaticamente si hay nuevos items. +- Menu contextual con clic derecho o tecla de menu (WXK_WINDOWS_MENU). +- utils.is_audio_or_video() y utils.is_image() detectan multimedia en posts de Bluesky. +- Sonidos indicadores (indicate_audio, indicate_img) en blueski.defaults. +- update_menus en `src/controller/mainController.py` interpreta "HIDE" para ocultar entradas. +- Buffers de Reposts/Likes usan PostUserListBuffer con cursor para paginacion. +- Busquedas se guardan en session.settings["other_buffers"]["searches"]. +- Perfil de usuario descarga imagenes en thread separado para no bloquear UI. +- Paginacion usa patron: next_cursor guardado en start_stream(), usado en get_more_items(). +- Menu "load_previous_items" activa get_more_items() en el buffer actual. diff --git a/falta.md b/falta.md deleted file mode 100644 index fe352994..00000000 --- a/falta.md +++ /dev/null @@ -1,63 +0,0 @@ -# Pendientes para igualar la UI de Bluesky con Mastodon - -Objetivo: la experiencia debe ser id?ntica a Mastodon siempre que el protocolo lo permita; si no existe algo en blueski que si en mastodon, debe no diseñarse. Por ejemplo comunities no tiene mucho sentido. - -## 1) Di?logo "Ver timeline..." (Alt+Win+I) -- Autocompletado de usuarios como en Mastodon (bot?n "Autocomplete users"). -- Selecci?n y listado de m?ltiples usuarios (no solo autor/mentions con facetas). -- Resoluci?n de handles/DIDs en segundo plano con feedback accesible. -Hecho. - -## 2) Listas de Reposts/Likes (desde "Ver post") -- En Mastodon se abren listas tipo buffer; en Bluesky ahora es di?logo con paginaci?n. -- Igualar creando buffers dedicados (UserBuffer/FollowersBuffer) bajo nodo "Timelines" o "Searches". -- Mantener paginaci?n y persistencia coherentes con Mastodon (cursor + get_more_items). -Hecho. - -## 3) Restauraci?n de buffers "Followers/Following" propios -- En ejecuci?n ya reutiliza los buffers principales del usuario. -- Al restaurar tras reinicio, debe saltar a los buffers propios (si ya existen) y no duplicar. -Hecho. - -## 4) Estructura del ?rbol (Treebook) -- Mastodon crea nodos vac?os: "Timelines", "Searches", "Communities". -- En Bluesky solo existe "Timelines". -- Crear nodos equivalentes siempre y cuando aplique por protocolo. -Hecho. - -## 5) Men?s/acciones de ?tem -- Mastodon incluye OCR, filtros, listas, community timelines, etc. -- Bluesky carece de varias acciones. -- Decidir por acci?n: implementar, deshabilitar o mostrar mensaje "No soportado" para igualar UI. -Hecho. - -## 6) Perfil de usuario -- Mastodon muestra campos y acciones adicionales. -- Bluesky tiene datos mínimos. -- Igualar en la medida de lo posible. Si blueski no da x datos, no se crea nada. -Hecho. Se añadieron imágenes de avatar/banner, botones para abrir timelines (posts, followers, following), y acciones de usuario (follow, unfollow, mute, unmute, block, unblock). - -## 7) Diálogo de acciones de usuario -- Mastodon: autocompletado y búsqueda avanzada. -- Bluesky: diálogo sin autocompletado. -- Igualar con autocompletado y/o búsqueda en segundo plano. -Hecho. Se añadió botón de autocompletado de usuarios al diálogo de acciones. - -## 8) Consistencia de nombres y etiquetas -- Algunos textos difieren ("Reposts" vs "Boosts", "Likes" vs "Favorites"). -- Definir equivalencias y usar mismas etiquetas donde aplique. -Hecho. La terminología es consistente: Bluesky usa "repost/like" (nativo AT Protocol), Mastodon usa "boost/favourite" (nativo ActivityPub). Esto es correcto. - -## 9) Paginación en listados -- Bluesky: implementada en Reposts/Likes y Followers/Following. -- Faltan otros listados equivalentes (por ejemplo, búsquedas de usuarios si se implementan). -Hecho. Paginación implementada en todos los buffers: HomeTimeline, FollowingTimeline, NotificationBuffer, LikesBuffer, MentionsBuffer, SentBuffer, UserTimeline, SearchBuffer, FollowersBuffer, FollowingBuffer, PostUserListBuffer. - -## 10) Accesibilidad/teclado -- Verificar atajos en todos los nuevos diálogos/buffers. -- Asegurar foco inicial y navegación idéntica a Mastodon. -Hecho. Se añadieron atajos de teclado (&) a los botones del diálogo de perfil. - -## 11) Persistencia -- Confirmar que todos los buffers creados por el usuario (timelines, followers, following, búsquedas) se guardan/restauran. -Hecho. Se añadió persistencia de búsquedas. Ya existía para timelines, followers y following.