tillerhand 3.40.0 → 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 +1 -1
- package/README.md +1 -1
- package/kit/CHANGELOG.md +5 -0
- package/kit/VERSION +1 -1
- package/kit/guide.html +3 -2
- package/package.json +1 -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">
|
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">
|
package/kit/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,11 @@
|
|
|
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
|
+
|
|
6
11
|
## [3.40.0] - 2026-10-27
|
|
7
12
|
|
|
8
13
|
### Eklenen
|
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>
|
|
@@ -852,6 +852,7 @@ Sıradaki: G-013 şifre sıfırlama · bekleyen karar: e-posta servisi</pre>
|
|
|
852
852
|
<li><b>10 sekme:</b> Genel · Yol haritası · Kararlar · Kurul · Bulgular · Kalite · Aktivite · Ürün ve teknik · Operasyon · Limit ve maliyet</li>
|
|
853
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>
|
|
854
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>
|
|
855
856
|
<li>Her Claude cevabından sonra güncellenir, açıkken 30 saniyede bir yenilenir; ek token harcamaz</li>
|
|
856
857
|
</ul>
|
|
857
858
|
<h3>Masaüstü bildirimi</h3>
|
|
@@ -1059,7 +1060,7 @@ Sıradaki: G-013 şifre sıfırlama · bekleyen karar: e-posta servisi</pre>
|
|
|
1059
1060
|
<footer>
|
|
1060
1061
|
<div class="container">
|
|
1061
1062
|
<a class="brand" href="#top" style="font-size:16px"><svg class="mark" style="width:22px;height:22px"><use href="#mark"/></svg>TillerHand</a>
|
|
1062
|
-
<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>
|
|
1063
1064
|
</div>
|
|
1064
1065
|
</footer>
|
|
1065
1066
|
|
package/package.json
CHANGED