Lista wszystkich wersji aplikacji KSeFka.
Dodane
Stawki VAT dla sprzedaży zagranicznej — na fakturze, w szablonie i w kartotece produktów można teraz wybrać `0% WDT` (wewnątrzwspólnotowa dostawa towarów), `0% eksport`, `o.o.` (odwrotne obciążenie), `n.p.` oraz `n.p. UE` (usługi z art. 100 ust. 1 pkt 4). Dotychczasowe jedyne `0%` oznaczało dla KSeF zawsze krajowe zero — kto wystawiał WDT albo eksport, deklarował mimowolnie złą kategorię; teraz wybór jest jawny: `0% (kraj)`, `0% WDT` albo `0% eksport`. Stawki z dokumentów sprzed tej wersji działają bez zmian i znaczą dokładnie to samo co wcześniej. Przy synchronizacji faktur otrzymanych wariant stawki (WDT, eksport, usługi UE) jest od teraz zachowywany, a nie sprowadzany do `0%`/`n.p.` (#1140).
Walidacja sumy kontrolnej numeru rachunku bankowego i IBAN (mod-97, ISO 7064/13616) — przy dodawaniu i edycji rachunku aplikacja wykrywa od razu pomyłkę w jednej cyfrze i osobnym komunikatem odróżnia błąd formatu od błędu sumy kontrolnej. Wcześniej sprawdzała tylko strukturę numeru (26 cyfr NRB, kod kraju i długość dla IBAN), więc przekręcony numer przechodził walidację i trafiał na fakturę oraz do kodu QR na PDF. Import konfiguracji sprawdza tylko kształt numeru, nie sumę kontrolną, żeby nie gubić po cichu rachunków zapisanych przed tą wersją — pełna walidacja włącza się przy najbliższej edycji (#1111).
Kolumna "VAT w PLN" w podsumowaniu VAT na PDF faktur walutowych — dla faktur w EUR, USD i innych walutach obcych kontrahent widzi teraz obok kwoty VAT w walucie obcej także jej przeliczenie na złote, dla każdej stawki i w wierszu "Razem", bez ręcznego przeliczania po kursie. Kolumna pojawia się tylko gdy waluta faktury jest inna niż PLN i znany jest kurs; faktury w PLN wyglądają bez zmian. Przeliczenie korzysta z kursu do celów VAT (art. 106e ust. 11), jeśli jest ustawiony w formularzu, w przeciwnym razie z kursu umownego faktury (#916).
Pełny słownik kodów krajów FA(3) w polu kraju kontrahenta i siedziby — wyszukiwanie po nazwie kraju albo kodzie ISO zamiast krótkiej, zamkniętej listy, więc kontrahenci z Kanady, Hongkongu, Wielkiej Brytanii, Chin i pozostałych krajów spoza dotychczasowego zestawu dają się teraz wybrać wprost, bez obchodzenia formularza. Aplikacja waliduje zapisany kod względem tego samego słownika (#1115).
Poprawione
Faktura bez wybranego kontrahenta i bez wpisanego NIP zapisuje się poprawnie. Zapis kończył się dotąd błędem bazy (`NOT NULL constraint failed: invoices.contractor_is_jst`) mimo że formularz oznacza kontrahenta jako opcjonalnego — bindowanie danych kontrahenta wysyłało jawny `NULL` do kolumn `contractor_is_jst`/`contractor_is_gv` zamiast wartości domyślnej; dotyczyło to tworzenia faktury, edycji z usunięciem kontrahenta i importu backupu. Przy okazji: dane kontrahenta wpisane ręcznie bez nazwy (np. sam NIP albo adres) formularz odrzuca teraz czytelnym komunikatem, zamiast przepuszczać je do tego samego błędu bazy albo gubić po cichu (#1151).
Faktury ze stawką 0% przechodzą wysyłkę do KSeF. Podsumowanie VAT w generowanym XML trafiało do pól, których schemat FA(3) nie zna (`P_13_6`/`P_14_6`), więc KSeF odrzucał każdą fakturę z zerową stawką; historyczne 7% i 22% lądowały z kolei w polach o innym znaczeniu prawnym (ryczałt taksówek i procedura szczególna). Mapowanie stawek na pola podsumowania zostało przepisane według adnotacji urzędowego schematu i objęte testami walidacji XSD; przy fakturach walutowych kolumna "VAT w PLN" na PDF sumuje się teraz dokładnie do kwot wysłanych do KSeF (#971).
Narzędzie wiersza poleceń działa na Linuksie z pakietu .deb. Plik `ksefka-cli` trafiał do paczki bez prawa uruchamiania, więc każde uruchomienie kończyło się komunikatem o braku dostępu, a przycisk instalacji CLI w Ustawieniach tworzył dowiązanie do pliku, którego nie da się wykonać. Skrypt wydania kopiował gotowe binarium na pusty plik zastępczy, a `cp` zostawia prawa pliku docelowego. Dotyczyło każdego wydania .deb od czasu dołączenia CLI do pakietu, czyli od 0.2.0 (#1134).
Aplikacja nie ginie już przy starcie na Linuksie z sesją Wayland. Zapamiętany rozmiar okna rósł przy każdym uruchomieniu na zestawie monitorów o różnym skalowaniu i przy dostatecznie dużej wartości (u zgłaszającego 28252×20708) przekraczał zakres, którym GTK liczy bufor rysowania — proces kończył się naruszeniem ochrony pamięci, zanim pokazał okno. Zapamiętany rozmiar jest teraz sprawdzany przed startem i odrzucany, gdy wykracza poza rozsądek; okno dostaje wtedy wymiary domyślne. Ta sama wada rozdymała okno na macOS i Windowsie, tylko tam kończyła się oknem większym od ekranu zamiast awarią. Kto już ma taki stan na dysku, dostanie go wyczyszczonego przy pierwszym uruchomieniu nowej wersji (#1106).
Okno nie otwiera się już większe, niż było przy zamykaniu. Rozmiar zapisywał się w pikselach fizycznych i wracał jako fizyczne, więc po przeniesieniu okna na monitor o innym skalowaniu te same liczby znaczyły co innego i okno rosło z każdą taką przeprowadzką. Przy starcie jest teraz przycinane do ekranu, na którym faktycznie ląduje. To ta sama wada, która na Linuksie z Waylandem kończyła się awarią (#1106).
Log startowy na Linuksie zapisuje, czy sesja graficzna to Wayland czy X11. Zgłoszenie awarii na Waylandzie zaczynało się dotąd od pytania, czy sesja to Wayland czy X11. Teraz odpowiedź jest w dzienniku, zapisana zanim pojawi się okno, więc przetrwa nawet awarię przy starcie (#1106).
Baner nowej wersji w pasku bocznym nie powtarza już tego samego zdania dwa razy. Pod nagłówkiem "Nowa wersja 0.13.2" stało napisane "Nowa wersja KSeFka v0.13.2" i tyle. Teraz jest tam pierwsza zmiana z danego wydania, a wydanie bez opisu nie dostaje tej linijki wcale (#1128).Dodane
Powiadomienie o nowej wersji na Windows i Linuksie — aplikacja sprawdza teraz listę wydań i pokazuje w pasku bocznym baner z numerem nowej wersji oraz przyciskiem otwierającym stronę pobierania. Wcześniej sprawdzanie aktualizacji na tych systemach kończyło się po cichu błędem, bo manifest automatycznej aktualizacji obejmuje wyłącznie macOS — o nowym wydaniu można było dowiedzieć się jedynie wchodząc na stronę. Na macOS bez zmian: aktualizacja nadal instaluje się w miejscu, jednym kliknięciem. Baner pojawi się przy wydaniu następującym po tym, bo dopiero ta wersja zawiera sam mechanizm sprawdzania (#1123).Dodane
Kod QR do zapłaty faktury otrzymanej (PRO) — w szczegółach nieopłaconej faktury otrzymanej w PLN wyświetla się kod QR w standardzie ZBP ("zeskanuj i zapłać"): jeden skan w aplikacji banku wypełnia numer rachunku sprzedawcy, kwotę, tytuł i NIP odbiorcy, bez ręcznego przepisywania. Dla kwot powyżej 9 999,99 zł (limit formatu ZBP) kod przenosi dane bez kwoty, a aplikacja pokazuje ją obok do wpisania ręcznie (#1102).
Kod QR do zapłaty na PDF faktury wystawionej i pro-formy (PRO) — ten sam standard ZBP po stronie sprzedawcy: kontrahent skanuje kod z wydruku lub PDF w aplikacji swojego banku zamiast przepisywać numer konta i kwotę. Kod pojawia się w sekcji płatności, obok danych do przelewu; kody weryfikacyjne KSeF zostają bez zmian w stopce dokumentu. Opcja jest domyślnie wyłączona i włączana osobno dla każdej firmy w Ustawieniach → Personalizacja. Warunki: dokument w PLN, płatność przelewem, dokument nieoznaczony jako zapłacony i rachunek w PLN z poprawnym numerem (#1103).
Poprawione
Faktura za usługę opłaconą z góry nie wypada już poza swój miesiąc. W trybie przypisania "Data sprzedaży" faktura z okresem rozliczeniowym, ale bez daty sprzedaży, trafiała do miesiąca, w którym okres się kończy — roczny abonament wystawiony w sierpniu 2026 lądował w sierpniu 2027 i znikał z bieżących zestawień. Teraz okres wyznacza miesiąc tylko wtedy, gdy zamknął się najpóźniej w dniu wystawienia; w przeciwnym razie liczy się data wystawienia. Faktury za miniony okres (np. wystawione 1 czerwca za maj) zostają w maju jak dotąd, a wpisana ręcznie data sprzedaży dalej ma pierwszeństwo. Jeśli takie faktury już masz, po aktualizacji zmienią miesiąc na liście, pulpicie i w podsumowaniach — warto sprawdzić zestawienia przekazane księgowej (#1109).
Foldery miesięczne w ZIP dla księgowej odpowiadają miesiącowi, w którym widzisz fakturę w aplikacji. Wcześniej powstawały po dacie wystawienia, niezależnie od ustawienia "Przypisanie do miesiąca" — filtrowałeś listę na maj, eksportowałeś i dostawałeś folder `2026-06/`. Teraz oba miejsca mówią to samo. Nazwy plików zostają bez zmian: data w nazwie to nadal data wystawienia, żeby księgowa mogła sparować plik z dokumentem, który ma przed sobą (#1116).Dodane
Faktury pro-forma — dokument handlowy poza KSeF (wezwanie do zapłaty, oferta w B2B, dokument celny). Własna zakładka "Pro-formy" i osobna seria numeracji `PF/<nr>/<rok>`, niezależna od numerów faktur. Po otrzymaniu wpłaty akcja "Otrzymano wpłatę" przekształca pro-formę jednym krokiem w fakturę VAT albo zaliczkową (pełna kwota, wszystkie pozycje); pro-forma zostaje w historii ze statusem "zrealizowana" i linkiem do wystawionej faktury. Pro-formy są w całości wyłączone z KSeF, JPK, podsumowań pulpitu i eksportu ZIP dla księgowej (#955, #915).
Obsługa pro-form w CLI i serwerze MCP — podkomendy `proforma list|get|create|convert|cancel` w CLI oraz narzędzia `list_proformas`, `get_proforma`, `create_proforma`, `convert_proforma`, `cancel_proforma` dla asystenta (Claude Desktop). Asystent może teraz wystawić pro-formę i przekształcić ją w fakturę po wpłacie, tak jak w aplikacji. Inwariant wykluczenia z KSeF pozostaje nienaruszony (#1093).
Zmienione
Kwoty w oknach wyboru faktur zaliczkowych i korygujących, w wyszukiwarce produktów, na liście produktów oraz w szczegółach faktury cyklicznej są formatowane po polsku — przecinek dziesiętny i symbol waluty (np. "1234,56 zł" zamiast "1234.56 PLN"), a od 10 000 również separator tysięcy (#1059, #1060).
Potwierdzenie usunięcia faktury cyklicznej korzysta ze spójnego okna aplikacji (obsługuje tryb ciemny, pokazuje stan trwania operacji, przy błędzie pozwala ponowić) zamiast natywnego okna systemowego (#1059, #1060).
Serwer MCP wskazuje asystentowi dokumentację użytkownika, więc pytania o działanie funkcji KSeFki są odpowiadane z dokumentacji zamiast zgadywane (#1052, #1053).Dodane
Faktury korygujące z pozycjami „przed korektą / po korekcie" (metoda StanPrzed wg Podręcznika KSeF 2.0 §2.13.4) (#1039).
Zbiorcze oznaczanie faktur jako niezapłacone i nieprzeczytane (#1041).
Uwierzytelnianie i synchronizacja w kontekście jednostki podrzędnej (IDWew, format NIP-XXXXX) — dla pracowników działów, których token lub certyfikat KSeF jest wystawiony na identyfikator wewnętrzny zamiast głównego NIP firmy; ustawiane per firma w Ustawieniach. Synchronizacja pobiera wyłącznie faktury danej jednostki (eksport Subject3), a nie całego NIP (#1018).
Zmienione
Pasek akcji zbiorczych ukrywa nieaktywne przyciski, a zaznaczenie pozostaje po wykonaniu akcji (poza usuwaniem) (#1041).
Poprawione
Filtr jednostki wewnętrznej (IDWew) obejmuje teraz również sprzedaż — faktury wystawione oznaczone IDWew innej jednostki (Podmiot3 w roli wystawcy) są ukrywane; faktury bez oznaczenia jednostki pozostają widoczne (#1032).Dodane
Filtr faktur zakupu po jednostce wewnętrznej nabywcy (Podmiot3 „Odbiorca" / IDWew) — dla firm z kilkoma placówkami na jednym NIP. Ustawiany per firma w **Ustawienia → Firmy** (pole „Filtr jednostki (zakupy)"); po włączeniu lista faktur, liczniki na pulpicie, podsumowanie miesięczne i licznik nieprzeczytanych pokazują wyłącznie zakupy danej jednostki, z banerem i opcją „Pokaż wszystkie". Funkcja w tym wydaniu darmowa, w kolejnym przejdzie do PRO (#1020).
Globalne ustawienie daty przypisania faktury do miesiąca — wybór między datą wystawienia a datą sprzedaży (#986).
Ustawienia → Prywatność: reset anonimowego identyfikatora użycia (#1005).
Przypomnienie o braku terminu płatności przy pierwszym zapisie nowej faktury wystawionej — łagodne potwierdzenie z opcją "Nie pytaj ponownie" (#1004).
Zmienione
Sprawdzanie aktualizacji odpytuje teraz najpierw `ksefka.com` (anonimowy, zerowalny identyfikator instalacji, bez adresu IP) — zliczanie aktywnych instalacji (#1005).
Poprawione
Numeracja faktur — druga i kolejna faktura w nowym miesiącu nie kontynuuje już sekwencji z poprzedniego miesiąca (np. po `017/05` czerwiec dawał `018/06` zamiast `002/06`) (#1003).
Pole "Typ" w oknie zgłaszania feedbacku pokazuje etykietę zamiast surowej wartości (#1002).
Import faktury z XML — dla faktur walutowych VAT 0% bez kursu umownego kurs jest prefillowany z `FaWiersz/KursWaluty`, więc zapis nie jest już blokowany (#996).
Faktury z okresem dostawy (`OkresFa`) zamiast pojedynczej daty sprzedaży trafiają teraz do właściwego miesiąca — w trybie „Data sprzedaży" przypisanie korzysta z końca okresu (`P_6_Do`) zamiast wpadać na datę wystawienia (#1000).
Stan zwinięcia miesięcy na liście faktur jest zapamiętywany per firma (#1015).
Pulpit — podsumowanie miesięczne uwzględnia teraz lokalne faktury otrzymane w sumie kwotowej (#993).Poprawione
Duplikacja faktur między profilami firm o tym samym NIP (regresja z 0.9.0) — nowy, opcjonalny tryb "Rozdzielaj firmy po nazwie" (zakładka Firmy) kieruje każdą fakturę do jednego profilu według nazwy podmiotu, z kolejką ręcznych przypisań dla nazw niezmapowanych oraz uruchamianym na żądanie porządkowaniem istniejących duplikatów. Funkcja w tym wydaniu darmowa, w kolejnym przejdzie do PRO (#981, #987).
Import backupu — przywracanie faktur nie kończy się już błędem bazy ("65 values for 66 columns"); faktury z archiwum są znów poprawnie zapisywane (#988, #990).Dodane
Eksport pliku przelewu w formacie SEPA (pain.001.001.03) dla faktur w walucie EUR (#977, #979).
Eksport pliku przelewu w formacie podzielonej płatności (MPP / split payment) Elixir (#975, #976).
Poprawione
Niezawodność migracji bazy danych przy aktualizacji — przebudowa tabel odbywa się teraz z wyłączonym egzekwowaniem kluczy obcych i końcową weryfikacją integralności, więc nie dochodzi do kaskadowego usunięcia powiązanych danych (pozycje faktur, załączniki itp.) na zapełnionej bazie. Jednorazowa naprawa unikalności numeru KSeF z 0.9.0 została przeniesiona do zwykłej migracji (#973, #982).Dodane
Eksport pliku przelewu bankowego w formacie Elixir-0 dla faktur otrzymanych — gotowy plik do wczytania w bankowości elektronicznej (#965, #967).
Poprawione
Synchronizacja KSeF — faktury w walucie obcej z zerowym kursem (`KursWaluty = 0` jako placeholder) nie blokują już synchronizacji (#968, #972).
Unikalność numeru KSeF (`invoices.ksef_number`) jest teraz ograniczona do pary `(company_id, ksef_number)` — ten sam numer może wystąpić w różnych firmach (#969, #974).
Linki do faktur powiązanych otwierają widok szczegółów zamiast edycji (#963, #964).Dodane
Trwałe przechowywanie tokenów licencji PRO w Postgres (Neon) na backendzie strony (#944, #945).
Poprawione
Synchronizacja KSeF — faktury z zerowym kursem waluty (`FaWiersz/KursWaluty = 0`, częsty placeholder na fakturach w PLN) nie blokują już całej synchronizacji; kurs 0 jest traktowany jako brak kursu, a kurs ujemny pozostaje błędem (#949, #946).
Synchronizacja KSeF — faktury bez podsumowania VAT (`P_13_X`) przy dodatnim `P_15` są teraz pobierane: podsumowanie VAT jest rekonstruowane z pozycji faktury, a gdy brak danych do rekonstrukcji — faktura zapisywana jest z samym brutto, zamiast blokować synchronizację (#950, #946).Dodane
Wiele rachunków bankowych (do 2) na fakturze, w szablonie i przy korekcie — z prefillem przy tworzeniu z szablonu i kopiowaniu/korekcie (#921, #923).
Osobna numeracja (opt-in) dla faktur korygujących — własna pula `FKOR/{YYYY}/{MM}/{NNN}` zamiast wspólnego ciągu z fakturami regularnymi (#892).
Tryb "w stu" (od ceny brutto) per pozycja faktury i szablonu — toggle Net/Br przy cenie jednostkowej, back-derywacja netto z targetowego brutto (#898).
Poprawione
PDF — flagi JST/GV nabywcy pod blokiem nabywcy gdy ustawione na TAK; label "Waluta" → "Kod waluty"; fix sync dla faktur otrzymanych (flagi zawsze `false` w snapshocie) (#891).
Korekta — przycisk "Wystaw korektę" i picker pokazują tylko faktury kwalifikujące się jako oryginał (`direction='issued'`, status KSeF `pending`/`accepted`/`synced`); backend waliduje też przy tworzeniu (#909).
Korekta — prefill zachowuje dosłowne brutto oryginału (przełącza linię w tryb "w stu" gdy wykryje rozbieżność ≥0,005), nawet jeśli oryginał miał inne zaokrąglenie niż KSeFka by sama wyliczyła (#899).
Re-edycja draftu z pozycją w trybie "w stu" — pole "Cena brutto" wypełnia się po ponownym otwarciu (seed `wStuTargets` reaguje teraz na zmiany identyczności wierszy) (#899).
Pulpit — sumy kwotowe pomijają oryginał faktury gdy istnieje aktywna korekta typu 1 lub 3 (`ksef_status ∈ {accepted, synced}`); działa też wstecz między miesiącami i tranzytywnie A → B → C (#902).
Numer faktury — licznik "Następny NNN" inkrementuje się przy zatwierdzeniu wysyłki / potwierdzeniu KSeF / synchronizacji; przy nieudanej wysyłce nie rusza, drafty współdzielą sugerowany numer (#894).
Zmienione
Multi-account cleanup: zrzucono legacy kolumny `invoices.bank_*` i `invoice_templates.bank_account_id` (migracja 055); wszystkie ścieżki używają już tylko `invoice_bank_accounts` / `template_bank_accounts`, backup szablonów round-trip-uje pełną listę rachunków (#929).
Pulpit — sumy kwotowe liczą **tylko** faktury z `ksef_status ∈ {accepted, synced}`; drafty, ready_to_send, sending, pending, rejected i lokalne — pomijane. Liczniki dokumentów bez zmian (#906).
Sugestia numeru w formularzu — prefill skacze za fakturami wysłanymi do KSeF, ignoruje drafty; modal duplikatów dostał trzeci przycisk "Użyj następnego: <X>" (#894).
Dodane
Panel „Odzyskiwanie synchronizacji" w Ustawienia → KSeF: ręczne cofnięcie znacznika synchronizacji o 1, 7, 30 dni lub do dowolnej daty (Wybierz datę...) — pozwala ponownie pobrać faktury, które nie zapisały się przy poprzedniej synchronizacji (#850)
Webhook HTTP PRO dla nowych faktur otrzymanych z synchronizacji KSeF: Ustawienia → Integracje → URL endpointu (n8n, Make, Zapier, własny serwer) + przycisk „Wyślij testowy event"; payload JSON zawiera `invoice_id`, `ksef_reference_number`, `sync_timestamp`, pełny XML FA(3); nagłówek `X-KSeFka-Event-Type: invoice:received-from-sync` (#884, #886)
Event log JSONL PRO dla nowych faktur otrzymanych z synchronizacji KSeF: Ustawienia → Integracje → ścieżka pliku + toggle włączenia; każde zdarzenie dopisywane jako jedna linia JSON (NDJSON) — konsumowalne przez `tail -f`, n8n Watch File, fswatch, własne skrypty; przycisk „Wyczyść plik" do truncate (#884, #887)
Poprawione
Synchronizacja KSeF: nieudany zapis pojedynczej faktury do bazy nie powoduje już pominięcia jej w kolejnych synchronizacjach inkrementalnych — `last_sync_at` przesuwa się dopiero gdy cały cykl zakończy się czysto (#850)
MCP `create_invoice` akceptuje i zapisuje pola `payment_date` oraz `payment_description` (wcześniej były cicho wyrzucane przez deserializację); doc narzędzia rozdziela semantykę `is_paid` (XML Zaplacono=1) od `internal_is_paid` (ustawiane przez `mark_invoice_paid`) (#845)
Uwierzytelnianie KSeF wybiera certyfikat typu Authentication zamiast preferować najnowszy aktywny — po wgraniu certyfikatu Offline aplikacja nie próbuje już używać go do logowania (KSeF zwracał błąd 21115); firma z samym certyfikatem Offline nie kwalifikuje się też do background sync (#862)
Dodane
Masowy eksport do ZIP (PDF + XML + załączniki) dla faktur zagranicznych spoza KSeF (#832)
Filtr "Poza KSeF" na liście faktur + flaga CLI `--only-outside-ksef` (#831, #834)
Załączniki w modelu PRO: pierwszy do faktury otrzymanej FREE, reszta PRO (#337, #830)
Filtry "Niezapłacone" i "Poza KSeF" jako przyciski toggle zamiast checkboxów (#837, #839)
Kafelki Pulpitu (Wystawione, Otrzymane, Szkice, Do wysłania) ograniczone do bieżącego miesiąca (#835, #838)
Poprawione
Automatyczny kurs NBP dla ręcznie wprowadzonych faktur walutowych — zliczane teraz w PLN na Pulpicie (#814, #815)
Filtr "Niezapłacone" uwzględnia `is_paid` z KSeF (#819)Dodane
Narzędzia MCP dla załączników faktur (#825)
Poprawione
Zachowanie numeru faktury przy edycji faktury otrzymanej (#824)
Filtr Niezapłacone pomija faktury z `is_paid=true` z KSeF (#822)
Usunięto `(KSeF)` z etykiety Zapłacone w widoku faktury (#821)Dodane
Personalizacja faktury dla użytkowników PRO (#752)
Personalizacja UI KSeFki dla użytkowników PRO (#809)
Zapamiętywanie ostatnio użytego powodu zwolnienia z VAT per firma (#790)
Poprawione
Telefon firmy z ustawień jest teraz renderowany na fakturze PDF pod adresem email — wcześniej pole było zbierane, ale nigdy nie trafiało na dokument (#752)
Synchronizacja w tle obejmuje wszystkie firmy z poświadczeniami KSeF, nie tylko aktualnie wybraną (#585)
Cały kafelek powiadomienia o aktualizacji jest klikalny (#783)
Logi diagnostyczne do rozwiązywania problemów z synchronizacją (#808)Dodane
Narzędzia MCP `get_environment` i `switch_environment` — sesyjne odczytanie i przełączenie aktywnego środowiska KSeF (test/demo/production) bez restartu klienta MCP (#800, #801)
Narzędzia MCP `list_companies` i `switch_company` — listowanie firm w aktywnym środowisku i sesyjne przełączanie aktywnej firmy bez restartu klienta MCP (#802, #803)
Akceptacja aliasu `EU_VAT` dla `tax_id_type` w narzędziu MCP `create_invoice` (kanoniczna wartość pozostaje `VAT_EU`) (#800)
Dwujęzyczne opisy narzędzi MCP (angielski + polski) — zapytania w języku polskim poprawnie wyszukują narzędzia przez `tool_search` (#804, #805)
Poprawione
Lista faktur i statystyki odświeżane po utworzeniu faktury przez MCP bez konieczności ręcznego odświeżenia (#805)Dodane
Wysyłanie faktur e-mailem (SMTP) z konfiguracją per firma (#780, #792)
Typ identyfikatora IDWew (identyfikator wewnętrzny) dla Podmiot3 z walidacją formatu (#791, #794)
Combobox z podpowiedziami dla podstawy zwolnienia z VAT (#785, #787)
Narzędzia MCP do faktur cyklicznych (#630, #778)
Generowanie PDF w języku niemieckim (#769, #775)
Komenda CLI `ksefka export` do eksportu faktur jako PDF i/lub XML (PRO) (#633)
Narzędzie MCP `export_invoice` z parametrami id, format, language, output_dir (#633)
Poprawione
Zapamiętywanie pozycji i rozmiaru okna przy resize/move z debounce (#776, #781)
Checkbox "Zaplacona" ukryty gdy faktura oznaczona jako opłacona w KSeF (#767)Dodane
Pobieranie XML faktury jako plik, pojedynczo i masowo (#760)
Jeden przycisk pobierania dla wszystkich formatów (PDF PL/EN/KSeF, XML); zapamiętuje ostatni wybór (#761)
Wzorzec nazwy pobieranego pliku w ustawieniach firmy z podglądem na żywo: {NUMER}, {KONTRAHENT}, {YYYY}, {MM}, {DD}, {KSEF}, {KIERUNEK} (#762)Poprawione
Synchronizacja faktur korygujących (KOR) z KSeF: obsługa elementu `StanPrzed` — pary wierszy przed/po korekcie z tym samym `NrWierszaFa` nie powodują już błędu UNIQUE constraint (#751)
Deterministyczne sortowanie wierszy korekty: wiersze „przed" zawsze wyświetlane przed wierszami „po" (`ORDER BY line_number, is_before_correction DESC`)
Logowanie ostrzeżeń przy nieoczekiwanych wartościach `StanPrzed` zamiast cichego domyślnego `false`
Walidacja XSD: nowy test dla faktury korygującej z `StanPrzed` (TypKorekty=2)Poprawione
PDF z KSeF: pole „Uwagi" (notes) pojawia się w PDF — emitowane jako `DodatkowyOpis` w XML FA(3) (#753)
PDF z KSeF: kod QR weryfikacyjny pojawia się w PDF — przekazanie `qr_code_url` do generatora (#753)
PDF z KSeF: naprawiony layout sekcji QR — tekst i link nie są ucięte (#753)
Backward sync: `DodatkowyOpis` z kluczem „Uwagi" parsowany z powrotem do pola `notes` fakturyDodane
Walidacja XSD wygenerowanego XML faktur w testach — 16 fixture'ów pokrywających różne scenariusze (standardowa, korekta, zaliczka, marża, waluta obca, itp.) (#740, #745)
Poprawione
XML: stawki „oo" i marży nie emitują P_14_10/P_14_11 (nie istnieją w XSD FA(3))
XML: `DaneFaKorygowanej` emituje wymagane elementy `NrKSeF`/`NrKSeFN` (choice w XSD)
XML: `PMarzy` emituje wymagany znacznik `P_PMarzy=1` przed konkretnym typem marżyDodane
Sekcja adnotacji na fakturze PDF — odwrotne obciążenie, metoda kasowa, samofakturowanie, mechanizm podzielonej płatności (#737)
Poprawione
Walidacja XSD: `Zaplacono` emitowane tylko dla zapłaconych faktur (typ `TWybor1` akceptuje tylko wartość "1") (#742)Dodane
Ostrzeżenie o przeszłej dacie wystawienia przy wysyłaniu faktury do KSeF — dialog z opcją zmiany daty na dzisiejszą (#727)
Tworzenie faktury z pliku XML — przycisk "Utwórz z XML" i parsowanie FA(3) (#724)
Akcja grupowa "Ustaw jako zapłacone" na liście faktur
Zmienione
Oznaczenie niezapłaconych/nieprzeczytanych faktur na liście zmienione na border-left
Skrócone nazwy przycisków akcji grupowych
Poprawione
Lepszy komunikat błędu certyfikatu/uwierzytelniania gdy brak aktywnej firmy (#730)
Walidacja formatu daty w `update_invoice_issue_date`
Surfacowanie ostrzeżeń o brakach w XML do użytkownika
Logowanie błędów `try_get(nip)`, surfacowanie błędów DB w warnings
Ostrzeżenie przy częściowej aktualizacji batch
Windows: uruchamianie GUI bezpośrednio zamiast przez niezarejestrowaną komendęPoprawione
Formatowanie kodu (SettingsPage.tsx, xml_parser.rs)Dodane
Eksport i import danych firmy jako `.tgz` — do backupu albo przeniesienia na inny komputer (#467)
Status zapłaty na fakturach: pole w formularzu, checkbox w szczegółach, czerwone tło niezapłaconych na liście, filtr „Tylko niezapłacone"
Faktury `ready_to_send` wysyłają się same po każdym syncu z KSeF
Sync KSeF odpala się od razu po przełączeniu środowiska, nie trzeba czekać na timer (#373)
Faktury cykliczne wymagają licencji PRO (#610)
CLI: `mark-paid` / `mark-unpaid`, filtr `--invoice-type` w `list-invoices` (#638), obsługa duplikatów (#632)
MCP: `mark_invoice_paid`
Import z KSeF odczytuje kurs VAT (`KursWaluty`) z wierszy faktur walutowych (#462)
Poprawione
**Windows (BREAKING):** Binary zmienione z `KSeFka.exe` na `ksefka-app.exe` — naprawia pętlę uruchamiania przy instalacji CLI (#687). **Trzeba przeinstalować.**
**Windows:** Instalator dodaje katalog do `PATH` — CLI działa z każdego terminala (#687)
**Windows:** Otwieranie PDF przez plugin Tauri zamiast ręcznego kodu per-platforma
Sync wsteczny nadpisywał datę HWM ustawioną przez sync do przodu (#698)
Brakujące kolumny JST/GV w bazie — migracja naprawcza (#685)
XML: `<Zaplacono>` i `<DataZaplaty>` nie były emitowane; `DataZaplaty` jest wymagane gdy `Zaplacono=1`
PDF pokazuje rzeczywistą wersję aplikacji zamiast starej
CLI: `--from-nip` nie uzupełniał REGON i kodu kraju z GUS (#628)
Kopiowanie faktury i tworzenie korekt gubiło status zapłatyDodane
Komendy CLI do zarządzania katalogiem produktów: `list-products`, `get-product`, `create-product`, `update-product`, `delete-product` z podwójnym wejściem (flagi lub `--from-json`) (#624)
Narzędzia MCP: `list_products`, `get_product`, `create_product`
Komendy CLI `finalize-invoice` i `unfinalize-invoice` do zatwierdzania/cofania faktur do wysyłki KSeF (#625)
Flaga `--finalize` na `create-invoice` — tworzenie i zatwierdzenie jednym krokiem
Narzędzia MCP: `finalize_invoice`, `unfinalize_invoice`
Walidacja produktów: stawka VAT, niepusta nazwa, zakres rabatu 0–100%, zaokrąglanie cen
Ochrona przed wielokrotnym uruchomieniem aplikacji (`single-instance`) (#639)
Obsługa typu faktury `KOR_ROZ` (korekta rozliczeniowej) — sync z KSeF, XML, PDF, formularz (#649)
Podmiot3 (dodatkowe podmioty) na fakturach — zwijana sekcja w formularzu, generowanie XML, parsowanie z KSeF, kopiowanie/szablony (#651)
Flagi JST/GV na kontrahentach — dynamiczne generowanie w Podmiot2 XML zamiast hardcoded „2" (#652)
Komendy CLI `get-contractor`, `create-contractor`, `update-contractor` z flagami `--is-jst`/`--is-gv`
Narzędzia MCP: `create_contractor`, `update_contractor`
Poprawione
Korekta faktury zaliczkowej generuje `KOR_ZAL` zamiast `KOR` w XML (#648)
Kurs waluty na fakturze korygującej przepisywany z faktury pierwotnej zgodnie z art. 31b ustawy o VAT (#658)
Finalizacja faktur z kontrahentem inline (bez zapisu do bazy kontrahentów) działa poprawnieDodane
Obsługa faktur korygujących — wystawianie, walidacja numeru KSeF, automatyczne ładowanie pozycji, szczegóły korekty na PDF (#529)
Komenda CLI `ksef-authorize` do zapisu tokenu autoryzacyjnego KSeF (#642)
Narzędzie MCP `ksef_authorize` do zapisu tokenu KSeF z poziomu AI
Poprawione
Przycisk „Synchronizuj KSeF" pojawia się gdy skonfigurowany jest token LUB certyfikat (wcześniej tylko certyfikat)Dodane
Uwierzytelnianie certyfikatem
Wgrywanie certyfikatu KSeF z pliku (.p12/.pfx) zamiast automatycznego generowania (#440)
Uwierzytelnianie XAdES z podpisem certyfikatu — jedyna metoda logowania do KSeF
Szyfrowanie tokenów zapisanych na dysku algorytmem AES-256-CBC (#440)
Wysyłka faktur
Status „Gotowa do wysyłki" (ready_to_send) z akcjami finalizacji i cofnięcia finalizacji (#524)
Kod QR OFFLINE na PDF-ach faktur gotowych do wysyłki (#525)
Wykrywanie awarii KSeF z automatycznym wysyłaniem kolejki po przywróceniu usługi
Faktury
Obsługa faktur zaliczkowych — powiązanie z fakturą rozliczeniową z automatycznym odliczeniem i przeliczeniem walut (#465, #601)
Tworzenie faktur cyklicznych na podstawie istniejącej faktury, dzięki PiotrK (#546)
Kopiowanie faktury jako nowej — „Więcej → Utwórz nową na podstawie" w widoku szczegółów, dzięki PawełB (#578)
Parsowanie XML
Parsowanie i zapis wszystkich pól FA(3) z pobranych faktur (płatność, adnotacje, metadane)
Parsowanie kwot brutto (P_9B/P_11A) w pozycjach faktur (#538)
Rozpoznawanie statusu „Zapłacono" z XML-a zsynchronizowanych faktur (#399)
Jednorazowy backfill pól dla wcześniej zsynchronizowanych faktur
CLI i MCP
Narzędzie CLI do odczytu bazy danych z wiersza poleceń (#310)
Serwer MCP do integracji z AI (ChatGPT, Claude Desktop, itp.) (#312)
Automatyczna aktualizacja CLI po aktualizacji aplikacji (#426)
CLI bundlowany jako sidecar Tauri z UI instalacji/deinstalacji (#414)
3-dniowy trial PRO dla CLI (#418)
Sprawdzanie licencji PRO w komendach CLI
Licencja PRO
Infrastruktura licencji PRO (#387)
Interfejs użytkownika
Załączniki plików dla faktur otrzymanych (#447)
Skróty klawiszowe do nawigacji i akcji (#371)
Przycisk szybkiej synchronizacji na liście faktur (#397)
Kafelki dashboardu klikalne — przejście do filtrowanej listy faktur
Filtr statusu w pasku wyszukiwania faktur
Kolumny tabeli faktur z możliwością zmiany szerokości (#464)
Ukrywanie pola konta bankowego dla metod płatności bez przelewu (#363)
Obcinanie długich nazw pozycji z tooltipem po najechaniu
Ukrywanie kolumny Rabat gdy nieużywana
Kafelkowy układ szczegółów faktury — pozycje na pełną szerokość
Ostrzeżenie o zapłacie z numerem faktury w szczegółach
Status „Lokalny" dla faktur otrzymanych (#490)
Zwijane adnotacje i puste stany na dashboardzie (#474)
Subtelne animacje wejścia i mikrointerakcje przy hover
Inne
Zmiana identyfikatora aplikacji z `pl.zalun.ksefka` na `pl.nod.ksefka` z automatyczną migracją danych
Domyślne środowisko KSeF ustawione na produkcję (#384)
Trwałe przechowywanie UPO w osobnej tabeli (#374)
Poprawione
Przełączanie środowisk test/produkcja trwa natychmiastowo zamiast do minuty (#598)
Dashboard odświeża statystyki po usunięciu, edycji i tworzeniu faktur (#515)
Podwójne ostrzeżenie o środowisku testowym przy przełączaniu (#596)
Cache XML czyszczony przy zapisie faktury — edycje odzwierciedlane w KSeF (#600)
Formularz faktury z szablonu nie resetuje pól kontrahenta edytowanych ręcznie (#575)
Automatyczny numer faktury czyszczony przy zmianie kierunku na „Otrzymana" (#493)
Widok faktury rozciąga się na pełną szerokość okna
Przycisk „Przeładuj z XML" zamiast mylącego „Pobierz ponownie z KSeF"
Zmienione
Ustawienia przeniesione do paska narzędzi jako przycisk z ikoną
Kolejność zakładek faktur: Wszystkie → Wystawione → OtrzymaneDodane
Kalendarz z popoverem przy polach dat na formularzu faktury — wybór daty kliknięciem oprócz wpisywania ręcznego (#360)
Wyświetlanie dat w polskim formacie DD.MM.RRRR z automatycznym formatowaniem i walidacją (#359)Dodane
Budowanie instalatorów dla Windows (MSI, EXE) i Linux (deb, AppImage) w workflow wydawania (#340)
Poprawione
Otwieranie plików działa na wszystkich platformach (macOS/Windows/Linux)Zmienione
Wsparcie dla Intel Mac (x86_64) w procesie wydawania — osobne natywne binaria dla Apple Silicon i Intel (#338)
Strona pobierania pokazuje dwa przyciski macOS (Apple Silicon / Intel) z automatycznym wykrywaniem architektury
Wzmocnione zabezpieczenia workflow: walidacja artefaktów, `latest.json` publikowany jako ostatni krok
Skill do automatyzacji wydawania nowych wersjiZmienione
Migracja biblioteki ikon z lucide-react na iconoir-react (mniejszy bundle, licencja MIT) (#335)
Gwiazdka przy aktywnej firmie w sidebarze i ustawieniach (spójność z kontami bankowymi)
Sprawdzanie aktualizacji co godzinę zamiast tylko przy starcieDodane
Ostrzeżenie o publicznie dostępnych danych w środowiskach testowym i demo — dialog przy starcie aplikacji i przy przełączaniu środowiska, ikona ostrzeżenia w pasku bocznym (#328)
Poprawione
Ponowne podpisywanie archiwum aktualizacji po zbudowaniu przez tauri-actionPierwsza publiczna wersja KSeFka.
Dodane
Integracja z KSeF (Krajowy System e-Faktur) — synchronizacja, wysyłka, pobieranie faktur
Zarządzanie firmami z obsługą wielu firm i środowisk (test/demo/produkcja)
Tworzenie i edycja faktur z pełnym wsparciem schematu FA(3)
Generowanie PDF z kodem QR i metadanymi KSeF
Generowanie XML zgodnego ze schematem FA(3) do wysyłki do KSeF
Zarządzanie kontrahentami z wyszukiwaniem NIP przez GUS BIR1
Zarządzanie kontami bankowymi z obsługą IBAN/SWIFT
Synchronizacja przyrostowa i wsteczna z KSeF
Automatyczna synchronizacja w tle z konfigurowalnymi ustawieniami
Obsługa walut obcych z automatycznym kursem NBP
Szablony faktur (zapisywanie i stosowanie)
Wyszukiwanie faktur z filtrami syntaktycznymi
Akcje grupowe na fakturach (PDF, oznacz jako przeczytane)
Dashboard ze statystykami i podsumowaniem miesięcznym
Panel powiadomień z historią
Ciemny motyw z obsługą motywu systemowego
Skalowanie rozmiaru czcionki (Cmd+/Cmd-/Cmd+0)
Automatyczne aktualizacje przez GitHub Releases
Formularz opinii i zgłaszania błędów
Podpisywanie kodu i notaryzacja macOS