Wydania
Historia zmian
## 3.1.87 — 2026-09-18 — kontrola integralności przy każdym starcie i skompilowany ElNotes - ElPlayer: menu „Klatka” w przeglądarce serii otwiera wybraną klatkę w ELView oraz udostępnia „Popraw obraz” (rozjaśnianie, wyostrzanie, odszumianie i kadrowanie). Akceptowana korekta trafia do eksportowanej kopii, można przywrócić oryginał; raport HTML dokumentuje zastosowane korekty i sumę oryginału. - Raport klatek ma klasyczny układ, nagłówek „Raport z nagrania …” i odnośnik www.evidsec.pl. Podpowiedzi pustych opisów nie pojawiają się na wydruku. - Program przy każdym starcie sprawdza swoje pliki. Każde wydanie (Install, Portable ONEDIR i SFX, ElCommander, ElNotes, ElVoice, ElPlayer) ma podpisany manifest integralności z rozmiarem, sumą CRC32 i SHA-256 każdego pliku programu. Podpis powstaje tym samym kluczem wydawcy co manifesty aktualizacji, a program ufa wyłącznie kluczowi wkompilowanemu w siebie — przeliczenie sum po podmianie pliku nic nie da. Kontrola CRC32 biegnie w tle z obniżonym priorytetem dysku i nie opóźnia uruchomienia; zgodny wynik trafia tylko do dziennika zdarzeń, a podmieniony, ucięty albo brakujący plik jest wskazany z nazwy w ostrzeżeniu z zaleceniem ponownej instalacji. - W oknie „O programie” przycisk „Integralność programu (SHA-256)” wykonuje pełną weryfikację SHA-256 wszystkich plików — wynik, który można przytoczyć w opinii. Pliki dopisywane po instalacji (dezinstalator, dzienniki, dane operatora, klucz Portable) nie są naruszeniem, a silnik Whisper w ElVoice, który można odznaczyć w instalatorze, jest sprawdzany tylko wtedy, gdy jest zainstalowany. - ElNotes jest kompilowany do kodu maszynowego (Nuitka) zamiast pakowania kodu Pythona. W instalatorze nie ma już plików .py ani bytecode'u, który dało się zdekompilować, a opisy wewnętrznej logiki (docstringi) są usuwane z programu. Funkcje modułu i jego zawartość są takie same jak dotąd; pozostałe moduły i instalator przejdą tę zmianę po sprawdzeniu ElNotes w użyciu. ## 3.1.86 — 2026-09-18 — klatki na żądanie, protokół w raporcie i narzędzia materiału - „Rozbij na klatki” indeksuje nagranie dopiero po kliknięciu „Uruchom”. Najpierw wybierasz materiał („Całe nagranie”, „Zakres klatek” albo zaznaczenie Od–Do) i zakres klatek, a dopiero potem ruszasz zadanie — wcześniej okno zaczynało czytać całe nagranie zaraz po otwarciu. W trakcie pracy widać pasek postępu z etapem (indeksowanie albo zapis) i liczbą klatek. - Zadanie można wstrzymać albo zatrzymać, zmienić zakres klatek i wznowić: „Wznów” dopisuje do tej samej serii bez pytania o katalog. Klatki zapisane do chwili zatrzymania zostają na dysku, a niepełny indeks nadal otwiera się w przeglądarce. - Raport HTML z przeglądarki klatek obejmuje bieżącą klatkę albo wybrany zakres. Raport zawiera protokół: datę i godzinę wykonania, nazwę i ścieżkę pliku źródłowego, opis zakresu i tabelę klatek (numer w nagraniu, czas, plik) oraz pola wypełniane ręcznie — miejsce zdarzenia, imię i nazwisko operatora, jednostkę, numer sprawy, czas zdarzenia i uwagi. Pola wchodzą na wydruk i do PDF. - Narzędzia materiału („Ustaw read-only”, „Usuń read-only”, „Sprawdź read-only”, „Policz SHA-256”, „Podgląd struktury”) działają też bez otwartej sprawy. Wcześniej każde z nich kończyło się komunikatem „Najpierw wybierz katalog lub pliki” i z panelu wyglądało na zepsute. Teraz narzędzie pyta, czy wskazać pliki, czy katalog, pracuje na wskazanym materiale, a dziennik odnotowuje czynność jako wykonaną poza sprawą. ## 3.1.85 — 2026-09-17 — klatki: przeglądarka serii i zgodna lupa - Lupa pokazuje dokładnie tę klatkę, która jest na ekranie. Podgląd odtwarzacza przewijał czas z dokładnością do milisekundy, więc przy nagraniach, w których czas klatki ma rozwinięcie okresowe (np. 12 klatek na sekundę, 0,166667 s), FFmpeg zwracał klatkę następną — lupa otwierała wtedy sąsiedni kadr. Odtwarzacz liczy teraz czas klatki w mikrosekundach, tak samo jak indeks klatek i lupa, a otwarcie lupy dodatkowo ustawia pozycję dokładnie na czasie widocznej klatki. Ta sama poprawka dotyczy kroku klatka po klatce i początku zapisywanego fragmentu. - „Rozbij na klatki” i „Lupa / powiększenie” są na samej górze menu prawego przycisku myszy, nad ustawianiem znaczników Od–Do. - Okno „Rozbij na klatki” prowadzi po kolei: najpierw wybór materiału („Całe nagranie” albo „Zakres klatek”, wypełniony znacznikami Od–Do), potem „Uruchom”, a po zakończeniu lub przerwaniu „Otwórz klatki”. Przerwana seria też daje się otworzyć — indeks opisuje ją jako niepełną, a zapisane klatki zostają na dysku. - Nowa przeglądarka klatek: wybór zakresu i numeru klatki, suwak i strzałki, płynne powiększenie (kółko myszy, 1:1, dopasowanie, wpisanie procentu), przesuwanie obrazu Shift + lewy przycisk myszy, podgląd pikseli z odczytem RGB. Klatki wczytują się z wyprzedzeniem, więc przewijanie serii nie czeka na dysk. - Zaznaczony fragment można powiększyć, zapisać jako osobny plik PNG, TIFF albo JPG, wydrukować i wyeksportować do PDF. Bez zaznaczenia te same przyciski działają na całej klatce. Raport HTML z JavaScriptem obejmuje wybrany zakres klatek — z sumami SHA-256, numerowanymi znacznikami i wydrukiem do PDF, tak jak raport ElView. ## 3.1.84 — 2026-09-17 — prostszy ElPlayer i dokładny zapis klatek - Uproszczono główne okno odtwarzacza: wspólny obszar pracy, formularz analizy i zakres Od–Do, narzędzia dostępne po zatrzymaniu klatki. - Przytrzymanie strzałki przewija kolejne klatki; puszczenie zatrzymuje przewijanie bez kolejki zaległych kroków. - Narzędzia kadru udostępniają płynne powiększenie, dokładny procent skali, przesuwanie obrazu, wybór fragmentu oraz porównanie przed/po dla rozjaśniania, wyostrzania i odszumiania. Zmiany wymagają akceptacji przed zapisem lub drukiem. - Zapis poprawionego obrazu obsługuje PNG, BMP, JPG i TIFF. JPEG jest formatem stratnym; pozostałe formaty zachowują piksele wyniku bez strat kompresji. - „Rozbij na klatki” zastępuje eksport zaawansowany: zakres klatek, odstęp, format i indeks JSON, postęp oraz anulowanie. - Menu kontekstowe zawiera „Usuń znaczniki Od–Do”. - Naprawiono zapis JPG przy końcu nagrania i usunięto zaokrąglanie czasu do milisekund. Zapis jest atomowy, sprawdzany przed zastąpieniem pliku; brak obrazu nie jest uznawany za sukces na podstawie starego pliku. Raport uwzględnia czas rzeczywistej ostatniej klatki. ## 3.1.79 — 2026-09-16 — pełny widok dokumentu, komentarze i historia wersji ElNotes - Edytor HEX uruchomiony dla bieżącej karty ElNotes ma przełącznik „Bajty HEX / Cały dokument”. Widok dokumentu pokazuje pełną logiczną treść tylko do odczytu, zachowuje polskie znaki i umożliwia kopiowanie zaznaczenia. - Wyszukiwanie „Treść dokumentu” automatycznie otwiera pełny widok, przewija do trafienia i podświetla dokładny zakres. Wynik nadal jest zaznaczany także w bieżącej karcie ElNotes. - Duże treści są wstawiane porcjami po 64 KiB. Panel ma przewijanie pionowe i poziome bez kosztownego zawijania bardzo długich ciągów, dzięki czemu dane Base64 i długie wiersze logów nie blokują okna. - Operacje zależne od offsetu, w tym przejście do pozycji i wynik wyszukiwania surowych bajtów, przełączają panel z powrotem na widok HEX. - ElNotes zapisuje w pakiecie ELJ komentarze przypięte do zaznaczonych fragmentów. Panel komentarzy pozwala przejść do fragmentu, oznaczyć wpis jako rozwiązany, ponownie go otworzyć albo usunąć; znaczniki przesuwają się razem z edytowanym tekstem. - Przy zapisie ELJ tworzona jest historia treści dokumentu z kontrolą SHA-256 i pomijaniem identycznych kopii. Panel „Wersje” pokazuje wewnętrzne wersje ELJ oraz kopie .bak, udostępnia podgląd i pozwala otworzyć wybraną wersję w nowej karcie. - Dolny pasek ElNotes stale pokazuje rodzinę i rozmiar czcionki aktywnej karty. Wskaźnik aktualizuje się po zmianie czcionki, rozmiaru i po otwarciu dokumentu ELJ. ## 3.1.78 — 2026-09-15 — czytelny pasek Tekst i wyszukiwanie treści w HEX - Pasek „Tekst” w ElNotes ma układ wybrany przez użytkownika: trzy opisane grupy „Czcionka i rozmiar”, „Styl” i „Akapit”. Przyciski są większe, a wyrównanie do lewej, środka, prawej i pełne justowanie korzysta z rysowanych ikon niezależnych od czcionki systemowej. - Usunięto przyczynę nieczytelnych symboli: wspólny mechanizm wyglądu dodawał domyślną ikonę wyboru przed każdym literowym przyciskiem. Przyciski paska Tekst wyłączają tę automatyczną dekorację, zachowując własne jednoznaczne oznaczenia. - Edytor HEX otwarty dla aktywnej karty udostępnia domyślny tryb „Treść dokumentu”. Przeszukuje logiczny tekst notatki także wtedy, gdy plik ELJ przechowuje go skompresowanego albo szyfruje cały pakiet; wyszukiwanie nie rozróżnia wielkości liter, obsługuje polskie znaki, przechodzi do kolejnych trafień i zaznacza wynik w bieżącej karcie. - Surowe wyszukiwanie HEX oraz UTF-8, UTF-16 LE i CP1250 pozostaje dostępne. Pierwsze wyszukiwanie bajtowe uwzględnia offset 0. Kontrola źródła korzysta dodatkowo z próbkowego SHA-256, dzięki czemu wykrywa szybką podmianę pliku o tym samym rozmiarze nawet przy niezmienionym znaczniku czasu systemu plików. ## 3.1.77 — 2026-09-15 — narzędzia bieżącej notatki i pasek Tekst - Polecenie „Otwórz w edytorze HEX” otwiera bieżący zapisany plik ElNotes. Dla notatki z osadzonym obrazem pokazuje bajty całego pakietu ELJ; przy niezapisanych zmianach prosi o zapis przed otwarciem. Wybór dowolnego innego pliku nadal jest dostępny, gdy nie ma bieżącej ścieżki. - OCR korzysta z obrazu wstawionego do aktywnej notatki ELJ. Przy jednym obrazie wybiera go automatycznie, przy wielu pozwala wskazać właściwy; menu prawego przycisku na obrazie ma polecenie „OCR tego obrazu”. Rozpoznany tekst wraz ze źródłem, sumą SHA-256 i językiem jest dopisywany do tej samej karty. OCR zewnętrznego obrazu lub PDF nadal może otworzyć wynik w nowej karcie. - Karta ElNotes ma menu prawego przycisku ze zmianą nazwy i zamknięciem. Nazwa karty jest zapisywana w ELJ; nie zmienia nazwy pliku na dysku. - Nowy pasek i menu „Tekst” skupiają wybór czcionki, powiększenie, rozmiar zaznaczenia, kolor, pogrubienie, kursywę, podkreślenie, przekreślenie oraz wyrównanie do lewej, środka, prawej i pełne justowanie. Te same opcje są dostępne w menu kontekstowym edytora. Formatowanie jest zachowywane w metadanych ELJ; wizualne justowanie nie dopisuje spacji do treści notatki. ## 3.1.76 — 2026-09-12 — ElTracker, ElNotes i aktualizacje - Wszystkie wydania EvidLock (Install i trzy Portable) oraz ElCommander, ElNotes, ElVoice i ElPlayer sprawdzają własny, podpisany kanał aktualizacji po uruchomieniu. Gdy dostępna jest nowsza wersja właściwa dla tego wydania, pojawia się komunikat z jej numerem i możliwością pobrania; brak sieci nie zatrzymuje uruchamiania. - ElTracker: przycisk Przerwij i postęp zabezpieczania telefonu oraz analizy, stronicowanie dużych wyników, oś czasu z filtrem kategorii i przejściem do pliku źródłowego. Opcjonalny odczyt prywatnych baz Androida działa wyłącznie na urządzeniu z istniejącym root i nie zmienia telefonu. - Raport ElTrackera zawiera rzeczywiste nazwy plików i aplikacji, frazy, historię przeglądania, dostępne wersje Androida/iOS, zakres analizy i pominięte źródła. HTML pozwala wyszukiwać, filtrować, sortować i eksportować CSV; pełne dane są też dostępne w CSV, XLSX, JSON i PDF. - ElNotes otwiera duże logi fragmentami, filtruje frazy, daty i poziomy zdarzeń oraz śledzi dopisywane wiersze bez wczytywania całego pliku. Edytor HEX jest dostępny z menu, palety poleceń i menu kontekstowego; oferuje stronicowy odczyt, wyszukiwanie, inspektor danych, kolorowanie znanych struktur, deklaratywne wzorce JSON i zapis z kopią bezpieczeństwa. Wzorce ElNotes nie są zgodne z językiem .hexpat programu ImHex. - Aktualizacja ElPlayera i ElVoice dochodzi do końca. Instalator prosi Windows o zamknięcie modułu, a ElPlayer odpowiadał na to pytaniem „Czy na pewno chcesz zamknąć ElPlayer?” i czekał na kliknięcie. Instalator rezygnował po około pół minuty i kończył się komunikatem o przerwanej instalacji. Zamknięcie żądane przez Windows — instalator aktualizacji, wylogowanie, zamykanie komputera — nie zadaje już tego pytania: moduł zapisuje ustawienia i pozycję nagrania, po czym zamyka się sam. Zamknięcie okna przez operatora nadal prosi o potwierdzenie, a otwarta sprawa nadal wstrzymuje zamknięcie aplikacji. - Nieudana aktualizacja modułu nie psuje już zainstalowanej wersji. Instalator czyścił katalog _internal przed skopiowaniem nowych plików, więc przy działającym module usuwał wszystko poza plikami zablokowanymi, a wycofanie instalacji tego nie przywracało — moduł przestawał się uruchamiać. Teraz instalator sprawdza najpierw, czy w katalogu programu nie działa żaden plik EXE (również narzędzia takie jak FFmpeg czy 7-Zip). Jeśli działa, pokazuje komunikat z możliwością ponowienia i zostawia dotychczasowe pliki nietknięte. ## 3.1.75 — 2026-09-11 — komunikaty zawsze nad oknami programu - ElPlayer nie zawiesza się już po wybraniu pliku na pełnym ekranie. Po wskazaniu nagrania, które było już wczytane, komunikat „Ten plik jest już wczytany…” otwierał się pod oknem pełnego ekranu i blokował wszystkie przyciski, więc obraz wyglądał na zamrożony. Komunikaty ElPlayera, w tym pytanie o zamknięcie, otwierają się teraz nad pełnym ekranem, a ponowne zamknięcie okna w trakcie pytania nie otwiera drugiego, identycznego pytania. - Poprawka dotyczy wszystkich wydań (Install, Portable, ElCommander, ElNotes, ElVoice, ElPlayer) i wszystkich komunikatów. Okno z pytaniem lub informacją pokazywało się tylko na chwilę, a potem chowało się pod oknem ustawionym „zawsze na wierzchu”: pełnym ekranem, oknem modułu, mini-odtwarzaczem ElVoice, formularzem albo listą nagrań. Gdy w programie jest otwarte takie okno, komunikat pozostaje nad nim, dopóki go nie zamkniesz. Dotyczy to też standardowych okien Windows: komunikatów, wyboru pliku i wyboru koloru. - Ponowne wybranie modułu, który już działa, przywraca jego okno i wyciąga je na wierzch — także zminimalizowane albo przykryte innym programem. Wcześniej pojawiał się tylko komunikat „program już działa”, a okno zostawało zminimalizowane. Komunikat pokazuje się już tylko wtedy, gdy okna nie da się aktywować, i nie chowa się pod ekranem ładowania (wcześniej ekran ładowania zatrzymywał się na 38%, a komunikat był niewidoczny). - Okna „Wprowadź klucz” (wybór trybu licencji, wpisanie klucza produktu, przedłużenie FULL-DEMO) i komunikaty o kluczu pozostają na wierzchu, dopóki nie odpowiesz — również nad pełnym ekranem ElPlayera albo innym oknem „zawsze na wierzchu” innego programu EvidLock. Okno wpisywania klucza otwiera się na środku ekranu, a nie w jego lewej górnej części. - Błąd bezpiecznej kopii Portable pokazuje się na pierwszym planie, a jego tekst nie jest już wyrównany do prawej. ## 3.1.74 — 2026-09-11 — aktualizacja działa do końca i pokazuje każdy etap - Aktualizacja wersji instalowanej kończy się instalacją. Wcześniej aktualizator uruchamiał instalator całkowicie po cichu, a sam nadal działał z katalogu programu. Instalator nie mógł podmienić jego pliku, przerywał się bez komunikatu i przywracał poprzednią wersję, więc po kliknięciu „Tak” pozornie nic się nie działo. - Instalator zamyka pozostawione procesy aktualizatora z katalogu programu, także gdy aktualizację uruchomiła wersja 3.1.72 lub 3.1.73. Podczas takiej cichej aktualizacji pokazuje okno „Aktualizacja EvidLock”, po zakończeniu uruchamia EvidLock ponownie, a po błędzie przywraca i uruchamia dotychczasową wersję. - Aktualizator pokazuje okno postępu pobierania (MB i procent), w pytaniu podaje rozmiar aktualizacji, a instalator uruchamia dopiero po swoim zamknięciu — z paskiem postępu, widocznymi komunikatami i dziennikiem instalacji. Okna aktualizatora pojawiają się na wierzchu, działa tylko jeden aktualizator naraz i trwająca instalacja nie jest uruchamiana drugi raz. - Po ponownym uruchomieniu EvidLock pokazuje wynik: „EvidLock został zaktualizowany do wersji …” albo przyczynę niepowodzenia ze ścieżką dziennika instalacji. Każdy błąd aktualizacji trafia do dziennika błędów aplikacji (.ellogs) i wskaźnika błędów. - Portable: okno postępu pobierania w programie. Wymiana czeka na zamknięcie EvidLock bez 5-minutowego limitu, zapisuje wynik i zawsze uruchamia program ponownie. Wymiana katalogu ONEDIR przy zablokowanym pliku kończy się teraz w całości albo wcale i przywraca poprzednią wersję; wcześniej mogła zostawić częściowe kopie katalogu _runtime. ## 3.1.73 — 2026-09-11 — tryb wysokiego kontrastu, klucz Portable po aktualizacji i aktualna historia zmian - Tryb wysokiego kontrastu: po kliknięciu „Kontrast” dashboard znów buduje się w całości — z przyciskami Sprawa, Tryb admin i Kontrast, kartami startowymi, panelem sprawy i narzędziami. Wcześniej w palecie kontrastowej brakowało kolorów wspólnych menu, więc widok zatrzymywał się po przycisku „Sprawa” i pozostawał pusty. Test motywów w każdej kompilacji sprawdza teraz włączanie i wyłączanie kontrastu w skórkach Graphite i Jasny. - Portable ONEDIR i SFX: pierwsze uruchomienie po aktualizacji przywraca z kopii poprzedniej wersji (.evidlock-previous-…) klucz ELP1, licznik uruchomień i dziennik błędów, które Portable przechowuje w katalogu _runtime. Wcześniej wymiana runtime odkładała je razem ze starym katalogiem, więc po aktualizacji z 3.1.72 program ponownie prosił o klucz. Istniejące pliki nie są nadpisywane, a kopia poprzedniej wersji pozostaje nienaruszona. - Uzupełniono historię zmian aplikacji głównej i modułów o wydanie 3.1.72 oraz bieżące poprawki. - Gotowe EXE korzystają z historii wbudowanej w daną kompilację. Stary CHANGELOG.md pozostawiony obok programu albo w katalogu roboczym nie zasłania już nowych wpisów, również przy otwieraniu historii offline. - Wspólny numer 3.1.73 dla Install, trzech wariantów Portable Light oraz ElCommander, ElNotes, ElVoice i ElPlayer. Aktualizator rozpoznaje tę wersję jako nowszą od 3.1.72. ## 3.1.72 — 2026-09-11 — licencje, aktualizacje, interfejs i dokumentacja - SUITE (dawne ALL) obejmuje aplikację i moduły bez współpracy przez TeamServer; PRO obejmuje SUITE i TeamServer. Nowy klient odrzuca klucze SMALL/FULL. Nie zmienia to zachowania dawnych klientów offline. - Samodzielne ElCommander, ElNotes, ElVoice i ElPlayer wymagają SUITE albo PRO. Poprawiono metadane dystrybucji modułów, które mogły omijać bramę licencyjną. - Aktualizacje online i offline weryfikują podpis Ed25519, rozmiar oraz SHA-256 paczki. ONEDIR wymienia cały runtime, zachowuje dane i tworzy kopię poprzedniej wersji. - Większy wskaźnik integralności: pierścień 176 px, czytelna wartość procentowa i oddzielny tytuł. Wynik opisuje kompletność czynności, a nie procent poprawnych hashy. - ElVoice: Reset przeniesiony obok Wyczyść. ElPlayer: niebieski przycisk odtwarzania dopasowany do ElVoice. - Poprawki TeamServer, konfiguracji usługi Windows i współpracy klientów. Sprawdzono lokalnie HTTPS/PostgreSQL, MFA, role, konflikty, audyt, kopię i odtworzenie bazy oraz restart usługi. - Nowa dokumentacja techniczna i 23 zrzuty ekranu. Install zawiera pełny zestaw modułów; Portable Light nie zawiera ElVoice, ElPlayer ani ElSSH. - Opublikowano osiem produktów i sześć kanałów aktualizacji. Zaktualizowano generator, panel SUITE/PRO i strony pobierania. EXE pozostają bez certyfikatu Authenticode; podpis aktualizacji jest osobnym mechanizmem. ## 2026-09-09 — ELPlayer: poprawka wybierania chorągiewek - Klikanie działa na całym widocznym kształcie flagi, również na czubku, w oknie i na pełnym ekranie. - Samo kliknięcie nie przesuwa czasu znacznika. Przeciąganie zachowuje punkt uchwycenia flagi. - Żółte obramowanie wskazuje chorągiewkę sterowaną strzałkami. Wybrana flaga nie znika podczas edycji klawiaturą na pełnym ekranie. ## 2026-09-09 — ELVoice: mini-odtwarzacz Studio i eksport zaznaczenia - W sekcji Odsłuch i korekcja przycisk Tryb odtwarzacza otwiera małe okno Studio, zawsze na wierzchu, z własną sesją audio, playlistą, dodawaniem utworów, poprzednim/następnym utworem, play/pauzą, stopem i głośnością. Przypnij zamyka mini-odtwarzacz i przywraca panel. - Dziesięciopasmowy equalizer z presetami Płaski, Mowa, Bass i Mniej syczenia działa na żywo bez restartu FFplay. Fala jest obliczana w tle i nie opóźnia uruchomienia odsłuchu. - Menu spektrogramów A/B, również odpiętych, zawiera Zapisz zaznaczenie jako…: MP3, WAV, OGG, FLAC i M4A. Eksport z widoku po zmianach używa przetworzonej ścieżki. - Skrypty wydania: moduels_install/build_module.ps1 (EXE i instalator), moduels_install/package_module_portable.py (katalog portable i ZIP). ## 2026-09-09 — ELPlayer: precyzyjne chorągiewki i ikony formularza - Klikniętą chorągiewkę Od/Do można przesuwać strzałkami ←/→ o jedną klatkę, także przy zmiennym klatkażu. Pozycja odtwarzania i drugi znacznik pozostają bez zmian; znaczniki nie mogą się minąć. - Przywrócono graficzne ikony Play i Stop w formularzu analizy, niezależne od czcionki systemowej. ## 2026-09-09 — ELPlayer: synchronizacja i pełny ekran - Obraz korzysta z rzeczywistych czasów klatek, również przy VFR i po przewijaniu. Start czeka na dźwięk, a wznowienie po pauzie odtwarza obie ścieżki od tej samej pozycji. - Usunięto pomijanie początku audio przy odczycie potoku FFplay. - Pełny ekran uwzględnia skalowanie DPI, zachowuje proporcje i nie zwiększa rozdzielczości dekodowania do rozmiaru monitora. - Linia pozycji, znacznik i pasek sterowania chowają się po 2,5 s bez ruchu myszy; wejście kursorem lub ruch ponownie je pokazują. Dotyczy również podglądu Od–Do. # EvidLock - dziennik zmian ## 2026-09-07 — ElVoice: suwaki poprawy odsłuchu, profil szumu i korektor - Zakładka **Odtwarzanie** ma nową, zwijaną sekcję **Poprawa odsłuchu**: wybór kanału (stereo / lewy / prawy), balans L–P, wyrównanie głośności, redukcja szumu i dziesięciopasmowy korektor graficzny. Filtry idą wyłącznie do FFplay — nagranie, wykresy, analizy, raporty i pliki eksportu powstają z niezmienionego materiału i ten warunek jest napisany wprost w nagłówku sekcji. - **Redukcja szumu** pracuje na profilu zdejmowanym z nagrania: operator powiększa widok na fragment samej ciszy i klika „Pobierz profil z widoku”. Pomiar liczy poziom szumu i 15 pasm dokładnie tam, gdzie ma je `afftdn` (80 Hz, dalej ×1,5 + 5 Hz), a wynik — na przykład −58,4 dBFS — widać obok przycisku. Profil dotyczy jednego nagrania i znika przy otwarciu następnego. - Suwak **Siły redukcji** jest zapasem nad zmierzonym progiem, bo to on decyduje o wyniku. Pomiar na różowym szumie z sygnałem mowopodobnym: przy progu ustawionym dokładnie na zmierzonym poziomie ubywa 2,2 dB szumu, przy zapasie 12 dB — 4 dB kosztem 2 dB pasma mowy, przy 24 dB — 18 dB kosztem 5,9 dB. Sama zmiana `nr` bez podniesionego progu nie robi prawie nic, dlatego jeden suwak steruje obydwoma. Drugi suwak to **Wygładzanie** (`gs`, 0–50), czyli ile sąsiednich prążków uśrednia filtr. - Bez pobranego profilu redukcja przechodzi w tryb śledzenia szumu (`tn=1`) — słabszy, ale nigdy nie pomyli się o 20 dB co do poziomu. - **Korektor graficzny** ma dziesięć pionowych suwaków (31 Hz – 16 kHz, ±12 dB) i cztery ustawienia: Płasko, Mowa, Basy, Bez syku. Każde ruszone pasmo to jeden biquad; pasma na zerze nie trafiają do łańcucha w ogóle. Ustawienie „Mowa” razem z redukcją 18 dB usunęło w pomiarze 14,2 dB szumu przy ubytku 2,6 dB w paśmie 200–4000 Hz — czyli korektor odrabia część tego, co zabiera odszumianie. - FFplay dostaje łańcuch filtrów przy starcie, więc każda zmiana oznacza restart w tej samej pozycji. Suwaki są opóźnione o 260 ms, przez co przeciąganie kończy się jednym restartem, a nie kilkudziesięcioma. Ustawienia dotyczą obu sesji — oryginału i wersji po odszumieniu — żeby porównanie „przed/po” słychać było w tych samych warunkach. - Przełącznik `CTkSwitch` dostał własną gałąź stylowania. Wspólna gałąź z polem wyboru podawała mu `hover_color`, którego ta klasa nie przyjmuje, więc pierwszy przełącznik w module ELVoice przerywał budowę okna. - Weryfikacja: 269 testów ELVoice, odtwarzacza i serwisu — OK, w tym 16 nowych (łańcuch filtrów, zakresy przyjmowane przez FFmpeg, restart sesji tylko przy realnej zmianie, pomiar profilu, sekcja w oknie, pobranie profilu w tle). Cały łańcuch sprawdzony na żywym FFmpeg 8.1.2; Ruff `E9,F,B` bez nowych zgłoszeń. ## 2026-09-07 — ElVoice: whisper.cpp w paczce, do zaznaczenia w instalatorze - Samodzielne wydanie ElVoice zawiera silnik whisper.cpp i model mowy `ggml-small-q5_1.bin` (190 MB) w `_internal/tools/whisper`. Dotąd moduł miał tylko FFmpeg, więc „Transkrypcja słowna” kończyła się komunikatem o brakującym komponencie, którego samodzielne wydanie nigdzie nie oferowało — transkrypcji nie dało się wykonać w ogóle. - Kreator instalacji pokazuje komponent „Whisper — transkrypcja mowy offline (model 190 MB, opcjonalny)”, domyślnie zaznaczony. Odznaczenie pomija całe drzewo `tools\whisper`, czyli instalacja jest o prawie 200 MB lżejsza, a moduł działa w całości poza transkrypcją słowną. Instalator zapisuje wtedy w `components.ini` `whisper=0`, więc manifest opisuje to, co faktycznie leży na dysku. - Spec PyInstallera odmawia zbudowania ElVoice, gdy brakuje `whisper-cli.exe` albo gdy model ma inną sumę SHA-256 niż ta, którą weryfikuje aplikacja przy starcie transkrypcji. Niezgodny model dawałby gotowy pakiet, który cicho odmawia pracy. - Nowy test buildu `--evidlock-elvoice-whisper-smoke-test` nie sprawdza obecności plików, tylko przepuszcza jednosekundową próbkę WAV przez pełną ścieżkę FFmpeg → whisper.cpp i porównuje sumę SHA-256 użytego modelu z dołączonym. Build modułu ElVoice zatrzymuje się, gdy silnik nie ruszy. - Weryfikacja modelu nie liczy już SHA-256 przy każdym pytaniu o gotowość silnika. Wynik jest pamiętany dla ścieżki, rozmiaru i czasu modyfikacji pliku, więc podmiana albo uszkodzenie modelu nadal wymusza pełne przeliczenie. Wcześniej samo otwarcie okna transkrypcji czytało 190 MB, a pełny przebieg — trzy razy. - Komunikat o brakującym silniku i opis w dokumentacji technicznej nie wymieniają już edycji programu. Mówią wprost, że transkrypcja wymaga komponentu Whisper i że wystarczy uruchomić instalator ponownie i go zaznaczyć. - Weryfikacja: 118 testów (pakowanie modułów, ELVoice, rejestr modułów, tryby samodzielne) — OK; test dymny transkrypcji przeszedł ze źródeł i na zamrożonym `ElVoice.exe`. Podział plików sprawdzony jednorazowym instalatorem testowym: z `/COMPONENTS="core"` katalog `tools\whisper` w ogóle nie powstaje, z `/COMPONENTS="core,whisper"` wchodzi razem z modelem. ## 2026-09-07 — ELVoice: naprawa zacinania przy powiększaniu i przesuwaniu - Przeciąganie wykresu przestało blokować moduł. Powodem było liczenie pełnego FFT dla każdego piksela przy każdym zdarzeniu myszy: w zakresach poniżej ~22 s kosztowało to 69 ms na klatkę (14 kl./s), a wątek interfejsu był zajęty bez przerwy. - Gest rysuje teraz podgląd o mniejszej liczbie kolumn, a ostry obraz powstaje 140 ms po zatrzymaniu myszy albo po jej puszczeniu. Struktura czasu i częstotliwości podglądu jest ta sama, zmienia się tylko gęstość kolumn. - Fala trafia do Tk jako obraz nieprzezroczysty. Przy głębokim powiększeniu maska była prawie pusta i Tk mieszał alfę piksel po pikselu — samo `PhotoImage` kosztowało 30 ms zamiast 3,6 ms. Linia zera jest teraz wrysowana w obraz. - Bufor obrazu Tk jest odtwarzany tylko przy zmianie rozmiaru, a nie co klatkę. Kursor odtwarzania poza widokiem jest przycinany do wykresu — przy powiększeniu 6000× lądował kilka milionów pikseli poza kanwą. - Zmiana rozmiaru okna korzysta z tej samej ścieżki podglądu co przeciąganie. - Pomiar na kanwie 1576×741, nagranie 30 min: fala 42,9 → 19,6 ms/klatkę, spektrogram 69,3 → 25,7 ms/klatkę. Najgorszy przypadek w całym zakresie powiększenia to 29 ms (39 kl./s) wobec 76 ms wcześniej. - Korekta poprzedniego wpisu: podane tam 8 ms i 10–24 ms/klatkę dotyczyły kanwy 1572×374 i pomijały zakresy liczone z FFT na żywo. Powyższe liczby są z kanwy w rozmiarze okna modułu. - Weryfikacja: 37 testów ELVoice — OK; Ruff `E9,F,B` bez błędów; test ciągłego przeciągania na nagraniu 30 min bez pozostałości w katalogu roboczym. ## 2026-09-06 — ElPlayer: głos zsynchronizowany z obrazem - Obraz równa się teraz do zegara dźwięku, a nie do własnego usypiania. Każda klatka ma bezwzględny termin wyświetlenia liczony od punktu odniesienia, więc spóźnienia dekodera nie sumują się. Wcześniej każda klatka spała „swój” interwał od momentu zdekodowania i po minucie odtwarzania głos wyprzedzał obraz o setki milisekund. - Dokładne przewijanie dźwięku przejął ffmpeg: strumień idzie potokiem ffmpeg → ffplay jako WAV zaczynający się dokładnie w miejscu przewinięcia. Własne `-ss` ffplay trafiało wyłącznie w klatkę kluczową, więc przy grupie obrazów liczonej w sekundach głos startował nawet kilka sekund przed obrazem. - Zegar dźwięku czytany jest z linii stanu ffplay i uwzględnia bufor karty dźwiękowej, czyli pokazuje to, co właśnie słychać. Drobne różnice są dociągane łagodnie, skok (przewinięcie, zacięcie systemu) przestawia punkt odniesienia od razu. - Klatki, których termin minął, są pomijane — najwyżej pięć z rzędu — zamiast ciągnąć opóźnienie do końca nagrania. Limit zostawia obraz na wolnej maszynie zamiast czarnego płótna. - Zegar szybszy niż czas rzeczywisty (maszyna bez urządzenia dźwiękowego, gdzie SDL połyka strumień w próżni) jest odrzucany — obraz wraca wtedy na czas ścienny i nadal idzie w tempie nagrania. - Wyciszenie, zmiana głośności, ścieżki, kanału i prędkości oraz przełączenie panelu w widoku dzielonym zakładają zegar od nowa. Panel grający bez dźwięku idzie po czasie ściennym. - Podgląd zakresu pracuje na tych samych terminach klatek. Przy zmienionej prędkości jego pozycja szła dotąd w innym tempie niż obraz i koniec zakresu wypadał w złym miejscu. - Weryfikacja: 84 testy GUI ElPlayera, 10 testów wydajności (w tym trzy nowe na pętli dekodera: dotrzymywanie terminów, nadrabianie zacięcia, podążanie za dźwiękiem) i 60 testów serwisu (w tym pięć nowych na potoku i odczycie zegara) — OK.