- Document new Rust formatting standards in AGENTS, CODE_MAP, and PROGRESS. - Add rustfmt.toml with style 2024, 2‑space indents, 100‑char width, LF endings. - Apply consistent 2‑space indentation and ordering across source files. - Minor clean‑up of imports and whitespace to match the new style.
16 KiB
Dziennik prac
2026-10-19 — formatowanie Rust z wcięciami po 2 spacje
Dodano rustfmt.toml z uzgodnionymi opcjami: edycja i styl 2024, max_width = 100, hard_tabs = false, tab_spaces = 2, zakończenia Unix, sortowanie importów i modułów oraz domyślne heurystyki krótkich konstrukcji. Zastosowano nix develop -c cargo fmt --all do źródeł i testów (56 zmienionych plików Rust). Zaktualizowano instrukcje agentów i mapę konfiguracji projektu.
Weryfikacja przez nix develop -c: cargo fmt --all -- --check, cargo check --all-targets i cargo test --all-targets zakończone sukcesem; 45 testów zaliczonych. Nie wprowadzano zmian mechanik ani zależności. Nie powtarzano Clippy ani ręcznej sesji TUI przy zmianie formatowania.
2026-10-18 — przekazanie kontekstu na kolejną sesję
Użytkownik zaakceptował aktualny stan. Nie ma ustalonego kolejnego zadania. Na start kolejnej sesji przeczytaj docs/AGENTS.md, docs/CODE_MAP.md i docs/TESTING.md; instrukcje w docs/ mogą wymagać jawnego wskazania agentowi.
Stan końcowy: zoptymalizowane audio, wykonywanie kopania i ruchu w osobnych zadaniach, 3-sekundowy krok, kolor jednostki według właściciela, procent ruchu na kratce oraz postęp etapu i całości zadania pod Tab. Ostatni pełny zestaw: 45 testów zaliczonych, kompilacja i formatowanie poprawne. Ostrzeżenia Clippy: 50 biblioteki oraz 4 stylistyczne uwagi o wymaganym jawnym -> () w testach.
Uwagi do dalszej pracy:
Totaljest postępem według liczby kratek, nie przewidywanym czasem zakończenia. Przy zmianie rodzaju zadania zachowuje liczbę wykonanych etapów, ale postęp bieżącego etapu jest resetowany.- Zajęte pole lub ruda zatrzymuje jednostkę; brak omijania przeszkód. Rysowanie trasy pauzuje wybraną jednostkę. Potyczka nadal otrzymuje ticki także poza jej ekranem.
- Kolejka w panelu zajmuje dwa wiersze na zadanie. Długie kolejki w małym terminalu mogą zostać ucięte; przewijania panelu nie dodano.
- Przed wydaniem pozostają ręczne sprawdzenie TUI na różnych rozmiarach terminala, odsłuch i pomiar CPU audio oraz budowa pakietów Nix. Zmiany zależności z tej sesji mogą wymagać aktualizacji
cargoHashwdefault.nix; nie było to weryfikowane. - Zmiany pozostają niezatwierdzone w Git, w tym nowe
tasks/moving.rsitests/digging.rs. Przed commitem sprawdź pełnegit status, aby uwzględnić także pliki nieśledzone. Nie wykonano commita ani publikacji.
W tym kroku zmieniono wyłącznie dokumentację; nie rozpoczynano nowych poprawek ani refaktoryzacji. Końcowe nix develop -c cargo check --all-targets zakończone sukcesem; testów nie powtarzano po zmianie samej dokumentacji.
2026-10-18 — postęp zadań w panelu i obowiązkowe adnotacje typów
Kolejka pod Tab pokazuje osobno postęp bieżącej kratki (Step) i całego zadania (Total). Całość jest liczona według początkowej liczby kratek: wykonane etapy plus ułamek bieżącego. Oba typy zadań przechowują total_steps, zachowywane także przy zmianie Moving/Digging wskutek zmiany terenu. Zadania oczekujące pokazują 0%, zakończone osiągają 100%; pusta trasa nie powoduje dzielenia przez zero.
Dodano do docs/AGENTS.md obowiązek jawnych adnotacji typów w nowym i zmienianym kodzie, włącznie z testami, parametrami domknięć i wynikami funkcji. Rozróżniono adnotacje typów od rzeczywistych konwersji wartości; nie wykonywano masowego przepisywania wcześniejszego kodu.
Dodano 4 testy: postęp całego kopania między etapami, zachowanie początkowej liczby etapów przy konwersji typu, formatowanie kopania i oczekującego ruchu oraz renderowanie panelu Tab z aktywnym ruchem (Step: 50% | Total: 75%) i kolejnym zadaniem na 0%. Zaktualizowano README i dokumentację.
Weryfikacja przez nix develop -c: cargo check --all-targets, cargo test --all-targets (45 zaliczonych), cargo fmt --all -- --check i cargo clippy --all-targets zakończone sukcesem. Clippy raportuje 50 dotychczasowych ostrzeżeń biblioteki i 4 ostrzeżenia unused_unit w testach za jawne -> (), wymagane nową konwencją. Nie wykonywano ręcznej sesji terminala ani budowy pakietów Nix.
2026-10-18 — osobne zadanie Moving
Dodano MovingTask i wariant Tasks::Moving. Przeniesiono do niego licznik 3-sekundowego przejścia, procentowy postęp i reset dla każdej kratki. DiggingTask zawiera teraz tylko stan kopania. Eksporty i delegowanie wspólnego traitu Task obsługują oba warianty.
Zatwierdzona spacją ścieżka jest dzielona na odcinki Moving (tunele/bazy) i Digging (kamień), z zachowaniem kolejności. Kolejka pokazuje odpowiednio ikony → i ⛏. Wykonywanie ruchu nie uszkadza struktur; wejście do świeżo wykopanego tunelu nadal następuje w ramach kopania. Gdy teren zmieni się od planowania lub jednostka wraca przez właśnie wykopane kratki, typ aktywnego zadania dopasowuje się do aktualnego celu bez utraty reszty trasy. TUI pobiera timer tylko z Moving.
Dostosowano test timera do MovingTask. Dodano regresje podziału mieszanej ścieżki i wykonania całej kolejki, zachowania durability podczas ruchu, powrotu przez świeżo wykopany tunel i zmiany typu zadania po zmianie terenu. Zaktualizowano README, mapę i instrukcje agentów.
Weryfikacja przez nix develop -c: cargo check --all-targets, cargo test --all-targets (41 zaliczonych), cargo fmt --all -- --check i cargo clippy --all-targets zakończone sukcesem. Clippy nadal zgłasza 50 ostrzeżeń biblioteki. Bez nowych zależności. Nie wykonywano ręcznej sesji TUI ani budowy pakietów Nix.
2026-10-18 — procentowy wskaźnik przejścia
Dodano na kratce poruszającej się jednostki procent ukończenia bieżącego kroku, w kolorze właściciela. Wskaźnik korzysta z istniejącego licznika ruchu, a czas przejścia i wyświetlane procenty mają wspólną stałą MOVEMENT_TICKS. Po wejściu na następną kratkę wskaźnik resetuje się; bez ruchu nie jest wyświetlany. W pomniejszonym widoku na czas ruchu zastępuje znak struktury, w pozostałych nie zasłania znacznika jednostki. Pauza ruchu zatrzymuje również postęp wskaźnika.
Dodano test rozdzielenia postępu kopania i ruchu oraz resetu po kroku. Test TUI sprawdza 50% w połowie przejścia na wszystkich poziomach zoomu, zachowanie koloru M, reset na kolejnym polu i zniknięcie wskaźnika po ukończeniu zadania. Zaktualizowano README i dokumentację.
Weryfikacja przez nix develop -c: cargo check --all-targets, cargo test --all-targets (37 zaliczonych), cargo fmt --all -- --check i cargo clippy --all-targets zakończone sukcesem. Clippy nadal zgłasza 50 ostrzeżeń biblioteki. Nie wykonywano ręcznych oględzin terminala; renderowanie sprawdzono buforem Ratatui.
2026-10-18 — czas podróży i kolor znacznika jednostki
Przejście do istniejącego tunelu lub pustej bazy trwa teraz 91 ticków, czyli około 3 sekund przy ticku 33 ms. Licznik ruchu znajduje się w zadaniu i resetuje po każdym wykonanym kroku. Zajęty cel oraz rysowanie trasy wstrzymują naliczanie. Wejście do świeżo wykopanego tunelu nadal odbywa się w ticku zniszczenia kamienia.
Znacznik jednostki w normalnym i powiększonym widoku jest osobnym Span w kolorze właściciela (Players::get_color), również na tunelu oraz przy zaznaczeniu lub oznaczeniu komórki. Dotychczasowy układ komórki i kolor jej obramowania pozostają zachowane.
Dostosowano testy ruchu, kolejek i blokad do nowego czasu. Dodano regresję natychmiastowego wejścia po kopaniu oraz test koloru znacznika dla obu graczy, dwóch poziomów zoomu i wszystkich kombinacji zaznaczenia/oznaczenia. Łącznie 35 testów przechodzi. Zaktualizowano README oraz dokumentację agentów.
Weryfikacja przez nix develop -c: cargo check --all-targets, cargo test --all-targets, cargo fmt --all -- --check i cargo clippy --all-targets zakończone sukcesem. Clippy nadal raportuje 50 ostrzeżeń biblioteki. Nie wykonywano ręcznego pomiaru czasu ani oględzin terminala; czas zweryfikowano tickami, kolory buforem Ratatui. W pomniejszonym widoku nadal wyświetlany jest wyłącznie znacznik struktury.
2026-10-18 — wykonywanie kopania przez jednostki
Podłączono BoardState::advance_turn do ticków potyczki. Zastąpiono szkic symulacji przetwarzaniem jednej aktualizacji każdej aktywnej jednostki na tick. Górnik stopniowo uszkadza kamień, po osiągnięciu zera tworzy tunel i przechodzi do niego. Ruch aktualizuje współrzędne jednostki, usuwa wykonany krok i po zakończeniu ścieżki usuwa zadanie. Kolejne zadania wykonują się w kolejności; tunele i niezajęte bazy można przechodzić bez kopania.
Kamień pokazuje pozostałą wytrzymałość procentowo na wszystkich poziomach zoomu, a istniejący panel boczny pod Tab odświeża dokładne durability. Użyto istniejącej siły kopania 0.55% maksymalnej wytrzymałości na tick, z zachowaniem części ułamkowej obrażeń (około 6 sekund na pełną kratkę).
Zaznaczenie spacją działa tylko dla własnego górnika. Podczas rysowania wybrany górnik czeka; nowa ścieżka przedłuża koniec jego kolejki. Pominięto powtarzanie tej samej kratki przy ruchu na granicy mapy. Zajęte pola i ruda blokują ruch, nie są nadpisywane. Błędne cele spoza mapy lub niesąsiadujące anulują bieżące zadanie bez utraty jednostki.
Dodano 10 testów w tests/digging.rs: rzeczywisty przepływ klawiszy i ticków, utrata durability i ukończenie kopania, ruch w obu kierunkach tylko raz na tick, kolejki i ich przedłużanie przez zaznaczenie, aktualność współrzędnych, zajęte pola, ochrona rudy, błędne/puste ścieżki, własność jednostek, pauza przy rysowaniu i renderowanie procentów oraz dokładnych wartości. Dostosowano test cofania ścieżki do wyboru rzeczywistego górnika.
Weryfikacja przez nix develop -c: cargo check --all-targets, cargo test --all-targets (33 zaliczone), cargo fmt --all -- --check i cargo clippy --all-targets zakończone sukcesem. Clippy zgłasza 50 ostrzeżeń dla biblioteki. Zaktualizowano README, mapę, instrukcje agentów i opis testów. Nie dodano zależności.
Nie wykonywano ręcznej sesji w terminalu, odsłuchu ani budowy pakietów Nix; renderowanie sprawdzono przez TestBackend. Omijanie przeszkód, wydobycie rudy, ekonomia i walka pozostają poza zakresem tej zmiany.
2026-10-18 — przeniesienie testu audio
Przeniesiono audio_repeats_after_end_of_file z src/app/threads/audio.rs do tests/audio.rs, bez zmiany jego asercji. Udostępniono load_audio przez app::threads, aby test integracyjny nadal sprawdzał produkcyjną funkcję dekodowania. Zaktualizowano docs/TESTING.md.
Weryfikacja przez nix develop -c: cargo check --all-targets, cargo test --all-targets i cargo fmt --all -- --check zakończone sukcesem. Zestaw nadal liczy 23 testy. Nie powtarzano odsłuchu ani pomiarów CPU; zachowanie odtwarzania nie było zmieniane.
2026-10-18 — zestaw testów projektu
Dodano 22 testy integracyjne w tests/cli.rs, tests/app.rs, tests/board.rs i tests/tasks.rs. Razem z wcześniejszym testem audio zestaw liczy 23 przypadki. Zakres i polecenia zapisano w docs/TESTING.md, a mapę i instrukcje agentów zaktualizowano.
Testy obejmują walidację CLI i uruchomienie binarki bez TUI, menu i klawisze potyczki, przesyłanie komend audio, renderowanie ekranów przez TestBackend, generowanie planszy, granice kursora i kamery, zaznaczanie/cofanie/anulowanie ścieżki, kolejki i postęp zadań.
Najpierw uruchomiono testy na istniejącym kodzie. Wykryły trzy błędy, następnie poprawione w ich wspólnych implementacjach:
BoardState::new: odejmowanie liczby widocznych wierszy od wysokości mapy powodowało panic przy dużym terminalu; użyto odejmowania nasycającego.Offset: konstruktor i settery pozwalały przekroczyć limit, także po resize; wartość jest teraz ograniczana do maksimum.DiggingTask::progress: obliczony postęp był odrzucany; jest teraz zapisywany z ograniczeniem do 0–100.
Nie włączano advance_turn ani nie zmieniano zasad symulacji. Zastane zmiany zależności w Cargo.toml i Cargo.lock oraz wcześniejsze zmiany audio pozostawiono; nie dodano zależności testowych.
Weryfikacja przez nix develop -c: cargo check --all-targets, cargo test --all-targets (23 zaliczone, 0 błędów), cargo fmt --all -- --check i cargo clippy --all-targets zakończone sukcesem. Clippy raportuje 51 ostrzeżeń dla biblioteki; nowe pliki testów nie zgłaszają ostrzeżeń. Nie sprawdzano urządzenia audio, pełnej symulacji ani pakowania Nix.
2026-10-18 — usunięcie aktywnej pętli audio
Przyczyna obciążenia: handle_audio bez oczekiwania wykonywał rx.try_iter() i player.empty(), także podczas normalnego odtwarzania bez komend.
Zmiany w src/app/threads/audio.rs:
- Zapętlanie przeniesiono do
Decoder::new_looped; nie trzeba sprawdzać końca utworu ani ponownie kopiować danych z cache przy każdym powtórzeniu. - Odbiór komend blokuje wątek przez
for cmd in rx; zamknięcie kanału kończy wątek. Zachowano obsługę mute, głośności, zmiany części i soundtracku oraz dotychczasowy poziom wzmocnienia. - Dodano test regresji odczytujący cały
calm.oggi kolejne 1024 próbki z zapętlonego źródła. Nie wymaga urządzenia audio. - Zaktualizowano
docs/CODE_MAP.md. Bez zmian zależności, CLI, zasobów i konfiguracji Nix.
Weryfikacja przez nix develop -c: cargo check --all-targets, cargo test --all-targets (1 test zaliczony), cargo fmt --all -- --check i cargo clippy --all-targets zakończone sukcesem. Clippy nadal raportuje 54 ostrzeżenia dla biblioteki.
Nie wykonano pomiaru CPU przed/po na urządzeniu docelowym ani odsłuchu i interaktywnego sprawdzenia komend. Usunięcie aktywnego odpytywania wynika z przepływu kodu; konkretnego procentowego spadku CPU nie zmierzono.
2026-10-18 — obowiązek poprawnej kompilacji
Dopisano do docs/AGENTS.md zakaz kończenia zadania z błędami kompilacji Rust oraz obowiązek wykonania nix develop -c cargo check --all-targets i usunięcia błędów przed zakończeniem. Zmiana dotyczy wyłącznie dokumentacji.
Weryfikacja: nix develop -c cargo check --all-targets zakończone sukcesem. Nie powtarzano testów działania gry przy zmianie samej dokumentacji.
2026-10-18 — przygotowanie kontekstu repozytorium
Cel: rozpoznać architekturę i przepływy oraz przygotować trwały kontekst do kolejnych zadań.
Wykonano:
- Przejrzano źródła Rust, manifest, konfigurację Nix, README, strukturę zasobów i szkiców UI.
- Przygotowano
docs/CODE_MAP.md: odpowiedzialności modułów, diagramy uruchomienia i renderowania, przepływ klawiszy i zadań, audio, pakowanie oraz miejsca rozszerzeń. - Przygotowano
docs/AGENTS.md: punkt wejścia dla agentów, zasady pracy, polecenia i ograniczenia weryfikacji. - Oddzielono działające ścieżki od placeholderów i niepodłączonej symulacji. Zapisano ryzyka w kodzie kopania do sprawdzenia przed jego aktywacją.
- Nie zmieniano źródeł gry ani konfiguracji. Zastana modyfikacja
flake.locknależy do wcześniejszego stanu roboczego.
Weryfikacja przez środowisko Nix:
| Polecenie | Wynik |
|---|---|
nix develop -c cargo test --all-targets |
Sukces; oba targety wykonują 0 testów |
nix develop -c cargo fmt --all -- --check |
Sukces |
nix develop -c cargo clippy --all-targets |
Sukces z 54 ostrzeżeniami dla biblioteki, raportowanymi też dla targetu testowego |
cargo run -- -h wykonywane automatycznie przez shellHook |
Kompilacja i pomoc CLI działają |
Nie wykonano: interaktywnej rozgrywki, odtwarzania audio, budowy pakietów Nix ani napraw znalezionych problemów. Brak testów oznacza, że pomyślna kompilacja nie potwierdza poprawności mechanik. Kolejne zmiany należy dopisywać jako osobne wpisy z ich walidacją.