Witaj nieznajomy!

baner

Wichry Wojny – wersja 1.14.0

- bc28266 feat(game): odświeżenie rozgrywki, kampanii i kont graczy (2026-11-09 23:17:00 +0100)
Światy i zakończenie wojny
- Nowy świat od razu przyjmuje zapisy i czeka we wrześniu 1939, w turze 1. Pierwszy wybór nacji uruchamia rozgrywkę. Na świecie zegarkowym zaczyna się pełne odliczanie do następnej tury, a na świecie z turami o stałych godzinach obowiązuje jego harmonogram.
- Uporządkowaliśmy naliczanie tur. Zegary trzymają tempo poszczególnych światów, a data i numer tury odświeżają się na mapie. W trybie turowym urlop wstrzymuje produkcję, odnawianie akcji i regenerację jednostek.
- Rozgrywka kończy się po utracie ostatniej stolicy jednej ze stron, zwycięstwie silosowym albo z końcem 1950 roku. Jeśli żadna strona wcześniej nie wygrała, upływ limitu daje remis.
- Na mapach z silosem sojusznicy dostarczają wspólny zapas barkami. Cel napełnienia zależy od liczby aktywnych graczy po mniej licznej stronie. Domyślnie trzeba utrzymać pełny silos przez 15 tur świata. Ostrzał, który obniży zapas, przerywa odliczanie.
- Po wojnie uczestnicy mogą domyślnie przez 24 godziny oglądać mapę bez mgły wojny, z minami i zanurzonymi okrętami. W podglądzie widać też nazwę jednostki lub miasta, właściciela i oznaczenie przeciwnika.
- Podsumowanie od razu pokazuje miejsca, punkty świata i przewidywane punkty globalne. Po zamknięciu podglądu punkty globalne są doliczane, a rozliczony świat znika z listy dostępnych rozgrywek.
- Kolejna edycja zachowuje zasady poprzedniej i dostaje nową nazwę z wojskowej puli. Subskrybenci otrzymują powiadomienie o nowym świecie.
Bitwy, widoczność i ruch
- Wynik walki uwzględnia modyfikatory ataku i obrony, w tym morale, doświadczenie, pogodę i sztab. Raporty pokazują faktyczne straty, zdobyte doświadczenie, punkty i udział w nagrodzie.
- Ponowienie tego samego rozkazu po utracie połączenia zwraca wynik pierwotnej bitwy bez dodatkowego ataku, zużycia akcji ani naliczenia punktów.
- Automatyczna obrona przeciwlotnicza ostrzeliwuje samolot przed jego atakiem, także gdy osłania inną sojuszniczą jednostkę. Zestrzelenie zatrzymuje bombardowanie. Trafienia osłony są rozliczane na rzecz jej właściciela i widoczne w raporcie.
- Torpedy, bomby głębinowe i ostrzał przeciwlotniczy korzystają z uzbrojenia i zasięgu plutonów. Poprawiliśmy wskazywanie celów oraz wybór broni do kontrataku.
- Zanurzenie i wynurzenie zużywają akcję. Zanurzony okręt porusza się po głębokiej wodzie, a przeciw zanurzonemu celowi można używać torped i bomb głębinowych.
- Kontakt z przeciwnikiem pojawia się na mapie i minimapie po wykryciu i znika dopiero wtedy, gdy żaden sojuszniczy obserwator go nie widzi. Sonar pokazuje wykryte cele zgodnie ze swoim zasięgiem.
- Ruch, wystawianie i łączenie jednostek uwzględniają przejezdność całej trasy. Podświetlane pola odpowiadają dostępnym rozkazom, a odmowa zachowuje akcje jednostki.
- Saper dostaje wskazanie dostępnych pól dla zasieków, smoczych zębów, min, mostów i rozminowania. Może rozbroić własną minę lub wykrytą minę wroga. Miny sojuszników pozostają ukryte.
- Na płytkiej wodzie jedna połączona konstrukcja może mieć do pięciu przęseł. Budowa wymaga wolnego heksa i zachowania żeglownego przejścia. Mosty buduje się także na rzekach. Okręty nie przepływają pod mostami.
- Artyleria polowa musi być rozstawiona przed ostrzałem. Most nie jest stanowiskiem do jej rozstawienia ani prowadzenia takiego ognia.
Miasto, fabryki i zaopatrzenie
- Biuro Rozwoju pokazuje dostępne badania, wymagania oraz efekty obecnego i następnego poziomu. Po ukończeniu rozbudowy lub badania od razu widać kolejny krok.
- Liczniki miasta i badań uruchamiają się po otwarciu widoku, a zakończenie pracy odświeża otwarte okno. Przycisk „Do miasta” prowadzi do nowo wybudowanego własnego miasta. Poprawiliśmy też wystawianie sztabu z miasta.
- Ceny i terminy w fabrykach uwzględniają technologie tak samo w podglądzie, przy pojedynczym zamówieniu i w kolejce. Poprawiliśmy zapis kolejek, także gdy zawierają kilka takich samych jednostek.
- Produkcja jednostek na światach turowych postępuje wraz z turami gracza. Na światach zegarkowych odlicza czas. Gotowe zamówienia są rozliczane również przy zamkniętej przeglądarce.
- Surowce nadal przyrastają płynnie, w tempie dopasowanym do długości tury świata. Badania zwiększają produkcję lub pojemność magazynu, a stan zapasów odświeża się w interfejsie.
Bony, punkty i awanse
- Bony przyspieszenia są wspólne dla konta, także te otrzymane w nagrodach. Ich nominał określa liczbę tur, a zasobnik pokazuje, ile czasu oznacza to na wybranym świecie.
- Dotychczasowe bony są przeliczane na nowe nominały. Bonów można używać do produkcji, rozbudowy, badań oraz skracania oczekiwania na akcję jednostki, zależnie od rodzaju licznika.
- Cennik pokazuje koszt w złocie. Większe nominały kosztują mniej w przeliczeniu na turę.
- W rankingu świata i rankingu globalnym gracze z takim samym wynikiem dzielą miejsce. Pozycja w nagłówku mapy korzysta z tych samych zasad co tabela.
- Punkty, doświadczenie i nagrody za rzeczywisty udział w walce są przypisywane właściwym graczom. Poprawiliśmy też podgląd awansów, żołdu i wymagań dostępu do jednostek.
Szkoła Oficerska
- Odświeżyliśmy listę rozkazów, postęp szkolenia i odbiór nagród. „Pokaż, gdzie kliknąć” kieruje do właściwego miejsca na mapie lub w panelu.
- Poprawiliśmy wskazówki i zaliczanie zadań związanych z koszarami, wystawieniem jednostek, fabryką, ruchem na kilka tur, łączeniem oddziałów, rankingiem, dodaniem przyjaciela i budową sztabu.
- Rozkaz budowy przyznaje bon szkoleniowy, a rozkaz przyspieszenia zalicza się po faktycznym ukończeniu produkcji za pomocą bonu. Szkolenie kończy się przyciskiem w ostatnim rozkazie.
Konto, wiadomości i interfejs
- Można logować się loginem lub adresem e-mail. Poprawiliśmy aktywację konta i odzyskiwanie hasła, w tym wiadomość z linkiem oraz formularz ustawiania nowego hasła.
- Wiadomość o resecie przychodzi w języku konta. Na stronie ustawiania hasła można zmienić język formularza i komunikatów.
- Przy pierwszej wizycie gra dobiera język z ustawień przeglądarki. Wybór flagi ma pierwszeństwo. Uzupełniliśmy tłumaczenia paneli, podpowiedzi i komunikatów.
- Poprawiliśmy wybór odbiorcy i otwieranie prywatnych rozmów, oznaczenia przeczytanych wiadomości oraz licznik nieprzeczytanych. Koperta przy cudzej jednostce pozwala od razu przejść do rozmowy z właścicielem.
- Na forum poprawiliśmy dodawanie, edycję i zgłaszanie postów, przechodzenie między stronami, oznaczenia nieprzeczytanych tematów i powiadomienia. Po nieudanym zapisie formularz zachowuje wpisany tekst.
- Panele mapy, profilu i miasta lepiej znoszą szybkie przełączanie, przerwane połączenie i spóźnione odpowiedzi. Komunikaty odmowy wyjaśniają przyczynę, na przykład zakończenie wojny lub brak dostępnej akcji.
- Zaktualizowaliśmy grę z Laravel 10 do Laravel 13. Poprawiliśmy ochronę kont i prywatnych rozmów oraz stabilność rozkazów, liczników i powiadomień.
- c4e3086 refactor(newsletter): Wprowadzenie systemu obsługi subskrypcji newslettera (2026-04-05 15:21:55 +0200)
- zastąpienie md5 generowaniem Str::uuid()
- dodanie obsługi dwóch formatów ident (md5 + uuid)
- poprawa walidacji identyfikatora w controllerze
- zachowanie działania istniejących linków produkcyjnych
- przekierowanie /crashNewsletter/{ident} do signed route
- zachowanie kompatybilności ze starymi mailami
- przygotowanie pod usunięcie legacy endpointu

- bafb15b feat(core): wdrożenie systemu promocji oraz usprawnienia czasu i rankingu (2026-04-05 11:56:43 +0200)
- dodanie formattera czasu (TimeFormatter::humanize, formatTurnTime)
- obsługa odmiany PL (godzina/minuta/sekunda)
- przygotowanie pod reuse w mailach i UI
- refactor maili:
- wykorzystanie formattera czasu w newsletterze
- zastąpienie hardcodowanych sekund
- użycie placeholderów (:human, :short)
- refactor bazy danych:
- usunięcie cascadeOnDelete dla statystyk gracza
- dodanie restrictOnDelete (ochrona danych historycznych)
- fix rankingu:
- sortowanie po globalRank
- naprawa niespójnej kolejności graczy
- implementacja systemu promocji:
- migracja logiki do PromotionService i PromotionRepository
- obsługa promocji cyklicznych
- endpoint timera promocji (expire)
- obsługa draw / reroll / buy
- zapis wylosowanych jednostek w JSON
- zabezpieczenie przed wielokrotnym losowaniem
- frontend (vanilla JS + UI):
- implementacja akcji promocji (draw, reroll, buy)
- dodanie timera odliczającego
- wizualizacja ceny promocyjnej i oszczędności
- dodanie badge „ZUŻYTE” dla wykorzystanej promocji

- 96061d3 refactor(messages, endWar): ujednolicenie systemu komunikatów i obsługi zakończenia wojny (2026-04-02 20:40:53 +0200)
- Zakończenie wojny:
- wydzielenie logiki zakończenia wojny (capitale + silosy)
- eliminacja redundancji zapytań (snapshot + finalize)
- poprawa wyboru zwycięzcy (top gracz po points)
- dodanie stałego workera do obsługi kolejek Redis:
- dodanie kontenera queue_worker_wichry w docker-compose
- uruchomienie php artisan queue:work jako osobnego procesu
- zapewnienie automatycznego przetwarzania maili po restarcie systemu
- integracja pełnego flow: afterCommit → Redis → worker → wysyłka maili
- przygotowanie systemu pod asynchroniczne zadania (newsletter, eventy, powiadomienia)
- przebudowa systemu wiadomości:
- dodanie obsługi komunikatów systemowych (sender_type = system)
- wprowadzenie conversations dla systemu (channel_key 0000000000-*)
- integracja wiadomości z conversation_participants
- ujednolicenie warstwy danych:
- normalizacja komunikatów (cashbill + system)
- wprowadzenie wspólnej struktury (body, type, date, source)
- uproszczenie widoków blade
- obsługa statusu odczytu:
- wykorzystanie conversation_participants.last_read_at jako seen_at
- zmiana whereExists na join w zapytaniach
- przygotowanie pod oznaczanie wiadomości jako przeczytane
- poprawki błędów:
- fix relacji user_id vs player_id
- fix duplikacji wiadomości (join vs exists)
- fix insert conversation_participants (niespójne kolumny)
- fix błędów aliasów i typów (stdClass vs array)

- 3e4687e fix(game, ui): system trybów akcji jednostek + spójny system ikon i stanów disabled, zakończenie wojny (2026-03-31 22:31:51 +0200)
- wprowadzenie panelu trybów ataku (attack-modes-panel):
- obsługa wielu trybów (ostrzał główny, przeciwlotniczy, torpedy, sonar)
- dynamiczne generowanie trybów przez backend (attackModes)
- uporządkowanie logiki wyboru trybu ataku
- refaktoryzacja systemu akcji jednostek:
- ujednolicenie podejścia do canUse*/can* (single source of truth)
- rozdzielenie logiki akcji (canJump) od komunikatów (tooltipy)
- poprawa spójności między UI a backendem
- wprowadzenie systemu stanów UI:
- dodanie klasy .disabled dla zablokowanych akcji
- wizualne oznaczenie: opacity + cursor not-allowed
- zachowanie interakcji (tooltip zamiast blokady pointer-events)
- poprawa UX tooltipów:
- dynamiczne komunikaty zależne od przyczyny blokady
- eliminacja niespójności (UI vs logika akcji)
- przebudowa systemu ikon:
- wprowadzenie spójnego stylu ikon (okrąg + kolor tła + symbol)
- rozdzielenie kategorii (atak, budowa, transport, utility)
- uproszczenie ikon do stylu systemowego (bez nadmiaru detali)
- nowe ikonki:
- łączenie jednostek (węzeł + rozdzielone liny)
- załadunek na barkę desantową (statek + strzałka)
- budowa (cegły jako uniwersalny symbol akcji budowy)
- poprawa spójności wizualnej:
- ujednolicenie tła ikon między stanem default i hover
- eliminacja różnic kontrastu między stanami
- wprowadzenie zasady: hover zmienia stan, nie styl
- poprawki CSS:
- centrowanie panelu trybów względem przycisku
- poprawa hover area (utrzymanie panelu po najechaniu)
- uporządkowanie klas .attack-mode, .disabled, .unit-actions
- przygotowanie pod dalszą rozbudowę:
- skalowalny system akcji (engineer, paratrooper, naval)
- możliwość łatwego dodawania nowych trybów bez zmian w UI
- poprawa logiki liczenia stolic i warunku zakończenia wojny:
- naprawa zliczania dzielnic stolic po tactical_data_id
- usunięcie błędnego fallbacku opartego o owner_type=system
- poprawa warunku continue_battle
- eliminacja przypadków, w których wojna nie kończyła się mimo zniszczenia stolicy
- migracja klasyfikacji generalnej do systemu ranking:
- usunięcie bodyRow na rzecz nth-child
- dostosowanie do ranking-5
- ujednolicenie layoutu z pozostałymi rankingami
- 7df4465 console.log (2026-03-29 22:43:41 +0200)
- a1fa3bb refactor(units): dołączenie tactical_data do zapytań i przeniesienie capability jednostek (2026-03-29 22:42:17 +0200)
- dodanie joinów do tactical_data w baseUnitQuery
- wykorzystanie capability zamiast pól under_water i field_artillery
- uproszczenie logiki backendu i eliminacja zbędnych zapytań
- przygotowanie pod usunięcie legacy pól z tabeli units
- f0ee84a fix(battle): poprawne przypisywanie nation dla jednostek systemowych (2026-03-28 12:31:38 +0100)
- dodanie fallbacku nation na podstawie tactical_data_id
- obsługa miast systemowych bez rekordu w players
- naprawa błędu null nation w systemie walki
- umożliwienie niszczenia miast (stolic)

- ebaedc6 feat(ui): redesign panelu jednostki i galerii (mobile + desktop) (2026-03-27 22:42:25 +0100)
- przebudowa panelu jednostki:
- wprowadzenie responsywnego layoutu (desktop / mobile)
- centralne pozycjonowanie na mobile
- refactor akcji jednostki:
- nowe ikony: ruch, atak, naprawa pancerza
- dodanie systemu tur (+ / -) powiązanego z ruchem
- reorganizacja layoutu (unit-actions jako grid/flex)
- obsługa dynamicznych stanów (brak ruchu / ataku / naprawy)
- ulepszenie UX:
- dodanie hover (scale + glow) dla aktywnych akcji
- poprawa widoczności timerów (zegarki)
- stylizacja timerów
- cleanup CSS:
- ujednolicenie .unit_panel (base + media queries)
- lepsza separacja layoutów (desktop/mobile)
- f31c60f refactor(ui): przebudowa galerii oraz sekcji reklam (2026-03-26 12:09:00 +0100)
- przebudowa galerii screenshotów:
- dodanie osobnego slidera dla mobile
- pozostawienie sceny (oficer + tablica) dla desktop
- inicjalizacja slidera po otwarciu modala
- dodanie obsługi swipe na mobile
- rozszerzenie lightboxa o mobile-gallery
- refactor sekcji reklam:
- usunięcie tabeli z ofertą jednostek reklamowych
- wprowadzenie layoutu kart (grid + flex)
- dodanie struktury danych jednostek reklamowych
- optymalizacja UX:
- mobile: uproszczony widok (bez obrazków, szybki render)
- desktop: podgląd bannerów (>= 790px)
- zmiana layoutu kart na split (obraz + treść) dla mniejszej wysokości
- poprawa czytelności sekcji ceny i widoczności
- responsywność:
- mobile: jedna kolumna
- tablet: grid
- desktop: jedna kolumna wycentrowana (layout ofertowy)

- 7e21a4a refactor(core): ujednolicenie systemów walki, nagród i lifecycle jednostek (2026-03-24 22:24:07 +0100)
- przebudowa systemu ataku:
- usunięcie booleanów (torpedo/anti_aircraft)
- wprowadzenie attack_* (atak_flota, atak_podwodne, atak_lotnictwo)
- rozdzielenie canAttack* / canUse*
- obsługa stanów jednostek (np. zanurzenie)
- poprawa logiki ostrzału przeciwlotniczego
- integracja systemu nagród:
- zastąpienie addGold() przez addReward()
- integracja referralów z users_rewards
- dodanie source i payload do rewardów
- ujednolicenie flow z collectGold()
- uporządkowanie kuponów i lifecycle:
- usunięcie transakcji z CouponService
- uproszczenie addBonuses / addCouponDirect
- dodanie batchowego addCoupons
- centralizacja usuwania jednostek w UnitService
- poprawa podziału service / repository
- refactor panelu jednostki (UI):
- przeniesienie unitId do dataset
- uniezależnienie od struktury DOM mapy
- poprawa obsługi mobile (event bubbling)
- blokada hover mapy pod panelem
- przebudowa layoutu statystyk

- ed8b85e fix(minimap): poprawa skalowania minimapy w trybie responsywnym (2026-03-13 22:47:01 +0100)
- naprawiono skalowanie minimapy przy szerokości < 460px
- usunięto konflikt CSS powodowany przez shorthand
- uporządkowano obliczanie pozycji jednostek (hex → world → minimap)
- dodano automatyczne przeliczanie przy zmianie rozmiaru elementu (ResizeObserver)
- refactor kodu minimapy i usunięcie duplikacji obliczeń
- ee2ea67 refactor(wiadomosci,platnosci): uporządkuj obsługę konwersacji i odpowiedzi API (2026-03-11 22:54:35 +0100)
- usunięto kolumnę is_blocked z conversation_participants
- widoczność rozmowy oparta wyłącznie na blocked_at
- dodano indeks (player_id, blocked_at) dla zapytań inboxa
- poprawiono zapytania konwersacji aby ignorowały zablokowane rozmowy
- przy wysłaniu wiadomości rozmowa jest automatycznie przywracana (blocked_at = null)
- wprowadzono enum CashbillStatus zamiast magicznych stringów statusów
- poprawiono zapis statusów płatności w bazie
- poprawiono obsługę odpowiedzi API pmSend (html.html zamiast html)
- uporządkowano aktualizację DOM po wysłaniu wiadomości

- b0cd032 feat(messages-mobile): responsywny widok systemu wiadomości, zastąpienie tabeli jednostek layoutem flex (unifikacja data-), przebudowa układu statystyk kampanii (mobile/desktop) (2026-03-04 00:31:02 +0100)
- nadpisano desktopowe width: 770px dla messageWindow w trybie mobile
- zastąpiono absolute layout kolumnowym flexem w @media
- dodano klasę sterującą widocznością sekcji
- zaktualizowano JS o przełączanie widoku
- zapewniono kompatybilność z istniejącą logiką desktopową
- usunięcie layoutu opartego na <table> (5 elementów w wierszu)
- wdrożenie flexbox z zawijaniem elementów
- pełne przejście na atrybuty data-
- uproszczenie i zabezpieczenie logiki liczenia załadunku (units + surowce)
- poprawa warunków wyświetlania przycisków
- poprawa responsywności i układu systemu wiadomości w radio (na mobile)
- zastąpienie siatki strukturą corps-data (flex)
- poprawa responsywności (pion mobile / poziom desktop)
- uporządkowanie headera kampanii
- korekta proporcji ikon i odstępów
- usunięcie zbędnego position: relative

- 8c5c795 feat(combat): agregacja baterii OPL + minimalny zasięg baterii + poprawa obsługi błędów w ruchu jednostki + refaktor widoku raportu bojowego - agregacja jednostek w baterie na podstawie connect_unit - suma ataku przeciwlotniczego dla składowych - zasięg baterii liczony jako MIN(ostrzal_przeciwlotniczy) - cap automatycznego ostrzału do 5 heksów - dynamiczne nazewnictwo (jednostka / kompania / bateria) (2026-03-02 22:53:33 +0100)
- dodano obsługę json.error w wrapperze API.post
- poprawiono przekazywanie err.message do toast
- usunięto axiosowy schemat err.response?.data
- ujednolicono obsługę success=false dla błędów domenowych
- wykonano refaktor widoku raportów bojowych
- poprawiono metodę pobierającą dane taktyczne fighterów w bitwie

- a0442ee feat(core): refaktoryzacja systemu rang i UI oraz wdrożenie transakcyjnej wymiany złota (2026-02-28 02:18:06 +0100)
- migracja logiki rang z legacy (Symfony) do architektury Service/Repository
- implementacja poprawnego naliczania żołdu po awansie i degradacji
- eliminacja surowych zapytań SQL z warstwy domenowej (SRP)
- wdrożenie namespacowanego systemu przycisków .ww-btn
- konsolidacja i redukcja duplikacji CSS
- odseparowanie stylów gry od Bootstrapa
- dodanie transakcyjnej wymiany złota na kredyty
- zastosowanie lockForUpdate w celu eliminacji race condition
- atomowa aktualizacja sald w obrębie DB::transaction
- logowanie operacji w financial_operations
- backend zwraca pełne zaktualizowane salda

- 996bbf6 refactor(timers): pełna migracja liczników na system data-* i usunięcie legacy (2026-02-24 23:11:41 +0100)
- usunięcie starego systemu opartego o id oraz atrybut vari
- wprowadzenie jednolitego klucza data-timer-key (scope:type:mode:entityId)
- refaktoryzacja loadTimer oraz handleTimerFinish pod nową strukturę
- migracja liczników jednostek, budynków, technologii i kolejki produkcji
- dostosowanie militaryContainer oraz realizacji kuponów do nowego formatu
- uproszczenie i ujednolicenie czyszczenia interwałów
- usunięcie prefixów legacy (zegarek_*, timerKU_ itd.)
- 0719732 fix(city): poprawiono odczyt aktywnego badania i poprawiono budowanie timerów technologii i budybków (2026-02-22 23:42:47 +0100)
- modyfikacja kodu obsługującego payload miasta
- pobierany jest pierwszy rekord lub null
- naprawiono błąd technology_id

- b57b141 feat(battle): refactor widoczności jednostek po walce (2026-02-22 13:02:48 +0100)
- wprowadzenie relacyjnej widoczności (stealth)
- korekta removeUnit przy zanurzonych okrętach podwodnych
- zachowanie spójności z FOW i unitsToDisappear
- a22a37e refactor(city): przejście na pełny refresh widoku miasta po akcjach budowy (2026-02-22 11:27:00 +0100)
- wprowadzono centralną metodę refreshCity()
- usunięto ręczne usuwanie .tech-panel i dynamiczne tworzenie timerów
- zsynchronizowano frontend z buildOwnCityViewData()
- backend stał się jedynym źródłem prawdy dla stanu budynków i badań
- uproszczono integrację systemu data-* timerów

- d2ef46c fix(economy): poprawa odczytu poziomu technologii produkcji oraz wizualizacja zajętości magazynu (2026-02-21 18:55:11 +0100)
- usunięto użycie legacy kolumn tech_2 i tech_3
- dostosowano produkcję do tabeli technologies
- naprawiono błędne obliczanie przyrostu surowców
- dodano wyliczanie procentowej zajętości magazynu
- dodano pasek postępu z dynamiczną szerokością
- dodano tooltipy z aktualnym stanem i pojemnością
- zmieniono szerokość paska na 80% dla lepszej estetyki
- c697bb7 refactor(staff): rozdzielenie logiki domenowej od repository i warstwy widoku (2026-02-17 18:56:46 +0100)
- przeniesienie zapytań DB z Service do Repository
- usunięcie renderowania Blade z logiki domenowej
- uporządkowanie akcji sztabu (1–4)
- oczyszczenie transakcji i warstwy persistence

- 74f963c feat(rewards): renderowanie listy odebranych nagród jako widok Blade (2026-02-13 19:02:07 +0100)
- wydzielenie widoku collect-gold-result.blade.php
- renderowanie HTML po stronie Laravel zamiast budowania stringów
- prezentacja szczegółowej listy nagród (źródło + kwota)
- podsumowanie łącznej ilości odebranego złota
- 6653201 refactor(units): przeniesienie logiki domenowej do serwisów + poprawa FOW i sonaru (2026-02-13 18:10:12 +0100)
- przeniesienie logiki toggleUnderwater, connectUnits i activateSonar z Repository do Service
- ograniczenie Repository do operacji DB (Query Builder)
- poprawa widoczności jednostek zanurzonych (FOW)
- poprawa synchronizacji ruchu względem widoczności
- dodanie jednorazowego renderu (przy uzyciu sonaru) jednostek zanurzonych sonar-ghost
- dodanie obsługi dźwięku sonaru (loop + auto stop)

- afb666c feat(economy): przebudowa ekonomii premium 2026 + wprowadzenie pakietów (2026-02-12 17:08:50 +0100)
- zbalansowano ceny złota względem rynku
- zmodyfikowano wartości kuponów czasowych i sponsorskich
- ujednolicono model wyceny bonów (value-based pricing)
- dodano pakiety premium (start_world, mobilization_general, combat_readiness)
- zintegrowano bundle z systemem płatności CashBill
- rozdzielono obsługę płatności gold / bundle (product_type, product_code)
- zabezpieczono webhook przed podwójnym wykonaniem
- przygotowano fundament pod dalszą rozbudowę premium
- 9eae459 feat(ui): responsywny panel wylogowania (popover desktop, bottom-sheet mobile) (2026-02-10 15:51:49 +0100)
- przeniesienie panelu wylogowania poza lewe menu
- tryb popover zakotwiczony do przycisku na desktopie
- tryb bottom-sheet dla urządzeń mobilnych
- usunięcie problemów z pozycjonowaniem absolute na mobile
- 22e0fbd fix(ranking): poprawa widoczności graczy niezależnie od stanu sesji (2026-02-10 12:50:12 +0100)
- usunięcie filtrowania po players.active
- ranking oparty o players + delete_account_at
- poprawna obsługa graczy wylogowanych

- ecf87f3 feat(engine): uruchomienie silnika czasu gry i maintenance świata (2026-02-08 20:40:25 +0100)
- uruchomienie schedulerów Laravel (cron → schedule → command)
- przeniesienie legacy logiki tur świata do serwisów
- dodanie maintenance świata (nieaktywni gracze, czyszczenie danych)
- implementacja czyszczenia kont i powiązanych danych graczy
- przenoszenie jednostek nieaktywnych graczy do sklepu
- integracja mailingu przypomnień i uśpienia kont
- pełne usunięcie legacy SQL (implode, ręczne query)
- ccb5577 refactor(staff): przeniesienie obsługi sztabów do bezpiecznych akcji backendowych (2026-02-02 22:39:35 +0100)
- przeniesiono logikę operacji sztabu z frontendu do backendu
- dodano podpisane payloady (dane + jel) dla wszystkich akcji sztabu
- ujednolicono obsługę: zgłoszenie, przyjęcie i usunięcie jednostki
- poprawiono integralność danych (FK, NULL zamiast 0)
- usunięto duplikację zapytań i błędy GROUP BY
- spięto akcje sztabu z api.js

- 87f4169 refactor(ui): poprawa widoczności i stylistyki informacji o cookies (2026-01-28 22:16:29 +0100)
- usunięto agresywny czerwony pasek informacji o cookies
- dostosowano wygląd belki do stylistyki interfejsu gry
- dodano wyraźny akcent wizualny oddzielający komunikat od UI
- poprawiono czytelność i hierarchię informacji prawnej
- zachowano nienachalny charakter komunikatu (bez blokowania rozgrywki)
- fdbb1a2 refactor(sztaby, forum): uporządkowanie logiki sztabów i poprawa UX widoku, poprawa UX widoku forum (2026-01-28 00:42:49 +0100)
- poprawiono wyznaczanie ID sztabu (rozróżnienie jednostki HQ i jednostek podległych)
- ujednolicono dane sztabu (nazwa, poziom, doświadczenie, bonusy)
- poprawiono prezentację bonusów (bez zbędnych zer po przecinku)
- przebudowano layout sztabów na flex (desktop + mobile)
- dodano dynamiczne centrowanie i fokus mapy na wybranym sztabie
- rozdzielono akcje: lokalizacja sztabu vs edycja nazwy
- poprawiono responsywność i czytelność UI na urządzeniach mobilnych
- poprawiono responsywność i czytelność UI forum

- 94871eb refactor(ui): przebudowa panelu jednostek sponsorskich (2026-01-27 00:11:19 +0100)
- zastąpiono tabelę układem flex + overflow (lepszy UX na mobile)
- dodano pasek typów jednostek jako flex z oznaczeniem aktywnego typu
- stan aktywnego typu renderowany po stronie Blade (spójność po reloadzie)
- poprawiono responsywność panelu (brak wychodzenia poza ekran)
- zachowano sprite i delegację zdarzeń bez zmiany logiki gry
- d0d299c style: poprawki wizualne listy kuponów i listy jednostek (2026-01-26 21:51:05 +0100)
- dodano naprzemienne obramowania wierszy
- ujednolicono odstępy w
- poprawiono kontrast separatorów
- drobne korekty alignów w kolumnach

- 6da951d feat(city): mobilny HUD rozbudowy budynku z wymaganiami i CTA (2026-01-26 16:11:26 +0100)
- dodano HUD rozbudowy budynku w widoku miasta na mobile
- pokazano kontekst budynku w HUD
- przycisk Rozwijaj technologię widoczny tylko po spełnieniu wymagań
- ac58a79 fix: poprawa global_rank oraz obsługi zamykania activeWindow (2026-01-25 17:29:44 +0100)
- 2c41cda fix: poprawa stylów widoków (2026-01-25 16:04:34 +0100)
- 4023bbb Update CHANGELOG.md (2026-01-25 12:28:49 +0100)

- 7eec547 Merge branch 'main' of github.com:miccom1977/laravel_wichry (2026-01-25 12:22:18 +0100)
- 4a1187a chore(ci): poprawa generowania changeloga z body commitów (2026-01-25 12:21:54 +0100)

- 76c544c Zmiana workflow (2026-01-25 12:14:39 +0100)

- d092592 refactor(research): ujednolicenie rozwoju technologii i budynków, uporządkowanie styli mapy i jednostek (2026-01-25 11:48:56 +0100)
- wydzielenie wspólnych metod liczenia kosztów i czasu
- rozdzielenie logiki technologii i rozbudowy budynków
- backend jako źródło prawdy dla zakończenia budowy/badań
- integracja timerów z endpointem finalizującym rozbudowę
- blokada równoległej rozbudowy i badań
- poprawa UI wymagań (spełnione / brakujące zasoby)
- przejście na timery oparte o data-* (brak kolizji liczników)
- przeniesienie styli do osobnych plików (map, components)
- zmiana layoutu listy jednostek z table na flex
- poprawa empty-state w koszarach
- ujednolicenie ścieżek do assetów
- przygotowanie struktury pod dalszy refaktor CSS
- eae4a5e fix(city): poprawiono błąd z null player_id przy jednostkach systemowych (2026-01-06 19:19:59 +0100)

- 1b514b8 refactor(world): uporządkowano generowanie miast i widoczności (2026-01-06 17:27:37 +0100)
- ede483b refactor(map): rozdzielono pobieranie mapy i jednostek oraz uporządkowano minimapę (2026-01-06 15:13:53 +0100)

- 5b5a198 wyczyszczenie systemu z logów (2026-01-05 21:47:29 +0100)
- 20d67ed refactor(ui): przebudowa interfejsu forum, radia i ustawień pod flex i mobile (2026-01-05 21:43:58 +0100)
- bc426c8 refactor(units): uporządkowanie łączenia jednostek i obsługi formacji (2026-01-01 16:08:56 +0100)
- 506b84b feat(bonus-codes): panel administracyjny i przebudowa obsługi kodów bonusowych (2025-12-31 14:17:06 +0100)
- e525a06 fix(factory): poprawa logiki kolejki produkcji jednostek (2025-12-30 22:57:31 +0100)

- 16474f2 fix(release): poprawne wykrywanie ostatniej wersji semver (2025-12-30 20:22:49 +0100)
- 41e8f39 Update release.yml (2025-12-30 20:09:43 +0100)
- 6a677c6 release: v.1.0 [skip ci] (2025-12-30 18:59:03 +0000)
- 942ae2c feat(battle-report): nowa lista raportów bitewnych i widok bitwy (2025-12-30 19:53:36 +0100)
- 3d847d0 Update CHANGELOG.md (2025-12-09 18:41:26 +0100)
- 231da14 Update CHANGELOG.md (2025-12-09 18:25:58 +0100)
- 9e6b47b release: v [skip ci] (2025-12-09 17:23:47 +0000)

- 3b37725 refactor(chat): przywrócono działanie kanałów chatu w blade (2025-12-09 18:20:50 +0100)
- 95ec00b refactor(militaryContainer): Przywrócono i poprawiono działanie kontenera podręcznego, zakup bonów (2025-12-08 23:10:31 +0100)
- 4a21a2f refactor(odbiór żołdu): Przywrócono system odbioru żołdu (2025-12-07 23:05:23 +0100)
- 3639236 feat(minimap): wprowadzono dwukierunkową synchronizację mapy z minimapą i dynamiczny viewport (2025-12-04 03:01:05 +0100)
- 447c596 feat(minimap): dodano prostokąt widoku i poprawiono synchronizację (2025-12-04 01:48:34 +0100)
- 5759d74 fix: uporządkowano system wiadomości Prywatnych (2025-12-02 22:03:38 +0100)
- 9a3d83d fix: przywrócono działanie przycisków lewego menu i systemu forum po zmianie silnika gry (2025-11-12 01:28:40 +0100)

- 79efc72 refactor(workflows): Modyfikacja inicjalizacji wydania wersji w github Actions (2025-11-08 21:57:53 +0100)

- cf61b7f refactor(map): migracja modułów i komponentów z jQuery/Twig do VanillaJS + Blade, zmiana symfony na Laravel Query Builder (2025-11-08 11:54:33 +0100)

- 14c8122 refactor: przeniesienie meta, footer i nav do komponentów Blade (2025-11-03 01:03:30 +0100)

- 66e25dd chore: aktualizacja workflow release.yml (2025-11-02 23:54:38 +0100)

- bf51964 Automatyczna aktualizacja changeloga [skip ci] (2025-11-02 21:45:20 +0000)
- 8083160 Zmiana silnika z symfony na laravel (2025-11-02 22:45:00 +0100)
- bb108ce Zmiana silnika z symfony na laravel (2025-11-02 22:43:11 +0100)
- 7e58558 Zmiana silnika z symfony na laravel (2025-11-02 22:41:58 +0100)
- 3fe0f3a Automatyczna aktualizacja changeloga [skip ci] (2025-11-02 21:40:10 +0000)
- 65670ff Update release.yml (2025-11-02 22:39:58 +0100)
- 8ccebfe Zmiana silnika z symfony na laravel (2025-11-02 22:36:08 +0100)
- 33d0cc1 my first commit (2025-09-18 15:29:52 +0200)
PARTNERZY
Ski Jumps - skoki narciarskie gra online Najlepsze MMORPG
Strona korzysta z plików cookie w celu realizacji usług i prawidłowego działania serwisu. Możesz określić warunki przechowywania lub dostępu do cookie w Twojej przeglądarce lub konfiguracji usługi
zamknij