Mikhail Kilin
2a5fd6aa35
perf: optimize Phase 11 image rendering with dual-protocol architecture
Redesigned UX and performance for inline photo viewing:
UX changes:
- Always-show inline preview (fixed 50 chars width)
- Fullscreen modal on 'v' key with ←/→ navigation between photos
- Loading indicator "⏳ Загрузка..." in modal for first view
- ImageModalState type for modal state management
Performance optimizations:
- Dual renderer architecture:
* inline_image_renderer: Halfblocks protocol (fast, Unicode blocks)
* modal_image_renderer: iTerm2/Sixel protocol (high quality)
- Frame throttling: inline images 15 FPS (66ms), text remains 60 FPS
- Lazy loading: only visible images loaded (was: all images)
- LRU cache: max 100 protocols with eviction
- Skip partial rendering to prevent image shrinking/flickering
Technical changes:
- App: added inline_image_renderer, modal_image_renderer, last_image_render_time
- ImageRenderer: new() for modal (auto-detect), new_fast() for inline (Halfblocks)
- messages.rs: throttled second-pass rendering, visible-only loading
- modals/image_viewer.rs: NEW fullscreen modal with loading state
- ImagesConfig: added inline_image_max_width, auto_download_images
Result: 10x faster navigation, smooth 60 FPS text, quality modal viewing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 01:36:36 +03:00
..
2026-02-06 21:25:17 +03:00
2026-02-02 05:42:19 +03:00
2026-02-04 03:56:58 +03:00
2026-02-06 21:25:17 +03:00
2026-02-01 02:23:17 +03:00
2026-01-31 23:02:53 +03:00
2026-01-31 23:02:53 +03:00
2026-01-31 23:02:53 +03:00
2026-02-01 18:57:55 +03:00
2026-02-01 18:57:55 +03:00
2026-02-02 05:42:19 +03:00
2026-02-08 01:36:36 +03:00
2026-02-06 15:28:11 +03:00
2026-02-08 01:36:36 +03:00
2026-02-08 01:36:36 +03:00
2026-01-31 23:02:53 +03:00
2026-01-31 23:02:53 +03:00
2026-01-31 23:02:53 +03:00
2026-01-31 23:02:53 +03:00
2026-02-01 18:57:55 +03:00
2026-01-30 23:55:01 +03:00
2026-01-31 23:02:53 +03:00
2026-01-31 23:02:53 +03:00