From f7a83194d54f06d83284b3fbf041eadcd59d4940 Mon Sep 17 00:00:00 2001 From: Marcin Macierzanka Date: Tue, 3 Nov 2026 01:53:04 +0100 Subject: [PATCH] Add CLAUDE.md with project brief Co-Authored-By: Claude Sonnet 5.5 --- CLAUDE.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..716b290 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,22 @@ +# Second Display – brief + +## Cel +Aplikacja natywna na macOS, która wyświetla w oknie obraz z urządzenia przechwytującego (kamerki / capture card) oraz odtwarza dźwięk z wybranego źródła (wejścia) dźwięku. Ma służyć jako "drugi monitor". + +## Wymagania +- Menu (główne menu aplikacji u góry ekranu, nie ikona statusowa po prawej): wybór źródła obrazu, wybór źródła dźwięku oraz opcja wyłączenia dźwięku. +- Opcjonalna (włączana/wyłączana) blokada usypiania ekranu w trakcie aktywności aplikacji. Domyślnie włączona, wybór zapamiętywany. +- Opcjonalne uruchamianie na pełnym ekranie. Domyślnie włączone, wybór zapamiętywany. +- Lokalizacja: angielski i polski (`Resources/{en,pl}.lproj`), język wg ustawień systemu. +- Dodatki: wybór formatu (rozdzielczość/FPS) per urządzenie, tryby skalowania (dopasuj/wypełnij/rozciągnij), okno zawsze na wierzchu, wyciszenie (⌘M), pełny ekran (⌘F), automatyczne wznawianie po odpięciu/wpięciu urządzenia. +- Poza zakresem (na razie): start przy logowaniu, nagrywanie, zrzuty ekranu, suwak głośności. + +## Struktura +- `Sources/main.swift` – cała aplikacja (AppKit + AVFoundation, jedna sesja `AVCaptureSession`, dźwięk przez `AVCaptureAudioPreviewOutput`). +- `Resources/{en,pl}.lproj` – `Localizable.strings` i `InfoPlist.strings`. +- `build.sh` – buduje i podpisuje (ad-hoc) `SecondDisplay.app`; uruchom `./build.sh`, potem `open SecondDisplay.app`. + +## Konwencje +- Ustawienia w `UserDefaults` (klucze: `video`, `audio`, `keepAwake`, `startFull`, `onTop`, `gravity`, `format.`). +- Nowe napisy dodawaj przez `NSLocalizedString` oraz do obu plików `Localizable.strings`. +- Commity: małe, osobne na funkcję, z linią `Co-Authored-By`.