Files
twblue/context.md
Jesús Pavón Abián 25ecd8b5fd Terminando de refactorizar
2026-02-01 18:58:38 +01:00

3.7 KiB

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.

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/.

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 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".

Puntos pendientes

  • Verificar funcionamiento completo de onFocus con la aplicación en ejecución.
  • 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.