@appaflytech/zeyrek-ai-mcp 0.0.14 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -29,6 +29,14 @@ component_get → tek tipin TAM sözleşmesi, üç katman birleşik:
|
|
|
29
29
|
- **Boyut:** `blocks[].size` katalogdaki `maxSize`'ı aşamaz; yükseklikte
|
|
30
30
|
`appearance.heightType: 'auto'` tercih edilir. Katalog varsayılanı bazı tiplerde kendi
|
|
31
31
|
sınırını aşar — körü körüne kopyalama, gateway kırpar ve bildirir.
|
|
32
|
+
- **Çocuk tarafı flex sözleşmesi — `mode: 'flex'` (2026-09-18):** flex kapta kalan alanı alan
|
|
33
|
+
öğe komponent değil onu taşıyan düğüm sarmalayıcısıdır ve sarmalayıcının `flex`i ortak
|
|
34
|
+
katmanda yazılır. `mode` prop'u `'flex'` olan bir çocuk (bugün yalnız `spacer`) kabın ANA
|
|
35
|
+
ekseninde kalanı ister: sütunda kalan yükseklik, satırda kalan genişlik, sıfır taban (wrap
|
|
36
|
+
açıkken satırdan düşmez). `appearance.widthType`/`heightType`'tan bağımsızdır ve ana
|
|
37
|
+
eksende onları yener; kabın ölçüsü o eksende belirli olmalıdır (auto/hug sütunda kalan
|
|
38
|
+
alan yoktur). Komponentin kendi `style`'ından istenemez — `style`'a `flex` yazma tablosuna
|
|
39
|
+
bkz. aşağıda.
|
|
32
40
|
|
|
33
41
|
### Arayüz metni ve biçimler uygulama dilini izler
|
|
34
42
|
|
|
@@ -93,8 +93,9 @@ mümkündür ama doğrulama duvarı ve canlı canvas yalnız `page_schema_patch`
|
|
|
93
93
|
komponentin iç kimliğidir (aşağıda Kural 2, `FLOW-018`).
|
|
94
94
|
|
|
95
95
|
- **`blocks[].size`'ı komponentin `component_get`'teki `minSize`..`maxSize` aralığında tut.** Dikkat:
|
|
96
|
-
katalog varsayılanı aşabiliyor (`
|
|
97
|
-
|
|
96
|
+
katalog varsayılanı aşabiliyor (`datepicker` default `h:8`, `maxSize` `h:5`; 18 şemada aynı
|
|
97
|
+
durum, liste zeyrek-frontend `docs/issues.md` ARC-013 — `page-header` 2026-09-18'de sınırı
|
|
98
|
+
12'ye açarak çıktı) — varsayılanı körü körüne kopyalama. Sınır grid kanvasının kuralıdır; API 2026-09-15'ten beri reddetmez, ama aşan
|
|
98
99
|
blok kanvasta boyutlandırılamaz (aşağıda Kural 7 "Boyut tuzağı").
|
|
99
100
|
- **Kurulmuş bir düğümün boyutunu `resize_component` micro-op'u değiştirir.**
|
|
100
101
|
`{ op: 'resize_component', target: '<elementId>', size: { w, h } }` ızgara boyutunu,
|
|
@@ -159,8 +160,9 @@ Sayfa açılışında veri çekmek için `mount` kullanılır ama tek seçenek o
|
|
|
159
160
|
|
|
160
161
|
Yani "satırı seçince detay getir" (`select`), "kolondan süzünce sunucudan yeniden çek"
|
|
161
162
|
(`filter`), "sayfa değişince yeni sayfayı çek" (`pagination`), "satıra çift tıklayınca formu aç"
|
|
162
|
-
(`doubleClick`) akışları da aynı `set_event` mekanizmasıyla kurulur. Buna karşılık `
|
|
163
|
-
|
|
163
|
+
(`doubleClick`) akışları da aynı `set_event` mekanizmasıyla kurulur. Buna karşılık `datatable`
|
|
164
|
+
yalnız `mount` yayar (bilinçli — Kural 1e); `page-header` 2026-09-18'den beri izdeki öğe
|
|
165
|
+
tıklamasını `clickItem` olarak yayar (`component_get` yükü verir).
|
|
164
166
|
|
|
165
167
|
**Olay adları `on` ÖNEKİ ALMAZ** (`button` → `click`, `form` → `submit`), tek istisna katalogda
|
|
166
168
|
`texteditor`'dur (`onMount`/`onChange`). **Komponentin desteklemediği bir olay adı verirsen bağ
|
|
@@ -197,12 +199,14 @@ olaylarında **boştur** (ölçüm 2026-08-25, kaynak okuması: `flow-machine.ts
|
|
|
197
199
|
Pratik kural: **`payload` anahtarları aynı zamanda prop adlarıdır; akışta `self.<anahtar>` ile
|
|
198
200
|
oku** (ya da `value { type:'property', ref:{ source:'component', element, property } }` ile).
|
|
199
201
|
`event.data` yalnız `params` ile gelen olaylarda dolar — `html` komponentinin `fireEvent`
|
|
200
|
-
aksiyonları (`platform_guide('html')`) ve
|
|
201
|
-
`importwizard` · `kanban` · `signature` · `stepper`
|
|
202
|
-
|
|
203
|
-
yazmaz (`component_get` çıktısındaki sözleşme notları ayrımı
|
|
204
|
-
|
|
205
|
-
|
|
202
|
+
aksiyonları (`platform_guide('html')`) ve **`params`'ı da gönderen komponentler**
|
|
203
|
+
(`eventcalendar` · `importwizard` · `kanban` · `signature` · `stepper` · `tabs` ·
|
|
204
|
+
`tree-view` · `pagination`): bunların yükü `event.data.<anahtar>` ile de okunur; `kanban` ve
|
|
205
|
+
`eventcalendar` yükü `self`'e HİÇ yazmaz (`component_get` çıktısındaki sözleşme notları ayrımı
|
|
206
|
+
söyler). Sessiz hata örneği: **tablonun kendi** sayfalama akışını (`table.pagination`)
|
|
207
|
+
`event.data.limit`'e bağlarsan sorgu `LIMIT null OFFSET null` ile koşar ve **tüm satırları**
|
|
208
|
+
döndürür; hata yok, sayfalama yok. (Bağımsız `pagination` komponenti bu tuzağa girmez, yükünü
|
|
209
|
+
`params` ile de gönderir.)
|
|
206
210
|
|
|
207
211
|
| Komponent · olay | Yük (aynı zamanda prop adları) | Akışta nereden okunur |
|
|
208
212
|
|---|---|---|
|
|
@@ -212,16 +216,18 @@ sayfalama akışını `event.data.limit`'e bağlarsan sorgu `LIMIT null OFFSET n
|
|
|
212
216
|
| `table.select` · `doubleClick` | — | `self.selectedRow` |
|
|
213
217
|
| `table.selectionChange` | — | `self.selectedRows` |
|
|
214
218
|
| `datatable.mount` | — | `self.filters` · `self.sortField` · `self.sortType` · `self.offset` |
|
|
215
|
-
| `pagination.change` | `{ offset, limit }` | `self.offset` · `self.limit` |
|
|
219
|
+
| `pagination.change` | `{ offset, limit }` | `self.offset` · `self.limit` ya da `event.data.offset` · `event.data.limit` |
|
|
216
220
|
| `textinput/textarea/password.change` | `{ value }` | `self.value` |
|
|
217
221
|
| `dropdown.change` · `multi-select.change` | `{ value }` | `self.value` |
|
|
218
222
|
| `dropdown.search` · `multi-select.search` | `{ searchText }` | `self.searchText` |
|
|
219
|
-
| `tabs.tab` | `{ selected }` | `self.selected` |
|
|
223
|
+
| `tabs.tab` | `{ selected }` | `self.selected` ya da `event.data.selected` |
|
|
220
224
|
| `chart.dataPointClick` | `{ name, seriesName, value, dataIndex, row }` | `self.row` (kaynak satırın tamamı) |
|
|
221
|
-
| `repeater.change` | `{ selectedIndex }` | `
|
|
225
|
+
| `repeater.change` · `repeater.select` | `{ selectedIndex }` | `self.selectedIndex` · `self.selectedItem` (akış satır bağlamında koşmaz, `item`/`Row` boş) |
|
|
222
226
|
| `html` aksiyonu (`fireEvent`) | ikinci argüman | **`event.data`** |
|
|
223
227
|
| `kanban.cardMove` | `{ id, row, from, to }` | **`event.data`** (self'e yazılmaz) |
|
|
228
|
+
| `kanban.cardAdd` · `kanban.cardRemove` | `{ column }` · `{ id, row, column }` | **`event.data`** (self'e yazılmaz; kart eklenmez/gizlenmez, akış yazıp `rows`'u tazeler) |
|
|
224
229
|
| `eventcalendar.eventMove` | `{ id, row, start, end, previousStart, previousEnd }` | **`event.data`** (self'e yazılmaz) |
|
|
230
|
+
| `eventcalendar.monthChange` · `eventcalendar.viewChange` · `eventcalendar.eventCreate` | `{ month, year, view, start, end }` · `{ view, start, end }` · `{ start, end, allDay }` | **`event.data`** (self'e yazılmaz; veri sorgusunu kesişimle bağla: başlangıç < `end`+1 gün ve bitiş >= `start`) |
|
|
225
231
|
| `importwizard.complete` | `{ rows, errors, fileName, total }` | `self.rows`… ya da `event.data` |
|
|
226
232
|
| `stepper.stepChange` | `{ currentStep, previous }` | `self.currentStep` ya da `event.data` |
|
|
227
233
|
| `signature.change` | `{ value }` | `self.value` ya da `event.data.value` |
|
|
@@ -1310,7 +1316,7 @@ budur — bir preset ya da `componentStyles` sizin değerinizi eziyorsa `styleLa
|
|
|
1310
1316
|
| Değişiklik | Tool | Neden |
|
|
1311
1317
|
|---|---|---|
|
|
1312
1318
|
| Komponent ekle/sil/taşı, prop, binding, event | `page_schema_patch` | Doğrulama duvarı + açık Studio canvas'ına SignalR canlı yayını + eşzamanlı yazar kilidi yalnız bu yolda çalışır |
|
|
1313
|
-
| Ad, slug, browserTitle, `browserTitleKey`, layout, roller, middleware | `page_update` | Üstbilgi alanları micro-op sözlüğünde yok. `browserTitleKey` sekme başlığını çeviri anahtarına bağlar: verilirse başlık sözlükten çözülür, boşsa `browserTitle` kullanılır. Başlık
|
|
1319
|
+
| Ad, slug, browserTitle, `browserTitleKey`, layout, roller, middleware | `page_update` | Üstbilgi alanları micro-op sözlüğünde yok. `browserTitleKey` sekme başlığını çeviri anahtarına bağlar: verilirse başlık sözlükten çözülür, boşsa `browserTitle` kullanılır. Başlık canlı dil değişimini izler; anahtarın o dilde değeri yoksa varsayılan dile düşer (`platform_guide('translation')`) |
|
|
1314
1320
|
|
|
1315
1321
|
Platformun `PUT /pages/...` ucu **replace**'tir: gönderilmeyen `schema`/`events`/`roleIds`
|
|
1316
1322
|
alanları silinir. Gateway bu yüzden `page_update`'te sayfayı önce okur, yalnız verdiğin
|
|
@@ -1825,7 +1831,7 @@ bağlanır, filtre `source:'expression'` + `value:'user.id'` olur.
|
|
|
1825
1831
|
| Kimlik alanları | `email` · `password` |
|
|
1826
1832
|
| Dosya | `fileUpload` (dropzone) · `fileInput` · `filebutton` · `file-viewer` |
|
|
1827
1833
|
| Liste | `table` · `datatable` (Kural 1e) · `repeater` (kart listesi VE dinamik form — Kural 1g) · `tree-view` (hiyerarşi; `isSearchable` ile istemci içi arama) · `timeline` (tarihli olay akışı) |
|
|
1828
|
-
| Pano / takvim | `kanban` (durum kolonlarında sürüklenebilir kartlar; taşıma `cardMove` ile `event.data`'dan okunur, kalıcılık AKIŞIN işidir) · `eventcalendar` (ay/hafta/gün; veri `rows`'a akışla yazılır, `monthChange`
|
|
1834
|
+
| Pano / takvim | `kanban` (durum kolonlarında sürüklenebilir kartlar; taşıma `cardMove` ile `event.data`'dan okunur, kalıcılık AKIŞIN işidir) · `eventcalendar` (ay/hafta/gün/ajanda; veri `rows`'a akışla yazılır, `monthChange`/`viewChange` görünen `start`/`end` aralığıyla tazeleme kancasıdır) |
|
|
1829
1835
|
| Kayıt detayı | `detailview` — tek kaydı etiket/değer ızgarası basar (alan başına format, iç içe alan yolu); OLAY YAYMAZ, tıklanabilirlik gerekiyorsa kapsayıcıya sar |
|
|
1830
1836
|
| Adımlı akış | `stepper` — tabs gibi her adım kendi droppable görünümünü taşır; ileri gidiş `canProceed` kapısıyla (`{{ form1.isValid === true }}` biçimi), adım `currentStep` setter'ıyla sürülür |
|
|
1831
1837
|
| İmza / CSV içe aktarma | `signature` (değer PNG data-URL ya da ham SVG; `change` setter'lı) · `importwizard` (3 adımlı sihirbaz; temiz+hatalı satırlar `complete` yükünde — satırları uca yazmak akışın işidir) |
|
|
@@ -175,11 +175,10 @@ motor olmasıdır (tarayıcı JS'i ve Jint).
|
|
|
175
175
|
verilmişse sekme başlığı çeviri sözlüğünden çözülür; anahtar boşsa `browserTitle` olduğu gibi
|
|
176
176
|
kullanılır. İkisi de boşsa sayfa adı yazılır.
|
|
177
177
|
|
|
178
|
-
> **Sekme başlığı
|
|
179
|
-
>
|
|
180
|
-
>
|
|
181
|
-
>
|
|
182
|
-
> çözülmesi. Sekme başlığının dilini doğrulayacaksan **yeniden yükleyerek** doğrula.
|
|
178
|
+
> **Sekme başlığı canlı dil değişimini İZLER.** `language-selector` ile dil değiştirildiğinde
|
|
179
|
+
> sayfa içeriğiyle birlikte sekme başlığı da yeni dilde çözülür; yeniden yükleme gerekmez
|
|
180
|
+
> (ölçüldü 2026-09-11). Anahtarın seçilen dilde değeri yoksa projenin varsayılan diline düşer.
|
|
181
|
+
> 2026-09-08 ölçümündeki "açılıştaki dilde kalır" davranışı düzeltildi.
|
|
183
182
|
|
|
184
183
|
## Doğrulama mesajları: `t:` öneki
|
|
185
184
|
|
package/package.json
CHANGED