Katalog:
Wzorce URL katalogu:
Aktywny Włączony
Grupa:
Wzorce URL grupy:
Aktywna Włączona
Zestaw: Wróć do grupy

## Wybierz lub dodaj katalog

Każdy katalog grupuje zestawy CSS/JS dla jednego wzorca URL.

Zapisano

## Eksport ustawień

Wszystko Wybrane katalogi/zestawy

Możesz skopiować JSON ze schowka lub pobrać plik:

## Import ustawień

Uwaga: pełen import nadpisze wszystkie obecne ustawienia.

Wklej JSON dowolnego eksportu JustZix (pełen backup, katalog, grupa lub zestaw) — formularz automatycznie rozpozna typ i pokaże opcje umieszczenia.

## Eksport katalogu: —

Zaznacz grupy/zestawy do eksportu.

## Eksport grupy: —

Zaznacz zestawy do eksportu.

## Import katalogu

Wykryto konflikty:
Importuj jako nowy katalog (z dopiskiem "(import)") Nadpisz istniejący katalog Scal — dodaj nowe zestawy do istniejącego katalogu (zachowując oba)

## Paski akcji — —

Paski przypisane do tego poziomu. Bary folderu agregują elementy ze wszystkich aktywnych zestawów folderu, bary grupy — tylko z zestawów grupy, bary zestawu — gdy zestaw aktywny. Pasek bez widocznych elementów nie zostanie wyświetlony.

## Okna CSS — —

Floating textarea wstrzykiwana na strony z URL pasującym do tego poziomu. Treść zachowywana w sessionStorage per tab (znika po zamknięciu karty). Live `<style>` injection — zmiana CSS widoczna natychmiast.

## Okna JS — —

Floating textarea wstrzykiwana na strony z URL pasującym do tego poziomu. Treść zachowywana w sessionStorage per tab. Live JS execution w MAIN world z debounce 500ms. Uwaga: kod uruchamia się na każdą zmianę — łatwo zawiesić stronę pętlą.

## Konsole JS — —

Interaktywna konsola REPL. Każdy Ctrl+Enter wykonuje wpisany kod w MAIN world strony, wynik (lub błąd) appenduje się do log area pod inputem. Output zachowywany w sessionStorage per tab.

## Konsole Output — —

Tylko-do-odczytu log viewer. Przechwytuje console.log/warn/error/info ze strony (w tym async) i wyświetla strumień. Każda konsola dostaje pełen log strony — kolor linii zależy od typu (log/warn/error). Wyczyść (⌫) tylko czyści podgląd, nie konsolę przeglądarki.

## Kod przycisku akcji: —

Kod JavaScript wykonywany po kliknięciu przycisku akcji w pływającym panelu. Wykonuje się w kontekście strony.

## Edytor SELECT: —

ID akcji: `—`
Selektor: `—`
Statyczne opcje + jeden kod JS Tylko kod JS (zarządza dropdownem)

Każda opcja: name (widoczna w dropdownie) + value (przekazana do kodu jako zmienna `value`). Jeden wspólny kod uruchamiany przy zmianie.

Kod JS (wspólny):

W kodzie dostępne: `value` (string), `$el` (element select), `$action` (id, label).

Twój kod JS jest uruchamiany raz po wstawieniu dropdownu do strony. Dostaje referencję `$el` do pustego `<select>` — populujesz opcje i obsługujesz `change` sam.

Kod JS:

Dostępne: `$el` (HTMLSelectElement), `$action` (id, label).

## Edytor TEXTAREA: —

ID akcji: `—`
Selektor: `—`

Multi-line pole tekstowe z opcjonalnym kodem JS na `change` (blur — UWAGA: Enter w textarea to legit newline, NIE odpala kodu).

Placeholder:
Wartość domyślna:
Liczba wierszy:
Kod JS (na change/blur):

Dostępne w kodzie: `value` (string z textarea, może zawierać `\n`), `$el` (HTMLTextAreaElement), `$action` (id, label).

## Edytor TOGGLE3: —

ID akcji: `—`
Selektor: `—`

3-stanowy przełącznik (segmented control). Klik na nieaktywny stan aktywuje go i odpala kod JS z `value` wybranego stanu.

Stany (dokładnie 3, radio = default):
Kod JS (na zmianę stanu):

Dostępne w kodzie: `value` (state.value), `stateIdx` (0-2), `stateLabel`, `$el` (kontener), `$action`.

## Edytor SLIDER: —

ID akcji: `—`
Selektor: `—`

Range slider z kodem JS uruchamianym po zwolnieniu suwaka. Wartość przekazywana jako liczba (Number) w `value`.

Minimum:
Maksimum:
Krok:
Wartość domyślna:
Jednostka (opcj.):
Kod JS (na change):

Dostępne w kodzie: `value` (Number), `$el` (HTMLInputElement type=range), `$action` (id, label).

## Edytor INPUT: —

ID akcji: `—`
Selektor: `—`

Pole tekstowe z opcjonalnym kodem JS uruchamianym przy zmianie (Enter/blur). Value zapamiętywana zgodnie z wybranym scope.

Placeholder:
Wartość domyślna:
Kod JS (na change):

Dostępne w kodzie: `value` (string z input), `$el` (HTMLInputElement), `$action` (id, label).

## Konflikt synchronizacji

Zalogowano się do konta, które ma już dane w chmurze, a na tym urządzeniu też masz lokalną bibliotekę. Wybierz, co zrobić — operacja jest nieodwracalna lokalnie, ale lokalne dane można przed zatwierdzeniem wyeksportować.

Na tym urządzeniu lokalnie: — katalogów / — grup / — zestawów
Na koncie chmurowym: — katalogów / — grup / — zestawów

## Importuj z linka JustZix

Wklej cały link albo sam token JZS-XXXX-XXXX-XXXX-XXXX:

## Podgląd udostępnionego eksportu

⚠ UWAGA: Eksport zawiera kod JavaScript. Kod będzie wykonywać się na stronach pasujących do reguł — sprawdź co robi przed zaimportowaniem.
Pokaż kod JavaScript

## Moje udostępnione linki

Czasowe publiczne linki do eksportów. Backend trzyma payload do wygaśnięcia, potem zostaje skasowany.

Aby utworzyć nowy link — otwórz eksport (cały / katalog / grupa / zestaw) i kliknij „Udostępnij URL".

—

## AI Helper

Wprowadź klucze API dostawców, z których chcesz korzystać. Wystarczy jeden.

Klucz API — OpenAI
synchronizuj
Klucz API — Anthropic
synchronizuj
Klucz API — Gemini
synchronizuj
Domyślny dostawca
Domyślny model

Bezpieczeństwo: klucze API są przechowywane wyłącznie w pamięci lokalnej tej przeglądarki (`chrome.storage.local`) i nigdy nie są synchronizowane w chmurze ani wysyłane na serwery JustZix.

## Udostępnij eksport po linku

Link będzie aktywny przez:
1 godzinę 6 godzin 12 godzin 24 godziny (domyślnie) 48 godzin
Po wygaśnięciu link przestanie działać. Możesz odwołać go wcześniej w „Moje share".

## ✓ Link wygenerowany

Wyślij ten link odbiorcy:
Lub sam token (do wklejenia w „Importuj z URL"):

## Historia synchronizacji

## Wynik synchronizacji

## Synchronizacja chmurowa

Wygeneruj nowy klucz synchronizacji. Zapisz go w bezpiecznym miejscu — backend trzyma tylko hash. Klucz pozwala zalogować się na drugim urządzeniu i widzieć tę samą bibliotekę.

Etykieta urządzenia (opcjonalnie):
Twój klucz synchronizacji:
—
⚠ Skopiuj i zapisz klucz teraz. Klucz będzie też dostępny w zakładce „Klucz" po rejestracji — ale lepiej mieć kopię w menedżerze haseł.

Wklej klucz, który widziałeś przy rejestracji pierwszego urządzenia. Format: `SYNC-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX`.

Etykieta urządzenia (opcjonalnie):
Klucz synchronizacji:

Jeśli na koncie był ustawiony i zweryfikowany email — wpisz go i wyślij link odzyskiwania. Po kliknięciu linka w mailu dostaniesz nowy klucz (jednorazowo). Wszystkie aktywne sesje zostaną wylogowane.

Email konta:
Konto #—
Pending zmian: 0
Ostatni pull (cursor): 0

### Biblioteka w chmurze

—

### Historia synchronizacji

### Aktywne sesje (urządzenia)

Klucz synchronizacji dla tego konta. Wpisz go na drugim urządzeniu by zsynchronizować bibliotekę.

Twój klucz:
SYNC-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
⚠ Klucz daje pełen dostęp do biblioteki. Nie pokazuj go publicznie. Jeśli nie chcesz trzymać go lokalnie — kliknij Usuń klucz z tego urządzenia (kopię zachowaj sobie w menedżerze haseł). Logowanie nadal działa, ale nie da się go już podejrzeć.
Klucz nie jest zapisany na tym urządzeniu (zalogowano jeszcze przed wprowadzeniem tej funkcji albo został ręcznie usunięty). Możesz go odzyskać tylko przez recovery email lub jeśli masz zapisaną kopię gdzie indziej.
Backupy chmurowe — restore replace całą bibliotekę. —
Etykieta nowego backupu (opcjonalnie):

Email pozwala na recovery — gdy zgubisz klucz, możesz dostać nowy klikając link wysłany na ten adres. Dodanie emaila wymaga weryfikacji (link w mailu).

Dodaj email (recovery):
—
Recovery flow: na innym urządzeniu (lub w sytuacji bez klucza) wybierz w panelu logowania zakładkę „Zgubiłem klucz", podaj ten email — backend wyśle link, który wygeneruje nowy klucz i unieważni wszystkie aktywne sesje.