Repository navigation
Release 1.0.0
Overview
This is the first major release of KeyTone, marking a milestone of stability and completeness. It brings a series of significant new features, and extensive stability improvements accumulated since v0.6.0.
✨ New Features
🖱️ Mouse Button Sound Support & Keyboard/Mouse Album Separation
KeyTone now supports custom sound effects for mouse buttons. Mouse key sounds can be configured in the key sound album editor, just like keyboard keys.
Alongside this, a new Keyboard/Mouse Album Separation mode has been introduced on the main page:
- In Unified Mode (default), a single album covers both keyboard and mouse events — maintaining backward compatibility.
- In Separation Mode, independent album selectors are provided for keyboard and mouse respectively, allowing users to freely mix and match their preferred sound packages.
- In separation mode, independent volume controls are available for keyboard and mouse separately, stacking with the global volume slider.
- An optional "Mouse fallback to keyboard album" setting is available — when the mouse album is missing in separation mode, it can fall back to the keyboard album instead of the built-in test sound.
🎛️ Waveform Visual Trimmer
The Define and Trim Sounds (Step 2) dialog now features a built-in waveform visualization component:
- Displays the waveform of the selected audio source file, with support for zooming and scrolling.
- Drag a selection region on the waveform to visually define the trim range; it stays in two-way sync with the numeric start/end time inputs.
- A right-click quick selection gesture (right-click to set start, drag to update end, release to confirm end) resolves the pain point of overlapping handles near the start position.
- Built-in frontend audio preview player (independent of SDK preview), supporting pause, draggable playhead, and range playback (full or selection).
- A draggable volume pointer bar in the waveform area allows intuitive dB-based volume adjustments (±18 dB visual range; left axis shows 18/12/6/0/-6/-12/-18 tick marks; right side displays the current dB value).
Ctrl + Mouse Wheelshortcut for smooth waveform zooming, anchored to the cursor position.- A Waveform Scroll Behavior preference has been added in Settings (under "Key Sound Album Related"):
- Paged Jump (default): viewport flips when the playhead passes the right edge, classic DAW style.
- Smart Edge Push: playhead moves freely in the 0–85% zone and the viewport smoothly follows near the right edge.
- The existing numeric input trimming workflow is fully preserved; the waveform component is an enhancement, not a replacement.
🔊 Press/Release Independent Volume Control
In Settings → Main Page Related, a new Press/Release Independent Volume Control master switch (off by default) unlocks per-direction volume tuning:
- Set separate volume adjustments (dB) for key-press (down) and key-release (up) events, globally and per keyboard/mouse device.
- Each direction supports its own volume adjustment slider, maximum attenuation input, and a debug slider toggle.
- Volume stacking order: global volume → keyboard/mouse split volume (if enabled) → press/release volume layer (if enabled).
- When this switch is off, behavior is identical to the previous version — no impact on existing settings.
🎲 Global Random Volume Variation (Main Page)
A new random volume variation option is available in Settings → Main Page Related. When enabled, each keystroke plays with a subtle, randomized volume reduction, making repetitive typing feel more natural and lively without changing the overall volume level.
For per-direction control, a secondary Press/Release Random Volume Independent Control switch (off by default) unlocks six independent nodes — global down/up, keyboard down/up, mouse down/up — each with its own enable switch and max attenuation range input. When both global random and press/release random are active, their attenuation values stack.
🔍 Sound Selector Search
The sound/album selector components in the key sound album editor now include a built-in search box, allowing quick filtering by name across large lists — audio source files, defined sounds, and premium key sounds are all searchable.
🔐 Album Signature & Authorization System
KeyTone now includes a comprehensive album signature and authorization system for .ktalbum files:
- Album authors can create personal signature keys on the Signature Management page to sign albums during the export process, providing a verifiable, tamper-proof identity seal.
- The Signature Info Dialog within the export workflow guides authors through the album signing process.
- The Album Import/Apply Process verifies signatures and clearly indicates whether an album is signed.
- Albums can be configured to Require Authorization for export, giving content creators control over the secondary distribution of their work.
- When Require Authorization is selected, a mandatory Contact Info Dialog will appear. Authors can provide an email or additional contact details to facilitate user inquiries and feedback.
- When No Authorization Required is selected, an optional Contact Info Dialog will appear. Authors may choose to provide contact details or simply skip this step.
🔒 Album Configuration Encryption
Album configuration data stored within the .ktalbum package is encrypted when a signature is required. This provides an additional layer of protection against unauthorized viewing or modification of the original album data.
🌍 13+ Languages with RTL Support
KeyTone now ships with 16 UI language options:
Chinese (Simplified), Chinese (Traditional), English, Japanese, Korean, German, French, Spanish, Italian, Portuguese, Portuguese (Brazil), Russian, Polish, Turkish, Vietnamese, Indonesian, Arabic (MSA, with full RTL layout support).
The language selector intelligently handles multi-country same-language entries, presenting a clean unified list.
💻 Windows on ARM (arm64) support
KeyTone now provides native support for Windows on ARM (arm64):
- Released native arm64 builds and installers so users can install and run directly on ARM-based Windows devices without relying on x86/x64 emulation.
- Compatibility testing completed to ensure core features (keyboard/mouse sound playback, waveform trimming, album import/export, signature verification, etc.) work correctly.
🛠️ History of Stability & Performance Fixes
- Memory leak fix: Resolved a memory leak in the
beepaudio library dependency caused by improper stream management in the SDK. - Audio deletion deadlock fix: On Windows, audio streams that were still in use could prevent file deletion. A global "stop all active streams" mechanism now ensures clean deletion.
- Concurrent safety: Reworked critical sections in the SDK to eliminate potential panics and deadlocks during concurrent album operations.
- Log rotation: Added file-size-based log rotation and a retention-day cleanup policy to prevent unbounded log growth.
- Distorted audio panic fix: Corrupted or low-quality audio source files no longer cause a panic during trimmed playback.
- Album import/overwrite: Fixed rare cases where overwriting an existing album left stale data or failed silently.
- Deleted sound reference stability: Fixed a cascade of UI crashes triggered by deleting audio sources, defined sounds, or premium key sounds that were still referenced.
- Single-key recording: Fixed an intermittent failure on Windows where single-key recording silently dropped key events; also fixed mouse left-button incorrectly being auto-recorded when enabling single-key auto-record.
- Taskbar window close/hide: Fixed a two-click issue when hiding the minimized window via the taskbar on Windows, and the window size shrinking on re-open.
please note
Although the release assets of this version include multi-platform packages, it does not mean that KeyTone already supports multiple platforms.
At this stage, the main focus is still on feature development, and this process is carried out under Windows.
In other words, this version of the KeyTone package only guarantees the usability and functionality completeness of the software under Windows. The packages for other platforms only follow the most basic build packaging and have not undergone any related testing.
When will other platforms besides Windows be supported?
A: The current version has not been officially adapted for Linux and MacOS platforms. We expect to consider formal adaptation work after version 1.0.0.
Starting from version 0.5.0, we conducted some basic testing for KeyTone on the macOS platform, confirming that it can run normally on macOS. However, this does not mean that KeyTone has been officially adapted for the macOS platform.
Security
The SHA256 hash sum
KeyTone-1.0.0-win-x64.exe is:
e89f4e2f1b1d7a89de573e7c9a3fdfe75c779c4237f32558446c6174e53e2dfe
KeyTone-1.0.0-win-arm64.exe is:
74aa6fda6b8788a035f56226b62691e187679eb77ae9909557777eeb495652aa
KeyTone-1.0.0-linux-x64.tar.gz is:
db6b2693a30b214c6198c3f2fc95682b2e61d6daeb5cddc6881abb2bcc573120
KeyTone-1.0.0-linux-x64.AppImage is:
9574835ae4865c15f1219f2b36a738e7837cb1a71470dabe0bbfa5825701cd7c
KeyTone-1.0.0-linux-x64.deb is:
ef8aa45feea5907d860ceece7bcc745af846545f25464bd599239222273fd604
KeyTone-1.0.0-mac-x64.dmg is:
5ec0346435bd629040c1f3b0dc0c14f53a4259af529b52b84e9805c39f34eda8
KeyTone-1.0.0-mac-arm64.dmg is:
7bfb2876b542fdf4a283f323adb779ce0055e5819427dfc6a45f27c729b25cfb
The MD5 hash sum
KeyTone-1.0.0-win-x64.exe is:
53a89869c94af313d47dcf871547aa91
KeyTone-1.0.0-win-arm64.exe is:
0017ebe441c4f17fbfa4f703abaf5fac
KeyTone-1.0.0-linux-x64.tar.gz is:
7c792cbf9317597f9b3d6ce86165aabc
KeyTone-1.0.0-linux-x64.AppImage is:
5953e6eaf6d7fc5cbc33955a0e87f925
KeyTone-1.0.0-linux-x64.deb is:
dc09b748da563d6a343b990887331b0e
KeyTone-1.0.0-mac-x64.dmg is:
91ac62c1760980343062751cbae08711
KeyTone-1.0.0-mac-arm64.dmg is:
1966efdbb2177eea31feeae22c534fd2
Changelogs
Bug Fixes
- Continued fixing the top border affecting label rendering, ensuring visual consistency even during click interactions. (2e55cb9)
- Fixed an issue where the scrollbar of
q-selectdisplayed incorrectly after introducing the search feature. (b3bde51) - Fixed an issue where switching playback mode while editing an existing advanced key sound did not take effect. This fix ensures proper config persistence by supporting both string and object structures. (56a1462), closes #123
- Fixed and optimized the main page album selector styles, especially for i18n support. Adjusted component styles to handle long labels and resolved a visual issue where the top border affected signature labels during focus. (105d6f4)
- Fixed a waveform visualization issue where short audio clips left blank space at low zoom levels due to insufficient width, causing inaccurate right-click selections. Resolved by setting
fillParentto true. (4522921) - Fixed an unintuitive bug where deleting and re-importing the same audio source file (same
sha256) could cause previously missing references to automatically relink to a new alias slot without user action. (e04965a), closes #131 - Fixed a UI issue where the email input field shifted upward in the export authorized contacts dialog. (6181893)
- Fixed a bug where clicking “View Details” in the album selector did not trigger the dialog. Resolved using
pointerdown.captureto prevent event bubbling and ensure proper dialog opening. (d045b2c) - Fixed a UI bug where selection regions failed to stay attached to the waveform under heavy zoom. Caused by a
getWrapper()width issue inside the Shadow DOM in WaveSurfer v7, which led to incorrect region calculations. (d6e73a0) - Fixed styling issues in the audio source file selection dialog and restored dynamic height behavior. Also added a dialog-level scroll area and bottom frosted sticky action bar for improved UX. (3922b20)
- Fixed mute mode persistence when the main volume was not at 0%. (a312864)
- Improved the signature badge style in the album selector (top-right corner), refining background color and border radius to eliminate a rectangular black box visual bug. (a46319a)
- Optimized context menu positioning logic by dynamically measuring menu width and height to prevent overflow near the bottom of the screen after adding new menu items. (4eb7547)
- Fixed animation when expanding images in the album signature info dialog; simplified fingerprint viewing in the signature management page. (42be6cc)
- App.vue: Optimized debounce logic for SSE data handling, clarifying that it ensures eventual consistency only. (6f3747c)
- electron-main: Updated sdk-debug path configuration to correctly point to the Config and AudioPackage directories, preventing debugging errors. (6444aca)
- Dropdown sorting: Implemented natural alphanumeric sorting. (ab25a2b), closes #104 #105
- openspec: Removed all uncontrollable code generated during openspec usage (including data structures and core data flow logic), retaining only UI implementations and basic interaction logic. Documentation remains archived. (a2195df)
- openspec: Iteratively refined the previous spec implementation; overall UI style and business logic of list items now meet initial requirements. (38501ed)
- openspec: Further refinements to enhance the signature management dialog UX. (cb8c017)
- release-build: Fixed a production bug where the signature management page failed due to incorrect macOS system detection logic. (74bdc3a)
- sdk: 1. Added a thread-safe key sound package deletion function to fix crashes caused by frequent create/delete operations. 2. Improved critical section locking scope to prevent potential deadlocks and panics. (c769fe7)
- signature-macos: Adjusted input field styling for macOS where text appeared vertically misaligned. (14afb7e)
- signature: Adjusted import dialog width for improved UX. (1c9fd60)
- signature: Updated signature card image naming from SHA-1 to UUID-based SHA-1 to avoid shared image reuse conflicts. (60565a3)
- signature: Updated missing card image prompt and adjusted signature data structure to allow null card fields. (bb64801)
- signature: Refined right margin spacing and hid bottom scrollbar in the signature management page. (40fa07b)
- signature: Replaced naive full updates with incremental updates, fully eliminating flicker during add/delete/manual sort operations. (68308cb)
- signature: Fixed premature export success notification; improved export using File System Access API; completed i18n for import conflict dialog. (9cad13e)
- signature: Fixed missing scrollbar for overflowing personal description text in signature list items. (fdb7e5b)
- signature: Fixed incremental update not supporting sorting, which could break SSE eventual consistency in rare cases. (7f15993)
- signature: Replaced problematic
q-menuwith a custom context menu component to eliminate flicker and improve UX. (cab7618) - signature: Optimized list refresh logic after deletion and form submission to avoid incremental updates during sorting. (67d3e49)
- signature: Optimized drag-and-drop sorting to avoid unnecessary updates. (2794eb7)
- signature: Enhanced drag sorting feedback with real-time insertion indicators. (b38c09d)
- signature: Increased dragged element z-index for smoother visual experience. (3986552)
- signature: Added opacity effects during drag operations to enhance UX. (deae8ca)
- viper: Removed unnecessary log outputs to avoid performance impact. (4f11595)
Features
- Atmosphere: Further implemented and refined the signature dialog UI and interaction logic during album export. (07248b3)
- Added keyboard/mouse playback routing, allowing users to use keyboard config from Album A and mouse config from Album B. (5f28258), closes #122
- Added core signature features including authorization requests, request handling, and authorization import workflows. (3005c0f)
- Added fallback-to-keyboard-album option in Separation Mode when mouse album is missing (disabled by default for strict separation; can be enabled in Settings → Main Page Related). (f03f2ab), closes #122
- Added optional contact information dialog for non-authorization scenarios. (727452a)
- Added search functionality to the key sound album selector. (7d1d644)
- Added independent keyboard/mouse volume controls in Separation Mode. (c8879e3), closes #126
- Added random volume feature in Settings → Main Page Related, including separate randomization for key down/up events. (c6eb25b), closes #99
- Display signature author information in the main page album selector. (970632e)
- Added signature badges and hover cards in album selector consistent with the main UI. (c307c4a)
- Added independent volume control for key down/up events. (bbb5647), closes #98
- openspec: Initial 0–1 phase implementation of signature management features based on original spec and partial revisions. (dd2afab)
- signature: Allow scrolling for overflowing name/description text in list items. (27301be)
- signature: Implement drag-and-drop sorting with backend persistence. (fcba9d1)
- signature: Added export confirmation dialog with enhanced security messaging. (8e126dc)
- signature: Added cleanup for orphaned signature card images not referenced in config. (baf1934)
- signature: Added transition animations to signature list items. (2de9c3b)
- signature: Reimplemented signature creation workflow. (77c8db8)
- signature: Reimplemented signature editing with support for updating description and card image. (9535840)
- signature: Reimplemented signature export/import with conflict resolution and overwrite options. (0e5c462)
- signature: Reimplemented signature deletion and fixed context menu positioning bug. (5e2019a)
- signature: Rebuilt signature list preview logic, including decryption and card image loading. (9319930)