Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Notatki: KretUI + KretStyle + KTheme + KretS + KretDB

ADVANCEDRUNNABLE_LOCALKretUI

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.

Edycja i zapisane wyniki

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.

  1. # Baza projektu: notatki numerowane od 1 i licznik notatek.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. database UiDemo {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. version = 1Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.
  4. Pusta linia oddziela fragmenty źródła.
  5. table notes {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. id: Int primary keyOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. text: StringOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  9. Pusta linia oddziela fragmenty źródła.
  10. table counters {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  11. name: String primary keyOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  12. value: IntOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  13. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  14. }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.

Na co uważać

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.

  1. checkkret check . --jsonKatalog: project · Oczekiwany kod wyjścia: 0
  2. self-test-addkretui-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
  3. self-test-high-contrastkretui-host . --self-test {OUT}/hc --data {DATA} --policy host-policy.json --variant highContrastKatalog: project · Oczekiwany kod wyjścia: 0
  4. low-contrastkret 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.

  1. # EXPECTED_OUTPUT — KRETUI-A01-NotesStyleThemeDbOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. # 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.
  3. # Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. Pusta linia oddziela fragmenty źródła.
  5. ### 1. check (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. > kret check . --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. "format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  9. "project": "<project>",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  10. "succeeded": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  11. "plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  12. "id": "LOCAL-KPL-UXA2NTES",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  13. "name": "NotesStyleThemeDb",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  14. "version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  15. "profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  16. "database": truePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  17. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  18. "permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  19. "required": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  20. "logs.own.write",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  21. "kretdb.open",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  22. "kretdb.read",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  23. "kretdb.write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  24. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  25. "optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  26. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  27. "handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  28. "lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  29. "start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  30. "shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  31. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  32. "events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  33. "commands": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  34. "notes.load",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  35. "notes.add",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  36. "notes.clear"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  37. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  38. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  39. "diagnostics": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  40. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  41. Pusta linia oddziela fragmenty źródła.
  42. ### 2. self-test-add (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  43. > 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.
  44. 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.
  45. test własny: OK; wyniki: <out>\addOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  46. Pusta linia oddziela fragmenty źródła.
  47. [checkFile {OUT}/add/self-test.json]Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  48. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  49. "format": "kretui-self-test/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  50. "view": "Notes",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  51. "title": "Notatki \u2014 przyk\u0142ad KretUI",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  52. "logic": "isolated-process",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  53. "pluginProcessId": 3176,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  54. "hostProcessId": 34432,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  55. "size": "compact",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  56. "width": 520,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  57. "height": 560,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  58. "ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  59. "failures": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  60. "actions": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  61. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  62. "ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  63. "code": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  64. "message": ""Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  65. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  66. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  67. "state": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  68. "items": ["Kupi\u0107 mleko"],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  69. "draft": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  70. "busy": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  71. "error": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  72. "confirm": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  73. "selected": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  74. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  75. "controls": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  76. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  77. "path": "0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  78. "type": "column",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  79. "id": "page",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  80. "name": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  81. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  82. "control": "StackPanel",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  83. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  84. 0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  85. 0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  86. 520,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  87. 536Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  88. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  89. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  90. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  91. "path": "0/0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  92. "type": "text",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  93. "id": "title",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  94. "name": "Notatki",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  95. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  96. "control": "TextBlock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  97. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  98. 10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  99. 10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  100. 500,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  101. 32Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  102. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  103. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  104. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  105. "path": "0/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  106. "type": "text",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  107. "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.
  108. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  109. "control": "TextBlock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  110. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  111. 10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  112. 50,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  113. 500,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  114. 38Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  115. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  116. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  117. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  118. "path": "0/2",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  119. "type": "row",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  120. "name": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  121. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  122. "control": "StackPanel",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  123. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  124. 10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  125. 96,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  126. 500,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  127. 74Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  128. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  129. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  130. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  131. "path": "0/2/0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  132. "type": "input",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  133. "name": "Nowa notatka",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  134. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  135. "control": "TextBox",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  136. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  137. 10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  138. 96,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  139. 160,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  140. 74Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  141. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  142. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  143. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  144. "path": "0/2/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  145. "type": "button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  146. "id": "addButton",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  147. "name": "Dodaj",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  148. "enabled": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  149. "control": "Button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  150. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  151. 178,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  152. 133,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  153. 74,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  154. 37Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  155. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  156. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  157. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  158. "path": "0/4",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  159. "type": "list",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  160. "name": "Zapisane notatki",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  161. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  162. "control": "ListBox",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  163. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  164. 10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  165. 178,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  166. 500,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  167. 160Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  168. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  169. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  170. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  171. "path": "0/6",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  172. "type": "button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  173. "id": "clearButton",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  174. "name": "Wyczy\u015B\u0107\u2026",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  175. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  176. "control": "Button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  177. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  178. 10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  179. 346,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  180. 97,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  181. 37Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  182. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  183. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  184. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  185. "pluginLog": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  186. "[info] NotesStyleThemeDb: start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  187. "[info] dodano notatk\u0119 nr 1"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  188. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  189. "hostCalls": 10,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  190. "denials": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  191. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  192. Pusta linia oddziela fragmenty źródła.
  193. ### 3. self-test-high-contrast (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  194. > 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.
  195. 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.
  196. test własny: OK; wyniki: <out>\hcOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  197. Pusta linia oddziela fragmenty źródła.
  198. [checkFile {OUT}/hc/self-test.json]Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  199. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  200. "format": "kretui-self-test/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  201. "view": "Notes",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  202. "title": "Notatki \u2014 przyk\u0142ad KretUI",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  203. "logic": "isolated-process",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  204. "pluginProcessId": 19652,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  205. "hostProcessId": 39412,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  206. "size": "compact",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  207. "width": 520,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  208. "height": 560,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  209. "ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  210. "failures": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  211. "actions": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  212. "state": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  213. "items": ["Kupi\u0107 mleko"],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  214. "draft": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  215. "busy": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  216. "error": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  217. "confirm": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  218. "selected": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  219. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  220. "controls": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  221. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  222. "path": "0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  223. "type": "column",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  224. "id": "page",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  225. "name": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  226. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  227. "control": "StackPanel",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  228. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  229. 0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  230. 0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  231. 520,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  232. 536Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  233. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  234. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  235. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  236. "path": "0/0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  237. "type": "text",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  238. "id": "title",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  239. "name": "Notatki",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  240. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  241. "control": "TextBlock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  242. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  243. 10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  244. 10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  245. 500,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  246. 32Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  247. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  248. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  249. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  250. "path": "0/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  251. "type": "text",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  252. "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.
  253. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  254. "control": "TextBlock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  255. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  256. 10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  257. 50,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  258. 500,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  259. 38Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  260. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  261. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  262. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  263. "path": "0/2",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  264. "type": "row",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  265. "name": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  266. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  267. "control": "StackPanel",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  268. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  269. 10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  270. 96,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  271. 500,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  272. 74Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  273. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  274. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  275. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  276. "path": "0/2/0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  277. "type": "input",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  278. "name": "Nowa notatka",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  279. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  280. "control": "TextBox",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  281. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  282. 10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  283. 96,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  284. 160,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  285. 74Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  286. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  287. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  288. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  289. "path": "0/2/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  290. "type": "button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  291. "id": "addButton",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  292. "name": "Dodaj",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  293. "enabled": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  294. "control": "Button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  295. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  296. 178,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  297. 133,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  298. 74,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  299. 37Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  300. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  301. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  302. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  303. "path": "0/4",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  304. "type": "list",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  305. "name": "Zapisane notatki",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  306. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  307. "control": "ListBox",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  308. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  309. 10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  310. 178,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  311. 500,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  312. 160Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  313. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  314. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  315. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  316. "path": "0/6",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  317. "type": "button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  318. "id": "clearButton",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  319. "name": "Wyczy\u015B\u0107\u2026",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  320. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  321. "control": "Button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  322. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  323. 10,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  324. 346,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  325. 97,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  326. 37Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  327. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  328. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  329. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  330. "pluginLog": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  331. "[info] NotesStyleThemeDb: start"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  332. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  333. "hostCalls": 3,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  334. "denials": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  335. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  336. Pusta linia oddziela fragmenty źródła.
  337. ### 4. low-contrast (exit 1, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  338. > kret check low-contrast --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  339. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  340. "format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  341. "project": "<project>\\low-contrast",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  342. "succeeded": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  343. "plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  344. "id": "LOCAL-KPL-UXA2NTES",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  345. "name": "NotesStyleThemeDb",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  346. "version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  347. "profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  348. "database": truePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  349. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  350. "permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  351. "required": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  352. "logs.own.write",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  353. "kretdb.open",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  354. "kretdb.read",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  355. "kretdb.write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  356. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  357. "optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  358. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  359. "handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  360. "lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  361. "start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  362. "shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  363. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  364. "events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  365. "commands": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  366. "notes.load",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  367. "notes.add",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  368. "notes.clear"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  369. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  370. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  371. "diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  372. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  373. "file": "<project>\\low-contrast\\Ui\\App.ktheme",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  374. "line": 3,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  375. "column": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  376. "endLine": 61,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  377. "endColumn": 2,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  378. "severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  379. "code": "KCS-KUI-0305",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  380. "message": "motyw podstawowy: kontrast text na surface wynosi 1.18, a wymagane jest 7"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  381. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  382. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  383. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  384. Pusta linia oddziela fragmenty źródła.
  385. 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.

  1. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. "format": "kretos-web-playground-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  3. "exampleId": "KRETUI-A01-NotesStyleThemeDb",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  4. "sdk": "1.0.0-rc.3+kret.local.3",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  5. "origin": "PRECOMPUTED",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  6. "diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  7. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. "id": "diag.KRETUI-A01-NotesStyleThemeDb.4.1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  9. "exampleId": "KRETUI-A01-NotesStyleThemeDb",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  10. "step": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  11. "stepName": "low-contrast",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  12. "command": "kret check low-contrast --json",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  13. "exitCode": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  14. "file": "low-contrast/Ui/App.ktheme",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  15. "line": 3,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  16. "column": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  17. "endLine": 61,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  18. "endColumn": 2,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  19. "severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  20. "code": "KCS-KUI-0305",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  21. "message": "motyw podstawowy: kontrast text na surface wynosi 1.18, a wymagane jest 7",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  22. "origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  23. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  24. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  25. }Zamknięcie struktury otwartej we wcześniejszych liniach.

Zapisane podglądy KretUI

Notatki: KretUI + KretStyle + KTheme + KretS + KretDB
Podgląd z eksportu — nie odświeża się po zmianie kodu.
Notatki: KretUI + KretStyle + KTheme + KretS + KretDB
Podgląd z eksportu — nie odświeża się po zmianie kodu.
Pochodzenie i integralność

KRET_LANGUAGE_KRETUI.zip:KretUI/Examples/ADVANCED_NotesStyleThemeDb/example.json

02_PLAYGROUND/EXAMPLES/KRETUI-A01-NotesStyleThemeDb.json
SHA-256 F1FF56D6B4FC392C211C6E80B84794561C8278EFF43E39923898ADE9A25FB893

Materiał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.
PoleWartość
TechnologiaKretUI
PoziomADVANCED
KlasyfikacjaRUNNABLE_LOCAL — Uruchamialny lokalnie (SDK, izolowany proces pluginu)
PlaygroundLOCAL_EXECUTE — lokalnie: wykonanie w KretStudio / SDK (publicznie: tylko statycznie)
SDK1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany)
Wynik testuTEST_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.

  1. kret check . --json — walidacja 6 języków
  2. kretui-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 → lista
  3. kretui-host . --self-test {OUT}/hc --data {DATA} --policy host-policy.json --variant highContrast — render wariantu highContrast (dane z poprzedniego kroku)
  4. 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ń.

Otwórz cały rozdział ze źródłem →

Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →

Wybierz, co możemy zapamiętać w tej przeglądarce. Możesz zmienić decyzję w każdej chwili.

Polityka prywatności