tillerhand 3.43.0 → 3.47.0

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.
Files changed (185) hide show
  1. package/.claude/agents/board-chair.md +20 -20
  2. package/.claude/agents/code-reviewer.md +20 -20
  3. package/.claude/agents/council-advisor.md +14 -14
  4. package/.claude/agents/security-auditor.md +30 -30
  5. package/.claude/agents/test-writer.md +22 -22
  6. package/.claude/board/board-ai.md +25 -25
  7. package/.claude/board/board-api.md +25 -25
  8. package/.claude/board/board-architect.md +28 -28
  9. package/.claude/board/board-devops.md +25 -25
  10. package/.claude/board/board-mobile.md +25 -25
  11. package/.claude/board/board-performance.md +24 -24
  12. package/.claude/board/board-privacy.md +25 -25
  13. package/.claude/board/board-product.md +26 -26
  14. package/.claude/board/board-qa.md +28 -28
  15. package/.claude/board/board-ux.md +26 -26
  16. package/.claude/board/council.md +76 -76
  17. package/.claude/board/rules.md +61 -61
  18. package/.claude/claude-security-guidance.md +10 -10
  19. package/.claude/commands/adopt.md +70 -69
  20. package/.claude/commands/ask-mode.md +9 -9
  21. package/.claude/commands/board.md +15 -15
  22. package/.claude/commands/build.md +47 -47
  23. package/.claude/commands/dashboard.md +17 -17
  24. package/.claude/commands/design.md +31 -31
  25. package/.claude/commands/findings-all.md +14 -14
  26. package/.claude/commands/findings-business.md +7 -7
  27. package/.claude/commands/findings-legal.md +7 -7
  28. package/.claude/commands/findings-perf.md +7 -7
  29. package/.claude/commands/findings-security.md +9 -9
  30. package/.claude/commands/findings-tech.md +7 -7
  31. package/.claude/commands/findings-ux.md +7 -7
  32. package/.claude/commands/fix-bug.md +15 -15
  33. package/.claude/commands/freeze.md +8 -8
  34. package/.claude/commands/handoff.md +38 -38
  35. package/.claude/commands/kit-update.md +17 -14
  36. package/.claude/commands/language.md +13 -0
  37. package/.claude/commands/maintain.md +19 -19
  38. package/.claude/commands/plan-task.md +32 -32
  39. package/.claude/commands/qa.md +17 -17
  40. package/.claude/commands/release.md +40 -40
  41. package/.claude/commands/research.md +31 -31
  42. package/.claude/commands/retro.md +32 -32
  43. package/.claude/commands/review-changes.md +15 -15
  44. package/.claude/commands/rollback.md +24 -24
  45. package/.claude/commands/start.md +116 -113
  46. package/.claude/commands/tools.md +11 -11
  47. package/.claude/commands/user-feedback.md +11 -11
  48. package/.claude/commands/wrap-up.md +18 -18
  49. package/.claude/findings/lenses/business.md +24 -24
  50. package/.claude/findings/lenses/legal.md +29 -29
  51. package/.claude/findings/lenses/perf.md +19 -19
  52. package/.claude/findings/lenses/security.md +30 -30
  53. package/.claude/findings/lenses/tech.md +23 -23
  54. package/.claude/findings/lenses/ux.md +19 -19
  55. package/.claude/findings/protocol.md +54 -54
  56. package/.claude/findings/report-template.md +30 -30
  57. package/.claude/hooks/budget.mjs +7 -7
  58. package/.claude/hooks/checkpoint.mjs +12 -12
  59. package/.claude/hooks/commit-gate.mjs +38 -37
  60. package/.claude/hooks/cost.mjs +2 -2
  61. package/.claude/hooks/council.mjs +3 -3
  62. package/.claude/hooks/dashboard-data.mjs +3 -2
  63. package/.claude/hooks/dashboard.mjs +164 -149
  64. package/.claude/hooks/destructive-guard.mjs +74 -64
  65. package/.claude/hooks/edit-rounds.mjs +3 -3
  66. package/.claude/hooks/flow.mjs +10 -10
  67. package/.claude/hooks/freeze-guard.mjs +27 -23
  68. package/.claude/hooks/gate.mjs +25 -25
  69. package/.claude/hooks/guard-secrets.mjs +11 -11
  70. package/.claude/hooks/lang.mjs +114 -0
  71. package/.claude/hooks/messages.mjs +495 -0
  72. package/.claude/hooks/models.mjs +14 -11
  73. package/.claude/hooks/notify.mjs +3 -2
  74. package/.claude/hooks/package-gate.mjs +17 -15
  75. package/.claude/hooks/plugins-sync.mjs +9 -9
  76. package/.claude/hooks/prefs.mjs +19 -19
  77. package/.claude/hooks/preview.mjs +11 -11
  78. package/.claude/hooks/progress.mjs +14 -14
  79. package/.claude/hooks/qa-report.mjs +11 -10
  80. package/.claude/hooks/reminder.mjs +6 -3
  81. package/.claude/hooks/session-start.mjs +23 -17
  82. package/.claude/hooks/shared.mjs +1 -1
  83. package/.claude/hooks/status-read.mjs +5 -4
  84. package/.claude/hooks/statusline.mjs +14 -11
  85. package/.claude/hooks/structure-guard.mjs +9 -9
  86. package/.claude/hooks/test-guard.mjs +12 -12
  87. package/.claude/hooks/tools.mjs +28 -29
  88. package/.claude/hooks/usage.mjs +18 -15
  89. package/.claude/output-styles/anlatici.md +28 -28
  90. package/.claude/security-patterns.json +3 -3
  91. package/.claude/settings.json +2 -0
  92. package/.claude/skills/logo-design/SKILL.md +42 -42
  93. package/.claude/skills/motion-video/SKILL.md +52 -52
  94. package/.claude/skills/source-research/SKILL.md +35 -35
  95. package/.claude/skills/ui-motion/SKILL.md +38 -38
  96. package/.github/workflows/kit-tests.yml +7 -7
  97. package/.github/workflows/npm-publish.yml +16 -16
  98. package/AGENTS.md +56 -56
  99. package/CHANGELOG.md +7 -7
  100. package/CLAUDE.md +5 -5
  101. package/README.md +199 -172
  102. package/README.tr.md +292 -0
  103. package/docs/architecture/overview.md +31 -31
  104. package/docs/architecture/stack.md +2 -2
  105. package/docs/archive/README.md +4 -4
  106. package/docs/decisions/adr-template.md +14 -14
  107. package/docs/decisions/log.md +10 -10
  108. package/docs/findings/README.md +13 -13
  109. package/docs/findings/config.md +13 -13
  110. package/docs/legal/privacy-kvkk.md +1 -1
  111. package/docs/operations/accounts.md +25 -25
  112. package/docs/operations/deploy-setup.md +64 -64
  113. package/docs/operations/feature-flags.md +17 -17
  114. package/docs/operations/maintenance.md +48 -48
  115. package/docs/operations/release-checklist.md +61 -61
  116. package/docs/operations/spend-alarms.md +28 -28
  117. package/docs/product/feedback.md +9 -8
  118. package/docs/product/glossary.md +16 -16
  119. package/docs/product/launch.md +28 -28
  120. package/docs/product/prd.md +43 -42
  121. package/docs/product/roadmap.md +31 -30
  122. package/docs/product/specs/_template.md +13 -12
  123. package/docs/product/unit-economics.md +23 -22
  124. package/docs/quality/metrics.md +14 -14
  125. package/docs/quality/retros.md +11 -11
  126. package/docs/quality/test-plan.md +48 -48
  127. package/docs/security/checklist.md +57 -57
  128. package/docs/workflow/board.md +7 -7
  129. package/docs/workflow/cost-log.md +4 -4
  130. package/docs/workflow/decision-protocol.md +70 -70
  131. package/docs/workflow/learning.md +4 -4
  132. package/docs/workflow/mcp-catalog.md +31 -31
  133. package/docs/workflow/models.md +35 -35
  134. package/docs/workflow/progress.md +7 -7
  135. package/docs/workflow/skills.md +108 -108
  136. package/docs/workflow/usage-limits.md +62 -62
  137. package/kit/CHANGELOG.md +876 -841
  138. package/kit/VERSION +1 -1
  139. package/kit/guide.html +713 -477
  140. package/kit/guide.tr.html +1328 -0
  141. package/kit/kit.mjs +56 -54
  142. package/kit/project/README.md +29 -29
  143. package/kit/project/gitignore +12 -12
  144. package/kit/templates/addons/ai/.env.example.append +5 -5
  145. package/kit/templates/addons/ai/ai/evals/README.md +11 -11
  146. package/kit/templates/addons/ai/ai/evals/cases.jsonl +2 -2
  147. package/kit/templates/addons/ai/ai/prompts/README.md +8 -8
  148. package/kit/templates/addons/ai/docs/ai/guide.md +56 -56
  149. package/kit/templates/backend/.claude/hooks/format.mjs +1 -1
  150. package/kit/templates/backend/.claude/structure.json +1 -1
  151. package/kit/templates/backend/.env.example +6 -6
  152. package/kit/templates/backend/.github/dependabot.yml +1 -1
  153. package/kit/templates/backend/.github/workflows/ci.yml +13 -13
  154. package/kit/templates/backend/.github/workflows/claude-ci-fix.yml +19 -19
  155. package/kit/templates/backend/.github/workflows/claude-maintenance.yml +18 -18
  156. package/kit/templates/backend/.github/workflows/live-monitoring.yml +14 -14
  157. package/kit/templates/backend/.pre-commit-config.yaml +3 -3
  158. package/kit/templates/backend/docs/architecture/stack.md +98 -98
  159. package/kit/templates/backend/docs/architecture/structure.md +34 -34
  160. package/kit/templates/mobile/.claude/structure.json +1 -1
  161. package/kit/templates/mobile/.env.example +6 -6
  162. package/kit/templates/mobile/.github/dependabot.yml +2 -2
  163. package/kit/templates/mobile/.github/workflows/ci.yml +18 -18
  164. package/kit/templates/mobile/.github/workflows/claude-ci-fix.yml +19 -19
  165. package/kit/templates/mobile/.github/workflows/claude-maintenance.yml +18 -18
  166. package/kit/templates/mobile/.gitignore.append +2 -2
  167. package/kit/templates/mobile/docs/architecture/stack.md +113 -113
  168. package/kit/templates/mobile/docs/architecture/structure.md +33 -33
  169. package/kit/templates/mobile/docs/design/design-guide.md +37 -37
  170. package/kit/templates/mobile/tests/security/rls.mjs +22 -22
  171. package/kit/templates/web-saas/.claude/structure.json +1 -1
  172. package/kit/templates/web-saas/.env.example +11 -11
  173. package/kit/templates/web-saas/.github/dependabot.yml +3 -3
  174. package/kit/templates/web-saas/.github/workflows/ci.yml +20 -20
  175. package/kit/templates/web-saas/.github/workflows/claude-ci-fix.yml +19 -19
  176. package/kit/templates/web-saas/.github/workflows/claude-maintenance.yml +18 -18
  177. package/kit/templates/web-saas/.github/workflows/live-monitoring.yml +12 -12
  178. package/kit/templates/web-saas/docs/architecture/stack.md +116 -116
  179. package/kit/templates/web-saas/docs/architecture/structure.md +44 -44
  180. package/kit/templates/web-saas/docs/design/design-guide.md +38 -38
  181. package/kit/templates/web-saas/tests/live/smoke.spec.ts +4 -4
  182. package/kit/templates/web-saas/tests/security/rls.mjs +22 -22
  183. package/kit/tools/codex/.codex/hooks.json +1 -1
  184. package/package.json +2 -2
  185. package/README.en.md +0 -267
package/kit/CHANGELOG.md CHANGED
@@ -1,1024 +1,1059 @@
1
- # Kit Değişiklik Günlüğü
1
+ # Kit changelog
2
2
 
3
- Kit sürümü `kit/VERSION` dosyasında. Bir projeyi güncellemek: projede `/kit-update`.
4
- "Elle uyarla" notu olan maddeler projeye ait dosyalardadır; güncelleme bunlara dokunmaz.
3
+ The kit version is in `kit/VERSION`. To update a project, run `/kit-update` in it.
4
+ Items with an "Adapt by hand" note concern files owned by the project; the update does not touch them.
5
+
6
+ ## [3.47.0] - 2026-10-28
7
+
8
+ ### Changed
9
+ - **The whole kit is written in English.** Hook messages the AI reads are English. Text you see directly (dashboard, status line, notifications, permission dialogs) comes in the conversation language you picked with `/start`, `/adopt` or `/language`. Document and project templates, the installer, CI workflows, the eval harness and these release notes are English too. Board and council members now write `MEMBER:`, `VERDICT:` and `FINDINGS:`.
10
+ - **README and guide.** `README.md` is English and opens by default on GitHub; the Turkish version is `README.tr.md`. The guide on GitHub Pages is English; the Turkish guide is `guide.tr.html`, linked from the top right.
11
+ - Release notes mark manual steps with **"Adapt by hand"**.
12
+ - The optional Turkey add-on and the KVKK privacy text stay Turkish.
13
+ - Labels and values that hooks read from your project files (`progress.md` labels, board and decision log fields, verdicts such as `ONAY`/`RET`, arguments such as `/handoff devral`) are unchanged, so existing projects keep working. They move to English in a later release, with an automatic migration in `/kit-update`.
14
+
15
+ ### Fixed
16
+ - Stack templates keep the exact `## Seçilen teknolojiler` heading the dashboard reads.
17
+ - CI: a test no longer depends on a `.claude/state` folder that only exists in a developer's working copy.
18
+
19
+ ## [3.46.0] - 2026-10-27
20
+
21
+ ### Changed
22
+ - **Agents, board, findings reports and skills are in English.** `.claude/agents/`, `.claude/board/`, `.claude/findings/`, `.claude/skills/` and the narrator mode (`anlatici`) were translated to English. The format the board and council write (`ÜYE:`, `KARAR:`, `Görüş A`, `OYLAR:`, `DOĞRU`/`YANLIŞ`/`ABARTILI`) and the fields of the findings report template stay Turkish for now, because tools read them. Narrator mode now explains in the conversation language instead of plain Turkish.
23
+
24
+ ## [3.45.0] - 2026-10-27
25
+
26
+ ### Changed
27
+ - **Commands and core rules are in English.** All commands under `.claude/commands/`, plus `AGENTS.md` and `CLAUDE.md`, were translated to English. The AI reads them every session, so the same content costs fewer tokens. The language it talks to you in does not change: it speaks the language you chose in `/start`. Labels that tools read and command arguments (`## Komutlar`, `**Aktif faz:**`, `/handoff devral`, board verdicts) stay Turkish for now; they will change in one go in later releases.
28
+ - **Adapt by hand:** `AGENTS.md` and `CLAUDE.md` in your project belong to the project; the update does not touch them. For the English version, take the kit's new `AGENTS.md` as `.kit-new` and move over the sections you filled in (project name, commands, learned rules). Do not change the `## Komutlar` heading: the commit gate reads the commands from it.
29
+
30
+ ## [3.44.0] - 2026-10-27
31
+
32
+ ### Added
33
+ - **You choose the conversation language.** `/start` and `/adopt` ask first, in English: Turkish / English / Other. The chosen language is written to `.kit.json` → `lang`; from then on questions, answers, the status block and document texts are in that language. The AI is reminded of the language at every session start and every message.
34
+ - **Languages other than Turkish and English.** The AI translates the texts the hooks show you directly once, when a language is chosen (`.claude/i18n/<kod>.json`); text without a translation shows in English. `node .claude/hooks/lang.mjs --check` lists what is missing.
35
+ - **`/language`**: changes the language later and refreshes the translation and the dashboard. Documents already written are not translated automatically; the command asks.
36
+
37
+ ### Changed
38
+ - **The dashboard is not generated before a language is chosen.** In a project that is not set up, `dashboard.html` is not written until `/start` asks for the language. The dashboard texts will move to the chosen language in later releases.
39
+ - **Old projects stay Turkish.** Projects without a `lang` field count as Turkish; `/kit-update` asks for the language once. A project installed directly with `kit.mjs install`, without `/start`, also counts as Turkish; choose the language with `/language`.
5
40
 
6
41
  ## [3.43.0] - 2026-10-27
7
42
 
8
- ### Eklenen
9
- - **Commit kapısı test dosyasının kaynağını denetler.** `test-writer` bir test dosyasını Write/Edit ile yazınca içeriğin özeti kaydedilir (`.claude/state/test-writer.json`). Commit'e giren bir test dosyası bu kayıtla eşleşmiyorsa commit durur: `git apply`, `patch`, bir betik ya da kabukla yazılan test artık kurul onayıyla da geçmez. Değişikliği kullanıcı kendisi yaptıysa o commit için `--skip` kullanılır. Kısmen hazırlanmış bir test dosyası (`git apply --cached`, `skip-worktree`) her zaman durur. Test klasöründeki kod olmayan dosyalar (snapshot, görsel, fixture) denetlenmez; silinen test dosyaları için silmeden önce soran korumalar geçerli. Yalnız Claude Code'da (ajan kimliği orada var).
43
+ ### Added
44
+ - **The commit gate checks where a test file came from.** When `test-writer` writes a test file with Write/Edit, a digest of the content is recorded (`.claude/state/test-writer.json`). If a test file entering a commit does not match this record, the commit stops: a test written with `git apply`, `patch`, a script or the shell no longer passes even with board approval. If the user made the change themselves, use `--skip` for that commit. A partially staged test file (`git apply --cached`, `skip-worktree`) always stops. Non-code files in the test folder (snapshots, images, fixtures) are not checked; the protections that ask before deleting still apply to deleted test files. Claude Code only (the agent identity exists only there).
10
45
 
11
46
  ## [3.42.1] - 2026-10-27
12
47
 
13
- ### Düzeltilen
14
- - **Test ayrımında iki yol kaçağı kapandı.** `node_modules/../tests/a.test.ts` gibi `..` içeren yollar artık normalleştirilip test yolu sayılıyor; test klasörüne giden bir bağın altında henüz var olmayan iç içe bir yola yazım da yakalanıyor.
48
+ ### Fixed
49
+ - **Two path leaks in the test separation were closed.** Paths containing `..`, such as `node_modules/../tests/a.test.ts`, are now normalized and counted as test paths; a write to a nested path that does not exist yet under a link to the test folder is also caught.
15
50
 
16
51
  ## [3.42.0] - 2026-10-27
17
52
 
18
- ### Eklenen
19
- - **Testi kodu yazan değil, ayrı bir ajan yazar.** Yeni `test-writer` ajanı kabul ve saldırgan testlerini koddan önce, yalnız kabul kriterlerine, spec'e ve dış arayüze bakarak yazar; uygulama planını görmez. Kodu ve testi aynı ajan yazarsa test koda göre şekillenir; bu ayrım bunu önler.
20
- - **Test dosyasına yalnız `test-writer` yazabilir.** Claude Code'da ana oturum veya başka bir ajan test dosyasına dosya aracıyla ya da kabukla yazmaya çalışırsa test koruması engeller (test ayar dosyaları eskisi gibi sorulur). Codex ve Antigravity ajan kimliği bildirmediği için orada kural metinde kalır.
21
- - **Test korumasında atlatma yolları kapandı.** Windows'un aynı dosyaya çözdüğü yazımlar (sonda nokta veya boşluk, `::$DATA`), kısa adlar ve test klasörüne giden bağlar gerçek yoluyla denetlenir. Kabukta `touch`, `ln`, `dd`, `curl -o`, `wget -O` ile test yazımı da engellenir; test yolu anan satır içi betikler (`node -e`, `python -c`, `bash -c`) sorulur. `node_modules/` ve `.git/` altındaki test klasörleri sayılmaz.
22
- - **Plugin dizin bilgileri.** Plugin'e görünen ad, sürüm, dokümantasyon ve destek bağlantısı eklendi.
23
- - **Beşinci rol: test.** `docs/workflow/models.md`'ye test rolü eklendi, önerilen model kod rolünden farklı (kod Sonnet, test Opus). Kod ve test aynı modele alınırsa `models.mjs` uyarır.
53
+ ### Added
54
+ - **A separate agent writes the tests, not the one who writes the code.** The new `test-writer` agent writes acceptance and adversarial tests before the code, looking only at the acceptance criteria, the spec and the external interface; it does not see the implementation plan. When the same agent writes code and test, the test takes the shape of the code; this separation prevents that.
55
+ - **Only `test-writer` can write to a test file.** In Claude Code, if the main session or another agent tries to write to a test file with a file tool or the shell, the test protection blocks it (test config files are still asked about as before). Codex and Antigravity do not report an agent identity, so the rule stays in the text there.
56
+ - **Bypass routes in the test protection were closed.** Writes that Windows resolves to the same file (trailing dot or space, `::$DATA`), short names and links to the test folder are checked by their real path. Writing a test with `touch`, `ln`, `dd`, `curl -o`, `wget -O` in the shell is also blocked; inline scripts that name a test path (`node -e`, `python -c`, `bash -c`) are asked about. Test folders under `node_modules/` and `.git/` do not count.
57
+ - **Plugin directory details.** A display name, version, documentation and support link were added to the plugin.
58
+ - **Fifth role: test.** A test role was added to `docs/workflow/models.md`; its recommended model differs from the code role (code Sonnet, test Opus). `models.mjs` warns if code and test are set to the same model.
24
59
 
25
- ### Değişen
26
- - **Görev başındaki model soruları rol başına tek soru.** Model ve effort birlikte sorulur, iki ekranda: önce plan, kod, test; sonra inceleme, doküman. Elle uyarla: yok.
27
- - **`/build` adımları:** 2b testler (`test-writer`), 2c kod. `/fix-bug` 5. adımda kırmızı testi `test-writer` yazar.
60
+ ### Changed
61
+ - **Model questions at task start are one question per role.** Model and effort are asked together, on two screens: first plan, code, test; then review, docs. Adapt by hand: none.
62
+ - **`/build` steps:** 2b tests (`test-writer`), 2c code. In `/fix-bug` step 5, `test-writer` writes the red test.
28
63
 
29
64
  ## [3.41.1] - 2026-10-27
30
65
 
31
- ### Değişen
32
- - **Kurulum üç seçenekle anlatılıyor.** README ve rehberde npm (önerilen), Claude Code plugin ve git yolları ayrı ayrı, ne zaman hangisinin seçileceğiyle. Yeni başlayanlar için adımlarda plugin yolu da var.
33
- - **Plugin ikonu.** Logo işareti plugin dizini için kare PNG olarak eklendi.
66
+ ### Changed
67
+ - **Installation is explained with three options.** The README and guide describe the npm (recommended), Claude Code plugin and git routes separately, with when to pick each. The plugin route is also in the steps for beginners.
68
+ - **Plugin icon.** The logo mark was added as a square PNG for the plugin directory.
34
69
 
35
70
  ## [3.41.0] - 2026-10-27
36
71
 
37
- ### Eklenen
38
- - **Panoda Kopyala düğmeleri.** `dashboard.html` sıradaki adımın ve komut öneren uyarıların yanına bir düğme koyar; komut panoya kopyalanır, Claude sohbetine yapıştırılır. Ne yazacağını bilmeyen kullanıcı için.
72
+ ### Added
73
+ - **Copy buttons on the dashboard.** `dashboard.html` puts a button next to the next step and next to warnings that suggest a command; the command is copied to the clipboard and can be pasted into the Claude chat. For users who do not know what to type.
39
74
 
40
75
  ## [3.40.0] - 2026-10-27
41
76
 
42
- ### Eklenen
43
- - **Claude Code plugin olarak kurulum.** Depo artık bir plugin marketplace'i: `/plugin marketplace add burakdogrul/TillerHand`, `/plugin install tillerhand@tillerhand`, sonra `/tillerhand:init`. Plugin yalnız kurulum skill'i taşır; kit yine projeye dosya olarak kopyalanır, korumalar ve izin listesi projede kalır. Kurulumdan sonra plugin kapatılabilir.
77
+ ### Added
78
+ - **Install as a Claude Code plugin.** The repo is now a plugin marketplace: `/plugin marketplace add burakdogrul/TillerHand`, `/plugin install tillerhand@tillerhand`, then `/tillerhand:init`. The plugin carries only the setup skill; the kit is still copied into the project as files, and the protections and the permission list stay in the project. The plugin can be turned off after setup.
44
79
 
45
80
  ## [3.39.4] - 2026-10-27
46
81
 
47
- ### Düzeltilen
48
- - **Türkiye eki: iyzico ödeme kimliği 2^53 üstünde reddedilir.** `iyziPaymentId` JSON sayısı olarak gelir; JavaScript bu büyüklükte sayıyı yuvarlar ve yanlış kimlikle sipariş sorgulanabilirdi. Web SaaS imza doğrulaması artık yalnız güvenli tamsayıları kabul eder; saldırgan testine iki kontrol eklendi. Elle uyarla: projedeki `src/lib/payments/webhook-signature.ts` ve `tests/security/payment-webhook.mjs`.
82
+ ### Fixed
83
+ - **Turkey add-on: an iyzico payment id above 2^53 is rejected.** `iyziPaymentId` arrives as a JSON number; JavaScript rounds a number of this size, so an order could be queried with the wrong id. The Web SaaS signature check now accepts only safe integers; two checks were added to the adversarial test. Adapt by hand: `src/lib/payments/webhook-signature.ts` and `tests/security/payment-webhook.mjs` in the project.
49
84
 
50
- ### Değişen
51
- - **`/wrap-up` ilerleme dosyasını betikle yazar.** Tarih, aktif görev, sıradaki adım ve yol haritası işareti `progress.mjs` ile; sonda `--check` etiket biçimini doğrular.
85
+ ### Changed
86
+ - **`/wrap-up` writes the progress file with a script.** Date, active task, next step and the roadmap mark are written with `progress.mjs`; at the end `--check` verifies the label format.
52
87
 
53
88
  ## [3.39.3] - 2026-10-26
54
89
 
55
- ### Düzeltilen
56
- - **Mobil katalog: doğrudan StoreKit + Play Billing "komisyon yok" değil.** Mağaza komisyonu yine kesilir; kalkan yalnız RevenueCat ücreti.
90
+ ### Fixed
91
+ - **Mobile catalog: direct StoreKit + Play Billing is not "no commission".** The store commission is still taken; the saving is only the RevenueCat fee.
57
92
 
58
- ### Değişen
59
- - **Mobil ve backend kataloglarında kaynaklı fiyatlar.** RevenueCat (aylık izlenen gelir 2.500 dolara kadar ücretsiz, üstünde %1) ve Railway (Hobby aylık 5 dolar) kaynak ve tarihle yazıldı.
93
+ ### Changed
94
+ - **Sourced prices in the mobile and backend catalogs.** RevenueCat (free up to 2,500 dollars of monthly tracked revenue, 1% above) and Railway (Hobby 5 dollars a month) were written with source and date.
60
95
 
61
96
  ## [3.39.2] - 2026-10-26
62
97
 
63
- ### Değişen
64
- - **Web SaaS kataloğunda barındırma ve e-posta kısıtları kaynaklı.** Vercel'in ücretsiz Hobby planının ticari kullanıma kapalı olduğu, Cloudflare Workers ve Resend ücretsiz sınırları kaynak ve tarihle yazıldı. Ödeme alacak bir ürün için Vercel Hobby'nin yetmeyeceği artık seçenek açıklamasında.
98
+ ### Changed
99
+ - **Hosting and email limits in the Web SaaS catalog are sourced.** The fact that Vercel's free Hobby plan is closed to commercial use, and the free limits of Cloudflare Workers and Resend, were written with source and date. The option description now says that Vercel Hobby will not be enough for a product that takes payments.
65
100
 
66
101
  ## [3.39.1] - 2026-10-26
67
102
 
68
- ### Değişen
69
- - **Web SaaS teknoloji kataloğunda ilk kaynaklı iddialar.** Supabase ve Clerk ücretsiz katmanı, Stripe'ın Türkiye durumu ve Plausible fiyatı kaynak ve tarihle yazıldı; `/start` bunları 90 gün boyunca yeniden araştırmaz.
70
- - Elle uyarla: Kurulmuş projede `docs/architecture/stack.md` projeye aittir, güncellemeyle değişmez.
103
+ ### Changed
104
+ - **First sourced claims in the Web SaaS technology catalog.** The Supabase and Clerk free tiers, Stripe's status in Turkey and the Plausible price were written with source and date; `/start` does not research them again for 90 days.
105
+ - Adapt by hand: In a project that is already set up, `docs/architecture/stack.md` belongs to the project and does not change with the update.
71
106
 
72
107
  ## [3.39.0] - 2026-10-26
73
108
 
74
- ### Değişen
75
- - **`/start` yalnız değişeni doğrular.** Teknoloji kararlarında karar başına ayrı araştırma yapılmaz. Sunulacak seçeneklerdeki fiyat, ücretsiz katman ve kısıt iddiaları adımın başında tek bir araştırma turunda toplanır. Katalogda kaynağı ve tarihi 90 günden yeni olan iddia yeniden araştırılmaz; doğrulanan iddia projenin `stack.md`'sine kaynak ve tarihle yazılır.
76
- - Elle uyarla: Kurulmuş projede `docs/architecture/stack.md` → "Karar noktaları" giriş paragrafına aynı not eklenebilir; zorunlu değil.
109
+ ### Changed
110
+ - **`/start` verifies only what changed.** Technology decisions no longer get a separate research per decision. Price, free tier and limit claims in the options to be shown are gathered in one research round at the start of the step. A claim in the catalog whose source and date are newer than 90 days is not researched again; a verified claim is written to the project's `stack.md` with source and date.
111
+ - Adapt by hand: In a project that is already set up, the same note can be added to the intro paragraph of `docs/architecture/stack.md` → "Karar noktaları"; it is not required.
77
112
 
78
113
  ## [3.38.0] - 2026-10-26
79
114
 
80
- ### Değişen
81
- - **Maliyet günlüğü satırı kendiliğinden doluyor.** `/build` görev başında `progress.mjs --start` ile 5 saatlik yüzdeyi ve saati kaydeder. Görev sonunda `--cost "<iş>" <boyut>` başlangıcı, bitişi, farkı ve süreyi kendisi yazar. Başlangıç bir kez kullanılır, sonraki göreve karışmaz. Masaüstü uygulamasında durum çubuğu olmadığı için yüzde `--limit` ile verilir.
115
+ ### Changed
116
+ - **The cost log line fills itself.** At task start, `/build` records the 5-hour percentage and the time with `progress.mjs --start`. At task end, `--cost "<iş>" <boyut>` writes the start, the end, the difference and the duration itself. The start is used once and does not leak into the next task. The desktop app has no status line, so the percentage is given with `--limit`.
82
117
 
83
118
  ## [3.37.1] - 2026-10-26
84
119
 
85
- ### Değişen
86
- - **`/start` ağır adımlardan sonra `/clear` önerir.** Araştırma, teknoloji kararları, kurul ve tasarım yönü adımlarının sonucu dosyalara yazılır; sonraki adım onları okur. Temiz oturumda devam etmek daha ucuz, `/start` kaldığı adımdan sürer.
120
+ ### Changed
121
+ - **`/start` suggests `/clear` after heavy steps.** The results of the research, technology decisions, board and design direction steps are written to files; the next step reads them. Continuing in a clean session is cheaper, and `/start` resumes from where it stopped.
87
122
 
88
123
  ## [3.37.0] - 2026-10-26
89
124
 
90
- ### Değişen
91
- - **Alt ajan ikinci kez soğuk başlamıyor.** Kod alt ajanı ya da kurul üyesi düzeltmeden sonra yeniden bakacaksa yeni ajan başlatılmaz; aynı ajan SendMessage ile sürdürülür ve yalnız düzeltilen fark verilir. Dosyaları yeniden okumaz.
92
- - **Kurul istemi önbelleğe uygun sırada.** Üyeler arasında aynı olan kısım (toplantı türü, kapsam, kabul kriterleri, kapı çıktısı) önce, üyeye özel kısım sonda yazılır.
125
+ ### Changed
126
+ - **A subagent does not cold-start a second time.** If a code subagent or board member will look again after a fix, a new agent is not started; the same agent is continued with SendMessage and given only the fixed diff. It does not re-read the files.
127
+ - **The board prompt is in a cache-friendly order.** The part that is the same across members (meeting type, scope, acceptance criteria, gate output) is written first, and the member-specific part last.
93
128
 
94
129
  ## [3.36.0] - 2026-10-26
95
130
 
96
- ### Değişen
97
- - **Kurul üyeleri değişen dosyalardan seçiliyor.** `flow.mjs` görev sonunda değişen yollara bakıp kurulda olan üyeleri adıyla önerir: en çok dosyası eşleşen önce, sayı görev büyüklüğüne ve limite göre. Auth, ödeme, webhook, dosya yükleme ya da sır içeren bir yol varsa `security-auditor` da eklenir. Yol bir tahmindir; değişikliğin anlamı farklıysa üye tablosuna göre düzeltilir.
98
- - **Kurul üyesi en fazla 5 bulgu yazar.** Fazlası tek satırda sayılır ("diğer: N küçük bulgu").
131
+ ### Changed
132
+ - **Board members are picked from the changed files.** At task end, `flow.mjs` looks at the changed paths and suggests, by name, the members that are on the board: the one with the most matching files first, the number depending on task size and limit. If a path involves auth, payment, a webhook, file upload or a secret, `security-auditor` is added too. The path is a guess; if the change means something else, correct it against the member table.
133
+ - **A board member writes at most 5 findings.** Anything more is counted in one line ("diğer: N küçük bulgu").
99
134
 
100
135
  ## [3.35.0] - 2026-10-26
101
136
 
102
- ### Değişen
103
- - **Görev sonu belge yazımı betikle.** Roadmap işareti, maliyet günlüğü satırı ve progress etiketleri mekanik iş; artık alt ajana verilmiyor. Yeni `node .claude/hooks/progress.mjs` bunları tek komutta yazar, token harcamaz:
104
- - `--done G-012` roadmap'te görevi işaretler.
105
- - `--cost "<iş>" <K|O|B> <başlangıç %> <bitiş %> <dk>` maliyet günlüğüne satır ekler, farkı hesaplar. Pencere arada yenilendiyse fark `?` yazılır.
106
- - `--task`, `--did`, `--next` progress.md'yi günceller, son güncelleme tarihini kendisi koyar.
107
- - `--check` durum çubuğunun ve panonun okuduğu kalın etiketlerin sağlam olduğunu denetler.
108
- - `/build` adım 8 bunu kullanır. İzin satırı `/kit-update` ile eklenir.
137
+ ### Changed
138
+ - **End-of-task document writing is done by a script.** The roadmap mark, the cost log line and the progress labels are mechanical work; they are no longer given to a subagent. The new `node .claude/hooks/progress.mjs` writes them in one command and spends no tokens:
139
+ - `--done G-012` marks the task in the roadmap.
140
+ - `--cost "<iş>" <K|O|B> <başlangıç %> <bitiş %> <dk>` adds a line to the cost log and computes the difference. If the window was renewed in between, the difference is written as `?`.
141
+ - `--task`, `--did`, `--next` update progress.md and set the last-updated date itself.
142
+ - `--check` verifies that the bold labels the status line and the dashboard read are intact.
143
+ - `/build` step 8 uses this. The permission line is added with `/kit-update`.
109
144
 
110
145
  ## [3.34.0] - 2026-10-26
111
146
 
112
- ### Eklenen
113
- - **Alt ajan yalnız karlıysa.** Alt ajan soğuk başlar: istemini ve dosyaları yeniden okur. Küçük bir görevde bu, kazandırdığından pahalıdır. Yeni `node .claude/hooks/flow.mjs` görev büyüklüğüne (dosya sayısı), bağlama ve limite bakıp akışı söyler, token harcamaz:
114
- - 1-2 dosya: kod ve doküman işi ana oturumda. 3 ve üstü ya da bağlam %50'nin üstündeyse kod rolü alt ajanda.
115
- - Görev sonu kurulu 1, 2 ya da 3 üye + `code-reviewer` (hassas yolda `security-auditor` da). Limit sarıda üye sayısı yarıya iner, kırmızıda tek üye sırayla çalışır.
116
- - Bağlam %50'nin üstündeyse önce `/clear` önerilir.
117
- - `/build` (adım 2a) ve kurul kuralları bunu kullanır. Masaüstü uygulamasında durum çubuğu olmadığı için bağlam ve limit `--context`, `--limit` ile verilir.
118
- - İzin satırı `/kit-update` ile eklenir.
147
+ ### Added
148
+ - **Subagents only when they pay off.** A subagent cold-starts: it re-reads its prompt and the files. On a small task that costs more than it saves. The new `node .claude/hooks/flow.mjs` looks at the task size (file count), the context and the limit and tells you the flow; it spends no tokens:
149
+ - 1-2 files: code and docs work stays in the main session. 3 and above, or context above 50%: the code role goes to a subagent.
150
+ - At task end, the board has 1, 2 or 3 members + `code-reviewer` (plus `security-auditor` on a sensitive path). At a yellow limit the member count is halved; at red, a single member works in turn.
151
+ - If the context is above 50%, `/clear` is suggested first.
152
+ - `/build` (step 2a) and the board rules use this. The desktop app has no status line, so context and limit are passed with `--context` and `--limit`.
153
+ - The permission line is added with `/kit-update`.
119
154
 
120
155
  ## [3.33.0] - 2026-10-26
121
156
 
122
- ### Değişen
123
- - **Ana oturumun bağlamı küçük kalıyor.** Her tur oturumdaki bütün bağlamı yeniden okur; bağlama giren her satır sonraki turlarda yeniden ödenir.
124
- - Aynı adımın birbirinden bağımsız soruları tek soru turunda sorulur (en fazla 4).
125
- - Kapı kırmızıda son 30 satırı gösterir; daha uzun çıktının tamamı `.claude/state/gate-log/<kontrol>.log` dosyasına yazılır ve yalnız gerekirse okunur.
126
- - Kurul üyeleri, `code-reviewer`, `security-auditor` ve kod alt ajanı en fazla ~15 satırlık rapor verir, bulgu başına tek satır.
127
- - `/build` görev bitip commit atılınca `/clear` önerir (görev = oturum); yeni oturum `progress.md`'den devam eder. Büyük dosyada önce arama, sonra yalnız gereken satırlar okunur.
157
+ ### Changed
158
+ - **The main session context stays small.** Every turn re-reads the whole session context; every line that enters the context is paid for again in later turns.
159
+ - Independent questions of the same step are asked in one question round (at most 4).
160
+ - When the gate is red it shows the last 30 lines; the full longer output is written to `.claude/state/gate-log/<kontrol>.log` and read only if needed.
161
+ - Board members, `code-reviewer`, `security-auditor` and the code subagent give a report of at most ~15 lines, one line per finding.
162
+ - When a task finishes and the commit is made, `/build` suggests `/clear` (task = session); the new session continues from `progress.md`. In a large file, search first, then read only the lines needed.
128
163
 
129
164
  ## [3.32.1] - 2026-10-26
130
165
 
131
- ### Düzeltilen
132
- - **Atlanan denetim "denetlendi" sayılmıyor.** `--skip` ile atlanan bir commit'te `commit-gate.mjs --status` "bu değişiklikler denetlendi" diyordu. Ardından bir dosya değişince kapı yalnız o dosyanın incelenmesini istiyordu; atlanan dosyalar hiç denetlenmeden kalıyordu. Artık `--status` "denetim atlandı, denetlenmedi" der; değişiklik olursa bütün fark incelenir.
166
+ ### Fixed
167
+ - **A skipped review does not count as "reviewed".** In a commit made with `--skip`, `commit-gate.mjs --status` said "these changes were reviewed". Then when a file changed, the gate asked for only that file to be reviewed; the skipped files stayed unreviewed. Now `--status` says "review skipped, not reviewed"; if there is a change, the whole diff is reviewed.
133
168
 
134
169
  ## [3.32.0] - 2026-10-26
135
170
 
136
- ### Değişen
137
- - **Aynı değişiklik iki kez denetlenmez.** Görev sonu kurul toplantısı artık değişikliğin tek tam denetimi: ilgili üyeler ve `code-reviewer` (hassas yolda `security-auditor` da) birlikte bakar. Toplantı onay verirse ve kapı yeşilse commit kapısı aynı değişiklikler için açılır; commit'te kurul yeniden toplanmaz, `/review-changes` ayrıca önerilmez.
138
- - Onaydan sonra bir dosya değişirse yalnız o dosyalar incelenir. Commit kapısı hangi dosyaların son onaydan sonra değiştiğini söyler.
139
- - Yeni: `node .claude/hooks/commit-gate.mjs --status` bu değişikliklerin denetlenip denetlenmediğini, kapının durumunu ve son onaydan beri değişen dosyaları gösterir. `/review-changes` ve commit toplantısı önce buna bakar.
140
- - Kurul kurulmamışsa akış aynı: görev sonunda `/review-changes` önerilir.
141
- - İzin satırı `/kit-update` ile eklenir.
171
+ ### Changed
172
+ - **The same change is not reviewed twice.** The end-of-task board meeting is now the only full review of the change: the relevant members and `code-reviewer` (plus `security-auditor` on a sensitive path) look together. If the meeting approves and the gate is green, the commit gate opens for the same changes; the board does not meet again at the commit, and `/review-changes` is not suggested separately.
173
+ - If a file changes after approval, only those files are reviewed. The commit gate says which files changed since the last approval.
174
+ - New: `node .claude/hooks/commit-gate.mjs --status` shows whether these changes were reviewed, the state of the gate and the files changed since the last approval. `/review-changes` and the commit meeting look at it first.
175
+ - If no board is set up, the flow is the same: `/review-changes` is suggested at task end.
176
+ - The permission line is added with `/kit-update`.
142
177
 
143
178
  ## [3.31.2] - 2026-10-26
144
179
 
145
- ### Düzeltilen
146
- - **Codex ve Antigravity: commit mesajı yoluyla koruma atlatılamıyor.** 3.31.1'de düz commit mesajı komut sayılmıyordu. PowerShell akıllı tırnakları (`“ ” ‘ ’ „`) da dizge sınırı saydığı için böyle tırnaklı bir mesajın arkasına gizlenen komut onaysız geçebiliyordu. Artık mesaj yalnız bash, PowerShell ve cmd'de aynı şekilde tek dizge kalıyorsa boşaltılır: akıllı tırnak, `\`, `$`, ters tırnak, satır sonu ya da `; & | < > ^ % !` içeren mesaj yine denetlenir.
180
+ ### Fixed
181
+ - **Codex and Antigravity: the protection cannot be bypassed through the commit message.** In 3.31.1 a plain commit message was not counted as a command. PowerShell also counts smart quotes (`“ ” ‘ ’ „`) as string boundaries, so a command hidden behind a message with such quotes could pass without approval. Now the message is emptied only if it stays a single string the same way in bash, PowerShell and cmd: a message containing a smart quote, `\`, `$`, a backtick, a line break or `; & | < > ^ % !` is still checked.
147
182
 
148
183
  ## [3.31.1] - 2026-10-26
149
184
 
150
- ### Düzeltilen
151
- - **Pano tarihleri saat dilimine göre kaymıyor.** Karar, kurul ve bakım günlüğündeki yalnız tarih olan satırlar (`2026-10-26`) UTC gece yarısı sayılıyordu; UTC'nin batısında bir önceki gün görünüyordu. Artık yerel gün olarak okunur. Commit grafiğinin gün etiketleri de aynı şekilde düzeldi.
152
- - **Codex ve Antigravity: commit mesajında geçen `--skip` onay sormuyor.** `git commit -m "… commit-gate.mjs --skip …"` gibi bir mesaj, "commit kapısı atlanıyor" diye boşuna onaya düşüyordu. Tek başına (ya da `git add … &&` ardından) çalışan bir commit'in düz metin mesajı artık komut sayılmaz. İçinde `$(…)`, ters tırnak ya da `\` olan mesaj ve başka komutla zincirlenen commit yine sorulur; gerçek `--skip` çağrısı her yazımda sorulmaya devam eder.
153
- - **Codex ve Antigravity: `commit-gate.mjs` ile `--skip` arasına başka argüman girince de soruluyor** (`commit-gate.mjs -m '--skip' x` gibi). Önceden bu yazım onaysız geçiyordu; Claude Code'daki kapı zaten soruyordu.
185
+ ### Fixed
186
+ - **Dashboard dates no longer shift with the time zone.** Date-only lines (`2026-10-26`) in the decision, board and maintenance logs were counted as UTC midnight; west of UTC they showed the previous day. They are now read as the local day. The day labels of the commit chart were fixed the same way.
187
+ - **Codex and Antigravity: `--skip` in a commit message does not ask for approval.** A message like `git commit -m "… commit-gate.mjs --skip …"` fell into approval for nothing, as "the commit gate is being skipped". The plain-text message of a commit that runs alone (or after `git add … &&`) no longer counts as a command. A message containing `$(…)`, a backtick or `\`, and a commit chained with another command, are still asked about; a real `--skip` call is still asked about in every spelling.
188
+ - **Codex and Antigravity: it also asks when another argument sits between `commit-gate.mjs` and `--skip`** (such as `commit-gate.mjs -m '--skip' x`). Before, this spelling passed without approval; the gate in Claude Code already asked.
154
189
 
155
190
  ## [3.31.0] - 2026-10-26
156
191
 
157
- ### Yeni
158
- - **Rol bazlı model ve effort.** İş dört role ayrıldı: planlama ve mimari, kod yazma, inceleme ve denetim, doküman ve araştırma. Her rolün modelini ve effort'unu sen seçersin (`docs/workflow/models.md`).
159
- - `/build` her görevin başında iki ekranda sorar: önce dört rolün modeli (Opus / Sonnet / Haiku), sonra effort'u (düşük / orta / yüksek / ekstra yüksek). Önerilen: planlama Opus yüksek, kod Sonnet yüksek, inceleme Sonnet yüksek, doküman Haiku yüksek. `/start`, `/adopt` ve `/release` de başlarken aynı soruyu sorar.
160
- - Seçim `node .claude/hooks/models.mjs --set …` ile `.claude/state/models.json`'a yazılır (git'e girmez); `--show` güncel seçimi gösterir.
161
- - Kabul testleri ve kod seçilen kod modelinde çalışan bir alt ajana gider; ana oturum diff'i okur ve kapıyı kendisi koşar. Kurul, `code-reviewer` ve `security-auditor` inceleme rolüyle, görev sonundaki roadmap, maliyet günlüğü ve progress yazımı doküman rolüyle çalışır.
162
- - Kod alt ajanı sana soru soramaz: karar noktasında durur, soruyu ana oturum sorar ve günlüğe yazar.
163
- - Planlama ana oturumda kalır. Kit oturumun modelini değiştiremez; seçtiğin plan modeli ya da effort'u farklıysa AI `/model <ad>` ve `/effort <düzey>` önerir.
164
- - Soru modunda `maliyet` konusunu kapattıysan soru gelmez, son seçimin geçerli kalır.
165
- - `/findings-all` raporları inceleme rolüyle, `/research` derin araştırması doküman rolüyle çalışır.
166
- - Kurul kurulurken model artık ayrıca sorulmaz; `/board setup`'taki "model değiştir" seçeneği kalktı. Commit kurul denetimi her commit'te çalıştığı için `haiku` ve düşük effort'ta kalır; karar konseyi bilerek farklı modelleri karşılaştırdığı için rol seçimi ona uygulanmaz.
167
- - Pano: "Limit ve maliyet" sekmesinde rollerin güncel model ve effort seçimi görünür.
168
- - Codex ve Antigravity karşılıkları `docs/workflow/models.md`'de, kaynak ve tarihle.
169
- - Elle uyarla: AGENTS.md projeye ait. "Codex ve Antigravity'de" bölümüne model maddesi ve "Gerektiğinde oku" tablosuna `docs/workflow/models.md` satırı eklendi; istersen `.kit-new` dosyasından al. İzin satırları `/kit-update` ile eklenir.
192
+ ### Added
193
+ - **Model and effort per role.** The work was split into four roles: planning and architecture, writing code, review and audit, docs and research. You choose the model and effort of each role (`docs/workflow/models.md`).
194
+ - At the start of each task `/build` asks on two screens: first the model of the four roles (Opus / Sonnet / Haiku), then the effort (low / medium / high / extra high). Recommended: planning Opus high, code Sonnet high, review Sonnet high, docs Haiku high. `/start`, `/adopt` and `/release` ask the same question when they begin.
195
+ - The choice is written to `.claude/state/models.json` with `node .claude/hooks/models.mjs --set …` (it does not go into git); `--show` shows the current choice.
196
+ - Acceptance tests and code go to a subagent running on the chosen code model; the main session reads the diff and runs the gate itself. The board, `code-reviewer` and `security-auditor` work with the review role, and the end-of-task roadmap, cost log and progress writing with the docs role.
197
+ - The code subagent cannot ask you questions: it stops at a decision point, the main session asks the question and writes it to the log.
198
+ - Planning stays in the main session. The kit cannot change the session model; if your chosen plan model or effort differs, the AI suggests `/model <ad>` and `/effort <düzey>`.
199
+ - If you closed the `maliyet` topic in question mode, no question comes and the last choice stays valid.
200
+ - `/findings-all` reports work with the review role, and the `/research` deep research with the docs role.
201
+ - The model is no longer asked separately when the board is set up; the "change model" option in `/board setup` was removed. The commit board check runs at every commit, so it stays on `haiku` and low effort; the decision council deliberately compares different models, so the role choice does not apply to it.
202
+ - Dashboard: the "Limit ve maliyet" tab shows the current model and effort choice of the roles.
203
+ - The Codex and Antigravity equivalents are in `docs/workflow/models.md`, with source and date.
204
+ - Adapt by hand: AGENTS.md belongs to the project. A model item was added to the "Codex ve Antigravity'de" section and a `docs/workflow/models.md` row to the "Gerektiğinde oku" table; take them from the `.kit-new` file if you want. The permission lines are added with `/kit-update`.
170
205
 
171
206
  ## [3.30.0] - 2026-10-26
172
207
 
173
- ### Yeni
174
- - **Kişisel tercih hafızası.** Kit nasıl çalışmak istediğini öğrenir: konuşma tarzı, soru sıklığı, rapor biçimi, kod tarzı, kaçınılacaklar.
175
- - Bir davranışı düzelttiğinde ya da tercih söylediğinde AI not alır. Görev sonunda (`/build`) ve oturum sonunda (`/wrap-up`) notlar çoklu seçimle "tercih olarak kaydedeyim mi?" diye sorulur. Onaylamadığın hiçbir şey yazılmaz.
176
- - Tercihler tek bir dosyada durur: `~/.vibe-kit/tercihler.md`. Tüm projelerinde geçerlidir, her oturum başında yüklenir (Claude Code, Codex, Antigravity), git'e girmez.
177
- - Yazma yalnız `node .claude/hooks/prefs.mjs --add <kategori> "<tercih>"` ile yapılır ve her seferinde sorulur. Listeleme: `--list`, silme: `--remove <no>`.
178
- - Sır gibi görünen tercih reddedilir. En fazla 40 tercih tutulur. Proje kuralı kişisel tercihten önce gelir; projeye özgü kurallar yine "Öğrenilen kurallar"a gider.
179
- - Dosyayı makinedeki herhangi bir program yazabilir. Bu yüzden okurken de aynı denetimler uygulanır: uzun satır, sır ya da kontrol karakteri içeren satır yüklenmez, 64 KB'tan büyük dosya okunmaz. Tercihler oturuma "üslup tercihi" olarak girer; izinleri, güvenlik kurallarını ya da komut kurallarını değiştiremez.
180
- - Elle düzenleme desteklenir; başlıklarda büyük/küçük harf ve Türkçe harf farkı önemsenmez. Okunamayan bir satır varsa betik dosyayı yeniden yazmaz, satırı silmemek için durur ve satırı gösterir.
181
- - Elle uyarla: AGENTS.md projeye ait. Yeni kural "9. Kullanıcıyı tanı" maddesi; projendeki AGENTS.md'ye eklemek istersen `.kit-new` dosyasından al. İzin satırları `/kit-update` ile eklenir.
208
+ ### Added
209
+ - **Personal preference memory.** The kit learns how you want to work: conversation style, question frequency, report format, code style, things to avoid.
210
+ - When you correct a behavior or state a preference, the AI takes a note. At task end (`/build`) and session end (`/wrap-up`) the notes are asked about with a multi-select, "save as a preference?". Nothing you do not approve is written.
211
+ - Preferences live in a single file: `~/.vibe-kit/tercihler.md`. It applies to all your projects, is loaded at every session start (Claude Code, Codex, Antigravity) and does not go into git.
212
+ - Writing is done only with `node .claude/hooks/prefs.mjs --add <kategori> "<tercih>"` and is asked about each time. List: `--list`, remove: `--remove <no>`.
213
+ - A preference that looks like a secret is rejected. At most 40 preferences are kept. A project rule comes before a personal preference; project-specific rules still go to "Öğrenilen kurallar".
214
+ - Any program on the machine can write the file. So the same checks apply when reading: a line that is long or contains a secret or a control character is not loaded, and a file bigger than 64 KB is not read. Preferences enter the session as a "style preference"; they cannot change permissions, security rules or command rules.
215
+ - Manual editing is supported; case and Turkish letter differences in headings do not matter. If a line cannot be read, the script does not rewrite the file; it stops so as not to delete the line, and shows the line.
216
+ - Adapt by hand: AGENTS.md belongs to the project. The new rule is item "9. Kullanıcıyı tanı" (9. Know the user); if you want to add it to your project's AGENTS.md, take it from the `.kit-new` file. The permission lines are added with `/kit-update`.
182
217
 
183
218
  ## [3.29.0] - 2026-10-26
184
219
 
185
- ### Yeni
186
- - **Deterministik kapıda "Mutlak yol" kontrolü.** Eklenen bir satırda bu makinenin proje klasörünün ya da ev klasörünün tam yolu varsa kapı kırmızı olur; yol düz, ters bölü ya da kaçışlı yazılmış olabilir. Böyle bir yol başka makinede çalışmaz. Kapı satırları listeler ve yolun nasıl türetileceğini söyler.
187
- - `C:\Users\<ad>`, `/home/<ad>/` gibi genel kullanıcı klasörü kalıpları yalnız not olarak listelenir, commit'i engellemez. `/home/node/app` gibi konteyner yolları ve `/users/42` gibi route'lar bu yüzden sorun çıkarmaz.
188
- - Yalnız eklenen satırlar taranır, yeni dosyalar baştan sona taranır. Git'e girmeyen dosyalara bakılmaz.
189
- - Bilinçli bir örnek (belgede örnek yol, test girdisi) satıra ya da bir üst satıra `kit:yol-izinli` yazarak geçer. Üst satır seçeneği Dockerfile ve JSON gibi satır içi yorum alamayan dosyalar içindir.
190
- - AGENTS.md (Asla) ve üç tipin stack belgesine (Sık yapılan AI hataları) aynı kural eklendi.
220
+ ### Added
221
+ - **"Mutlak yol" (absolute path) check in the deterministic gate.** If an added line contains the full path of this machine's project folder or home folder, the gate turns red; the path may be written plain, with backslashes or escaped. Such a path does not work on another machine. The gate lists the lines and says how to derive the path.
222
+ - General user-folder patterns such as `C:\Users\<ad>` and `/home/<ad>/` are only listed as a note and do not block the commit. So container paths such as `/home/node/app` and routes such as `/users/42` cause no problem.
223
+ - Only added lines are scanned; new files are scanned from start to end. Files that do not go into git are not looked at.
224
+ - A deliberate example (an example path in a document, a test input) passes by writing `kit:yol-izinli` on the line or the line above. The line-above option is for files that cannot take inline comments, such as Dockerfile and JSON.
225
+ - The same rule was added to AGENTS.md (Never) and to the stack documents of the three types (Common AI mistakes).
191
226
 
192
- ### Düzeltilen
193
- - **Kit, projenin dışındaki yerel bir klondan kurulunca kit klasörünün bu makinedeki tam yolu `.kit.json`'a yazılıyordu.** `.kit.json` commit edildiği için projeyi başka makinede açan kişi var olmayan bir yolu görüyordu. Yol artık git dışı `.kit.local.json` dosyasında; `.kit.json` → `kit` alanı `local` yazar. Eski kayıtlar `/kit-update` sırasında kendiliğinden taşınır. Kayıttaki yol bu makinede yoksa (başka makinede yazılmışsa) taşınmaz, yalnız kaldırılır. `/start` ve `/adopt` dosya yoksa kit klasörünü sorar ya da npm paketini kullanır.
194
- - Rehberin alt bilgisindeki sürüm numarası eskide kalmıştı. Rehberdeki ve README rozetlerindeki sürüm artık testle denetleniyor.
195
- - Elle uyarla: `docs/architecture/stack.md` projeye ait. Yeni madde "Sık yapılan AI hataları" bölümünde; istersen kendi stack belgene ekle. `.gitignore`'a `.kit.local.json` satırı güncellemede eklenir.
227
+ ### Fixed
228
+ - **When the kit was installed from a local clone outside the project, the full path of the kit folder on this machine was written to `.kit.json`.** Since `.kit.json` is committed, someone opening the project on another machine saw a path that does not exist. The path is now in the non-git file `.kit.local.json`; the `.kit.json` → `kit` field says `local`. Old records are moved automatically during `/kit-update`. If the recorded path does not exist on this machine (it was written on another), it is not moved, only removed. If the file is missing, `/start` and `/adopt` ask for the kit folder or use the npm package.
229
+ - The version number in the guide footer had been left stale. The version in the guide and the README badges is now checked by a test.
230
+ - Adapt by hand: `docs/architecture/stack.md` belongs to the project. The new item is in the "Sık yapılan AI hataları" (Common AI mistakes) section; add it to your own stack document if you want. The `.kit.local.json` line is added to `.gitignore` during the update.
196
231
 
197
232
  ## [3.28.6] - 2026-10-26
198
233
 
199
- ### Düzeltilen
200
- - **CI otomatik tamiri (şablonlar) daha dar çalışıyor:**
201
- - Düzeltmeyi CI'ın kırmızı gördüğü commit'te yapar. Dal o arada ilerlediyse push reddedilir; böylece CI'dan geçmemiş commit'ler yazma yetkili ajana girmez.
202
- - Dependabot PR'larında çalışmaz.
203
- - Güvenlik işleri (Semgrep, sır taraması, RLS) kırmızıysa tamir denemez; bunlar insan incelemesi ister.
204
- - `claude-code-action` commit SHA'sına sabit.
205
- - Haftalık bakım ajanının `git log` ve `gh run list` izinleri daraltıldı; PR başlıkları gibi dışarıdan gelen metin ajana gitmiyor.
206
- - **Şablon iş akışlarında `run:` içinde `${{ }}` ifadesi kalmadı** (backend canlı izlemede `LIVE_URL` kabuk koduna gömülüyordu). Değerler ortam değişkeniyle geçiyor; bunu bir test denetliyor.
207
- - **Konsey sayımı:** Eksik ya da bilinmeyen harf içeren bir sıralama (`1. Görüş D` tek satır) artık geçersiz sayılıyor; önceden sıralamayı yapan tek kişinin oyuyla o görüşe en iyi ortalamayı veriyordu. Hiç oy almayan bulgu "kabul" değil "oy yok" yazılıyor; KRİTİK ise kullanıcıya sorulması isteniyor.
208
- - **Durum çubuğu:** `progress.md`'deki kontrol karakterleri (ESC dizileri) terminale geçmiyor. Bu karakterlerle panoya yazılabiliyor ya da satırın üzerine sahte metin basılabiliyordu.
209
- - **Pano:**
210
- - Önbellekteki GitHub bağlantıları yalnız `https` olabiliyor, geleceğe tarihli önbellek bayat sayılıyor.
211
- - Başarısız bir testin çıktısında geçen `<skipped` yazısı testi atlanmış göstermiyor.
212
- - `-` ya da `yok` yazılmış bir prod ref yalancı KRİTİK uyarı üretmiyor.
213
- - Test ya da rapor adında bir klasör panoyu ve kapıyı çökertmiyor.
214
- - `constructor:` gibi bir commit türü sayımı bozmuyor.
215
- - `dashboard.html` bir bağlantıysa üzerinden yazılmıyor.
216
- - Panonun depo metinlerini kaçışlı yazdığı artık testle denetleniyor.
217
- - **`/qa` kanıtı:** Bir `shots/<id>.png` bağlantısı yerel bir dosyayı `.previews/` altına kopyalamıyor.
218
- - Elle uyarla: Projedeki `claude-ci-fix.yml`, `claude-maintenance.yml` ya da `live-monitoring.yml` dosyasını değiştirdiysen, `/kit-update` yeni sürümü `.kit-new` olarak bırakır.
234
+ ### Fixed
235
+ - **CI auto-repair (templates) works more narrowly:**
236
+ - It makes the fix on the commit CI saw as red. If the branch moved in the meantime, the push is rejected; so commits that have not passed CI do not reach the agent with write access.
237
+ - It does not run on Dependabot PRs.
238
+ - If the security jobs (Semgrep, secret scan, RLS) are red, it does not try to repair; these need human review.
239
+ - `claude-code-action` is pinned to a commit SHA.
240
+ - The `git log` and `gh run list` permissions of the weekly maintenance agent were narrowed; outside text such as PR titles does not go to the agent.
241
+ - **No `${{ }}` expression is left inside `run:` in the template workflows** (in the backend live monitoring, `LIVE_URL` was embedded in the shell code). Values are passed as environment variables; a test checks this.
242
+ - **Council count:** A ranking with a missing or unknown letter (`1. Görüş D` on a single line) is now counted as invalid; before, it gave that opinion the best average with the vote of the single person who made the ranking. A finding that got no vote is written as "no vote", not "accepted"; if it is KRİTİK, the user is asked.
243
+ - **Status line:** Control characters (ESC sequences) in `progress.md` no longer pass to the terminal. With these characters it was possible to write to the dashboard or to print fake text over the line.
244
+ - **Dashboard:**
245
+ - GitHub links in the cache can only be `https`; a cache dated in the future is counted as stale.
246
+ - The text `<skipped` in the output of a failed test no longer makes the test look skipped.
247
+ - A prod ref written as `-` or `yok` no longer produces a false KRİTİK warning.
248
+ - A folder with a test or report name no longer crashes the dashboard and the gate.
249
+ - A commit type such as `constructor:` does not break the count.
250
+ - `dashboard.html` is not written through if it is a link.
251
+ - That the dashboard escapes the repo texts is now checked by a test.
252
+ - **`/qa` evidence:** A `shots/<id>.png` link does not copy a local file under `.previews/`.
253
+ - Adapt by hand: If you changed `claude-ci-fix.yml`, `claude-maintenance.yml` or `live-monitoring.yml` in your project, `/kit-update` leaves the new version as `.kit-new`.
219
254
 
220
255
  ## [3.28.5] - 2026-10-26
221
256
 
222
- ### Düzeltilen
223
- - **Backend şablonunun CI ve canlı izleme işleri 3.28.4'te hiç başlamıyordu.** `astral-sh/setup-uv@v10` diye bir tag yok; yalnızca tam sürüm tag'leri var. Action artık v10.3.2'nin commit SHA'sına sabit. Kitteki ve şablonlardaki her `uses:` satırı, gerçekten çözüldüğü doğrulanmış referanslar listesiyle test ediliyor.
224
- - Elle uyarla: 3.28.4 ile güncellenmiş bir backend projesinde `.github/workflows/ci.yml` ve `live-monitoring.yml` dosyalarını değiştirdiysen, `setup-uv` satırını `.kit-new` dosyasından al.
257
+ ### Fixed
258
+ - **The CI and live monitoring jobs of the backend template never started in 3.28.4.** There is no tag `astral-sh/setup-uv@v10`; only full version tags exist. The action is now pinned to the commit SHA of v10.3.2. Every `uses:` line in the kit and the templates is tested against a list of references verified to really resolve.
259
+ - Adapt by hand: In a backend project updated with 3.28.4, if you changed `.github/workflows/ci.yml` and `live-monitoring.yml`, take the `setup-uv` line from the `.kit-new` file.
225
260
 
226
261
  ## [3.28.4] - 2026-10-26
227
262
 
228
- ### Değişen
229
- - **GitHub Actions sürümleri Node 24'e geçti** (GitHub, Node 20 ile çalışan action'ları zorla Node 24'te çalıştırıyordu ve uyarı veriyordu): `actions/checkout` v7, `actions/setup-node` v7, `gitleaks/gitleaks-action` v3, `astral-sh/setup-uv` v10. Şablonlardaki CI, bakım, canlı izleme ve ödeme webhook iş akışları güncellendi. Kitin npm yayın iş akışı commit SHA'sına sabit kalıyor ve paket önbelleğini kapatıyor (önbellek zehirlenmesine karşı).
230
- - Elle uyarla: Projedeki iş akışını kendin değiştirdiysen `/kit-update` yeni sürümü `.kit-new` olarak bırakır; sürüm satırlarını oradan al.
263
+ ### Changed
264
+ - **GitHub Actions versions moved to Node 24** (GitHub was forcing actions that run on Node 20 to run on Node 24 and gave a warning): `actions/checkout` v7, `actions/setup-node` v7, `gitleaks/gitleaks-action` v3, `astral-sh/setup-uv` v10. The CI, maintenance, live monitoring and payment webhook workflows in the templates were updated. The kit's own npm publish workflow stays pinned to a commit SHA and turns off the package cache (against cache poisoning).
265
+ - Adapt by hand: If you changed the workflow in your project yourself, `/kit-update` leaves the new version as `.kit-new`; take the version lines from there.
231
266
 
232
- ### Düzeltilen
233
- - **Commit alias'ı tespiti genişledi:** büyük/küçük harf duyarsız; başka bir alias'ı çağıran ya da değerinde `commit` geçen `!` kabuk alias'ları da commit sayılıyor. Aynı komutta tanımlanan alias (`git -c alias.x=…`, `git config alias.x …`, `GIT_CONFIG_*`) önceden okunamadığı için komut durduruluyor.
267
+ ### Fixed
268
+ - **Commit alias detection was widened:** it is case-insensitive; `!` shell aliases that call another alias or contain `commit` in their value also count as commits. An alias defined in the same command (`git -c alias.x=…`, `git config alias.x …`, `GIT_CONFIG_*`) could not be read beforehand, so the command is stopped.
234
269
 
235
270
  ## [3.28.3] - 2026-10-26
236
271
 
237
- ### Düzeltilen
238
- - **Commit kapısı `git.exe commit`, tam yolla yazılan git ve commit'e açılan git alias'larını da görüyor** (`[alias] ci = commit`, `!git commit`, `git -c alias.x=commit x`). Bunlar önceden kapıya takılmıyordu.
239
- - **Mesajında `commit-gate.mjs --skip` geçen bir commit, kurul ve kapı denetiminden sorusuz geçebiliyordu.** Böyle bir commit artık normal commit denetiminden geçiyor.
240
- - **3.10.0'dan kalan geniş `tools.mjs` izni (`Bash(node .claude/hooks/tools.mjs:*)`) `/kit-update` ile kaldırılıyor.** Bu izin, sorulması gereken `--enable` ve `--commands` komutlarını da serbest bırakıyordu.
241
- - Elle uyarla: yok.
272
+ ### Fixed
273
+ - **The commit gate also sees `git.exe commit`, git written with a full path, and git aliases that open to a commit** (`[alias] ci = commit`, `!git commit`, `git -c alias.x=commit x`). These did not hit the gate before.
274
+ - **A commit with `commit-gate.mjs --skip` in its message could pass the board and gate check without a question.** Such a commit now goes through the normal commit check.
275
+ - **The broad `tools.mjs` permission left from 3.10.0 (`Bash(node .claude/hooks/tools.mjs:*)`) is removed by `/kit-update`.** This permission also freed the `--enable` and `--commands` commands, which must be asked about.
276
+ - Adapt by hand: none.
242
277
 
243
278
  ## [3.28.2] - 2026-10-26
244
279
 
245
- ### Düzeltilen
246
- - **`skip-worktree` ya da `assume-unchanged` işaretli bir dosyada sahneye konan içerik commit onayını delebiliyordu.** Bu işaretler sahne ile disk arasındaki farkı `git diff`'ten gizliyor. 3.28.1'deki yeni imza da bu yüzden onaylanmamış içeriği göremiyordu. İşaretli dosyaların sahnedeki içeriği artık her zaman imzaya giriyor.
247
- - **Commit kapısı her Bash komutunda daha hızlı.** Kapı modülü yalnız kapı komut onayında yükleniyor.
248
- - Elle uyarla: yok.
280
+ ### Fixed
281
+ - **Content staged on a file marked `skip-worktree` or `assume-unchanged` could get past the commit approval.** These marks hide the difference between the stage and the disk from `git diff`. So the new signature in 3.28.1 could not see unapproved content either. The staged content of marked files now always enters the signature.
282
+ - **The commit gate is faster on every Bash command.** The gate module is loaded only on the gate command approval.
283
+ - Adapt by hand: none.
249
284
 
250
285
  ## [3.28.1] - 2026-10-26
251
286
 
252
- ### Düzeltilen
253
- - **Onaylanan değişiklikleri `git add` ile sahnelemek commit kapısını ve kurul onayını geçersiz kılıyordu.** Değişiklik imzası artık dosyaların diskteki içeriğinden çıkıyor; aynı içeriği sahnelemek imzayı değiştirmiyor. Diskten farklı içerikle sahnelenen dosya (kısmi sahneleme) imzada ayrıca görünür, çünkü commit sahnedeki içeriği alır.
254
- - **Kitin klon klasöründe `kit.mjs install` commit edilmemiş işi siliyordu** (`kit/` klasörü, `README.md`). Commit edilmemiş değişiklik varsa kurulum artık başlamadan durur ve dosyaları listeler.
255
- - **Dokuz betik proje kökünü çalıştırıldığı klasörden buluyordu** (kayıt noktası, bütçe, bildirim, eklenti eşitleme, hatırlatıcı, yapı koruyucu, araçlar, limit). Codex alt klasörden çalıştırınca örneğin `checkpoint.mjs --restore` yalnız o klasörü geri alıyor ama "döndü" diyordu. Hepsi artık kökü aynı yoldan buluyor.
256
- - **3.28.0'daki güvenlik düzeltmelerinde kalan açıklar:**
257
- - npm takma adı (`zod@npm:baska-paket`) asıl kurulan paketi gizliyordu. Paket kapısı artık hedef paketi denetliyor. Bu açık 3.28.0'dan önce de vardı.
258
- - `tillerhand` muafiyeti ve projede kurulu komut muafiyeti yalnız düz yazımda geçerli. `tillerhand@npm:…` ya da `tsc@5` gibi yazımlar denetleniyor.
259
- - Commit kapısındaki muafiyet yalnız tek başına çalışan `node <yol> --approve <not>` komutu için geçerli. Zincir, alt kabuk ya da `env -C` içeren komutta muafiyet yok.
260
- - Koruma betiğine argüman `xargs`, pipe ya da `<` ile verilirse kullanıcıya sorulur.
261
- - Elle uyarla: yok.
287
+ ### Fixed
288
+ - **Staging approved changes with `git add` invalidated the commit gate and the board approval.** The change signature is now taken from the content of the files on disk; staging the same content does not change the signature. A file staged with content different from the disk (partial staging) shows up in the signature separately, because the commit takes the staged content.
289
+ - **`kit.mjs install` in the kit's clone folder deleted uncommitted work** (the `kit/` folder, `README.md`). If there is an uncommitted change, the install now stops before starting and lists the files.
290
+ - **Nine scripts found the project root from the folder they were run in** (checkpoint, budget, notification, plugin sync, reminder, structure guard, tools, limit). When Codex ran from a subfolder, for example `checkpoint.mjs --restore` restored only that folder but said "returned". All of them now find the root the same way.
291
+ - **Gaps left in the security fixes of 3.28.0:**
292
+ - An npm alias (`zod@npm:baska-paket`) hid the package actually installed. The package gate now checks the target package. This gap existed before 3.28.0 too.
293
+ - The `tillerhand` exemption and the exemption for a command installed in the project apply only to plain spelling. Spellings such as `tillerhand@npm:…` or `tsc@5` are checked.
294
+ - The exemption in the commit gate applies only to a standalone `node <yol> --approve <not>` command. A command with a chain, a subshell or `env -C` has no exemption.
295
+ - If an argument is passed to a protection script with `xargs`, a pipe or `<`, the user is asked.
296
+ - Adapt by hand: none.
262
297
 
263
298
  ## [3.28.0] - 2026-10-25
264
299
 
265
- ### Değişen
266
- - **Commit denetimini atlamak artık ayrı bir komut: `commit-gate.mjs --skip "<neden>"`.** Bu komut her seferinde kullanıcıya sorulur. `--approve` "atlandı" ile başlayan notu artık kabul etmiyor. Önceden hook komut metninde "atlandı" kelimesini arıyordu; kelime `$'atland\xc4\xb1'` gibi kaçışlı yazılınca soru çıkmadan kapı ve kurul atlanabiliyordu.
267
- - **Kapsam kalkanını açmak ve kapatmak (`freeze-guard.mjs --plan-save`, `--plan-end`) artık sorulur.** İkisi de serbestti. AI planı kapatıp listede olmayan dosyalara yazabiliyor ya da planı daha geniş bir listeyle yeniden kaydedebiliyordu. `/kit-update` eski izin satırlarını kaldırıp yenilerini ekler.
268
- - **Koruma betiği dolaylı yazımla çalıştırılırsa sorulur.** `.claude/hooks` altındaki bir betik `$DEĞİŞKEN`, `$(...)`, ters tırnak, `${...}` ya da `*` `?` ile çağrılırsa (`commit-gate.mjs $S`, `commit-*.mjs`) kurallar komutun içini göremez; bu yüzden kullanıcı onayı istenir. `$CLAUDE_PROJECT_DIR` ve heredoc içindeki commit mesajları bu kurala takılmaz.
269
- - **Paket kapısı indirip çalıştıran komutlara da bakıyor:** `npx`, `bunx`, `bun x`, `npm exec`, `pnpm dlx`, `yarn dlx`, `uvx`, `uv tool run`, `uv run --with`, `pipx run`. Paket adı uydurmaysa komut engellenir. Çok yeni, az indirilmiş ya da popüler bir pakete benzeyen paket kullanıcıya sorulur. Projede zaten kurulu bir komut (`node_modules/.bin`) `npx`, `npm exec` ve `bunx` ile çalıştırılırken denetlenmez; `dlx` her zaman indirdiği için denetlenir. Kitin kendi paketi (`tillerhand`) denetlenmez.
270
- - **Paket kapısı önekleri ve sarmalayıcıları da görüyor** (kurulum komutlarında da): `FOO=1 npx`, `cmd /c`, `bash -c`, `time`, `/usr/bin/npx`, `npx.cmd`, `pnpm -C . dlx`, `npm --prefix web install`. Bilinmeyen bir bayraktan sonraki ad kesin paket sayılmaz; kayıt defterinde yoksa engellenmez, sorulur.
271
-
272
- ### Düzeltilen
273
- - **Windows'ta masaüstü bildirimi proje adından komut çalıştırabiliyordu.** Proje adı PowerShell betiğinin metnine gömülüyordu ve yalnız düz `'` kaçırılıyordu; PowerShell `’ ‘ ‚ ‛` işaretlerini de tırnak sayar. Başlık ve mesaj artık betiğe ortam değişkeniyle geçiyor.
274
- - **Biçimlendirme hook'u (web, mobil) Windows'ta boşluklu klasörde çalışmıyordu** ve dosya yolunu kabuğa kaçışsız veriyordu. Prettier artık kabuk olmadan, doğrudan Node ile çalışıyor (Prettier 3).
275
- - **Maliyet okuma (`cost.mjs`) `npx`'i proje klasöründe çalıştırıyordu.** Bu yüzden depodaki bir `.npmrc` ya da `node_modules/.bin/ccusage` devreye girebiliyordu. Artık her çalışmada açılıp silinen kendi geçici klasöründe çalışıyor.
276
- - **Commit kapısındaki muafiyet sadece projenin kendi `commit-gate.mjs` dosyası için geçerli.** Yol çözülerek karşılaştırılır: göreli, mutlak ya da `$CLAUDE_PROJECT_DIR` ile yazılan yol muaf kalır. Başka bir klasörde (`sandbox/.claude/hooks/commit-gate.mjs`) bu adla duran bir `gate.mjs` kopyası ise kapı komut onayı sayılır.
277
- - Linux bildiriminde `-` ile başlayan mesaj seçenek sanılmaz.
278
- - Elle uyarla: yok; `/kit-update` hook'ları, kuralları ve izin satırlarını yeniler.
300
+ ### Changed
301
+ - **Skipping the commit check is now a separate command: `commit-gate.mjs --skip "<neden>"`.** This command is asked about the user every time. `--approve` no longer accepts a note that starts with "atlandı" (skipped). Before, the hook looked for the word "atlandı" in the command text; when the word was written escaped, like `$'atland\xc4\xb1'`, the gate and the board could be skipped without a question.
302
+ - **Opening and closing the scope shield (`freeze-guard.mjs --plan-save`, `--plan-end`) is now asked about.** Both were free. The AI could close the plan and write to files not in the list, or save the plan again with a wider list. `/kit-update` removes the old permission lines and adds the new ones.
303
+ - **A protection script run through an indirect spelling is asked about.** If a script under `.claude/hooks` is called with `$VARIABLE`, `$(...)`, a backtick, `${...}` or `*` `?` (`commit-gate.mjs $S`, `commit-*.mjs`), the rules cannot see inside the command; so user approval is requested. `$CLAUDE_PROJECT_DIR` and commit messages in a heredoc are not caught by this rule.
304
+ - **The package gate also looks at commands that download and run:** `npx`, `bunx`, `bun x`, `npm exec`, `pnpm dlx`, `yarn dlx`, `uvx`, `uv tool run`, `uv run --with`, `pipx run`. If the package name is made up, the command is blocked. A package that is very new, little downloaded or that resembles a popular package is asked about. A command already installed in the project (`node_modules/.bin`) is not checked when run with `npx`, `npm exec` and `bunx`; `dlx` is always checked because it always downloads. The kit's own package (`tillerhand`) is not checked.
305
+ - **The package gate also sees prefixes and wrappers** (in install commands too): `FOO=1 npx`, `cmd /c`, `bash -c`, `time`, `/usr/bin/npx`, `npx.cmd`, `pnpm -C . dlx`, `npm --prefix web install`. A name after an unknown flag is not counted as certainly a package; if it is not in the registry it is not blocked, it is asked about.
306
+
307
+ ### Fixed
308
+ - **On Windows the desktop notification could run a command from the project name.** The project name was embedded in the text of the PowerShell script and only a plain `'` was escaped; PowerShell also counts `’ ‘ ‚ ‛` as quotes. The title and message are now passed to the script through environment variables.
309
+ - **The formatting hook (web, mobile) did not work in a folder with spaces on Windows** and gave the file path to the shell unescaped. Prettier now runs directly with Node, without a shell (Prettier 3).
310
+ - **Cost reading (`cost.mjs`) ran `npx` in the project folder.** So a `.npmrc` in the repo or `node_modules/.bin/ccusage` could take effect. It now runs in its own temporary folder, created and deleted at each run.
311
+ - **The exemption in the commit gate applies only to the project's own `commit-gate.mjs` file.** The path is compared after resolving: a relative, absolute or `$CLAUDE_PROJECT_DIR` path stays exempt. A copy of `gate.mjs` sitting under this name in another folder (`sandbox/.claude/hooks/commit-gate.mjs`) counts as a gate command approval.
312
+ - A message starting with `-` in the Linux notification is not taken as an option.
313
+ - Adapt by hand: none; `/kit-update` refreshes the hooks, rules and permission lines.
279
314
 
280
315
  ## [3.27.2] - 2026-10-25
281
316
 
282
- ### Belgeler
283
- - **README ve rehberde npm ile kurulum:** `npx tillerhand init` önerilen yol; git klonu seçenek olarak duruyor. Codex/Antigravity için `npx tillerhand init --tool codex`.
284
- - **Rehber:** Üstteki "Hemen başla" ve "Nasıl çalışır?" düğmeleri kaldırıldı. Kurulum komutları ve terminal blokları (durum bloğu, alt durum çubuğu) dar ekranda yana kaymadan alt satıra iner.
285
- - Paket Node.js 18 ve üstünü kabul eder (belgedeki gereksinimle aynı).
317
+ ### Documentation
318
+ - **Installation with npm in the README and guide:** `npx tillerhand init` is the recommended route; the git clone stays as an option. For Codex/Antigravity: `npx tillerhand init --tool codex`.
319
+ - **Guide:** The "Hemen başla" (get started now) and "Nasıl çalışır?" (how does it work?) buttons at the top were removed. Install commands and terminal blocks (status block, status line) wrap to the next line on a narrow screen instead of scrolling sideways.
320
+ - The package accepts Node.js 18 and above (the same as the requirement in the docs).
286
321
 
287
322
  ## [3.27.1] - 2026-10-25
288
323
 
289
- ### Düzeltilen
290
- - **Koruma hook'ları, proje sembolik bağlantı veya junction üzerinden açılınca sessizce çalışmıyordu.** Sır engeli, yıkıcı komut kalkanı, commit kapısı, yapı ve test korumaları dahil 17 betik, başlatıldıkları yolu gerçek yolla karşılaştırırken bağlantıyı çözmüyordu; macOS'ta `/tmp` gibi bağlantılı klasörlerde veya bağlantılı proje klasörlerinde hiçbir şey yapmadan çıkıyorlardı. Artık iki yol da gerçek yola çevrilip karşılaştırılıyor (`shared.mjs` → `isMain`).
291
- - **`npx tillerhand init` Linux ve macOS'ta hiçbir şey yapmıyordu** (aynı neden: npx kiti `node_modules/.bin` bağlantısıyla başlatıyor). Windows'ta çalışıyordu. 3.27.0'ı Linux veya macOS'ta denediysen tekrar çalıştır.
292
- - Elle uyarla: yok; `/kit-update` hook'ları yeniler.
324
+ ### Fixed
325
+ - **Protection hooks silently did not work when the project was opened through a symbolic link or junction.** 17 scripts, including the secret block, destructive command shield, commit gate, and the structure and test protections, did not resolve the link when comparing the path they were started from with the real path; in linked folders such as `/tmp` on macOS or in linked project folders they exited doing nothing. Both paths are now converted to the real path and compared (`shared.mjs` → `isMain`).
326
+ - **`npx tillerhand init` did nothing on Linux and macOS** (same cause: npx starts the kit through a `node_modules/.bin` link). It worked on Windows. If you tried 3.27.0 on Linux or macOS, run it again.
327
+ - Adapt by hand: none; `/kit-update` refreshes the hooks.
293
328
 
294
329
  ## [3.27.0] - 2026-10-25
295
330
 
296
- ### Yeni
297
- - **Tek komutla kurulum: `npx tillerhand init`.** Kit npm'de `tillerhand` paketi olarak yayınlanır; boş bir klasörde bu komut kiti kurar, sonra yeni oturumda `/start` (var olan kodda `/adopt`). `.kit.json` → `kit` alanı `npx:tillerhand@<sürüm>` olur; `/start` ve `/adopt` tip kurulumunu aynı sürümle `npx -y tillerhand@<sürüm> install ...` ile yapar. Git klonu yolu (`node <kit>/kit/kit.mjs init`) aynen çalışır.
298
- - Paket sadece kiti taşır: iç notlar, kişisel durum dosyaları, eval ve test klasörleri girmez. npm `.gitignore` paketlemediği için kit kendi kopyasını taşır; npx ile kurulan projede de `.env` git'e girmez.
299
- - Yayın otomatik: `v*` tag'i push edilince GitHub Actions tag'in `main`'de olduğunu, sürümlerin (tag, `package.json`, `kit/VERSION`) aynı olduğunu ve testleri denetler; yayını ayrı bir işte, repo kodu çalıştırmadan, npm'e token'sız (Trusted Publishing, provenance ile) yapar. Action'lar commit SHA'sına sabit.
300
- - `npx` dışındaki çalıştırıcılar (`pnpm dlx`, `bunx`) kitin geçici yolunu kaydeder; bunlarla kurulumdan sonra `/start` kit klasörünü bulamayabilir. `npx` kullan.
301
- - **Kitin `package.json`'u projeye kopyalanmaz** (projenin kendi `package.json`'u ile çakışmasın).
331
+ ### Added
332
+ - **Install with one command: `npx tillerhand init`.** The kit is published on npm as the `tillerhand` package; in an empty folder this command installs the kit, then in a new session run `/start` (`/adopt` on existing code). The `.kit.json` → `kit` field becomes `npx:tillerhand@<sürüm>`; `/start` and `/adopt` do the type setup with the same version through `npx -y tillerhand@<sürüm> install ...`. The git clone route (`node <kit>/kit/kit.mjs init`) works as before.
333
+ - The package carries only the kit: internal notes, personal state files, and eval and test folders are not included. Since npm does not pack `.gitignore`, the kit carries its own copy; in a project installed with npx, `.env` also stays out of git.
334
+ - Publishing is automatic: when a `v*` tag is pushed, GitHub Actions checks that the tag is on `main`, that the versions (tag, `package.json`, `kit/VERSION`) are the same, and runs the tests; it publishes in a separate job, without running repo code, to npm without a token (Trusted Publishing, with provenance). Actions are pinned to commit SHAs.
335
+ - Runners other than `npx` (`pnpm dlx`, `bunx`) record the kit's temporary path; after installing with them, `/start` may not find the kit folder. Use `npx`.
336
+ - **The kit's `package.json` is not copied to the project** (so it does not clash with the project's own `package.json`).
302
337
 
303
338
  ## [3.26.1] - 2026-10-25
304
339
 
305
- ### Düzeltilen
306
- - **Kapı onayı muafiyeti daraldı.** Sadece gerçek `.claude/hooks/commit-gate.mjs --approve` kapı onayı kuralının dışında; başka bir klasöre `commit-gate.mjs` adıyla konmuş bir `gate.mjs` kopyası artık onay kuralına takılır (Claude Code kapısı ve Codex/Antigravity listesi).
307
- - **Kurulumda ayar birleştirme** yalnız nesnenin kendi anahtarlarını birleştirir; bir JSON'daki `__proto__` anahtarı sonucun prototipini değiştirmez.
340
+ ### Fixed
341
+ - **The gate approval exemption was narrowed.** Only the real `.claude/hooks/commit-gate.mjs --approve` is outside the gate approval rule; a copy of `gate.mjs` placed in another folder under the name `commit-gate.mjs` now falls under the approval rule (the Claude Code gate and the Codex/Antigravity list).
342
+ - **Settings merging at install** merges only the object's own keys; a `__proto__` key in a JSON does not change the prototype of the result.
308
343
 
309
344
  ## [3.26.0] - 2026-10-25
310
345
 
311
- ### Değişen
312
- - **Supabase anahtarları yeni adlarla** (web-saas, mobile). Supabase eski `anon` ve `service_role` anahtarlarını 2026 sonuna kadar kullanımdan kaldırıyor (supabase.com/docs/guides/api/api-keys, 2026-10-25). Yeni projelerde `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY` (`sb_publishable_…`) ve `SUPABASE_SECRET_KEY` (`sb_secret_…`, sadece sunucu); mobilde `EXPO_PUBLIC_SUPABASE_PUBLISHABLE_KEY`. İstemci koduna gizli anahtar giren yer uyarısı iki adı da yakalar. RLS saldırgan testi iki türü de zaten okuyordu.
313
- - Elle uyarla (isteğe bağlı): Supabase panelinde yeni anahtarları oluştur; `.env.example`, barındırma panelindeki değişkenler, GitHub → Variables (`NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`) ve koddaki `process.env` okumaları aynı adla değişir. Eski adları korursan yeni anahtarı eski adlı değişkene girebilirsin.
346
+ ### Changed
347
+ - **Supabase keys with new names** (web-saas, mobile). Supabase is deprecating the old `anon` and `service_role` keys by the end of 2026 (supabase.com/docs/guides/api/api-keys, 2026-10-25). In new projects: `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY` (`sb_publishable_…`) and `SUPABASE_SECRET_KEY` (`sb_secret_…`, server only); in mobile `EXPO_PUBLIC_SUPABASE_PUBLISHABLE_KEY`. The warning about a secret key entering client code catches both names. The RLS adversarial test already read both kinds.
348
+ - Adapt by hand (optional): Create the new keys in the Supabase dashboard; `.env.example`, the variables in the hosting dashboard, GitHub → Variables (`NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`) and the `process.env` reads in the code change to the same name. If you keep the old names, you can put the new key into the variable with the old name.
314
349
 
315
350
  ## [3.25.1] - 2026-10-25
316
351
 
317
- ### Düzeltilen
318
- - **`/kit-update` ile sonradan eklenen bir ek, projede aynı adla duran dosyayı sessizce atlamıyor.** Projenin dosyasına dokunulmaz, kitinki yanına `.kit-new` olarak konur ve raporda çakışma olarak görünür; ilk kurulumdaki davranışla aynı. Önceden ek kurulmuş sanılıyordu.
352
+ ### Fixed
353
+ - **An add-on added later with `/kit-update` does not silently skip a file with the same name in the project.** The project's file is not touched, the kit's is placed next to it as `.kit-new`, and it shows up as a conflict in the report; the same as the behavior at first install. Before, the add-on was thought to be installed.
319
354
 
320
355
  ## [3.25.0] - 2026-10-25
321
356
 
322
- ### Yeni
323
- - **Türkiye eki** (`--addons tr`, isteğe bağlı). `/start` Türkiye'de satış veya Türk kullanıcı varsa önerir. `docs/legal/turkiye.md`'de her madde birincil kaynağa bağlı ve kontrol tarihli (2026-10-25); hukuki görüş değildir, yayından önce avukata veya mali müşavire danış.
324
- - KVKK yurt dışı aktarım (m.9, 7499 s. Kanunla değişik): yeterlilik kararı, standart sözleşme ve 5 iş günü içinde Kuruma bildirim, arızi aktarım; AI ve barındırma servisleri için kontrol listesi.
325
- - e-Fatura ve e-Arşiv (509 s. VUK GT, güncel hali): 3 milyon TL / internet satışında 500 bin TL eşiği, 1/1/2026'dan itibaren tutardan bağımsız e-Arşiv, internet satışı faturasında zorunlu bilgiler.
326
- - iyzico ve PayTR ödeme bildirimi imza doğrulaması, çalışan kodla: web-saas `src/lib/payments/webhook-signature.ts` ve saldırgan testi (`payment-webhook` iş akışı, Node 22.18+), backend `app/shared/payments.py` ve testi (pytest; ruff biçiminde). Sahte, değiştirilmiş veya imzasız bildirim reddedilir; doğrulama kaldırılırsa test kırmızı olur. Mobilde bildirim sunucuya gelir, kod ve sunucu anahtarları (`.env.example`) backend'de.
327
- - Rehber, geçerli imzanın ödemenin başarılı olduğu anlamına gelmediğini söyler: sonuç alanı, tutar (iyzico'da sunucudan sorgulanır) ve tekrar gelen bildirim için atomik onay adımları var.
328
- - İ/ı ve Türkçe sıralama test durumları. `/findings-legal` ve `/findings-business` Türkiye maddelerini okur.
329
- - Var olan projeye eklemek: `node <kit>/kit/kit.mjs update --project . --addons tr`.
330
- - **Eke özel tip katmanı:** Bir ek, sadece bir proje tipine gidecek dosyaları `addons/<ek>/types/<tip>/` altında taşıyabilir; `update --addons` ile sonradan eklenince de uygulanır.
357
+ ### Added
358
+ - **Turkey add-on** (`--addons tr`, optional). `/start` suggests it if there are sales in Turkey or Turkish users. In `docs/legal/turkiye.md` each item is linked to a primary source and has a check date (2026-10-25); it is not legal advice, so consult a lawyer or accountant before launch.
359
+ - KVKK transfer abroad (art. 9, as amended by Law 7499): adequacy decision, standard contract and notification to the Authority within 5 business days, incidental transfer; a checklist for AI and hosting services.
360
+ - e-Fatura and e-Arşiv (VUK GT no. 509, current version): the 3 million TL / 500 thousand TL threshold for internet sales, e-Arşiv regardless of amount from 1/1/2026, required details on an internet sales invoice.
361
+ - Signature check for iyzico and PayTR payment notifications, with working code: web-saas `src/lib/payments/webhook-signature.ts` and the adversarial test (`payment-webhook` workflow, Node 22.18+), backend `app/shared/payments.py` and its test (pytest; in ruff format). A fake, altered or unsigned notification is rejected; if the check is removed, the test turns red. In mobile the notification comes to the server, and the code and server keys (`.env.example`) are in the backend.
362
+ - The guide says that a valid signature does not mean the payment succeeded: there are atomic approval steps for the result field, the amount (queried from the server in iyzico) and a repeated notification.
363
+ - İ/ı and Turkish sort test cases. `/findings-legal` and `/findings-business` read the Turkey items.
364
+ - Adding to an existing project: `node <kit>/kit/kit.mjs update --project . --addons tr`.
365
+ - **Add-on-specific type layer:** An add-on can carry files that go to only one project type under `addons/<ek>/types/<tip>/`; it also applies when added later with `update --addons`.
331
366
 
332
- ### Düzeltilen
333
- - **Kalkan, tırnak içindeki `&` veya `|` ile atlatılamıyor.** `vercel deploy --meta "a&b" --prod`, `rm "a&b" -rf` (Codex/Antigravity) gibi komutlarda tırnaktaki işaret komutu bölüp sonraki bayrağı kuraldan kaçırıyordu; artık her kural bu yazımı da görür.
367
+ ### Fixed
368
+ - **The shield cannot be bypassed with a `&` or `|` inside quotes.** In commands such as `vercel deploy --meta "a&b" --prod` and `rm "a&b" -rf` (Codex/Antigravity), the sign inside the quotes split the command and the next flag escaped the rule; every rule now sees this spelling too.
334
369
 
335
370
  ## [3.24.0] - 2026-10-25
336
371
 
337
- ### Yeni
338
- - **Öğrenen kurallar.** Hata spec'ine `**Sınıf:**` alanı geldi (boş-girdi, yetki, tarih-saat, yerel-dil… sabit liste). `/fix-bug` aynı sınıfta önceki bir hata spec'i bulursa tekrarı önleyecek tek bir kural önerir: mekanik denetlenebiliyorsa `/hookify` kuralı, değilse `AGENTS.md` → "Öğrenilen kurallar". Sen onaylamadan hiçbir kural dosyası değişmez. "Sonra" dersen pano "Aynı hata sınıfı" uyarısıyla hatırlatır, `/retro` toplar. Cevabın (eklendi / gerek yok) spec'e `**Kural:**` satırı olarak yazılır: uyarı kapanır, aynı karar tekrar sorulmaz. Aynı sınıftan yeni bir hata gelirse kural işe yaramamış demektir, uyarı yeniden açılır.
339
- - Her kuralın sonunda kaynak ve tarih durur (`/wrap-up` ve `/retro`'nun önerdikleri de). `/maintain monthly` 90 günden eski kuralları listeler: tut, güncelle veya sil; bölüm 10 satırı geçince birleştirmeyi önerir.
340
- - Elle uyarla: `AGENTS.md`'nin sonuna "Öğrenilen kurallar" bölümünü kitten kopyala (yoksa `/fix-bug` ilk kuralda açar); `docs/product/specs/_template.md`'ye `**Sınıf:**` ve `**Kural:**` satırlarını ekle.
341
- - **`/start` ve `/adopt` auto memory'yi soruyor** (Claude Code). Önerilen kapalı: projenin hafızası `AGENTS.md`, `progress.md` ve karar günlüğünde; auto memory notları makinede kalır ve kimse gözden geçirmez. Kapalı seçilirse `.claude/settings.json` → `"autoMemoryEnabled": false`.
372
+ ### Added
373
+ - **Learning rules.** A `**Sınıf:**` field was added to the bug spec (empty-input, authorization, date-time, local-language… a fixed list). If `/fix-bug` finds an earlier bug spec in the same class, it suggests a single rule to prevent repetition: a `/hookify` rule if it can be checked mechanically, otherwise `AGENTS.md` → "Öğrenilen kurallar". No rule file changes without your approval. If you say "later", the dashboard reminds you with an "Aynı hata sınıfı" (same bug class) warning and `/retro` collects it. Your answer (added / not needed) is written to the spec as a `**Kural:**` line: the warning closes and the same decision is not asked again. If a new bug of the same class comes, the rule did not work and the warning reopens.
374
+ - Each rule ends with a source and date (also the ones `/wrap-up` and `/retro` suggest). `/maintain monthly` lists rules older than 90 days: keep, update or delete; when the section passes 10 lines it suggests merging.
375
+ - Adapt by hand: copy the "Öğrenilen kurallar" section from the kit to the end of `AGENTS.md` (if missing, `/fix-bug` opens it at the first rule); add the `**Sınıf:**` and `**Kural:**` lines to `docs/product/specs/_template.md`.
376
+ - **`/start` and `/adopt` ask about auto memory** (Claude Code). Recommended off: the project's memory is in `AGENTS.md`, `progress.md` and the decision log; auto memory notes stay on the machine and nobody reviews them. If off is chosen, `.claude/settings.json` → `"autoMemoryEnabled": false`.
342
377
 
343
378
  ## [3.23.1] - 2026-10-25
344
379
 
345
- ### Düzeltilen
346
- - **Kalkan, tırnak içinde `&` veya `|` olan EAS komutunda da soruyor.** `eas update --message "a & b" --channel production` 3.23.0'da onaysız geçiyordu.
380
+ ### Fixed
381
+ - **The shield also asks for an EAS command that has `&` or `|` inside quotes.** `eas update --message "a & b" --channel production` passed without approval in 3.23.0.
347
382
 
348
383
  ## [3.23.0] - 2026-10-25
349
384
 
350
- ### Yeni
351
- - **Dağıtım kurulumu** (`/release first`). Hosting veya alan adı kurulmadıysa sağlayıcı sağlayıcı adım adım rehber: proje, ortam değişkenleri, alan adı ve DNS, yedek ve PITR, geri alma provası. Adımlar `docs/operations/deploy-setup.md`'de: Vercel, Supabase, Railway, EAS; her biri resmî dokümandan, kaynak ve kontrol tarihiyle (2026-10-25). Komut kullanmadan önce kaynak sayfaları yeniden açar, değişen adımı düzeltir.
352
- - Sır değeri sohbete ve dosyaya yazılmaz; değeri sen sağlayıcının panelinde girersin. Prod veritabanı yedeğini kendi terminalinde alırsın (Supabase Free'de rol, şema ve veri için üç komut); geri yükleme provası geçici yerel veritabanında yapılır, dev projesine prod verisi taşınmaz. Prod deploy, geri alma provası ve yedekten geri yükleme senin onayınla başlar.
353
- - **Sır engeli Supabase gizli anahtarını tanıyor** (`sb_secret_…`, en az bir rakam içeren). `sb_publishable_…` ve `sb_secret_your-key` gibi yer tutucular engellenmez; Supabase CLI'nin yerel geliştirme anahtarı da gizli anahtar biçiminde olduğu için engellenir.
385
+ ### Added
386
+ - **Deployment setup** (`/release first`). If hosting or a domain is not set up, a provider-by-provider step-by-step guide: project, environment variables, domain and DNS, backup and PITR, rollback rehearsal. The steps are in `docs/operations/deploy-setup.md`: Vercel, Supabase, Railway, EAS; each from the official docs, with source and check date (2026-10-25). Before using a command, it reopens the source pages and corrects any step that changed.
387
+ - A secret value is not written to the chat or a file; you enter the value in the provider's dashboard. You take the prod database backup in your own terminal (three commands for role, schema and data on Supabase Free); the restore rehearsal is done on a temporary local database, and prod data is not moved to the dev project. Prod deploy, the rollback rehearsal and restoring from backup start with your approval.
388
+ - **The secret block recognizes the Supabase secret key** (`sb_secret_…`, containing at least one digit). Placeholders such as `sb_publishable_…` and `sb_secret_your-key` are not blocked; the Supabase CLI's local development key is also in the secret key format, so it is blocked.
354
389
 
355
- ### Düzeltilen
356
- - **Kalkan EAS'ın prod komutlarını da soruyor**: `eas update` `--channel`/`--environment production` ile, `eas update:rollback`, `eas update:republish`, `eas deploy --prod` ve `npx eas-cli …` yazımı. Önceden sadece `--branch production` soruluyordu.
390
+ ### Fixed
391
+ - **The shield also asks about EAS prod commands**: `eas update` with `--channel`/`--environment production`, `eas update:rollback`, `eas update:republish`, `eas deploy --prod` and the `npx eas-cli …` spelling. Before, only `--branch production` was asked about.
357
392
 
358
393
  ## [3.22.0] - 2026-10-25
359
394
 
360
- ### Değişen
361
- - **Canlı izleme 3 saatte bir** (web-saas ve backend). Saatlik koşu (~3 dk) ayda ~2.160 Actions dakikası tutuyordu; GitHub Free'de özel depoya ayda 2.000 dakika veriliyor (docs.github.com, 2026-10-25). Yeni sıklık ~720 dakika, CI'ya da pay kalıyor.
362
- - Elle uyarla: `.github/workflows/live-monitoring.yml` → `cron: "17 */3 * * *"`.
395
+ ### Changed
396
+ - **Live monitoring every 3 hours** (web-saas and backend). The hourly run (~3 min) took ~2,160 Actions minutes a month; GitHub Free gives 2,000 minutes a month for a private repo (docs.github.com, 2026-10-25). The new frequency is ~720 minutes, leaving a share for CI too.
397
+ - Adapt by hand: `.github/workflows/live-monitoring.yml` → `cron: "17 */3 * * *"`.
363
398
 
364
- ### Yeni
365
- - **Hazır canlı duman testi** (web-saas, `tests/live/smoke.spec.ts`): ana sayfa açılıyor mu, `LIVE_MAX_MS` (Variables, varsayılan 3000) içinde mi, konsolda hata var mı. Yalnız sayfa açar, form doldurmaz. `LIVE_URL` girilince izleme hemen çalışır; önceden test olmadığı için boşuna alarm veriyordu.
366
- - **Backend `/health` yanıt süresi**: `LIVE_MAX_SECONDS` (varsayılan 2) aşılınca alarm. `tests/live/` henüz test içermiyorsa (pytest çıkış 5) alarm yok.
367
- - **Panoda canlı izlemenin son çalışması** (Operasyon → GitHub): başarılı / başarısız / kurulmadı (`LIVE_URL` yok). Bozulunca "dikkat" uyarısı `/fix-bug` önerir.
368
- - Elle uyarla: `tests/live/smoke.spec.ts`'yi kitten kopyala; backend iş akışındaki "Sağlık" ve "Kritik uçlar" adımlarını kittekiyle değiştir.
399
+ ### Added
400
+ - **A ready live smoke test** (web-saas, `tests/live/smoke.spec.ts`): does the home page open, is it within `LIVE_MAX_MS` (Variables, default 3000), is there an error in the console. It only opens a page, fills no form. Once `LIVE_URL` is entered, monitoring works right away; before, with no test, it raised false alarms.
401
+ - **Backend `/health` response time**: an alarm if `LIVE_MAX_SECONDS` (default 2) is exceeded. If `tests/live/` has no tests yet (pytest exit 5), no alarm.
402
+ - **The last run of live monitoring on the dashboard** (Operasyon → GitHub): succeeded / failed / not set up (no `LIVE_URL`). When it breaks, an "attention" warning suggests `/fix-bug`.
403
+ - Adapt by hand: copy `tests/live/smoke.spec.ts` from the kit; replace the "Sağlık" (health) and "Kritik uçlar" (critical endpoints) steps in the backend workflow with the ones in the kit.
369
404
 
370
- ### Belgeler
371
- - **Rehber (`kit/guide.html`) tasarım temizliği.** "Çıkış kapısı" ve not kutularındaki kalın sol şerit yerine ince tam çerçeve; başlık üstündeki etiket (eski sürüm numarasıyla) kaldırıldı, araç bilgisi başlığın altına düz cümle olarak taşındı; etiketlerde satır aralığı kayınca üst üste binmesin diye 1,3. Renkler değişmedi: açık ve koyu temadaki bütün metin/zemin çiftleri WCAG AA'yı geçiyor (en düşük 5,3:1).
405
+ ### Documentation
406
+ - **Guide (`kit/guide.html`) design cleanup.** A thin full border instead of the thick left stripe on the "exit gate" and note boxes; the label above the heading (with the old version number) was removed, and the tool info moved under the heading as a plain sentence; line height of 1.3 in labels so they do not overlap when line spacing shifts. Colors did not change: all text/background pairs in the light and dark themes pass WCAG AA (lowest 5.3:1).
372
407
 
373
408
  ## [3.21.0] - 2026-10-25
374
409
 
375
- ### Yeni
376
- - **Özellik ve hata spec'i, sapma kontrolü.** Spec, `docs/product/specs/<görev>.md`'de mevcut, beklenen ve değişmemesi gereken davranışı yazar (şablon `_template.md`). `/plan-task` yalnız 3 veya daha fazla dosyaya dokunan işte özellik spec'i, `/fix-bug` her hatada birkaç satırlık hata spec'i yazar; küçük işte ek adım yok.
377
- - "Değişmemesi gereken" satırları kabul kriteri kimliğiyle başlar (`- Ö-01.1: ...`). Kapı (`gate.mjs --run`) bu kimliklerin testi yoksa veya kapının kendi koşusunda yazılan test raporunda kırmızıysa kırmızı olur. Eski bir rapor hesaba katılmaz; test komutu JUnit yazmıyorsa yalnız testin varlığı denetlenir ve not düşülür. Bu biçime uymayan kimlikli satırlar da not olarak gösterilir. Sapmayı bir model değil kapı yakalar; `/review-changes` inceleme ajanına spec'i de verir.
378
- - Davranışı bilerek değiştiriyorsan önce spec'i güncelle; geçerliliğini yitiren spec `docs/archive/`'e taşınır.
410
+ ### Added
411
+ - **Feature and bug spec, drift check.** The spec writes the current, expected and must-not-change behavior in `docs/product/specs/<görev>.md` (template `_template.md`). `/plan-task` writes a feature spec only for work touching 3 or more files, and `/fix-bug` writes a few-line bug spec for every bug; there is no extra step for small work.
412
+ - "Must not change" lines start with an acceptance criterion id (`- Ö-01.1: ...`). The gate (`gate.mjs --run`) turns red if these ids have no test, or if the test is red in the test report written during the gate's own run. An old report is not counted; if the test command does not write JUnit, only the existence of the test is checked and a note is left. Lines with an id that do not follow this format are also shown as notes. The gate catches the drift, not a model; `/review-changes` also gives the spec to the review agent.
413
+ - If you change the behavior on purpose, update the spec first; a spec that is no longer valid is moved to `docs/archive/`.
379
414
 
380
- ### Düzeltilen
381
- - **Kabul testi taraması daha çok yığını tanıyor** (pano ve Spec kontrolü): Dart ve Go (`_test.dart`, `_test.go`), Kotlin ve Swift (`…Test.kt`, `…Tests.swift`) ve Jest `__tests__/` klasörü. `build/`, `dist/`, `kit/` yalnız proje kökünde atlanır; `src/features/build/` gibi klasörlerdeki testler artık görülür. `ISO-27.1` gibi adlar kriter kimliği sayılmaz.
415
+ ### Fixed
416
+ - **The acceptance test scan recognizes more stacks** (dashboard and Spec check): Dart and Go (`_test.dart`, `_test.go`), Kotlin and Swift (`…Test.kt`, `…Tests.swift`) and the Jest `__tests__/` folder. `build/`, `dist/`, `kit/` are skipped only at the project root; tests in folders such as `src/features/build/` are now seen. Names such as `ISO-27.1` do not count as a criterion id.
382
417
 
383
418
  ## [3.20.1] - 2026-10-25
384
419
 
385
- ### Düzeltilen
386
- - **Paket kapısı yönlendirmeyi paket sanmıyor.** `npm install zod 2>&1 | tail` gibi komutlarda `2>&1` "kayıt defterinde olmayan paket" sayılıp kurulum engelleniyordu. `> dosya`, `2>/dev/null`, `&> dosya` gibi yönlendirmeler artık argümanlardan ayıklanıyor.
420
+ ### Fixed
421
+ - **The package gate does not take a redirect for a package.** In commands such as `npm install zod 2>&1 | tail`, `2>&1` was counted as a "package not in the registry" and the install was blocked. Redirects such as `> dosya`, `2>/dev/null` and `&> dosya` are now filtered out of the arguments.
387
422
 
388
423
  ## [3.20.0] - 2026-10-25
389
424
 
390
- ### Yeni
391
- - **`/qa`: arayüz kabul kriterleri gerçek tarayıcıda.** Her kriter bir Playwright testi olarak koşar: varsa mevcut `Ö` testi, yoksa `/qa`'nın `tests/e2e/qa/` altına yazdığı test. Yeni testler, test kalsa da ekran görüntüsü alır ve konsol hatasında kırmızı olur. Sunucuyu Playwright'ın `webServer` ayarı açıp kapatır; adres yerel değilse `/qa` durup sorar. Koşu kendi çıktı klasörünü (`test-results-qa/`) kullanır, `test-results/`'taki kabul raporu silinmez.
392
- - Rapor `node .claude/hooks/qa-report.mjs` ile JUnit sonucundan yazılır (`docs/quality/qa/<tarih>.md`): kriter başına geçti / kaldı / koşulmadı, hatanın ilk satırı ve ekran görüntüsü (`.previews/qa-<tarih>/`, git'e girmez). Yani "çalışıyor" demek için arkasında yeşil bir test olmalı. Hiçbir test koşmadıysa rapor yazılmaz.
393
- - Geçen yeni testleri kalıcı kabul testi olarak `tests/e2e/`'ye taşımak raporun sonunda sorulur.
394
- - Pano "Kalite" sekmesinde son QA koşusu kart olarak görünür. `/build` arayüz görevinde `/qa` önerir; canlıya alma listesinde "son /qa raporunda kaldı yok" maddesi var.
395
- - Elle uyarla (web projesi): `.gitignore`'a `tests/e2e/qa/` ve `test-results-qa/` satırlarını, `docs/operations/release-checklist.md`'ye `/qa` maddesini, `docs/architecture/stack.md` → Doğrulama'ya `/qa` satırını ekle.
425
+ ### Added
426
+ - **`/qa`: UI acceptance criteria in a real browser.** Each criterion runs as a Playwright test: the existing `Ö` test if there is one, otherwise a test `/qa` writes under `tests/e2e/qa/`. New tests take a screenshot even when the test stays, and turn red on a console error. Playwright's `webServer` setting starts and stops the server; if the address is not local, `/qa` stops and asks. The run uses its own output folder (`test-results-qa/`); the acceptance report in `test-results/` is not deleted.
427
+ - The report is written from the JUnit result with `node .claude/hooks/qa-report.mjs` (`docs/quality/qa/<tarih>.md`): per criterion passed / failed / not run, the first line of the error and a screenshot (`.previews/qa-<tarih>/`, does not go into git). So to say "it works", a green test must stand behind it. If no test ran, no report is written.
428
+ - At the end of the report you are asked whether to move the new passing tests to `tests/e2e/` as permanent acceptance tests.
429
+ - The last QA run shows as a card in the dashboard "Kalite" (Quality) tab. `/build` suggests `/qa` on a UI task; the go-live list has an item "no failures in the last /qa report".
430
+ - Adapt by hand (web project): add the lines `tests/e2e/qa/` and `test-results-qa/` to `.gitignore`, the `/qa` item to `docs/operations/release-checklist.md`, and a `/qa` line to `docs/architecture/stack.md` → Doğrulama (verification).
396
431
 
397
432
  ## [3.19.1] - 2026-10-25
398
433
 
399
- ### Güvenlik
400
- - **Playwright CLI komutları artık sorulur** (web-saas). `npx -y @playwright/cli@0.1.22 open`, `snapshot`, `console`, `requests` ve `screenshot` izin listesinden çıktı. Bu araç proje klasöründe çalışınca depodaki `.playwright/cli.config.json` dosyasını okur, o dosya da tarayıcı yerine başka bir programı çalıştırabilir. Güvenilmeyen bir depoda bu komutlar sorulmadan çalışmamalı. Yeni projelerde kurallar "sor" listesinde. `/kit-update` mevcut projelerdeki eski izin satırlarını kaldırır, komut her seferinde sorulur. Ekran görüntüsü için `preview.mjs` sormadan çalışmaya devam eder, çünkü aracı geçici bir klasörde çalıştırır.
434
+ ### Security
435
+ - **Playwright CLI commands are now asked about** (web-saas). `npx -y @playwright/cli@0.1.22 open`, `snapshot`, `console`, `requests` and `screenshot` left the permission list. When this tool runs in the project folder it reads the `.playwright/cli.config.json` file in the repo, and that file can run another program instead of the browser. In an untrusted repo these commands must not run without asking. In new projects the rules are in the "ask" list. `/kit-update` removes the old permission lines in existing projects; the command is asked about every time. For screenshots `preview.mjs` keeps running without asking, because it runs the tool in a temporary folder.
401
436
 
402
437
  ## [3.19.0] - 2026-10-25
403
438
 
404
- ### Yeni
405
- - **Canlı önizleme** (`.claude/hooks/preview.mjs`). `/build` arayüz görevinde dev sunucuyu açar, adres yanıt verene kadar bekler, Playwright CLI ile masaüstü (1440) ve mobil (390) ekran görüntüsü alır, `.previews/<görev>/`'e yazar ve sunucuyu alt süreçleriyle birlikte kapatır. Zaten açık bir sunucu varsa onu kullanır ve kapatmaz. Mobil (Expo) projede adım atlanır, ekranı telefonda kontrol etmek istenir. Pano önizlemeler listesinde ekran görüntülerini de gösterir.
406
- - Elle uyarla: `AGENTS.md` → Komutlar'a `önizleme:` satırı ekle (örnek: `önizleme: http://localhost:3000`). Adres yalnız yerel olabilir (localhost, 127.0.0.1, [::1]).
407
- - Tarayıcı aracı proje klasöründe değil geçici bir klasörde çalışır; depodan gelen bir Playwright ayar dosyası veya `.npmrc` kullanılmaz.
408
- - **Anlama kontrolü** (anlatıcı mod). `/build` ve `/fix-bug` raporundan sonra değişikliğin nedeni üzerine en fazla 2 seçenekli soru gelir; cevaplamak zorunlu değil. Cevaplar `docs/workflow/learning.md`'ye yazılır, pano "Ürün ve teknik" sekmesinde doğru/yanlış sayısını ve sık yanılan kavramları gösterir. Anlatıcı mod kapalıyken soru yok.
409
- - Elle uyarla: anlatıcı mod dosyası projeye aittir, güncelleme ona dokunmaz. Kullanıyorsan kitteki `.claude/output-styles/anlatici.md` → "Görev sonunda anlama kontrolü" bölümünü kendi dosyana kopyala.
439
+ ### Added
440
+ - **Live preview** (`.claude/hooks/preview.mjs`). On a UI task `/build` starts the dev server, waits until the address responds, takes a desktop (1440) and a mobile (390) screenshot with the Playwright CLI, writes them to `.previews/<görev>/` and shuts the server down together with its child processes. If a server is already open it uses it and does not close it. In a mobile (Expo) project the step is skipped and you are asked to check the screen on a phone. The dashboard also shows the screenshots in the previews list.
441
+ - Adapt by hand: add a `önizleme:` line to `AGENTS.md` → Komutlar (example: `önizleme: http://localhost:3000`). The address can only be local (localhost, 127.0.0.1, [::1]).
442
+ - The browser tool runs in a temporary folder, not in the project folder; a Playwright config file or `.npmrc` coming from the repo is not used.
443
+ - **Comprehension check** (narrator mode). After the `/build` and `/fix-bug` report, a question with at most 2 options comes about why the change was made; answering is not required. Answers are written to `docs/workflow/learning.md`, and the dashboard "Ürün ve teknik" tab shows the right/wrong counts and the concepts often missed. There is no question when narrator mode is off.
444
+ - Adapt by hand: the narrator mode file belongs to the project, and the update does not touch it. If you use it, copy the "Görev sonunda anlama kontrolü" (comprehension check at task end) section from `.claude/output-styles/anlatici.md` in the kit into your own file.
410
445
 
411
- ### Değişen
412
- - **Kapı komut onayı `geliştirme:` ve `önizleme:` satırlarını da kapsıyor.** Önizleme onaysız bir komutu çalıştırmaz, onaysız bir adresi açmaz. Bu iki satırdan biri her değiştiğinde (güncellemeden sonraki ilk kapı dahil) komut onayı yeniden istenir.
446
+ ### Changed
447
+ - **The gate command approval also covers the `geliştirme:` and `önizleme:` lines.** The preview does not run an unapproved command and does not open an unapproved address. Whenever one of these two lines changes (including the first gate after an update), command approval is asked again.
413
448
 
414
449
  ## [3.18.3] - 2026-10-25
415
450
 
416
- ### Düzeltilen
417
- - **`/fix-bug` kapıyı çalıştırıyor.** Testler yeşile döndükten sonra akış `gate.mjs --run` ile lint, tip kontrolü, test ve Semgrep'i çalıştırıyor; komut onayı gerekirse komutları gösterip soruyor. Önceden bu adım yalnız `/build`'de vardı.
451
+ ### Fixed
452
+ - **`/fix-bug` runs the gate.** After the tests turn green, the flow runs lint, type check, tests and Semgrep with `gate.mjs --run`; if command approval is needed, it shows the commands and asks. Before, this step existed only in `/build`.
418
453
 
419
- ### Belgeler
420
- - **Değerlendirmenin ikinci ölçümü** (Sonnet, 6 görev, her koşulda 24 koşu): iki koşul da bütün gizli testleri geçti. Kitin yazdığı testler koda bilerek eklenen hataların %63'ünü yakaladı, kitsiz koşununkiler %31'ini. Kit her koşuda testi koddan önce yazdı. Bedeli yaklaşık 2 kat maliyet ve 1,8 kat süre. `/fix-bug` akışında kapının (`gate.mjs --run`) çalışmadığı görüldü. Ayrıntı: `kit/eval/results/2026-10-25-v3.18.2-sonnet-ozet.md`.
454
+ ### Documentation
455
+ - **Second measurement of the evaluation** (Sonnet, 6 tasks, 24 runs per condition): both conditions passed all hidden tests. The tests the kit wrote caught 63% of the bugs deliberately added to the code, those of the run without the kit 31%. The kit wrote the test before the code in every run. The cost is about 2 times the cost and 1.8 times the time. It was seen that the gate (`gate.mjs --run`) did not run in the `/fix-bug` flow. Details: `kit/eval/results/2026-10-25-v3.18.2-sonnet-ozet.md`.
421
456
 
422
457
  ## [3.18.2] - 2026-10-25
423
458
 
424
- ### Düzeltilen
425
- - **Değerlendirme, iki ölçüm hatası.** Her ikisi de doğru yazılmış kodu cezalandırıyordu:
426
- - `trash`: Saati dışarıdan alan bir uygulama (`createStore(now = Date.now)`), 30 gün testinden haksız yere kalıyordu. Test tarihi uygulama yüklendikten sonra taklit ediyordu. Artık taklit uygulama yüklenmeden başlıyor.
427
- - Referans çözümler aynı milisaniyede oluşan notları en yeni önce sıralamıyordu. Ajanın bunu sınayan makul testi referans çözümde kırmızı kalıyor ve mutant ölçümünden düşüyordu; `bug-sort`'ta iki koşul da 0/2 çıkmıştı. Referans çözümler ve mutantlar düzeltildi.
428
- - Sonuç dosyası her koşunun kod yamasını da tutuyor (`src`, `tests`, `package.json`). Böylece düzenekte ileride yapılacak bir düzeltme, ajanlar yeniden koşmadan puanlanabilir.
459
+ ### Fixed
460
+ - **Evaluation, two measurement errors.** Both penalized correctly written code:
461
+ - `trash`: An app that takes the clock from outside (`createStore(now = Date.now)`) failed the 30-day test unfairly. The test mocked the date after the app was loaded. Now the mock starts before the app is loaded.
462
+ - The reference solutions did not sort notes created in the same millisecond newest first. The agent's reasonable test for this stayed red on the reference solution and dropped out of the mutant measurement; in `bug-sort` both conditions came out 0/2. The reference solutions and mutants were fixed.
463
+ - The result file also keeps the code patch of each run (`src`, `tests`, `package.json`). So a fix made to the setup later can be scored without the agents running again.
429
464
 
430
465
  ## [3.18.1] - 2026-10-25
431
466
 
432
- ### Düzeltilen
433
- - **Değerlendirme düzeneği:**
434
- - Plan limiti dolunca düzenek kalan koşuları boşuna denemiyor. Duruyor, biten koşuları yazıyor ve hangi görevlerin kaldığını söylüyor (çıkış kodu 2).
435
- - Sonuç dosyası adı saniyeye kadar gidiyor. Aynı dakikada biten görevler artık birbirinin dosyasını ezmiyor.
467
+ ### Fixed
468
+ - **Evaluation setup:**
469
+ - When the plan limit is full the setup does not try the remaining runs for nothing. It stops, writes the finished runs and says which tasks are left (exit code 2).
470
+ - The result file name goes down to the second. Tasks finishing in the same minute no longer overwrite each other's file.
436
471
 
437
472
  ## [3.18.0] - 2026-10-25
438
473
 
439
- ### Yeni
440
- - **Değerlendirmede zor görevler** (`kit/eval/`, kiti geliştirenler için; projelere kopyalanmaz). Üç yeni görev eklendi:
441
- - `trash` (örtük gereksinim): çöp kutusu ve 30 gün içinde geri alma.
442
- - `paging` (çok adımlı sözleşme): sayfalama; eski istemci bozulmamalı.
443
- - `tr-sort` (tuzak): Türkçe alfabetik sıralama ve büyük/küçük harf duyarsız arama.
444
- - **Mutant ölçümü:** Her görevin iki mutantı var: referans çözümün tek bir hata eklenmiş kopyaları. Rapor, ajanın testlerinin bu hatalardan kaçını yakaladığını gösterir.
445
- - **Tekrar:** `--repeat N` her hücreyi N kez koşar. Rapor görev × koşul özetiyle başlar: gizli test ortalaması, en düşük ve en yüksek değer, öldürülen mutant, maliyet ve süre.
474
+ ### Added
475
+ - **Hard tasks in the evaluation** (`kit/eval/`, for people developing the kit; not copied to projects). Three new tasks were added:
476
+ - `trash` (implicit requirement): a trash bin and restore within 30 days.
477
+ - `paging` (multi-step contract): paging; the old client must not break.
478
+ - `tr-sort` (trap): Turkish alphabetical sorting and case-insensitive search.
479
+ - **Mutant measurement:** Each task has two mutants: copies of the reference solution with a single bug added. The report shows how many of these bugs the agent's tests caught.
480
+ - **Repeat:** `--repeat N` runs each cell N times. The report starts with a task × condition summary: hidden test average, lowest and highest value, killed mutants, cost and time.
446
481
 
447
482
  ## [3.17.0] - 2026-10-25
448
483
 
449
- ### Kaldırılan
450
- - **3.15.0 öncesinin Türkçe bayrakları artık çalışmıyor:** `--onayla`, `--evet`, `--sessiz`, `--kur`, `--plan-kaydet`, `--plan-ekle`, `--plan-bitir`, `--ac`, `--kapat`, `--gerekli`, `--olc`. Yerlerine `--approve`, `--yes`, `--quiet`, `--install`, `--plan-save`, `--plan-add`, `--plan-end`, `--enable`, `--disable`, `--required` ve `--measure` geçti. Eski bayraklar çoğunlukla kullanım mesajıyla hata verir. İki istisna var: `plugins-sync.mjs --kur` artık kurulum yapmaz, yalnızca listeler; `dashboard.mjs --sessiz` yok sayılır. Kapsam kalkanında (`freeze-guard.mjs`) bilinmeyen bayrak artık sessizce geçmiyor, hata veriyor; böylece AI planın kaydedildiğini sanmaz.
451
- - 3.15.0 öncesinin durum dosyası anahtarları (Türkçe JSON anahtarları) ve `~/.vibe-kit/kapi-onayi/` klasörü artık okunmuyor. Eski biçimli limit ve bağlam dosyası "bilinmiyor" sayılır; durum çubuğu ilk yanıttan sonra yenisini yazar.
452
- - `/kit-update`, kitin eski bayraklar için eklediği 8 izin satırını projenin `.claude/settings.json` dosyasından siler: 5'i allow'da, 3'ü ask'te. Silinenleri raporda listeler. Yalnız tam eşleşen satırlar silinir; senin yazdığın satırlara dokunulmaz.
484
+ ### Removed
485
+ - **The Turkish flags from before 3.15.0 no longer work:** `--onayla`, `--evet`, `--sessiz`, `--kur`, `--plan-kaydet`, `--plan-ekle`, `--plan-bitir`, `--ac`, `--kapat`, `--gerekli`, `--olc`. They were replaced by `--approve`, `--yes`, `--quiet`, `--install`, `--plan-save`, `--plan-add`, `--plan-end`, `--enable`, `--disable`, `--required` and `--measure`. Old flags mostly fail with a usage message. There are two exceptions: `plugins-sync.mjs --kur` no longer installs, it only lists; `dashboard.mjs --sessiz` is ignored. In the scope shield (`freeze-guard.mjs`) an unknown flag no longer passes silently, it gives an error; so the AI does not think the plan was saved.
486
+ - The state file keys from before 3.15.0 (Turkish JSON keys) and the `~/.vibe-kit/kapi-onayi/` folder are no longer read. An old-format limit and context file counts as "unknown"; the status line writes a new one after the first reply.
487
+ - `/kit-update` deletes the 8 permission lines the kit added for the old flags from the project's `.claude/settings.json`: 5 in allow, 3 in ask. It lists what it deleted in the report. Only exactly matching lines are deleted; lines you wrote are not touched.
453
488
 
454
- - Kullanılmayan `.claude/.hatirlatma.json` kitten çıktı (yerini 3.x'te `.claude/state/reminder.json` almıştı). Yeni projelere artık kopyalanmaz.
489
+ - The unused `.claude/.hatirlatma.json` left the kit (it was replaced in 3.x by `.claude/state/reminder.json`). It is no longer copied to new projects.
455
490
 
456
- ### Elle uyarla
457
- - Projende `.claude/.hatirlatma.json` varsa silebilirsin; `/kit-update` onu "kitten kaldırılmış" diye listeler.
458
- - Kapı komut onayını 3.15.0'dan önce verdiysen ve o günden beri yenilemediysen bir kez daha onayla: `node .claude/hooks/gate.mjs --approve`. Kapı onaysız komut çalıştırmaz, bunu sana söyler.
459
- - Kendi betiklerinde veya notlarında eski bayraklardan biri geçiyorsa yenisiyle değiştir.
460
- - 3.15.0'dan önce açılıp hâlâ açık duran bir kapsam kalkanı planı varsa artık okunmaz. Planı `--plan-save` ile yeniden kaydet.
491
+ ### Adapt by hand
492
+ - If your project has `.claude/.hatirlatma.json` you can delete it; `/kit-update` lists it as "removed from the kit".
493
+ - If you gave the gate command approval before 3.15.0 and have not renewed it since, approve once more: `node .claude/hooks/gate.mjs --approve`. The gate does not run an unapproved command and tells you so.
494
+ - If one of the old flags appears in your own scripts or notes, replace it with the new one.
495
+ - If a scope shield plan opened before 3.15.0 is still open, it is no longer read. Save the plan again with `--plan-save`.
461
496
 
462
497
  ## [3.16.3] - 2026-10-25
463
498
 
464
- ### Düzeltilen
465
- - **Değerlendirme düzeneği** (`kit/eval/`, kiti geliştirenler için; projelere kopyalanmaz):
466
- - Boş hata çıktısında hata kayboluyordu; artık çıkış kodu yazılır. Gizli testlerden hiçbiri çalışmazsa (0/0) satır hata sayılır.
467
- - Değişiklik başlangıç commit'ine göre ölçülür: ajan commit atsa da sayılır.
468
- - Test özeti her Node sürümünde aynı biçimde okunur (`--test-reporter=spec`).
469
- - Koşu başına 2 dolar üst sınır var. `claude` bulunamazsa düzenek çökmez. Bir görev ya da temizliği çökerse diğerleri sürer. Her görev bitince geçici klasöre ara sonuç yazılır.
470
- - Her koşul boş bir `PORT` alır. Koşu bitince o porttan dinleyen süreç kapanır (IPv4 ve IPv6) ve kapı onay kaydı silinir. Port önceden dolu olsaydı kullanıcının süreci kapanabilirdi; artık önce boş olduğu denetleniyor.
471
- - Sonuç dosyasının adında saat var, aynı gün ikinci koşu ilkini ezmez. Rapor Claude Code ve Node sürümünü ve koşul başına yüklenen eklentileri yazar. Hata ve özet metinlerinde geçici klasör ve kullanıcı klasörü maskelenir.
472
- - İzinler daraldı. Okuma ve yazma koşu klasöründe kalır. Bash'te test, başlatma, proje ve kit betikleri ile salt okunur git çalışır. `..`, `git --output`, `npm --prefix` ve `node -e` gibi klasör dışına çıkış yolları yasak. İki koşulda da `.git/` ve `.claude/` düzenlenemez. Bu bir güvenlik sınırı değildir; README bunu anlatıyor.
473
- - **Görevler:** `security-owner` metni 401'i açıkça söyler, test yanıtta `owner` alanı aramaz. `bug-sort` metni istemcinin `createdAt` gönderebileceğini söyler. `feature-tags` testi `/tags`'te eşitlikte alfabetik sırayı da sınar. Her görevin referans çözümü var; gizli testlerin onunla yeşile döndüğü testle denetlenir.
474
-
475
- ### Yeni
476
- - **Ölçüm:** Rapora üç yeni sütun eklendi:
477
- - "Hatayı yakalayan test": ajanın kodunda geçen ama değiştirilmemiş kodda geçmeyen test. Bozuk test sayılmaz.
478
- - "Önce test": transkriptten, test dosyası koddan önce mi yazıldı.
479
- - "Kapı çalıştı mı".
480
- - `--keep` transkripti koşu klasörüne bırakır.
499
+ ### Fixed
500
+ - **Evaluation setup** (`kit/eval/`, for people developing the kit; not copied to projects):
501
+ - With an empty error output the error was lost; now the exit code is written. If none of the hidden tests run (0/0), the row counts as an error.
502
+ - The change is measured against the starting commit: it counts even if the agent commits.
503
+ - The test summary is read in the same format on every Node version (`--test-reporter=spec`).
504
+ - There is a 2 dollar cap per run. If `claude` is not found the setup does not crash. If one task or its cleanup crashes, the others continue. When each task finishes, an interim result is written to the temporary folder.
505
+ - Each condition gets a free `PORT`. When the run ends, the process listening on that port is closed (IPv4 and IPv6) and the gate approval record is deleted. If the port had been in use beforehand, the user's process could have been closed; now it is first checked that it is free.
506
+ - The result file name has the time in it, so a second run on the same day does not overwrite the first. The report writes the Claude Code and Node versions and the plugins loaded per condition. In error and summary texts the temporary folder and the user folder are masked.
507
+ - Permissions were narrowed. Reading and writing stay in the run folder. In Bash, tests, startup, project and kit scripts and read-only git work. Ways out of the folder such as `..`, `git --output`, `npm --prefix` and `node -e` are forbidden. In both conditions `.git/` and `.claude/` cannot be edited. This is not a security boundary; the README explains it.
508
+ - **Tasks:** The `security-owner` text states 401 explicitly, and the test does not look for an `owner` field in the response. The `bug-sort` text says the client may send `createdAt`. The `feature-tags` test also checks alphabetical order on ties in `/tags`. Each task has a reference solution; a test checks that the hidden tests turn green with it.
509
+
510
+ ### Added
511
+ - **Measurement:** Three new columns were added to the report:
512
+ - "Bug-catching test": a test that passes on the agent's code but not on the unchanged code. A broken test does not count.
513
+ - "Test first": from the transcript, was the test file written before the code.
514
+ - "Did the gate run".
515
+ - `--keep` leaves the transcript in the run folder.
481
516
 
482
517
  ## [3.16.2] - 2026-10-25
483
518
 
484
- ### Düzeltilen
485
- - **Güvenlik:** Kit yerel bir klasörden kurulunca (`init`, `install`) git'in yok saydığı kişisel dosyalar ve sırlar projeye kopyalanıyordu: `.env`, `.env.local`, `secrets/`, `.claude/settings.local.json`, `.claude/state/`, `*.log`. Artık hiçbir seviyede kopyalanmıyor. `.env.example` kopyalanmaya devam ediyor. GitHub'dan klonlanan kitte bu dosyalar olmadığı için sadece kitin yerel kopyasından kurulumlar etkilendi.
486
- - **Elle uyarla:** Kiti yerel bir kopyadan kurduysan projede bu dosyalar var mı bak (`.claude/settings.local.json` başkasının izinleri, `.env` başkasının sırları olabilir). Varsa sil; sırlar varsa değiştir.
487
- - 3.16.1'deki ilk değerlendirme ölçümü bu hatadan etkilendi (kitli koşu kişisel izin listesini devraldı). Sonuç dosyasında not var, ölçüm yeniden koşulacak.
519
+ ### Fixed
520
+ - **Security:** When the kit was installed from a local folder (`init`, `install`), personal files and secrets that git ignores were copied into the project: `.env`, `.env.local`, `secrets/`, `.claude/settings.local.json`, `.claude/state/`, `*.log`. They are now not copied at any level. `.env.example` is still copied. Since these files are not in a kit cloned from GitHub, only installs from a local copy of the kit were affected.
521
+ - **Adapt by hand:** If you installed the kit from a local copy, check whether these files are in the project (`.claude/settings.local.json` may hold someone else's permissions, `.env` someone else's secrets). If so, delete them; if there are secrets, change them.
522
+ - The first evaluation measurement in 3.16.1 was affected by this bug (the run with the kit took over a personal permission list). There is a note in the result file; the measurement will be run again.
488
523
 
489
524
  ## [3.16.1] - 2026-10-24
490
525
 
491
- ### Yeni
492
- - **Kit değerlendirmesi** (`kit/eval/`): Aynı görevi kitli ve kitsiz çalıştırıp gizli testlerle puanlar: kabul ve saldırgan testleri, regresyon, eklenen test, maliyet, süre, token. İçinde küçük bir not API'si ve üç görev var (hata, 3+ dosyalık özellik, IDOR). Çalıştırmak: `node kit/eval/run.mjs`. Kiti geliştirenler içindir, projelere kopyalanmaz.
493
- - İlk ölçüm (Sonnet, n=1): iki koşul da gizli testlerin hepsini geçti. Kit testi koddan önce yazdı ve 11 test ekledi, kitsiz 3 test ekledi. Kitin bedeli ~2,3 kat maliyet ve ~1,7 kat süre. Sonuç: `kit/eval/results/2026-10-24-v3.16.0-sonnet.md`.
526
+ ### Added
527
+ - **Kit evaluation** (`kit/eval/`): Runs the same task with and without the kit and scores it with hidden tests: acceptance and adversarial tests, regression, added tests, cost, time, tokens. It contains a small notes API and three tasks (a bug, a feature of 3+ files, IDOR). To run: `node kit/eval/run.mjs`. It is for people developing the kit and is not copied to projects.
528
+ - First measurement (Sonnet, n=1): both conditions passed all the hidden tests. The kit wrote the test before the code and added 11 tests, the run without the kit added 3 tests. The cost of the kit is ~2.3 times the cost and ~1.7 times the time. Result: `kit/eval/results/2026-10-24-v3.16.0-sonnet.md`.
494
529
 
495
530
  ## [3.16.0] - 2026-10-24
496
531
 
497
- ### Yeni
498
- - **Hafif komut listesi:** Komut açıklamaları her oturumda skill listesine giriyordu (~1.600 token) ve 200K bağlamda liste taşıyordu. Hafif ve Standart profilde artık 18 seyrek komut (`/findings-*`, `/board`, `/retro`, `/rollback` gibi) listede sadece adıyla durur: `/` menüsünde görünür, adıyla çağrılır, açıklaması bağlama girmez. Her oturum ~1.100 token daha az. Açıklamasıyla kalan 10 komut: `/start`, `/adopt`, `/build`, `/fix-bug`, `/plan-task`, `/design`, `/tools`, `/review-changes`, `/wrap-up`, `/release`.
499
- - **Tam profil:** `/tools komutlar tam` (`node .claude/hooks/tools.mjs --commands full`) bütün açıklamaları geri getirir; `komutlar hafif` geri alır. Ayar `.claude/settings.json` → `skillOverrides`'ta, ekibin hepsi için geçerli; kendi değerlerin korunur. Codex ve Antigravity'de etkisi yoktur.
500
- - `/kit-update`, `skillOverrides` anahtarı olmayan projeye hafif listeyi ekler ve raporda yazar.
501
- - **Elle uyarla:** Projen Tam profildeyse güncellemeden sonra `/tools komutlar tam` çalıştır; yoksa seyrek komutların açıklaması listeden çıkar. Pano bu durumda uyarır.
532
+ ### Added
533
+ - **Light command list:** Command descriptions entered the skill list in every session (~1,600 tokens) and overflowed the list in a 200K context. In the Light and Standard profiles, 18 rarely used commands (such as `/findings-*`, `/board`, `/retro`, `/rollback`) now show only their name in the list: they appear in the `/` menu and run by name, but their descriptions stay out of the context. Each session uses ~1,100 fewer tokens. The 10 commands that keep their descriptions: `/start`, `/adopt`, `/build`, `/fix-bug`, `/plan-task`, `/design`, `/tools`, `/review-changes`, `/wrap-up`, `/release`.
534
+ - **Full profile:** `/tools komutlar tam` (`node .claude/hooks/tools.mjs --commands full`) brings back all descriptions; `komutlar hafif` reverts. The setting lives in `.claude/settings.json` → `skillOverrides` and applies to the whole team; your own values are kept. It has no effect in Codex and Antigravity.
535
+ - `/kit-update` adds the light list to a project that has no `skillOverrides` key and says so in the report.
536
+ - **Adapt by hand:** If your project uses the Full profile, run `/tools komutlar tam` after the update; otherwise the descriptions of the rarely used commands drop out of the list. The dashboard warns in this case.
502
537
 
503
- ### Değişen
504
- - Eski bayraklar ve eski durum anahtarları bir sürüm daha (3.17.0'a kadar) çalışır.
538
+ ### Changed
539
+ - Old flags and old state keys keep working for one more release (until 3.17.0).
505
540
 
506
541
  ## [3.15.1] - 2026-10-24
507
542
 
508
- ### Değişen
509
- - **Daha az bağlam:** `AGENTS.md`'deki "Codex ve Antigravity'de" bölümü yalnız bu araçlardan biri seçiliyse dolu kurulur. Sadece Claude Code kullanan projede her oturum ~450 token (AGENTS.md'nin ~%20'si) daha az yüklenir. Sonradan `--tool codex` veya `--tool antigravity` eklenince bölüm geri gelir. Bölümü değiştirdiysen kit ona dokunmaz.
510
- - **Elle uyarla:** Kurulu projelerin `AGENTS.md`'si değişmez (proje dosyası). Aynı kazancı istersen, Codex/Antigravity kullanmıyorsan bu bölümü silebilirsin.
543
+ ### Changed
544
+ - **Less context:** The "In Codex and Antigravity" section of `AGENTS.md` is filled in only when one of those tools is selected. A project that uses only Claude Code loads ~450 fewer tokens per session (~20% of AGENTS.md). Adding `--tool codex` or `--tool antigravity` later brings the section back. If you edited the section, the kit leaves it alone.
545
+ - **Adapt by hand:** `AGENTS.md` in installed projects does not change (it is a project file). For the same saving, delete this section if you do not use Codex/Antigravity.
511
546
 
512
547
  ## [3.15.0] - 2026-10-24
513
548
 
514
- Kitin kodu İngilizceye geçti. Kullanıcıya ve AI'ya giden mesajlar, belgeler ve komutlar Türkçe kalıyor; davranış değişmedi.
549
+ The kit's code moved to English. Messages to the user and the AI, documents and commands stay in Turkish; behavior did not change.
515
550
 
516
- ### Değişen
517
- - **Kod İngilizce:** Hook'ların, `kit.mjs`'in, şablon betiklerinin ve testlerin adları ve yorumları İngilizce. `.claude/hooks/arac.mjs` artık `shared.mjs`.
518
- - **Yeni bayraklar:**
519
- - `freeze-guard.mjs`: `--plan-save`, `--plan-add`, `--plan-end` (eskiden `--plan-kaydet`, `--plan-ekle`, `--plan-bitir`)
520
- - `gate.mjs`: `--approve` (eskiden `--onayla`)
521
- - `tools.mjs`: `--enable`, `--disable`, `--required`, `--measure` (eskiden `--ac`, `--kapat`, `--gerekli`, `--olc`)
522
- - `plugins-sync.mjs`: `--install` (eskiden `--kur`)
523
- - `checkpoint.mjs`: `--restore <hedef> --yes` (eskiden `--evet`)
524
- - `dashboard.mjs`: `--quiet` (eskiden `--sessiz`)
551
+ ### Changed
552
+ - **Code in English:** Names and comments in the hooks, `kit.mjs`, template scripts and tests are in English. `.claude/hooks/arac.mjs` is now `shared.mjs`.
553
+ - **New flags:**
554
+ - `freeze-guard.mjs`: `--plan-save`, `--plan-add`, `--plan-end` (formerly `--plan-kaydet`, `--plan-ekle`, `--plan-bitir`)
555
+ - `gate.mjs`: `--approve` (formerly `--onayla`)
556
+ - `tools.mjs`: `--enable`, `--disable`, `--required`, `--measure` (formerly `--ac`, `--kapat`, `--gerekli`, `--olc`)
557
+ - `plugins-sync.mjs`: `--install` (formerly `--kur`)
558
+ - `checkpoint.mjs`: `--restore <hedef> --yes` (formerly `--evet`)
559
+ - `dashboard.mjs`: `--quiet` (formerly `--sessiz`)
525
560
 
526
- Eski bayraklar 3.16.0'a kadar çalışır ve kullanılınca uyarı yazar. Onay isteyen eski bayraklar (`--plan-ekle`, `--onayla`, `--ac`) yine sorulur.
527
- - **Durum dosyaları:** `.claude/state/` altındaki dosyaların anahtarları İngilizce. Eski anahtarlı dosyalar 3.16.0'a kadar okunur. Kapı komut onayı artık `~/.vibe-kit/gate-approval/` altında; eski `kapi-onayi/` klasöründeki onay da geçerli sayılır.
528
- - **Güncelleme izin kurallarını ekler:** `/kit-update`, kitin `settings.json` izin satırlarından projede eksik olanları ekler; projenin kendi satırları kalır. Stop hook'undaki `dashboard.mjs --sessiz` satırı `--quiet` olur, pano ve bildirim iki kez çalışmaz.
529
- - **RLS şablonu:** `tests/security/rls.mjs` içinde `TABLOLAR` yerine `TABLES`, `HERKESE_ACIK` yerine `PUBLIC_TABLES`; tablo kaydı `{ name, owner, sample, key }`. Kurulu projelerin kendi `rls.mjs` dosyası değişmez.
561
+ Old flags work until 3.16.0 and print a warning when used. Old flags that ask for approval (`--plan-ekle`, `--onayla`, `--ac`) still ask.
562
+ - **State files:** Keys in the files under `.claude/state/` are in English. Files with old keys are read until 3.16.0. The gate command approval now lives under `~/.vibe-kit/gate-approval/`; an approval in the old `kapi-onayi/` folder is still honored.
563
+ - **Update adds permission rules:** `/kit-update` adds the kit's `settings.json` permission lines that the project lacks; the project's own lines stay. The `dashboard.mjs --sessiz` line in the Stop hook becomes `--quiet`, so the dashboard and notification do not run twice.
564
+ - **RLS template:** In `tests/security/rls.mjs`, `TABLOLAR` became `TABLES` and `HERKESE_ACIK` became `PUBLIC_TABLES`; a table entry is `{ name, owner, sample, key }`. The `rls.mjs` file of installed projects does not change.
530
565
 
531
- ### Düzeltilen
532
- - `kit.mjs init` kişisel `CLAUDE.local.md` dosyasını projeye kopyalamaz (yerel bir klasörden kurulumda taşınıyordu).
566
+ ### Fixed
567
+ - `kit.mjs init` no longer copies the personal `CLAUDE.local.md` file into the project (it was carried over when installing from a local folder).
533
568
 
534
- ### Elle uyarla
535
- - `.claude/hooks/arac.mjs` kitten kaldırıldı. Güncelleme raporunda "Kitten kaldırılmış" altında görünür; silebilirsin. Kendi betiğin bu dosyadan içe aktarıyorsa `shared.mjs` ve yeni adları kullan.
536
- - Kendi `rls.mjs` dosyanı yeni şablona geçirmek istersen tablo kayıtlarındaki alanları yeniden adlandır (`ad` → `name`, `sahip` → `owner`, `ornek` → `sample`, `anahtar` → `key`).
569
+ ### Adapt by hand
570
+ - `.claude/hooks/arac.mjs` was removed from the kit. It shows up under "Kitten kaldırılmış" (removed from the kit) in the update report; you can delete it. If your own script imports from this file, use `shared.mjs` and the new names.
571
+ - To move your own `rls.mjs` to the new template, rename the fields in the table entries (`ad` → `name`, `sahip` → `owner`, `ornek` → `sample`, `anahtar` → `key`).
537
572
 
538
573
  ## [3.14.4] - 2026-10-24
539
574
 
540
- ### Değişen
541
- - **Onay kaydı glob ve bağla da korunur:** Kabuk hedefi onay klasörünü (`~/.vibe-kit/`) içeren bir klasöre çözülürse (`rm ~/.v*/…`) ya da bağ üzerinden gerçek yolu oraya çıkarsa sorulur.
542
- - **Cihaz yolları:** `\\?\` ve `\\.\` yalnız sürücü harfinden önce düşer, `\\?\UNC\…` normal UNC sayılır; `\\?\GLOBALROOT\…` gibi diğer biçimler "doğrulanamadı" sayılır.
575
+ ### Changed
576
+ - **The approval record is also protected against globs and links:** The shell asks when its target resolves to a folder that contains the approval folder (`~/.vibe-kit/`) (`rm ~/.v*/…`), or when a link leads the real path there.
577
+ - **Device paths:** `\\?\` and `\\.\` are stripped only before a drive letter, `\\?\UNC\…` counts as a normal UNC path; other forms such as `\\?\GLOBALROOT\…` count as "could not be verified".
543
578
 
544
579
  ## [3.14.3] - 2026-10-24
545
580
 
546
- Commit sonrası otomatik güvenlik incelemesinin üç bulgusu.
581
+ Three findings from the automatic post-commit security review.
547
582
 
548
- ### Değişen
549
- - **Kapı komut onayı kullanıcı klasöründe:** Onay artık `.git/` yerine `~/.vibe-kit/kapi-onayi/<proje yolu özeti>.json`'da durur. Ev klasörü işletim sisteminden okunur, `HOME`/`USERPROFILE` ile yönlendirilemez. `.git` içeren zip/arşiv veya `.claude/state/` ile gelen hazır onay artık okunmaz. Bu kayda dosya aracıyla veya kabukla yazmak sorulur.
550
- - **`--onayla` sadece tam yazımla:** `node .claude/hooks/gate.mjs --onayla` dışındaki her yazım engellenir: ortam değişkeni öneki, node bayrağı, yönlendirme, zincir.
551
- - **Çözülemeyen kabuk hedefi:** Hedef değişken, ters tırnak, süslü parantez veya ağ yolu yüzünden çözülemiyorsa ve komut kural/koruma dosyası adını anıyorsa (`$D/AGENTS.md`, `{AGENTS,X}.md`, `.claude`, `.git`), kilit veya plan olmasa da sorulur. Yerel UNC yolları (`\\?\C:\…`, `\\localhost\c$\…`) sürücü yoluna çevrilir.
552
- - **Elle uyarla:** 3.14.1/3.14.2'de verilen komut onayı geçersiz olur; ilk kapı çalışmasında komutlar bir kez yeniden onaylanır. Eski `.git/kit-kapi-onayi.json` silinebilir.
583
+ ### Changed
584
+ - **Gate command approval lives in the user folder:** The approval now lives in `~/.vibe-kit/kapi-onayi/<proje yolu özeti>.json` instead of `.git/`. The home folder is read from the operating system and cannot be redirected with `HOME`/`USERPROFILE`. A ready-made approval that arrives with a zip/archive containing `.git` or with `.claude/state/` is no longer read. Writing to this record with a file tool or the shell asks.
585
+ - **`--onayla` only in its exact form:** Every form other than `node .claude/hooks/gate.mjs --onayla` is blocked: an environment variable prefix, a node flag, a redirect, a chain.
586
+ - **Unresolvable shell target:** If the target cannot be resolved because of a variable, backtick, brace expansion or network path, and the command names a rule/protection file (`$D/AGENTS.md`, `{AGENTS,X}.md`, `.claude`, `.git`), it asks even without a lock or plan. Local UNC paths (`\\?\C:\…`, `\\localhost\c$\…`) are converted to drive paths.
587
+ - **Adapt by hand:** The command approval given in 3.14.1/3.14.2 becomes invalid; the commands are approved once again on the first gate run. The old `.git/kit-kapi-onayi.json` can be deleted.
553
588
 
554
589
  ## [3.14.2] - 2026-10-24
555
590
 
556
- ### Değişen
557
- - **Kapı komut onayı tek başına çalışır:** `gate.mjs --onayla` başka komutlarla zincirlenirse (`&&`, `;`, `|`) veya `$(...)` içerirse engellenir. Onay penceresi AGENTS.md'deki komutları pencere açılırken okur; zincirdeki bir komut dosyayı sonradan değiştirip başka bir listeyi onaylatamaz.
591
+ ### Changed
592
+ - **Gate command approval runs on its own:** `gate.mjs --onayla` is blocked if it is chained with other commands (`&&`, `;`, `|`) or contains `$(...)`. The approval window reads the commands in AGENTS.md when the window opens; a command in a chain cannot change the file afterwards and get a different list approved.
558
593
 
559
594
  ## [3.14.1] - 2026-10-24
560
595
 
561
- 3.14.0 güvenlik denetiminden ertelenen ORTA/DÜŞÜK bulgular.
596
+ MEDIUM/LOW findings deferred from the 3.14.0 security audit.
562
597
 
563
- ### Değişen
564
- - **Boş kapı commit'i durdurur:** Hiçbir kontrol çalışmadıysa (Komutlar boş, Semgrep yok) kapı "BOŞ" der, çıkış kodu 1; commit kapısı açılmaz. Kullanıcı isterse `--approve "atlandı: kullanıcı isteği"`.
565
- - **Kapı komut onayı (`gate.mjs --onayla`):** AGENTS.md → Komutlar'daki lint/tip/test komutları yeni veya değişmişse kapı onları çalıştırmaz, listeleyip kullanıcı onayı ister. Onay git ortak dizininde (`.git/kit-kapi-onayi.json`) durur: klonlanan veya PR'la gelen depo hazır onay taşıyamaz. `GIT_DIR`/`GIT_COMMON_DIR` ortam değişkeniyle başka yere yönlendirilemez. `--onayla` her yazımda sorulur (Claude: izin listesi + commit kapısı hook'u; Codex/Antigravity: kalkan); onay penceresi onaylanacak komutları gösterir. `.git/` altına ve `.git` işaretçi dosyasına (worktree) dosya aracıyla veya kabukla yazmak da sorulur.
566
- - **Kabuk komutları kilit ve kapsam kalkanına takılır:** Kilit veya onaylı plan açıkken `sed -i`, `mv`, `cp`, `rm`, `ln`, `dd of=`, `curl -o`, `>`/`>>`/`>|`, `git checkout/restore`, `Set-Content`, `prettier --write`, `eslint --fix` gibi komutlar proje içindeki mevcut, liste/kilit dışı dosyayı hedefliyorsa sorulur. Yazan komut, komutun adına bakılarak bulunur (yoldaki "copy" sayılmaz). Zincirdeki `cd`/`pushd`/`popd`/`Set-Location`, alt kabuk, `bash -c`/`sh -c`/`cmd /c` içi, kelime ortası tırnak, `~` ve Git Bash yolları (`/c/...`) izlenir. `find -delete/-exec`, `tar -x`, `unzip`, `rsync` ve birleşik bayraklar (`curl -sSLo`) da görülür. Glob hedefi klasörü sayılır. Şunlar da sorulur: kökü veya üst klasörü hedefleyen komut (`git checkout .`), değişkenli, ters tırnaklı ya da süslü parantezli hedef, doğrulanamayan `cd` ve hedefini göstermeyen komut (`git apply`, `git stash`, `git switch`, dal adıyla `git checkout`, `patch`, `xargs rm`). Yeni dosya, proje dışı dosya ve `docs/` serbest.
567
- - **Kural ve koruma dosyaları kabukla da korunur (Claude Code dahil):** `.claude/` (kilit, plan, kapı ve onay durumları dahil), `.git/` ve `.git` işaretçi dosyası, `AGENTS.md`, `CLAUDE.md`, `.codex/`, iş akışları kabuk komutunun hedefi olunca kilit veya plan olmasa da sorulur; `.env` ve `secrets/` engellenir. Kilit ve plan Bash ile kapatılamaz, `.git/hooks/` altına sessizce hook yazılamaz.
568
- - **Sembolik bağ ve junction çözülür:** Kilit, kapsam kalkanı ve Codex/Antigravity korumalı dosya kuralı gerçek yola bakar; kilitli klasördeki bir bağ üzerinden dışarı yazılamaz.
569
- - **NotebookEdit:** Sır engeli, kilit/kapsam kalkanı ve test koruması Jupyter defter düzenlemesini de görür.
570
- - **Semgrep:** `--metrics=off` ile çalışır. Windows'ta `.cmd`/`.bat` olarak bulunursa "kurulu değil" yerine "bulundu ama çalıştırılamadı; `SEMGREP=<semgrep.exe yolu>`" der (dosya adları kabuğa verilmez). Proje klasörünün içindeki semgrep önerilmez.
571
- - `.claude/settings.json` (matcher `Write|Edit|MultiEdit|NotebookEdit`; ask: `gate.mjs --onayla`, `Edit(./.git/**)`), `.claude/board/rules.md`, `/build`, `/plan-task`, `/freeze`, README ve `kit/guide.html` güncellendi.
572
- - **Elle uyarla:** `settings.json`'ı değiştirdiysen yeni satırları `.kit-new`'den al. Güncellemeden sonra ilk kapı çalışmasında komut onayı istenir; komutları kontrol edip onayla.
598
+ ### Changed
599
+ - **An empty gate stops the commit:** If no check ran (Komutlar empty, no Semgrep), the gate says "BOŞ" (empty), exits with code 1 and the commit gate does not open. If the user wants, `--approve "atlandı: kullanıcı isteği"`.
600
+ - **Gate command approval (`gate.mjs --onayla`):** If the lint/type/test commands in AGENTS.md → Komutlar are new or changed, the gate does not run them; it lists them and asks for user approval. The approval lives in the shared git directory (`.git/kit-kapi-onayi.json`): a cloned repo or one that arrives with a PR cannot carry a ready-made approval. It cannot be redirected elsewhere with the `GIT_DIR`/`GIT_COMMON_DIR` environment variable. `--onayla` asks on every write (Claude: permission list + commit gate hook; Codex/Antigravity: shield); the approval window shows the commands to approve. Writing under `.git/` and to the `.git` pointer file (worktree) with a file tool or the shell also asks.
601
+ - **Shell commands hit the lock and scope shield:** While a lock or an approved plan is open, commands such as `sed -i`, `mv`, `cp`, `rm`, `ln`, `dd of=`, `curl -o`, `>`/`>>`/`>|`, `git checkout/restore`, `Set-Content`, `prettier --write`, `eslint --fix` ask if they target an existing file inside the project that is outside the list/lock. The writing command is found by the command's name (a "copy" in a path does not count). `cd`/`pushd`/`popd`/`Set-Location` in a chain, subshells, the inside of `bash -c`/`sh -c`/`cmd /c`, mid-word quotes, `~` and Git Bash paths (`/c/...`) are tracked. `find -delete/-exec`, `tar -x`, `unzip`, `rsync` and combined flags (`curl -sSLo`) are also seen. A glob target counts its folder. These also ask: a command that targets the root or a parent folder (`git checkout .`), a target with a variable, backticks or brace expansion, a `cd` that cannot be verified, and a command that does not show its target (`git apply`, `git stash`, `git switch`, `git checkout` with a branch name, `patch`, `xargs rm`). New files, files outside the project and `docs/` are free.
602
+ - **Rule and protection files are also protected from the shell (Claude Code included):** When the target of a shell command is `.claude/` (including lock, plan, gate and approval state), `.git/` and the `.git` pointer file, `AGENTS.md`, `CLAUDE.md`, `.codex/` or the workflows, it asks even without a lock or plan; `.env` and `secrets/` are blocked. The lock and plan cannot be closed with Bash, and a hook cannot be silently written under `.git/hooks/`.
603
+ - **Symbolic links and junctions are resolved:** The lock, the scope shield and the Codex/Antigravity protected-file rule look at the real path; a link inside a locked folder cannot be used to write outside.
604
+ - **NotebookEdit:** The secret block, the lock/scope shield and test protection also see Jupyter notebook edits.
605
+ - **Semgrep:** Runs with `--metrics=off`. If it is found as `.cmd`/`.bat` on Windows, it says "found but could not run; `SEMGREP=<semgrep.exe yolu>`" instead of "not installed" (file names are not passed to the shell). A semgrep inside the project folder is not recommended.
606
+ - Updated `.claude/settings.json` (matcher `Write|Edit|MultiEdit|NotebookEdit`; ask: `gate.mjs --onayla`, `Edit(./.git/**)`), `.claude/board/rules.md`, `/build`, `/plan-task`, `/freeze`, the README and `kit/guide.html`.
607
+ - **Adapt by hand:** If you changed `settings.json`, take the new lines from `.kit-new`. The first gate run after the update asks for command approval; check the commands and approve.
573
608
 
574
- ### Bilinen sınır
575
- - Kabuk hedefleri sezgisel: `cp`'nin kaynak dosyası da hedef sayılır (fazladan soru); `node -e`, `python -c` ve betik içinden yapılan yazım görülmez.
576
- - Komut onayı komutun metnini bağlar, çalıştırdığı içeriği bağlamaz: onaydan sonra `package.json` betiği veya test ayarı değişirse kapı yeni hali çalıştırır.
577
- - `awk -i inplace` ve `curl -O` (uzak adla kaydetme) hedef olarak görülmez.
609
+ ### Known limits
610
+ - Shell targets are heuristic: the source file of `cp` also counts as a target (an extra question); writes made by `node -e`, `python -c` and from inside a script are not seen.
611
+ - Command approval binds the text of the command, not the content it runs: if a `package.json` script or test config changes after approval, the gate runs the new version.
612
+ - `awk -i inplace` and `curl -O` (saving under the remote name) are not seen as targets.
578
613
 
579
614
  ## [3.14.0] - 2026-10-24
580
615
 
581
- ### Eklenen
582
- - **Deterministik kapı (`gate.mjs --run`):** AGENTS.md → Komutlar'daki `lint`, `tip kontrol` ve `test` komutları ile (kuruluysa) değişen kod dosyalarında Semgrep çalışır. Sonuç `.claude/state/gate.json`'a değişiklik imzasıyla yazılır. Yeşil kontrolün çıktısı yazılmaz, kırmızının son 30 satırı yazılır. Boş komut "tanımsız" sayılır; hiçbir kontrol çalışmadıysa uyarı verir. Commit, görev sonu ve faz sonu toplantısından önce çalışır, çıktısı kurul üyelerine girdi olur. Üyeler kırmızı kontrolde RET verir, lint/tip/test'in yakaladığını yeniden aramaz. `/build` doğrulama adımı da bunu kullanır.
583
- - **Kapsam kalkanı (`freeze-guard.mjs --plan-kaydet / --plan-ekle / --plan-bitir`):** `/plan-task` onayından sonra planın dosya listesi kaydedilir. Plan açıkken listede olmayan mevcut dosyaya yazım (Claude Code, Codex, Antigravity) sorulur. Listeye dosya eklemek onaya bağlı; yeni dosya, `docs/` ve `CHANGELOG.md` serbest. Plan yoksa sessiz. `/build` sonunda ve `/wrap-up`'ta kapanır. Kilit ve plan, alt klasörden çağrılsa da proje köküne yazılır; tırnaklı `'--plan-ekle'` / `'--off'` da Codex ve Antigravity'de sorulur.
616
+ ### Added
617
+ - **Deterministic gate (`gate.mjs --run`):** Runs the `lint`, `tip kontrol` and `test` commands from AGENTS.md → Komutlar, plus Semgrep (if installed) on changed code files. The result is written to `.claude/state/gate.json` with a change signature. Output of a green check is not written; the last 30 lines of a red one are. An empty command counts as "undefined"; if no check ran, it warns. It runs before commit, end-of-task and end-of-phase meetings, and its output is input for the board members. Members give RET on a red check and do not look again for what lint/type/test caught. The `/build` verification step uses it too.
618
+ - **Scope shield (`freeze-guard.mjs --plan-kaydet / --plan-ekle / --plan-bitir`):** After `/plan-task` approval, the plan's file list is saved. While the plan is open, writing to an existing file not on the list (Claude Code, Codex, Antigravity) asks. Adding a file to the list needs approval; new files, `docs/` and `CHANGELOG.md` are free. Silent when there is no plan. It closes at the end of `/build` and in `/wrap-up`. The lock and plan are written to the project root even when called from a subfolder; quoted `'--plan-ekle'` / `'--off'` also ask in Codex and Antigravity.
584
619
 
585
- ### Değişen
586
- - **Commit kapısı:** Kurul onayına ek olarak aynı değişiklikler için yeşil kapı ister. Kapı kırmızı, eski veya hiç çalışmamışsa commit durur. Kullanıcı ara commit için açıkça isterse `--approve "atlandı: kullanıcı isteği"`. İzlenmeyen yeni dosyalar da imzaya girer (`git add -A && git commit` ile yalnız yeni dosya içeren commit artık denetimsiz geçmez). `git --no-pager commit`, `git -C x commit` gibi yazımlar yakalanır. Commit tek başına ya da yalnızca `cd` / `git add` ile zincirlenebilir: `sed … && git commit`, `$(...)` içeren komut ve `git commit && git push` durdurulur (push ayrı komut). Heredoc ve `$(cat <<'EOF' … EOF)` mesajı serbest. `--approve "atlandı…"` her yazımda kullanıcıya sorulur. Değişen dosya listesi `git -z` ile okunur (Türkçe yollar doğru); `.claude/state/` imzaya girmez.
587
- - `.claude/board/rules.md` §4, kurul üye şablonları, `/plan-task`, `/build`, `/wrap-up`, `.claude/settings.json` izinleri (`gate.mjs --run`, `--plan-kaydet`, `--plan-bitir` sorusuz; `--plan-ekle` sorulur), README ve `kit/guide.html` güncellendi.
588
- - **Elle uyarla:** Kurulu projede `.claude/agents/board-*.md` dosyaları projeye aittir: her birinin "Çıktı" bölümüne kapı satırını `.claude/board/board-<rol>.md`'den kopyala. `AGENTS.md` → Komutlar'da `lint`, `tip kontrol`, `test` satırları dolu olmalı. `settings.json`'ı değiştirdiysen yeni izin satırlarını `.kit-new`'den al.
620
+ ### Changed
621
+ - **Commit gate:** In addition to board approval, it asks for a green gate for the same changes. If the gate is red, stale or never ran, the commit stops. If the user explicitly asks for an interim commit, `--approve "atlandı: kullanıcı isteği"`. Untracked new files also enter the signature (a commit with only new files via `git add -A && git commit` no longer passes unchecked). Forms such as `git --no-pager commit` and `git -C x commit` are caught. A commit may stand alone or be chained only with `cd` / `git add`: `sed … && git commit`, a command containing `$(...)` and `git commit && git push` are stopped (push is a separate command). A heredoc and a `$(cat <<'EOF' … EOF)` message are free. `--approve "atlandı…"` asks the user on every write. The changed file list is read with `git -z` (Turkish paths come out right); `.claude/state/` does not enter the signature.
622
+ - Updated `.claude/board/rules.md` §4, the board member templates, `/plan-task`, `/build`, `/wrap-up`, the `.claude/settings.json` permissions (`gate.mjs --run`, `--plan-kaydet`, `--plan-bitir` without a question; `--plan-ekle` asks), the README and `kit/guide.html`.
623
+ - **Adapt by hand:** In an installed project, the `.claude/agents/board-*.md` files belong to the project: copy the gate line from `.claude/board/board-<rol>.md` into the "Çıktı" (Output) section of each. In `AGENTS.md` → Komutlar, the `lint`, `tip kontrol` and `test` lines must be filled in. If you changed `settings.json`, take the new permission lines from `.kit-new`.
589
624
 
590
- ### Bilinen sınır
591
- - Kapı sadece Claude Code'un commit kapısında zorunlu; Codex ve Antigravity'de komutla çalıştırılır.
592
- - Kapsam kalkanı AI'nın planı kapatıp yeniden kaydetmesini engellemez; bu AGENTS.md'deki "hook atlatma yasak" kuralına dayanır.
593
- - Kapı, komutlar boşsa ve Semgrep kurulu değilse uyarıyla yeşil döner; commit'i durdurmaz.
594
- - AGENTS.md → Komutlar onaysız çalışır: güvenilmeyen depodan (klon, PR) gelen komutu çalıştırmadan önce AGENTS.md'yi oku.
595
- - Kapsam kalkanı sadece dosya araçlarında: kabukla (`sed -i`, `mv`, `cp`) plan dışı dosyaya yazmak sorulmaz (test dosyası hariç); sembolik bağlar çözülmez; `docs/` altındaki kod (Docusaurus vb.) serbest sayılır.
596
- - Kapı çalışırken dosya değiştiren komut (`lint --fix`, anlık görüntü güncellemesi) imzayı değiştirir; kapı tekrar çalıştırılmalı.
625
+ ### Known limits
626
+ - The gate is mandatory only in Claude Code's commit gate; in Codex and Antigravity it is run by command.
627
+ - The scope shield does not stop the AI from closing the plan and saving it again; this relies on the "no bypassing hooks" rule in AGENTS.md.
628
+ - If the commands are empty and Semgrep is not installed, the gate returns green with a warning; it does not stop the commit.
629
+ - AGENTS.md → Komutlar runs without approval: read AGENTS.md before running a command that comes from an untrusted repo (clone, PR).
630
+ - The scope shield covers file tools only: writing to a file outside the plan with the shell (`sed -i`, `mv`, `cp`) does not ask (except test files); symbolic links are not resolved; code under `docs/` (Docusaurus etc.) counts as free.
631
+ - A command that changes files while the gate runs (`lint --fix`, snapshot update) changes the signature; the gate must run again.
597
632
 
598
633
  ## [3.13.1] - 2026-10-24
599
634
 
600
- ### Değişen
601
- - **Test koruması kabukta da çalışır:** Test dosyasını kabuk komutuyla değiştiren, taşıyan veya silen komut (`sed -i`, `perl -i`, `rm`, `mv`, `cp`, `tee`, `>`/`>>`, `git checkout/restore`, PowerShell `Set-Content` vb.) kalkanda sorulur. Test ayar dosyaları da kapsanır; `sed -e … -i` ve `--in-place` yazımları da. Komut zincirinin her parçasına ayrı bakılır; testi çalıştırmak serbest.
602
- - **Test ayar dosyaları:** `vitest`/`vite`/`jest`/`playwright`/`cypress` config (`.json` dahil), `.mocharc.*`, `conftest.py`, `noxfile.py`, `pytest.ini`, `pyproject.toml`, `package.json` gibi dosyalarda kapsamı daraltabilecek bir satır (`include`/`exclude`, `testMatch`, `testIgnore`, `passWithNoTests`, `bail`, `retries`, `forbidOnly`, `setupFiles`, kapsam eşikleri `lines`/`branches`/`fail_under`, `addopts`, `collect_ignore`, `"test…"`/`"ci…"` script'i) eklenir veya çıkarsa sorulur. Alias, eklenti gibi değişiklikler sessiz geçer.
603
- - **Test koruması sezgileri:** `;//` ile yoruma alma, Python'da boşluksuz `#assert`, `skipIf`/`runIf` ve matcher'sız `expect(x)` yakalanır. `model.fit(` odaklanmış test, supertest `.expect(200)` matcher'sız expect sayılmaz; satır kıran `expect(x)
604
- .toBe()` zinciri sorun sayılmaz. Test yolu desenlerine `*.e2e-spec.ts`, `*_test.go` ve `spec/` eklendi.
605
- - **Codex taşıma:** Test klasöründe kalsa da koşucunun tanımadığı bir ada (`a.test.ts` → `tests/a.ts`) taşıma ve herhangi bir dosyayı var olan bir testin üstüne taşıma sorulur.
606
- - **RLS testi (web ve mobil şablon):** Başka kullanıcının güncelleme denemesi satırdan farklı değer yazar (sahibi kendisine çevirir); güncelleme ve silme denemesinden sonra satır admin ile yeniden okunur ve ilk haliyle karşılaştırılır (select politikası yokken dönen satır sayısı 0 olsa da değişiklik yakalanır). CI'da `DB_URL` yoksa tablo listesi atlanmaz, test kırmızı olur. View ve `SECURITY DEFINER` fonksiyonların kapsam dışı olduğu dosyada yazıyor.
607
- - **CI şablonları (üçü):** `permissions: contents: read`; gitleaks işine ayrıca `pull-requests: read` (özel depoda PR commit listesi için); gitleaks PR yorumu kapalı (`GITLEAKS_ENABLE_COMMENTS: "false"`, sızıntı yine işi kırmızı yapar). RLS işinde `supabase status -o env` çıktısı `eval` edilmez; yalnız gereken anahtarlar okunup aktarılır.
608
- - **Elle uyarla:** Değiştirdiğin `ci.yml` için `/kit-update` `.kit-new` bırakır: üstteki `permissions` bloğunu, gitleaks adımına `GITLEAKS_ENABLE_COMMENTS` satırını ve `rls` işinin yeni ortam aktarma satırlarını kendi dosyana al. `tests/security/rls.mjs`'i değiştirdiysen `TABLOLAR` listeni yeni dosyaya taşı.
609
-
610
- ### Bilinen sınır
611
- - Kabuk koruması metne bakar: betik içinden (`node -e`, `python -c`, heredoc'la çalıştırılan program), `find … -delete`, `awk -i inplace`, `git apply`, `cd tests; rm *` ile test dosyasına yazmak yakalanmaz.
612
- - Ayar dosyası kuralı sezgiseldir: listede olmayan bir alan veya çok satırlı `include: [` dizisinden satır silmek sorulmaz.
613
- - Test koruması sezgisi `it['skip']`, `test.todo`, `it.fails`, `expect.any(Object)` yazımlarını yakalamaz.
635
+ ### Changed
636
+ - **Test protection also works in the shell:** A shell command that changes, moves or deletes a test file (`sed -i`, `perl -i`, `rm`, `mv`, `cp`, `tee`, `>`/`>>`, `git checkout/restore`, PowerShell `Set-Content` etc.) asks in the shield. Test config files are covered too, including the `sed -e … -i` and `--in-place` forms. Each part of a command chain is checked separately; running the test is free.
637
+ - **Test config files:** In files such as `vitest`/`vite`/`jest`/`playwright`/`cypress` config (including `.json`), `.mocharc.*`, `conftest.py`, `noxfile.py`, `pytest.ini`, `pyproject.toml`, `package.json`, it asks if a line that could narrow the scope is added or removed (`include`/`exclude`, `testMatch`, `testIgnore`, `passWithNoTests`, `bail`, `retries`, `forbidOnly`, `setupFiles`, coverage thresholds `lines`/`branches`/`fail_under`, `addopts`, `collect_ignore`, a `"test…"`/`"ci…"` script). Changes such as aliases and plugins pass silently.
638
+ - **Test protection heuristics:** Commenting out with `;//`, `#assert` without a space in Python, `skipIf`/`runIf` and `expect(x)` without a matcher are caught. A focused test `model.fit(` and supertest `.expect(200)` do not count as an expect without a matcher; an `expect(x)
639
+ .toBe()` chain broken across lines is not a problem. `*.e2e-spec.ts`, `*_test.go` and `spec/` were added to the test path patterns.
640
+ - **Codex move:** Moving a test to a name the runner does not recognize even though it stays in the test folder (`a.test.ts` → `tests/a.ts`), and moving any file on top of an existing test, ask.
641
+ - **RLS test (web and mobile template):** The other user's update attempt writes a value different from the row (it changes the owner to itself); after the update and delete attempts, the row is read again as admin and compared with its original state (a change is caught even when the returned row count is 0 because there is no select policy). In CI, if `DB_URL` is missing, the table list is not skipped; the test goes red. The file states that views and `SECURITY DEFINER` functions are out of scope.
642
+ - **CI templates (all three):** `permissions: contents: read`; the gitleaks job also gets `pull-requests: read` (for the PR commit list in a private repo); the gitleaks PR comment is off (`GITLEAKS_ENABLE_COMMENTS: "false"`, a leak still turns the job red). In the RLS job, the `supabase status -o env` output is not passed to `eval`; only the needed keys are read and exported.
643
+ - **Adapt by hand:** For a `ci.yml` you changed, `/kit-update` leaves a `.kit-new`: take the `permissions` block at the top, the `GITLEAKS_ENABLE_COMMENTS` line in the gitleaks step and the new environment export lines of the `rls` job into your own file. If you changed `tests/security/rls.mjs`, move your `TABLOLAR` list to the new file.
644
+
645
+ ### Known limits
646
+ - Shell protection looks at the text: writing to a test file from inside a script (`node -e`, `python -c`, a program run with a heredoc), with `find … -delete`, `awk -i inplace`, `git apply` or `cd tests; rm *` is not caught.
647
+ - The config file rule is heuristic: a field not on the list, or deleting a line from a multi-line `include: [` array, does not ask.
648
+ - The test protection heuristic does not catch the forms `it['skip']`, `test.todo`, `it.fails`, `expect.any(Object)`.
614
649
 
615
650
  ## [3.13.0] - 2026-10-24
616
651
 
617
- ### Eklenen
618
- - **Test koruması (`test-guard.mjs`, Claude Code, Codex, Antigravity):** Test dosyasında beklenti (`expect`/`assert`) silinir veya yoruma alınırsa, `.skip`/`.only`/`xit`/`@pytest.mark.skip` eklenirse, beklenti gevşetilirse (`toBeTruthy`, `toBeDefined`, `expect.anything`, `assert True`) ya da test dosyası silinirse kullanıcıya sorulur. Write ile (Codex'te `Add File` ile) var olan dosyanın tamamını ezmek diskteki halle karşılaştırılır; Codex `Move to` ile testi test olmayan bir yola taşımak da sorulur. Codex'te onay penceresi olmadığı için engellenir ve AI'ya "kullanıcıya sor" denir.
619
- - **Düzenleme turu sayacı (`edit-rounds.mjs`):** Aynı kod dosyası bir oturumda 5., 10., ... kez düzenlenince AI'ya Semgrep ve `security-auditor` hatırlatılır; iş engellenmez. Claude ve Codex'te PostToolUse notu, Antigravity'de PreInvocation `injectSteps` ile (sadece notu üreten oturuma). Dosya adı özel karakter içeriyorsa nota ve Semgrep komutuna yazılmaz; yol tırnaklı ve `--` sonrasında. Bozuk durum dosyası çökertmez.
620
- - **Karmaşıklık bütçesi (`budget.mjs`, CI `karmasiklik` işi, üç şablon):** PR'da değişen kod dosyalarında fonksiyon karmaşıklığı 15, fonksiyon 80 satır (lizard 1.24.1, `pipx run`), dosya 400 satır aşılırsa CI kırmızı. Test, migration, üretilmiş ve kit dosyaları hariç. Kite alınan eski kod dokunulana kadar engellemez. Türkçe ve boşluklu yollar ölçülür (`git -z`); `build`/`out`/`vendor` sadece kökteyse hariç; `--base` ve dosya adları bayrak sayılmaz. `/start` her fazın sonuna "Refactor turu" görevi koyar.
621
- - **RLS saldırgan testi (web ve mobil şablon, `tests/security/rls.mjs`, CI `rls` işi):** CI içinde boş bir yerel Supabase açılır; anonim ve ikinci kullanıcı, birinci kullanıcının satırını okumayı, güncellemeyi, silmeyi ve onun adına yazmayı dener. RLS'i kapalı veya teste kayıtsız public tablo varsa kırmızı. Sır gerekmez; yerel olmayan URL'ye karşı çalışmayı reddeder. Dosya adı `.test.mjs` değil: Vitest/Jest ortamsız toplamasın. `/release`'de engelleyici.
622
- - Pano: prod ref'i `.mcp.json`'da geçerse kritik, Supabase varken RLS testi yoksa uyarı.
623
-
624
- ### Değişen
625
- - **Dev/prod ayrımı:** Şablonlardaki salt-okunur Supabase MCP artık `DEV_REF`'e bağlanır (önce prod olabiliyordu). `.env.example` "yerel = dev, prod sadece barındırma panelinde" der. `docs/operations/accounts.md`'ye "Ortamlar (dev / prod)" tablosu. `/release` prod ref'inin repoda ve AI ayarlarında geçmediğini kontrol eder, `.env.local`'in dev'e bağlı olduğunu kullanıcıya sorar.
626
- - Kalkan: prod ortam değişkenlerini makineye çekmek (`vercel env pull` / `vercel pull`, prod hedefli) engellenir; ortam düz `development`/`preview` değilse (değişken, `$(...)`, özel ortam) sorulur. Vercel kuralları kısa adı `vc`'yi de kapsar.
627
- - `arac.mjs` → `cozumle` düzenlenen parçanın önceki ve sonraki halini (`once`/`sonra`), silmeyi ve oturum kimliğini de verir.
628
- - `AGENTS.md`, `docs/quality/test-plan.md`, `docs/security/checklist.md`, şablon `stack.md`'leri, `docs/workflow/mcp-catalog.md`, README, `kit/guide.html` ve pano güncellendi.
629
- - **Elle uyarla:** Kurulu projede `.mcp.json` Supabase satırı prod ref'ine bağlıysa dev ref'i ile değiştir. Değiştirdiğin `ci.yml` için `/kit-update` `.kit-new` bırakır: `karmasiklik` ve `rls` işlerini kendi dosyana al. `docs/operations/accounts.md`'ye Ortamlar tablosunu, `docs/product/roadmap.md`'ye faz sonu refactor görevlerini ekle. Supabase'li projede `tests/security/rls.mjs` → `TABLOLAR`'a mevcut tabloları yaz.
630
-
631
- ### Bilinen sınır
632
- - Test koruması ve kalkan metne bakar: kabuk komutuyla (`sed`, heredoc) test dosyası değiştirmek test korumasına takılmaz (3.13.1'de kalkana eklendi). Kalkan, belge yazan bir heredoc içinde geçen örnek komutu da yakalayabilir.
633
- - Antigravity'de PostToolUse çıktı taşımaz; düzenleme turu notu bir sonraki model çağrısında gelir.
634
- - RLS testi kit içinde Docker'sız doğrulandı (yerel olmayan URL reddi, ortam yok hatası); gerçek `supabase start` ile uçtan uca çalıştırma ilk kullanan projede CI'da görülecek.
652
+ ### Added
653
+ - **Test protection (`test-guard.mjs`, Claude Code, Codex, Antigravity):** It asks the user if an expectation (`expect`/`assert`) is deleted or commented out in a test file, if `.skip`/`.only`/`xit`/`@pytest.mark.skip` is added, if an expectation is loosened (`toBeTruthy`, `toBeDefined`, `expect.anything`, `assert True`) or if a test file is deleted. Overwriting a whole existing file with Write (with `Add File` in Codex) is compared with the version on disk; moving a test to a non-test path with Codex `Move to` also asks. Because Codex has no approval window, it blocks and tells the AI to "ask the user".
654
+ - **Edit round counter (`edit-rounds.mjs`):** When the same code file is edited for the 5th, 10th, ... time in a session, the AI is reminded of Semgrep and `security-auditor`; the work is not blocked. In Claude and Codex this is a PostToolUse note, in Antigravity PreInvocation `injectSteps` (only to the session that produced the note). If the file name contains special characters, it is not written into the note and the Semgrep command; the path is quoted and after `--`. A broken state file does not crash it.
655
+ - **Complexity budget (`budget.mjs`, CI `karmasiklik` job, three templates):** In code files changed in a PR, CI goes red if function complexity exceeds 15, a function exceeds 80 lines or a file exceeds 400 lines (lizard 1.24.1, `pipx run`). Test, migration, generated and kit files are excluded. Old code brought into the kit does not block until it is touched. Turkish and spaced paths are measured (`git -z`); `build`/`out`/`vendor` are excluded only at the root; `--base` and file names do not count as flags. `/start` puts a "Refactor round" task at the end of every phase.
656
+ - **RLS adversarial test (web and mobile template, `tests/security/rls.mjs`, CI `rls` job):** CI starts an empty local Supabase; an anonymous user and a second user try to read, update, delete and write on behalf of the first user's row. Red if a public table has RLS off or is not registered in the test. No secret is needed; it refuses to run against a non-local URL. The file name is not `.test.mjs`, so Vitest/Jest do not collect it without an environment. Blocking in `/release`.
657
+ - Dashboard: critical if the prod ref appears in `.mcp.json`, a warning if Supabase is present but there is no RLS test.
658
+
659
+ ### Changed
660
+ - **Dev/prod separation:** The read-only Supabase MCP in the templates now connects to `DEV_REF` (it used to possibly be prod first). `.env.example` says "local = dev, prod only in the hosting panel". An "Environments (dev / prod)" table was added to `docs/operations/accounts.md`. `/release` checks that the prod ref does not appear in the repo or the AI settings, and asks the user whether `.env.local` is connected to dev.
661
+ - Shield: pulling prod environment variables to the machine (`vercel env pull` / `vercel pull`, targeting prod) is blocked; if the environment is not plain `development`/`preview` (a variable, `$(...)`, a custom environment), it asks. The Vercel rules also cover the short name `vc`.
662
+ - `arac.mjs` → `cozumle` also returns the before and after of the edited part (`once`/`sonra`), deletion and the session id.
663
+ - Updated `AGENTS.md`, `docs/quality/test-plan.md`, `docs/security/checklist.md`, the template `stack.md` files, `docs/workflow/mcp-catalog.md`, the README, `kit/guide.html` and the dashboard.
664
+ - **Adapt by hand:** If the Supabase line in `.mcp.json` of an installed project is connected to the prod ref, replace it with the dev ref. For a `ci.yml` you changed, `/kit-update` leaves a `.kit-new`: take the `karmasiklik` and `rls` jobs into your own file. Add the Environments table to `docs/operations/accounts.md` and the end-of-phase refactor tasks to `docs/product/roadmap.md`. In a project with Supabase, write the existing tables into `tests/security/rls.mjs` → `TABLOLAR`.
665
+
666
+ ### Known limits
667
+ - Test protection and the shield look at the text: changing a test file with a shell command (`sed`, heredoc) does not trigger test protection (added to the shield in 3.13.1). The shield may also catch an example command that appears inside a heredoc writing a document.
668
+ - In Antigravity, PostToolUse carries no output; the edit round note arrives on the next model call.
669
+ - The RLS test was verified inside the kit without Docker (non-local URL rejection, missing environment error); an end-to-end run with a real `supabase start` will show up in CI of the first project that uses it.
635
670
 
636
671
  ## [3.12.0] - 2026-10-23
637
672
 
638
- ### Eklenen
639
- - **rea (tersine mühendislik CLI'ı, sabit sürüm `rea-agents@6.2.0`):** `/research` bir rakip özelliğin nasıl çalıştığını kanıtıyla inceleyebilir; `/adopt` repodaki kaynağı olmayan parçaları (derlenmiş paket, küçültülmüş JS, ASAR) listeler. Her ikisi önce yetki ve lisans uyarısıyla sorar; rakibin kodu, metni ve markası alınmaz. `setup` çalıştırılmaz (ajan ayarlarını değiştirir). Katalog: `docs/workflow/mcp-catalog.md`.
640
- - **Understand-Anything (insan için kod haritası, `yayin` paketi):** `/adopt` görsel harita, `/handoff` devralan için tanıtım rehberi (`/understand-onboard`), `/release first` bakım haritası önerir. İlk çalıştırma bütün kodu okur: maliyet söylenir ve sorulur. Türkçe çıktı yok (`--language en`), `--auto-update` kullanılmaz. Pano, graf 30 günden eskiyse ipucu verir.
641
- - **İlham markası (`/design` 1b):** awesome-design-md'den (84 marka, MIT) sadece seçilen markanın DESIGN.md'si sabit commit'ten `.previews/ref/`'e indirilir, Impeccable ile ilkeleri damıtılır. Marka taklidi yok.
642
- - **three.js (`/start` 3c):** 3D seçilirse `CloudAI-X/threejs-skills`'ten (MIT) `threejs-fundamentals`, `threejs-performance` ve React'te `threejs-react-three-fiber` sabit commit'ten kopyalanır; gerisi Context7.
643
- - **`ui-motion` → 3D bölümü:** tembel yükleme, WebGL yoksa statik yedek, hareket azaltma, mobil GPU (piksel oranı ≤2, isteğe bağlı render), `dispose()`, fps ölçüsü. GSAP satırı lisans notuyla.
644
- - **GSAP (`/design` cesur yön):** `gsap-skills:` skill'leri. Lisans doğrulandı: ücretsiz, ticari kullanım dahil; tek yasak Webflow'a rakip kodsuz animasyon aracı (gsap.com/standard-license, arşiv kopyası 2026).
645
- - `/findings-perf` ve `/findings-ux` lens'lerine animasyon ve 3D kontrolleri (tembel yükleme, `dispose`, ScrollTrigger temizliği, statik yedek, scroll-jacking erişilebilirliği).
673
+ ### Added
674
+ - **rea (reverse engineering CLI, pinned version `rea-agents@6.2.0`):** `/research` can examine how a competitor feature works, with evidence; `/adopt` lists the parts of the repo that have no source (compiled bundle, minified JS, ASAR). Both ask first with an authorization and license warning; the competitor's code, text and brand are not taken. `setup` is not run (it changes agent settings). Catalog: `docs/workflow/mcp-catalog.md`.
675
+ - **Understand-Anything (code map for humans, `yayin` package):** `/adopt` suggests a visual map, `/handoff` an onboarding guide for the person taking over (`/understand-onboard`), `/release first` a maintenance map. The first run reads all the code: the cost is stated and asked. No Turkish output (`--language en`), `--auto-update` is not used. The dashboard gives a hint if the graph is older than 30 days.
676
+ - **Inspiration brand (`/design` 1b):** From awesome-design-md (84 brands, MIT), only the chosen brand's DESIGN.md is downloaded from a pinned commit into `.previews/ref/`, and its principles are distilled with Impeccable. No imitating the brand.
677
+ - **three.js (`/start` 3c):** If 3D is chosen, `threejs-fundamentals`, `threejs-performance` and, in React, `threejs-react-three-fiber` are copied from `CloudAI-X/threejs-skills` (MIT) at a pinned commit; the rest goes through Context7.
678
+ - **`ui-motion` → 3D section:** lazy loading, a static fallback if there is no WebGL, reduced motion, mobile GPU (pixel ratio ≤2, optional rendering), `dispose()`, fps measurement. The GSAP line comes with a license note.
679
+ - **GSAP (`/design` bold direction):** `gsap-skills:` skills. License verified: free, including commercial use; the only ban is a no-code animation tool that competes with Webflow (gsap.com/standard-license, archive copy 2026).
680
+ - Animation and 3D checks were added to the `/findings-perf` and `/findings-ux` lenses (lazy loading, `dispose`, ScrollTrigger cleanup, static fallback, scroll-jacking accessibility).
646
681
 
647
- ### Değişen
648
- - Yapı haritalarına `.ua/**` eklendi (Understand-Anything grafı). **Elle uyarla:** kurulu projede `.claude/structure.json` → `allow`'a `".ua/**"` ekle.
649
- - `.gitignore`: `.ua/intermediate/`, `.ua/diff-overlay.json`. **Elle uyarla:** kurulu projenin `.gitignore`'una ekle.
650
- - README, `kit/guide.html` ve pano güncellendi.
682
+ ### Changed
683
+ - `.ua/**` was added to the structure maps (Understand-Anything graph). **Adapt by hand:** in an installed project, add `".ua/**"` to `.claude/structure.json` → `allow`.
684
+ - `.gitignore`: `.ua/intermediate/`, `.ua/diff-overlay.json`. **Adapt by hand:** add them to the installed project's `.gitignore`.
685
+ - Updated the README, `kit/guide.html` and the dashboard.
651
686
 
652
687
  ## [3.11.4] - 2026-10-23
653
688
 
654
- ### Güvenlik
655
- - **Şüpheliyse sor.** Komutta gizleme işareti (satır sonu `\`, `$'..'`, `$(...)`, `` `...` ``, `${...}`, `$@`/`$*`) varken, gevşek normalleştirmeden sonra korunan bir işlem çıkarsa (Vercel prod/promote/rollback, `DROP`/`TRUNCATE`, `reset --hard`, `push --force`, `rm -rf`, `db reset`) kalkan sorar. Kabuğu taklit etmeye çalışmaz; bu atlatma sınıfını tek kuralla kapatır. Commit sonrası güvenlik incelemesinin bulgusu.
689
+ ### Security
690
+ - **Ask if in doubt.** When a command has an obfuscation marker (a trailing `\`, `$'..'`, `$(...)`, `` `...` ``, `${...}`, `$@`/`$*`) and a protected operation appears after loose normalization (Vercel prod/promote/rollback, `DROP`/`TRUNCATE`, `reset --hard`, `push --force`, `rm -rf`, `db reset`), the shield asks. It does not try to imitate the shell; one rule closes this class of bypass. A finding from the post-commit security review.
656
691
 
657
- ### Bilinen sınır
658
- - Kalkan metne bakar; `$X` değişkeni veya bir dosyadan okunan komut çözülemez. Claude Code'da asıl sınır izin katmanıdır (`permissions.ask`/`deny`) ve kullanıcının onayıdır. Gizleme işaretli komut içinde korunan kelime geçerse (örn. `$(...)` ile yazılan bir commit mesajında "rollback") nadiren gereksiz soru çıkar.
692
+ ### Known limits
693
+ - The shield looks at the text; a `$X` variable or a command read from a file cannot be resolved. In Claude Code the real limit is the permission layer (`permissions.ask`/`deny`) and the user's approval. If a protected word appears in a command with an obfuscation marker (for example "rollback" in a commit message written with `$(...)`), an unneeded question rarely comes up.
659
694
 
660
695
  ## [3.11.3] - 2026-10-23
661
696
 
662
- ### Güvenlik
663
- - Yıkıcı komut kalkanı ve izin karşılığı (Codex, Antigravity) komutu kabuğun göreceği hale getirip de değerlendirir: `$'..'` açılır, tırnaklar, `\` ve PowerShell `` ` `` kaçışları düşer. Ham ve açılmış halden sıkı olan karar kazanır. Böylece `--pro""d`, `pr\omote`, `$'--prod'`, `DR""OP`, `--ha"rd"` gibi yazımlar tek tek regex'e gerek kalmadan yakalanır. Commit sonrası güvenlik incelemesinin bulgusu (kök neden düzeltmesi; 3.11.2'nin tırnak eklerinin yerini alır).
697
+ ### Security
698
+ - The destructive command shield and its permission counterpart (Codex, Antigravity) evaluate the command also in the form the shell will see: `$'..'` is expanded, quotes, `\` and PowerShell `` ` `` escapes are dropped. The stricter decision of the raw and the expanded form wins. So forms such as `--pro""d`, `pr\omote`, `$'--prod'`, `DR""OP`, `--ha"rd"` are caught without a separate regex for each. A finding from the post-commit security review (a root-cause fix; it replaces the quote additions of 3.11.2).
664
699
 
665
700
  ## [3.11.2] - 2026-10-23
666
701
 
667
- ### Güvenlik
668
- - Kalkan: tırnaklı veya çok boşluklu yazım da yakalanır (`--target "production"`, `--target='prod'`, `--target production`, `"promote"`). Commit sonrası güvenlik incelemesinin bulgusu.
702
+ ### Security
703
+ - Shield: quoted or multi-space forms are also caught (`--target "production"`, `--target='prod'`, `--target production`, `"promote"`). A finding from the post-commit security review.
669
704
 
670
705
  ## [3.11.1] - 2026-10-23
671
706
 
672
- ### Güvenlik
673
- Commit sonrası güvenlik incelemesinin bulguları.
674
- - Kalkan: `vercel` alt komutu bayraklardan sonra gelse de (`vercel --scope ekip promote …`) `promote` ve `rollback` sorulur. `--target production` / `--target=production` de prod deploy sayılır.
675
- - Web şablonunda Playwright CLI izni sadece `open`, `snapshot`, `console`, `requests`, `screenshot` alt komutlarına daraltıldı. Sayfada kod çalıştıran `eval` ve `run-code` sorulur.
707
+ ### Security
708
+ Findings from the post-commit security review.
709
+ - Shield: `promote` and `rollback` ask even when the `vercel` subcommand comes after flags (`vercel --scope ekip promote …`). `--target production` / `--target=production` also count as a prod deploy.
710
+ - In the web template, the Playwright CLI permission was narrowed to the `open`, `snapshot`, `console`, `requests` and `screenshot` subcommands. `eval` and `run-code`, which run code on the page, ask.
676
711
 
677
- ### Elle uyarla
678
- - 3.11.0'ı uyguladıysan web projesinde `.claude/settings.json` → `permissions.allow`'daki `Bash(npx -y @playwright/cli@0.1.22:*)` satırını kitin web şablonundaki beş dar satırla değiştir.
712
+ ### Adapt by hand
713
+ - If you applied 3.11.0, in a web project replace the `Bash(npx -y @playwright/cli@0.1.22:*)` line in `.claude/settings.json` → `permissions.allow` with the five narrow lines from the kit's web template.
679
714
 
680
715
  ## [3.11.0] - 2026-10-23
681
716
 
682
- ### Eklendi
683
- - **Playwright CLI** (`npx -y @playwright/cli@0.1.22`): ajanın sayfaya bakması, konsol, ağ ve ekran görüntüsü. Sayfa verisini bağlama zorlamadığı için MCP'den az token harcar. Kabul testleri yine `npx playwright test`.
684
- - **Vercel CLI akışı** (`/release`): önizleme deploy'u → önizleme URL'sinde kanıt → onayla `promote` veya `deploy --prod`. Git entegrasyonu açıksa CLI ile ayrıca deploy edilmez.
685
- - **Supabase dev MCP** (katalog, `supabase-dev`): yazma yetkili, sadece geliştirme projesi veya branch'i. Prod MCP salt-okunur kalır; şema değişikliği her zaman migration dosyasıyla (mobil şablona da eklendi).
686
- - `/design`: tasarım Figma'daysa Figma MCP'yi bu makineye eklemeyi önerir.
687
- - Katalogda "Gerektiğinde eklenenler" bölümü: Playwright MCP, Chrome DevTools MCP, Figma, Supabase dev; `--scope local`, sürüm sabit.
717
+ ### Added
718
+ - **Playwright CLI** (`npx -y @playwright/cli@0.1.22`): lets the agent look at the page, the console, the network and screenshots. It uses fewer tokens than MCP because it does not force page data into the context. Acceptance tests still run with `npx playwright test`.
719
+ - **Vercel CLI flow** (`/release`): preview deploy → evidence on the preview URL → approve `promote` or `deploy --prod`. If the Git integration is on, the CLI does not deploy separately.
720
+ - **Supabase dev MCP** (catalog, `supabase-dev`): with write access, only for the development project or branch. The prod MCP stays read-only; schema changes always go through a migration file (also added to the mobile template).
721
+ - `/design`: if the design is in Figma, it suggests adding the Figma MCP to this machine.
722
+ - A "Added when needed" section in the catalog: Playwright MCP, Chrome DevTools MCP, Figma, Supabase dev; `--scope local`, version pinned.
688
723
 
689
- ### Değişti
690
- - Web şablonunun `.mcp.json`'ından Playwright ve Chrome DevTools MCP çıkarıldı; `/findings-perf` ve `/findings-ux` gerekirse sorup ekler.
691
- - Kalkan: `vercel promote` ve `vercel rollback` de sorulur (prod ortamını değiştirir).
724
+ ### Changed
725
+ - Playwright and Chrome DevTools MCP were removed from the web template's `.mcp.json`; `/findings-perf` and `/findings-ux` ask and add them when needed.
726
+ - Shield: `vercel promote` and `vercel rollback` also ask (they change the prod environment).
692
727
 
693
- ### Elle uyarla
694
- - Web projesinde `.mcp.json`: `playwright` ve `chrome-devtools` girdilerini kaldırmak isteğe bağlı (bağlam tasarrufu; gerekince katalogdan eklenir).
695
- - Web projesinde `.claude/settings.json` → `permissions.allow`'a `Bash(npx -y @playwright/cli@0.1.22 open:*)` ve `snapshot`, `console`, `requests`, `screenshot` için aynı biçimde birer satır ekle (3.11.1).
696
- - `docs/architecture/stack.md`: "Doğrulama" bölümünde Playwright MCP yerine Playwright CLI; "MCP" satırı ve şema kuralı kitin şablonundaki gibi (web ve mobil).
728
+ ### Adapt by hand
729
+ - In a web project's `.mcp.json`, removing the `playwright` and `chrome-devtools` entries is optional (it saves context; they can be added from the catalog when needed).
730
+ - In a web project, add `Bash(npx -y @playwright/cli@0.1.22 open:*)` to `.claude/settings.json` → `permissions.allow`, and one line in the same form each for `snapshot`, `console`, `requests`, `screenshot` (3.11.1).
731
+ - `docs/architecture/stack.md`: in the "Doğrulama" (verification) section, Playwright CLI instead of Playwright MCP; the "MCP" line and the schema rule as in the kit's template (web and mobile).
697
732
 
698
733
  ## [3.10.1] - 2026-10-23
699
734
 
700
- ### Güvenlik
701
- - `tools.mjs` izni daraltıldı (commit sonrası güvenlik incelemesi): durum, `--gerekli`, `--olc` ve `--kapat` izinli; `--ac` her zaman sorulur. Paket açmak eklenti hook'larını kullanıcının yetkisiyle çalıştırır.
735
+ ### Security
736
+ - The `tools.mjs` permission was narrowed (post-commit security review): status, `--gerekli`, `--olc` and `--kapat` are allowed; `--ac` always asks. Enabling a package runs plugin hooks with the user's authority.
702
737
 
703
- ### Elle uyarla
704
- - 3.10.0'ı uyguladıysan `.claude/settings.json` → `permissions.allow`'daki `Bash(node .claude/hooks/tools.mjs:*)` satırını kitin dört dar satırıyla değiştir, `permissions.ask`'e `Bash(node .claude/hooks/tools.mjs --ac:*)` ekle.
738
+ ### Adapt by hand
739
+ - If you applied 3.10.0, replace the `Bash(node .claude/hooks/tools.mjs:*)` line in `.claude/settings.json` → `permissions.allow` with the kit's four narrow lines, and add `Bash(node .claude/hooks/tools.mjs --ac:*)` to `permissions.ask`.
705
740
 
706
741
  ## [3.10.0] - 2026-10-23
707
742
 
708
- ### Eklendi
709
- - **Bağlam paketleri ve `/tools`.** Eklentiler çekirdek (hep açık) ve paket olarak ayrıldı. `tasarim` (taste-skill, ui-ux-pro-max, gsap-skills), `guvenlik` (Trail of Bits 7'li, claude-security), `yayin` (understand-anything, session-report) ve `video` (remotion) kapalı gelir. `/design`, `/findings-security`, `/findings-all`, `/release first` ilk adımda `tools.mjs --gerekli <paket>` ile bakar, kapalıysa maliyetiyle açmayı sorar. Açma sadece bu makineyi etkiler (`.claude/settings.local.json`). Neden: skill listesi bağlamın %1'iyle sınırlı; taşınca açıklamalar düşer ve skill kaçırılır.
710
- - `node .claude/hooks/tools.mjs --olc`: kurulu eklentilerin skill ve ajan açıklama yükünü ölçer. `/maintain monthly` bağlam bütçesini kontrol eder.
711
- - Yeni pazarlar: `gsap-skills` (GreenSock, resmi) ve `understand-anything` (kapalı; kullanımı sonraki sürümde komutlara bağlanacak).
743
+ ### Added
744
+ - **Context packages and `/tools`.** Plugins were split into core (always on) and packages. `tasarim` (taste-skill, ui-ux-pro-max, gsap-skills), `guvenlik` (Trail of Bits 7-pack, claude-security), `yayin` (understand-anything, session-report) and `video` (remotion) come switched off. `/design`, `/findings-security`, `/findings-all` and `/release first` check with `tools.mjs --gerekli <paket>` in their first step and, if the package is off, ask whether to switch it on, with the cost. Switching on affects only this machine (`.claude/settings.local.json`). Why: the skill list is limited to 1% of the context; when it overflows, descriptions drop and skills get missed.
745
+ - `node .claude/hooks/tools.mjs --olc`: measures the skill and agent description load of installed plugins. `/maintain monthly` checks the context budget.
746
+ - New marketplaces: `gsap-skills` (GreenSock, official) and `understand-anything` (off; its use will be tied to the commands in a later release).
712
747
 
713
- ### Değişti
714
- - `motion-video` Remotion'ı `tools.mjs --ac video` ile açar.
715
- - `/start` Hafif profil artık sadece hookify ve claude-md-management'ı kapatır; paket eklentileri her profilde zaten kapalı.
716
- - Pano, açık kalan paketleri "Dikkat" listesinde gösterir.
748
+ ### Changed
749
+ - `motion-video` switches Remotion on with `tools.mjs --ac video`.
750
+ - The `/start` Light profile now switches off only hookify and claude-md-management; package plugins are already off in every profile.
751
+ - The dashboard shows packages left on in the "Dikkat" (attention) list.
717
752
 
718
- ### Elle uyarla
719
- - `.claude/settings.json` projeye aittir ve güncellemede değişmez. Paketleri kullanmak için `enabledPlugins` içinde şunları `false` yap: `taste-skill@taste-skill`, `ui-ux-pro-max@ui-ux-pro-max-skill`, Trail of Bits'in 7 eklentisi, `claude-security@claude-plugins-official`, `session-report@claude-plugins-official`. `extraKnownMarketplaces`'e `gsap-skills` ve `understand-anything` pazarlarını ekle; izinler için yukarıdaki güvenlik maddesine bak. Örnek: kitin `.claude/settings.json` dosyası.
720
- - `CLAUDE.md`: "Doğru skill'i kullan" maddesinin sonuna paket cümlesi (kitin `CLAUDE.md`'si).
753
+ ### Adapt by hand
754
+ - `.claude/settings.json` belongs to the project and does not change on update. To use the packages, set these to `false` in `enabledPlugins`: `taste-skill@taste-skill`, `ui-ux-pro-max@ui-ux-pro-max-skill`, the 7 Trail of Bits plugins, `claude-security@claude-plugins-official`, `session-report@claude-plugins-official`. Add the `gsap-skills` and `understand-anything` marketplaces to `extraKnownMarketplaces`; for permissions, see the security item above. Example: the kit's `.claude/settings.json` file.
755
+ - `CLAUDE.md`: the package sentence at the end of the "Use the right skill" item (the kit's `CLAUDE.md`).
721
756
 
722
757
  ## [3.9.3] - 2026-10-23
723
758
 
724
- ### Düzeltildi
725
- - Antigravity okuma koruması iç içe argümanlara da bakar: dizi ya da nesne içindeki `.env` ve `secrets/` yolları da engellenir.
759
+ ### Fixed
760
+ - The Antigravity read protection also checks nested arguments: `.env` and `secrets/` paths inside arrays or objects are blocked too.
726
761
 
727
762
  ## [3.9.2] - 2026-10-23
728
763
 
729
- ### Düzeltildi
730
- - Antigravity okuma koruması, bütün araçlarda (`matcher: "*"`) ve argümanlardaki her metinde `.env` ve `secrets/` yolunu arar. Böylece bilinmeyen bir okuma aracı da kapsanır. `secrets` klasörünün kendisi de engellenir.
764
+ ### Fixed
765
+ - The Antigravity read protection looks for `.env` and `secrets/` paths in all tools (`matcher: "*"`) and in any text in the arguments. So an unknown read tool is covered too. The `secrets` folder itself is also blocked.
731
766
 
732
- ### Bilinen sınır
733
- - Proje kökünde içerik araması (`grep_search`, kabukta `grep -r`), `.env` içeriğine ulaşabilir. Hook arama sonucunu süzemez. `.env` dosyası olan projede kök aramayı engellemek aramayı kullanılmaz hale getirirdi.
767
+ ### Known limits
768
+ - A content search in the project root (`grep_search`, `grep -r` in the shell) can reach the contents of `.env`. The hook cannot filter the search result. Blocking root search in a project that has a `.env` file would make search unusable.
734
769
 
735
- ### Elle uyarla
736
- - Projede `.agents/hooks.json`'ı değiştirdiysen, `kit-okuma-korumasi` → `matcher` değerini `"*"` yap.
770
+ ### Adapt by hand
771
+ - If you changed `.agents/hooks.json` in the project, set the `kit-okuma-korumasi` → `matcher` value to `"*"`.
737
772
 
738
773
  ## [3.9.1] - 2026-10-23
739
774
 
740
- Yayın sonrası otomatik güvenlik incelemesinin bulguları (sadece Codex ve Antigravity'yi etkiler).
775
+ Findings from the automatic post-release security review (they affect only Codex and Antigravity).
741
776
 
742
- ### Düzeltildi
743
- - Kabukla koruma dosyası değiştirme kuralı, yolu eğik çizgisiz yazılan komutları da yakalar (`rm -r .claude`). `git checkout` ve `git restore` ile geri döndürme de sorulur.
744
- - Kalkanın iki listesi aynı komutta farklı karar verirse sıkı olan kazanır: `git push --force origin main` artık "sor" yerine engellenir.
745
- - Antigravity'de `.env` ve `secrets/` okuma araçlarıyla (`view_file`, `grep_search`, `list_dir`, `find_by_name`) okunamaz. Claude Code'daki `Read(./.env)` engelinin karşılığı. `.agents/hooks.json`'a `kit-okuma-korumasi` eklendi.
777
+ ### Fixed
778
+ - The rule against changing protection files from the shell also catches commands that write the path without a slash (`rm -r .claude`). Reverting with `git checkout` and `git restore` also asks.
779
+ - If the shield's two lists decide differently on the same command, the stricter one wins: `git push --force origin main` is now blocked instead of "ask".
780
+ - In Antigravity, `.env` and `secrets/` cannot be read with the read tools (`view_file`, `grep_search`, `list_dir`, `find_by_name`). This is the counterpart of the `Read(./.env)` block in Claude Code. `kit-okuma-korumasi` was added to `.agents/hooks.json`.
746
781
 
747
- ### Bilinen sınır
748
- - Codex'te hook betiği Unix'te `git rev-parse --show-toplevel` ile bulunur. Git yoksa veya klasör depo değilse hook çalışmaz ve koruma devreye girmez. `init` git deposu açtığı için normal kurulumda bu olmaz.
782
+ ### Known limits
783
+ - In Codex, the hook script is found on Unix with `git rev-parse --show-toplevel`. If there is no git or the folder is not a repo, the hook does not run and the protection does not kick in. `init` creates a git repo, so this does not happen in a normal install.
749
784
 
750
- ### Elle uyarla
751
- - Projede `.agents/hooks.json`'ı değiştirdiysen, `/kit-update` yeni hali `.kit-new` olarak getirir; `kit-okuma-korumasi` bölümünü elle ekle.
785
+ ### Adapt by hand
786
+ - If you changed `.agents/hooks.json` in the project, `/kit-update` brings the new version as `.kit-new`; add the `kit-okuma-korumasi` section by hand.
752
787
 
753
788
  ## [3.9.0] - 2026-10-23
754
789
 
755
- Kit artık OpenAI Codex ve Google Antigravity'de de çalışıyor: kurallar, komutlar ve korumalar. Kurul ajanları, soru arayüzü ve durum çubuğu Claude Code'a özel kalıyor. Dayanak: iki aracın resmi hook ve skill dokümanları.
756
-
757
- ### Eklendi
758
- - **`AGENTS.md`:** Ortak kurallar (temel kurallar, Bitti tanımı, Asla, Git, Komutlar, proje adı) buraya taşındı. Üç araç da bu dosyayı okur. `CLAUDE.md` onu `@AGENTS.md` ile içe alır ve Claude Code'a özel kuralları tutar (skill tablosu, limit). Claude Code'un gördüğü kurallar değişmedi; sadece sıralama değişti ve iki araç için bir karşılık bölümü eklendi.
759
- - **`kit.mjs --tool claude,codex,antigravity`** (`init`, `install`, `update`): Birden fazla araç seçilebilir. `init` bu seçeneği verilmezse terminalde sorar. Seçim `.kit.json` → `tool` alanına yazılır. Claude Code dosyaları her durumda kurulur.
760
- - Codex veya Antigravity seçildiyse `.claude/commands/*.md` ve `.claude/skills/` dosyalarından `.agents/skills/<ad>/SKILL.md` üretilir. Codex bunları `$start` ya da `/skills` ile, Antigravity `/start` ile çağırır. Kaynak tek kalır, kit reposunda kopya tutulmaz. Kopyalar her güncellemede yenilenir.
761
- - Hook ayarları: `.codex/hooks.json` (Codex) ve `.agents/hooks.json` (Antigravity). Şablonları `kit/tools/<araç>/` altında. Güncellemede diğer kit dosyalarıyla aynı kural geçerli: değiştirilmediyse yenilenir, değiştirildiyse `.kit-new` olarak gelir.
762
- - **Hook girdi/çıktı katmanı (`.claude/hooks/arac.mjs`):** Sır engeli, yıkıcı komut kalkanı, paket kapısı, yapı koruyucu, düzenleme kilidi ve oturum başı hook'u üç aracın biçimini okur ve kararı o aracın biçiminde yazar.
763
- - Codex: Claude ile aynı alanlar. Dosya düzenleme `apply_patch` ile gelir; eklenen, güncellenen ve taşınan dosyalar yama metninden çıkarılır.
764
- - Antigravity: `toolCall.name/args` biçimi. Desteklenen araçlar: `run_command`, `write_to_file`, `replace_file_content`, `multi_replace_file_content`. Karar `decision`, oturum notu `injectSteps` ile yazılır.
765
- - Codex'te "sor" kararı (`ask`) yok; verilirse araç yine çalışıyor. Bu yüzden Codex'te "sor" engellemeye döner ve AI'ya kullanıcıya sorması söylenir (kullanıcı kararı).
766
- - Proje kökü Codex'te girdideki `cwd`'den, Antigravity'de `workspacePaths`'ten alınır.
767
- - **Claude Code izin listesinin karşılığı (Codex, Antigravity):** Bu araçlarda `.claude/settings.json` izinleri yok. Güvenlik denetiminin RET kararı üzerine karşılıkları hook'a eklendi. Sadece bu iki araçta uygulanır, Claude Code'un davranışı değişmez.
768
- - Engellenen komutlar: `rm -rf`, Windows'ta toplu silme, `git reset --hard`, `git push --force` ve `.env` ile `secrets/` erişimi.
769
- - `freeze-guard --off` sorulur.
770
- - `.env` dosyalarına yazma engellenir. Şu dosyalara yazma sorulur: `CLAUDE.md`, `AGENTS.md`, `.claude/**` (kilit dosyası dahil), `.codex/**`, `.agents/hooks.json`, `.mcp.json`, `.github/workflows/**`. Codex'te "sor" engellemeye döner.
771
- - Sır engeli kabuk komutunu da tarar (heredoc, `echo > dosya`).
772
- - Fail-closed: Yama başlığı anlaşılmazsa yamanın tamamı taranır ve kilit engeller. Antigravity'de içerik alanının adı ne olursa olsun bütün argümanlar taranır; hedef yol yoksa kilit engeller.
773
- - Proje kökü, hook betiğinin kendi yerinden (`<proje>/.claude/hooks/`) bulunur; cwd'ye ya da ajanın açabileceği işaretlere (`.git`) bağlı değildir. Böylece Codex alt klasörde açılsa da kilit ve yapı koruması çalışır. Göreli yama yolları oturumun klasörüne göre çözülür.
774
- - Kural veya koruma dosyasını anan ve onu yazan ya da silen kabuk komutu sorulur (`rm`, `sed -i`, `>`, `cp`, `Remove-Item`…). Kit betiklerini çalıştırmak (`node .claude/hooks/...`) serbesttir.
775
- - Codex tanıma: `CLAUDE_PROJECT_DIR` yoksa girdi Codex sayılır (ask, engellemeye döner).
776
- - **`/start` ve `/adopt` Adım 0c:** Projede kullanılacak araçlar çoklu seçimle sorulur. `init` sırasında seçildiyse sadece bildirilir.
777
- - Pano başlığında Claude Code dışındaki araçlar görünür. Yapı haritasına `AGENTS.md`, `.agents/**` ve `.codex/**` eklendi.
778
- - Testler (`kit/tests/arac.test.mjs`): Sır yazma denemesi üç aracın girdi biçiminde de engellenir. Denetimde bulunan atlatma yolları saldırgan testi olarak eklendi: boşluklu yama başlığı, alan adı değişimi, alt klasör, koruma dosyası ve kilit silme, yasak komutlar, kabukla sır yazma, turn_id'siz Codex girdisi. Ayrıca kalkan, yapı koruyucu, düzenleme kilidi ve oturum başı her biçimde test edilir. `init --tool` ile doğru dosyaların üretildiği, güncellemede kopyaların yenilendiği ve kullanıcının değiştirdiği hook ayarının korunduğu da testli.
779
-
780
- ### Değişti
781
- - **`init` dolu klasörde Codex ve Antigravity dosyalarını da ezmez.** Projenin kendi `.agents/skills/` dosyaları korunur; kitin hali `.kit-new` olarak yanına konur. Projede `AGENTS.md` varsa kitin `CLAUDE.md`'si, `/adopt` Adım 4'e kadar kitin kurallarını `@AGENTS.md.kit-new` satırıyla içe alır.
782
- - `--tool` verilmeden ve etkileşimsiz çalışan `init` (örneğin AI'nın çalıştırdığı) `tool` alanını boş bırakır; aracı `/start` veya `/adopt` sorar.
783
- - Yıkıcı komut kalkanı `git clean` komutunu bayraklar ayrı yazıldığında da yakalıyor (`-f -d`, `-d -f`, `--force -d`). Bu düzeltme Claude Code'u da etkiler.
784
- - Sır engeli artık çıkış kodu 2 yerine `permissionDecision: deny` ile engelliyor. Claude Code'da sonuç aynı; Antigravity çıkış kodunu belgelemediği için bu biçime geçildi.
785
- - `git push` kalkanı `-fu` ve `+dal` biçimlerini de yakalar; `.env` kuralı `.env.example` dışındaki tüm `.env*` dosyalarını kapsar (sadece Codex ve Antigravity).
786
- - Proje adı `AGENTS.md`'den okunur (durum çubuğu, pano, bildirim). 3.9.0 öncesi projelerde ad `CLAUDE.md`'de kalır ve oradan okunmaya devam eder.
787
- - "Komutlar", "Bitti tanımı" ve "Asla" listelerine yapılan atıflar `AGENTS.md`'yi gösteriyor (`/build`, `/release`, `/rollback`, `/retro`, `/wrap-up`, karar protokolü, kod inceleme ajanı).
788
-
789
- ### Bilinen sınırlar
790
- - Kurul ve konsey ajanları, `AskUserQuestion`, durum çubuğu, limit okuma, pano yenileme (`Stop`), commit kapısı ve hatırlatıcı Codex ve Antigravity'de yok.
791
- - Antigravity IDE'de skill'lerin eğik çizgiyle çağrıldığı belgelenmemiş (App ve CLI'da belgeli).
792
- - Codex'te proje hook'ları, klasöre güvenilip `/hooks` ile onaylanınca çalışır.
793
- - Kabuk komutları için hook sadece kazara veya tek adımda yapılan atlatmayı keser. Glob (`rm .cl*/…`), `cd` ile yol bölme ve değişkenle kurulan yollar yakalanmaz; asıl sınırı aracın kendi sandbox'ı çizer.
794
- - Kabuk komutuyla dosya yazmak (`echo > dosya`, `sed -i`) yapı koruyucuya ve düzenleme kilidine takılmaz. Claude Code'da da aynı, orada kabuk komutları onaya gelir.
795
- - Codex'te hook betiği Unix'te `git rev-parse --show-toplevel` ile, Windows'ta göreli yolla çağrılır. Bu yüzden Windows'ta Codex proje kökünde açılmalı.
796
- - İki aracın hook biçimi resmi dokümana göre yazıldı ve testlerle doğrulandı. Gerçek araçta henüz denenmedi.
797
-
798
- ### Elle uyarla
799
- - **`AGENTS.md` ve `CLAUDE.md`** (Codex veya Antigravity kullanacaksan gerekli, yoksa isteğe bağlı): Güncelleme `AGENTS.md`'yi yer tutucularla ekler; mevcut `CLAUDE.md`'ye dokunmaz. Proje adını, tek cümlelik tanımı, Komutlar bölümünü ve varsa `## Proje kuralları` bölümünü `AGENTS.md`'ye taşı. Sonra `CLAUDE.md`'yi kitin yeni `CLAUDE.md`'si ile değiştir (`@AGENTS.md` + Claude'a özel kurallar). Bu yapılmazsa Claude Code eskisi gibi çalışır, Codex ve Antigravity ise yer tutuculu kuralları görür.
800
- - **Araç eklemek:** `/kit-update --tool claude,codex`.
801
- - **`.claude/settings.json` → `permissions.ask`:** `Edit(./AGENTS.md)`, `Edit(./.codex/**)` ve `Edit(./.agents/hooks.json)` satırlarını ekle. Bu dosyalar da kural ve koruma taşıdığı için değişiklikleri onayla yapılmalı.
802
- - **`.claude/structure.json` → `allow`:** `AGENTS.md`, `.agents/**` ve `.codex/**` satırlarını ekle.
790
+ The kit now also works in OpenAI Codex and Google Antigravity: rules, commands and protections. The board agents, the question interface and the status line stay Claude Code-only. Basis: the official hook and skill docs of both tools.
791
+
792
+ ### Added
793
+ - **`AGENTS.md`:** The shared rules (core rules, definition of done, Never, Git, Komutlar, project name) moved here. All three tools read this file. `CLAUDE.md` imports it with `@AGENTS.md` and keeps the Claude Code-specific rules (the skill table, the limit). The rules Claude Code sees did not change; only the order changed and a counterpart section for the other two tools was added.
794
+ - **`kit.mjs --tool claude,codex,antigravity`** (`init`, `install`, `update`): More than one tool can be selected. If this option is not given, `init` asks in the terminal. The choice is written to the `.kit.json` → `tool` field. Claude Code files are always installed.
795
+ - If Codex or Antigravity is selected, `.agents/skills/<ad>/SKILL.md` is generated from the `.claude/commands/*.md` and `.claude/skills/` files. Codex calls them with `$start` or `/skills`, Antigravity with `/start`. The source stays single; no copies are kept in the kit repo. The copies are refreshed on every update.
796
+ - Hook settings: `.codex/hooks.json` (Codex) and `.agents/hooks.json` (Antigravity). Their templates are under `kit/tools/<araç>/`. On update, the same rule as the other kit files applies: refreshed if not changed, delivered as `.kit-new` if changed.
797
+ - **Hook input/output layer (`.claude/hooks/arac.mjs`):** The secret block, destructive command shield, package gate, structure guard, edit lock and session-start hook read the format of all three tools and write the decision in that tool's format.
798
+ - Codex: the same fields as Claude. File edits arrive with `apply_patch`; added, updated and moved files are extracted from the patch text.
799
+ - Antigravity: the `toolCall.name/args` format. Supported tools: `run_command`, `write_to_file`, `replace_file_content`, `multi_replace_file_content`. The decision is written as `decision`, the session note as `injectSteps`.
800
+ - Codex has no "ask" decision (`ask`); if one is given, the tool still runs. So in Codex "ask" turns into a block and the AI is told to ask the user (the user decides).
801
+ - The project root is taken from `cwd` in the input in Codex and from `workspacePaths` in Antigravity.
802
+ - **Counterpart of the Claude Code permission list (Codex, Antigravity):** These tools have no `.claude/settings.json` permissions. Following the RET decision of the security audit, counterparts were added to the hook. Applied only in these two tools; Claude Code's behavior does not change.
803
+ - Blocked commands: `rm -rf`, bulk deletion on Windows, `git reset --hard`, `git push --force` and access to `.env` and `secrets/`.
804
+ - `freeze-guard --off` asks.
805
+ - Writing to `.env` files is blocked. Writing to these files asks: `CLAUDE.md`, `AGENTS.md`, `.claude/**` (lock file included), `.codex/**`, `.agents/hooks.json`, `.mcp.json`, `.github/workflows/**`. In Codex "ask" turns into a block.
806
+ - The secret block also scans the shell command (heredoc, `echo > dosya`).
807
+ - Fail-closed: If the patch header cannot be understood, the whole patch is scanned and the lock blocks. In Antigravity, all arguments are scanned whatever the name of the content field; if there is no target path, the lock blocks.
808
+ - The project root is found from the hook script's own location (`<proje>/.claude/hooks/`); it does not depend on the cwd or on markers an agent could open (`.git`). So the lock and structure guard work even if Codex is opened in a subfolder. Relative patch paths are resolved against the session's folder.
809
+ - A shell command that names a rule or protection file and writes or deletes it asks (`rm`, `sed -i`, `>`, `cp`, `Remove-Item`…). Running the kit scripts (`node .claude/hooks/...`) is free.
810
+ - Codex detection: if `CLAUDE_PROJECT_DIR` is missing, the input counts as Codex (ask turns into a block).
811
+ - **`/start` and `/adopt` Step 0c:** The tools to use in the project are asked with a multi-select. If chosen during `init`, it is only announced.
812
+ - The dashboard header shows tools other than Claude Code. `AGENTS.md`, `.agents/**` and `.codex/**` were added to the structure map.
813
+ - Tests (`kit/tests/arac.test.mjs`): A secret-writing attempt is blocked in the input format of all three tools. The bypass paths found in the audit were added as adversarial tests: a patch header with spaces, a field name change, a subfolder, protection file and lock deletion, forbidden commands, writing a secret through the shell, Codex input without turn_id. The shield, structure guard, edit lock and session start are also tested in every format. It is also tested that `init --tool` generates the right files, that update refreshes the copies, and that a hook setting the user changed is kept.
814
+
815
+ ### Changed
816
+ - **`init` in a non-empty folder does not overwrite the Codex and Antigravity files either.** The project's own `.agents/skills/` files are kept; the kit's version is placed next to them as `.kit-new`. If the project has an `AGENTS.md`, the kit's `CLAUDE.md` imports the kit's rules with the line `@AGENTS.md.kit-new` until `/adopt` Step 4.
817
+ - `init` that runs without `--tool` and non-interactively (for example run by the AI) leaves the `tool` field empty; `/start` or `/adopt` asks for the tool.
818
+ - The destructive command shield also catches `git clean` when the flags are written separately (`-f -d`, `-d -f`, `--force -d`). This fix affects Claude Code too.
819
+ - The secret block now blocks with `permissionDecision: deny` instead of exit code 2. The result is the same in Claude Code; the switch to this format was made because Antigravity does not document the exit code.
820
+ - The `git push` shield also catches the `-fu` and `+dal` forms; the `.env` rule covers all `.env*` files except `.env.example` (Codex and Antigravity only).
821
+ - The project name is read from `AGENTS.md` (status line, dashboard, notification). In projects from before 3.9.0, the name stays in `CLAUDE.md` and is still read from there.
822
+ - References to the "Komutlar", "definition of done" and "Never" lists now point to `AGENTS.md` (`/build`, `/release`, `/rollback`, `/retro`, `/wrap-up`, the decision protocol, the code review agent).
823
+
824
+ ### Known limits
825
+ - The board and council agents, `AskUserQuestion`, the status line, limit reading, dashboard refresh (`Stop`), the commit gate and the reminder are not in Codex and Antigravity.
826
+ - It is not documented that skills are called with a slash in Antigravity IDE (it is documented in the App and CLI).
827
+ - In Codex, project hooks run once the folder is trusted and approved with `/hooks`.
828
+ - For shell commands, the hook only stops an accidental or single-step bypass. A glob (`rm .cl*/…`), splitting a path with `cd` and paths built with variables are not caught; the real limit is drawn by the tool's own sandbox.
829
+ - Writing a file with a shell command (`echo > dosya`, `sed -i`) does not hit the structure guard or the edit lock. It is the same in Claude Code, where shell commands come up for approval.
830
+ - In Codex, the hook script is called with `git rev-parse --show-toplevel` on Unix and with a relative path on Windows. So on Windows, Codex must be opened in the project root.
831
+ - The hook format of both tools was written according to the official docs and verified with tests. It has not been tried in the real tool yet.
832
+
833
+ ### Adapt by hand
834
+ - **`AGENTS.md` and `CLAUDE.md`** (needed if you will use Codex or Antigravity, otherwise optional): The update adds `AGENTS.md` with placeholders; it does not touch the existing `CLAUDE.md`. Move the project name, the one-sentence description, the Komutlar section and, if present, the `## Proje kuralları` section to `AGENTS.md`. Then replace `CLAUDE.md` with the kit's new `CLAUDE.md` (`@AGENTS.md` + Claude-specific rules). If you skip this, Claude Code works as before, while Codex and Antigravity see the rules with placeholders.
835
+ - **Adding a tool:** `/kit-update --tool claude,codex`.
836
+ - **`.claude/settings.json` → `permissions.ask`:** Add the lines `Edit(./AGENTS.md)`, `Edit(./.codex/**)` and `Edit(./.agents/hooks.json)`. These files also carry rules and protection, so changes to them should need approval.
837
+ - **`.claude/structure.json` → `allow`:** Add the lines `AGENTS.md`, `.agents/**` and `.codex/**`.
803
838
 
804
839
  ## [3.8.0] - 2026-10-23
805
840
 
806
- ### Eklendi
807
- - **`/handoff` (devir):** Proje başka bir kişiye veya hesaba geçerken (ekip arkadaşı, kurumsal hesap, kapanan hesap) aynı yerden devam etmek için.
808
- - Devreden kişi `/handoff` çalıştırır: `/wrap-up` adımları uygulanır, `docs/workflow/handoff.md`'ye devir notu yazılır. Notta nerede kalındığı, bekleyen kararlar, gereken hesaplar ve ortam değişkenlerinin sadece adları (değerleri asla) bulunur. Ardından commit ve push önerilir.
809
- - Devralan kişi `/handoff devral` çalıştırır: not özetlenir; eklentiler, bağımlılıklar ve testler kurulup çalıştırılır; sıradaki görev söylenir.
810
- - Bekleyen devir notu oturum başında ekranda (`Devir notu var: /handoff devral`) ve panonun "Dikkat" listesinde görünür (testli).
811
- - **`/research` (literatür ve pazar araştırması):** Akademik makaleler (Semantic Scholar ve arXiv açık arayüzleri), GitHub'daki benzer projeler (`gh search repos`) ve ticari ürünler taranır.
812
- - Rapor `docs/research/` altına yazılır: kategori tabloları, fark haritası, fırsatlar. Panoda zaten bir yeri vardı.
813
- - Eklenecek özellikler çoklu seçimle sorulur; seçilenler PRD'ye ve yol haritasına girer.
814
- - Derinlik maliyetiyle sorulur: hızlı ~%10-15, derin ~%25-35. `/start` Adım 1b'de ve `/adopt` Adım 3b'de pahalı adım olarak isteğe bağlı sunulur.
815
-
816
- ### Değişti
817
- - **Limit artık işi durdurmuyor, sadece uyarıyor.** Gerçek kullanımda %90'daki "güvenli dur" kuralı işi neredeyse tamamen kesiyordu ve kullanıcının devam için ikna etmesi gerekiyordu. Yeni kural:
818
- - %90'da hatırlatma, %95'te "çok azaldı" uyarısı (kaldığı yer sessizce kaydedilir), %99'da "iş yarım kalabilir" uyarısı.
819
- - Kullanıcı "dur" demedikçe iş devam eder. Sarı ve kırmızı seviyede seçenek sorusu da kalktı; maliyet tek satırla söylenir, seçenekler istenirse sunulur.
820
- - Etkilenen yerler: `docs/workflow/usage-limits.md`, `CLAUDE.md` kural 4, `/build`, `/plan-task`, `/start`, `/board`.
821
-
822
- ### Elle uyarla
823
- - `CLAUDE.md` (projenin) kural 4: limit cümlesini kitin `CLAUDE.md`'sindeki yeni haliyle değiştir. Değiştirilmezse eski "%90'da güvenli dur" kuralı projede geçerli kalır.
841
+ ### Added
842
+ - **`/handoff`:** For continuing from the same place when a project passes to another person or account (a teammate, a corporate account, a closing account).
843
+ - The person handing over runs `/handoff`: the `/wrap-up` steps are applied and a handoff note is written to `docs/workflow/handoff.md`. The note holds where things were left, pending decisions, needed accounts and only the names of environment variables (never the values). Then a commit and push are suggested.
844
+ - The person taking over runs `/handoff devral`: the note is summarized; plugins, dependencies and tests are installed and run; the next task is stated.
845
+ - A pending handoff note shows on screen at session start (`Devir notu var: /handoff devral`) and in the dashboard's "Dikkat" (attention) list (tested).
846
+ - **`/research` (literature and market research):** Academic papers (the Semantic Scholar and arXiv open interfaces), similar projects on GitHub (`gh search repos`) and commercial products are scanned.
847
+ - The report is written under `docs/research/`: category tables, a gap map, opportunities. It already had a place in the dashboard.
848
+ - Features to add are asked with a multi-select; the selected ones go into the PRD and the roadmap.
849
+ - Depth is asked with its cost: quick ~10-15%, deep ~25-35%. In `/start` Step 1b and `/adopt` Step 3b it is offered as an optional, expensive step.
850
+
851
+ ### Changed
852
+ - **The limit no longer stops work, it only warns.** In real use, the "stop safely" rule at 90% cut work off almost completely and the user had to persuade it to continue. The new rule:
853
+ - A reminder at 90%, a "very low" warning at 95% (where we left off is saved silently), a "work may be left unfinished" warning at 99%.
854
+ - Work continues unless the user says "stop". The options question at yellow and red level was also dropped; the cost is stated in one line and the options are offered if asked.
855
+ - Affected places: `docs/workflow/usage-limits.md`, `CLAUDE.md` rule 4, `/build`, `/plan-task`, `/start`, `/board`.
856
+
857
+ ### Adapt by hand
858
+ - Rule 4 of the project's `CLAUDE.md`: replace the limit sentence with the new version in the kit's `CLAUDE.md`. If you do not, the old "stop safely at 90%" rule stays in force in the project.
824
859
 
825
860
  ## [3.7.0] - 2026-10-23
826
861
 
827
- Kit ile proje artık ayrı klasörlerde durabiliyor ve var olan projeler kite alınabiliyor. İkisi de gerçek proje denemesinden gelen geri bildirim.
828
-
829
- ### Eklendi
830
- - **`kit.mjs init` (kur ve ayrıl):** Kit hangi klasörde duruyorsa oradan çalışır ve projeyi hedef klasöre kurar (`node vibe-kit/kit/kit.mjs init`, varsayılan hedef bulunulan klasör). Kit klasörüne dokunulmaz, birden çok projede tekrar kullanılabilir.
831
- - Proje klasöründe git deposu yoksa açar. Kit proje klasörünün içindeyse `.gitignore`'a ekler.
832
- - Dolu klasörde projenin dosyalarının üzerine yazmaz: kitin hali yanına `.kit-new` olarak konur. `.gitignore` satır satır, `.claude/settings.json` derin birleşir; projenin değerleri korunur.
833
- - `.kit.json` → `type: null` "kuruldu, tip bekleniyor" demek. Durum çubuğu, pano ve oturum başı bunu `/start` veya `/adopt` önerisi olarak gösterir.
834
- - `install --type <tip> --project <yol>`: init ile kurulan projeye tip katmanını ekler. init'in koyduğu ve kullanıcının değiştirmediği yer tutucular ezilir, projenin kendi dosyaları ezilmez. Kit klasörü silinmez.
835
- - Testli: boş klasör, dolu klasör, ikinci init reddi, ardından `update`.
836
- - **`/adopt` (var olan projeyi kite al):** 9 adımlı uyum sihirbazı.
837
- - Tarama derinliği maliyetiyle sorulur (hızlı / derin + seçilen bulgu raporları).
838
- - Stack, yapı, özellikler, testler ve git geçmişi taranır. `.kit-new` dosyaları tek tek karar olarak sorulur.
839
- - PRD, stack, mimari ve README koddan çıkarılır; amaç, kitle ve "neyi beğenmiyorsun" sorulur.
840
- - CLAUDE.md kitinkine göre yeniden yazılır. Eski dosyadaki projeye özel kurallar çoklu seçimle sorulup `## Proje kuralları` bölümüne taşınır; eskisi `docs/archive/`'e gider.
841
- - Mevcut testler çalıştırılıp değerlendirilir. Kritik akışların doğru davranışı kullanıcıya sorulur: kod yanlış davranışı kilitlemesin.
842
- - Uyum yol haritası: Faz 0'da güvenli zemin ve kritik akış testleri, Faz 1'de kitin klasör yapısına özellik özellik taşıma (ayrı dal, her görevde çalışan nokta), Faz 2'de bulgular, sonra yeni özellikler.
843
-
844
- ### Değişti
845
- - `/start` Adım 1 iki kurulum yolunu tanır (template veya init); klasörde kod varsa `/adopt` önerir. Adım 3'te init yolunun komutu var.
846
- - README ve rehber: Yeni kurulum yolu ana yol oldu, "Use this template" alternatif olarak kaldı.
847
-
848
- ### Elle uyarla
849
- - `CLAUDE.md` (projenin): "Kurulum durumu" satırı `.kit.json` → `type: null` durumunu ve `/adopt`'u da içeriyor (kitin `CLAUDE.md`'sine bak). Kurulmuş projelerde etkisi yok.
862
+ The kit and the project can now sit in separate folders, and existing projects can be brought into the kit. Both come from feedback on a real project trial.
863
+
864
+ ### Added
865
+ - **`kit.mjs init` (install and detach):** The kit runs from the folder where it sits and installs the project into the target folder (`node vibe-kit/kit/kit.mjs init`, the default target is the current folder). The kit folder is not touched and can be reused for several projects.
866
+ - If the project folder has no git repo, it creates one. If the kit is inside the project folder, it adds it to `.gitignore`.
867
+ - In a non-empty folder it does not overwrite the project's files: the kit's version is placed next to them as `.kit-new`. `.gitignore` is merged line by line, `.claude/settings.json` deeply; the project's values are kept.
868
+ - `.kit.json` → `type: null` means "installed, type pending". The status line, dashboard and session start show this as a `/start` or `/adopt` suggestion.
869
+ - `install --type <tip> --project <yol>`: adds the type layer to a project installed with init. Placeholders that init placed and the user did not change are overwritten; the project's own files are not. The kit folder is not deleted.
870
+ - Tested: an empty folder, a non-empty folder, rejection of a second init, then `update`.
871
+ - **`/adopt` (bring an existing project into the kit):** A 9-step alignment wizard.
872
+ - Scan depth is asked with its cost (quick / deep + selected findings reports).
873
+ - The stack, structure, features, tests and git history are scanned. `.kit-new` files are asked one by one as decisions.
874
+ - The PRD, stack, architecture and README are derived from the code; the purpose, audience and "what do you dislike" are asked.
875
+ - CLAUDE.md is rewritten to match the kit's. The project-specific rules in the old file are asked with a multi-select and moved to the `## Proje kuralları` section; the old one goes to `docs/archive/`.
876
+ - Existing tests are run and evaluated. The correct behavior of critical flows is asked from the user so the code does not lock in wrong behavior.
877
+ - Alignment roadmap: in Phase 0 a safe baseline and critical flow tests, in Phase 1 moving feature by feature into the kit's folder structure (a separate branch, a working point in each task), in Phase 2 the findings, then new features.
878
+
879
+ ### Changed
880
+ - `/start` Step 1 recognizes two install paths (template or init); if the folder has code, it suggests `/adopt`. Step 3 has the command for the init path.
881
+ - README and guide: The new install path became the main path, "Use this template" stays as an alternative.
882
+
883
+ ### Adapt by hand
884
+ - The project's `CLAUDE.md`: the "Kurulum durumu" (setup status) line now also covers the `.kit.json` → `type: null` state and `/adopt` (see the kit's `CLAUDE.md`). No effect on projects that are already set up.
850
885
 
851
886
  ## [3.6.0] - 2026-10-23
852
887
 
853
- Dondurma bitti. Bu sürüm, kitin ilk gerçek projede (3.5.1) denenmesinden gelen geri bildirimlerden çıktı.
888
+ The freeze is over. This release comes from feedback on trying the kit in the first real project (3.5.1).
854
889
 
855
- ### Eklendi
856
- - **Planlama derinliği** (`/start` Adım 0a): Profilden ayrı ikinci soru. Seçenekler: Hızlı (~%25-35), Standart (~%50-70), Ayrıntılı (~%80-100). Sebep: Hafif profilde bile 9 adım 5 saatlik limitin tamamını harcadı ve koda hiç başlanamadı.
857
- - **Pahalı adımlarda maliyet kapısı:** Adım 4'teki konseyden, Adım 6 kurulundan ve Adım 7 tasarımından önce tahmini maliyet söylenir, sonra "Yap / Hafif yap / Sonraya bırak" diye sorulur. Bu adımlar kaldırılmadı. Sonraya bırakılanlar Faz 0'a görev olarak girer. Maliyet tablosu: `docs/workflow/usage-limits.md`.
858
- - **Pano en başta** (`/start` Adım 0 madde 6b): Pano oluşturulur ve tarayıcıda açılması önerilir. Kararlar verildiği anda günlüğe yazılır, yani pano onları adım adım gösterir.
859
- - **`/clear` sonrası sıradaki komut ekranda:** Oturum başı hook'u sıradaki komutu artık kullanıcıya da gösteriyor (`systemMessage`). Örnek: `Sıradaki: /build G-004 · ...`, `Devam: /start (adım 4/9)` (testli). `/wrap-up` son satırda tam komutu verir.
860
- - **Başka bilgisayarda kurulabilirlik:** `/start` Adım 4, sürüm dosyasını (`.nvmrc` / `.python-version`) ve README'nin Gereksinimler/Kurulum bölümünü doldurur. `/build` yeni bağımlılıkta README'yi günceller. `/release` ve aylık `/maintain` temiz klasöre klonlayıp kurulum testi yapar.
890
+ ### Added
891
+ - **Planning depth** (`/start` Step 0a): A second question, separate from the profile. Options: Quick (~25-35%), Standard (~50-70%), Detailed (~80-100%). Reason: even with the Light profile, the 9 steps used up the whole 5-hour limit and coding never started.
892
+ - **Cost gate on expensive steps:** Before the council in Step 4, the board in Step 6 and the design in Step 7, the estimated cost is stated, then it asks "Do it / Do it light / Leave for later". These steps were not removed. Those left for later enter Phase 0 as tasks. Cost table: `docs/workflow/usage-limits.md`.
893
+ - **Dashboard at the very start** (`/start` Step 0 item 6b): The dashboard is created and opening it in the browser is suggested. Decisions are written to the log the moment they are made, so the dashboard shows them step by step.
894
+ - **Next command on screen after `/clear`:** The session-start hook now shows the next command to the user too (`systemMessage`). Example: `Sıradaki: /build G-004 · ...`, `Devam: /start (adım 4/9)` (tested). `/wrap-up` gives the full command on the last line.
895
+ - **Installable on another computer:** `/start` Step 4 fills in the version file (`.nvmrc` / `.python-version`) and the README's Requirements/Setup section. `/build` updates the README when there is a new dependency. `/release` and the monthly `/maintain` clone into a clean folder and run an install test.
861
896
 
862
- ### Düzeltildi
863
- - **`/kit-update` çalışmıyordu:** Komut `kit.mjs guncelle` çağırıyordu, ama komutun adı `update`.
897
+ ### Fixed
898
+ - **`/kit-update` did not work:** The command called `kit.mjs guncelle`, but the command is named `update`.
864
899
 
865
- ### Elle uyarla
866
- - `README.md` (projenin): Gereksinimler bölümüne "Sistem bağımlılıkları" satırını ve kilit dosyası notunu ekle (şablon: `kit/project/README.md`).
900
+ ### Adapt by hand
901
+ - The project's `README.md`: add the "System dependencies" line and the lock file note to the Requirements section (template: `kit/project/README.md`).
867
902
 
868
903
  ## [3.5.1] - 2026-10-12
869
904
 
870
- ### Güvenlik
871
- - **İzin listesi önek açığı** (commit güvenlik incelemesi buldu). İzin kuralları komutun başıyla eşleşiyor, betikler ise argümanları herhangi bir sırada okuyordu. Sonuç:
872
- - `checkpoint.mjs --list --restore X --evet` onaysız geri dönüş yapıyordu.
873
- - `freeze-guard.mjs --set x --off` düzenleme kilidini onaysız kaldırıyordu.
874
- - `freeze-guard.mjs --set .` kilidi bütün projeye genişletiyordu.
875
- - Düzeltme:
876
- - İki betikte de ne yapılacağını artık sadece ilk argüman belirliyor.
877
- - Açık kilit onaysız sadece daraltılabiliyor.
878
- - İzin listesinde sadece `freeze-guard --set` ve `--status` var; `--off` onay istiyor.
879
- - Her iki açık için test eklendi.
880
- - Bilinen: `commit-gate.mjs --approve` aynı türden bir öz-onay yolu olarak izin listesinde duruyor (3.4.0 notu). Hafif profilde commit denetimi kapalı.
905
+ ### Security
906
+ - **Permission list prefix hole** (found by the commit security review). Permission rules match the start of the command, but the scripts read arguments in any order. Result:
907
+ - `checkpoint.mjs --list --restore X --evet` did a restore without approval.
908
+ - `freeze-guard.mjs --set x --off` removed the edit lock without approval.
909
+ - `freeze-guard.mjs --set .` widened the lock to the whole project.
910
+ - Fix:
911
+ - In both scripts, only the first argument now decides what to do.
912
+ - An open lock can only be narrowed without approval.
913
+ - The permission list has only `freeze-guard --set` and `--status`; `--off` asks for approval.
914
+ - A test was added for each of the two holes.
915
+ - Known: `commit-gate.mjs --approve` stays in the permission list as a self-approval path of the same kind (3.4.0 note). Commit review is off in the Light profile.
881
916
 
882
917
  ## [3.5.0] - 2026-10-12
883
918
 
884
- Dondurmadan önce son eklemeler. Kit bu sürümle dondurulur.
885
-
886
- ### Eklendi
887
- - **`/rollback` (son çalışan hale dön):** `checkpoint.mjs` betiği eklendi (testli).
888
- - `/build` ve `/wrap-up`, testler yeşilken çalışan nokta olarak `calisan/...` etiketi koyar.
889
- - Geri dönüşte yarım iş önce saklanır (stash), dosyalar hedef hale getirilir ve yeni bir commit atılır. Böylece geçmiş silinmez ve geri dönüş de geri alınabilir.
890
- - `.gitignore`'daki dosyalara (`.env`) dokunulmaz. `reset --hard` kullanılmaz.
891
- - Geri dönüş komutu izin listesinde değildir; her seferinde onay ister.
892
- - **Anlatıcı mod** (`.claude/output-styles/anlatici.md`): Her adımdan sonra "Ne oldu?" bloğu (ne yaptım, neden, sen nasıl görürsün, yeni kavram) ve hataların sade dille açıklaması. `/start` Adım 0b'de sorulur; `.claude/settings.local.json` → `outputStyle: anlatici`.
893
- - **Harcama alarmı** (`docs/operations/spend-alarms.md`):
894
- - Ücretli servis başına tavan ve uyarı tablosu.
895
- - Sağlayıcı ayarları (Anthropic, OpenAI, Vercel, Supabase, Google Cloud; 2026-10-12'de doğrulandı).
896
- - Uygulama içi koruma: kullanıcı kotası, genel günlük bütçe, %100'de bayrağın otomatik kapanması.
897
- - Panonun Operasyon sekmesinde kart; ayarlanmamış alarm "Dikkat" listesine düşer (testli).
898
- - `/start` Adım 5 tabloyu doldurur; `/release` ve `/maintain` kontrol eder.
899
- - README'ye **"Hiç bilmiyorsan: adım adım"** bölümü eklendi: hesaplar, programlar, proje oluşturma, ilk sorular, günlük kullanım. Rehbere de kısa hali eklendi.
900
-
901
- ### Düzeltildi
902
- - `kit-tests.yml`: İş seviyesindeki `if: hashFiles(...)` koşulu GitHub'da desteklenmiyor ve her push'ta "No jobs were run" hatası veriyordu. Koşul kaldırıldı; `kit.mjs install` bu dosyayı zaten projeye taşımıyor.
919
+ Last additions before the freeze. The kit is frozen with this release.
920
+
921
+ ### Added
922
+ - **`/rollback` (go back to the last working state):** The `checkpoint.mjs` script was added (tested).
923
+ - `/build` and `/wrap-up` put a `calisan/...` tag as a working point when the tests are green.
924
+ - On rollback, unfinished work is stashed first, the files are brought to the target state and a new commit is made. So history is not deleted and the rollback can be undone too.
925
+ - Files in `.gitignore` (`.env`) are not touched. `reset --hard` is not used.
926
+ - The rollback command is not in the permission list; it asks for approval every time.
927
+ - **Narrator mode** (`.claude/output-styles/anlatici.md`): A "What happened?" block after every step (what I did, why, how you see it, a new concept) and plain-language explanations of errors. Asked in `/start` Step 0b; `.claude/settings.local.json` → `outputStyle: anlatici`.
928
+ - **Spend alarm** (`docs/operations/spend-alarms.md`):
929
+ - A table of ceilings and warnings per paid service.
930
+ - Provider settings (Anthropic, OpenAI, Vercel, Supabase, Google Cloud; verified on 2026-10-12).
931
+ - In-app protection: user quota, overall daily budget, the flag turning itself off at 100%.
932
+ - A card in the dashboard's Operations tab; an unset alarm falls into the "Dikkat" (attention) list (tested).
933
+ - `/start` Step 5 fills in the table; `/release` and `/maintain` check it.
934
+ - A **"If you know nothing: step by step"** section was added to the README: accounts, programs, creating a project, first questions, daily use. A short version was added to the guide too.
935
+
936
+ ### Fixed
937
+ - `kit-tests.yml`: The job-level `if: hashFiles(...)` condition is not supported on GitHub and gave a "No jobs were run" error on every push. The condition was removed; `kit.mjs install` does not carry this file into the project anyway.
903
938
 
904
939
  ## [3.4.0] - 2026-10-12
905
940
 
906
- İlk konsey değerlendirmesinin sonucu: Kit, gerçek projede denenmek üzere bu sürümle **donduruldu**. Bundan sonra kitte sadece engelleyici hatalar düzeltilecek.
941
+ Result of the first council evaluation: the kit was **frozen** with this release so it can be tried in a real project. From now on only blocking bugs will be fixed in the kit.
907
942
 
908
- ### Eklendi
909
- - **Profil** (`/start` Adım 0): Hafif, Standart ve Tam profillerinden biri seçilir. Pro planda Hafif önerilir. Profil şunları belirler:
910
- - açık eklentiler
911
- - commit denetimi
912
- - hangi toplantıların ve kararların konseye gideceği
943
+ ### Added
944
+ - **Profile** (`/start` Step 0): One of the Light, Standard and Full profiles is chosen. Light is recommended on the Pro plan. The profile decides:
945
+ - which plugins are on
946
+ - commit review
947
+ - which meetings and decisions go to the council
913
948
 
914
- Hafif profilde çekirdek 6 eklenti açık kalır, commit denetimi kapalıdır ve toplantı konseyi yoktur. Profil `progress.md` → `**Profil:**` satırına yazılır ve panonun Şimdi kutusunda görünür.
915
- - Hook komutlarını `bash` ile gerçekten çalıştıran test eklendi. Önceki testler sadece komut metnine bakıyordu ve aşağıdaki bildirim hatasını kaçırmıştı.
949
+ In the Light profile the 6 core plugins stay on, commit review is off and there is no meeting council. The profile is written to the `progress.md` → `**Profil:**` line and shows in the dashboard's Now box.
950
+ - A test that really runs the hook commands with `bash` was added. Earlier tests only looked at the command text and had missed the notification bug below.
916
951
 
917
- ### Değişti
918
- - Karar konseyi artık sadece veritabanı ve auth kararlarında toplanıyor; Tam profilde ise tüm tek yönlü kararlarda. Diğer tek yönlü kararlarda mimarın görüşü alınıyor. Ölçüm: Bir konsey Pro planda 5 saatlik limitin yaklaşık %12'sini kullandı.
952
+ ### Changed
953
+ - The decision council now convenes only for database and auth decisions; in the Full profile, for all one-way decisions. For other one-way decisions the architect's opinion is taken. Measurement: one council used about 12% of the 5-hour limit on the Pro plan.
919
954
 
920
- ### Düzeltildi
921
- - **Commit kapısı kurul yokken devreye giriyordu.** Şablonla gelen `board-chair.md` kurul üyesi sayılıyordu; bu yüzden `/start`'ın kurulum commit'i, henüz kurulmamış bir kurulu bekleyerek duruyordu. Hatayı bulan: konsey (opus danışmanı).
922
- - **Uzun iş bildirimi hiç çalışmıyordu.** Stop hook komutunda tırnak yanlış yerdeydi (`notify.mjs --stop` tek bir yol gibi okunuyordu) ve Node "modül bulunamadı" diye çöküyordu.
923
- - CHANGELOG başlığında eski komut adı (`/kit-guncelle`) duruyordu.
955
+ ### Fixed
956
+ - **The commit gate kicked in when there was no board.** The `board-chair.md` that comes with the template was counted as a board member; so `/start`'s setup commit stopped, waiting for a board that was not set up yet. Found by: the council (the opus advisor).
957
+ - **The long-job notification never worked.** The quote in the Stop hook command was in the wrong place (`notify.mjs --stop` was read as a single path) and Node crashed with "module not found".
958
+ - The CHANGELOG heading still had the old command name (`/kit-guncelle`).
924
959
 
925
- ### Bilinen, açık bırakılanlar (dondurma kararıyla)
926
- - Commit kapısındaki `--approve` izin listesinde duruyor; ajan kapıyı kendi açabilir. Hafif profilde commit denetimi zaten kapalı.
927
- - Konsey sayımında ABARTILI oyu itiraz sayılıyor ve 2 oylu 1-1 beraberlik "tartışmalı" çıkıyor. Bu kural gerçek kullanımda gözden geçirilecek.
960
+ ### Known, left open (by the freeze decision)
961
+ - `--approve` in the commit gate stays in the permission list; the agent can open the gate itself. Commit review is already off in the Light profile.
962
+ - In the council count, an ABARTILI vote counts as an objection and a 1-1 tie with 2 votes comes out as "contested". This rule will be reviewed in real use.
928
963
 
929
964
  ## [3.3.2] - 2026-10-12
930
965
 
931
- ### Değişti
932
- - `plugins-sync.mjs`: Kurulu olduğu halde bu makinede kişisel tercihle kapatılmış eklentiler (settings.local.json veya /plugin) artık bilgi satırıyla bildiriliyor. Betik bu tercihi değiştirmiyor.
933
- - Denemeyle doğrulandı: Bu durum yükleme hatası değildir, Claude Code eklentiyi bilerek kaydetmez.
934
- - `claude plugin list --json` çıktısındaki `enabled` alanı, CLI'ın çalıştığı klasöre göre hesaplanır; `projectEnabled` ise proje ayarını gösterir.
966
+ ### Changed
967
+ - `plugins-sync.mjs`: Plugins that are installed but switched off on this machine by a personal preference (settings.local.json or /plugin) are now reported with an info line. The script does not change this preference.
968
+ - Verified by trying: this is not a load error; Claude Code deliberately does not register the plugin.
969
+ - The `enabled` field in the `claude plugin list --json` output is computed from the folder the CLI runs in; `projectEnabled` shows the project setting.
935
970
 
936
971
  ## [3.3.1] - 2026-10-12
937
972
 
938
- ### Düzeltildi
939
- - **Eklenti yükleme hatası** (`/reload-plugins`: "1 error during load"). Proje ayarı (`enabledPlugins`) eklentileri açıyor ama indirmiyordu.
940
- - Trail of Bits'in 7 eklentisi ve Anthropic'in 5 eklentisi kurulum kaydında yoktu. Başsız oturumda "not cached" hatası verip yüklenmiyorlardı.
941
- - Remotion için `false` değeri bile "enabled in project settings but isn't installed" hatası veriyordu.
942
- - Bu repoda hepsi proje kapsamında kuruldu, Remotion kapalı bırakıldı. Debug kaydında yükleme hatası 0 oldu, yüklenen skill sayısı 78'den 90'a çıktı.
973
+ ### Fixed
974
+ - **Plugin load error** (`/reload-plugins`: "1 error during load"). The project setting (`enabledPlugins`) switched plugins on but did not download them.
975
+ - Trail of Bits' 7 plugins and Anthropic's 5 plugins were not in the install record. In a headless session they gave a "not cached" error and did not load.
976
+ - For Remotion, even a `false` value gave the "enabled in project settings but isn't installed" error.
977
+ - In this repo all were installed at project scope and Remotion was left off. The load error count in the debug log went to 0, and the number of loaded skills went from 78 to 90.
943
978
 
944
- ### Eklendi
945
- - `plugins-sync.mjs` (testli): Proje ayarındaki eklentileri kurulum kaydıyla eşitler. Varsayılan olarak sadece listeler; `--kur` ile eksikleri proje kapsamında kurar, `false` olanları kurup kapatır. Kabuk kullanmaz (`execFileSync`).
946
- - `/start` ortam adımında onayla çalışır, `/kit-update` yeni eklenti geldiğinde çalıştırır.
979
+ ### Added
980
+ - `plugins-sync.mjs` (tested): Syncs the plugins in the project settings with the install record. By default it only lists; with `--kur` it installs missing ones at project scope and installs-then-disables the `false` ones. It does not use a shell (`execFileSync`).
981
+ - It runs with approval in the `/start` environment step, and `/kit-update` runs it when a new plugin arrives.
947
982
 
948
983
  ## [3.3.0] - 2026-10-12
949
984
 
950
- ### Eklendi
951
- - **Konsey (üç aşama):** Karpathy'nin llm-council yapısının kurula uyarlanması (`.claude/board/council.md`).
952
- - **Toplantı konseyi:** Plan, faz sonu, canlıya alma ve RET çıkan görev sonu toplantılarında uygulanır. Üyeler önce bağımsız görüş verir. Sonra her üye diğerlerinin bulgularını kimin yazdığını bilmeden oylar (DOĞRU, ABARTILI veya YANLIŞ) ve görüşleri sıralar. En son başkan karar verir.
953
- - **Karar konseyi:** Tek yönlü kapı kararlarında ve `/board council <soru>` ile çalışır. 3 `council-advisor` (haiku, sonnet, opus) aynı soruyu cevaplar ve birbirini anonim sıralar. `board-chair` önerir; AskUserQuestion'daki "(Önerilen)" seçenek konseyden gelir, her seçeneğe konsey oyu ve azınlık görüşü eklenir.
954
- - `board-chair` (opus) ve `council-advisor` ajanları eklendi.
955
- - Sayım için `council.mjs` eklendi (testli). Ortalama sırayı, bulgu oylarını, tartışmalı bulguları ve uzlaşmayı kodla hesaplar. Başkan tartışmalı KRİTİK bulguyu eleyemez.
956
- - Tutanaklar `docs/workflow/council/` klasörüne yazılır. Panonun Kurul sekmesine yeni Konsey kartı eklendi: son karar, uzlaşma, tartışmalı ve elenen bulgu sayısı, kimlikleriyle toplu sıralama, son 10 tutanak.
985
+ ### Added
986
+ - **Council (three stages):** An adaptation of Karpathy's llm-council structure for the board (`.claude/board/council.md`).
987
+ - **Meeting council:** Applied in plan, end-of-phase, release and RET end-of-task meetings. Members first give independent opinions. Then each member votes on the others' findings without knowing who wrote them (DOĞRU, ABARTILI or YANLIŞ) and ranks the opinions. Last, the chair decides.
988
+ - **Decision council:** Runs for one-way door decisions and with `/board council <soru>`. 3 `council-advisor`s (haiku, sonnet, opus) answer the same question and rank each other anonymously. `board-chair` makes a recommendation; the "(Recommended)" option in AskUserQuestion comes from the council, and each option gets the council vote and the minority opinion.
989
+ - The `board-chair` (opus) and `council-advisor` agents were added.
990
+ - `council.mjs` was added for counting (tested). It computes the average rank, finding votes, contested findings and consensus in code. The chair cannot drop a contested CRITICAL finding.
991
+ - Minutes are written to the `docs/workflow/council/` folder. A new Council card was added to the dashboard's Board tab: the last decision, consensus, the number of contested and dropped findings, the overall ranking with identities, the last 10 minutes.
957
992
 
958
- ### Değişti
959
- - `docs/workflow/decision-protocol.md` §2a: Tek yönlü kararlarda önceki tek mimar görüşünün yerini karar konseyi aldı. Limit kırmızıysa eski yönteme dönülür.
960
- - `.claude/board/rules.md`: Konsey toplantıları ve §4'e 2b adımı eklendi. `/board` komutuna `council` eklendi.
961
- - Rehber, pano ve README 3.3 ile güncellendi.
993
+ ### Changed
994
+ - `docs/workflow/decision-protocol.md` §2a: In one-way door decisions, the decision council replaced the earlier single architect opinion. If the limit is red, it goes back to the old method.
995
+ - `.claude/board/rules.md`: Council meetings and step 2b in §4 were added. `council` was added to the `/board` command.
996
+ - The guide, dashboard and README were updated with 3.3.
962
997
 
963
998
  ## [3.2.0] - 2026-10-12
964
999
 
965
- Ekosistem araştırmasından (yıldız ve bakım durumu GitHub API'den, kurulum ayrıntıları birincil kaynaktan) seçilenler.
1000
+ Selections from ecosystem research (stars and maintenance status from the GitHub API, install details from the primary source).
966
1001
 
967
- ### Eklendi
968
- - **Anthropic resmi eklentileri** (`claude-plugins-official`, her tipte): `security-guidance` (yazarken kalıp uyarısı + commit incelemesi; tur sonu incelemesi kota için `ENABLE_STOP_REVIEW=0` ile kapalı), `claude-security` (`/findings-security` derin tarama), `hookify`, `claude-md-management`, `session-report`.
969
- - **LSP:** `typescript-lsp` (web, mobil), `pyright-lsp` (backend). Dil sunucusu kurulumu `/start`'ta.
970
- - **Stack skill'leri:** Supabase `supabase` + `postgres-best-practices` (web, mobil; backend'de postgres), `web-quality-skills` (web), Expo resmi `expo` eklentisi (mobil, Expo MCP dahil), Vercel `react-best-practices` / `composition-patterns` / `react-native-guidelines` (`/start` `npx skills` ile kopyalar).
971
- - **Maestro MCP** mobil `.mcp.json`'da; servis MCP kataloğu `docs/workflow/mcp-catalog.md` (GitHub, Stripe, Vercel, PostHog, Figma, Firebase, Linear).
972
- - **Düzenleme kilidi:** `/freeze <klasör> | off`, `freeze-guard.mjs` hook'u (testli).
973
- - **Token ve maliyet:** `cost.mjs` (ccusage, proje başına son 30 gün) → panonun Limit ve maliyet sekmesinde yeni kart (testli).
974
- - Güvenlik kuralları `.claude/claude-security-guidance.md` ve `.claude/security-patterns.json` (service_role istemcide, public env'de sır, kişisel veri logu).
1002
+ ### Added
1003
+ - **Anthropic official plugins** (`claude-plugins-official`, every type): `security-guidance` (pattern warning while writing + commit review; the end-of-turn review is switched off with `ENABLE_STOP_REVIEW=0` to save quota), `claude-security` (`/findings-security` deep scan), `hookify`, `claude-md-management`, `session-report`.
1004
+ - **LSP:** `typescript-lsp` (web, mobile), `pyright-lsp` (backend). Language server install is in `/start`.
1005
+ - **Stack skills:** Supabase `supabase` + `postgres-best-practices` (web, mobile; postgres in backend), `web-quality-skills` (web), Expo's official `expo` plugin (mobile, Expo MCP included), Vercel `react-best-practices` / `composition-patterns` / `react-native-guidelines` (`/start` copies them with `npx skills`).
1006
+ - **Maestro MCP** in the mobile `.mcp.json`; service MCP catalog `docs/workflow/mcp-catalog.md` (GitHub, Stripe, Vercel, PostHog, Figma, Firebase, Linear).
1007
+ - **Edit lock:** `/freeze <klasör> | off`, the `freeze-guard.mjs` hook (tested).
1008
+ - **Tokens and cost:** `cost.mjs` (ccusage, last 30 days per project) → a new card in the dashboard's Limit and cost tab (tested).
1009
+ - Security rules `.claude/claude-security-guidance.md` and `.claude/security-patterns.json` (service_role on the client, a secret in a public env, personal data in logs).
975
1010
 
976
- ### Değişti
977
- - `CLAUDE.md` kural 7'ye Karpathy'nin dört ilkesi; "Bitti" tanımında doğrulama komutu bu turda çalıştırılıp çıktısı gösterilir.
978
- - `/fix-bug`: tek değişken, çürütme kanıtı, kök neden bulununca `/freeze` önerisi.
979
- - Kurul: Ürün üyesi plan toplantısında kapsam modu sorar (genişlet / koru / küçült).
980
- - `/retro` ve `/wrap-up`: `claude-md-improver`, `/revise-claude-md`, `/hookify` önerileri. `/dashboard` ve `/wrap-up` maliyet verisini yeniler.
981
- - `/findings-security`: `claude-security` taraması; çıktı klasörü `CLAUDE-SECURITY-*/` git dışı ve yapı haritasında izinli.
982
- - Rehber, pano ve README 3.2 ile güncellendi.
1011
+ ### Changed
1012
+ - Karpathy's four principles in `CLAUDE.md` rule 7; in the definition of "done", the verification command is run in this turn and its output is shown.
1013
+ - `/fix-bug`: a single variable, refutation evidence, a `/freeze` suggestion once the root cause is found.
1014
+ - Board: The Product member asks for a scope mode in the plan meeting (expand / hold / reduce).
1015
+ - `/retro` and `/wrap-up`: `claude-md-improver`, `/revise-claude-md`, `/hookify` suggestions. `/dashboard` and `/wrap-up` refresh the cost data.
1016
+ - `/findings-security`: `claude-security` scan; the output folder `CLAUDE-SECURITY-*/` is outside git and allowed in the structure map.
1017
+ - The guide, dashboard and README were updated with 3.2.
983
1018
 
984
- ### Elle uyarla (mevcut projeler)
985
- - Dil sunucusunu kur: `npm i -g typescript-language-server typescript` veya `npm i -g pyright`. Mobilde Maestro CLI.
1019
+ ### Adapt by hand (existing projects)
1020
+ - Install the language server: `npm i -g typescript-language-server typescript` or `npm i -g pyright`. Maestro CLI for mobile.
986
1021
 
987
1022
  ## [3.1.1] - 2026-10-12
988
1023
 
989
- ### Değişti
990
- - Rehber (`kit/guide.html`) v3.1'e getirildi: 10 sekmeli pano ve bildirim, yeni skill tablosu (source-research, logo-design, ui-motion, motion-video, Trail of Bits), "Yetenek paketleri" bölümü, tüm koruma katmanları.
991
- - Pano: "Ürün ve teknik" sekmesine marka paketi, tanıtım videoları ve araştırma notları kartları eklendi (`uretimVarliklari`, testli).
992
- - README: bildirim, Ürün ve teknik sekmesinin içeriği; sürüm adımlarına "rehber, pano ve README güncellenir" kuralı.
1024
+ ### Changed
1025
+ - The guide (`kit/guide.html`) was brought to v3.1: a dashboard with 10 tabs and the notification, the new skill table (source-research, logo-design, ui-motion, motion-video, Trail of Bits), a "Capability packages" section, all protection layers.
1026
+ - Dashboard: Brand pack, promo videos and research notes cards were added to the "Product and technical" tab (`uretimVarliklari`, tested).
1027
+ - README: the notification, the contents of the Product and technical tab; the rule "the guide, dashboard and README are updated" in the release steps.
993
1028
 
994
1029
  ## [3.1.0] - 2026-10-12
995
1030
 
996
- ### Eklendi
997
- - **Kitin kendi skill'leri** (`.claude/skills/`, kit yönetiminde):
998
- - `source-research`: Kaynak politikası (A-D güven seviyeleri, birincil kaynak önce, çapraz doğrulama, tarih ve sürüm), Türkiye resmi kaynak listesi, `docs/research/` kayıtları. İsteğe bağlı Firecrawl kurulumu: anahtar kullanıcının ortam değişkeninde kalır.
999
- - `logo-design`: Marka özeti soruları, 4-6 SVG konsept (16 px okunurluk, tek renk hal), görsel önizleme, iyileştirme, marka paketi (favicon, apple-touch, 192/512, mobil ikonları), `docs/design/brand.md`.
1000
- - `motion-video`: N01ennn'in "UI motion design" prompt'undan uyarlandı. Kapalı formlu yay fonksiyonu (testle doğrulandı), vuruş haritası, 4 kare onay, 240 fps alt kareden hareket bulanıklığı, döngü dikişi ve belirlenimcilik kontrolü. Remotion seçeneği.
1001
- - `ui-motion`: Uygulama içi hareket kuralları (süre belirteçleri, yay ayarları, hareket azaltma, performans; Motion ve Reanimated).
1031
+ ### Added
1032
+ - **The kit's own skills** (`.claude/skills/`, managed by the kit):
1033
+ - `source-research`: Source policy (A-D trust levels, primary source first, cross-checking, date and version), the list of official Turkey sources, `docs/research/` records. Optional Firecrawl setup: the key stays in the user's environment variable.
1034
+ - `logo-design`: Brand brief questions, 4-6 SVG concepts (16 px legibility, one-color version), visual preview, refinement, brand pack (favicon, apple-touch, 192/512, mobile icons), `docs/design/brand.md`.
1035
+ - `motion-video`: Adapted from N01ennn's "UI motion design" prompt. A closed-form spring function (verified with a test), beat map, 4-frame approval, motion blur from 240 fps subframes, loop seam and determinism check. Remotion option.
1036
+ - `ui-motion`: In-app motion rules (duration tokens, spring settings, reduced motion, performance; Motion and Reanimated).
1002
1037
  - **MCP:**
1003
- - Context7 her tipte (uzak HTTP).
1004
- - Chrome DevTools MCP web'de.
1005
- - Playwright ve Chrome DevTools sürümleri sabitlendi (`@latest` kaldırıldı).
1006
- - **Trail of Bits güvenlik plugin'leri** (7 adet): security lens'ine ve `security-auditor`'a bağlandı.
1007
- - **Remotion resmi plugin'i:** Tanımlı, varsayılan kapalı.
1008
- - **Bildirim hook'u** (`notify.mjs`): Claude soru veya onay beklerken (Notification) ve 90 saniyeden uzun iş bitince (Stop) masaüstü bildirimi gelir. Windows, macOS ve Linux destekleniyor.
1009
- - **Skill bütçesi:** Backend projelerinde arayüz tasarım plugin'leri kapalı gelir. `docs/workflow/skills.md`'ye bütçe kuralları eklendi.
1010
- - **Yapı haritası:** `marketing/**` alanı eklendi (tanıtım videosu kaynakları; kareler ve çıktılar git dışı).
1038
+ - Context7 in every type (remote HTTP).
1039
+ - Chrome DevTools MCP in web.
1040
+ - Playwright and Chrome DevTools versions were pinned (`@latest` removed).
1041
+ - **Trail of Bits security plugins** (7): connected to the security lens and to `security-auditor`.
1042
+ - **Remotion official plugin:** Defined, off by default.
1043
+ - **Notification hook** (`notify.mjs`): A desktop notification arrives when Claude is waiting for a question or approval (Notification) and when a job longer than 90 seconds ends (Stop). Windows, macOS and Linux are supported.
1044
+ - **Skill budget:** In backend projects the interface design plugins come switched off. Budget rules were added to `docs/workflow/skills.md`.
1045
+ - **Structure map:** The `marketing/**` area was added (promo video sources; frames and outputs are outside git).
1011
1046
 
1012
1047
  ## [3.0.0] - 2026-10-12
1013
1048
 
1014
- Profesyonel yapı ve bulgu raporları. **Kırıcı değişiklik:** dosya ve komut adları değişti, `.kit.json` biçimi değişti; 2.x projeleri otomatik güncellenemez.
1049
+ Professional structure and findings reports. **Breaking change:** file and command names changed, the `.kit.json` format changed; 2.x projects cannot be updated automatically.
1015
1050
 
1016
- ### Değişti
1017
- - **Dosya ve klasör adları İngilizce kebab-case oldu** (içerik Türkçe). `docs/` alt klasörlere ayrıldı: `product`, `architecture`, `design`, `decisions`, `quality`, `security`, `legal`, `operations`, `workflow`, `findings`, `archive`.
1018
- - Örnekler: `docs/PRD.md` → `docs/product/prd.md`, `docs/ILERLEME.md` → `docs/workflow/progress.md`, `docs/KARARLAR.md` → `docs/decisions/log.md`.
1019
- - **Komutlar İngilizce oldu:**
1051
+ ### Changed
1052
+ - **File and folder names became English kebab-case** (content in Turkish). `docs/` was split into subfolders: `product`, `architecture`, `design`, `decisions`, `quality`, `security`, `legal`, `operations`, `workflow`, `findings`, `archive`.
1053
+ - Examples: `docs/PRD.md` → `docs/product/prd.md`, `docs/ILERLEME.md` → `docs/workflow/progress.md`, `docs/KARARLAR.md` → `docs/decisions/log.md`.
1054
+ - **Commands became English:**
1020
1055
 
1021
- | Eski | Yeni | Eski | Yeni |
1056
+ | Old | New | Old | New |
1022
1057
  |---|---|---|---|
1023
1058
  | `/baslat` | `/start` | `/oturum-sonu` | `/wrap-up` |
1024
1059
  | `/planla` | `/plan-task` | `/canliya-al` | `/release` |
@@ -1028,170 +1063,170 @@ Profesyonel yapı ve bulgu raporları. **Kırıcı değişiklik:** dosya ve komu
1028
1063
  | `/durum` | `/dashboard` | `/kurul` | `/board` |
1029
1064
  | `/kit-guncelle` | `/kit-update` | `/geri-bildirim` | `/user-feedback` |
1030
1065
 
1031
- Argümanlar da İngilizce: `setup`, `convene`, `first`, `on`/`off`, `weekly`/`monthly`/`quarterly`.
1032
- - **Ajanlar:** `inceleyici` → `code-reviewer`, `guvenlik-denetcisi` → `security-auditor`, `kurul-*` → `board-*`.
1033
- - **Hook dosyaları:**
1034
- - İngilizce adlar aldı: `dashboard.mjs`, `commit-gate.mjs`, `package-gate.mjs`, `destructive-guard.mjs`, `usage.mjs`, `reminder.mjs`, `status-read.mjs`, `dashboard-data.mjs`.
1035
- - Çalışma durumu dosyaları `.claude/state/` altında toplandı.
1036
- - **Pano:** `DURUM.html` → `dashboard.html`. Tasarım önizlemeleri `.previews/` altında.
1037
- - **Kit iç yapısı:**
1066
+ Arguments are in English too: `setup`, `convene`, `first`, `on`/`off`, `weekly`/`monthly`/`quarterly`.
1067
+ - **Agents:** `inceleyici` → `code-reviewer`, `guvenlik-denetcisi` → `security-auditor`, `kurul-*` → `board-*`.
1068
+ - **Hook files:**
1069
+ - They got English names: `dashboard.mjs`, `commit-gate.mjs`, `package-gate.mjs`, `destructive-guard.mjs`, `usage.mjs`, `reminder.mjs`, `status-read.mjs`, `dashboard-data.mjs`.
1070
+ - Runtime state files were gathered under `.claude/state/`.
1071
+ - **Dashboard:** `DURUM.html` → `dashboard.html`. Design previews are under `.previews/`.
1072
+ - **Kit internal structure:**
1038
1073
  - `kit/sablon` → `kit/templates`, `mobil` → `mobile`, `ekler` → `addons`.
1039
1074
  - `SURUM`/`KAYNAK` → `VERSION`/`SOURCE`, `REHBER.html` → `guide.html`, `testler` → `tests`.
1040
- - Özel dosya uzantıları: `.ekle` → `.append`, `.birlestir.json` → `.merge.json`. Çakışma dosyası: `.yeni` → `.kit-new`.
1041
- - `kit.mjs`: `kur`/`guncelle` → `install`/`update`, `--tip`/`--ekler`/`--proje` → `--type`/`--addons`/`--project`. `.kit.json` alanları İngilizce.
1042
- - **Ayrıntılı kararlar ADR dosyalarına taşındı:** `docs/decisions/adr-NNNN-*.md` (şablon `adr-template.md`). Karar günlüğü `docs/decisions/log.md`.
1043
-
1044
- ### Eklendi
1045
- - **Korunan proje yapısı:**
1046
- - Tip başına özellik bazlı yapı haritası (`.claude/structure.json`) ve rehberi (`docs/architecture/structure.md`).
1047
- - `structure-guard.mjs`: Harita dışı yeni dosya için kullanıcıya sorulur; dağınıklık kalıpları (`*.bak`, `*-old.*`, kopya, `temp/`, `deneme*`) engellenir; `--check` ile tüm depo denetlenir.
1048
- - Her tipin CI'ına `structure` işi eklendi. Kurul Mimarı ve `/findings-tech` da yapıyı denetler.
1049
- - `sandbox/` (git dışı deneme alanı) ve `docs/archive/` eklendi.
1050
- - **Bulgu raporları:**
1051
- - Komutlar: `/findings-tech`, `/findings-business`, `/findings-security`, `/findings-ux`, `/findings-perf`, `/findings-legal`, `/findings-all`.
1052
- - Ortak protokol (`.claude/findings/protocol.md`), tür başına bakış açısı (`lenses/`) ve rapor şablonu.
1053
- - En fazla 20 bulgu; önem puanı = etki + olasılık + yayılım + aciliyet; alan sağlık puanı; önceki raporla karşılaştırma.
1054
- - Rapor sonrası düzeltme planı, kurul görüşü ve yol haritasına aktarma.
1055
- - Business raporu sektör uzmanı rolünü PRD'den çıkarır, kullanıcıya onaylatır ve web araştırması yapar; ayarlar `docs/findings/config.md`'de tutulur.
1056
- - **Panoya "Bulgular" sekmesi:** tür başına sağlık puanı ve değişimi, rapor geçmişi; kritik bulgular "Dikkat" alanına düşer.
1057
- - **README yenilendi:** banner (`kit/assets/banner.svg`), rozetler, Mermaid diyagramları.
1058
- - **Kitin kendi CI'ı:** `.github/workflows/kit-tests.yml` (projeye taşınmaz).
1075
+ - Special file extensions: `.ekle` → `.append`, `.birlestir.json` → `.merge.json`. Conflict file: `.yeni` → `.kit-new`.
1076
+ - `kit.mjs`: `kur`/`guncelle` → `install`/`update`, `--tip`/`--ekler`/`--proje` → `--type`/`--addons`/`--project`. `.kit.json` fields are in English.
1077
+ - **Detailed decisions moved to ADR files:** `docs/decisions/adr-NNNN-*.md` (template `adr-template.md`). The decision log is `docs/decisions/log.md`.
1078
+
1079
+ ### Added
1080
+ - **Protected project structure:**
1081
+ - A feature-based structure map per type (`.claude/structure.json`) and its guide (`docs/architecture/structure.md`).
1082
+ - `structure-guard.mjs`: The user is asked about a new file outside the map; clutter patterns (`*.bak`, `*-old.*`, copies, `temp/`, `deneme*`) are blocked; the whole repo is checked with `--check`.
1083
+ - A `structure` job was added to every type's CI. The board Architect and `/findings-tech` also check the structure.
1084
+ - `sandbox/` (a trial area outside git) and `docs/archive/` were added.
1085
+ - **Findings reports:**
1086
+ - Commands: `/findings-tech`, `/findings-business`, `/findings-security`, `/findings-ux`, `/findings-perf`, `/findings-legal`, `/findings-all`.
1087
+ - A shared protocol (`.claude/findings/protocol.md`), a lens per type (`lenses/`) and a report template.
1088
+ - At most 20 findings; severity score = impact + likelihood + spread + urgency; area health score; comparison with the previous report.
1089
+ - After the report: a fix plan, board opinion and transfer to the roadmap.
1090
+ - The business report derives the industry expert role from the PRD, has the user confirm it and does web research; the settings are kept in `docs/findings/config.md`.
1091
+ - **"Findings" tab in the dashboard:** health score per type and its change, report history; critical findings fall into the "Dikkat" (attention) area.
1092
+ - **README refreshed:** banner (`kit/assets/banner.svg`), badges, Mermaid diagrams.
1093
+ - **The kit's own CI:** `.github/workflows/kit-tests.yml` (not carried into the project).
1059
1094
 
1060
1095
  ## [2.3.0] - 2026-10-11
1061
1096
 
1062
- Araştırmaya dayalı 15 öneri.
1063
-
1064
- ### Eklendi
1065
- - **Güvenlik:**
1066
- - **Paket kapısı** (`paket-kapisi.mjs`): AI'nın kurmak istediği paket kurulumdan önce kayıt defterinden doğrulanır. Var olmayan paket engellenir. Çok yeni, az indirilmiş veya popüler bir pakete çok benzeyen paket için kullanıcıya sorulur (slopsquatting'e karşı).
1067
- - **Yıkıcı komut kalkanı** (`yikici-kalkan.mjs`): `DROP`, `TRUNCATE`, koşulsuz `DELETE`, `db reset`, volume silme, `git clean` engellenir. Prod deploy, ana dala push ve uzak veritabanı bağlantısı için kullanıcıya sorulur. Karar Claude Code'un izin katmanında verilir; AI kendisi atlayamaz.
1068
- - **Ajan yapılandırması koruması:** `CLAUDE.md`, `.claude/`, `.mcp.json` ve `.github/workflows/` düzenlemeleri kullanıcı onayı gerektirir. GUVENLIK.md'ye "AI ajanı güvenliği" bölümü eklendi.
1069
- - **CI'da Semgrep** ve TEST-PLANI'nda saldırgan testleri (IDOR, oturumsuz erişim, rol aşımı, XSS, girdi sınırı, log enjeksiyonu).
1070
- - **Kalite:**
1071
- - **Kabul testleri yaşayan şartname oldu:** PRD kriterlerinin kimliği var (`Ö-01.1`), testler koddan önce kırmızı yazılır. Pano JUnit raporunu okur ve "işaretli ama testi yok/kırmızı" uyumsuzluğunu yakalar.
1072
- - **CI'da kopya kod denetimi** (jscpd, eşik %5).
1073
- - **Bağlam sağlığı:** Durum çubuğunda bağlam doluluğu gösterilir. Bir UserPromptSubmit hook'u 12 mesajda bir temel kuralları hatırlatır ve %50/%70 eşiklerinde `/clear` önerir.
1074
- - **`docs/METRIKLER.md`:** Görev süresi, düzeltme oranı, geri alma, kopya kod, kabul oranı aylık olarak kaydedilir; retro bu verilerle yapılır.
1075
- - **Operasyon:**
1076
- - **Canlı izleme iş akışı** (web, backend): Kritik akışlar saatlik denenir, bozulursa issue açılır.
1077
- - **Bulut ajanları** (`claude-code-action`): CI kırmızıysa PR dalına düzeltme (döngü ve fork koruması ile) ve haftalık bakım issue'su. Değişkenle açılırlar.
1078
- - **`docs/HESAPLAR.md`:** Servis, sahip, 2FA ve bitiş tarihleri; pano 30 gün içinde dolanları uyarır.
1079
- - **`docs/BAYRAKLAR.md` ve STACK'lerde bayrak yöntemi:** Acil kapatma deploy gerektirmez.
1080
- - **Ürün:**
1081
- - **Tek yönlü / çift yönlü kapı:** Karar günlüğüne "Kapı" sütunu eklendi. Tek yönlü kararlarda kurul görüşü ve ayrıntılı kayıt zorunlu.
1082
- - **`docs/BIRIM-EKONOMISI.md`:** Pano katkı payını, başa baş noktasını ve hedefteki kâr/zararı hesaplar.
1083
- - **`/geri-bildirim` komutu ve `docs/GERI-BILDIRIM.md`:** Gelen kutusu, temalar ve yol haritasına aktarma.
1084
- - **DURUM panosu:**
1085
- - Yeni "Operasyon" sekmesi: hesaplar, bayraklar, GitHub (CI, açık PR'lar, canlı izleme; gh varsa 5 dk önbellekle).
1086
- - Kabul testi tablosu, metrik eğilimi, birim ekonomisi, geri bildirim, bağlam kartı, karar kapı filtresi.
1087
- - "Dikkat" listesi önem sırasına dizilir; ilk 6 madde gösterilir, kalanı açılır.
1088
-
1089
- ### Değişti
1090
- - **`docs/KARARLAR.md` karar günlüğü 8 sütun oldu (Kapı).** Pano eski 7 sütunlu tabloyu da okur. *(Elle uyarla: KARARLAR.md tablo başlığı)*
1091
- - **`docs/MALIYET-GUNLUGU.md`'ye "Süre (dk)" sütunu eklendi.** *(Elle uyarla)*
1092
- - **`docs/PRD.md` kabul kriterlerine kimlik eklendi.** *(Elle uyarla)*
1093
- - **Komutlar güncellendi:** `/baslat`, `/planla`, `/gelistir`, `/bakim`, `/retro`, `/canliya-al` ve `/oturum-sonu` yeni kuralları uygular.
1097
+ 15 suggestions based on research.
1098
+
1099
+ ### Added
1100
+ - **Security:**
1101
+ - **Package gate** (`paket-kapisi.mjs`): A package the AI wants to install is verified against the registry before install. A nonexistent package is blocked. The user is asked about a package that is too new, little downloaded or very similar to a popular package (against slopsquatting).
1102
+ - **Destructive command shield** (`yikici-kalkan.mjs`): `DROP`, `TRUNCATE`, unconditional `DELETE`, `db reset`, volume deletion and `git clean` are blocked. The user is asked about prod deploy, push to the main branch and a remote database connection. The decision is made in Claude Code's permission layer; the AI cannot bypass it itself.
1103
+ - **Agent configuration protection:** Edits to `CLAUDE.md`, `.claude/`, `.mcp.json` and `.github/workflows/` need user approval. An "AI agent security" section was added to GUVENLIK.md.
1104
+ - **Semgrep in CI** and adversarial tests in TEST-PLANI (IDOR, unauthenticated access, role escalation, XSS, input limit, log injection).
1105
+ - **Quality:**
1106
+ - **Acceptance tests became a living specification:** PRD criteria have ids (`Ö-01.1`), and tests are written red before the code. The dashboard reads the JUnit report and catches the mismatch "marked but has no test / is red".
1107
+ - **Duplicate code check in CI** (jscpd, threshold 5%).
1108
+ - **Context health:** Context fill is shown in the status line. A UserPromptSubmit hook reminds the core rules every 12 messages and suggests `/clear` at the 50%/70% thresholds.
1109
+ - **`docs/METRIKLER.md`:** Task time, fix rate, rollbacks, duplicate code and acceptance rate are recorded monthly; the retro is done with this data.
1110
+ - **Operations:**
1111
+ - **Live monitoring workflow** (web, backend): Critical flows are tried hourly, and an issue is opened if one breaks.
1112
+ - **Cloud agents** (`claude-code-action`): a fix on the PR branch if CI is red (with loop and fork protection) and a weekly maintenance issue. They are switched on with a variable.
1113
+ - **`docs/HESAPLAR.md`:** Service, owner, 2FA and expiry dates; the dashboard warns about those expiring within 30 days.
1114
+ - **`docs/BAYRAKLAR.md` and the flag method in the STACKs:** An emergency switch-off does not need a deploy.
1115
+ - **Product:**
1116
+ - **One-way / two-way door:** A "Kapı" (door) column was added to the decision log. For one-way decisions, a board opinion and a detailed record are mandatory.
1117
+ - **`docs/BIRIM-EKONOMISI.md`:** The dashboard computes contribution margin, the break-even point and profit/loss at the target.
1118
+ - **The `/geri-bildirim` command and `docs/GERI-BILDIRIM.md`:** An inbox, themes and transfer to the roadmap.
1119
+ - **DURUM dashboard:**
1120
+ - A new "Operations" tab: accounts, flags, GitHub (CI, open PRs, live monitoring; with a 5-minute cache if gh is present).
1121
+ - Acceptance test table, metric trend, unit economics, feedback, a context card, a decision door filter.
1122
+ - The "Dikkat" (attention) list is sorted by severity; the first 6 items are shown, the rest opens.
1123
+
1124
+ ### Changed
1125
+ - **The `docs/KARARLAR.md` decision log became 8 columns (Kapı).** The dashboard also reads the old 7-column table. *(Adapt by hand: KARARLAR.md table header)*
1126
+ - **A "Süre (dk)" (duration, min) column was added to `docs/MALIYET-GUNLUGU.md`.** *(Adapt by hand)*
1127
+ - **Ids were added to the `docs/PRD.md` acceptance criteria.** *(Adapt by hand)*
1128
+ - **Commands were updated:** `/baslat`, `/planla`, `/gelistir`, `/bakim`, `/retro`, `/canliya-al` and `/oturum-sonu` apply the new rules.
1094
1129
 
1095
1130
  ## [2.2.0] - 2026-10-11
1096
1131
 
1097
- ### Değişti
1098
- - **DURUM.html proje sahibinin kontrol paneline dönüştü:**
1099
- - Üst bölümde "Şimdi" (aşama, görev, sıradaki adım) ve "Dikkat gerektirenler" alanları var. Burada kurul RET'i, limit, bekleyen kararlar, yarıda kalan iş, açık sorunlar, eski ILERLEME ve soru modu görünür.
1100
- - Genel sağlık rozeti: Yolunda / Dikkat / Engel var.
1101
- - Özet kutucuklar: görevler, MVP kabul kriterleri, kararlar, kurul, son 7 günün commit'leri, limit.
1102
- - 8 sekme: Genel, Yol haritası (görev listesi, aktif görev vurgulu), Kararlar (konu filtresi), Kurul, Kalite (kontrol listeleri, kod sağlığı, düzeltme oranı, kritik akış testleri, bakım), Aktivite (14 günlük commit grafiği ve birleşik akış), Ürün ve teknik (PRD, MVP, stack, tasarım, önizleme bağlantıları, CHANGELOG), Limit ve maliyet.
1103
- - Açık ve koyu tema, 30 saniyede bir otomatik yenileme, klavyeyle sekme gezintisi.
1104
- - **Stop hook'u:** Panoyu her Claude cevabından sonra yeniler (token harcamaz).
1105
- - **`durum-oku.mjs`:** Yardımcı fonksiyonları dışa açar; görev listeleri ve son oturum bilgisini okur.
1132
+ ### Changed
1133
+ - **DURUM.html became the project owner's control panel:**
1134
+ - The top part has "Now" (phase, task, next step) and "Needs attention" areas. Here you see board RET, the limit, pending decisions, interrupted work, open issues, a stale ILERLEME and question mode.
1135
+ - Overall health badge: On track / Attention / Blocked.
1136
+ - Summary tiles: tasks, MVP acceptance criteria, decisions, board, the last 7 days of commits, limit.
1137
+ - 8 tabs: Overview, Roadmap (task list, active task highlighted), Decisions (topic filter), Board, Quality (checklists, code health, fix rate, critical flow tests, maintenance), Activity (14-day commit chart and a merged feed), Product and technical (PRD, MVP, stack, design, preview links, CHANGELOG), Limit and cost.
1138
+ - Light and dark theme, automatic refresh every 30 seconds, tab navigation with the keyboard.
1139
+ - **Stop hook:** Refreshes the dashboard after every Claude reply (spends no tokens).
1140
+ - **`durum-oku.mjs`:** Exposes its helper functions; reads task lists and last session info.
1106
1141
 
1107
1142
  ## [2.1.0] - 2026-10-11
1108
1143
 
1109
- ### Eklendi
1110
- - **Uzman kurulu:**
1111
- - 10 rol şablonu (`.claude/kurul/`): Ürün, Mimar, UX, Performans/SEO, KVKK, QA, DevOps, Mobil, API ve AI. Güvenlik üyesi olarak `guvenlik-denetcisi` kullanılır.
1112
- - `/baslat` Adım 6'da tipe göre kurul önerilir, onaylanır ve projeye özel ajanlar `.claude/agents/kurul-*.md` olarak üretilir.
1113
- - Toplantılar: plan, görev sonu, commit (hafif) ve faz sonu/canlıya alma.
1114
- - Kurul danışmandır; kritik bulguda durdurur.
1115
- - `/kurul` komutu ve `docs/KURUL.md` toplantı günlüğü.
1116
- - **Commit kapısı hook'u** (`commit-kapisi.mjs`): AI'nın commit'i hafif kurul denetimi olmadan geçmez. Sadece doküman değiştiyse muaf; `docs/KURUL.md` üzerinden kapatılabilir.
1117
- - **Limit farkındalığı:**
1118
- - `limit.mjs` ve durum çubuğu Claude Code'un `rate_limits` bilgisini okur ve önbelleğe alır. Masaüstünde `get_usage` aracı kullanılır.
1119
- - `docs/LIMIT-PLANI.md`: eşikler, maliyet tahmini, sarı/kırmızı seviyede seçenekler, güvenli durma.
1120
- - Görev maliyetleri `docs/MALIYET-GUNLUGU.md`'ye kaydedilir.
1121
- - `docs/ILERLEME.md`'ye "Kaldığı yer" bölümü eklendi.
1122
- - **Kod haritası:** `/baslat`, codebase-memory-mcp kurulumunu önerir; CLAUDE.md onu öncelikli keşif aracı yapar.
1123
- - **Durum panosu ve oturum notu:** Limit, kurul ve "kaldığı yer" bilgisi eklendi.
1124
-
1125
- ### Değişti
1126
- - **Açılış yükü yaklaşık 8.000 token'dan 1.700 token'a indi:**
1127
- - `CLAUDE.md` artık sadece `docs/ILERLEME.md`'yi içe aktarıyor.
1128
- - Protokol, skill ve stack kuralları CLAUDE.md'de özet olarak duruyor; ayrıntılı dokümanlar gerektiğinde okunuyor. *(Elle uyarla: CLAUDE.md)*
1129
- - **`/baslat` 9 adım oldu** (yeni adım: Kurul). *(Elle uyarla: ILERLEME.md'deki `Başlangıç adımı` satırının paydası 9 oldu)*
1130
- - **`guvenlik-denetcisi`:** `model: sonnet` ve kurul çıktı formatı eklendi.
1131
- - **Komutlar güncellendi:** `/planla`, `/gelistir`, `/incele`, `/oturum-sonu`, `/canliya-al` ve `/durum` artık kurul toplantılarını ve limit kontrolünü içeriyor.
1144
+ ### Added
1145
+ - **Expert board:**
1146
+ - 10 role templates (`.claude/kurul/`): Product, Architect, UX, Performance/SEO, KVKK, QA, DevOps, Mobile, API and AI. `guvenlik-denetcisi` is used as the security member.
1147
+ - In `/baslat` Step 6, a board is suggested by type, approved, and project-specific agents are generated as `.claude/agents/kurul-*.md`.
1148
+ - Meetings: plan, end-of-task, commit (light) and end-of-phase/release.
1149
+ - The board is an advisor; it stops work on a critical finding.
1150
+ - The `/kurul` command and the `docs/KURUL.md` meeting log.
1151
+ - **Commit gate hook** (`commit-kapisi.mjs`): The AI's commit does not pass without a light board review. Exempt only when just docs changed; it can be switched off via `docs/KURUL.md`.
1152
+ - **Limit awareness:**
1153
+ - `limit.mjs` and the status line read Claude Code's `rate_limits` information and cache it. On desktop the `get_usage` tool is used.
1154
+ - `docs/LIMIT-PLANI.md`: thresholds, cost estimate, options at yellow/red level, safe stopping.
1155
+ - Task costs are recorded in `docs/MALIYET-GUNLUGU.md`.
1156
+ - A "Kaldığı yer" (where we left off) section was added to `docs/ILERLEME.md`.
1157
+ - **Code map:** `/baslat` suggests installing codebase-memory-mcp; CLAUDE.md makes it the primary exploration tool.
1158
+ - **Status dashboard and session note:** Limit, board and "where we left off" information were added.
1159
+
1160
+ ### Changed
1161
+ - **Startup load dropped from about 8,000 tokens to 1,700 tokens:**
1162
+ - `CLAUDE.md` now imports only `docs/ILERLEME.md`.
1163
+ - Protocol, skill and stack rules stay in CLAUDE.md as summaries; detailed docs are read when needed. *(Adapt by hand: CLAUDE.md)*
1164
+ - **`/baslat` became 9 steps** (new step: Board). *(Adapt by hand: the denominator of the `Başlangıç adımı` line in ILERLEME.md became 9)*
1165
+ - **`guvenlik-denetcisi`:** `model: sonnet` and the board output format were added.
1166
+ - **Commands were updated:** `/planla`, `/gelistir`, `/incele`, `/oturum-sonu`, `/canliya-al` and `/durum` now include board meetings and the limit check.
1132
1167
 
1133
1168
  ## [2.0.0] - 2026-10-11
1134
1169
 
1135
- Soru odaklı akış ve GitHub template yapısı. **Kırıcı değişiklik:** 1.x projeleri otomatik güncellenemez (`.kit.json` biçimi ve dosya düzeni değişti).
1136
-
1137
- ### Eklendi
1138
- - **Karar protokolü** (`docs/KARAR-PROTOKOLU.md`):
1139
- - Her ürün, teknik, tasarım, içerik, veri, güvenlik ve maliyet kararı AskUserQuestion ile sorulur.
1140
- - Önerilen seçenek ilk sıradadır ve her seçeneğin ne zaman daha iyi olduğu açıklanır.
1141
- - **Soru modu:** Konu bazlı kapatılıp açılır (`/soru`, ya da "tasarımda sorma" demek yeterli). Kapalı konudaki kararlar "otomatik" olarak kaydedilir.
1142
- - **Görsel önizleme:** Tasarım kararları `.onizleme/` altında üretilen örneklerle sorulur.
1143
- - **Skill yönlendirme** (`docs/SKILLER.md`):
1144
- - Caveman, Impeccable, Taste Skill (stil yönüne göre), UI UX Pro Max, Humanizer, Ponytail, Matt Pocock skills.
1145
- - Bu plugin'ler `.claude/settings.json`'da tanımlı; proje açılınca Claude Code kurmayı önerir.
1146
- - **Raporlama:**
1147
- - Her cevabın sonunda durum bloğu.
1148
- - Alt durum çubuğu (`statusline.mjs`).
1149
- - `/durum` komutu ve `DURUM.html` panosu (`durum-panosu.mjs`).
1150
- - **`/baslat` sihirbazı:**
1151
- - 8 adım: fikir sorgulama, proje tipi, kurulum, teknoloji, mimari, tasarım, yol haritası, kapanış.
1152
- - Kaldığı adımdan devam eder.
1153
- - **STACK.md'lere "Karar noktaları" kataloğu:** Her tip için seçenekler ve hangisinin ne zaman daha iyi olduğu.
1154
- - **Yeni komutlar:** `/tasarim`, `/soru`, `/durum`, `/kit-guncelle`.
1155
- - **`docs/KARARLAR.md`'ye karar günlüğü tablosu.**
1156
- - **`docs/ILERLEME.md`'ye yeni alanlar:** başlangıç adımı, soru modu, bekleyen kararlar.
1157
-
1158
- ### Değişti
1159
- - **Template yapısı:**
1160
- - Repo kökü artık ortak katmanın kendisi.
1161
- - Tipler ve ekler `kit/sablon/` altında.
1162
- - `/baslat`, `node kit/kit.mjs kur` ile tipi yerleştirir ve `kit/` klasörünü siler.
1163
- - **Kurulum aracı Node.js'e taşındı** (`kit/kit.mjs`). `kit.ps1` kaldırıldı.
1164
- - **Tip katmanları birleştirmeyle uygulanıyor:** `.gitignore.ekle` ve `.claude/settings.birlestir.json` artık kökteki dosyalarla birleştiriliyor.
1165
- - **`TASARIM.md`:** Belirteçler Impeccable'ın `DESIGN.md` dosyasına taşındı. TASARIM.md artık seçilen yön, karar günlüğü ve kalıcı kurallar için.
1166
- - **Komutlar:** `/planla`, `/gelistir`, `/incele`, `/hata-ayikla`, `/canliya-al`, `/bakim`, `/retro` ve `/oturum-sonu` karar sorma ve skill adımlarıyla güncellendi.
1167
- - **`/retro`:** Kit önerileri artık kit reposunda bir dal olarak hazırlanır ve onayla push edilir.
1170
+ Question-driven flow and GitHub template structure. **Breaking change:** 1.x projects cannot be updated automatically (the `.kit.json` format and file layout changed).
1171
+
1172
+ ### Added
1173
+ - **Decision protocol** (`docs/KARAR-PROTOKOLU.md`):
1174
+ - Every product, technical, design, content, data, security and cost decision is asked with AskUserQuestion.
1175
+ - The recommended option is first, and when each option is better is explained.
1176
+ - **Question mode:** Switched off and on per topic (`/soru`, or just saying "don't ask on design"). Decisions on a closed topic are recorded as "otomatik" (automatic).
1177
+ - **Visual preview:** Design decisions are asked with examples generated under `.onizleme/`.
1178
+ - **Skill routing** (`docs/SKILLER.md`):
1179
+ - Caveman, Impeccable, Taste Skill (by style direction), UI UX Pro Max, Humanizer, Ponytail, Matt Pocock skills.
1180
+ - These plugins are defined in `.claude/settings.json`; Claude Code suggests installing them when the project is opened.
1181
+ - **Reporting:**
1182
+ - A status block at the end of every answer.
1183
+ - A bottom status line (`statusline.mjs`).
1184
+ - The `/durum` command and the `DURUM.html` dashboard (`durum-panosu.mjs`).
1185
+ - **`/baslat` wizard:**
1186
+ - 8 steps: questioning the idea, project type, setup, technology, architecture, design, roadmap, closing.
1187
+ - It continues from the step where it stopped.
1188
+ - **A "Decision points" catalog in the STACK.md files:** Options for each type and when each is better.
1189
+ - **New commands:** `/tasarim`, `/soru`, `/durum`, `/kit-guncelle`.
1190
+ - **A decision log table in `docs/KARARLAR.md`.**
1191
+ - **New fields in `docs/ILERLEME.md`:** start step, question mode, pending decisions.
1192
+
1193
+ ### Changed
1194
+ - **Template structure:**
1195
+ - The repo root is now the shared layer itself.
1196
+ - Types and add-ons are under `kit/sablon/`.
1197
+ - `/baslat` places the type with `node kit/kit.mjs kur` and deletes the `kit/` folder.
1198
+ - **The install tool moved to Node.js** (`kit/kit.mjs`). `kit.ps1` was removed.
1199
+ - **Type layers are applied by merging:** `.gitignore.ekle` and `.claude/settings.birlestir.json` are now merged with the files at the root.
1200
+ - **`TASARIM.md`:** Tokens moved to Impeccable's `DESIGN.md` file. TASARIM.md is now for the chosen direction, the decision log and lasting rules.
1201
+ - **Commands:** `/planla`, `/gelistir`, `/incele`, `/hata-ayikla`, `/canliya-al`, `/bakim`, `/retro` and `/oturum-sonu` were updated with decision-asking and skill steps.
1202
+ - **`/retro`:** Kit suggestions are now prepared as a branch in the kit repo and pushed with approval.
1168
1203
 
1169
1204
  ## [1.1.0] - 2026-10-11
1170
1205
 
1171
- ### Eklendi
1172
- - **Otomatik kontroller**
1173
- - Claude Code hook'ları (`.claude/hooks/`): sır yazımını engelleme, dosya biçimlendirme, oturum başında git ve ILERLEME durumu.
1174
- - Commit öncesi kontrol: web/mobil için husky + lint-staged, backend için pre-commit. İkisi de sır taraması yapar.
1175
- - GitHub Actions CI ve Dependabot (her tip için).
1176
- - **İnceleme**
1177
- - `inceleyici` ve `guvenlik-denetcisi` alt ajanları (`.claude/agents/`).
1178
- - `/incele` artık bu ajanları kullanıyor.
1179
- - **Doğrulama:** `/gelistir`'e "kanıt üret" adımı, STACK.md'lere "Doğrulama" bölümü, "Bitti" tanımına kanıt maddesi.
1180
- - **MCP:** `.mcp.json` (Playwright, Supabase salt-okunur, Sentry). `/bakim` bunları kullanabiliyor.
1181
- - **Yeni dokümanlar:** `docs/SOZLUK.md`, `docs/LANSMAN.md`, `docs/RETRO.md`; web ve mobil için `docs/TASARIM.md`.
1182
- - **AI eki** (`-Ekler ai`): `docs/AI.md`, `evals/`, `prompts/`, `.env.example` parçası.
1183
- - **`/retro` komutu:** dersleri projeye ve kite geri yazar.
1184
- - **`kit.ps1`:** `yeni` ve `guncelle` işlemleri. Projede `.kit.json` ile dosya takibi yapılır; güncelleme kullanıcının değiştirdiği dosyaları ezmez.
1185
- - Testler: `testler/`.
1186
-
1187
- ### Değişti
1188
- - `yeni-proje.ps1` kaldırıldı, yerine `kit.ps1 yeni` geldi.
1189
- - Yol haritası Faz 0'a pre-commit + CI (G-004) ve SOZLUK/TASARIM (G-007) görevleri eklendi; sonraki görev numaraları kaydı. *(Elle uyarla: YOL-HARITASI.md)*
1190
- - `CLAUDE.md`'ye yeni dokümanlar, hook ve ajan kuralları eklendi. *(Elle uyarla)*
1191
- - Backend bağımlılık taraması `uv run --with pip-audit pip-audit` oldu. Eski `uvx pip-audit` komutu projenin değil, kendi ortamını tarıyordu. *(Elle uyarla: STACK.md, settings.json)*
1192
- - `CANLIYA-ALMA.md`'ye CI, dal koruması, AI eki ve lansman maddeleri eklendi.
1206
+ ### Added
1207
+ - **Automatic checks**
1208
+ - Claude Code hooks (`.claude/hooks/`): blocking secret writes, file formatting, git and ILERLEME state at session start.
1209
+ - Pre-commit check: husky + lint-staged for web/mobile, pre-commit for backend. Both scan for secrets.
1210
+ - GitHub Actions CI and Dependabot (for every type).
1211
+ - **Review**
1212
+ - The `inceleyici` and `guvenlik-denetcisi` subagents (`.claude/agents/`).
1213
+ - `/incele` now uses these agents.
1214
+ - **Verification:** A "produce evidence" step in `/gelistir`, a "Doğrulama" (verification) section in the STACK.md files, an evidence item in the definition of "done".
1215
+ - **MCP:** `.mcp.json` (Playwright, Supabase read-only, Sentry). `/bakim` can use them.
1216
+ - **New docs:** `docs/SOZLUK.md`, `docs/LANSMAN.md`, `docs/RETRO.md`; `docs/TASARIM.md` for web and mobile.
1217
+ - **AI add-on** (`-Ekler ai`): `docs/AI.md`, `evals/`, `prompts/`, an `.env.example` fragment.
1218
+ - **The `/retro` command:** writes lessons back to the project and the kit.
1219
+ - **`kit.ps1`:** `yeni` and `guncelle` operations. Files are tracked in the project with `.kit.json`; update does not overwrite files the user changed.
1220
+ - Tests: `testler/`.
1221
+
1222
+ ### Changed
1223
+ - `yeni-proje.ps1` was removed, replaced by `kit.ps1 yeni`.
1224
+ - Pre-commit + CI (G-004) and SOZLUK/TASARIM (G-007) tasks were added to the roadmap's Phase 0; later task numbers shifted. *(Adapt by hand: YOL-HARITASI.md)*
1225
+ - New docs, hook and agent rules were added to `CLAUDE.md`. *(Adapt by hand)*
1226
+ - Backend dependency scanning became `uv run --with pip-audit pip-audit`. The old `uvx pip-audit` command was scanning its own environment, not the project's. *(Adapt by hand: STACK.md, settings.json)*
1227
+ - CI, branch protection, AI add-on and launch items were added to `CANLIYA-ALMA.md`.
1193
1228
 
1194
1229
  ## [1.0.0] - 2026-10-11
1195
1230
 
1196
- ### Eklendi
1197
- - İlk sürüm: ortak dokümanlar, 8 komut, web-saas / mobil / backend şablonları, `REHBER.html`.
1231
+ ### Added
1232
+ - First release: shared docs, 8 commands, web-saas / mobile / backend templates, `REHBER.html`.