KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Notatki: KretUI + KretStyle + KTheme + KretS + KretDB
Pełny przykład warstw interfejsu na podstawie szablonu SDK `multi-language`: struktura (`.kretui`), wygląd (`.kstyle` — selektory, stany, `media`), motyw (`.ktheme` — tokeny, warianty `dark`/`highContrast`, kontrola kontrastu WCAG), logika (KretS) i dane (KretDB). Render w wariancie wysokiego kontrastu i interakcja zapisująca do bazy. Folder `low-contrast/` pokazuje, że zbyt mały kontrast motywu jest błędem kompilacji.
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
# Baza projektu: notatki numerowane od 1 i licznik notatek.
database UiDemo {
version = 1
table notes {
id: Int primary key
text: String
}
table counters {
name: String primary key
value: Int
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
# Baza projektu: notatki numerowane od 1 i licznik notatek.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.database UiDemo {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.version = 1Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.Pusta linia oddziela fragmenty źródła.table notes {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.id: Int primary keyOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.text: StringOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.table counters {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.name: String primary keyOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.value: IntOdczytaj 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.
Wynik i typowy błąd
Kod 0 w trzech pierwszych krokach (dwie klatki PNG), kod 1 z `KCS-KUI-0305` w ostatnim.
Logika w stylu (np. `when` w `.kstyle`) — to błąd „nieznana właściwość”; styl i motyw nie mają dostępu do stanu ani uprawnień.
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 - self-test-add
kretui-host . --self-test {OUT}/add --data {DATA} --policy host-policy.json --input 0/2/0=Kupić mleko --click 0/2/1Katalog: project · Oczekiwany kod wyjścia: 0 - self-test-high-contrast
kretui-host . --self-test {OUT}/hc --data {DATA} --policy host-policy.json --variant highContrastKatalog: project · Oczekiwany kod wyjścia: 0 - low-contrast
kret check low-contrast --jsonKatalog: project · Oczekiwany kod wyjścia: 1
Wyniki zapisane w pakiecie źródłowym
To dowód z eksportu, nie wynik bieżącego wykonania w przeglądarce.
# EXPECTED_OUTPUT — KRETUI-A01-NotesStyleThemeDb
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:44Z). Ś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-UXA2NTES",
"name": "NotesStyleThemeDb",
"version": "1.0.0",
"profile": "standard",
"database": true
},
"permissions": {
"required": [
"logs.own.write",
"kretdb.open",
"kretdb.read",
"kretdb.write"
],
"optional": []
},
"handlers": {
"lifecycle": [
"start",
"shutdown"
],
"events": [],
"commands": [
"notes.load",
"notes.add",
"notes.clear"
]
},
"diagnostics": []
}
### 2. self-test-add (exit 0, PASS)
> kretui-host . --self-test {OUT}/add --data {DATA} --policy host-policy.json --input "0/2/0=Kupić mleko" --click 0/2/1
widok Notes; logika: izolowany proces pluginu LOCAL-KPL-UXA2NTES (pid 3176)
test własny: OK; wyniki: <out>\add
[checkFile {OUT}/add/self-test.json]
{
"format": "kretui-self-test/1",
"view": "Notes",
"title": "Notatki \u2014 przyk\u0142ad KretUI",
"logic": "isolated-process",
"pluginProcessId": 3176,
"hostProcessId": 34432,
"size": "compact",
"width": 520,
"height": 560,
"ok": true,
"failures": [],
"actions": [
{
"ok": true,
"code": "",
"message": ""
}
],
"state": {
"items": ["Kupi\u0107 mleko"],
"draft": "",
"busy": false,
"error": "",
"confirm": false,
"selected": 0
},
"controls": [
{
"path": "0",
"type": "column",
"id": "page",
"name": "",
"enabled": true,
"control": "StackPanel",
"bounds": [
0,
0,
520,
536
]
},
{
"path": "0/0",
"type": "text",
"id": "title",
"name": "Notatki",
"enabled": true,
"control": "TextBlock",
"bounds": [
10,
10,
500,
32
]
},
{
"path": "0/1",
"type": "text",
"name": "Struktura w .kretui, wygl\u0105d w .kstyle, motyw w .ktheme, logika w KretS, dane w KretDB.",
"enabled": true,
"control": "TextBlock",
"bounds": [
10,
50,
500,
38
]
},
{
"path": "0/2",
"type": "row",
"name": "",
"enabled": true,
"control": "StackPanel",
"bounds": [
10,
96,
500,
74
]
},
{
"path": "0/2/0",
"type": "input",
"name": "Nowa notatka",
"enabled": true,
"control": "TextBox",
"bounds": [
10,
96,
160,
74
]
},
{
"path": "0/2/1",
"type": "button",
"id": "addButton",
"name": "Dodaj",
"enabled": false,
"control": "Button",
"bounds": [
178,
133,
74,
37
]
},
{
"path": "0/4",
"type": "list",
"name": "Zapisane notatki",
"enabled": true,
"control": "ListBox",
"bounds": [
10,
178,
500,
160
]
},
{
"path": "0/6",
"type": "button",
"id": "clearButton",
"name": "Wyczy\u015B\u0107\u2026",
"enabled": true,
"control": "Button",
"bounds": [
10,
346,
97,
37
]
}
],
"pluginLog": [
"[info] NotesStyleThemeDb: start",
"[info] dodano notatk\u0119 nr 1"
],
"hostCalls": 10,
"denials": 0
}
### 3. self-test-high-contrast (exit 0, PASS)
> kretui-host . --self-test {OUT}/hc --data {DATA} --policy host-policy.json --variant highContrast
widok Notes; logika: izolowany proces pluginu LOCAL-KPL-UXA2NTES (pid 19652)
test własny: OK; wyniki: <out>\hc
[checkFile {OUT}/hc/self-test.json]
{
"format": "kretui-self-test/1",
"view": "Notes",
"title": "Notatki \u2014 przyk\u0142ad KretUI",
"logic": "isolated-process",
"pluginProcessId": 19652,
"hostProcessId": 39412,
"size": "compact",
"width": 520,
"height": 560,
"ok": true,
"failures": [],
"actions": [],
"state": {
"items": ["Kupi\u0107 mleko"],
"draft": "",
"busy": false,
"error": "",
"confirm": false,
"selected": 0
},
"controls": [
{
"path": "0",
"type": "column",
"id": "page",
"name": "",
"enabled": true,
"control": "StackPanel",
"bounds": [
0,
0,
520,
536
]
},
{
"path": "0/0",
"type": "text",
"id": "title",
"name": "Notatki",
"enabled": true,
"control": "TextBlock",
"bounds": [
10,
10,
500,
32
]
},
{
"path": "0/1",
"type": "text",
"name": "Struktura w .kretui, wygl\u0105d w .kstyle, motyw w .ktheme, logika w KretS, dane w KretDB.",
"enabled": true,
"control": "TextBlock",
"bounds": [
10,
50,
500,
38
]
},
{
"path": "0/2",
"type": "row",
"name": "",
"enabled": true,
"control": "StackPanel",
"bounds": [
10,
96,
500,
74
]
},
{
"path": "0/2/0",
"type": "input",
"name": "Nowa notatka",
"enabled": true,
"control": "TextBox",
"bounds": [
10,
96,
160,
74
]
},
{
"path": "0/2/1",
"type": "button",
"id": "addButton",
"name": "Dodaj",
"enabled": false,
"control": "Button",
"bounds": [
178,
133,
74,
37
]
},
{
"path": "0/4",
"type": "list",
"name": "Zapisane notatki",
"enabled": true,
"control": "ListBox",
"bounds": [
10,
178,
500,
160
]
},
{
"path": "0/6",
"type": "button",
"id": "clearButton",
"name": "Wyczy\u015B\u0107\u2026",
"enabled": true,
"control": "Button",
"bounds": [
10,
346,
97,
37
]
}
],
"pluginLog": [
"[info] NotesStyleThemeDb: start"
],
"hostCalls": 3,
"denials": 0
}
### 4. low-contrast (exit 1, PASS)
> kret check low-contrast --json
{
"format": "kret-diagnostics/1",
"project": "<project>\\low-contrast",
"succeeded": false,
"plugin": {
"id": "LOCAL-KPL-UXA2NTES",
"name": "NotesStyleThemeDb",
"version": "1.0.0",
"profile": "standard",
"database": true
},
"permissions": {
"required": [
"logs.own.write",
"kretdb.open",
"kretdb.read",
"kretdb.write"
],
"optional": []
},
"handlers": {
"lifecycle": [
"start",
"shutdown"
],
"events": [],
"commands": [
"notes.load",
"notes.add",
"notes.clear"
]
},
"diagnostics": [
{
"file": "<project>\\low-contrast\\Ui\\App.ktheme",
"line": 3,
"column": 1,
"endLine": 61,
"endColumn": 2,
"severity": "error",
"code": "KCS-KUI-0305",
"message": "motyw podstawowy: kontrast text na surface wynosi 1.18, a wymagane jest 7"
}
]
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
# EXPECTED_OUTPUT — KRETUI-A01-NotesStyleThemeDbOdczytaj 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:44Z). Ś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-UXA2NTES",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "NotesStyleThemeDb",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": truePole 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."logs.own.write",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.open",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.read",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."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."notes.load",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."notes.add",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."notes.clear"Odczytaj 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."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. self-test-add (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kretui-host . --self-test {OUT}/add --data {DATA} --policy host-policy.json --input "0/2/0=Kupić mleko" --click 0/2/1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.widok Notes; logika: izolowany proces pluginu LOCAL-KPL-UXA2NTES (pid 3176)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.test własny: OK; wyniki: <out>\addOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.[checkFile {OUT}/add/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": "Notes",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."title": "Notatki \u2014 przyk\u0142ad KretUI",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."logic": "isolated-process",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginProcessId": 3176,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostProcessId": 34432,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."size": "compact",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."width": 520,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."height": 560,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."items": ["Kupi\u0107 mleko"],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."draft": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."busy": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."error": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."confirm": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."selected": 0Pole 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."id": "page",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.520,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.536Odczytaj 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": "title",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Notatki",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.10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.500,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.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."path": "0/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "text",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Struktura w .kretui, wygl\u0105d w .kstyle, motyw w .ktheme, logika w KretS, dane w KretDB.",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.10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.50,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.500,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.38Odczytaj 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": "row",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.10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.96,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.500,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.74Odczytaj 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/0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "input",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Nowa notatka",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."control": "TextBox",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.96,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.160,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.74Odczytaj 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/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "addButton",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Dodaj",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."enabled": false,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.178,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.133,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.74,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.37Odczytaj 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/4",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "list",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Zapisane notatki",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."control": "ListBox",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.178,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.500,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.160Odczytaj 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/6",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "clearButton",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Wyczy\u015B\u0107\u2026",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.10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.346,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.97,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.37Odczytaj 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."[info] NotesStyleThemeDb: start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."[info] dodano notatk\u0119 nr 1"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."hostCalls": 10,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.### 3. self-test-high-contrast (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kretui-host . --self-test {OUT}/hc --data {DATA} --policy host-policy.json --variant highContrastOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.widok Notes; logika: izolowany proces pluginu LOCAL-KPL-UXA2NTES (pid 19652)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.test własny: OK; wyniki: <out>\hcOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.[checkFile {OUT}/hc/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": "Notes",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."title": "Notatki \u2014 przyk\u0142ad KretUI",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."logic": "isolated-process",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginProcessId": 19652,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostProcessId": 39412,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."size": "compact",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."width": 520,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."height": 560,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."state": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."items": ["Kupi\u0107 mleko"],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."draft": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."busy": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."error": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."confirm": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."selected": 0Pole 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."id": "page",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.520,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.536Odczytaj 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": "title",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Notatki",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.10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.500,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.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."path": "0/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "text",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Struktura w .kretui, wygl\u0105d w .kstyle, motyw w .ktheme, logika w KretS, dane w KretDB.",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.10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.50,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.500,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.38Odczytaj 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": "row",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.10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.96,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.500,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.74Odczytaj 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/0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "input",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Nowa notatka",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."control": "TextBox",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.96,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.160,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.74Odczytaj 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/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "addButton",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Dodaj",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."enabled": false,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.178,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.133,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.74,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.37Odczytaj 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/4",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "list",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Zapisane notatki",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."control": "ListBox",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.178,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.500,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.160Odczytaj 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/6",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "clearButton",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "Wyczy\u015B\u0107\u2026",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.10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.346,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.97,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.37Odczytaj 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."[info] NotesStyleThemeDb: start"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."hostCalls": 3,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.### 4. low-contrast (exit 1, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret check low-contrast --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>\\low-contrast",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."succeeded": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "LOCAL-KPL-UXA2NTES",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "NotesStyleThemeDb",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": truePole 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."logs.own.write",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.open",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.read",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."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."notes.load",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."notes.add",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."notes.clear"Odczytaj 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."diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."file": "<project>\\low-contrast\\Ui\\App.ktheme",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."line": 3,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."column": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endLine": 61,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endColumn": 2,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."code": "KCS-KUI-0305",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."message": "motyw podstawowy: kontrast text na surface wynosi 1.18, a wymagane jest 7"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.}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
{
"format": "kretos-web-playground-diagnostics/1",
"exampleId": "KRETUI-A01-NotesStyleThemeDb",
"sdk": "1.0.0-rc.3+kret.local.3",
"origin": "PRECOMPUTED",
"diagnostics": [
{
"id": "diag.KRETUI-A01-NotesStyleThemeDb.4.1",
"exampleId": "KRETUI-A01-NotesStyleThemeDb",
"step": 4,
"stepName": "low-contrast",
"command": "kret check low-contrast --json",
"exitCode": 1,
"file": "low-contrast/Ui/App.ktheme",
"line": 3,
"column": 1,
"endLine": 61,
"endColumn": 2,
"severity": "error",
"code": "KCS-KUI-0305",
"message": "motyw podstawowy: kontrast text na surface wynosi 1.18, a wymagane jest 7",
"origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"
}
]
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kretos-web-playground-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exampleId": "KRETUI-A01-NotesStyleThemeDb",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."sdk": "1.0.0-rc.3+kret.local.3",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."origin": "PRECOMPUTED",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "diag.KRETUI-A01-NotesStyleThemeDb.4.1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exampleId": "KRETUI-A01-NotesStyleThemeDb",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."step": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."stepName": "low-contrast",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."command": "kret check low-contrast --json",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exitCode": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."file": "low-contrast/Ui/App.ktheme",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."line": 3,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."column": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endLine": 61,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endColumn": 2,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."code": "KCS-KUI-0305",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."message": "motyw podstawowy: kontrast text na surface wynosi 1.18, a wymagane jest 7",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"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.}Zamknięcie struktury otwartej we wcześniejszych liniach.
Zapisane podglądy KretUI


Pochodzenie i integralność
KRET_LANGUAGE_KRETUI.zip:KretUI/Examples/ADVANCED_NotesStyleThemeDb/example.json
02_PLAYGROUND/EXAMPLES/KRETUI-A01-NotesStyleThemeDb.json
SHA-256 F1FF56D6B4FC392C211C6E80B84794561C8278EFF43E39923898ADE9A25FB893Materiał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-A01-NotesStyleThemeDb — Notatki: KretUI + KretStyle + KTheme + KretS + KretDB
KRETUI-A01-NotesStyleThemeDb — Notatki: KretUI + KretStyle + KTheme + KretS + KretDB
🇬🇧 English version below.
| Pole | Wartość |
|---|---|
| Technologia | KretUI |
| Poziom | ADVANCED |
| 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
Pełny przykład warstw interfejsu na podstawie szablonu SDK multi-language: struktura (.kretui), wygląd (.kstyle — selektory, stany, media), motyw (.ktheme — tokeny, warianty dark/highContrast, kontrola kontrastu WCAG), logika (KretS) i dane (KretDB). Render w wariancie wysokiego kontrastu i interakcja zapisująca do bazy. Folder low-contrast/ pokazuje, że zbyt mały kontrast motywu jest błędem kompilacji.
Pliki
| Plik |
|---|
Disk/Schema.kdb |
Script/Main.krs |
Ui/App.kstyle |
Ui/App.ktheme |
Ui/Notes.kretui |
host-policy.json |
low-contrast/Disk/Schema.kdb |
low-contrast/Script/Main.krs |
low-contrast/Ui/App.kstyle |
low-contrast/Ui/App.ktheme |
low-contrast/Ui/Notes.kretui |
low-contrast/host-policy.json |
low-contrast/plugin.kretl |
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 6 językówkretui-host . --self-test {OUT}/add --data {DATA} --policy host-policy.json --input "0/2/0=Kupić mleko" --click 0/2/1— dodanie notatki: KretUI → KretS → KretDB → listakretui-host . --self-test {OUT}/hc --data {DATA} --policy host-policy.json --variant highContrast— render wariantuhighContrast(dane z poprzedniego kroku)kret check low-contrast --json— kontrast poniżej minimum →KCS-KUI-0305(oczekiwany błąd)
Oczekiwany wynik
Kod 0 w trzech pierwszych krokach (dwie klatki PNG), kod 1 z KCS-KUI-0305 w ostatnim.
Najczęstszy błąd
Logika w stylu (np. when w .kstyle) — to błąd „nieznana właściwość”; styl i motyw nie mają dostępu do stanu ani uprawnień.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →