From 6be83b21e6eefe29a91f66ec6ce619b042da814b Mon Sep 17 00:00:00 2001 From: oiupoyt Date: Sun, 6 Sep 2026 20:50:34 +0530 Subject: [PATCH] fix(ui): remove bottom bar under cards, fix dropdown alignment and prevent card shift; bump v0.2.5 --- .github/workflows/release.yml | 23 +++++++---------------- Cargo.lock | 2 +- Cargo.toml | 2 +- src/overlay_egui.rs | 23 ++++++++++++----------- 4 files changed, 21 insertions(+), 29 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fcbb83c..c3b6532 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -183,26 +183,17 @@ jobs: - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: - tag_name: ${{ github.ref_name != 'main' && github.ref_name || 'v0.2.2' }} - name: "Scythe ${{ github.ref_name != 'main' && github.ref_name || 'v0.2.2' }}" + tag_name: ${{ github.ref_name }} + name: "Scythe ${{ github.ref_name }}" body: | High-performance GPU hardware screen recorder and instant replay overlay for Linux and Windows. - ### What's New in v0.2.2 - - **Windows Overlay Transparency**: Fixed DWM opacity issue where the overlay showed an opaque black screen instead of a translucent frosted background. - - **Windows Global Hotkeys**: Added dedicated Win32 message pump so global hotkeys (`Alt+Z`, `Ctrl+Shift+R`, etc.) register and trigger reliably across all Windows applications and games. - - **Dynamic Hotkey Reloading**: Changes to hotkey bindings in Settings take effect immediately in the background without needing a restart. - - **Fixed Notification Duplication & Hang**: Eliminated duplicate in-HUD toast instances and fixed toast freeze issues by ensuring isolated processes with auto-closing watchdog timers. - - **Working Folder Options**: Fixed 'Open' and 'Change' folder dialogs on Windows with top-most STA PowerShell picker and visible Explorer launching. - - **Zero-Latency UI Buttons & Key Recording**: All daemon communication from UI buttons is now asynchronous, and key listening repaints with 0ms delay. - - **Reduced Windows Installer Size**: Enabled Solid LZMA compression in NSIS and stripped symbols from Windows binaries and DLLs. - ### Packages - - Windows: `scythe-setup.exe` (Official installer with Start Menu & Desktop shortcuts) - - Universal Linux: `scythe-x86_64.AppImage` - - Debian / Ubuntu / Mint: `scythe_*_amd64.deb` - - Fedora / RHEL / openSUSE: `*.rpm` - - Generic Linux: `scythe-linux-x86_64.tar.gz` + - **Windows**: `scythe-setup.exe` (Official installer with Start Menu & Desktop shortcuts) + - **Universal Linux**: `scythe-x86_64.AppImage` + - **Debian / Ubuntu / Mint**: `scythe_*_amd64.deb` + - **Fedora / RHEL / openSUSE**: `*.rpm` + - **Generic Linux**: `scythe-linux-x86_64.tar.gz` files: | artifacts/linux-packages/* artifacts/windows-packages/* diff --git a/Cargo.lock b/Cargo.lock index 6a3c3c2..e1bab06 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3700,7 +3700,7 @@ dependencies = [ [[package]] name = "scythe" -version = "0.2.4" +version = "0.2.5" dependencies = [ "ashpd", "cpal", diff --git a/Cargo.toml b/Cargo.toml index 629d135..f9e4990 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "scythe" -version = "0.2.4" +version = "0.2.5" edition = "2024" [[bin]] diff --git a/src/overlay_egui.rs b/src/overlay_egui.rs index b4e5250..d894e91 100644 --- a/src/overlay_egui.rs +++ b/src/overlay_egui.rs @@ -597,12 +597,6 @@ fn render_action_card( }; let painter = ui.painter(); - // Drop shadow - painter.rect_filled( - rect.translate(Vec2::new(0.0, 6.0)), - CornerRadius::ZERO, - Color32::from_rgba_unmultiplied(0, 0, 0, 110), - ); // Card background - SQUARED painter.rect(rect, CornerRadius::ZERO, bg, Stroke::new(1.0_f32, border), egui::StrokeKind::Inside); @@ -647,16 +641,17 @@ fn render_dropdown_menu( accent: Color32, add_contents: impl FnOnce(&mut egui::Ui), ) { - ui.add_space(4.0); + ui.add_space(6.0); + let inner_w = card_width - 2.0; egui::Frame::NONE - .fill(Color32::from_rgba_unmultiplied(12, 13, 17, 210)) + .fill(Color32::from_rgba_unmultiplied(12, 13, 17, 225)) .stroke(Stroke::new(1.0_f32, Color32::from_rgba_unmultiplied(accent.r(), accent.g(), accent.b(), 180))) .corner_radius(CornerRadius::ZERO) .inner_margin(Margin::ZERO) .show(ui, |ui| { ui.spacing_mut().item_spacing = Vec2::ZERO; - ui.set_min_width(card_width); - ui.set_max_width(card_width); + ui.set_min_width(inner_w); + ui.set_max_width(inner_w); add_contents(ui); }); } @@ -991,12 +986,14 @@ impl ScytheOverlayApp { } } - ui.horizontal(|ui| { + ui.horizontal_top(|ui| { // ========================================================================= // CARD 1: INSTANT REPLAY // ========================================================================= ui.vertical(|ui| { ui.set_width(card_w); + ui.set_min_width(card_w); + ui.set_max_width(card_w); let card1_clicked = render_action_card( ui, card_w, @@ -1046,6 +1043,8 @@ impl ScytheOverlayApp { // ========================================================================= ui.vertical(|ui| { ui.set_width(card_w); + ui.set_min_width(card_w); + ui.set_max_width(card_w); let rec_status_str = if is_recording { let mins = rec_dur / 60; let secs = rec_dur % 60; @@ -1098,6 +1097,8 @@ impl ScytheOverlayApp { // ========================================================================= ui.vertical(|ui| { ui.set_width(card_w); + ui.set_min_width(card_w); + ui.set_max_width(card_w); let card3_clicked = render_action_card( ui, card_w,