# Tworzenie tapet AetherWall 0.5 ## Minimalna paczka ZIP ma w katalogu głównym wallpaper.json, index.html oraz CSS/JS. Opcjonalna miniatura to preview.png (maks. 3 MB, do 16 mln pikseli). HTML jest otwierany w WebView2. Nie wymaga serwera ani node_modules. Limit paczki: 100 MB po rozpakowaniu, 1500 plików. Nie są obsługiwane ZIP64, szyfrowanie, dowiązania ani ścieżki wychodzące poza paczkę. Używaj nazw plików UTF-8. ```json { "id":"moja-tapeta", "title":"Moja tapeta", "author":"Twoja nazwa", "description":"Opis tapety", "entry":"index.html", "version":1, "supportsWidgets":true, "display":{"width":1920,"height":1080,"minWidth":1280,"minHeight":720,"responsive":true,"aspectRatios":["16:9","16:10","21:9"]}, "properties":[ {"key":"accent","label":"Kolor akcentu","type":"color","default":"#8FCCF0"}, {"key":"speed","label":"Szybkość","type":"slider","min":0,"max":100,"step":1,"default":40}, {"key":"effects","label":"Efekty","type":"bool","default":true}, {"key":"caption","label":"Podpis","type":"text","default":"Witaj"}, {"key":"mode","label":"Motyw","type":"choice","options":["Ciemny","Jasny"],"default":"Ciemny"} ] } ``` id: małe litery, cyfry i myślniki, do 64 znaków. entry musi wskazywać istniejący HTML. Maks. 64 właściwości. Klucz właściwości zaczyna się literą, potem litery, cyfry lub _, maks. 64 znaki. Wartości domyślne muszą zgadzać się z typem i zakresem. Nie umieszczaj danych użytkownika w paczce. ## Właściwości i SDK Host wywołuje listener po wczytaniu dokumentu i po zatwierdzeniu zmian: ```js window.wallpaperPropertyListener = { applyUserProperties(properties) { if (properties.accent) document.documentElement.style.setProperty('--accent', properties.accent.value); } }; ``` Alternatywnie słuchaj zdarzenia aetherwall-properties. event.detail zawiera obiekty {value: ...}. Ostatnie ustawienia są w window.aetherWallProperties. Parametry zapisywane są osobno dla tapety i monitora. Dołączona biblioteka aetherwall-sdk.js daje onProperties, onPerformance, onEditMode oraz save/load. Działa też w zwykłej przeglądarce z ograniczonym zakresem funkcji. ## Rozdzielczość i wiele ekranów Używaj CSS procentowego, grid/flex i resize/ResizeObserver. Obliczaj rozmiar canvas z jego kontenera. W trybie automatycznym viewport odpowiada rozmiarowi monitora. contain zachowuje proporcje z pasami, cover skaluje i przycina projekt; zoom wpływa na CSS viewport. Każdy monitor ma osobną instancję przeglądarki i wybór tapety. Ten sam id tapety współdzieli profil przeglądarki i localStorage między ekranami: dokumenty mogą być wspólne. Parametry wyglądu są niezależne dla monitorów. Słuchaj zdarzenia storage, jeśli chcesz synchronizować otwarte widoki tych samych notatek. supportsWidgets:false wyłącza nakładkę widżetów dla tej tapety. Przełącznik edycji pozostaje dostępny. Widżety programu nie są częścią paczki autora i prywatna treść nie trafia do workshopu. ## Pisanie na pulpicie Używaj zwykłych input, textarea lub contenteditable. Włączona ikona ołówka wynosi tę samą tapetę nad ikony i nadaje jej normalny fokus klawiatury. Esc kończy edycję bez przeładowania. window.aetherWallEditMode oraz zdarzenie aetherwall-edit-mode sygnalizują stan. Nie przechwytuj Escape w fazie capture przed listenerem hosta. Przełącznik można przesuwać w trybie edycji. ## Animacja, limit FPS i wydajność AetherWall ogranicza wywołania requestAnimationFrame do skonfigurowanego FPS. Limit nie obejmuje CSS/WAAPI, WebGL animowanego innymi timerami, wideo ani kompozytora WebView2. Nie ma globalnego twardego limitu FPS WebView2. Płynna, oszczędna tapeta powinna używać jednej pętli RAF, czasu przekazanego do callbacku, DPR ograniczonego do potrzeb i unikać stałych timerów oraz filtrów na całym ekranie. ```js let previous=0; function frame(time) { const dt=Math.min(.1,(time-previous)/1000);previous=time; // Aktualizuj scenę na podstawie dt, nie liczby klatek. requestAnimationFrame(frame); } requestAnimationFrame(frame); window.addEventListener('aetherwall-performance', e => { const {fps,reducedMotion}=e.detail; // Dostosuj liczbę cząstek lub efekty. }); ``` window.aetherWallPerformance ma fps i reducedMotion. Obsługuj także prefers-reduced-motion. Pauza hosta wstrzymuje WebView2 i odbiór audio; po powrocie dt może być duże, dlatego ograniczaj skok czasu. Profil oszczędny ogranicza RAF i częstotliwość FFT. Ustawienie renderer CPU/GPU zaczyna działać po restarcie. Tryb CPU nie gwarantuje mniejszego zużycia zasobów. ## Audio i multimedia Opcjonalnie wywołaj wallpaperRegisterAudioListener(samples => ...). samples ma 128 wartości [0,1]; pierwsze 64 to widmo, drugie 64 zdublowane. Obecny silnik analizuje pierwszy kanał domyślnego wyjścia audio. Nie używa mikrofonu. Częstotliwość zdarzeń zależy od ustawienia audio; funkcja może nie wysyłać próbek, gdy analiza jest wyłączona lub tapeta wstrzymana. Opcjonalne funkcje wallpaperRegisterMediaPropertiesListener, wallpaperRegisterMediaThumbnailListener, wallpaperRegisterMediaTimelineListener, wallpaperRegisterMediaPlaybackListener i wallpaperRegisterMediaStatusListener przekazują informacje z sesji multimediów Windows. Rejestracja uruchamia potrzebny most. W standardowej przeglądarce sprawdzaj istnienie funkcji przed wywołaniem. ## Zapis, sieć i uprawnienia localStorage/IndexedDB są trwałe w profilu id tapety. Nie zapisuj plików w katalogu paczki. Przeglądarka może korzystać z sieci, lecz uprawnienia urządzeń i pobieranie plików są blokowane. Nowe okna i nawigacja poza lokalny origin są blokowane. Tapety zawierają kod wykonywalny autora; suma SHA-256 zapewnia integralność paczki, a nie zaufanie do jej treści. Nie umieszczaj sekretów w JS. ## Publikacja Workshop: https://0707.pl/soft/aetherwall/api/catalog.json Załóż konto twórcy w creator.html i aktywuj je e-mailem. Publikacje i aktualizacje trafiają do moderacji; są publiczne po zatwierdzeniu. Serwer kontroluje ZIP, ścieżki, manifest, miniaturę i SHA-256. Konto właściciela jest przypisane do ID projektu; inny twórca nie może opublikować jego aktualizacji. Administrator ma uprawnienia zarządzania. Publikacja z aplikacji przy użyciu klucza administratora pozostaje dostępna. API: GET api/catalog.json?q=...&sort=newest|popular; GET api/packages/{id}.zip; POST api/publish (surowy ZIP) z X-Workshop-Token, X-Title, X-Author, X-Description (trzy teksty URL-encoded); DELETE api/packages/{id} z X-Workshop-Token. Lista zwraca url, sha256, preview, created, size, downloads, version, creatorId, rating i ratingCount. Katalog pokazuje najnowszą zatwierdzoną wersję każdego ID. Licznik pobrań obejmuje żądania pliku, nie unikalnych użytkowników. ## Weryfikacja przed publikacją Sprawdź minimum 1280×720, 1920×1080, ultrawide i pionowy viewport, wszystkie właściwości i ich reset, wpisywanie tekstu z polskimi znakami, brak sieci, pauzę i wznowienie oraz limit RAF. Upewnij się, że ZIP nie zawiera Data, kluczy, prywatnych notatek ani testów. Przykład działającej tapety jest w Wallpapers/aurora. ## Projekty MP4 (od wersji 0.6) Importuj bezpośrednio MP4 w Bibliotece. Program kopiuje film i tworzy projekt wideo; nie potrzebujesz index.html ani własnego kodu strony. Film pozostaje niezmieniony, bez konwersji. Odtwarzacz programu obsługuje pętlę, wyciszenie, głośność, prędkość, dopasowanie, jasność, kontrast, nasycenie, rozmycie, kolor, cząsteczki, poświatę reagującą na systemowe audio oraz ruch za kursorem. Widżety i edycja pulpitu działają także z MP4. Efekty nie tworzą prawdziwej głębi 3D filmu ani animacji obiektów z nieruchomego obrazu. Minimalny manifest paczki wideo: ```json {"id":"moj-film","title":"Mój film","author":"Autor","description":"Tapeta wideo","entry":"video.mp4","version":1,"type":"video","supportsWidgets":true} ``` Paczka zawiera wallpaper.json i video.mp4, opcjonalnie preview.png. Brak properties automatycznie udostępnia parametry odtwarzacza. Jeśli podajesz properties, użyj kluczy loop, muted, volume, speed, videoFit, brightness, contrast, saturation, blur, tint, tintStrength, particles, particleCount, audioReactive, parallax zgodnie z Modern/VideoProject.cs. Stare paczki HTML nadal działają, type domyślnie wynosi web. Dla największej zgodności użyj MP4 z H.264 (AVC) i opcjonalnym AAC. Samo rozszerzenie MP4 nie gwarantuje zgodnego kodeka. Film pauzuje wraz z tapetą. Limit animacji JS ogranicza dodatkowe cząsteczki, nie liczbę klatek zdekodowanego filmu. Tryb ograniczonego ruchu wyłącza animowane efekty i parallax, lecz film nadal jest odtwarzany. Reakcja na audio wymaga włączonej analizy audio w ustawieniach programu. Ruch kursora na pulpicie działa w miejscach niezasłoniętych ikonami. Bezpośredni import lokalnego MP4 nie ma limitu 100 MB. Workshop zachowuje limit 100 MB paczki i rozpakowanych danych; przed publikacją dłuższy film trzeba zoptymalizować. Import kopiuje film do biblioteki, więc wymaga wolnego miejsca na dysku. # Konta twórców i weryfikacja w workshopie (0.7) W `creator.html` załóż konto, aktywuj je linkiem otrzymanym e-mailem i zaloguj się. Wgraj ZIP z manifestem i miniaturą. Obsługiwane są projekty HTML i MP4. Autor publikacji pochodzi z konta. Własne zgłoszenia i powody odrzucenia zobaczysz w panelu. Nowa publikacja otrzymuje status `pending`; paczka i miniatura są dostępne tylko autorowi i administratorowi. Po zatwierdzeniu przez moderatora pojawia się w katalogu publicznym. Moderator sprawdza działanie, treść i prawa do materiałów. Weryfikacja techniczna kontroluje ZIP, CRC plików, limity, manifest, parametry i niedozwolone pliki wykonywalne; nie jest skanowaniem antywirusowym ani gwarancją bezpieczeństwa JavaScript. Pięć dodatkowych przykładów w `Wallpapers`: `orbit`, `rain`, `horizon`, `neon`, `focus`. Każdy udostępnia parametry i reaguje na zmianę rozdzielczości; `neon` może reagować na audio. Ustawienie ograniczenia animacji lub ograniczonego ruchu jest respektowane przez te przykłady. ## Projekty JPG i PNG (od wersji 0.7.3) W aplikacji wybierz **Importuj tapetę** i plik `.jpg`, `.jpeg` lub `.png`. Program kopiuje obraz do biblioteki, tworzy miniaturę i samodzielny projekt. Wybierz docelowy monitor w bibliotece. Parametry obrazu obejmują dopasowanie (Wypełnij, Cały obraz, Rozciągnij), kolor tła, jasność i rozmycie. Widżety działają także na obrazach. Obraz pozostaje statyczny; nie wymaga własnego HTML ani animacji. Projekt do eksportu ZIP może zawierać `wallpaper.json`, `image.jpg` (lub PNG) i opcjonalny `preview.png`. Minimalny manifest: ```json {"id":"moj-obraz","title":"Mój obraz","author":"Twórca","description":"Tapeta fotograficzna","type":"image","entry":"image.jpg","version":1,"supportsWidgets":true} ``` Brak tablicy parametrów w projekcie obrazu oznacza zastosowanie standardowych parametrów. Do publikacji należy mieć prawa do obrazu; projekt podlega zwykłej moderacji workshopu. Import lokalny: maksymalnie 100 MB i 16384 piksele na bok. ## Studio efektów obrazu (od wersji 0.8.0) Zaimportuj JPG/PNG, wybierz projekt i otwórz **Studio efektów obrazu**. Edytor zapisuje `scene.json` w projekcie. Obsługuje do 16 uporządkowanych efektów: obrót, przepływ, falowanie, poświata, deszcz i rozbryzgi, krople na szybie z refrakcją, mgła, smugi prędkości i paralaksa kursora. 1. Dla koła dodaj **Obrót / koła** i przesuń krzyżyk na środek felgi. 2. Dopasuj promienie X/Y i kąt. Maska może być eliptyczna, także dla koła widzianego pod kątem. 3. Ustaw prędkość w obrotach na minutę; znak zmienia kierunek. 4. Dla chmur i wody wybierz Przepływ lub Falowanie, a potem **Maluj maskę**. Wymazywanie usuwa fragmenty maski. Cofnij/Ponów przywraca zmiany. 5. Dla pogody połącz Deszcz i Krople na szybie, regulując siłę i prędkość. Maska może ograniczać pogodę do wybranego obszaru. 6. Kliknij **Zapisz scenę** (Ctrl+S), aby zapisać projekt i zaktualizować działającą tapetę. Eksport ZIP zawiera obraz, miniaturę i scenę. Nie wymaga programowania HTML. Silnik używa WebGL2 i kolejnych przebiegów GPU, dzięki czemu późniejsze efekty operują na rezultacie wcześniejszych. Maski malowane są przechowywane jako znormalizowane punkty; atlas masek jest aktualizowany po zmianach. Tryby jakości ograniczają rozdzielczość renderowania do około 0,9 / 2,1 / 4,2 mln pikseli; limit FPS programu, ograniczenie animacji, ukrycie tapety i pauza są respektowane. Obraz bez animowanych efektów nie renderuje stale nowych klatek. Scena ma maksymalnie 8192 punkty masek i 1 MB opisu. Publikacja wymaga AetherWall 0.8.0 lub nowszego u odbiorcy; projekty nie są zgodne z binarnymi scenami Wallpaper Engine. Przykład: ```json {"version":1,"animation":true,"quality":"balanced","layers":[{"name":"Koło","type":"spin","enabled":true,"x":0.25,"y":0.7,"radiusX":0.06,"radiusY":0.1,"speed":30,"strength":0.5,"feather":0.15,"angle":0,"color":"#79D9FF","fullImage":false,"strokes":[]}]} ``` Współrzędne i promienie odnoszą się do oryginalnego obrazu (0–1), nie do monitora. `strokes` zawiera punkty `[x,y,promień,wymazywanie]`; wymazywanie ma wartość 0 lub 1. Efekty i sceny są sprawdzane przy imporcie i przez serwer workshopu. ## Oś czasu i zestawy efektów (od wersji 0.8.6) Studio ma gotowe zestawy: Deszcz na szybie, Woda i światło, Nocna poświata oraz Prędkość i mgła. Zestaw dodaje dwie warstwy; dopasuj ich maski i siłę do własnego obrazu. - Wybierz warstwę i przesuń suwak osi czasu. Podgląd zatrzyma się w wybranej chwili. - Ustaw pozycję X/Y, prędkość, siłę i kąt, następnie kliknij „Klatka kluczowa”. - Dodaj kolejną klatkę w innej chwili. Silnik płynnie interpoluje wartości między klatkami. - Długość sceny: 1–300 sekund. Każda warstwa: do 32 klatek. Kliknięcie czasu pod listą warstw wybiera klatkę; ponowne dodanie w tej samej chwili zastępuje jej wartości. - „Zapętlaj” powtarza animację; przy wyłączonej pętli scena z klatkami zatrzymuje się po końcu. Dla płynnego zapętlenia ustaw takie same wartości w pierwszej i ostatniej klatce. - Zapis i eksport ZIP obejmują oś czasu. Odbiorca potrzebuje AetherWall 0.8.6 lub nowszego; wcześniejsze wydania ignorują klatki. `scene.json` może zawierać `duration` (domyślnie 12), `loop` (domyślnie true), a każda warstwa `keyframes`. Klatka ma `time` w sekundach oraz `x`, `y`, `speed`, `strength`, `angle`. Klatki muszą być uporządkowane rosnąco, bez powtórzeń czasu i mieścić się w długości sceny. Parametry mają takie same zakresy jak parametry warstwy. Starsze sceny bez klatek zachowują dotychczasowe działanie. Obrót nadal symuluje ruch płaskiego fragmentu zdjęcia; nie odtwarza geometrii 3D. ## Aktualizacje, kolekcje i oceny (0.8.7) - Aby wydać aktualizację, zachowaj `id` i typ projektu oraz zwiększ całkowity `version` w `wallpaper.json`. Zgłoś ZIP z tego samego konta. Nowa wersja przechodzi moderację; przed zatwierdzeniem pozostaje widoczna poprzednia. - W aplikacji filtr „Dostępna aktualizacja” i przycisk „Zaktualizuj tapetę” umożliwiają ręczną instalację wyższej wersji. Pobranie jest weryfikowane SHA-256. Aktualizacja zachowuje parametry, ID WebView (localStorage/IndexedDB), widżety oraz własną scenę Studio obrazu. Nie zmieniaj kluczy i znaczenia zapisów użytkownika między wersjami bez migracji w kodzie tapety. Nie są pobierane automatycznie w tle. - Aktualizacja dotyczy projektu zainstalowanego w bibliotece, a nie plików szablonu wbudowanego w program. Zachowuje do trzech kopii poprzednich projektów w Data/WallpaperBackups. Dziennik wymiany umożliwia odzyskanie po przerwaniu operacji. Kopie wymagają miejsca na dysku. - Ulubione i własne kolekcje są przechowywane na tym komputerze; nie synchronizują się z kontem online. Nazwa kolekcji ma do 60 znaków, limit wynosi 30 kolekcji. - Strona `wallpaper.html?id=ID_PACZKI` pokazuje tapetę, ocenę i inne projekty twórcy. `wallpaper.html?creator=ID_TWÓRCY` jest publicznym profilem bez adresu e-mail. - Aktywowane konto ma jedną ocenę 1–5 na ID tapety, wspólną dla wszystkich wersji. Kolejny zapis zastępuje ocenę; 0 ją usuwa. Aplikacja pokazuje średnią i liczbę ocen, a do oceniania otwiera oficjalną stronę. - API: GET/POST `api/ratings/ID_PACZKI`; POST wymaga sesji, zgodnego Origin oraz X-CSRF-Token i JSON `{"rating":5}`. GET `api/creators/ID_TWÓRCY` zwraca nazwę i aktualne publiczne projekty. ## Układ widżetów i panoramy (0.9.0) Włącz edycję pulpitu ikoną na tapecie. Przesuwaj widżet za nagłówek i zmieniaj rozmiar uchwytem w prawym dolnym rogu. Pasek narzędzi pozwala włączyć siatkę, wyrównać wybrany widżet i zapisać nazwany układ. Wczytanie układu zmienia pozycje i rozmiary, zachowując aktualne notatki i zadania. Przyciskiem Gotowe zakończysz edycję. Można zapisać 20 układów. Panoramę włączysz w Ustawienia → Ekrany dla projektu wybranego w bibliotece. Jeden renderer pokrywa prostokąt obejmujący rzeczywisty układ monitorów; przestrzenie między ekranami nie są osobnymi obrazami. Responsywne projekty HTML powinny korzystać z rozmiaru viewportu, a obrazy i filmy z dopasowania z przycięciem lub zachowaniem proporcji. Harmonogramy i playlisty pojedynczych ekranów są w panoramie wstrzymane. Ustawienie zwykłej tapety na wybranym monitorze kończy panoramę. Ustawienia → Aktualizacje zawierają sprawdzanie plików i naprawę przez pobranie aktualnego wydania. Folder Data jest zachowany. Instalator również udostępnia naprawę oraz wybór katalogu. ## Studio i publikowanie (0.10.0) Dla projektu JPG/PNG otwórz Studio efektów. Elipsa i Prostokąt rysują maskę przez przeciągnięcie. Wielokąt tworzy się klikając wierzchołki; Enter albo Zamknij kończy maskę, Escape anuluje. Pędzel dodaje obszary, a Wymazuj odejmuje je również od elips i pełnego obrazu. Maski wielokątne mają maksymalnie 64 punkty. Siła obrotu steruje mieszaniem ruchomej felgi z oryginałem; do pełnego obrotu ustaw 100%. Podgląd ukrywa oznaczenia maski. Po lewej można wybrać deszcz, śnieg, mgłę lub słońce oraz oświetlenie dzienne, nocne i zachód. Automatyka korzysta z Open-Meteo dla wpisanego miasta, odświeża dane co 15 minut i kończy zapytanie po 12 sekundach. Bez danych pogodowych opady są wyłączone, a automatyczne oświetlenie korzysta z zegara komputera. Tryb Oryginalne zdjęcie zachowuje kolory obrazu. Przycisk Workshop zapisuje scenę i miniaturę, a następnie otwiera okno publikowania. Uzupełnij tytuł, autora, opis oraz kolejną wersję projektu i klucz twórcy dostępny w panelu aktywowanego konta. Dopiero Wyślij do moderacji przesyła paczkę. Klucz nie jest zapisywany w projekcie. Tapeta staje się publiczna po zatwierdzeniu moderacji. Scena zachowuje wersję formatu 1; opcjonalne pola weather, daylight i city wymagają aplikacji 0.10.0. Warstwa może mieć polygon: tablicę od 3 do 64 par współrzędnych 0–1. Starsze sceny bez tych pól działają bez zmian. ## Pobieranie, podgląd i ustawienia (0.11.0) W workshopie kliknij Zainstaluj tapetę, wybierz ewentualne ustawienie na monitorze i dodaj projekt do kolejki. Okno wyboru zamyka się, a centrum pobierania pokazuje liczbę zadań, postęp i rozmiar. Możesz kontynuować przeglądanie i dodawać inne projekty. Pobrania są wykonywane pojedynczo, sprawdzane SHA-256 i mają limit 100 MB oraz pięciu minut. Anuluj działa do rozpoczęcia wymiany plików. Nieudane i anulowane pobranie można ponowić. Wyczyść zakończone usuwa historię bieżącej sesji. Zamknięcie programu anuluje pobieranie; kolejka nie jest odtwarzana po restarcie. Uruchom podgląd na żywo pobiera projekt do osobnego katalogu tymczasowego. Domyślnie dźwięk jest wyłączony; można go włączyć przełącznikiem Dźwięk i wstrzymać podgląd. Zamknięcie okna od razu usuwa kontroler renderera i sprząta pliki tymczasowe. Podgląd nie dodaje projektu do biblioteki ani nie uruchamia analizy dźwięku systemowego lub odczytu danych odtwarzacza. Jego parametry startowe pochodzą z projektu, a prawa do nawigacji, nowych okien, pobierania plików i uprawnień pozostają ograniczone jak w pozostałych tapetach. W Ustawienia → Wydajność dodaj nazwę aplikacji lub wybierz plik EXE. Reguła działa, gdy proces o tej nazwie jest uruchomiony, na wszystkich ekranach. Wstrzymaj zamraża tapety; Wyłącz renderery zwalnia hosty tapet i pozostawia zwykły pulpit Windows. Wyłączenie ma pierwszeństwo przy kilku pasujących regułach. Po zakończeniu aplikacji tapety wracają z zapisanymi parametrami, przypisaniami monitorów, panoramą i wcześniejszą ręczną pauzą. Reguły można osobno wyłączać i usuwać. Program nie zamyka ani nie uruchamia wskazanych gier. Panel zasobów pokazuje pomiar CPU, RAM, liczbę hostów tapet i procesów oraz limit animacji JavaScript. Zlicza główny proces aplikacji i skojarzone procesy WebView2, bez podwójnego liczenia procesów wspólnych. Wartości RAM są sumą pamięci roboczej procesów, a CPU procentem całkowitej mocy logicznych procesorów. Szybkie profile stosują ustawienia od razu. Nie jest to pomiar zużycia GPU; filmy i animacje CSS zachowują własne tempo. W Ustawienia → Ogólne można eksportować i przywracać kopię JSON. Obejmuje ona przypisania ekranów, parametry projektów, profile, playlisty, harmonogramy, reguły gier, widżety z treścią, pozycje przycisków pulpitu, kolekcje oraz preferencje powiadomień. Nie zawiera paczek tapet, kluczy publikacji, kont, danych przeglądarki ani wpisu autostartu w Windows. Brakujące projekty zainstaluj osobno; zapisy odłączonych ekranów są zachowywane. Przywracanie sprawdza format, nazwy i wartości przed zapisem, a błąd wymiany plików cofa zmienione ustawienia. Pozostałe ustawienia projektów, których nie ma w kopii, pozostają na komputerze. Limit kopii wynosi 16 MB. Zmiana renderera GPU/CPU wymaga ponownego uruchomienia. # Studio: warstwy i parametry — 0.12.0 Otwórz projekt JPG/PNG w Studio i wybierz „Importuj obraz JPG/PNG”. Każdy obraz staje się osobną warstwą; przezroczyste PNG nadają się do kół, świateł i innych wyciętych elementów. Studio nie wycina automatycznie obiektów ze zdjęć — przygotuj przezroczysty plik przed importem. - „Przesuwaj” pozwala zaznaczać i przesuwać warstwy na podglądzie. Narożne uchwyty zmieniają rozmiar; Shift zachowuje proporcje. - Ustaw kąt, krycie i obroty na minutę. Kolejność na liście określa nakładanie obrazów i efektów. Blokada zabezpiecza warstwę przed przypadkowym przeciągnięciem. - Dodaj klatki na osi czasu albo włącz „Auto-klatka”. Przeciągaj znaczniki czasu i wybieraj przejście: liniowe, płynne lub skokowe. Przejście dotyczy odcinka rozpoczynającego się na wybranej klatce. - W „Parametrach odbiorcy” zaznacz udostępniane ustawienia i zmień ich nazwy. Parametry ogólne pogody, oświetlenia i animacji znajdują się po lewej. Odbiorca zobaczy je w parametrach tapety po instalacji. - „Workshop” zapisuje scenę i miniaturę, następnie otwiera formularz publikacji z opisem, wersją oraz rozdzielczością. Projekt trafia do moderacji. Obrazy są kopiowane do `assets/`, a scena jest zapisywana w `scene.json`. Limit wynosi 16 warstw, 32 klatki na warstwę i 48 udostępnianych parametrów. Pojedynczy obraz może mieć do 100 MB i 16384 pikseli na bok; tekstury warstw są ograniczane do 2048 pikseli na bok podczas renderowania, żeby zmniejszyć zużycie pamięci GPU. Oryginalny plik pozostaje w projekcie. Nowe sceny wymagają AetherWall 0.12.0 i WebGL2. # Studio 2 i tapety muzyczne — 0.13.0 „Zaznacz fragment zdjęcia” tworzy maskę pomocniczą. Zaznacz element elipsą, wielokątem lub pędzlem, popraw go wymazywaniem i wybierz „Utwórz przezroczystą warstwę”. Wycięcie kopiuje piksele zdjęcia źródłowego; nie usuwa obiektu z oryginalnego tła i nie generuje brakujących fragmentów. Obraz roboczy jest ograniczony do 4096 pikseli na bok. - Dla warstwy obrazu wskaż punkt obrotu na podglądzie albo ustaw X/Y w procentach jej rozmiaru. Żółty znacznik pokazuje środek obrotu. - „Przypnij do warstwy” pozwala umocować światła, koła i efekty do obiektu. Hierarchia nie może zawierać cykli. Warstwy mają własne animacje, a także dziedziczą transformację rodzica. - Reakcja audio jest opcjonalna. Wybierz bas, średnie tony, wysokie tony lub całe pasmo, a następnie siłę, prędkość, rozmiar lub drgania. Czułość i wybór reakcji można udostępnić odbiorcom. - Podgląd w Studio słucha muzyki dopiero po zaznaczeniu „Słuchaj dźwięku w podglądzie”. Wyłączenie audio w ustawieniach wydajności programu ma pierwszeństwo. - Diagnostyka pokazuje szacunek pamięci tej sceny oraz pomiary CPU/GPU. Ranking warstw dotyczy przekazania poleceń, nie dokładnego czasu wykonania pojedynczej warstwy na GPU. Nie wszystkie sterowniki udostępniają pomiar GPU. Tapety HTML mogą korzystać z `wallpaperRegisterAudioListener(callback)`. Widmo ma 128 wartości: 64 pasma dla lewego i prawego kanału. Od 0.13.3 granice pasma i wynoszą `20 * 1000^(i/64)` do `20 * 1000^((i+1)/64)` Hz, z uwzględnieniem częstotliwości urządzenia. Bas: indeksy 0–23, środek 24–48, góra 49–63; kanał prawy ma przesunięcie 64. Wygładzanie należy uzależniać od upływu czasu, nie liczby wywołań. Do zakończenia własnej subskrypcji użyj `aetherWallRemoveAudioListener(callback)`, aby inne widżety mogły nadal analizować muzykę. Dane odtwarzacza są dostępne przez słuchacze Properties, Thumbnail, Playback i Timeline. Spotify musi udostępniać sesję multimediów Windows; integracja nie wymaga konta Spotify w AetherWall. Analiza dźwięku obejmuje dźwięk systemowy i nie wysyła go do serwera.