Monthly Devlog: Core Architecture Refactor and UI Stabilization
Overview
This month’s primary focus was a comprehensive refactor of the app’s core architecture, transitioning from the legacy Tkinter layout to PySide 6. Alongside this, I concentrated heavily on stabilizing and polishing core user mode features, improving backend state management, and experimenting with UI animations and feedback elements. While foundational work on a new app front page (“hub”) began, final design decisions remain pending as I prioritize robustness and responsiveness.
Highlights & Progress
Architecture & Backend State Management
- Successfully refactored backend scripts to enable dynamic panel updates in response to AppState changes rather than static boot-time refreshes, resulting in 12 out of 13 panels consistently displaying fresh data.
- Consolidated state management calls into a centralized AppState module, streamlining update logic and reducing redundant refreshes.
- Throttled config file refresh frequency and wrapped update calls with conditionals to avoid unnecessary UI updates, improving overall efficiency.
- Developed a new event bus and synchronization system to coordinate backend updates, enhancing communication between components.
Core User Mode Features
- Completed key user mode functionalities including selection, preference management, and custom mode creation, with passing tests for saving, deleting, and modifying modes.
- Added a dedicated GUI space for managing custom user modes, featuring double-click tag editing for intuitive interaction.
- Implemented a time delay on the main hub activation button to prevent race conditions during startup.
UI & Animation Experiments
- Reinstated animations that were dropped during the refactor and introduced per-page rescaling controls.
- Experimented with blending idle, active, and busy animations, though runtime errors and jumpy behavior remain challenges.
- Tested layering a repeating short loop animation over existing animations but encountered stability issues.
- Explored split flap-style interfaces for user mode switching and startup catchphrase animation; startup animation was acceptable, but mode-switching interface needs rework.
- Evaluated various deep gray monospace fonts for the loading screen, with no final decision yet.
- Began adding user feedback elements such as a terminal-style window on the hub to display backend events (model loading/unloading, transcription), and a progress bar for Faster Whisper model downloads updating in 5% increments.
- Considered additional feedback widgets including status indicators, loading wheels, and live resource usage monitors.
New App Front Page (“Hub”)
- Initiated design work on a new hub page featuring visual status indicators, error handling, animated GIFs, and setup cards.
- Layout and final UI design remain undecided, with fine-tuning needed on timing, colors, and error handling.
- Added a terminal window with welcome messages and basic instructions to orient users.
Stability & Compatibility
- Fixed node-related bugs that caused unexpected config file refreshes and wiping by setting a new global option.
- Identified ongoing Mac compatibility issues and Qt threading behavior causing app hangs during large updates.
- Planned migration of heavy tasks (transcription, model downloads, tests) to proper background threads to improve responsiveness.
- Began auditing current threading usage to prevent hangs and improve stability.
Polish & Miscellaneous
- Started work on tray menu management targeting beta or pre-beta builds.
- Evaluated additional animations (idle/init sequences, splash card cycling user modes) cautiously to avoid performance degradation.
Reflections
- The architectural refactor to PySide 6 fundamentally improved dynamic UI updates and modularity, validating the decision despite initial complexity.
- Consolidating state management into AppState significantly reduced redundant refreshes and improved maintainability.
- Animation blending experiments revealed the complexity of smooth transitions and layering; stability issues highlight the need for incremental testing and fallback strategies.
- The split flap-style UI for mode switching was an intriguing idea but did not meet usability expectations, prompting reconsideration.
- Introducing a terminal-style backend event window added transparency and user feedback, which was well-aligned with the goal of making internal processes visible.
- Threading challenges with Qt exposed limitations in the current approach; moving heavy tasks off the main thread is critical to prevent freezes.
- Mac compatibility remains a stubborn issue, underscoring the need for dedicated platform testing and possibly platform-specific fixes.
- Prioritizing stabilization and polish over new feature expansion helped maintain focus and prevent feature creep during this complex transition.
Next Steps
- Finalize the design and layout for the new app front page (“hub”), incorporating user feedback elements and error handling.
- Complete migration of heavy tasks to background threads and audit threading usage to eliminate app hangs.
- Resolve outstanding Mac compatibility issues through targeted debugging and testing.
- Revisit and refine the user mode switching interface, exploring alternatives to the split flap design.
- Evaluate prioritization and feasibility of supporting non-OpenAI APIs and alternative operation modes after core stability is secured.
Keynotes
Decisions & Observations
- Decided to refactor core architecture to PySide 6, improving dynamic UI updates and modularity.
- Initiated new app front page (“hub”) design with visual status indicators and feedback elements; final layout and design decisions pending.
Issues & Next Steps
- Encountering runtime errors and instability in animation blending and layering; stability issues require incremental testing and fallback plans.
- Split flap-style UI for mode switching failed usability expectations; needs reconsideration and redesign.
- Ongoing Mac compatibility problems require dedicated debugging, platform testing, and possibly platform-specific fixes.
- Needs to finalize hub design incorporating user feedback and error handling.
- Will complete migration of heavy tasks (transcription, downloads, tests) to background threads to improve responsiveness.
- Will revisit and refine user mode switching UI, exploring alternatives to split flap design.
- Will evaluate support for non-OpenAI APIs and alternative operation modes after securing core stability.
Uncategorized Notes
- Consolidated state management into a centralized AppState module to reduce redundant refreshes and improve maintainability.
- Developed a new event bus and synchronization system to enhance backend component communication.
- Completed key user mode features with GUI support for managing custom modes and safeguards against startup race conditions.
- Introduced terminal-style backend event window for user feedback, improving transparency of internal processes.
- Identified Qt threading issues causing app hangs during large updates; critical to migrate heavy tasks to background threads and audit threading usage.
- Must resolve Mac compatibility issues through targeted debugging and testing.
Generated with
Nucleate by Watchlight Studio— distilled from full transcription.