Skip to content

Commit 6bf22d9

Browse files
committed
Merge branch 'master' into release
2 parents afa0741 + aa7b779 commit 6bf22d9

114 files changed

Lines changed: 2453 additions & 980 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.24.0] - 2026-02-14
11+
12+
### Added
13+
14+
- **DeepL Translation Automation:** Added `i18n-translate` tooling to translate locale keys from `en-US` via DeepL with header-based authentication, placeholder preservation, retry handling, and parser-error fallback behavior.
15+
- **Reusable Tooltip Component:** Added `ui/Tooltip.svelte` with configurable side variants via `class-variance-authority`, arrow rendering, Svelte transition animation, and delayed-first-hover behavior with instant trigger-to-trigger switching.
16+
- **Stream Copy / Remux Mode:** Added a new `Cut / Stream Copy` processing mode for trim + remux workflows without re-encoding (`-c copy`), including queue/config support across frontend and backend.
17+
18+
### Changed
19+
20+
- **Neumorphic UI Redesign:** Reworked the app shell and core UI controls in a neumorphic style across dashboard/settings/logs/titlebars, including updated surface tokens (`background`/`sidebar`) and new shared highlight treatments for cards, buttons, and inputs.
21+
- **Translation Workflow Commands:** Added `i18n:translate`, `i18n:translate:write`, `i18n:translate:rewrite`, and `i18n:sync:auto` scripts plus updated contributor workflow documentation.
22+
- **Non-English Locale Consistency:** Re-translated all non-source locale files from the current `en-US` dictionary baseline to reduce cross-locale copy drift.
23+
- **App Settings Language Hover UI:** Replaced inline CSS hover labels in language selection with the shared tooltip component for consistent interaction behavior.
24+
- **Shared Media Rules (Copy Validation):** Extended `media-rules.json` with stream-level container compatibility tables (video/audio/subtitle) and applied them in both UI container availability and backend preflight validation for stream copy tasks.
25+
26+
### Fixed
27+
28+
- **Input Placeholder Contrast:** Increased placeholder/readability contrast in shared text and timecode inputs and aligned subtitle burn file picker text to foreground color for better visibility.
29+
1030
## [0.23.2] - 2026-02-14
1131

1232
### Fixed
@@ -587,7 +607,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
587607
- Automatic media metadata probing via FFprobe.
588608
- Preset-based configuration system.
589609

590-
[Unreleased]: https://github.com/66HEX/frame/compare/0.23.2...HEAD
610+
[Unreleased]: https://github.com/66HEX/frame/compare/0.24.0...HEAD
611+
[0.24.0]: https://github.com/66HEX/frame/compare/0.23.2...0.24.0
591612
[0.23.2]: https://github.com/66HEX/frame/compare/0.23.1...0.23.2
592613
[0.23.1]: https://github.com/66HEX/frame/compare/0.23.0...0.23.1
593614
[0.23.0]: https://github.com/66HEX/frame/compare/0.22.0...0.23.0

CONTRIBUTING.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ Before submitting a PR, please ensure:
8080
- Validate locale integrity and sync rules: `bun run i18n:check`.
8181
- Preview sync changes in other locales: `bun run i18n:sync`.
8282
- Apply sync changes (fills missing keys with TODO-marked English fallback, removes stale keys): `bun run i18n:sync:write`.
83+
- Configure DeepL access: export `DEEPL_API_KEY=...`.
84+
- Translate only new TODO/missing keys from `en-US`: `bun run i18n:translate:write`.
85+
- Re-translate all non-source locale keys from `en-US`: `bun run i18n:translate:rewrite`.
86+
- One-shot sync + auto-translate for new keys while developing: `bun run i18n:sync:auto`.
8387

8488
## Pull Request Process
8589

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<div align="center">
2-
<img src="./icon.png" width="128" height="128" alt="Frame Icon" />
2+
<img src="./icon.png" width="256" height="256" alt="Frame Icon" />
33
<h1>Frame</h1>
44
</div>
55

@@ -65,7 +65,7 @@ See [GitHub Sponsors](https://github.com/sponsors/66HEX) for full sponsorship de
6565
- `vp9` (Google VP9)
6666
- `prores` (Apple ProRes)
6767
- `libsvtav1` (Scalable Video Technology AV1)
68-
- **Hardware Acceleration:** `h264_videotoolbox` (Apple Silicon), `h264_nvenc` (NVIDIA).
68+
- **Hardware Acceleration:** `h264_videotoolbox` (Apple Silicon), `hevc_videotoolbox` (Apple Silicon), `h264_nvenc` (NVIDIA), `hevc_nvenc` (NVIDIA), `av1_nvenc` (NVIDIA).
6969
- **Audio Encoders:** `aac`, `ac3` (Dolby Digital), `libopus`, `mp3`, `alac` (Apple Lossless), `flac` (Free Lossless Audio Codec), `pcm_s16le` (WAV).
7070
- **Bitrate Control:** Constant Rate Factor (CRF) or Target Bitrate (kbps).
7171
- **Scaling:** Bicubic, Lanczos, Bilinear, Nearest Neighbor.
@@ -86,7 +86,7 @@ See [GitHub Sponsors](https://github.com/sponsors/66HEX) for full sponsorship de
8686
- **Runtime:** `tokio` (Async I/O).
8787
- **Serialization:** `serde`, `serde_json`.
8888
- **Process Management:** `tauri-plugin-shell` for sidecar execution (FFmpeg/FFprobe).
89-
- **System Integration:** `tauri-plugin-dialog`, `tauri-plugin-fs`, `window-vibrancy`.
89+
- **System Integration:** `tauri-plugin-dialog`, `tauri-plugin-fs`, Tauri window effects API (`tauri::window::set_effects`).
9090
9191
### Frontend (SvelteKit)
9292

icon.png

1.07 MB
Loading

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "frame",
3-
"version": "0.23.2",
3+
"version": "0.24.0",
44
"private": true,
55
"type": "module",
66
"scripts": {
@@ -15,6 +15,10 @@
1515
"i18n:check": "node scripts/i18n-check.mjs",
1616
"i18n:sync": "node scripts/i18n-sync.mjs",
1717
"i18n:sync:write": "node scripts/i18n-sync.mjs --write",
18+
"i18n:translate": "node scripts/i18n-translate.mjs",
19+
"i18n:translate:write": "node scripts/i18n-translate.mjs --write",
20+
"i18n:translate:rewrite": "node scripts/i18n-translate.mjs --write --rewrite-existing",
21+
"i18n:sync:auto": "node scripts/i18n-sync.mjs --write && node scripts/i18n-translate.mjs --write",
1822
"tauri": "tauri",
1923
"setup:ffmpeg": "node scripts/setup-ffmpeg.cjs",
2024
"setup:upscaler": "node scripts/setup-upscaler.cjs"

preview.png

-212 KB
Loading

readme/de-DE.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
- `vp9` (Google VP9)
4848
- `prores` (Apple ProRes)
4949
- `libsvtav1` (SVT-AV1)
50-
- **Hardware-Beschleunigung:** `h264_videotoolbox` (Apple Silicon), `h264_nvenc` (NVIDIA)
51-
- **Audio-Encoder:** `aac`, `ac3` (Dolby Digital), `libopus`, `mp3`
50+
- **Hardware-Beschleunigung:** `h264_videotoolbox` (Apple Silicon), `hevc_videotoolbox` (Apple Silicon), `h264_nvenc` (NVIDIA), `hevc_nvenc` (NVIDIA), `av1_nvenc` (NVIDIA)
51+
- **Audio-Encoder:** `aac`, `ac3` (Dolby Digital), `libopus`, `mp3`, `alac` (Apple Lossless), `flac` (Free Lossless Audio Codec), `pcm_s16le` (WAV)
5252
- **Bitratenkontrolle:** Konstante Qualität (CRF) oder Ziel-Bitrate (kbps)
5353
- **Skalierung:** Bikubisch, Lanczos, Bilinear, Nächster Nachbar
5454
- **Metadaten-Analyse:** Automatische Extraktion von Stream-Informationen via `ffprobe`
@@ -68,7 +68,7 @@
6868
- **Runtime:** `tokio` (Asynchrones I/O)
6969
- **Serialisierung:** `serde`, `serde_json`
7070
- **Prozessverwaltung:** `tauri-plugin-shell` für Sidecar-Ausführung (FFmpeg/FFprobe)
71-
- **Systemintegration:** `tauri-plugin-dialog`, `tauri-plugin-fs`, `window-vibrancy`
71+
- **Systemintegration:** `tauri-plugin-dialog`, `tauri-plugin-fs`, Tauri Window-Effects-API (`tauri::window::set_effects`)
7272
7373
### Frontend (SvelteKit)
7474
@@ -77,7 +77,7 @@
7777
- **Styling:** Tailwind CSS v4, `clsx`, `tailwind-merge`
7878
- **Zustandsverwaltung:** Svelte 5 `$state` / `$props`
7979
- **Internationalisierung:** Mehrsprachige Oberfläche mit automatischer Systemspracherkennung
80-
- **Typografie:** Geist Mono (eingebettet)
80+
- **Typografie:** Geist Sans (eingebettet), Geist Mono (eingebettet)
8181
8282
### Installation
8383

readme/es-ES.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
- `vp9` (Google VP9)
4848
- `prores` (Apple ProRes)
4949
- `libsvtav1` (SVT-AV1)
50-
- **Aceleración por hardware:** `h264_videotoolbox` (Apple Silicon), `h264_nvenc` (NVIDIA)
51-
- **Codificadores de audio:** `aac`, `ac3` (Dolby Digital), `libopus`, `mp3`
50+
- **Aceleración por hardware:** `h264_videotoolbox` (Apple Silicon), `hevc_videotoolbox` (Apple Silicon), `h264_nvenc` (NVIDIA), `hevc_nvenc` (NVIDIA), `av1_nvenc` (NVIDIA)
51+
- **Codificadores de audio:** `aac`, `ac3` (Dolby Digital), `libopus`, `mp3`, `alac` (Apple Lossless), `flac` (Free Lossless Audio Codec), `pcm_s16le` (WAV)
5252
- **Control de bitrate:** Factor de calidad constante (CRF) o bitrate objetivo (kbps)
5353
- **Escalado:** Bicúbico, Lanczos, Bilineal, Vecino más cercano
5454
- **Análisis de metadatos:** Extracción automática de información de streams vía `ffprobe`
@@ -68,7 +68,7 @@
6868
- **Runtime:** `tokio` (I/O asíncrono)
6969
- **Serialización:** `serde`, `serde_json`
7070
- **Gestión de procesos:** `tauri-plugin-shell` para ejecución sidecar (FFmpeg/FFprobe)
71-
- **Integración del sistema:** `tauri-plugin-dialog`, `tauri-plugin-fs`, `window-vibrancy`
71+
- **Integración del sistema:** `tauri-plugin-dialog`, `tauri-plugin-fs`, API de efectos de ventana de Tauri (`tauri::window::set_effects`)
7272
7373
### Frontend (SvelteKit)
7474
@@ -77,7 +77,7 @@
7777
- **Estilos:** Tailwind CSS v4, `clsx`, `tailwind-merge`
7878
- **Gestión de estado:** Svelte 5 `$state` / `$props`
7979
- **Internacionalización:** Interfaz multilingüe con detección automática del idioma del sistema
80-
- **Tipografía:** Geist Mono (embebida)
80+
- **Tipografía:** Geist Sans (embebida), Geist Mono (embebida)
8181
8282
### Instalación
8383

readme/fr-FR.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
- `vp9` (Google VP9)
4848
- `prores` (Apple ProRes)
4949
- `libsvtav1` (SVT-AV1)
50-
- **Accélération matérielle :** `h264_videotoolbox` (Apple Silicon), `h264_nvenc` (NVIDIA)
51-
- **Encodeurs audio :** `aac`, `ac3` (Dolby Digital), `libopus`, `mp3`
50+
- **Accélération matérielle :** `h264_videotoolbox` (Apple Silicon), `hevc_videotoolbox` (Apple Silicon), `h264_nvenc` (NVIDIA), `hevc_nvenc` (NVIDIA), `av1_nvenc` (NVIDIA)
51+
- **Encodeurs audio :** `aac`, `ac3` (Dolby Digital), `libopus`, `mp3`, `alac` (Apple Lossless), `flac` (Free Lossless Audio Codec), `pcm_s16le` (WAV)
5252
- **Contrôle du débit :** Qualité constante (CRF) ou débit cible (kbps)
5353
- **Mise à l'échelle :** Bicubique, Lanczos, Bilinéaire, Plus proche voisin
5454
- **Analyse des métadonnées :** Extraction automatique des informations de flux via `ffprobe`
@@ -68,7 +68,7 @@
6868
- **Runtime :** `tokio` (I/O asynchrone)
6969
- **Sérialisation :** `serde`, `serde_json`
7070
- **Gestion des processus :** `tauri-plugin-shell` pour l'exécution sidecar (FFmpeg/FFprobe)
71-
- **Intégration système :** `tauri-plugin-dialog`, `tauri-plugin-fs`, `window-vibrancy`
71+
- **Intégration système :** `tauri-plugin-dialog`, `tauri-plugin-fs`, API d'effets de fenêtre Tauri (`tauri::window::set_effects`)
7272
7373
### Frontend (SvelteKit)
7474
@@ -77,7 +77,7 @@
7777
- **Styles :** Tailwind CSS v4, `clsx`, `tailwind-merge`
7878
- **Gestion d'état :** Svelte 5 `$state` / `$props`
7979
- **Internationalisation :** Interface multilingue avec détection automatique de la langue système
80-
- **Typographie :** Geist Mono (intégrée)
80+
- **Typographie :** Geist Sans (intégrée), Geist Mono (intégrée)
8181
8282
### Installation
8383

readme/it-IT.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
- `vp9` (Google VP9)
4848
- `prores` (Apple ProRes)
4949
- `libsvtav1` (SVT-AV1)
50-
- **Accelerazione hardware:** `h264_videotoolbox` (Apple Silicon), `h264_nvenc` (NVIDIA)
51-
- **Encoder audio:** `aac`, `ac3` (Dolby Digital), `libopus`, `mp3`
50+
- **Accelerazione hardware:** `h264_videotoolbox` (Apple Silicon), `hevc_videotoolbox` (Apple Silicon), `h264_nvenc` (NVIDIA), `hevc_nvenc` (NVIDIA), `av1_nvenc` (NVIDIA)
51+
- **Encoder audio:** `aac`, `ac3` (Dolby Digital), `libopus`, `mp3`, `alac` (Apple Lossless), `flac` (Free Lossless Audio Codec), `pcm_s16le` (WAV)
5252
- **Controllo bitrate:** Qualità costante (CRF) o bitrate target (kbps)
5353
- **Ridimensionamento:** Bicubico, Lanczos, Bilineare, Vicino più prossimo
5454
- **Analisi metadati:** Estrazione automatica delle informazioni sui flussi tramite `ffprobe`
@@ -68,7 +68,7 @@
6868
- **Runtime:** `tokio` (I/O asincrono)
6969
- **Serializzazione:** `serde`, `serde_json`
7070
- **Gestione processi:** `tauri-plugin-shell` per esecuzione sidecar (FFmpeg/FFprobe)
71-
- **Integrazione sistema:** `tauri-plugin-dialog`, `tauri-plugin-fs`, `window-vibrancy`
71+
- **Integrazione sistema:** `tauri-plugin-dialog`, `tauri-plugin-fs`, API effetti finestra di Tauri (`tauri::window::set_effects`)
7272
7373
### Frontend (SvelteKit)
7474
@@ -77,7 +77,7 @@
7777
- **Stili:** Tailwind CSS v4, `clsx`, `tailwind-merge`
7878
- **Gestione stato:** Svelte 5 `$state` / `$props`
7979
- **Internazionalizzazione:** Interfaccia multilingue con rilevamento automatico della lingua di sistema
80-
- **Tipografia:** Geist Mono (incorporato)
80+
- **Tipografia:** Geist Sans (incorporato), Geist Mono (incorporato)
8181
8282
### Installazione
8383

0 commit comments

Comments
 (0)