Todas las versiones notables de RetroTUI están documentadas aquí.
- Animated plugin auto-refresh:
needs_redrawmechanism inWindowbase class. Animated plugins (aquarium, matrix, starwars, game-of-life, pomodoro, system-monitor, network-monitor) and LogViewer now refresh automatically without user interaction. - Adaptive input timeout: 100ms timeout for animated windows, cascading back to 500ms idle when no animations are active.
- Per-plugin icons:
[plugin.icon]section inplugin.tomlwithemojiandtokenfields. All 21 example plugins have custom icons. - Braille pixel art icons: 8x12 pixel grids rendered as 4x3 Unicode braille characters for all 39 icons (18 built-in + 21 plugins).
- Core modularization:
core/app.pydecomposed into 5 modules (window_manager, action_runner, dialog_dispatch, drag_drop, file_operations). - Bundled plugins: 9 apps migrated from
apps/tobundled_plugins/(charmap, clock, image-viewer, minesweeper, retronet, snake, solitaire, tetris, wifi-manager). - Notepad: dispatch table (
_KEY_DISPATCH) replaces 217-line if/elif chain. - File Manager: pane state unified with
PaneState+ compatibility properties. - Terminal: dead code cleanup (
_dirty_lines), session error visibility fix. - Windows support: dual PTY backend (POSIX
pty.fork()+ WindowspywinptyConPTY), conditional deps, cross-platform flow control shim. - Icon style system reduced to 3 styles: default, mini, braille (removed codex).
- Test suite expanded to 970 tests.
- Baseline profiling guide in
docs/BASELINE_PROFILING.md. - Baseline artifacts directory scaffold in
docs/baseline/.
- Mouse routing now preserves left-button pressed state on inferred motion paths, restoring drag text selection in apps like Notepad/Terminal.
- Added regression coverage for inferred drag behavior in
tests/test_mouse_router.py.
- Core Engine:
- Modular architecture:
core/,ui/,apps/split from monolito. EventLoop&Bootstrapmodules for robust main loop and terminal setup.InputRouter(Mouse/Key) to decouple event handling from main app logic.Renderingmodule to centralize desktop/taskbar drawing.
- Modular architecture:
- Terminal Emulation:
- Embedded
TerminalWindowwith PTY support, ANSI parsing, and scrollback. - Theme integration: ANSI colors 0-7 now respect the active theme's background.
- Embedded
- User Experience:
- Context Menus: Right-click support in Desktop, Notepad, File Manager, and Terminal.
- Movable Icons: Drag & Drop desktop icons with persistence in
config.toml. - Global Clipboard: Internal clipboard with sync to system (
wl-copy/xclip). - Drag & Drop: Files to Notepad (open) or Terminal (paste path).
- New Apps:
Settings: Theme selector (Win3.1, Dos, Win95, Hacker, Amiga), live preview.Calculator: Safe evaluator with history.Process Manager: Live process list (htop-lite) with kill and sort.Log Viewer: Tail-f mode, highlighting, vim-style search.Clock: Digital clock + ASCII calendar with toggle.Hex Viewer: Binary file inspection.
- Quality & Dev:
- CI/CD pipeline with GitHub Actions (Linux/Windows).
- 100% Module Coverage policy.
- Type-safe action system (
AppActionenum).
- Performance:
- Rendering optimizations (only draw dirty regions/windows).
- Reduced input latency via normalized key handling.
- Consistency:
- Unified menu system (
MenuBar) for global and window-local menus. - Standardized keyboard shortcuts across all apps.
- Unified menu system (
- Bump de version del proyecto a
0.6.0(pyproject.toml, runtime y scriptsetup.sh). - Sincronizacion de version en tests/documentacion de runtime (
README.md,ROADMAP.md,RELEASE.md). - Roadmap actualizado para reflejar estado actual: v0.4 completada, v0.5/v0.6 en progreso.
- Bump de version del proyecto a
0.3.6(pyproject.toml, runtime y scriptsetup.sh). - Sincronizacion de tests/documentacion para reflejar
v0.3.6.
- Bump de version del proyecto a
0.3.5(pyproject.toml, runtime y scriptsetup.sh). - Elevacion del gate gradual de cobertura por modulo en CI a
--module-coverage-fail-under 50.0. - Cobertura por modulo elevada de 44.1% a 52.7% con nuevos tests de
retrotui.__main__,retrotui/core/content.pyy file I/O en apps. - Sincronizacion de README/ROADMAP/PROJECT/RELEASE con el nuevo baseline de release y calidad.
- Bump de version del proyecto a
0.3.4(pyproject.toml, runtime y scripts de setup). - Sincronizacion de cadenas de version en UI (
status bar, dialogo About y welcome). - Actualizacion de documentacion y preview para reflejar
v0.3.4. - Pipeline de input migrado a
get_wch()con normalizacion comun de teclas (normalize_key_code). - Manejo de teclado unificado para
Dialog,InputDialog,NotepadWindowyFileManagerWindowcon entradasstr/int.
- Ajustes editoriales de release notes para separar claramente
v0.3.4(mantenimiento) dev0.3.3(refactor/hardening). - I/O de Notepad fijado en UTF-8 para carga y guardado de archivos.
- Cobertura de tests ampliada para flujo de teclado Unicode y atajos Ctrl en ruta
get_wch()(suite actual: 23 tests).
- Estructura modular del paquete:
retrotui/core,retrotui/ui,retrotui/apps
- Save As / Save Error: flujo de guardado consistente con señales tipadas
- Corrección de import faltante en
InputDialog(C_WIN_BODY) - Eliminada doble instanciación de Notepad al abrir archivos
- Refactor de enrutamiento de input:
handle_mouse()yhandle_key()divididos en helpers - Contrato interno de acciones tipado (
ActionResult/ActionType) - Reemplazo de magic strings de acciones por enum
AppActionen menus, apps e iconos - Limpieza de artefactos Python (
.pyc/__pycache__) del versionado - Unificación de menús en
MenuBar(global y ventana) con wrappers de compatibilidad - Navegación del menú global delegada a
MenuBar.handle_key() - Documentación sincronizada a
v0.3.3y normalización de encoding UTF-8 en docs clave
- Reemplazo de
except Exceptiongenéricos en rutas internas por excepciones concretas - Tests unitarios para navegación de
MenuBar(separadores, ESC, LEFT/RIGHT, Enter) - Smoke tests de integración de
MenuBarpara click global/ventana por coordenadas - Logging básico de acciones (
execute_action/dispatcher) con activación porRETROTUI_DEBUG=1
- ASCII Video Player — reproduce videos en terminal vía mpv (color) o mplayer (fallback)
- Icono "ASCII Vid" en escritorio y opción "ASCII Video" en menú File
- Detección automática de archivos de video desde File Manager (
.mp4,.mkv,.webm, etc.) - Método
play_ascii_video()con manejo de errores y restauración de curses - Helper
is_video_file()conVIDEO_EXTENSIONSset
- Barras de menú por ventana estilo Windows 3.1 (File, View)
- Clase
WindowMenucon dropdown, navegación por teclado y hover tracking - FileManager: menú File (Open, Parent Dir, Close) + View (Hidden Files, Refresh)
- Notepad: menú File (New, Close) + View (Word Wrap)
- Indicador
≡en title bar de ventanas con menú - F10 abre menú de ventana activa (prioridad sobre menú global)
- Escape cierra menú de ventana primero, luego menú global
- Click fuera del dropdown lo cierra automáticamente
body_rect()se ajusta automáticamente cuando existewindow_menu- Resize mínimo dinámico (7 filas con menú, 6 sin menú)
- Editor de texto (NotepadWindow) con cursor, edición multilínea
- Word wrap toggle (Ctrl+W) con cache de líneas envueltas
- Abrir archivos desde File Manager en el editor (reemplaza visor read-only)
- Resize de ventanas — drag bordes inferior, derecho y esquinas
- Maximize/Minimize — botones
[─][□][×]en title bar - Taskbar para ventanas minimizadas (fila h-2)
- Doble-click en título = toggle maximize
- Notepad en menú File
- Status bar muestra ventanas visibles/total
- Refactorización:
Window.draw()→draw_frame()+draw_body() - Tab cycling salta ventanas minimizadas
- Iconos rediseñados: ASCII art 3×4 con mejor contraste (negro sobre teal)
- Scroll wheel mueve selección en File Manager (antes solo scrolleaba viewport)
- Ventanas se reposicionan al redimensionar terminal
- Fix crash en Dialog antes del primer draw
- Fix scroll negativo en ventanas con poco contenido
- Limpieza de dead code y corrección de docs
- Fix double-click en iconos (ya no dispara dos acciones)
- Fix hover de menú dropdown (highlight sigue al mouse)
- Fix Ctrl+Q (deshabilitado XON/XOFF flow control)
- Fix drag de ventanas (release correcto con button-event tracking)
- File Manager interactivo con navegación de directorios
- Clase
FileManagerWindowcon estado de directorio yFileEntry - Click en carpetas para navegar, ".." para subir
- Visor de archivos — abre archivos de texto en ventana read-only
- Selección con highlight (blanco sobre azul, estilo Win3.1)
- Teclado: ↑↓ selección, Enter abrir, Backspace padre, PgUp/PgDn, Home/End
- Toggle de archivos ocultos (tecla H)
- Detección de archivos binarios
- Auto-scroll para mantener selección visible
- Re-selección del directorio previo al navegar hacia arriba
- Delegación de eventos mouse/teclado por ventana (
handle_click/handle_key)
- Escritorio con patrón de fondo estilo Windows 3.1
- Barra de menú superior con reloj en tiempo real
- Ventanas con bordes dobles Unicode (╔═╗║╚═╝) y botón cerrar [×]
- Soporte de mouse sin X11: GPM para TTY, xterm protocol para emuladores
- Click para seleccionar, arrastrar ventanas, scroll wheel
- Diálogos modales (About, Exit confirmation)
- Menú desplegable con navegación por teclado (F10, ←→↑↓, Enter, Escape)
- Iconos de escritorio clickeables (doble-click para abrir)
- ThemeEngine — colores Win3.1 con soporte 256-color
- Navegación completa por teclado (Tab, Enter, Escape, Ctrl+Q)
- Archivo único (
retrotui.py) — sin dependencias externas