KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
UiDemo — notatki (KretUI + KretStyle + KTheme + KretS + KretDB)
UiDemo — notatki (KretUI + KretStyle + KTheme + KretS + KretDB)
Mała aplikacja z listą notatek. Pokazuje podział odpowiedzialności:
| Plik | Rola |
|---|---|
Ui/Notes.kretui | struktura widoku, stan, akcje |
Ui/App.kstyle | wygląd (kaskada, stany, reguły dla małego okna i dotyku) |
Ui/App.ktheme | motyw z wariantami dark i highContrast oraz wymaganiami kontrastu |
Script/Main.krs | logika: komendy notes.load, notes.add, notes.clear |
Disk/Schema.kdb | baza KretDB |
plugin.kretl | manifest: uprawnienia i lista komend, które host może wywołać |
host-policy.json | uprawnienia przyznane przez hosta |
Uruchomienie
Kontrola projektu (interfejs razem z logiką i manifestem) oraz logika bez okna — komendy interfejsu wywołane przez brokera:
kret check 11_Examples\UiDemo
kret run 11_Examples\UiDemo --policy 11_Examples\UiDemo\host-policy.json --data %TEMP%\kret-data -o %TEMP%\kret-build\UiDemo --invoke "notes.add=[\"pierwsza notatka\"]" --invoke notes.load
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
kret check 11_Examples\UiDemoOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kret run 11_Examples\UiDemo --policy 11_Examples\UiDemo\host-policy.json --data %TEMP%\kret-data -o %TEMP%\kret-build\UiDemo --invoke "notes.add=[\"pierwsza notatka\"]" --invoke notes.loadOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Okno wymaga hosta interfejsu. Zbuduj go (artefakty poza katalogiem roboczym):
dotnet build 04_Languages\KretUI\src\Kret.Ui.Host\Kret.Ui.Host.csproj -c Release --artifacts-path %TEMP%\kcs-build\final
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
dotnet build 04_Languages\KretUI\src\Kret.Ui.Host\Kret.Ui.Host.csproj -c Release --artifacts-path %TEMP%\kcs-build\finalOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Okno:
%TEMP%\kcs-build\final\bin\Kret.Ui.Host\release\kretui-host.exe 11_Examples\UiDemo
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
%TEMP%\kcs-build\final\bin\Kret.Ui.Host\release\kretui-host.exe 11_Examples\UiDemoOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Warianty: --variant dark, --variant highContrast, --touch, --width 420.
Test bez okna (obraz i opis kontrolek w katalogu wyników):
kretui-host 11_Examples\UiDemo --self-test %TEMP%\uidemo-out --input "0/2/0=Kupić mleko" --click 0/2/1
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
kretui-host 11_Examples\UiDemo --self-test %TEMP%\uidemo-out --input "0/2/0=Kupić mleko" --click 0/2/1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Oczekiwane zachowanie
- Po otwarciu widok wywołuje
notes.loadi pokazuje zapisane notatki (albo „Brak notatek.”). - Przycisk Dodaj jest nieaktywny, dopóki pole jest puste. Po wpisaniu tekstu i kliknięciu (albo Enter) notatka trafia
do bazy, lista się odświeża, a pole się czyści.
- Wyczyść… otwiera okno potwierdzenia; Usuń kasuje notatki w jednej transakcji, Anuluj zamyka okno.
- Notatki zostają po zamknięciu i ponownym uruchomieniu.
- Błąd logiki (np. pusta notatka wysłana z pominięciem interfejsu) pojawia się jako komunikat w widoku.
Test automatyczny
08_Testing/KretTest/Kret.Ui.Tests → Demo_host_renders_the_example_and_handles_input_end_to_end,
Preview_runs_project_logic_in_a_separate_process_under_host_policy, Preview_without_granted_permissions_fails_closed,
Preview_rejects_ui_that_does_not_match_logic_or_manifest; oraz MandatoryExamplesTests.UiDemo_is_checked_with_its_logic_and_starts_in_isolation
(kontrola projektu i komendy interfejsu przez kret run).
Wynik (Windows 11 x64, 2026-10-11): PASS.
Stan bezpieczeństwa
- Logika działa w osobnym procesie (
Kret.PluginHost) za brokerem; host rysuje tylko interfejs. - Plugin ma wyłącznie uprawnienia z
host-policy.json: dziennik i własna baza KretDB. Bez polityki nie uruchomi się. - Host może wywołać tylko komendy z bloku
handlersmanifestu; typy argumentów sprawdza proces pluginu. - Przykład nie korzysta z sieci, plików użytkownika ani modeli AI.
- Proces logiki działa na poziomie izolacji hosta (domyślnie ograniczony token i niski poziom integralności). Ten poziom nie
blokuje odczytu plików użytkownika ani sieci — niezaufane pluginy uruchamia się w kontenerze aplikacji
(07_Security/SecurityBroker/README.md).
Źródło i wersja
Zweryfikowany import PUBLIC_CANDIDATE. Identyfikatory źródeł odnoszą się do eksportu i nie dają dostępu do plików serwera.
03_EXAMPLE_PLUGINS/KretUiDemo/docs/UPSTREAM_README_PL.md
SHA-256 1F7DF896531775B8A36FD6E5EAA4277E153AC07D31E723B63C8482609D6FCE2AOryginalne źródło jest dwujęzyczne; terminy techniczne i polecenia zachowano.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →