KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Pierwszy widok KretUI
Widok `view` z tytułem, stanem (`state`), tekstem z podstawieniem `{licznik}` i przyciskiem, który zmienia stan lokalnie (`set`). Bez logiki KretS — interfejs nie ma żadnych uprawnień. Renderer SDK rysuje prawdziwą klatkę PNG (`--self-test`).
Witryna nie wykonuje kodu ani nie prowadzi walidacji SDK. Wyniki poniżej pochodzą z eksportu określonej wersji i przestają opisywać kod po jego zmianie.
Kanoniczne pliki projektu
module Main
fn Start() {
}
fn Shutdown() {
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.Pusta linia oddziela fragmenty źródła.fn Start() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.
Wynik i typowy błąd
Lista widoków zawiera `Hello`; self-test kończy się kodem 0 i zapisuje klatkę z tekstem „Dziękuję!…”.
Komponent spoza listy renderera (`tooltip`, `menu`, `contextMenu`, `chart`) → `KCS-KUI-0107` (NOT_SUPPORTED w KretUI 1.0).
Wymagania wersji i procedura lokalna
- sdk
- 1.0.0-rc.3+kret.local.3
- sdkInfoReports
- 1.0.0-rc.3
- core
- 1.0.0-test.6.11-draft.1
- os
- Windows 11 x64
- dotnet
- .NET 10 runtime
Polecenia poniżej są instrukcją do samodzielnego wykonania z właściwym lokalnym SDK. DATA/OUT muszą wskazywać nowe katalogi testowe. Nie ma przycisku uruchamiania na serwerze.
- check
kret check . --jsonKatalog: project · Oczekiwany kod wyjścia: 0 - list-views
kretui-host . --list-viewsKatalog: project · Oczekiwany kod wyjścia: 0 - self-test
kretui-host . --self-test {OUT}/frame --data {DATA} --policy host-policy.json --click 0/3Katalog: project · Oczekiwany kod wyjścia: 0
Wyniki zapisane w pakiecie źródłowym
To dowód z eksportu, nie wynik bieżącego wykonania w przeglądarce.
# EXPECTED_OUTPUT — KRETUI-B01-HelloView
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:46Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.
# Actual output of the run. Paths replaced by placeholders.
### 1. check (exit 0, PASS)
> kret check . --json
{
"format": "kret-diagnostics/1",
"project": "<project>",
"succeeded": true,
"plugin": {
"id": "LOCAL-KPL-UXB2VEWS",
"name": "HelloView",
"version": "1.0.0",
"profile": "standard",
"database": false
},
"permissions": {
"required": [],
"optional": []
},
"handlers": {
"lifecycle": [
"start",
"shutdown"
],
"events": [],
"commands": []
},
"diagnostics": []
}
### 2. list-views (exit 0, PASS)
> kretui-host . --list-views
{"format":"kretui-views/1","project":"<project>","ok":true,"hasManifest":true,"views":[{"name":"Hello","title":"Witaj w KretUI","width":420,"height":240,"file":"Ui/Hello.kretui","line":3,"column":1,"states":[{"name":"greeted","type":"Bool"}],"actions":[]}],"diagnostics":[]}
### 3. self-test (exit 0, PASS)
> kretui-host . --self-test {OUT}/frame --data {DATA} --policy host-policy.json --click 0/3
widok Hello; logika: izolowany proces pluginu LOCAL-KPL-UXB2VEWS (pid 39572)
test własny: OK; wyniki: <out>\frame
[checkFile {OUT}/frame/self-test.json]
{
"format": "kretui-self-test/1",
"view": "Hello",
"title": "Witaj w KretUI",
"logic": "isolated-process",
"pluginProcessId": 39572,
"hostProcessId": 34408,
"size": "compact",
"width": 420,
"height": 240,
"ok": true,
"failures": [],
"actions": [
{
"ok": true,
"code": "",
"message": ""
}
],
"state": {
"greeted": true
},
"controls": [
{
"path": "0",
"type": "column",
"name": "",
"enabled": true,
"control": "StackPanel",
"bounds": [
0,
0,
420,
216
]
},
{
"path": "0/0",
"type": "text",
"id": "intro",
"name": "Interfejs opisany w pliku .kretui.",
"enabled": true,
"control": "TextBlock",
"bounds": [
0,
0,
420,
19
]
},
{
"path": "0/2",
"type": "text",
"name": "Dzi\u0119kuj\u0119! Stan zmieni\u0142 si\u0119 lokalnie.",
"enabled": true,
"control": "TextBlock",
"bounds": [
0,
19,
420,
19
]
},
{
"path": "0/3",
"type": "button",
"name": "Przywitaj si\u0119",
"enabled": true,
"control": "Button",
"bounds": [
0,
38,
420,
32
]
}
],
"pluginLog": [],
"hostCalls": 0,
"denials": 0
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
# EXPECTED_OUTPUT — KRETUI-B01-HelloViewOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:46Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.### 1. check (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret check . --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."project": "<project>",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."succeeded": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "LOCAL-KPL-UXB2VEWS",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "HelloView",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."database": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."diagnostics": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.### 2. list-views (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kretui-host . --list-viewsOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{"format":"kretui-views/1","project":"<project>","ok":true,"hasManifest":true,"views":[{"name":"Hello","title":"Witaj w KretUI","width":420,"height":240,"file":"Ui/Hello.kretui","line":3,"column":1,"states":[{"name":"greeted","type":"Bool"}],"actions":[]}],"diagnostics":[]}Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.### 3. self-test (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kretui-host . --self-test {OUT}/frame --data {DATA} --policy host-policy.json --click 0/3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.widok Hello; logika: izolowany proces pluginu LOCAL-KPL-UXB2VEWS (pid 39572)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.test własny: OK; wyniki: <out>\frameOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.[checkFile {OUT}/frame/self-test.json]Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kretui-self-test/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."view": "Hello",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."title": "Witaj w KretUI",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."logic": "isolated-process",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginProcessId": 39572,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostProcessId": 34408,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."size": "compact",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."width": 420,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."height": 240,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."failures": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."actions": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."code": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."message": ""Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."state": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."greeted": truePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."controls": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."path": "0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "column",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."control": "StackPanel",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.420,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.216Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.]Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."path": "0/0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "text",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "intro",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Interfejs opisany w pliku .kretui.",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."control": "TextBlock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.420,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.19Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.]Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."path": "0/2",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "text",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Dzi\u0119kuj\u0119! Stan zmieni\u0142 si\u0119 lokalnie.",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."control": "TextBlock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.19,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.420,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.19Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.]Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."path": "0/3",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Przywitaj si\u0119",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."control": "Button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.38,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.420,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.32Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.]Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."pluginLog": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denials": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.Pusta linia oddziela fragmenty źródła.
Diagnostyka i raporty testów
null
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
nullOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Zapisane podglądy KretUI

Pochodzenie i integralność
KRET_LANGUAGE_KRETUI.zip:KretUI/Examples/BASIC_HelloView/example.json
02_PLAYGROUND/EXAMPLES/KRETUI-B01-HelloView.json
SHA-256 03C8D4FE3A02F2676A7EB462E56A0674DD47C695BC14241C8545B0F7F445CE63Materiały źródłowe do tego tematu
Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.
KRETUI-B01-HelloView — Pierwszy widok KretUI
KRETUI-B01-HelloView — Pierwszy widok KretUI
🇬🇧 English version below.
| Pole | Wartość |
|---|---|
| Technologia | KretUI |
| Poziom | BASIC |
| Klasyfikacja | RUNNABLE_LOCAL — Uruchamialny lokalnie (SDK, izolowany proces pluginu) |
| Playground | LOCAL_EXECUTE — lokalnie: wykonanie w KretStudio / SDK (publicznie: tylko statycznie) |
| SDK | 1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany) |
| Wynik testu | TEST_RESULTS.json, rzeczywisty wynik: EXPECTED_OUTPUT.txt |
Co pokazuje
Widok view z tytułem, stanem (state), tekstem z podstawieniem {licznik} i przyciskiem, który zmienia stan lokalnie (set). Bez logiki KretS — interfejs nie ma żadnych uprawnień. Renderer SDK rysuje prawdziwą klatkę PNG (--self-test).
Pliki
| Plik |
|---|
Script/Main.krs |
Ui/Hello.kretui |
host-policy.json |
plugin.kretl |
Jak uruchomić
Katalog roboczy: katalog tego przykładu. kret oznacza <SDK>\Compiler\kret.exe, kretui-host — <SDK>\UiHost\kretui-host.exe. {DATA} / {OUT} to nowe, puste katalogi poza projektem. Wymagania: REQUIREMENTS.md.
kret check . --json— walidacja wszystkich języków projektukretui-host . --list-views— lista widoków (EXPERIMENTALkretui-views/1)kretui-host . --self-test {OUT}/frame --data {DATA} --policy host-policy.json --click 0/3— render bez okna + kliknięcie przycisku →frame.png,self-test.json
Oczekiwany wynik
Lista widoków zawiera Hello; self-test kończy się kodem 0 i zapisuje klatkę z tekstem „Dziękuję!…”.
Najczęstszy błąd
Komponent spoza listy renderera (tooltip, menu, contextMenu, chart) → KCS-KUI-0107 (NOT_SUPPORTED w KretUI 1.0).
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →