Skip to content

Releases: russellmilliner/duckydeck-studio

DuckyDeck Studio v0.1.6 — New Profile Wizard & Shortcut Drag-and-Drop

Choose a tag to compare

@russellmilliner russellmilliner released this 20 Oct 19:07

What's New in v0.1.6

  • New Profile Wizard Window: A 4-step wizard walking you step-by-step through profile creation (Basics, Target App & Auto-Switch, Appearance/Orientation, and Shortcuts Layout).
  • Online & Local Shortcut Discovery: Pick any window on your desktop to automatically search shortcuts. With explicit user permission, queries Google search for application shortcut cheatsheets, supplemented by local KDE Plasma 6 shortcuts and curated offline catalogs.
  • Drag-and-Drop Key Assignment: Visual 4×5 Key Matrix drop targets allow dragging shortcut cards straight onto any keycap. Dropping sets smart OLED labels and compiles standard DuckyScript 3 instantly.
  • Key Editor Shortcuts Library: Added a dedicated Shortcuts Library tab to the Key Editor sidebar with live window picker, search filter, draggable cards, and an instant 'Apply to Key' button.
  • Hardware Canvas Integration: All keycaps on the main hardware canvas now support drag-and-drop from the shortcuts library.

DuckyDeck Studio v0.1.5 & DDS Firmware v1.1.0

Choose a tag to compare

@russellmilliner russellmilliner released this 20 Oct 18:24

DuckyDeck Studio v0.1.5 & Custom Firmware v1.1.0 (DDS)

Highlights

• Firmware Renamed to DDS:
• Firmware filename prefix is now DDS_FW_ (DDS_FW_1.1.0_b3291568.bin), cleanly distinguishing custom DuckyDeck Studio builds from official dekuNukem (DPP_FW_) releases.
• Older releases have been renamed to DDS_FW_1.0.0_ad2acc81.bin and DDS_FW_1.0.1_bf177326.bin.

• Firmware v1.1.0 Enhancements:
• 12 Native Home Automation OLED Icons: Crisp 1-bit pixel-art icons for lights, switches, locks, sensors, climate, fans, garage, blinds, and cameras.
• SSD1306 SPI DMA Dirty Page Tracking: Differential frame buffer updates eliminate redundant SPI transfers.
• Hardware Smooth RGB LED Fade (SWC_FADE_TO): VM opcode 89 interpolates smooth transitions at 60 FPS in bytecode (.dsb).
• Sub-Millisecond USB HID SOF Spin-Wait: Tight microsecond retry eliminates 1–10 ms FreeRTOS scheduler tick delay.
• Wear-Leveled NVS Profile Cache: Eliminates SD card write blocking during rapid window auto-switching.

• Host Application (v0.1.5):
• Sub-Windows Always-on-Top: Dialogs, builders, and drawers dynamically stay on top whenever the main app is visible.
• Home Automation Icon Picker Tab: Added dedicated category tab with full icon previews and search.
• OLED Input Box Scaling: Dynamic FontMetrics padding and scaling prevent text clipping at high DPI / zoom levels.
• Desktop OLED Widget Enhancements: Fixed-top expansion, distinct pause indicator with matching app color palette, and duckydeck-studio branding icon.
• Key FX Audit & Color Picker: Whole-pad reactive bursts (starlight, pulse, wave_h, wave_v, scanner, ripple, spectrum), custom named palette colors with right-click menu, and standard color name picker.

DuckyDeck Studio Firmware v1.1.0 (DDS_FW_1.1.0_b3291568.bin)

Choose a tag to compare

@russellmilliner russellmilliner released this 20 Oct 18:24

🔧 DuckyDeck Studio Firmware v1.1.0 (DDS_FW_1.1.0_b3291568.bin)

Major custom firmware release for duckyPad Pro (2024) based on upstream duckyPad-Pro 3.3.5 / DSVM v2. To avoid confusion with official dekuNukem firmware, all custom builds are now distinguished by the DDS_FW_ prefix.


✨ Highlights & Enhancements in v1.1.0

  • Distinct DDS_FW_ Firmware Prefix:
    Firmware binaries are now cleanly identified with DDS_FW_, separating DuckyDeck Studio releases from upstream official DPP_FW_ builds while retaining dual-bootloader compatibility for flashing back to official firmware at any time.
  • 12 Native Home Automation OLED Icons:
    Added pixel-art 1-bit monochrome icons for Light Bulb, Light Group, Power Plug/Switch, Lock, Motion Sensor, Security Shield, Thermometer, Thermostat, Fan, Garage Door, Window Blinds, and Surveillance Camera. Embedded in the hardware icon table with ASCII fallback for standard firmware.
  • SSD1306 SPI DMA Dirty Page Tracking:
    Differential screen updating transmits only modified 128×8 byte display pages over SPI DMA via shadow buffer comparison, eliminating redundant traffic when updating clock digits, single key labels, or status icons.
  • Hardware Smooth RGB LED Fade (SWC_FADE_TO):
    Implemented VM opcode 89 (OP_SWC_FADE) with 60 FPS linear interpolation across duration_ms (SWC_FADE_TO <key> <r> <g> <b> <ms>). Runs 100% standalone in bytecode (.dsb) without requiring PC host software.
  • Sub-Millisecond USB HID SOF Dispatch Spin-Wait:
    Tight microsecond spin retry (esp_rom_delay_us(50)) before task yields dispatches packets on the immediate next 1 ms USB SOF boundary without incurring 1–10 ms FreeRTOS scheduler tick delays.
  • Instantaneous Active Profile Switching (NVS Cache):
    Active profile selection is cached in internal wear-leveled flash NVS (dpp_cfg), eliminating blocking FAT32 file writes on profile changes. Rapid window auto-switching switches profiles with zero SD card write latency or wear.

📦 Binary & Checksums

  • Filename: DDS_FW_1.1.0_b3291568.bin (877,280 bytes)
  • IEEE CRC32 (in filename): b3291568
  • SHA-256: 8a861c944f363fbd06104927c3fbd8aaa4ed0cc57dfacdfd290c39165098e68f

DuckyDeck Studio v0.1.4 & Custom Firmware v1.0.1

Choose a tag to compare

@russellmilliner russellmilliner released this 19 Oct 20:08

DuckyDeck Studio v0.1.4 & Custom Firmware v1.0.1

Highlights

  • Custom Firmware v1.0.1 (DPP_FW_1.0.1_bf177326.bin):
    • Fixed USB HID endpoint contention and stuck modifier/key states by waiting for tud_hid_ready() before sending custom HID reports.
    • Automatically calls keyboard_release_all() before switching profiles via HID and when a duckyScript execution aborts or enters sleep.
  • Host USB HID & CPU Optimization (v0.1.4):
    • Eliminated HidApi::new() global USB bus enumeration and interface resets on every background poll by discovering and caching the duckyPad /dev/hidraw* node via sysfs and opening with HidApi::new_without_enumerate(), reducing steady-state background CPU usage from ~45% to 0.0%.
    • Added report-ID filtering (read_hid_report4) and pre-command input draining so keyboard/consumer HID reports on the shared hidraw interface never collide with vendor command ACKs.
    • Added evdev key-activity cooldown tracking so background HID polling yields immediately while keys on the duckyPad are pressed or held.
    • Skipped background _GV31 HTTP trigger polling when the active profile has no Web API / Webhook slots.
  • Flatpak Runtime Update:
    • Upgraded Flatpak runtime from EOL org.kde.Platform//6.8 (24.08) to org.kde.Platform//6.11 (25.08).

DuckyDeck Studio v0.1.3

Choose a tag to compare

@russellmilliner russellmilliner released this 19 Oct 16:09

DuckyDeck Studio v0.1.3

Highlights

  • Regex Window Title Matching: Added opt-in regular expression matching (.* Regex checkbox) with live syntax validation and regex: /.../ rule badges in the Auto-Switcher Rules window.
  • Persistent Collapsible Sections: Added twist minimize/expand controls to the Auto-Switcher enable/timings and rule editor sections, automatically expanding when double-clicking a rule and remembering/restoring section states across restarts.
  • First-Run Hardware & Legacy Config Migration: Added first-run onboarding modal when a duckyPad is detected to import profiles/rules from the deck microSD, dekuNukem configurator backups, or legacy auto-switcher, with conflict detection and one-click shutdown of concurrently running legacy tools.
  • Flatpak & Wayland Enhancements: Fixed KWin auto-switcher D-Bus bridge script paths in Flatpak, added full Flatpak UI test suite (scripts/test-flatpak-ui.sh), and eliminated duplicate window hide DPR warnings on close.

DuckyDeck Studio v0.1.2 — Keycap Layout, Fallback Profile Sync & Desktop Widget Rotation

Choose a tag to compare

@russellmilliner russellmilliner released this 18 Oct 22:11

DuckyDeck Studio v0.1.2

Official release of DuckyDeck Studio (v0.1.2), the native Linux / KDE Plasma 6 (Kirigami) configurator, DSVM v2 bytecode compiler, HTTP REST API server, and KWin Wayland Auto-Switcher for the duckyPad Pro (0x0483:0xd11d) and duckyPad (2020) (0x0483:0xd11c).

What's New in v0.1.2

  • 📦 Native KDE Plasma 6.8 Flatpak Package (io.github.duckydeck.Studio):
    • Single-file Flatpak bundle (duckydeck-studio-v0.1.2-x86_64.flatpak) with full USB HIDraw, UDisks2 USB Mass Storage microSD mounting, KWin Wayland D-Bus scripting (org.kde.KWin), host command execution (org.freedesktop.Flatpak), and embedded DuckyDeck Studio firmware (DPP_FW_1.0.0_ad2acc81.bin).
    • Automatic synchronization of kwin_rules.json across host (~/.config/duckydeck-studio/), Flatpak (~/.var/app/io.github.duckydeck.Studio/config/duckydeck-studio/), and microSD (duckydeck_rules.json) so all custom Auto-Switcher rules are preserved seamlessly.
  • 🚀 First-Run Deck Setup, Legacy Import & Conflicting Software Guard (SdSyncDialog.qml, device_controller.rs):
    • Automatically detects connected duckyPad hardware on first run and prompts to import existing profiles from the deck microSD or dekuNukem configurator backups (~/duckypad_config/profile_backups) as well as dekuNukem's standard auto-switcher rules (config.txt / config.json).
    • Detects if duckypad_config or duckypad_autoprofile is running concurrently and offers a one-click option to shut them down cleanly so USB HID and auto-switching do not conflict.
  • 🪟 Auto-Switcher Rules Window Enhancements (AutoSwitchDrawer.qml):
    • Added ▾ / ▸ twist minimize toggles to the Enable Automatic Profile Switching section and the Add New Window Rule section to maximize vertical space for the configured rules list.
    • Double-clicking any rule in Configured Rules (or clicking Edit Rule, 🎯 Pick Window, or Use Current) automatically expands the Add / Edit Window Rule section.
  • 🎹 Header-Footer Split Keycap Layout (HardwareCanvas.qml):
    • Redesigned mechanical keycaps with a compact top header bar (key number 1..20 on the left + pill-shaped RGB LED color bar on the right), centered 2-line OLED label preview with automatic icon scaling, and a dedicated bottom footer strip (APP / API host badges and ↻ / ⏹ repeat/abort indicators) with zero overlap up to 115%+ UI zoom.
  • 🛡️ Protected Fallback Profile & Auto-Switcher Rule Synchronization (device_controller.rs, auto_switcher.rs):
    • Creating or resetting a profile group always ensures a Default Fallback Profile (★ FALLBACK) exists and protects it from deletion.
    • Reordering or deleting profiles automatically updates all KWin Wayland Auto-Switcher rule bindings (remap_rules_on_profile_reorder, remap_rules_on_profile_delete).
  • 🖥️ Desktop OLED Widget & KDE Plasma Applet 4-Way Rotated Key Labels (OledDesktopWidget.qml, plasmoid/io.github.duckydeck.oled):
    • Per-profile Desktop Widget orientation (Follow OLED, 0°, 90°, 180°, 270°) applies immediately and rotates both the 4×5 key grid coordinates and the text labels inside each key cell.
  • ✨ UI, System Tray & Documentation Enhancements:
    • Added "About DuckyDeck Studio" to the system tray context menu (src/cpp/app_helper.h).
    • Updated all 12 screenshots (1920×1080, 16:9 square-pixel aspect ratio) and the showcase video (docs/duckydeck-studio-demo.mp4).

DuckyDeck Studio v0.1.0 — Source Code Release

Choose a tag to compare

@russellmilliner russellmilliner released this 17 Oct 23:11

DuckyDeck Studio v0.1.0

Official source code release of DuckyDeck Studio, the native KDE Plasma 6 (Kirigami) configurator, DSVM v2 bytecode compiler, HTTP REST API server, and KWin Wayland Auto-Switcher for the duckyPad Pro and duckyPad (2020).

Highlights

  • Website & Online Documentation: https://duckydeckstudio.com
  • UI & Accessibility Enhancements:
    • Enforced minimum 10pt font across all application views and dialogs.
    • Added standard Ctrl++, Ctrl+=, Ctrl+-, and Ctrl+0 zoom shortcuts with automatic disk persistence across restarts.
    • Added vertical & horizontal high-contrast scrollbars to the DuckyScript 3 editor.
    • Made all 24 popup windows, dialogs, drawers, and the OLED Desktop Widget closable via Esc.
  • Automated Test Suite: Full Rust + QML scene-graph and behavioral verification suite (cargo test).

DuckyDeck Studio Firmware v1.0.0 (DDS_FW_1.0.0_ad2acc81.bin)

Choose a tag to compare

@russellmilliner russellmilliner released this 17 Oct 22:07

🔧 DuckyDeck Studio Firmware v1.0.0 (DPP_FW_1.0.0_ad2acc81.bin)

Custom, 100% backwards-compatible firmware build for duckyPad Pro (2024) based on official upstream firmware 3.3.5 (dsvm_version = 2). All existing .dsb bytecode scripts, profiles, RGB settings, and standard duckyPad Pro features work identically to the official firmware while adding hardware support for 1-bit monochrome OLED key icons, UTF-8 glyph-aware key labels, full 4-way physical OLED screen rotation (0°, 90°, 180°, 270°), and USB HID capability auto-detection.


✨ What This Firmware Adds Over Standard Firmware (3.3.5)

Feature / Capability Standard Firmware (3.3.5) DuckyDeck Studio Firmware (1.0.0)
1-Bit Monochrome OLED Key Icons (oled_icons.c / ui_task.c) ❌ ASCII text only (0x20..0x7E); Unicode/emoji symbols are stripped or ignored on hardware. ✅ 3-Tier Crisp Pixel-Art Icon Rendering (35+ built-in icons across Media, Dev, Arrows, System, Browser & Editing):
• Full-Cell 16×16 Icon: Centered in the key box (32×23 normal or 25×28 rotated) when Line 1 is a single icon and Line 2 is empty.
• Top-Line 10×10 Icon + Caption: Centered 10×10 icon on Line 1 above a 7×10 (≤4 chars) or 6×8 (5 chars) text label on Line 2.
• Inline 7×10 / 6×8 Glyphs: Mixed inline with ASCII text labels.
UTF-8 Key Label Decoding & Buffer Size (profiles.h / profiles.c) ❌ KEYNAME_SIZE = 8 bytes with raw byte truncation (str[5] = 0), which slices multi-byte UTF-8 characters. ✅ Expanded KEYNAME_SIZE = 24 bytes with glyph-aware UTF-8 truncation (oled_utf8_truncate_glyphs — 5 glyphs in 0°/180°, 4 glyphs in 90°/270°). Reads ui_z<N> / ui_x<N> directives for icons while keeping z<N> / x<N> ASCII fallbacks for backwards compatibility.
Physical OLED Screen Orientations (ssd1306.c / ui_task.c) ⚠️ 2 Orientations Only: 0° Standard Portrait (IS_LANDSCAPE 0) and 90° Clockwise (IS_LANDSCAPE 1). ✅ Full 4-Way Hardware Rotation (0°, 90°, 180°, 270°):
• Adds 180° Inverted Portrait (IS_LANDSCAPE 2 / OLED_ROTATION 180 via SSD1306_ROTATE_180).
• Adds 270° Counter-Clockwise Landscape (IS_LANDSCAPE 3 / OLED_ROTATION 270 via SSD1306_ROTATE_CCW90 & draw_profile_rotated_ccw with sw_idx = (4 - col) * 4 + row key grid remapping).
USB HID Capability Signature (hid_task.c) Standard GET_INFO (0x00) response (fw 3.3.5). ✅ Reports fw 1.0.0 (dsvm 2) + 'D','D','S' capability signature at HID bytes 19..21 so DuckyDeck Studio automatically badges the status bar and enables 180°/270° & hardware icon sync.

📦 Binary & Checksums

🚀 How to Install

  1. Via DuckyDeck Studio (Recommended): Open 🔧 Firmware in the top toolbar and click ⚡ Install DuckyDeck Studio Firmware (1.0.0).
  2. Manual microSD Card Install: Copy DPP_FW_1.0.0_ad2acc81.bin to the root directory of your duckyPad Pro's FAT32 microSD card, safely eject it, insert it into the duckyPad Pro, and power-cycle the device (or reboot via USB HID). The bootloader verifies the ad2acc81 CRC32 checksum, flashes the firmware, and deletes the .bin file automatically.