fix(ui): remove bottom bar under cards, fix dropdown alignment and prevent card shift; bump v0.2.5
Some checks are pending
Release & Packaging / Build Linux Packages (.tar.gz, .deb, .rpm, .AppImage) (push) Waiting to run
Release & Packaging / Build Windows Binaries (.exe) (push) Waiting to run
Release & Packaging / Publish GitHub Release (push) Blocked by required conditions

This commit is contained in:
katR 2026-09-06 20:50:34 +05:30
parent 80f489e2fa
commit 6be83b21e6
4 changed files with 21 additions and 29 deletions

View file

@ -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/*

2
Cargo.lock generated
View file

@ -3700,7 +3700,7 @@ dependencies = [
[[package]]
name = "scythe"
version = "0.2.4"
version = "0.2.5"
dependencies = [
"ashpd",
"cpal",

View file

@ -1,6 +1,6 @@
[package]
name = "scythe"
version = "0.2.4"
version = "0.2.5"
edition = "2024"
[[bin]]

View file

@ -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,