Development Story

The Genesis (Sep-Nov 2024)

The journey of Improve ImgSLI began in September 2024, initially conceived with ChatGPT's assistance to address a personal need for straightforward image comparison. The early version provided basic side-by-side functionality. The following month, October, marked an enhancement phase using Claude, which introduced a magnifier tool and drag-and-drop support, significantly improving usability. By November, further refinements to the magnifier were implemented, but the codebase's expansion made complete code regeneration impractical, necessitating manual integration.

Finding the Right Tools (Jan-Mar 2025)

A turning point came in January 2025 when a user request for dynamic window resizing led to the exploration of DeepSeek, which successfully guided the implementation of this crucial feature. February brought renewed focus, leveraging Claude Sonnet 3.7 and Grok 3 for significant feature additions and bug fixes, including dynamic image swapping, a multilingual dictionary, and optimized rendering. Late March was dedicated to cross-platform compatibility, a solo effort that led to the discovery and resolution of several bugs, culminating in a successful launch on multiple platforms.

AI-Powered Acceleration (May-Jun 2025)

In May 2025, the discovery of Cursor AI allowed for the rapid implementation of three key features: a smarter caching service that improved smoothness by 2-3 times, selectable magnifier interpolation, and quick image preview using the keyboard. The project's structure also became much more multi-layered and less coupled after a two-day refactoring session with Gemini. In June, with Gemini's assistance again, the entire UI was ported to qfluentwidgets for a modern aesthetic.

Architectural Maturity (Jul-Aug 2025)

July saw a major overhaul of the rendering pipeline and the launcher script, but also highlighted persistent bugs related to race conditions, confirming the need for a more robust architecture. This led to the monumental rewrite in August 2025. The qfluentwidgets library was replaced with 100% custom components, and the entire application was migrated to a proper Model-View-Presenter (MVP) architecture. This new, solid foundation resolved numerous underlying issues and paved the way for more stable and ambitious future development.

GPU Revolution & Architectural Renaissance (Sep 2025 - Mar 2026)

With the solid MVP foundation established in August 2025, the focus shifted to deep performance work. Using Claude Code as the primary development tool, a period of intensive architectural evolution began. The rendering engine was rebuilt from scratch with hybrid CPU-GPU acceleration via OpenGL shaders, delivering dramatically improved performance on large images. All pop-up and overlay windows were migrated to native Qt widgets, greatly improving Wayland compatibility. Interactive canvas zooming and panning were added to the main comparison view. The Video Editor received a complete overhaul — the timeline was rewritten with a keyframe-based model, aspect-ratio-correct thumbnails, and dynamic spacing. Finally, a plugin-based architecture was introduced for extensibility and a cleaner internal structure. These advances culminated in v8.1.0, released on March 30, 2026.

Compatibility Patching & Release Hardening (Apr 2026)

After the huge February-March refactor, early April 2026 became a cleanup phase focused on edge cases rather than flashy features. Work concentrated on split-line behavior near image borders, magnifier geometry and clamping, and high-DPI mismatches between the visible render area and the interaction area. The application also moved further toward the Qt Quick canvas path because the older OpenGL widget path kept exposing platform-specific issues. At the same time, packaging and release automation were strengthened across Flatpak, AUR, and Windows, and the first proper Windows GitHub Actions pipeline with release-metadata validation was added. This less glamorous work ultimately became the foundation of v8.2.0.

Canvas Feature Contract & Multi-Magnifier (Early May 2026)

Early May 2026 became another architectural pass over the canvas renderer. Despite the previous refactors, the canvas was still much more tightly coupled than it should have been — adding or changing one visual feature still required touching scene construction, reducers, rendering code, settings, and editor tracks. The main result of this work was the beginning of a dedicated canvas feature contract, inspired by how larger graphics applications like GIMP, Krita, and Photoshop keep many tools manageable without turning the renderer into anarchy. The magnifier also received a major expansion: it is now possible to create more than one magnifier, color them independently, and use additional highlight logic (including helper highlighting for hidden or occluded capture areas) to make multi-magnifier interactions more intuitive. The DBus-based notification path was removed because Flatpak did not handle it well enough. At the same time, the UI toolkit extraction reached a much more practical stage — close to a real plug-in-style library rather than just an internal folder.

Decoupling the Core (Mid May 2026)

Building on early May, the middle of the month was dedicated to a much deeper and more aggressive refactoring of the feature contract system, with the help of Claude Opus and Codex. The core problem was that despite the new contract system, references to specific features like the "magnifier" were still scattered across core modules and event handlers — essentially well-disguised spaghetti code. This half-week effort completely reworked the system to rely strictly on contracts and registrations. The real measure of success is modularity: previously, deleting a feature's folder would cause a fatal crash on startup. Now the application handles such a scenario gracefully, reporting a localized error like "magnifier.size is not defined" rather than bringing down the entire program. The UI toolkit was also extracted into a package form and renamed to "sli", as it no longer shares much with fluent design.

Test Suite, Full Zoom & v9 Release (Late May 2026)

The final stretch of May turned into a consolidation phase, working with Claude and Codex. The biggest structural addition was a proper automated test suite — roughly 480 test cases covering architectural contracts (feature manifests, capability aliases, GL pass stacking, tab and plugin isolation), behavioral runtime contracts (reducer purity, viewport-change emission, gesture resolution, EventBus depth guarding), settings persistence, and the video/keyframe pipeline. The tests are parameterized so that new features are automatically pulled under the existing rules without rewriting them, and launcher.sh gained a "test" command. The zoom system was reworked into a full implementation — where the canvas previously only handled magnification at 100% and above, it now supports a continuous range from roughly 10% up to very high magnification, with proper panning across the zoomed viewport. A very large number of bugs were also fixed across rendering and drawing. At this point the application is fully stable and shipped as version 9.0.0.