diff --git a/beweise/ui-513-einstellungen.png b/beweise/ui-513-einstellungen.png new file mode 100644 index 0000000..aa42db6 Binary files /dev/null and b/beweise/ui-513-einstellungen.png differ diff --git a/beweise/ui-513-uebersicht.png b/beweise/ui-513-uebersicht.png new file mode 100644 index 0000000..667797f Binary files /dev/null and b/beweise/ui-513-uebersicht.png differ diff --git a/rippy-windows/bau/release-notes.md b/rippy-windows/bau/release-notes.md index f49e6ed..85d6cfd 100644 --- a/rippy-windows/bau/release-notes.md +++ b/rippy-windows/bau/release-notes.md @@ -1,17 +1,25 @@ -Version 5.1.2 +Version 5.1.3 -Neu: Rippy sagt Bescheid, wenn ein Update da ist. -Bisher hat es sich still im Hintergrund aktualisiert — jetzt steht eine -Karte oben in der Übersicht, mit Versionsnummer und dieser Liste hier. -In den Einstellungen gibt es dazu den Knopf "Jetzt auf Updates prüfen". -Wer nicht warten will, startet über die Karte sofort neu. +Das Fenster gehört jetzt Rippy. +Der graue Windows-Rahmen ist weg. Minimieren, Maximieren und Schließen +sitzen oben rechts im Programm selbst, gezogen wird an der Kopfzeile — +Doppelklick darauf maximiert. Die Kanten lassen sich weiter ziehen wie +gewohnt. Schließen versteckt Rippy weiterhin nur im Infobereich, ein +laufender Rip merkt davon nichts. + +Nichts klebt mehr links. +Die Seite ist jetzt mittig und wächst mit dem Fenster mit, statt auf +halber Breite abzubrechen. Im schmalen Fenster rutschen die Kacheln +untereinander, statt sich zu quetschen; die Einstellungen legen ihre +Abschnittswahl dann als Zeile über die Karten. + +Aus 5.1.2: Rippy sagt Bescheid, wenn ein Update da ist. +Diese Karte hier ist der Beweis — mit Versionsnummer und dieser Liste. +In den Einstellungen gibt es den Knopf "Jetzt auf Updates prüfen". Aus 5.1.1: Serien-Discs werden richtig erkannt. -Disc 2 von "Spartacus: Gods of the Arena" wurde als der Film "Spartacus" -von 1960 erkannt. Rippy fragt jetzt die Disc selbst: Ihr -Inhaltsverzeichnis nennt die Folgen, und daran erkennt Rippy eine Serie, -statt sie zu raten. Disc-Nummer und Folgenzahl stehen neben dem Titel. -Und wenn Rippy sich unsicher ist, sagt es das jetzt, statt sich sicher -zu irren. +Disc 2 von "Spartacus: Gods of the Arena" galt als der Film "Spartacus" +von 1960. Rippy fragt jetzt die Disc selbst: Ihr Inhaltsverzeichnis +nennt die Folgen. Disc-Nummer und Folgenzahl stehen neben dem Titel. Unverändert: Updates warten immer, bis kein Rip mehr läuft. diff --git a/rippy-windows/package-lock.json b/rippy-windows/package-lock.json index 1f483bf..7922d91 100644 --- a/rippy-windows/package-lock.json +++ b/rippy-windows/package-lock.json @@ -1,12 +1,12 @@ { "name": "rippy", - "version": "5.1.2", + "version": "5.1.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "rippy", - "version": "5.1.2", + "version": "5.1.3", "license": "UNLICENSED", "dependencies": { "electron-updater": "^6.8.9", diff --git a/rippy-windows/package.json b/rippy-windows/package.json index 57f5b38..df8faa1 100644 --- a/rippy-windows/package.json +++ b/rippy-windows/package.json @@ -1,7 +1,7 @@ { "name": "rippy", "productName": "Rippy", - "version": "5.1.2", + "version": "5.1.3", "description": "Rippy v5 — Disc-Ripping als eigenständiges Windows-Programm (KONZEPT-WINDOWS.md)", "main": "out/haupt/index.js", "author": "KrBrZ", diff --git a/rippy-windows/src/bruecke/index.ts b/rippy-windows/src/bruecke/index.ts index 144947f..f228894 100644 --- a/rippy-windows/src/bruecke/index.ts +++ b/rippy-windows/src/bruecke/index.ts @@ -56,6 +56,11 @@ contextBridge.exposeInMainWorld('rippy', { autostartSetzen(an: boolean): Promise { return ipcRenderer.invoke('autostart-setzen', an === true) as Promise }, + /** Eigene Titelleiste (§ 4.2): minimieren | maximieren | schliessen. + * „schliessen" versteckt nur — Rippy lebt im Tray weiter. */ + fensterSteuern(was: 'minimieren' | 'maximieren' | 'schliessen'): Promise { + return ipcRenderer.invoke('fenster-steuern', String(was)) as Promise + }, /** „Jetzt prüfen" (§ 6.8) — das Ergebnis kommt über den Haupt-Status. */ updatePruefen(): Promise { return ipcRenderer.invoke('update-pruefen') as Promise diff --git a/rippy-windows/src/fenster/App.tsx b/rippy-windows/src/fenster/App.tsx index 0837fee..80aaeda 100644 --- a/rippy-windows/src/fenster/App.tsx +++ b/rippy-windows/src/fenster/App.tsx @@ -83,6 +83,60 @@ const PHASEN_MONO: Record = { const LAUFENDE_PHASEN = ['liest-info', 'rippt', 'komprimiert', 'legt-ab'] +// ── Eigene Fensterknöpfe (§ 4.2, seit 5.1.3) ──────────────────────────── +// Bewusst schlicht und in Windows-Maßen (46 × 32) — wer sie sucht, findet +// sie dort, wo er sie erwartet. Sie sitzen in der Ziehfläche und müssen +// deshalb `nicht-ziehbar` sein, sonst verschluckt der Fenstergriff den Klick. +const IconMinimieren = (): React.JSX.Element => ( + +) + +const IconMaximieren = (): React.JSX.Element => ( + +) + +const IconWiederherstellen = (): React.JSX.Element => ( + +) + +const IconSchliessen = (): React.JSX.Element => ( + +) + +function FensterKnopf({ + titel, + aufKlick, + rot = false, + children, +}: { + titel: string + aufKlick: () => void + rot?: boolean + children: React.ReactNode +}) { + return ( + + ) +} + function sicherheitsWort(confidence: number): string { if (confidence >= 0.9) return 'sehr wahrscheinlich' if (confidence >= 0.8) return 'wahrscheinlich' @@ -427,7 +481,9 @@ function LaufwerkKachel({

)} -
+ {/* Zwei Kacheln nebeneinander im schmalen Fenster, vier im + breiten — vorher immer vier, also im schmalen gequetscht. */} +
0 ? gb(geraet.groesseBytes) : '—'} /> -