tillerhand 3.39.4 → 3.41.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.
- package/.claude/hooks/dashboard.mjs +17 -2
- package/README.en.md +9 -1
- package/README.md +9 -1
- package/kit/CHANGELOG.md +10 -0
- package/kit/VERSION +1 -1
- package/kit/guide.html +7 -2
- package/kit/kit.mjs +1 -1
- package/package.json +2 -1
|
@@ -190,7 +190,10 @@ const fmtDate = (t) => { const z = toDate(t); return Number.isNaN(z.getTime()) ?
|
|
|
190
190
|
const limitSeverity = (p, k) => (p == null ? 'info' : p >= THRESHOLDS[k].red ? 'critical' : p >= THRESHOLDS[k].yellow ? 'warn' : 'good');
|
|
191
191
|
const TOPICS = ['urun', 'teknik', 'tasarim', 'icerik', 'veri', 'guvenlik', 'maliyet'];
|
|
192
192
|
|
|
193
|
-
|
|
193
|
+
// The command to paste into Claude: "`/build G-013` …" or "/wrap-up ve /clear" → first command, without its <placeholder> or note
|
|
194
|
+
const cmdOf = (s = '') => { const m = String(s).match(/`(\/[^`\n]+)`/) ?? String(s).match(/^(\/.*)$/); return m ? m[1].split(/ ve | ile |\s*\(/)[0].replace(/\s*[[<].*$/, '').trim() : ''; };
|
|
195
|
+
const copyBtn = (s) => { const c = cmdOf(s); return c ? ` <button class="kopyala" type="button" data-cmd="${e(c)}" aria-label="${e(c)} komutunu kopyala">Kopyala</button>` : ''; };
|
|
196
|
+
const alertRow = (x) => `<li class="${x.sev}"><span class="ic" aria-hidden="true">${SEV[x.sev][0]}</span><span><span class="sr-only">${SEV[x.sev][1]}: </span>${md(x.text)}</span>${x.action ? `<span class="eylem">→ ${md(x.action)}${copyBtn(x.action)}</span>` : ''}</li>`;
|
|
194
197
|
const kpi = (label, value, sub = '', bar = '') => `<div class="kpi"><div class="kpi-l">${e(label)}</div><div class="kpi-v">${value}</div>${bar}<div class="kpi-s">${sub}</div></div>`;
|
|
195
198
|
|
|
196
199
|
// ---------- sections ----------
|
|
@@ -370,6 +373,8 @@ code{font:.86em var(--mono);background:var(--sunk);padding:.08em .38em;border-ra
|
|
|
370
373
|
.now-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 16px}
|
|
371
374
|
.next{margin-top:12px;padding:10px 12px;border-radius:8px;background:var(--accent-soft)}
|
|
372
375
|
.next .now-l{color:var(--accent)}
|
|
376
|
+
.kopyala{font:600 .72rem/1 var(--sans);padding:4px 8px;margin-left:6px;border-radius:6px;border:1px solid var(--line);background:var(--surface);color:var(--fg);cursor:pointer;vertical-align:1px}
|
|
377
|
+
.kopyala:hover{border-color:var(--accent);color:var(--accent)}
|
|
373
378
|
.att{list-style:none;padding:0;gap:8px}.att li{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;align-items:start;padding:8px 10px;border-radius:8px;background:var(--sunk)}
|
|
374
379
|
.att li.critical{background:var(--crit-bg)}.att li.warn{background:var(--warn-bg)}.att .eylem{grid-column:2;font-size:.8rem;color:var(--muted)}
|
|
375
380
|
.badge{display:inline-flex;gap:4px;align-items:center;font:600 .74rem/1 var(--sans);padding:4px 8px;border-radius:999px;white-space:nowrap}
|
|
@@ -447,7 +452,7 @@ footer{color:var(--muted);font-size:.78rem;padding-top:8px}
|
|
|
447
452
|
<div><div class="now-l">Son güncelleme</div><div class="num">${e(a['Son güncelleme'] ?? '-')}</div></div>
|
|
448
453
|
${/başlangıç/i.test(a['Aktif faz'] ?? '') ? `<div><div class="now-l">Başlangıç adımı</div><div class="num">${e(a['Başlangıç adımı'] ?? '-')}</div></div>` : ''}
|
|
449
454
|
</div>
|
|
450
|
-
<div class="next"><div class="now-l">Sıradaki adım</div><div>${md(next)}</div
|
|
455
|
+
<div class="next"><div class="now-l">Sıradaki adım</div><div>${md(next)}${copyBtn(next)}</div>${cmdOf(next) ? '<div class="muted small">Kopyala, Claude sohbetine yapıştır.</div>' : ''}</div>
|
|
451
456
|
${d.state ? `<div class="now-l" style="margin-top:14px">Durum</div><p style="margin-top:4px">${md(d.state)}</p>` : ''}
|
|
452
457
|
${d.lastSession.length ? `<div class="now-l" style="margin-top:10px">Son oturumda</div><ul style="margin-top:4px">${d.lastSession.slice(0, 4).map((x) => `<li>${md(x)}</li>`).join('')}</ul>` : ''}
|
|
453
458
|
</section>
|
|
@@ -507,6 +512,16 @@ ${TABS.map(([id, , content], i) => `<div class="panel" role="tabpanel" id="p-${i
|
|
|
507
512
|
});
|
|
508
513
|
});
|
|
509
514
|
|
|
515
|
+
// file:// may refuse the clipboard API: fall back to a selected textarea
|
|
516
|
+
document.querySelectorAll('.kopyala').forEach(function (b) {
|
|
517
|
+
b.addEventListener('click', function () {
|
|
518
|
+
var c = b.dataset.cmd;
|
|
519
|
+
function done(ok) { b.textContent = ok ? 'Kopyalandı' : 'Kopyalanamadı'; setTimeout(function () { b.textContent = 'Kopyala'; }, 1500); }
|
|
520
|
+
function fallback() { var t = document.createElement('textarea'); t.value = c; document.body.appendChild(t); t.select(); var ok = false; try { ok = document.execCommand('copy'); } catch (er) {} t.remove(); done(ok); }
|
|
521
|
+
if (navigator.clipboard) navigator.clipboard.writeText(c).then(function () { done(true); }, fallback); else fallback();
|
|
522
|
+
});
|
|
523
|
+
});
|
|
524
|
+
|
|
510
525
|
var tip = document.getElementById('tip');
|
|
511
526
|
document.querySelectorAll('[data-tip]').forEach(function (el) {
|
|
512
527
|
el.addEventListener('mousemove', function (ev) { tip.textContent = el.dataset.tip; tip.style.opacity = 1; tip.style.left = ev.clientX + 12 + 'px'; tip.style.top = ev.clientY - 30 + 'px'; });
|
package/README.en.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
8
|
<p align="center">
|
|
9
|
-
<a href="kit/CHANGELOG.md"><img alt="Version" src="https://img.shields.io/badge/version-3.
|
|
9
|
+
<a href="kit/CHANGELOG.md"><img alt="Version" src="https://img.shields.io/badge/version-3.41.0-2a78d6?style=flat-square"></a>
|
|
10
10
|
<a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-2a78d6?style=flat-square"></a>
|
|
11
11
|
<img alt="Claude Code" src="https://img.shields.io/badge/Claude%20Code-ready-d97757?style=flat-square">
|
|
12
12
|
<img alt="Also Codex and Antigravity" src="https://img.shields.io/badge/also-Codex%20%C2%B7%20Antigravity-5b6577?style=flat-square">
|
|
@@ -93,6 +93,14 @@ npx tillerhand init
|
|
|
93
93
|
claude
|
|
94
94
|
```
|
|
95
95
|
|
|
96
|
+
As a Claude Code plugin (an install skill; the kit is still copied into the project as files):
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
/plugin marketplace add burakdogrul/TillerHand
|
|
100
|
+
/plugin install tillerhand@tillerhand
|
|
101
|
+
/tillerhand:init
|
|
102
|
+
```
|
|
103
|
+
|
|
96
104
|
With git instead of npm (the kit stays in a `vibe-kit/` folder inside the project and goes into `.gitignore`):
|
|
97
105
|
|
|
98
106
|
```bash
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
8
|
<p align="center">
|
|
9
|
-
<a href="kit/CHANGELOG.md"><img alt="Sürüm" src="https://img.shields.io/badge/s%C3%BCr%C3%BCm-3.
|
|
9
|
+
<a href="kit/CHANGELOG.md"><img alt="Sürüm" src="https://img.shields.io/badge/s%C3%BCr%C3%BCm-3.41.0-2a78d6?style=flat-square"></a>
|
|
10
10
|
<a href="LICENSE"><img alt="Lisans: MIT" src="https://img.shields.io/badge/lisans-MIT-2a78d6?style=flat-square"></a>
|
|
11
11
|
<img alt="Claude Code" src="https://img.shields.io/badge/Claude%20Code-haz%C4%B1r-d97757?style=flat-square">
|
|
12
12
|
<img alt="Codex ve Antigravity" src="https://img.shields.io/badge/ayr%C4%B1ca-Codex%20%C2%B7%20Antigravity-5b6577?style=flat-square">
|
|
@@ -91,6 +91,14 @@ npx tillerhand init
|
|
|
91
91
|
claude
|
|
92
92
|
```
|
|
93
93
|
|
|
94
|
+
Claude Code plugin olarak (kurulum skill'i; kit yine projeye dosya olarak kopyalanır):
|
|
95
|
+
|
|
96
|
+
```text
|
|
97
|
+
/plugin marketplace add burakdogrul/TillerHand
|
|
98
|
+
/plugin install tillerhand@tillerhand
|
|
99
|
+
/tillerhand:init
|
|
100
|
+
```
|
|
101
|
+
|
|
94
102
|
npm yerine git ile (kit, proje içinde `vibe-kit/` klasöründe durur ve `.gitignore`'a girer):
|
|
95
103
|
|
|
96
104
|
```bash
|
package/kit/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
Kit sürümü `kit/VERSION` dosyasında. Bir projeyi güncellemek: projede `/kit-update`.
|
|
4
4
|
"Elle uyarla" notu olan maddeler projeye ait dosyalardadır; güncelleme bunlara dokunmaz.
|
|
5
5
|
|
|
6
|
+
## [3.41.0] - 2026-10-27
|
|
7
|
+
|
|
8
|
+
### Eklenen
|
|
9
|
+
- **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.
|
|
10
|
+
|
|
11
|
+
## [3.40.0] - 2026-10-27
|
|
12
|
+
|
|
13
|
+
### Eklenen
|
|
14
|
+
- **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.
|
|
15
|
+
|
|
6
16
|
## [3.39.4] - 2026-10-27
|
|
7
17
|
|
|
8
18
|
### Düzeltilen
|
package/kit/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.
|
|
1
|
+
3.41.0
|
package/kit/guide.html
CHANGED
|
@@ -287,7 +287,7 @@ footer .container { display: flex; flex-wrap: wrap; gap: 16px; justify-content:
|
|
|
287
287
|
<section class="hero">
|
|
288
288
|
<div class="container">
|
|
289
289
|
<div>
|
|
290
|
-
<span class="pill"><b>v3.
|
|
290
|
+
<span class="pill"><b>v3.41.0</b> Claude Code için başlangıç kiti · MIT</span>
|
|
291
291
|
<h1>Kodu AI yazar.<br><em>Dümen sende.</em></h1>
|
|
292
292
|
<p class="sub">TillerHand, Claude Code ile bir ürünü fikirden canlıya ve bakıma kadar götürür. Her önemli kararda AI sana seçenekleri, önerisini ve her seçeneğin bedelini sunar. Bir uzman kurulu işi denetler, korumalar hatayı daha olmadan durdurur.</p>
|
|
293
293
|
<div class="install"><span id="cmd">npx tillerhand init</span><button class="copy" type="button" data-copy="cmd">Kopyala</button></div>
|
|
@@ -528,6 +528,10 @@ Bekleyen karar: e-posta servisi</pre>
|
|
|
528
528
|
mkdir yeni-proje && cd yeni-proje
|
|
529
529
|
npx tillerhand init
|
|
530
530
|
claude
|
|
531
|
+
<span class="c"># ya da Claude Code plugin olarak (Claude Code içinde)</span>
|
|
532
|
+
/plugin marketplace add burakdogrul/TillerHand
|
|
533
|
+
/plugin install tillerhand@tillerhand
|
|
534
|
+
/tillerhand:init
|
|
531
535
|
<span class="c"># ya da git ile: kit proje içinde vibe-kit/ klasöründe durur (.gitignore'a girer)</span>
|
|
532
536
|
git clone https://github.com/burakdogrul/TillerHand.git vibe-kit
|
|
533
537
|
node vibe-kit/kit/kit.mjs init
|
|
@@ -848,6 +852,7 @@ Sıradaki: G-013 şifre sıfırlama · bekleyen karar: e-posta servisi</pre>
|
|
|
848
852
|
<li><b>10 sekme:</b> Genel · Yol haritası · Kararlar · Kurul · Bulgular · Kalite · Aktivite · Ürün ve teknik · Operasyon · Limit ve maliyet</li>
|
|
849
853
|
<li><b>Ürün ve teknik:</b> PRD, MVP ve kabul testleri, birim ekonomisi, geri bildirim, stack, tasarım, marka paketi, tanıtım videoları, araştırma notları</li>
|
|
850
854
|
<li><b>Limit ve maliyet:</b> 5 saatlik ve haftalık limit, bağlam, son 30 günün token ve API karşılığı maliyeti (ccusage), görev başı limit maliyeti</li>
|
|
855
|
+
<li>Sıradaki adımın ve uyarılardaki komutların yanında <b>Kopyala</b> düğmesi: komutu Claude sohbetine yapıştırırsın</li>
|
|
851
856
|
<li>Her Claude cevabından sonra güncellenir, açıkken 30 saniyede bir yenilenir; ek token harcamaz</li>
|
|
852
857
|
</ul>
|
|
853
858
|
<h3>Masaüstü bildirimi</h3>
|
|
@@ -1055,7 +1060,7 @@ Sıradaki: G-013 şifre sıfırlama · bekleyen karar: e-posta servisi</pre>
|
|
|
1055
1060
|
<footer>
|
|
1056
1061
|
<div class="container">
|
|
1057
1062
|
<a class="brand" href="#top" style="font-size:16px"><svg class="mark" style="width:22px;height:22px"><use href="#mark"/></svg>TillerHand</a>
|
|
1058
|
-
<span>Sürüm 3.
|
|
1063
|
+
<span>Sürüm 3.41.0 · <a href="https://github.com/burakdogrul/TillerHand">GitHub</a> · <a href="https://github.com/burakdogrul/TillerHand/blob/main/LICENSE">MIT lisansı</a> · KVKK bölümü kontrol listesidir, hukuki görüş değildir.</span>
|
|
1059
1064
|
</div>
|
|
1060
1065
|
</footer>
|
|
1061
1066
|
|
package/kit/kit.mjs
CHANGED
|
@@ -31,7 +31,7 @@ const ADDONS = fs.readdirSync(path.join(TEMPLATES, 'addons'));
|
|
|
31
31
|
const TOOLS = ['claude', 'codex', 'antigravity'];
|
|
32
32
|
// Root entries that are not part of the common layer (the kit itself, generated and temporary files)
|
|
33
33
|
// CLAUDE.local.md is personal (in .gitignore); it must not be carried into a project installed from a local folder
|
|
34
|
-
const COMMON_EXCLUDE = new Set(['.git', 'kit', 'node_modules', '.kit.json', '.kit.local.json', 'README.md', 'dashboard.html', '.previews', 'sandbox', '.calisma', '.impeccable', 'CLAUDE.local.md', 'LICENSE', 'README.en.md', 'package.json']);
|
|
34
|
+
const COMMON_EXCLUDE = new Set(['.git', 'kit', 'node_modules', '.kit.json', '.kit.local.json', 'README.md', 'dashboard.html', '.previews', 'sandbox', '.calisma', '.impeccable', 'CLAUDE.local.md', 'LICENSE', 'README.en.md', 'package.json', '.claude-plugin']);
|
|
35
35
|
// Files that only make sense in the kit repo and are not carried into projects
|
|
36
36
|
const KIT_ONLY = ['.github/workflows/kit-tests.yml', '.github/workflows/npm-publish.yml'];
|
|
37
37
|
// Run from the npm package (npx tillerhand): the kit lives in the npx cache, which can be cleared, so the record names
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tillerhand",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.41.0",
|
|
4
4
|
"description": "Claude Code, Codex ve Antigravity için Türkçe vibe coding kiti: kurallar, komutlar, korumalar ve proje şablonları.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"kit/",
|
|
17
17
|
"!kit/eval/",
|
|
18
18
|
"!kit/tests/",
|
|
19
|
+
"!kit/plugin/",
|
|
19
20
|
".gitattributes",
|
|
20
21
|
"AGENTS.md",
|
|
21
22
|
"CHANGELOG.md",
|