Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,35 @@ Format : [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/), versions

## [Non publié]

## [1.4.0] - 2026-10-28

### Ajouté
- Lecteur : réglage « Couper le Mix complet à la lecture » (Général, activé par défaut). À
l'ouverture d'un clip qui a une piste Jeu ou une piste d'appli, la piste 1 est coupée pour ne
rien entendre en double ; elle se réactive avec M. L'état muet/solo/volume est retenu par
clip. L'export et la compression gardent la piste 1 tant qu'on ne l'a pas coupée soi-même
(GAL-04).
- Son « clip terminé » à la fin d'un clip avec « après » (La → Mi → La à l'octave), distinct du
carillon de l'appui et des sons d'enregistrement, soumis à « Son de confirmation » et exclu des
clips en « Tous les sons sauf PalaClips » (RPL-10). La fin d'un enregistrement ne joue plus le
carillon de sauvegarde par-dessus son propre son.
- Réglages → Replay & qualité en trois onglets (Replay, Enregistrement, Commun), chacun avec son
estimation de taille ; l'onglet est retenu pendant la session, un point marque l'onglet qui a
un changement non appliqué, et le résumé de l'enregistrement sur État ouvre l'onglet
Enregistrement (APP-15).

### Modifié
- État : en fenêtre large, « Derniers clips » et la colonne des pistes et performances défilent
chacun de leur côté sous le bandeau ; sous 1000 px, la page défile comme avant. 12 derniers
clips au lieu de 5.
- État : la cellule Source affiche la vraie source (« 2560×1440 · 240 Hz » pour un écran, la
taille de la fenêtre capturée pour une fenêtre), mise à jour en direct ; la qualité enregistrée
reste dans le résumé de la cellule Replay.
- Lecteur : pendant le glisser sur la barre de temps ou une piste, le curseur, le temps et la
zone jouée suivent la souris à chaque image ; l'image est chargée quand la souris s'arrête
(120 ms) et au relâchement, une demande à la fois. Sur un clip 1440p120 HEVC de 3 min :
2 chargements au lieu de 122, curseur redessiné toutes les 17 ms au lieu d'être figé (GAL-03).

## [1.3.1] - 2026-10-26

### Ajouté
Expand Down
6 changes: 3 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ default-members = ["crates/engine", "crates/cli"]
exclude = ["third_party"]

[workspace.package]
version = "1.3.1"
version = "1.4.0"
edition = "2024"
rust-version = "1.90"
license = "MIT"
Expand Down
6 changes: 4 additions & 2 deletions README.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,9 @@ fonctionne avec les anti-triches comme Easy Anti-Cheat.
- **Capture d'un écran ou d'une fenêtre** par Windows Graphics Capture ; une fenêtre est
retrouvée par le nom de son programme après un redémarrage.
- **Galerie de clips** avec un lecteur multipiste : écoute piste par piste (muet, solo,
volume), découpe, export, copie du fichier pour le coller dans Discord.
volume, retenus par clip ; Mix complet coupé à l'ouverture pour ne rien entendre en double),
déplacement fluide même sur un long clip HEVC, découpe, export, copie du fichier pour le
coller dans Discord.
- **Compression à une taille cible** : 20 Mo pour Discord, 50 ou 500 Mo pour Nitro, ou une taille
libre ; résolution et images par seconde choisies selon la taille, taille finale vérifiée.
Depuis la galerie (un ou plusieurs clips), le lecteur ou par glisser-déposer depuis
Expand All @@ -86,7 +88,7 @@ fonctionne avec les anti-triches comme Easy Anti-Cheat.

| Replay & qualité |
|---|
| ![Replay & qualité : taille d'un clip et Mo par minute, puis les réglages du replay, de l'enregistrement et communs](docs/screenshots/fr/replay-quality.png) |
| ![Replay & qualité en trois onglets (replay, enregistrement, commun), chacun avec son estimation de taille](docs/screenshots/fr/replay-quality.png) |

## Configuration requise

Expand Down
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,9 @@ Anti-Cheat.
Without a hardware encoder, **encoding on the processor** in H.264 or AV1.
- **Screen or window capture** through Windows Graphics Capture; a window is found again by
its program name after a restart.
- **Clip gallery** with a multitrack player: listen track by track (mute, solo, volume), trim,
export, or copy the file to paste it into Discord.
- **Clip gallery** with a multitrack player: listen track by track (mute, solo, volume,
remembered per clip; Full mix muted on opening so nothing plays twice), smooth scrubbing even
on long HEVC clips, trim, export, or copy the file to paste it into Discord.
- **Compress to a target size**: 20 MB for Discord, 50 or 500 MB for Nitro, or any size;
resolution and frame rate follow the size, and the final size is checked. From the gallery (one
or several clips), the player, or by dragging files from File Explorer.
Expand All @@ -84,7 +85,7 @@ Anti-Cheat.

| Replay & quality |
|---|
| ![Replay & quality: clip size and MB per minute, then the replay, recording and shared settings](docs/screenshots/en/replay-quality.png) |
| ![Replay & quality in three tabs (replay, recording, shared), each with its size estimate](docs/screenshots/en/replay-quality.png) |

## Requirements

Expand Down
4 changes: 2 additions & 2 deletions app/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion app/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "palaclips-ui",
"private": true,
"version": "1.3.1",
"version": "1.4.0",
"type": "module",
"scripts": {
"dev": "vite",
Expand Down
2 changes: 1 addition & 1 deletion app/src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "PalaClips",
"version": "1.3.1",
"version": "1.4.0",
"identifier": "com.palawi.palaclips",
"build": {
"beforeDevCommand": "npm run dev",
Expand Down
37 changes: 36 additions & 1 deletion docs/HANDOFF.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,15 @@
l'accord de Palawi. Brouillon relu connecté (version, signature = `.sig`, liens publics) ;
vérifié sans connexion après publication : `latest.json` 1.3.1, installeur, `.sig`, page et
CHANGELOG en 200. Branche : `dev`.
- **Dernière mise à jour :** 2026-10-26
- **v1.4.0 en préparation (2026-10-27/28)** : six retours de Palawi, une PR chacun : défilement
d'État et 12 clips (#125), cellule Source = vraie source (#126, `SourceMode`, `source_changed`),
glisser fluide dans le lecteur (#124, `ScrubSession`), son « clip terminé » (#127,
`clip_saved.origin`), Replay & qualité en onglets (#128), Mix complet coupé à la lecture et
état par clip (#129, `player.mute_full_mix`, colonne `mix`). Décisions et mesures :
`docs/reports/v1.4.md`. Session manuelle de Palawi validée le 2026-10-28. Préparation de la
version : branche `chore/release-v1.4.0`. Reste : PR `dev` → `main`, tag et brouillon **avec
l'accord de Palawi**, puis publication avec son accord.
- **Dernière mise à jour :** 2026-10-28

## Ce qui existe

Expand Down Expand Up @@ -299,6 +307,23 @@
`size-estimate.ps1`, `many-tracks.ps1 [-Keep]`, `app-isolated.ps1 -RightScreen`. Preuves :
`docs/reports/v1.3/`.

- **v1.4 (2026-10-27/28)** :
- Moteur : `events::SourceMode` (`capture_started.source_mode`, `source_changed` relevé chaque
seconde dans le fil d'encodage, `capture::display::refresh_hz`) ; `events::SaveOrigin`
(`clip_saved.origin` : `replay`, `post_roll`, `recording`) ; `chime::Sound::ClipFinished` ;
`Library::mix` / `set_mix` (colonne `mix`, ajoutée aux bases existantes).
- Shell : `player.mute_full_mix` dans `settings.json` (`get_player` / `set_player`),
`clip_mix` / `set_clip_mix` (`ClipMix { tracks, full_mix_chosen }`, volume borné) ; son joué
selon `origin` (rien pour un enregistrement, qui a son propre son de fin).
- Front : `lib/scrubSession.ts` (glisser : dessin immédiat, chargement après 120 ms ou au
relâchement, dernière position gagnante, audio tenu par `PlayerAudio.hold/release`) ;
`lib/qualityTabs.ts` (onglets, onglet retenu, `Destination.tab`) ; `lib/playerMix.ts`
(coupure du Mix complet seulement avec une piste Jeu ou appli, export sur l'état choisi).
- Scripts : `cdp-run.ps1` (app isolée + script CDP, sortie dans `target/journals/<script>`),
`scrub-measure.mjs`, `quality-tabs-check.mjs`, `player-mix-check.mjs`, `manual-session.ps1`
(session de Palawi, clips sur F:, `-Stop` range tout), `app-isolated.ps1 -ClipsDir`,
`readme-screenshots.mjs` mode `quality`.

## Prochaines actions (dans l'ordre)


Expand Down Expand Up @@ -496,6 +521,15 @@ Aucune. (2026-10-22 : encodeur CPU → D, `h264_mf` pour H.264 + SVT-AV1 pour AV
- Écran mémorisé par `monitor_path` (#79) : un réglage enregistré avant garde le nom GDI ; il
passe au chemin stable dès que l'écran est rechoisi dans Réglages > Capture.

- Push forcé refusé par le mode auto (rebase d'une branche déjà poussée) : merger `origin/dev`
dans la branche à la place, le push reste en avance rapide.
- Clips de test faits à la main : écrire `handler_name` en plus de `title` (l'app lit
`handler_name`, sinon toutes les pistes s'appellent « SoundHandler »). ffprobe montre le titre
MP4 sous `tag:name`, pas `tag:title`.
- La build FFmpeg LGPL n'a pas libx264 : clips de test en `h264_nvenc`.
- Palawi garde souvent son PalaClips installé ouvert : `app-isolated.ps1` refuse alors de lancer
l'app de test ; lui demander de le quitter, et lui dire à la fin de le relancer.

## Journal des sessions

| Date | Phase | Fait | Suite |
Expand Down Expand Up @@ -523,6 +557,7 @@ Aucune. (2026-10-22 : encodeur CPU → D, `h264_mf` pour H.264 + SVT-AV1 pour AV
| 2026-10-21 | 8 | Logo « Pistes » choisi par Palawi parmi 3 propositions (#83) ; feuille de route (#84) ; premier lancement en 8 questions, une à la fois, cartes « Conseillé », récapitulatif modifiable, vérifications seulement en cas de problème (#85), vu deux fois par Palawi ; RAM gardée par défaut jusqu'à 2 min (décision de Palawi, RPL-04 inchangé) ; captures FR/EN refaites | Release avec l'accord de Palawi |
| 2026-10-22 | v1.1 | Encodage par le processeur : recherche (encodeurs du FFmpeg BtbN, licences, lecture, banc VMAF NEG), choix D de Palawi ; moteur (`h264_mf` + SVT-AV1, Video Processor → NV12 → staging ou swscale, fils en priorité basse, file bornée, découpe précise CPU) ; app (réglage Encodeur, premier lancement, panneau), critique/audit impeccable ; validé : clip CPU, A/V 3,7 ms d'écart avec NVENC, Fortnite 0 % (1 % bas −3 à −5 %), mise à jour 1.0.0 → 1.1.0 ; mémoire de `h264_mf` (~720 Mo en 1080p) gardée par Palawi ; release v1.1.0 publiée (accord de Palawi), vérifiée sans connexion, sa 1.0.0 propose la 1.1.0 | Test VM T11 par Palawi |
| 2026-10-22 | v1.1.1 | Mémoire de `h264_mf` : nombre de fils (16 images en vol), pas une file ; faible latence et B-frames sans effet ; limité à 2/4 fils par ICodecAPI (+244 Mo au lieu de +773 en 1080p30, moins de CPU, même VMAF) ; bascule AV1 sans Media Foundation (N/KN), FAQ ; v1.1.1 publiée sans le test VM (demande de Palawi) | Test VM T11 |
| 2026-10-27/28 | v1.4 | Six retours de Palawi, questions en une fois (Source = écran seul, état du lecteur par clip, export sans coupure auto, 12 clips) ; #125 défilement d'État ; #124 glisser (122 → 2 chargements, curseur toutes les 17 ms au lieu de figé) ; #126 cellule Source ; #127 son « clip terminé » (candidat A choisi à l'écoute) ; #128 onglets ; #129 Mix complet coupé à la lecture ; session manuelle validée ; version 1.4.0 préparée | Accord de Palawi pour `dev` → `main`, tag, brouillon, publication |
| 2026-10-26 | v1.3.1 | Sons de PalaClips dans la piste 1 confirmés en mode bureau seulement ; exclusion du PID mesurée (sons retirés, toutes les sorties, retard de la piste Jeu) ; soustraction écartée (−3 dB) ; choix de Palawi → source au choix (#118, ADR-041) ; listes de clips suivant `library-changed { removed }` (#119) ; lecteur : pistes cliquables, calage (#120) ; session de Palawi validée ; version 1.3.1 | Release v1.3.1 publiée (accord de Palawi), vérifiée sans connexion |
| 2026-10-24/26 | v1.3 | Zip de Palawi : moteur correct, copies figées côté front → source unique de config (#113) ; recherche et mesures (2e NVENC : invisible si plus léger, ~5 % pour deux 1440p60 ; piste ≈ 5 % d'un cœur après partage du relevé des processus) ; décisions de Palawi ; 2e encodage pour l'enregistrement, horloge alignée, A/V 8 ms ; estimation −1,4 à −5,4 % ; 26 pistes de bout en bout (compression corrigée) ; Replay & qualité en trois parties, accès direct, sons d'enregistrement (#114) ; T15 validée ; captures du README ; version 1.3.0 (#115, #116), tag, publication | Release v1.3.0 publiée (accord de Palawi), vérifiée sans connexion |
| 2026-10-23/24 | v1.2 | Recherche (Discord 20 Mo, codecs, NVENC un passage, glisser-déposer Tauri) et décisions de Palawi (#105) ; pages Capture et Audio + alerte de sortie, vitest (#106) ; enregistrer après la sauvegarde, jonction continue, synchro identique, mémoire sans croissance sur 10 min (#107) ; compression à une taille cible, 11 cas sous la cible, HDR → SDR (#108) ; session T14 de Palawi en jeu validée, retours appliqués (#109) ; release 1.2.0 préparée | Release v1.2.0 publiée (accord de Palawi), vérifiée sans connexion |
21 changes: 21 additions & 0 deletions docs/PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,27 @@ Critères :
- 👤 « Après » en jeu, clip compressé envoyé dans Discord en 20 Mo et 500 Mo, glisser-déposer,
alerte de sortie de page ; images extraites jugées correctes.

## v1.4 — Retours de Palawi : État, Source, lecteur, onglets, son de fin (APP-15, GAL-03, GAL-04, RPL-10)

Rapport : `docs/reports/v1.4.md`.

- [x] Décisions de Palawi (Source = écran seul, état du lecteur par clip, export sans la coupure
automatique, 12 clips, son A).
- [x] État : colonnes qui défilent chacune de leur côté, 12 clips (#125).
- [x] Cellule Source : taille et fréquence réelles de la source, suivies en direct (#126).
- [x] Lecteur : glisser sans attendre la vidéo, une demande d'image à la fois (#124).
- [x] Son « clip terminé » distinct, `clip_saved.origin` (#127).
- [x] Replay & qualité en trois onglets (#128).
- [x] Mix complet coupé à la lecture, état par clip (#129).
- [x] Session manuelle de Palawi (2026-10-28) : tout validé.
- [ ] Release v1.4.0 (brouillon, puis publication avec l'accord de Palawi).

Critères :
- 🤖 Défilement à 6 tailles, molette et clavier ; Source (fenêtre redimensionnée, écran) ;
glisser mesuré avant/après ; sons (`scripts/feedback-sounds.ps1`) ; onglets
(`scripts/quality-tabs-check.mjs`) ; Mix complet et export (`scripts/player-mix-check.mjs`).
- 👤 Session de 10 min (`scripts/manual-session.ps1`).

## v1.3.1 — Sons de PalaClips hors des clips, listes de clips à jour, déplacement dans le lecteur (AUD-01, GAL-03)

- [x] Sons de PalaClips dans la piste 1 en mode « Audio du bureau » : vérifiés par la CLI,
Expand Down
17 changes: 17 additions & 0 deletions docs/release-notes/1.4.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
## Français

- **État** : « Derniers clips » (12 clips) et les pistes défilent chacun de leur côté, le bandeau reste en place ; la cellule Source montre l'écran réel (« 2560×1440 · 240 Hz ») ou la taille de la fenêtre capturée.
- **Lecteur** : la barre de lecture suit la souris sans à-coups, même sur un long clip HEVC ; le Mix complet est coupé à l'ouverture quand le clip a des pistes séparées (réglage dans Général), et l'état des pistes est retenu par clip. Les exports et la compression gardent la piste 1.
- **Replay & qualité** en trois onglets : Replay, Enregistrement, Commun.
- **Son « clip terminé »** à la fin d'un clip avec « après », distinct du carillon de l'appui.

Journal complet : https://github.com/Palawizard/PalaClips/blob/v1.4.0/CHANGELOG.md

## English

- **Status**: "Recent clips" (12 clips) and the tracks scroll on their own, the banner stays in place; the Source cell shows the actual screen ("2560×1440 · 240 Hz") or the size of the captured window.
- **Player**: the playback bar follows the mouse smoothly, even on a long HEVC clip; Full mix is muted on opening when the clip has separate tracks (setting in General), and the track state is remembered per clip. Exports and compression keep track 1.
- **Replay & quality** in three tabs: Replay, Recording, Shared.
- **"Clip finished" sound** at the end of a clip with an "after" part, distinct from the press chime.

Full changelog (in French): https://github.com/Palawizard/PalaClips/blob/v1.4.0/CHANGELOG.md
Loading
Loading