coderadar 0.1.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/bin/coderadar.js +2 -0
- package/dist/collector.d.ts +12 -0
- package/dist/collector.d.ts.map +1 -0
- package/dist/collector.js +253 -0
- package/dist/collector.js.map +1 -0
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +64 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/generate.d.ts +8 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +44 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +57 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/sync.d.ts +8 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +90 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -0
- package/dist/output/html-generator.d.ts +11 -0
- package/dist/output/html-generator.d.ts.map +1 -0
- package/dist/output/html-generator.js +106 -0
- package/dist/output/html-generator.js.map +1 -0
- package/package.json +61 -0
- package/templates/app.js +1294 -0
- package/templates/styles.css +489 -0
- package/templates/template.html +325 -0
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="fr">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
6
|
+
|
|
7
|
+
<meta name="theme-color" content="#8b5cf6" id="theme-color-meta">
|
|
8
|
+
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
9
|
+
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
|
10
|
+
<meta name="apple-mobile-web-app-title" content="CodeRadar">
|
|
11
|
+
<script>if(location.protocol!=='file:'){var l=document.createElement('link');l.rel='manifest';l.href='manifest.json';document.head.appendChild(l)}</script>
|
|
12
|
+
<link rel="apple-touch-icon" href="icons/icon-192.png">
|
|
13
|
+
<title>CodeRadar</title>
|
|
14
|
+
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>
|
|
15
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js"></script>
|
|
16
|
+
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
|
17
|
+
<style>
|
|
18
|
+
%%STYLES%%
|
|
19
|
+
</style>
|
|
20
|
+
</head>
|
|
21
|
+
<body>
|
|
22
|
+
<div class="app">
|
|
23
|
+
<header>
|
|
24
|
+
<div class="brand"><div class="brand-icon">G</div><h1>CodeRadar<span id="pc-name"></span></h1></div>
|
|
25
|
+
<div class="header-actions">
|
|
26
|
+
<button class="icon-btn" id="btn-tts" title="Ecouter le resume du jour (V)"><svg id="tts-icon-play" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"/><path d="M15.54 8.46a5 5 0 0 1 0 7.07"/><path d="M19.07 4.93a10 10 0 0 1 0 14.14"/></svg><svg id="tts-icon-pause" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display:none"><rect x="6" y="4" width="4" height="16"/><rect x="14" y="4" width="4" height="16"/></svg></button>
|
|
27
|
+
<button class="icon-btn" id="btn-theme" title="Theme (T)"><svg id="theme-icon-sun" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display:none"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg><svg id="theme-icon-moon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg></button>
|
|
28
|
+
<button class="icon-btn" id="btn-report" title="Rapport Hebdo (W)">W</button>
|
|
29
|
+
<button class="icon-btn" id="btn-obsidian" title="Export Obsidian (O)"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2L2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/></svg></button>
|
|
30
|
+
<button class="icon-btn" id="btn-export" title="Export JSON">E</button>
|
|
31
|
+
<button class="icon-btn" id="btn-import" title="Import">I</button>
|
|
32
|
+
<button class="icon-btn" id="btn-sync-mem" title="Synchroniser les resumes de sessions avec claude-mem (M)" style="width:auto;padding:0 .5rem;gap:.3rem"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 1 1-6.22-8.56"/><polyline points="21 3 21 9 15 9"/></svg><span style="font-size:.65rem" id="sync-label">Sync</span><span class="sync-badge" id="sync-badge" style="display:none">0</span></button>
|
|
33
|
+
<span class="sync-indicator" id="sync-time" title=""></span>
|
|
34
|
+
<button class="filter-btn" id="btn-regen" title="Regenerer le dashboard (execute generate.ps1)" style="font-size:.65rem;padding:.2rem .5rem">Regenerer</button>
|
|
35
|
+
<button class="icon-btn" id="btn-help" title="Aide (?)">?</button>
|
|
36
|
+
</div>
|
|
37
|
+
</header>
|
|
38
|
+
<div class="stats-bar" id="stats-bar">
|
|
39
|
+
<div class="stat"><span class="stat-val" id="stat-total">0</span><span class="stat-label">Projets</span></div>
|
|
40
|
+
<div class="stat-divider"></div>
|
|
41
|
+
<div class="stat"><span class="stat-val ok" id="stat-active">0</span><span class="stat-label">Actifs</span></div>
|
|
42
|
+
<div class="stat-divider"></div>
|
|
43
|
+
<div class="stat"><span class="stat-val warn" id="stat-undoc">0</span><span class="stat-label">Sans doc</span></div>
|
|
44
|
+
<div class="stat-divider"></div>
|
|
45
|
+
<div class="stat"><span class="stat-val err" id="stat-dirty">0</span><span class="stat-label">Uncommit</span></div>
|
|
46
|
+
<div class="stat-divider"></div>
|
|
47
|
+
<div class="stat"><span class="stat-val" id="stat-commits">0</span><span class="stat-label">Commits 7j</span></div>
|
|
48
|
+
<div class="stat-divider"></div>
|
|
49
|
+
<div class="stat"><span class="stat-val" id="stat-health">0</span><span class="stat-label">Sante</span></div>
|
|
50
|
+
<div class="stat-divider"></div>
|
|
51
|
+
<div class="stat"><span class="stat-val" id="stat-plugins">0</span><span class="stat-label">Plugins</span></div>
|
|
52
|
+
<div class="stat-divider"></div>
|
|
53
|
+
<div class="stat"><span class="stat-val" id="stat-cost">-</span><span class="stat-label">ROI</span></div>
|
|
54
|
+
<div class="stat-divider"></div>
|
|
55
|
+
<div class="stat"><span class="stat-val" id="stat-disk">-</span><span class="stat-label">Disque</span></div>
|
|
56
|
+
<div class="stat-divider"></div>
|
|
57
|
+
<div class="stat" style="align-items:flex-start"><span class="stat-label">Stacks</span><div class="stat-stacks" id="stat-stacks"></div></div>
|
|
58
|
+
</div>
|
|
59
|
+
<div class="persistent-bar">
|
|
60
|
+
<div class="search-box"><input type="search" id="search" placeholder="Rechercher dans les sessions (/)" autocomplete="off"><div class="search-results" id="search-results"></div></div>
|
|
61
|
+
<nav class="tab-bar" id="tab-bar">
|
|
62
|
+
<button class="tab-nav active" data-tab="dashboard" title="Alt+1">Dashboard</button>
|
|
63
|
+
<button class="tab-nav" data-tab="projets" title="Alt+2">Projets</button>
|
|
64
|
+
<button class="tab-nav" data-tab="couts" title="Alt+3">Couts</button>
|
|
65
|
+
<button class="tab-nav" data-tab="plugins" title="Alt+4">Plugins</button>
|
|
66
|
+
<button class="tab-nav" data-tab="outils" title="Alt+5">Outils</button>
|
|
67
|
+
</nav>
|
|
68
|
+
<button class="stats-toggle" id="stats-toggle" title="Afficher/masquer les stats">▼</button>
|
|
69
|
+
</div>
|
|
70
|
+
<!-- Tab: Dashboard -->
|
|
71
|
+
<div class="tab-panel active" id="panel-dashboard">
|
|
72
|
+
<div id="last-session-card" class="last-session-card" style="display:none"><span class="ls-icon">R</span><span class="ls-text"><strong id="ls-name"></strong> <span id="ls-title"></span></span><span class="ls-date" id="ls-date"></span></div>
|
|
73
|
+
<div class="insights-panel" id="insights-panel" style="display:none">
|
|
74
|
+
<div class="insight-card coach"><h4>Coach IA</h4><div id="coach-list"></div></div>
|
|
75
|
+
<div class="insight-card wip"><h4>A reprendre</h4><div id="wip-list"></div></div>
|
|
76
|
+
<div class="insight-card keypoints"><h4>Points cles recents</h4><div id="keypoints-list"></div></div>
|
|
77
|
+
<div class="insight-card tags"><h4>Tags frequents</h4><div class="tag-cloud" id="tag-cloud"></div></div>
|
|
78
|
+
<div class="insight-card patterns"><h4>Patterns</h4><div id="patterns-list"></div></div>
|
|
79
|
+
<div class="insight-card capture"><h4>Capture rapide</h4><div class="quick-capture"><input type="text" id="quick-input" placeholder="Noter une idee, un insight..."><button id="quick-save">Sauver</button></div><div id="quick-notes" style="margin-top:.5rem;font-size:.65rem;color:var(--dim)"></div></div>
|
|
80
|
+
</div>
|
|
81
|
+
<div class="timeline-section section collapsible" id="timeline-section" style="display:none">
|
|
82
|
+
<div class="section-head collapsible-head"><h2>Timeline (60 jours)</h2></div>
|
|
83
|
+
<div class="collapsible-body">
|
|
84
|
+
<div class="timeline-container">
|
|
85
|
+
<div class="timeline-header">
|
|
86
|
+
<div class="timeline-filters" id="timeline-filters"></div>
|
|
87
|
+
<div class="timeline-view-toggle">
|
|
88
|
+
<button class="timeline-view-btn" data-view="heatmap" title="Vue GitHub">▦</button>
|
|
89
|
+
<button class="timeline-view-btn active" data-view="list" title="Vue liste">☰</button>
|
|
90
|
+
<button class="timeline-view-btn" data-view="dots" title="Vue compacte">●</button>
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
<div class="timeline-heatmap-view" id="timeline-heatmap-view"></div>
|
|
94
|
+
<div class="timeline-list-view" id="timeline-list-view">
|
|
95
|
+
<div class="timeline-list" id="timeline-list"></div>
|
|
96
|
+
</div>
|
|
97
|
+
<div class="timeline-dots-view" id="timeline-dots-view">
|
|
98
|
+
<div class="timeline-scroll" id="timeline-scroll"></div>
|
|
99
|
+
</div>
|
|
100
|
+
<div class="timeline-legend" id="timeline-legend"></div>
|
|
101
|
+
</div>
|
|
102
|
+
<div class="timeline-mini-tip" id="timeline-mini-tip"></div>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
<div class="charts-section section collapsible" id="charts-section" style="display:none">
|
|
106
|
+
<div class="section-head collapsible-head"><h2>Statistiques</h2></div>
|
|
107
|
+
<div class="collapsible-body">
|
|
108
|
+
<div class="charts-grid">
|
|
109
|
+
<div class="chart-card"><h4>Temps par projet <span style="font-size:.6rem;color:#888;font-weight:normal">(estime*)</span></h4><div class="chart-wrapper"><canvas id="chart-time"></canvas></div></div>
|
|
110
|
+
<div class="chart-card"><h4>Heures par semaine <span style="font-size:.6rem;color:#888;font-weight:normal">(estime*)</span></h4><div class="chart-wrapper"><canvas id="chart-hours"></canvas></div></div>
|
|
111
|
+
<div class="chart-card"><h4>Sessions par projet</h4><div class="chart-wrapper"><canvas id="chart-projects"></canvas></div></div>
|
|
112
|
+
<div class="chart-card"><h4>Repartition des tags</h4><div class="chart-wrapper"><canvas id="chart-tags"></canvas></div></div>
|
|
113
|
+
</div>
|
|
114
|
+
<p style="font-size:.6rem;color:#666;margin:.5rem 0 0;font-style:italic">* Estimation basee sur la duree entre creation et derniere activite de chaque session. Sessions <8h : duree reelle. Sessions >8h : 8h de travail actif par tranche de 24h (deduit sommeil/pauses).</p>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
<!-- Tab: Projets -->
|
|
119
|
+
<div class="tab-panel" id="panel-projets">
|
|
120
|
+
<div class="toolbar">
|
|
121
|
+
<div class="filter-group" id="filter-status">
|
|
122
|
+
<button class="filter-btn active" data-filter="all">Tous</button>
|
|
123
|
+
<button class="filter-btn" data-filter="active">Actifs</button>
|
|
124
|
+
<button class="filter-btn" data-filter="fav">Favoris</button>
|
|
125
|
+
<button class="filter-btn" data-filter="undoc">Sans doc</button>
|
|
126
|
+
<button class="filter-btn" data-filter="dirty">Uncommit</button>
|
|
127
|
+
</div>
|
|
128
|
+
<div class="filter-group" id="filter-claude">
|
|
129
|
+
<button class="filter-btn" data-claude="30">30j</button>
|
|
130
|
+
<button class="filter-btn" data-claude="365">1an</button>
|
|
131
|
+
<button class="filter-btn active" data-claude="all">Tous</button>
|
|
132
|
+
</div>
|
|
133
|
+
<div class="filter-group" id="filter-stack"></div>
|
|
134
|
+
<button class="btn-csv" id="btn-csv-projects" title="Exporter CSV">CSV</button>
|
|
135
|
+
</div>
|
|
136
|
+
<div class="section"><div class="section-head"><h2>Projets (1-9 copie)</h2></div><div class="projects" id="projects"></div></div>
|
|
137
|
+
<div class="section collapsible" id="recent-sessions-section" style="display:none"><div class="section-head collapsible-head"><h2>Sessions recentes</h2><span class="session-count" id="session-count"></span></div><div class="collapsible-body"><div class="recent-sessions" id="recent-sessions"></div></div></div>
|
|
138
|
+
</div>
|
|
139
|
+
<!-- Tab: Couts -->
|
|
140
|
+
<div class="tab-panel" id="panel-couts">
|
|
141
|
+
<div class="section collapsible" id="cost-section" style="display:none">
|
|
142
|
+
<div class="section-head collapsible-head"><h2>Consommation API <span style="font-size:.65rem;color:var(--dim);font-weight:400">Forfait Max x20 : $200/mois</span></h2><select class="cost-currency-toggle" id="cost-currency-btn"><option value="USD">$ USD</option><option value="EUR">€ EUR</option><option value="GBP">£ GBP</option><option value="CHF">Fr CHF</option><option value="JPY">¥ JPY</option><option value="CAD">C$ CAD</option><option value="AUD">A$ AUD</option><option value="CNY">¥ CNY</option><option value="INR">₹ INR</option><option value="BRL">R$ BRL</option><option value="MXN">Mx$ MXN</option><option value="PLN">zł PLN</option><option value="SEK">kr SEK</option><option value="NOK">kr NOK</option><option value="DKK">kr DKK</option><option value="KRW">₩ KRW</option></select><button class="btn-csv" id="btn-csv-costs" title="Exporter CSV">CSV</button></div>
|
|
143
|
+
<div class="collapsible-body">
|
|
144
|
+
<div style="text-align:center;font-size:.75rem;color:var(--mut);margin-bottom:.75rem;padding:.5rem;background:var(--s1);border-radius:8px;border:1px solid var(--bd)" id="cost-roi-text"></div>
|
|
145
|
+
<div class="cost-period-bar" id="cost-period-bar"><button class="filter-btn" data-period="7">7j</button><button class="filter-btn active" data-period="30">30j</button><button class="filter-btn" data-period="90">90j</button><button class="filter-btn" data-period="0">Tout</button></div>
|
|
146
|
+
<div class="cost-stats">
|
|
147
|
+
<div class="cost-stat-card"><div class="cost-val ok" id="cost-plan">$200</div><div class="cost-label">Forfait/mois</div></div>
|
|
148
|
+
<div class="cost-stat-card"><div class="cost-val" id="cost-total">-</div><div class="cost-label">Valeur API (30j)</div></div>
|
|
149
|
+
<div class="cost-stat-card"><div class="cost-val" id="cost-roi">-</div><div class="cost-label">ROI (valeur/forfait)</div></div>
|
|
150
|
+
<div class="cost-stat-card"><div class="cost-val" id="cost-top-model">-</div><div class="cost-label">Modele Principal</div><div style="font-size:.75rem;color:var(--dim);margin-top:.3rem" id="cost-last-model"></div></div>
|
|
151
|
+
</div>
|
|
152
|
+
<div class="cost-stats" style="margin-top:0">
|
|
153
|
+
<div class="cost-stat-card"><div class="cost-val" id="cost-avg">-</div><div class="cost-label">Valeur API/Jour</div></div>
|
|
154
|
+
<div class="cost-stat-card"><div class="cost-val" id="cost-tokens">-</div><div class="cost-label">Tokens Total</div></div>
|
|
155
|
+
<div class="cost-stat-card"><div class="cost-val" id="cost-real-daily">-</div><div class="cost-label">Cout reel/Jour</div></div>
|
|
156
|
+
<div class="cost-stat-card"><div class="cost-val" id="cost-savings">-</div><div class="cost-label">Economie vs API</div></div>
|
|
157
|
+
</div>
|
|
158
|
+
<div class="cost-charts-grid">
|
|
159
|
+
<div class="cost-chart-card"><h4>Valeur API journaliere</h4><div class="cost-chart-wrapper"><canvas id="chart-cost-daily"></canvas></div></div>
|
|
160
|
+
<div class="cost-chart-card"><h4>Tokens par jour</h4><div class="cost-chart-wrapper"><canvas id="chart-cost-tokens"></canvas></div></div>
|
|
161
|
+
<div class="cost-chart-card"><h4>Valeur par modele</h4><div class="cost-chart-wrapper"><canvas id="chart-cost-models"></canvas></div></div>
|
|
162
|
+
<div class="cost-chart-card"><h4>Forfait vs Valeur API</h4><div class="cost-chart-wrapper"><canvas id="chart-cost-plan"></canvas></div></div>
|
|
163
|
+
</div>
|
|
164
|
+
<div class="cost-charts-grid">
|
|
165
|
+
<div class="cost-chart-card" style="grid-column:span 2"><h4>Consommation par heure (7 derniers jours)</h4><div class="cost-chart-wrapper" style="height:280px"><canvas id="chart-cost-hourly"></canvas></div></div>
|
|
166
|
+
</div>
|
|
167
|
+
<table class="cost-table"><thead><tr><th>Date</th><th>Valeur API</th><th>Tokens</th><th>Input</th><th>Output</th><th>Cache</th></tr></thead><tbody id="cost-table-body"></tbody></table>
|
|
168
|
+
</div>
|
|
169
|
+
</div>
|
|
170
|
+
<div class="section collapsible" id="disk-section" style="display:none">
|
|
171
|
+
<div class="section-head collapsible-head"><h2>Utilisation Disque</h2></div>
|
|
172
|
+
<div class="collapsible-body">
|
|
173
|
+
<div class="disk-gauge" id="disk-gauge"><div class="disk-gauge-fill" id="disk-gauge-fill"></div><div class="disk-gauge-text" id="disk-gauge-text"></div></div>
|
|
174
|
+
<div class="disk-stats">
|
|
175
|
+
<div class="disk-stat-card"><div class="disk-val" id="disk-free">-</div><div class="disk-label">Disque Libre</div></div>
|
|
176
|
+
<div class="disk-stat-card"><div class="disk-val" id="disk-claude-total">-</div><div class="disk-label">Claude Code Total</div></div>
|
|
177
|
+
<div class="disk-stat-card"><div class="disk-val" id="disk-plugins">-</div><div class="disk-label">Plugins MCP</div></div>
|
|
178
|
+
<div class="disk-stat-card"><div class="disk-val" id="disk-sessions">-</div><div class="disk-label">Sessions Projets</div></div>
|
|
179
|
+
</div>
|
|
180
|
+
<div class="disk-charts-grid">
|
|
181
|
+
<div class="disk-chart-card"><h4>Repartition Claude Code</h4><div class="disk-chart-wrapper"><canvas id="chart-disk-breakdown"></canvas></div></div>
|
|
182
|
+
<div class="disk-chart-card"><h4>Top 10 Sessions Claude</h4><div class="disk-chart-wrapper"><canvas id="chart-disk-sessions"></canvas></div></div>
|
|
183
|
+
<div class="disk-chart-card"><h4>Top 10 Projets Dev</h4><div class="disk-chart-wrapper"><canvas id="chart-disk-devprojects"></canvas></div></div>
|
|
184
|
+
<div class="disk-chart-card"><h4>Espace Disque C:</h4><div class="disk-chart-wrapper"><canvas id="chart-disk-gauge"></canvas></div></div>
|
|
185
|
+
</div>
|
|
186
|
+
<table class="disk-table"><thead><tr><th>Dossier</th><th>Taille</th><th>Fichiers</th><th>% Total</th><th>Chemin</th></tr></thead><tbody id="disk-table-body"></tbody></table>
|
|
187
|
+
</div>
|
|
188
|
+
</div>
|
|
189
|
+
</div>
|
|
190
|
+
<!-- Tab: Plugins -->
|
|
191
|
+
<div class="tab-panel" id="panel-plugins">
|
|
192
|
+
<div class="section" id="plugins-section"><div class="section-head"><h2>Plugins <span style="font-size:.7rem;color:var(--dim);font-weight:400" id="plugins-header-count"></span></h2></div>
|
|
193
|
+
<div class="plugin-toolbar"><input type="search" id="plugin-search" placeholder="Rechercher un plugin..." autocomplete="off"><div class="plugin-filter-group" id="plugin-type-filters"><button class="plugin-filter-btn active" data-pf="all">Tous</button><button class="plugin-filter-btn" data-pf="active">Actifs</button><button class="plugin-filter-btn" data-pf="mcp">MCP</button><button class="plugin-filter-btn" data-pf="workflow">Workflow</button><button class="plugin-filter-btn" data-pf="skill">Skill</button><button class="plugin-filter-btn" data-pf="command">Command</button><button class="plugin-filter-btn" data-pf="agent">Agent</button></div><div class="plugin-filter-group" id="plugin-marketplace-filters"></div></div>
|
|
194
|
+
<div class="plugins-grid" id="plugins-grid"></div>
|
|
195
|
+
</div>
|
|
196
|
+
</div>
|
|
197
|
+
<!-- Tab: Outils -->
|
|
198
|
+
<div class="tab-panel" id="panel-outils">
|
|
199
|
+
<div class="section collapsible"><div class="section-head collapsible-head"><h2>Reference</h2><div class="tabs" id="ref-tabs"><button class="tab active" data-tab="flags">Flags</button><button class="tab" data-tab="skills">Skills</button><button class="tab" data-tab="workflow">Workflow</button></div></div><div class="collapsible-body">
|
|
200
|
+
<div id="ref-flags" class="ref-content active"><h3>Flags</h3><table><tr><td>--dangerously-skip-permissions</td><td>Mode autonome (toujours)</td></tr><tr><td>--resume</td><td>Reprendre session</td></tr><tr><td>-p "prompt"</td><td>Non-interactif</td></tr></table></div>
|
|
201
|
+
<div id="ref-skills" class="ref-content"><h3>Skills</h3><table><tr><td>/commit</td><td>Commit intelligent</td></tr><tr><td>continue</td><td>Prochaine tache</td></tr><tr><td>/go [x]</td><td>Commande universelle</td></tr></table></div>
|
|
202
|
+
<div id="ref-workflow" class="ref-content"><h3>Workflow</h3><table><tr><td>CLAUDE.md</td><td>Identite projet (obligatoire)</td></tr><tr><td>PROGRESS.md</td><td>Taches a faire</td></tr></table></div>
|
|
203
|
+
</div></div>
|
|
204
|
+
<div class="section collapsible"><div class="section-head collapsible-head"><h2>Prompts</h2><button class="add-btn" id="btn-add-prompt">+</button></div><div class="collapsible-body"><div class="prompts" id="prompts"></div></div></div>
|
|
205
|
+
<div class="section collapsible"><div class="section-head collapsible-head"><h2>Liens</h2><button class="add-btn" id="btn-add-link">+</button></div><div class="collapsible-body"><div class="links" id="links"></div></div></div>
|
|
206
|
+
<div class="section"><div class="section-head"><h2>Notes</h2></div><textarea id="notes" placeholder="Notes..."></textarea></div>
|
|
207
|
+
</div>
|
|
208
|
+
</div>
|
|
209
|
+
<div class="toast-box" id="toasts"></div>
|
|
210
|
+
<div class="modal-bg" id="modal-bg"><div class="modal" id="modal"></div></div>
|
|
211
|
+
<button class="compare-fab" id="compare-fab" style="display:none">Comparer (<span id="compare-count">0</span>)</button>
|
|
212
|
+
<input type="file" id="import-file" accept=".json" style="display:none">
|
|
213
|
+
<input type="file" id="replay-file" accept=".jsonl" style="display:none">
|
|
214
|
+
<!-- TTS Player Modal - Advanced -->
|
|
215
|
+
<div class="tts-modal-bg" id="tts-modal-bg">
|
|
216
|
+
<div class="tts-modal tts-modal-advanced">
|
|
217
|
+
<div class="tts-header">
|
|
218
|
+
<div class="tts-title">
|
|
219
|
+
<svg viewBox="0 0 24 24"><path d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"/></svg>
|
|
220
|
+
Podcast Dev
|
|
221
|
+
</div>
|
|
222
|
+
<button class="tts-close" id="tts-close">X</button>
|
|
223
|
+
</div>
|
|
224
|
+
<div class="tts-config">
|
|
225
|
+
<div class="tts-config-row">
|
|
226
|
+
<div class="tts-config-item">
|
|
227
|
+
<label>Periode</label>
|
|
228
|
+
<select id="tts-scope">
|
|
229
|
+
<option value="today">Aujourd'hui</option>
|
|
230
|
+
<option value="week">Cette semaine</option>
|
|
231
|
+
<option value="month">Ce mois</option>
|
|
232
|
+
<option value="all">Tout</option>
|
|
233
|
+
</select>
|
|
234
|
+
</div>
|
|
235
|
+
<div class="tts-config-item">
|
|
236
|
+
<label>Projet</label>
|
|
237
|
+
<select id="tts-project">
|
|
238
|
+
<option value="all">Tous les projets</option>
|
|
239
|
+
</select>
|
|
240
|
+
</div>
|
|
241
|
+
</div>
|
|
242
|
+
<div class="tts-detail-section">
|
|
243
|
+
<label>Niveau de detail</label>
|
|
244
|
+
<div class="tts-detail-slider-wrap">
|
|
245
|
+
<input type="range" id="tts-detail" min="1" max="5" value="3" class="tts-detail-slider">
|
|
246
|
+
<div class="tts-detail-labels">
|
|
247
|
+
<span data-level="1">Flash</span>
|
|
248
|
+
<span data-level="2">Rapide</span>
|
|
249
|
+
<span data-level="3">Standard</span>
|
|
250
|
+
<span data-level="4">Detaille</span>
|
|
251
|
+
<span data-level="5">Complet</span>
|
|
252
|
+
</div>
|
|
253
|
+
</div>
|
|
254
|
+
<div class="tts-detail-desc" id="tts-detail-desc">Resume equilibre avec stats et projets</div>
|
|
255
|
+
</div>
|
|
256
|
+
<button class="tts-generate-btn" id="tts-generate">Generer le podcast</button>
|
|
257
|
+
</div>
|
|
258
|
+
<div class="tts-body" id="tts-body-content" style="display:none">
|
|
259
|
+
<div class="tts-current" id="tts-current">Pret a lire...</div>
|
|
260
|
+
<div class="tts-progress-bar"><div class="tts-progress-fill" id="tts-progress" style="width:0"></div></div>
|
|
261
|
+
<div class="tts-controls">
|
|
262
|
+
<button class="tts-btn" id="tts-prev" title="Phrase precedente">«</button>
|
|
263
|
+
<button class="tts-btn" id="tts-stop" title="Stop">■</button>
|
|
264
|
+
<button class="tts-btn play" id="tts-play" title="Lecture">▶</button>
|
|
265
|
+
<button class="tts-btn" id="tts-next" title="Phrase suivante">»</button>
|
|
266
|
+
</div>
|
|
267
|
+
<input type="range" class="tts-slider" id="tts-slider" min="0" max="100" value="0" title="Navigation">
|
|
268
|
+
<div class="tts-footer">
|
|
269
|
+
<div class="tts-counter" id="tts-counter">0 / 0</div>
|
|
270
|
+
<div class="tts-rate-control">
|
|
271
|
+
<label>Vitesse:</label>
|
|
272
|
+
<select class="tts-rate-select" id="tts-rate">
|
|
273
|
+
<option value="0.5">0.5x</option>
|
|
274
|
+
<option value="0.75">0.75x</option>
|
|
275
|
+
<option value="1" selected>1x</option>
|
|
276
|
+
<option value="1.25">1.25x</option>
|
|
277
|
+
<option value="1.5">1.5x</option>
|
|
278
|
+
<option value="2">2x</option>
|
|
279
|
+
</select>
|
|
280
|
+
<span class="tts-rate-display" id="tts-rate-display">1x</span>
|
|
281
|
+
</div>
|
|
282
|
+
</div>
|
|
283
|
+
<details class="tts-full-text">
|
|
284
|
+
<summary>Texte complet</summary>
|
|
285
|
+
<div id="tts-full-text"></div>
|
|
286
|
+
</details>
|
|
287
|
+
</div>
|
|
288
|
+
</div>
|
|
289
|
+
</div>
|
|
290
|
+
<div class="replay-modal-bg" id="replay-modal-bg">
|
|
291
|
+
<div class="replay-header">
|
|
292
|
+
<div class="replay-title" id="replay-title">Session Replay</div>
|
|
293
|
+
<div class="replay-meta" id="replay-meta"></div>
|
|
294
|
+
<button class="replay-close" id="replay-close">X</button>
|
|
295
|
+
</div>
|
|
296
|
+
<div class="replay-body" id="replay-body">
|
|
297
|
+
<div class="replay-empty">
|
|
298
|
+
<div class="replay-empty-icon">P</div>
|
|
299
|
+
<div class="replay-empty-text">Chargez un fichier .jsonl pour visualiser la session</div>
|
|
300
|
+
<button class="replay-load-btn" id="replay-load-btn">Charger fichier .jsonl</button>
|
|
301
|
+
<div class="replay-folder-info">
|
|
302
|
+
<span>Dossier:</span>
|
|
303
|
+
<code id="replay-folder-path">~/.claude/projects/[projet]/[sessionId].jsonl</code>
|
|
304
|
+
</div>
|
|
305
|
+
</div>
|
|
306
|
+
</div>
|
|
307
|
+
<div class="replay-controls" id="replay-controls" style="display:none">
|
|
308
|
+
<button class="replay-btn" id="replay-prev" title="Message precedent">«</button>
|
|
309
|
+
<button class="replay-btn" id="replay-play" title="Lecture automatique">▶</button>
|
|
310
|
+
<button class="replay-btn" id="replay-next" title="Message suivant">»</button>
|
|
311
|
+
<input type="range" class="replay-slider" id="replay-slider" min="0" max="100" value="0">
|
|
312
|
+
<div class="replay-progress" id="replay-progress">0 / 0</div>
|
|
313
|
+
<select class="replay-speed" id="replay-speed">
|
|
314
|
+
<option value="2000">0.5x</option>
|
|
315
|
+
<option value="1000" selected>1x</option>
|
|
316
|
+
<option value="500">2x</option>
|
|
317
|
+
<option value="250">4x</option>
|
|
318
|
+
</select>
|
|
319
|
+
</div>
|
|
320
|
+
</div>
|
|
321
|
+
<script>
|
|
322
|
+
%%SCRIPT%%
|
|
323
|
+
</script>
|
|
324
|
+
</body>
|
|
325
|
+
</html>
|