Skip to content

Releases: Crlyzd/Bukaake

Bukaake v0.9.0

Choose a tag to compare

@Crlyzd Crlyzd released this 30 Sep 10:02

Bukaake v0.9.0 — The OCR & Spatial Intelligence Release

Bukaake v0.9.0 introduces native Windows Optical Character Recognition (OCR) with spatial geometry formatting, a precision 9x9 Magnified Color Eyedropper, companion handoff to Cathet, refined snipper ergonomics, and a complete Domain-Driven Modular Architecture.


🌟 What's New Since v0.8.1

1. 🔍 Native Windows OCR & Spatial Formatting

Extract text from any on-screen area in milliseconds without external cloud APIs, Python dependencies, or third-party engines:

  • Spatial Geometry Detection: Analyzes word bounding box coordinates to dynamically determine line heights and vertical gaps. It faithfully distinguishes standard line wrapping (single \n) from paragraph and stanza breaks (double \n\n), keeping paragraphs, poetry, code snippets, and terminal output properly formatted.
  • Instant Clipboard Copy: Extracted text copies directly to your Windows clipboard with toast confirmation.
  • Cathet Companion Bridge: Seamless one-click handoff or optional auto-open into Cathet for instant markdown formatting, note-taking, and editing.

2. 🎨 9x9 Loupe Color Eyedropper

Inspect and pick exact colors anywhere across your monitors:

  • Magnified Pixel Loupe: A floating frosted glass loupe tracks your crosshair, rendering a 9x9 zoomed pixel grid with center crosshairs.
  • Live HEX & RGB Readout: Displays instantaneous color codes. Click anywhere to copy clean HEX/RGB values straight to your clipboard.

3. 🎯 Screen Snipper & Recording Ergonomics

  • Frosted Crimson Recording Button: A distinctive translucent crimson glass trigger clearly differentiates video recording from static snipping, with deliberate confirmation to eliminate accidental recording triggers.
  • Instant Full Screen Snip: Capture your active display immediately with one click.
  • Natural Cursors & Interaction: Restored clean system cursors across snipper controls and eliminated accidental transparent window edge resize dragging.

4. 🏗️ Domain-Driven Modular Architecture

The entire codebase has been restructured into clean, domain-driven sub-packages for faster maintainability and navigation:

  • Backend Rust (src-tauri/src/): Flat 30-file directory reorganized into capture/, imaging/, platform/, and integrations/.
  • Frontend Core & UI (src/): Grouped into components/viewer/, components/modals/, services/platform/, services/image/, services/interaction/, services/integrations/, and core/crop/, core/draw/, core/filters/, core/metadata/.
  • Pillar 5 Enforcement: 100% of non-coordinator source files remain strictly under 300 lines of code.

🛠️ Fixes & Polish

  • Multi-Instance Companion Launching: Allowed visible, concurrent multi-instance launches for companion tools (Cathet & Alitken).
  • Snipper Window Subclassing: Suppressed native Win32 edge hit-testing on the transparent snipper overlay window to ensure borderless clicks never drag window edges.

Bukaake v0.8.1

Choose a tag to compare

@Crlyzd Crlyzd released this 28 Sep 09:13

Bukaake v0.8.1 — Release Notes & Architecture Synchronization

1. Release Notes: Bukaake v0.8.1

Highlights

  • 🎥 Space Saver Recording Mode (~75% File Size Reduction):
    • Added dedicated toggle in Settings allowing users to record compact 30 FPS videos at 25% target bitrates (Balanced: 1.5 Mbps, High: 3 Mbps, Ultra: 6 Mbps).
    • Relaxed backend bitrate clamp floor to 500 Kbps in native_recorder.rs.
    • Standardized default capture presets to silky 60 FPS (Balanced: 6 Mbps, High: 12 Mbps, Ultra: 24 Mbps).
    • Dynamic dropdown labels adapt immediately to active mode.
  • 🎙️ Sample-Accurate Audio Sync & Desync Resolution:
    • Continuous Silence Synthesis: The native WASAPI pipeline (audio_mixer.rs) synthesizes continuous 48kHz stereo zero-sample pairs (0.0, 0.0) during silent or late-starting feeds, ensuring monotonic, contiguous audio PTS strictly matching video PTS.
    • Atomic Pause Compensation: Pauses track elapsed pause duration atomically (total_paused_nanos) and subtract it directly from video frame elapsed time (effective_nanos = elapsed.saturating_sub(paused)), eliminating timestamp jumping and audio-video skew across pause/resume cycles.
    • Audio Sync Calibration Stepper: Configurable manual offset (-200ms to +200ms in 10ms steps) persisted in localStorage (bukaake-audio-sync-offset) and passed through IPC (syncOffsetMs) into the native recorder PTS pipeline.
  • 🏠 Interactive Return-to-Start Brand Button & Window Reset:
    • In Mode 1, opening an image transforms the titlebar app logo into an interactive back button with a smooth hover cross-fade (ri-arrow-left-line).
    • Guarded by changeTracker.hasUnsavedChanges() before triggering the confirmation modal.
    • Unloading resets and centers the window back to its default 680×480 start state.
    • Startpage capability pill updated to feature Typography & Text Annotations (T).
  • 💖 Settings About Tab Ambient Update Glow & Pulsating Heart:
    • Ambient sky glow and soft drop shadow on the About tab pill (has-update) when an update is available.
    • Rhythmic heartbeat pulse animation (scale(1.28)) on the heart icon.
    • Theme-adaptive styling for Obsidian Dark and Slate Light modes.
  • 🧩 Architectural Modularization:
    • Modularized audio settings into settings-audio-section.js and settings-audio.css.
    • Extracted navigation tab styling into settings-nav.css.
    • Refined startpage.css drop zone and capability pill styling.

Bukaake v0.8.0

Choose a tag to compare

@Crlyzd Crlyzd released this 27 Sep 19:01

Bukaake v0.8.0 — The Hardware Acceleration & Ergonomics Update

The ultra-fast, transparent, and distraction-free photo viewer for Windows.
Reviving the desktop-immersive magic of Google Picasa Photo Viewer with modern stroke-free frosted glass.


🌟 Overview: What's New in v0.8.0

Bukaake v0.8.0 is one of our most substantial architectural milestones yet. This release transitions screen recording from browser-level canvas streaming to a zero-copy, native Windows GPU capture and hardware encoding engine powered by Direct3D 11, Windows.Graphics.Capture, and Windows Media Foundation (WMF). Recording desktop activity now achieves Snipping Tool parity: rock-solid 60 FPS video, sample-accurate WASAPI audio synchronization, and under 2% CPU overhead.

Additionally, v0.8.0 introduces a dedicated transparent overlay window architecture that eliminates all capture-induced window flashes, implements deep Win32 subclassing to conquer Windows 11 DWM border and maximize glitches, pushes acrylic transparency to a new Vivid Frosted Glass tier, and brings classic Picasa 4-way arrow zoom ergonomics right to your fingertips.


🚀 Key Highlights & New Features

1. 🎥 Native GPU Screen Recording (Direct3D 11 + WGC + WMF H.264)

  • Zero-Copy VRAM Pipeline: Desktop frames are captured directly into GPU textures using Windows.Graphics.Capture and Direct3D11CaptureFramePool (DXGI_FORMAT_B8G8R8A8_UNORM). Zero CPU memory round-trips occur during capture.
  • Hardware-Accelerated H.264 & AAC: Recorded streams encode directly to native .mp4 containers via Windows Media Foundation's IMFSinkWriter. Hardware encoders (NVENC, Intel QuickSync, AMD AMF) are engaged automatically with instantaneous finalization.
  • High-Performance Region Cropping: Custom region recordings utilize fast Direct3D 11 subresource blits (CopySubresourceRegion), keeping CPU usage below 2% even on high-refresh 4K displays.
  • Sample-Accurate Audio Sync: WASAPI system audio loopback and microphone inputs are processed via lock-free resampling queues at 48kHz stereo PCM. A contiguous sample-increment presentation timestamp (PTS) clock completely eliminates micro-stutters, audio lag, and audio/video drift.
  • Clean Recording Experience: Suppresses Windows 11's default yellow capture border via SetIsBorderRequired(false) for clean, borderless capture framed by Bukaake's ambient recording dock.

2. 🪟 Flawless Multi-Window Architecture (Zero-Flash Capture)

  • Dedicated Overlay Window (snipper): Screen snips, region selections, and floating recording pills now operate on a dedicated, transparent secondary window. The main viewer window never hides or restores, eliminating DWM DirectComposition redraw flashes and Acrylic recreation flicker.
  • Standby Screen Recording: Launching a snip or screen recording from the system tray standby daemon immediately opens the capture overlay without flashing or prematurely waking the main viewer window.
  • Zero Residue & Ghost Layers: Fixed edge cases where post-recording blur backdrops or crosshair overlays could linger or intercept desktop clicks after finalization.

3. ⚡ Win32 Subclassing & Vivid Frosted Glass Polish

  • Settings Edge-Flick Suppression (window_subclass.rs): Subclassed WM_NCHITTEST and intercepted SC_SIZE modal loops on fixed dialogs. Edge clicks and drags no longer flick or displace the window while strictly preserving WS_THICKFRAME—keeping native rounded corners and drop shadows without any 1px white border.
  • Smooth Titlebar Maximize Transition: Subclassed WM_NCLBUTTONDBLCLK and SC_MAXIMIZE on the main viewer window. Double-clicking the titlebar now smoothly triggers Bukaake's native transparent Mode 2 fullscreen viewer instead of triggering jarring DWM window maximization.
  • Vivid Frosted Glass Tier: Tuned native Windows Acrylic tint alphas (dark mode: 175, light mode: 105) and updated --glass-panel-bg formulas to deliver deeper desktop translucency and ambient glow.
  • Theme Selector Stability: Pre-allocated GPU composition layers with transform: translateZ(0) on theme cards, resolving hover visual drops and stabilizing active card glow.

4. 🎯 Picasa 4-Way Arrow Zoom & Viewer Ergonomics

  • Intuitive Arrow Zooming: Introducing natural 4-way arrow key navigation matching classic Picasa workflows:
    • ← / → : Navigate previous / next photos in the folder.
    • ↑ / ↓ : Smoothly zoom in / zoom out anchored to the center / cursor.
  • Updated Cheat Sheet: Press ? anytime to view the modernized keyboard shortcuts modal reflecting the new arrow zoom and capture hotkeys.

📋 Detailed Changelog

🚀 Performance & Native Core

  • bd195c4 Implement native GPU-accelerated screen recording with Direct3D 11, WGC, and WMF H.264
  • 7e21291 Add zero-dependency EBML WebM duration patcher for instant seekability
  • a9965b1 Resolve recording slow-mo, audio latency, and flutter artifacts
  • 035a779 Add WASAPI audio capture, calibrate pill geometry, and inline settings chips
  • 2f83b50 Suppress default Windows yellow capture border in WGC session via SetIsBorderRequired(false)

🪟 Window Management & UI Polish

  • c5c7e1f Implement Picasa arrow zoom and fix window maximize transition via window_subclass.rs
  • 6e0b776 Eliminate capture and recording window flash via dedicated overlay window
  • 6f887ba Suppress settings edge flick, push vivid acrylic tier, and fix theme hover
  • 64b9bef Eliminate lingering post-recording blur layer and snipper resurfacing
  • a86d771 Eliminate window flash on screen recording triggered from tray standby
  • 3aa76ce Calibrate screen snip HiDPI scale factor and fullscreen resize calculations

🏗️ Architecture & Guidelines

  • e44e418 Formalize Agent Output Protocol in AGENTS.md requiring task artifacts for planning
  • b09c30b Document window_subclass.rs and Win32 WM_NCHITTEST subclassing invariants
  • 7c391bd Reorganize modular imports and stylesheet indices strictly under 300 LOC limits

💻 System Requirements

Specification Requirement
Operating System Windows 10 (Build 19041+) or Windows 11 (All editions)
Architecture x64 (Intel/AMD 64-bit) or ARM64 (Surface Pro / Snapdragon X)
Graphics DirectX 11 capable GPU (Intel HD Graphics, NVIDIA, AMD, Qualcomm Adreno)
Runtime Single portable .exe (~5 MB). Zero external DLLs, Python, or FFmpeg required.

📦 Download & Update

  • Existing Users: If you are running Bukaake in Regular Mode (Mode 1), the built-in auto-updater will check for updates in the background and notify you with a single click in-place update.
  • Manual Download: Grab the latest portable executable directly from the GitHub Releases page:
    • Bukaake-x64.exe (Standard 64-bit Windows PC)
    • Bukaake-arm64.exe (ARM64 Windows / Snapdragon devices)

Bukaake v0.7.2

Choose a tag to compare

@Crlyzd Crlyzd released this 25 Sep 03:22

Bukaake v0.7.2 — Release Notes

🎯 HiDPI Snip Calibration & Fullscreen Resize Synchronization

Bukaake v0.7.2 resolves high-DPI scaling artifacts during desktop capture, eliminating coordinate drift on scaled displays (125%, 150%, 200%) and introducing dynamic viewport recalculation for the screen snipper overlay.


🚀 What's New & Fixed

1. Authoritative Native Monitor DPI Scale Factor

  • Precision HiDPI Calibration: Screen capture coordinates and selection rectangles now retrieve the authoritative display scale factor directly from Rust's native monitor handle (win.current_monitor()?.scale_factor()) via ScreenCapturePayload.
  • Elimination of Startup Viewport Drift: Fixed an issue where calculating the device pixel ratio from options.screenWidth / window.innerWidth yielded incorrect scaling if the hidden window had not yet expanded past its initial 680×480 standby size.
  • Three-Tier DPR Fallback: ScreenSnipper now cascades gracefully: native monitor scaleFactor ➔ window.devicePixelRatio ➔ computed viewport ratio ➔ 1.0.

2. Dynamic Fullscreen Overlay Resize Handling

  • Live Viewport Adaptation: Added active resize listeners to ScreenSnipper. Resizing or moving the capture overlay across displays while in Fullscreen mode immediately synchronizes physical/CSS selection bounds and updates dimension tags in real time.
  • Ergonomic Snipper UI: Cleaned up button actions and state toggle transitions in capture-manager.js and screen-snipper.js while maintaining stroke-free glass aesthetics.

📦 Git Release Tag Message

fix(capture): calibrate screen snip HiDPI scale factor and fullscreen resize

- Retrieve authoritative monitor scale factor from Rust `win.current_monitor()`
- Forward `scale_factor` in `ScreenCapturePayload` to eliminate DPI calculation drift
- Guard against stale 680x480 startup viewport dimensions in `ScreenSnipper`
- Dynamically recalculate fullscreen overlay bounds and dimension badges on window resize
- Bump application version to 0.7.2

Bukaake v0.7.1

Choose a tag to compare

@Crlyzd Crlyzd released this 22 Sep 03:13

Bukaake v0.7.1 — Release Notes

Tag: v0.7.1
Previous Version: v0.7.0 (7e21291)
Commit Range: v0.7.0..HEAD (4cf158f)
Theme: High-Fidelity Audio Engine Overhaul & Synchronization


What's Changed in v0.7.1

This patch release delivers an overhaul of Bukaake’s native audio capture and mixing pipeline. It completely resolves audio desynchronization, slow-motion playback, lag accumulation, and flutter artifacts during screen recording sessions with system and microphone audio.

(Note: Initial WASAPI capture and the EBML WebM duration patcher were introduced in v0.7.0; this release focuses exclusively on fixing capture timing, sample rate conversion, and real-time mixing fidelity).


🎙️ 1. Native Dual-Queue Audio Mixer Engine (audio_mixer.rs)

  • Dual-Source Architecture: Separated system loopback audio and microphone input into dedicated independent FIFO queues (ResamplingQueue).
  • Hardware-Agnostic Sample Rates: Added continuous phase-tracked linear resampling to support arbitrary microphone sample rates (e.g. 16 kHz Bluetooth headsets/TWS, 44.1 kHz USB mics) upsampled seamlessly to 48 kHz stereo.
  • Buffer Safety Ceiling: Implemented a hard 200ms queue ceiling per source to prevent unbounded memory growth or runaway latency accumulation over extended recording sessions.

⏱️ 2. Zero-Latency Dynamic Clock Draining

  • System Master-Clock Sync: Refactored audio_capture.rs to drain available system frames dynamically on every 25ms tick, using system audio as the primary clock reference.
  • Lag & Slow-Motion Elimination: Removed the static 350ms buffer accumulation that previously caused recording audio to lag behind video frames or drift into slow-motion.

🎵 3. Flutter & Distortion Elimination

  • Removal of 25 Hz Boundary Micro-Fading: Removed destructive edge sample ramp fading in audio-stream-receiver.js. This eliminates the tremolo/flutter artifact previously audible when capturing rich music or sustained tones.
  • Adaptive Timeline Clamping: Widened Web Audio scheduling drift thresholds (now + 0.35s) to prevent abrupt timeline resets and stutter.
  • Transparent Soft-Knee Peak Limiting: Integrated transparent limiting (tanh curve above 0.92 amplitude) in audio_mixer.rs, ensuring bit-exact pass-through during normal playback while preventing clipping distortion when system audio and voice peaks collide.

📦 Commits Included in v0.7.1

Commit Scope Description
a9965b1 fix(audio) Resolve recording slow-mo, lag, and flutter artifacts via modular audio mixer
4cf158f feat(version) Bump version to 0.7.1 across app manifests and updater service

Bukaake v0.7.0

Choose a tag to compare

@Crlyzd Crlyzd released this 21 Sep 13:25

Bukaake v0.7.0 — Release Notes

Bukaake v0.7.0 introduces a high-fidelity Native WASAPI Audio Recording Engine, a Zero-Dependency EBML Duration Patcher for instant video scrubbing, a Calibrated Stroke-Free Recording Dock, and full integration of the Vector Typography & Markup Suite.


🌟 Release Highlights

🎙️ 1. Native Windows WASAPI Audio & Microphone Recording

Screen recordings now capture pristine, synchronized desktop audio and voice commentary:

  • Low-Latency Win32 Loopback: Native Windows Audio Session API (WASAPI) loopback and input capture powered directly by Rust (src-tauri/src/audio_capture.rs).
  • Bit-Exact Audio Pipeline: 1:1 uncolored audio capture pipeline with zero artificial digital gain boosting to eliminate distortion, digital clipping, and phase artifacts.
  • High-Definition Opus Encoding: 256 kbps Opus audio encoding with sample-boundary smoothing for rich sound reproduction.
  • Live Microphone Toggle: Floating recording pill features an instant mic mute/unmute switch (#btnRecMic) with real-time visual feedback.

⏱️ 2. Zero-Dependency EBML WebM Duration Patcher (Seekable Videos)

Solves the notorious Chromium/MediaRecorder WebM limitation where recorded streams lacked container-level duration metadata:

  • Pure-Rust In-Place Patching: Custom-built EBML parser and patcher (src-tauri/src/ebml_patcher.rs) parses WebM Segment Info headers and injects/updates the official EBML Duration tag (0x4489).
  • Instant Media Scrubbing: Recorded clips now display accurate timecodes and interactive seekbars in Windows Media Player, VLC, QuickTime, browser engines, and web video players—eliminating "Infinity" duration bugs.
  • Ultra-Lightweight & Self-Contained: 100% portable with zero third-party crates or bulky external FFmpeg binaries.

🎛️ 3. Calibrated Recording Pill & Inline Settings Chips

  • Dynamic Width Geometry: Geometrically calibrated floating pill dimensions (186px without microphone, 212px with microphone enabled) ensuring mathematically equal margins and eliminating close-button clipping across high-DPI display scales.
  • Frosted Glass Audio Chips: Compact, stroke-free frosted glass chips in Settings for System Audio and Microphone toggles, featuring strict icon font-synthesis isolation to prevent faux-bold glyph distortion.

Bukaake v0.6.0

Choose a tag to compare

@Crlyzd Crlyzd released this 16 Sep 20:35

Bukaake v0.6.0 — The Canva-Style Typography Engine & Architectural Overhaul

Version 0.6.0 • Windows 10 / 11 • x64 & ARM64 • Portable Single Binary • GPL-3.0


Bukaake v0.6.0 is one of our most substantial releases yet, bringing a wealth of new capabilities and refinements since our last public release (v0.5.5)!

This milestone introduces a completely native, Canva-style Typography & Text Annotation Engine, banishes the notorious Windows 11 1px white border glitch via native WS_THICKFRAME preservation, refines creative workflow ergonomics with universal Enter-to-apply and hotkey lockout, and establishes a clean domain-driven architecture strictly obeying our < 300 LOC Modularity Pillar.

Full Changelog: v0.5.5...v0.6.0


🌟 Major Highlights

1. ✍️ Canva-Style Typography & Text Subsystem (T)

Transform your photos and screenshots into publication-ready graphics with a fluid vector text engine designed to match the precision of Canva and Figma:

  • Center-Anchored Scaling: Resize text boxes from any of the 8 bounding handles (4 corner dots, 2 top/bottom dots, 2 side pills). Resizing scales font size symmetrically around the box center with zero coordinate drift.
  • 600px Typography Ceiling: Expanded font sizing up to 600px for ultra-high-resolution DSLR and camera RAW photos, powered by a quadratic power-curve slider ($r^2$) for delicate 12px–72px precision.
  • Scroll-Wheel Font Sizing: Hover over the font size badge or popover slider and roll your mouse wheel to adjust font sizes with adaptive increments (+2px, +5px, +20px, with Shift acceleration).
  • Unified Effects Popover: A sleek tabbed glass popover housing:
    • Shadow: Tunable blur radius, offset distance, angle, color, and opacity.
    • Background: Rounded pill fills, customizable padding, corner radius, background color, and opacity.
  • Laser Magnetic Alignment Guides: Integrated TextSnapper detects image centers, 80% safe framing margins, and image edges, snapping the outer bounding box with 0px offset flush alignment.
  • Contextual Selection & Instant Drag: Click anywhere on a text box to drag immediately in one fluid motion. Clicking canvas background dims formatting controls into .has-no-selection state while keeping Cancel, Apply, Undo, and Redo active.
  • Ready-to-Type Caret: Double-clicking an existing text box automatically places the typing caret at the end of the text instead of clumsily selecting the entire block.
  • Dual-Mode Sync & Dynamic Scaling: Text overlays dynamically scale with window resizing in Regular Mode (Mode 1) and synchronize pixel buffers in Fullscreen Mode (Mode 2) without vector distortion or box warping.
  • Middle-Click Canvas Pan: Pan your canvas during text editing using middle-click drag (button 1) with responsive grabbing-hand cursor feedback.
  • Full Undo / Redo History: Complete undo stack (Ctrl+Z, Ctrl+Y) tracking text insertions, property changes, and deletions.

2. 🪟 Windows 11 DWM 1px Border Elimination

  • Preserving WS_THICKFRAME: Windows 11 Desktop Window Manager (DWM) previously drew an unsightly 1px white border around frameless windows whenever set_resizable(false) was called natively.
  • Seamless Window Geometry: Removed native resize lockouts across main.rs, standby.rs, and frontend managers. Window size locking during startup and empty states is now handled purely through DOM handle suppression (body:not(.image-loaded) .resize-handle { display: none !important; }), preserving native acrylic blur, rounded corners, and soft ambient drop shadows without borders or screen flicker.

3. ⚡ Workflow Ergonomics & Hotkey Harmony

  • Universal Enter-to-Commit: Press Enter to instantly commit and apply edits across Text (T), Precision Crop (C), and Freehand Drawing (D).
  • Multiline Text Editing: Inside active text boxes, Enter seamlessly inserts newlines without triggering accidental blurs or premature commits.
  • Tool Hotkey Lockout: Prevents accidental hotkey triggers (D, T, C, E) while actively typing inside text boxes or working in drawing and crop modes.
  • Forwarded Wheel Zoom: Mouse wheel zoom events on the text overlay canvas are forwarded directly to the viewer engine, allowing you to zoom in and inspect fine details while editing text.

4. 📸 Screen Snipper & Desktop Recording Refinements

  • 1px Crisp Border: Refined screen snipper and recording region overlays to a razor-sharp 1px border with a softly dimmed 75% backdrop.
  • Updated Action Icons: Swapped screenshot copy icons to clean monochrome Remix icons (ri-file-copy-line) complying with our Zero Emojis policy.

5. 🏛️ Pillar 5 Modularity: Domain Architecture Refactor

To maintain codebase maintainability and ensure all files remain strictly under our < 300 lines of code ceiling, Bukaake underwent a major domain-driven restructuring across 49+ files:

  • Modular Subdirectories:
    • src/components/: capture/, settings/, text/
    • src/core/: canvas/, text/
    • src/services/: capture/
    • src/styles/components/: capture/, settings/, text/
  • Subsystem Decomposition: Text handling logic was decoupled into focused, single-responsibility modules:
    • text-tool.js (288 LOC) — Overlay lifecycle and history coordinator
    • text-toolbar.js (287 LOC) — Floating frosted glass control dock
    • text-renderer.js (221 LOC) — 2D vector rasterization and background blocks
    • text-snapping.js (128 LOC) — Magnetic laser guide math
    • text-events.js (79 LOC) — Pointer and drag event dispatching
    • text.css, text-popovers.css, text-handles.css — Modular stylesheets

⌨️ Updated Keyboard Shortcuts

🧭 Navigation & Zoom 🎨 Creative Tools ⚙️ Window & System
Key Action
Left / Right Previous / Next photo
Mouse Wheel Smooth zoom anchored to cursor
Middle Click Pan image canvas
F Fit image to window / screen
1 100% actual size (1:1)
, / . Rotate 90° Left / Right
B Toggle obsidian checkerboard
P Toggle pixel art crisp mode
Key Action
T Toggle Typography & Text Tool
D Toggle Pen & Highlighter
C Toggle Precision Crop
E Toggle Color Adjustments
Q Full Sensor RAW Develop
I Toggle EXIF Metadata Drawer
Enter Apply & commit active tool
Ctrl + Z Undo action / stroke
Ctrl + Y Redo action / stroke
Key Action
Delete Move to Recycle Bin (safe)
Shift + Del Permanently delete file
Ctrl + C Copy image to clipboard
Ctrl + V Paste image from clipboard
Ctrl + S Save active changes
Ctrl + Shift + S Save As new image file
Ctrl + , Open Settings window
Esc Cancel tool / Close window

📦 Changelog Summary

✨ New Features

  • Canva-Style Typography Engine (T): Interactive overlay text editor supporting center-anchored scaling, 8-point handles, custom typography presets, bold/italic/underline/strikethrough, alignment, and dynamic vector rendering (text-tool.js, text-renderer.js).
  • Unified Effects Popover: Tabbed popover UI seamlessly switching between shadow tuning (blur, offset, color, opacity) and rounded background fills (text-popovers.css).
  • Laser Alignment Guides: Dynamic magnetic snapping guides adhering flush against canvas edges, safe margins, and centerlines (text-snapping.js).
  • 600px High-Res Font Scale: Quadratic scale mapping ($r^2$) accommodating ultra-high-resolution images with fine precision in the 12px–72px range.
  • Scroll-Wheel Font Sizing: Mouse wheel stepping on font size pill with adaptive steps (+2px, +5px, +20px, Shift acceleration).
  • Dedicated '+ Add' Text Button: Frosted glass trigger on #textToolbar for deliberate text box creation.
  • Universal Enter-to-Apply: Commit active text, drawing, or crop operations instantly with the Enter key.

⚡ Improvements & Ergonomics

  • Fluid Single-Click Drag: Click and reposition unselected text blocks in a single continuous gesture without needing a priming selection click.
  • Ready-to-Type Caret: Cursor automatically targets the end of the text on double-click instead of selecting/highlighting all characters.
  • Responsive Toolbar Compacting: Progressive 3-tier compacting breakpoints (900px, 800px, 600px) preventing glass toolbar clipping on compact windows.
  • Middle-Click Panning: Pan canvas smoothly with middle mouse button during text editing.
  • Canvas Wheel Passthrough: Scroll wheel zooming forwarded directly to the viewer engine while editing text.
  • Live Styling Synchronization: Changing colors, fonts, or effects updates the DOM overlay and vector canvas simultaneously in real time.
  • Hotkey Conflict Prevention: Suppressed single-key navigation and tool shortcuts (D, T, C, E, Delete) during active text typing.

🐛 Bug Fixes

  • Eliminated Windows 11 1px Border: Preserved WS_THICKFRAME by eliminating native set_resizable(false) calls, locking startup dimensions purely via CSS resize-handle suppression.
  • Fixed Fullscreen Text Canvas Warping: Dynamically synchronized #textCanvas pixel buffer dimensions before redrawing across Mode 1 and Mode 2 transitions.
  • Fixed Trailing Whitespace Gap: Removed artificial width padding in measureTextDimensions and tightened box...
Read more

Bukaake v0.5.5

Choose a tag to compare

@Crlyzd Crlyzd released this 12 Sep 22:14

🌸 Bukaake v0.5.5 Release Notes

What's Changed in v0.5.5

🪟 Restored Window Edge Resizing in Regular Mode

  • Smooth 8-Direction Window Resizing: When viewing an image in Regular Mode (Mode 1), you can now freely resize the window by clicking and dragging any edge or corner handle (North, South, East, West, and all diagonal corners).
  • Fixed Tauri v2 ACL Permission Boundary: Resolved a silent permission rejection where getCurrentWindow().setResizable(true) was blocked by missing Tauri v2 capabilities (core:window:allow-set-resizable), leaving the native Win32 window locked in a non-resizable state.
  • Dual-Layer IPC Resilience: Hardened tauri-bridge.js with automated fallback to native Rust commands (set_window_resizable and start_window_resize), complete with diagnostic logging rather than silent error suppression.
  • Native Backend Drag Engine: Implemented start_window_resize in Rust using runtime-deserialized ResizeDirection to directly drive Win32 window resize dragging without intermediate DOM lags.

🛡️ Preserved Immersion & Startup Invariants

  • Startup Mode 1 Window Lock: When launched without an image (empty frontpage), Bukaake remains strictly locked to 680×480 with zero resize cursors or accidental drag resizing (body:not(.image-loaded) .resize-handle { display: none !important; }).
  • Picasa-Style Mode 2 Immersion: Fullscreen transparent viewing remains completely borderless and un-distracted, keeping surrounding wallpaper visible with zero resize chrome.
  • Dynamic 60 FPS Canvas Fit: The canvas view automatically refits and recalculates image transform boundaries dynamically during window resize operations.

📦 Technical Details & Commits

  • 666e6b8 — fix locked window resize when there's image being loaded
    • Added "core:window:allow-set-resizable" to src-tauri/capabilities/default.json.
    • Hardened setResizable & startResizeDragging with IPC fallbacks in src/services/tauri-bridge.js.
    • Implemented start_window_resize in src-tauri/src/window_commands.rs.
  • 8afdd67 — feat: bump version to 0.5.5
  • Verified with zero bundle errors (npm run build in 596ms) and zero Rust warnings (cargo check in 1.72s). All files remain strictly under the 300-line modularity threshold.

Bukaake v0.5.4

Choose a tag to compare

@Crlyzd Crlyzd released this 12 Sep 05:08

Bukaake v0.5.4 Release Notes

Tag: v0.5.4
Target Branch: main
Codename: Zero-GPU Idle & Standby Hygiene
Architecture: Windows x64 / ARM64 Portable (Tauri v2 + Rust + Vanilla Web)


🌟 Executive Summary

Bukaake v0.5.4 delivers critical performance and window lifecycle optimizations. This release completely eliminates continuous GPU compositor load during idle startpage states—reducing baseline GPU usage from ~2.6% down to 0.0%—while hardening multi-window tray transitions to ensure all secondary UI surfaces cleanly enter standby alongside the main viewer.


🚀 Key Highlights & Changes

1. ⚡ 0.0% Idle GPU Utilization (CSS Compositor Optimization)

  • Problem: The cosmic drop-zone halo on the startup screen previously ran a continuous 4-second @keyframes cosmicHaloBreath loop with dynamic filter: blur(14px). While visually subtle, this forced the Windows DWM / WebView2 compositor to continuously recalculate multi-layer blur passes at 60 FPS, consuming ~2.6% dedicated GPU resources even when the app was completely idle.
  • Solution: Removed the infinite animation loop from startpage.css in favor of a static, hardware-accelerated ambient halo (opacity: 0.75; transform: scale(1.0)). Dynamic scale and blur transitions (1.16x / 16px) now trigger strictly on user :hover and drag-over interactions via GPU-accelerated CSS transforms.
  • Telemetry Result: Idle GPU utilization dropped to a flat 0.0%, conserving laptop battery and eliminating background rendering overhead.

2. 🪟 Multi-Window Standby Hygiene

  • Standby Coordination: Extended standby.rs so that triggering system tray standby (enter_standby) automatically locates and hides the standalone "settings" window if open.
  • Leak Prevention: Eliminates orphaned settings dialogs remaining visible on screen when closing the main viewer or switching to background tray mode.
  • Memory Trimming Preserved: Windows working set reduction via Win32 K32EmptyWorkingSet remains active, maintaining a trim 8–15 MB RAM footprint in standby.

Bukaake v0.5.3

Choose a tag to compare

@Crlyzd Crlyzd released this 11 Sep 11:57

Bukaake v0.5.3 Release Notes


⚡ Performance Optimization, WebView2 Process Trimming & Universal Clipboard Fix

Release Version: v0.5.3
Target Architecture: Windows 10 / 11 (x64 & ARM64)
Commit Range: v0.5.2...v0.5.3


🌟 Highlights & Overview

Bukaake v0.5.3 delivers significant performance enhancements and reliability fixes focused on sub-process memory reclamation, zero-latency screen snip cropping, universal Windows Clipboard compatibility, and WebView2 engine runtime stability.


🚀 What's New & Key Improvements

1. 🧠 Recursive Multi-Process Memory Trimming (trim_process_tree)

  • Descendant Process Discovery: Implemented a native Win32 toolhelp snapshot routine in src-tauri/src/process_memory.rs using CreateToolhelp32Snapshot and K32EmptyWorkingSet. It recursively traverses and flushes the working sets of both the host Rust process and all child/grandchild msedgewebview2.exe renderer and utility processes.
  • Standby Tray Purging: In standby mode, Bukaake now triggers an explicit V8 garbage collection cycle (window.gc()) followed by an immediate multi-process working set flush, locking idle background memory down to ~8–15 MB RAM.
  • Recording Guard: Automatic memory trimming is dynamically bypassed whenever a screen recording is active (RECORDING_ACTIVE atomic guard) to prevent frame pacing drops or dropped WebM chunks.

2. 📋 Universal Windows Clipboard Compatibility (Win + V)

  • Opaque Bitmap Enforcement: Resolved an issue in src-tauri/src/clipboard.rs where copying screenshots with transparent pixel channels caused Windows Clipboard History (Win + V) and legacy Win32 apps to render black or empty preview tiles.
  • CF_DIB Channel Normalization: Explicitly normalizes all pixels to 100% opacity (pixel[3] = 255) before dispatching image data to the system clipboard via arboard, guaranteeing compatibility across Discord, Slack, WhatsApp, Telegram, and Microsoft Office.

3. ✂️ Zero-Allocation Screen Snip & Cropping Pipeline

  • Instant Preloaded Source Cropping: Updated src/services/screen-capture-service.js and src/components/screen-snipper.js to pass the existing in-memory sourceImg directly into cropCapturedRegion().
  • Eliminated Data URL Re-decoding: Avoids redundant data-URI parsing and HTMLImageElement re-instantiation, delivering near-instant screenshot crops upon mouse release.
  • Visual Responsiveness: Decoupled hideVisuals() from asynchronous image save/clipboard pipelines, ensuring the snipping overlay disappears immediately without visual lag.

4. 🖥️ WebView2 Engine Tuning & Fullscreen Stability

  • Balanced Old-Space Budget: Tuned V8 memory flags from 64MB to 256MB (--max-old-space-size=256), eliminating canvas thrashing and garbage collection spikes when rendering massive camera RAW or high-DPI imagery.
  • Throttling & Freezing Mitigations: Removed --enable-low-end-device-mode and added --disable-background-timer-throttling, --disable-renderer-backgrounding, and --disable-backgrounding-occluded-windows to prevent viewer stutter when switching between windows or entering Mode 2 Fullscreen.
  • Clean Canvas Clearing: Refined src/core/canvas-viewer.js to ensure proper canvas clearing when image buffers are reset.

📦 Detailed Change Log

Component Scope Description
Backend (Rust) process_memory.rs Added recursive WebView2 process discovery & working set memory trimming via Toolhelp32 & K32EmptyWorkingSet.
Backend (Rust) clipboard.rs Enforced 255 alpha channel opacity on write_clipboard_image for universal Win32/Win+V compatibility.
Backend (Rust) main.rs Configured optimized browser flags for WebView2 background execution & streaming capture.
Backend (Rust) standby.rs Swapped direct single-process trimming for comprehensive tree trimming.
Frontend (Services) screen-capture-service.js Direct image object cropping bypasses data-URL string allocation.
Frontend (Services) capture-manager.js Propagates sourceImg to capture service for instant snip resolution.
Frontend (Services) standby-service.js Added explicit window.gc() invocation and Tauri memory trimming on buffer clearing.
Frontend (Components) screen-snipper.js Split hideVisuals() and cleanup() for zero-latency overlay dismissal.
Frontend (Core) canvas-viewer.js Fixed canvas context clearing behavior on null image transitions.
Build & Config Project-wide Synchronized version bump to 0.5.3 across manifests and updater services.