ITADN
IceSqueez/forge

版本发布 1

v0.1.0-beta.7预发布
? · 2026-06-07

## [0.1.0-beta.7] - 2026-06-06 ### ⚙️ Miscellaneous Tasks - *(discord)* Remove unused webhook credential loader/writer - *(workspace)* Update Cargo.lock for midir workspace dep - *(workspace)* Update Cargo.lock after MIDI wiring - *(workspace)* Update Cargo.lock after Hotkey wiring - Release - *(deps)* Bump windows from 0.58.0 to 0.62.2 (#22) - *(deps)* Bump twitch_api from 0.7.2 to 0.8.0 (#23) - *(deps)* Bump rhai from 1.25.0 to 1.25.1 (#24) - *(deps)* Bump which from 4.4.2 to 8.0.2 (#25) - *(deps)* Bump mockall from 0.13.1 to 0.14.0 (#26) - Migrate version to workspace and apply formatter - Added assets - *(deps)* Bump midir/global-hotkey/zbus + adapt cpal 0.18 api ### 🐛 Bug Fixes - *(discord)* Strip webhook URL from reqwest error messages - *(discord)* Panic on reqwest client TLS init failure - *(app)* Handle PickerKind::MidiPort in builtin_detail match arms - *(app)* Handle missing existing hotkey id in conflict modal - *(twitch)* Redact bearer token in StoredCredential Debug - *(twitch)* Strip URLs from reqwest error display - *(twitch)* Sanitize HelixRequestError display for token leaks - *(hotkey)* Resolve combo via id lookup in global backend - *(hotkey)* Gate emit_portal_unavailable to linux - *(app)* Add description field for cargo-deb packaging - *(hotkey)* Manually impl send+sync for global backend - *(tts-sapi)* Import BOOL from windows::core for 0.62 - *(tts-sapi)* Pass rust bool to win32 fns for windows 0.62 ### 📚 Documentation - *(release)* Release v0.1.0-beta.7 ### 🚀 Features - *(discord)* Scaffold forge-discord crate skeleton - *(discord)* Add DiscordError + WebhookCredential with redacted Debug - *(discord)* Add DiscordEmbed, DiscordConfig, DiscordClient stub, sink + runners - *(discord)* Add DiscordRateLimiter with global rate-limit tracking - *(discord)* Implement embed control-character validation - *(discord)* Implement webhook HTTP post with rate-limit + retry - *(discord)* Impl BuiltinStatus + Health + Content + QuickActions - *(app)* Add discord_client field to RuntimeView - *(app)* Add Discord boot handler and DiscordClientRef in message - *(app)* Register Discord sub-actions at startup - *(midi)* Scaffold forge-midi crate skeleton - *(midi)* Add MidiError, MidiEvent, MidiOutMessage, MidiPortInfo types - *(midi)* Add MidiBackend trait with MidirBackend impl and PickerKind::MidiPort - *(midi)* Implement MIDI byte decoding with message_to_bytes - *(midi)* Implement supervisor with hot-plug detection and event dispatch - *(midi)* Implement BuiltinStatus/Health/Content/QuickActions and MidiSink - *(midi)* Add MidiSend sub-action runner - *(midi)* Add MidiNoteOn/NoteOff/Cc trigger descriptors - *(app)* Add midi_client field to RuntimeView - *(app)* Add MIDI boot handler and MidiClientRef in message - *(app)* Register MIDI sub-actions and triggers at startup - *(hotkey)* Scaffold crate with error, combo, and config - *(hotkey)* Add HotkeyBackend trait with NullBackend and test mocks - *(hotkey)* Implement PortalBackend with NameOwnerChanged recovery - *(hotkey)* Implement EvdevBackend as Linux fallback - *(hotkey)* Implement GlobalHotkeyBackend for Windows and macOS - *(hotkey)* Implement HotkeyClient with supervisor and health state - *(hotkey)* Add HotkeyPressed trigger and sub-action registration - *(hotkey)* Implement BuiltinStatus, BuiltinContent, and QuickActions - *(app)* Add hotkey_client field to RuntimeView - *(app)* Add Hotkey boot handler and HotkeyClientRef in message - *(app)* Register Hotkey triggers and spawn HotkeyClient at startup - *(widgets)* Add KeyCapture widget for hotkey combo input - *(app)* Add Settings → Hotkeys screen ### 🚜 Refactor - *(midi)* Downgrade MidiBackend trait visibility ### 🛠️ Build - *(release)* Replace cargo-dist with hand-rolled gui packaging matrix - Optimize build workflow and pass secrets - *(release)* Install rust toolchain from rust-toolchain.toml ### 🧪 Testing - *(discord)* Add wiremock delivery, rate-limit, and embed HTTP tests - *(discord)* Assert webhook URL never appears in error display ## Downloads | File | Platform | SHA-256 | | :--- | :--- | :--- | | [`forge-0.1.0-beta.7+28-linux-x64.AppImage`](https://github.com/IceSqueez/forge/releases/download/v0.1.0-beta.7/forge-0.1.0-beta.7+28-linux-x64.AppImage) | Linux x64 (AppImage, portable) | `8d629d5544554a257e77a3609f60fbdd480692dab99c7aac1c7cffbb854ed822` | | [`forge-0.1.0-beta.7+28-linux-x64.deb`](https://github.com/IceSqueez/forge/releases/download/v0.1.0-beta.7/forge-0.1.0-beta.7+28-linux-x64.deb) | Linux x64 (Debian / Ubuntu) | `894925b65015d4ea325ae5020aab54203b507154f99a1eee0c354a221f35bfc2` | | [`forge-0.1.0-beta.7+28-linux-x64.rpm`](https://github.com/IceSqueez/forge/releases/download/v0.1.0-beta.7/forge-0.1.0-beta.7+28-linux-x64.rpm) | Linux x64 (Fedora / RHEL / openSUSE) | `79dc0000487498303125650a9335b05263e2d1e4de594d82169b32ed0c831c35` | | [`forge-0.1.0-beta.7+28-macos-universal.dmg`](https://github.com/IceSqueez/forge/releases/download/v0.1.0-beta.7/forge-0.1.0-beta.7+28-macos-universal.dmg) | macOS (Apple Silicon + Intel) | `3cdeed1942522493f823b6fded3d18802fa2bc834e37cb73731d7543983811d3` | | [`forge-0.1.0-beta.7+28-windows-x64.msi`](https://github.com/IceSqueez/forge/releases/download/v0.1.0-beta.7/forge-0.1.0-beta.7+28-windows-x64.msi) | Windows x64 (installer) | `e2599a35bb842342cc781bfae4169bc5012a370e752cf0538d1bf29db1c6f993` | | [`forge-0.1.0-beta.7+28-windows-x64.exe`](https://github.com/IceSqueez/forge/releases/download/v0.1.0-beta.7/forge-0.1.0-beta.7+28-windows-x64.exe) | Windows x64 (portable) | `138a2751d22a21881457ac807d539d37c9ea28cfede5837c875d37a0f8acebad` | _Each binary ships with a matching `<file>.sha256` sidecar for offline verification._