heyiam 0.2.28 → 0.3.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/README.md +45 -0
- package/dist/config.js +10 -1
- package/dist/db.js +1 -2
- package/dist/export.js +40 -25
- package/dist/format-utils.js +5 -0
- package/dist/index.js +168 -0
- package/dist/mount.js +300 -102
- package/dist/parsers/claude.js +2 -28
- package/dist/parsers/codex.js +2 -26
- package/dist/parsers/cursor.js +2 -26
- package/dist/parsers/duration.js +35 -0
- package/dist/parsers/gemini.js +2 -20
- package/dist/parsers/types.js +0 -1
- package/dist/public/assets/index-BZ65TU_Y.js +40 -0
- package/dist/public/assets/index-CqCaW2cb.css +1 -0
- package/dist/public/index.html +2 -2
- package/dist/redact.js +4 -104
- package/dist/render/build-render-data.js +9 -2
- package/dist/render/index.js +32 -5
- package/dist/render/liquid.js +147 -7
- package/dist/render/mock-data.js +303 -0
- package/dist/render/templates/aurora/portfolio.liquid +204 -0
- package/dist/render/templates/aurora/project.liquid +260 -0
- package/dist/render/templates/aurora/session.liquid +223 -0
- package/dist/render/templates/aurora/styles.css +1178 -0
- package/dist/render/templates/bauhaus/portfolio.liquid +179 -0
- package/dist/render/templates/bauhaus/project.liquid +300 -0
- package/dist/render/templates/bauhaus/session.liquid +333 -0
- package/dist/render/templates/bauhaus/styles.css +1641 -0
- package/dist/render/templates/blueprint/portfolio.liquid +167 -0
- package/dist/render/templates/blueprint/project.liquid +286 -0
- package/dist/render/templates/blueprint/session.liquid +248 -0
- package/dist/render/templates/blueprint/styles.css +1285 -0
- package/dist/render/templates/canvas/portfolio.liquid +215 -0
- package/dist/render/templates/canvas/project.liquid +235 -0
- package/dist/render/templates/canvas/session.liquid +223 -0
- package/dist/render/templates/canvas/styles.css +1436 -0
- package/dist/render/templates/carbon/portfolio.liquid +170 -0
- package/dist/render/templates/carbon/project.liquid +249 -0
- package/dist/render/templates/carbon/session.liquid +190 -0
- package/dist/render/templates/carbon/styles.css +1091 -0
- package/dist/render/templates/chalk/portfolio.liquid +199 -0
- package/dist/render/templates/chalk/project.liquid +245 -0
- package/dist/render/templates/chalk/session.liquid +215 -0
- package/dist/render/templates/chalk/styles.css +1157 -0
- package/dist/render/templates/circuit/portfolio.liquid +162 -0
- package/dist/render/templates/circuit/project.liquid +247 -0
- package/dist/render/templates/circuit/session.liquid +205 -0
- package/dist/render/templates/circuit/styles.css +1403 -0
- package/dist/render/templates/cosmos/portfolio.liquid +232 -0
- package/dist/render/templates/cosmos/project.liquid +327 -0
- package/dist/render/templates/cosmos/session.liquid +239 -0
- package/dist/render/templates/cosmos/styles.css +1151 -0
- package/dist/render/templates/daylight/portfolio.liquid +217 -0
- package/dist/render/templates/daylight/project.liquid +229 -0
- package/dist/render/templates/daylight/session.liquid +219 -0
- package/dist/render/templates/daylight/styles.css +1311 -0
- package/dist/render/templates/editorial/portfolio.liquid +126 -0
- package/dist/render/templates/editorial/project.liquid +202 -0
- package/dist/render/templates/editorial/session.liquid +171 -0
- package/dist/render/templates/editorial/styles.css +822 -0
- package/dist/render/templates/ember/portfolio.liquid +318 -0
- package/dist/render/templates/ember/project.liquid +232 -0
- package/dist/render/templates/ember/session.liquid +202 -0
- package/dist/render/templates/ember/styles.css +1283 -0
- package/dist/render/templates/glacier/portfolio.liquid +271 -0
- package/dist/render/templates/glacier/project.liquid +288 -0
- package/dist/render/templates/glacier/session.liquid +217 -0
- package/dist/render/templates/glacier/styles.css +1200 -0
- package/dist/render/templates/grid/portfolio.liquid +265 -0
- package/dist/render/templates/grid/project.liquid +306 -0
- package/dist/render/templates/grid/session.liquid +260 -0
- package/dist/render/templates/grid/styles.css +1441 -0
- package/dist/render/templates/kinetic/portfolio.liquid +170 -0
- package/dist/render/templates/kinetic/project.liquid +242 -0
- package/dist/render/templates/kinetic/session.liquid +228 -0
- package/dist/render/templates/kinetic/styles.css +944 -0
- package/dist/render/templates/meridian/portfolio.liquid +255 -0
- package/dist/render/templates/meridian/project.liquid +376 -0
- package/dist/render/templates/meridian/session.liquid +298 -0
- package/dist/render/templates/meridian/styles.css +1369 -0
- package/dist/render/templates/minimal/portfolio.liquid +71 -0
- package/dist/render/templates/minimal/project.liquid +154 -0
- package/dist/render/templates/minimal/session.liquid +140 -0
- package/dist/render/templates/minimal/styles.css +525 -0
- package/dist/render/templates/mono/portfolio.liquid +291 -0
- package/dist/render/templates/mono/project.liquid +275 -0
- package/dist/render/templates/mono/session.liquid +276 -0
- package/dist/render/templates/mono/styles.css +1016 -0
- package/dist/render/templates/neon/portfolio.liquid +217 -0
- package/dist/render/templates/neon/project.liquid +225 -0
- package/dist/render/templates/neon/session.liquid +195 -0
- package/dist/render/templates/neon/styles.css +1265 -0
- package/dist/render/templates/noir/portfolio.liquid +137 -0
- package/dist/render/templates/noir/project.liquid +220 -0
- package/dist/render/templates/noir/session.liquid +241 -0
- package/dist/render/templates/noir/styles.css +1223 -0
- package/dist/render/templates/obsidian/portfolio.liquid +257 -0
- package/dist/render/templates/obsidian/project.liquid +280 -0
- package/dist/render/templates/obsidian/session.liquid +241 -0
- package/dist/render/templates/obsidian/styles.css +1401 -0
- package/dist/render/templates/paper/portfolio.liquid +267 -0
- package/dist/render/templates/paper/project.liquid +235 -0
- package/dist/render/templates/paper/session.liquid +271 -0
- package/dist/render/templates/paper/styles.css +1509 -0
- package/dist/render/templates/parallax/portfolio.liquid +305 -0
- package/dist/render/templates/parallax/project.liquid +275 -0
- package/dist/render/templates/parallax/session.liquid +295 -0
- package/dist/render/templates/parallax/styles.css +1874 -0
- package/dist/render/templates/parchment/portfolio.liquid +290 -0
- package/dist/render/templates/parchment/project.liquid +289 -0
- package/dist/render/templates/parchment/session.liquid +346 -0
- package/dist/render/templates/parchment/styles.css +1397 -0
- package/dist/render/templates/partials/_beats.liquid +16 -0
- package/dist/render/templates/partials/_breadcrumb.liquid +9 -0
- package/dist/render/templates/partials/_footer.liquid +7 -0
- package/dist/render/templates/partials/_growth-chart.liquid +7 -0
- package/dist/render/templates/partials/_key-decisions.liquid +20 -0
- package/dist/render/templates/partials/_links.liquid +16 -0
- package/dist/render/templates/partials/_narrative.liquid +8 -0
- package/dist/render/templates/partials/_phases.liquid +20 -0
- package/dist/render/templates/partials/_portfolio-header.liquid +20 -0
- package/dist/render/templates/partials/_portfolio-projects.liquid +16 -0
- package/dist/render/templates/partials/_portfolio-stats.liquid +19 -0
- package/dist/render/templates/partials/_qa.liquid +13 -0
- package/dist/render/templates/partials/_screenshot.liquid +15 -0
- package/dist/render/templates/partials/_session-cards.liquid +30 -0
- package/dist/render/templates/partials/_session-header.liquid +39 -0
- package/dist/render/templates/partials/_session-sidebar.liquid +30 -0
- package/dist/render/templates/partials/_skills.liquid +12 -0
- package/dist/render/templates/partials/_source-breakdown.liquid +22 -0
- package/dist/render/templates/partials/_stats.liquid +38 -0
- package/dist/render/templates/partials/_work-timeline.liquid +7 -0
- package/dist/render/templates/project.liquid +7 -4
- package/dist/render/templates/radar/portfolio.liquid +233 -0
- package/dist/render/templates/radar/project.liquid +278 -0
- package/dist/render/templates/radar/session.liquid +300 -0
- package/dist/render/templates/radar/styles.css +1049 -0
- package/dist/render/templates/showcase/portfolio.liquid +231 -0
- package/dist/render/templates/showcase/project.liquid +237 -0
- package/dist/render/templates/showcase/session.liquid +210 -0
- package/dist/render/templates/showcase/styles.css +1279 -0
- package/dist/render/templates/signal/portfolio.liquid +227 -0
- package/dist/render/templates/signal/project.liquid +278 -0
- package/dist/render/templates/signal/session.liquid +282 -0
- package/dist/render/templates/signal/styles.css +1395 -0
- package/dist/render/templates/strata/portfolio.liquid +192 -0
- package/dist/render/templates/strata/project.liquid +282 -0
- package/dist/render/templates/strata/session.liquid +261 -0
- package/dist/render/templates/strata/styles.css +1350 -0
- package/dist/render/templates/styles.css +1190 -0
- package/dist/render/templates/terminal/portfolio.liquid +118 -0
- package/dist/render/templates/terminal/project.liquid +161 -0
- package/dist/render/templates/terminal/session.liquid +145 -0
- package/dist/render/templates/terminal/styles.css +492 -0
- package/dist/render/templates/verdant/portfolio.liquid +333 -0
- package/dist/render/templates/verdant/project.liquid +309 -0
- package/dist/render/templates/verdant/session.liquid +237 -0
- package/dist/render/templates/verdant/styles.css +1257 -0
- package/dist/render/templates/zen/portfolio.liquid +136 -0
- package/dist/render/templates/zen/project.liquid +187 -0
- package/dist/render/templates/zen/session.liquid +203 -0
- package/dist/render/templates/zen/styles.css +1207 -0
- package/dist/render/templates.js +90 -0
- package/dist/routes/context.js +15 -10
- package/dist/routes/enhance.js +17 -40
- package/dist/routes/export.js +14 -4
- package/dist/routes/preview.js +480 -108
- package/dist/routes/projects.js +11 -19
- package/dist/routes/publish.js +15 -17
- package/dist/routes/settings.js +94 -1
- package/dist/routes/sse.js +9 -0
- package/dist/server.js +8 -2
- package/dist/settings.js +17 -9
- package/package.json +2 -4
- package/dist/public/assets/index-B_d6DlEI.js +0 -21
- package/dist/public/assets/index-Dalqz2mC.css +0 -1
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
<div class="heyiam-session parchment" data-render-version="2" data-template="parchment">
|
|
2
|
+
<a href="#main-content" class="skip-link">Skip to content</a>
|
|
3
|
+
|
|
4
|
+
<div class="page-wrapper">
|
|
5
|
+
|
|
6
|
+
{%- comment -%} Breadcrumb {%- endcomment -%}
|
|
7
|
+
<div class="breadcrumb" aria-label="Breadcrumb">
|
|
8
|
+
<a href="/{{ user.username }}">{{ user.username }}</a>
|
|
9
|
+
{% if projectSlug %}
|
|
10
|
+
<span class="breadcrumb__sep" aria-hidden="true">/</span>
|
|
11
|
+
<a href="/{{ user.username }}/{{ projectSlug }}">{{ projectSlug }}</a>
|
|
12
|
+
{% endif %}
|
|
13
|
+
<span class="breadcrumb__sep" aria-hidden="true">/</span>
|
|
14
|
+
<span>{{ session.title }}</span>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
{%- comment -%} Session Header {%- endcomment -%}
|
|
18
|
+
<header class="session-header fade-in" role="banner">
|
|
19
|
+
<h1 class="session-header__title">{{ session.title }}</h1>
|
|
20
|
+
<div class="session-header__meta">
|
|
21
|
+
{% if session.recordedAt %}
|
|
22
|
+
<span class="session-header__meta-item">{{ session.recordedAt | formatDate }}</span>
|
|
23
|
+
{% endif %}
|
|
24
|
+
{% if session.sourceTool %}
|
|
25
|
+
<span class="session-header__meta-item">{{ session.sourceTool }}</span>
|
|
26
|
+
{% endif %}
|
|
27
|
+
<span class="session-header__meta-item">{{ session.durationMinutes | formatDuration }}{% if session.wallClockMinutes %} ({{ session.wallClockMinutes | formatDuration }} wall){% endif %}</span>
|
|
28
|
+
<span class="session-header__meta-item">{{ session.turns }} turns</span>
|
|
29
|
+
<span class="session-header__meta-item">{{ session.locChanged | localeNumber }} LOC</span>
|
|
30
|
+
<span class="session-header__meta-item">{{ session.filesChanged }} file{% if session.filesChanged != 1 %}s{% endif %}</span>
|
|
31
|
+
</div>
|
|
32
|
+
</header>
|
|
33
|
+
|
|
34
|
+
{%- comment -%} Dev Take (Epigraph) {%- endcomment -%}
|
|
35
|
+
{% if session.devTake %}
|
|
36
|
+
<div class="dev-take fade-in fade-in-d1" role="note" aria-label="Developer commentary">
|
|
37
|
+
{{ session.devTake }}
|
|
38
|
+
</div>
|
|
39
|
+
{% endif %}
|
|
40
|
+
|
|
41
|
+
<div class="hr-triple" role="separator">
|
|
42
|
+
<span class="hr-triple-inner"></span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
{%- comment -%} Session Stats {%- endcomment -%}
|
|
46
|
+
<section class="session-stats-row fade-in fade-in-d1" aria-label="Session statistics">
|
|
47
|
+
<div class="session-stats-row__item">
|
|
48
|
+
<div class="session-stats-row__value">{{ session.durationMinutes | formatDuration }}</div>
|
|
49
|
+
<div class="session-stats-row__label">Duration</div>
|
|
50
|
+
</div>
|
|
51
|
+
{% if session.wallClockMinutes %}
|
|
52
|
+
<div class="session-stats-row__item">
|
|
53
|
+
<div class="session-stats-row__value">{{ session.wallClockMinutes | formatDuration }}</div>
|
|
54
|
+
<div class="session-stats-row__label">Wall Clock</div>
|
|
55
|
+
</div>
|
|
56
|
+
{% endif %}
|
|
57
|
+
<div class="session-stats-row__item">
|
|
58
|
+
<div class="session-stats-row__value">{{ session.turns }}</div>
|
|
59
|
+
<div class="session-stats-row__label">Turns</div>
|
|
60
|
+
</div>
|
|
61
|
+
<div class="session-stats-row__item">
|
|
62
|
+
<div class="session-stats-row__value">{{ session.locChanged | localeNumber }}</div>
|
|
63
|
+
<div class="session-stats-row__label">LOC</div>
|
|
64
|
+
</div>
|
|
65
|
+
<div class="session-stats-row__item">
|
|
66
|
+
<div class="session-stats-row__value">{{ session.filesChanged }}</div>
|
|
67
|
+
<div class="session-stats-row__label">Files</div>
|
|
68
|
+
</div>
|
|
69
|
+
{% if session.agentSummary %}
|
|
70
|
+
<div class="session-stats-row__item">
|
|
71
|
+
<div class="session-stats-row__value">{{ session.agentSummary.agents.size }}</div>
|
|
72
|
+
<div class="session-stats-row__label">Agents</div>
|
|
73
|
+
</div>
|
|
74
|
+
{% endif %}
|
|
75
|
+
</section>
|
|
76
|
+
|
|
77
|
+
{%- comment -%} Two Column Layout {%- endcomment -%}
|
|
78
|
+
<div class="content-layout">
|
|
79
|
+
|
|
80
|
+
{%- comment -%} Main Content {%- endcomment -%}
|
|
81
|
+
<main id="main-content">
|
|
82
|
+
|
|
83
|
+
{%- comment -%} Narrative {%- endcomment -%}
|
|
84
|
+
{% if session.narrative %}
|
|
85
|
+
<section class="narrative" aria-label="Session narrative">
|
|
86
|
+
<p>{{ session.narrative }}</p>
|
|
87
|
+
</section>
|
|
88
|
+
|
|
89
|
+
<div class="hr-triple" role="separator">
|
|
90
|
+
<span class="hr-triple-inner"></span>
|
|
91
|
+
</div>
|
|
92
|
+
{% endif %}
|
|
93
|
+
|
|
94
|
+
{%- comment -%} Chapter I: Execution Path (Beats) {%- endcomment -%}
|
|
95
|
+
{% if session.beats.size > 0 %}
|
|
96
|
+
<section aria-label="Execution path">
|
|
97
|
+
<h2 class="chapter-heading fade-in fade-in-d2">
|
|
98
|
+
<span class="chapter-heading__number">Chapter I</span>
|
|
99
|
+
Execution Path
|
|
100
|
+
</h2>
|
|
101
|
+
<ol class="beats">
|
|
102
|
+
{% for beat in session.beats %}
|
|
103
|
+
<li class="beat">
|
|
104
|
+
<span class="beat__number">{{ beat.stepNumber }}</span>
|
|
105
|
+
<div>
|
|
106
|
+
<h3 class="beat__title">{{ beat.title }}</h3>
|
|
107
|
+
<p class="beat__desc">{{ beat.body }}</p>
|
|
108
|
+
</div>
|
|
109
|
+
</li>
|
|
110
|
+
{% endfor %}
|
|
111
|
+
</ol>
|
|
112
|
+
</section>
|
|
113
|
+
|
|
114
|
+
<div class="hr-triple" role="separator">
|
|
115
|
+
<span class="hr-triple-inner"></span>
|
|
116
|
+
</div>
|
|
117
|
+
{% endif %}
|
|
118
|
+
|
|
119
|
+
{%- comment -%} Chapter II: Q&A {%- endcomment -%}
|
|
120
|
+
{% if session.qaPairs.size > 0 %}
|
|
121
|
+
<section aria-label="Questions and answers">
|
|
122
|
+
<h2 class="chapter-heading fade-in fade-in-d3">
|
|
123
|
+
<span class="chapter-heading__number">Chapter II</span>
|
|
124
|
+
Questions & Answers
|
|
125
|
+
</h2>
|
|
126
|
+
<div class="qa-list">
|
|
127
|
+
{% for qa in session.qaPairs %}
|
|
128
|
+
<div class="qa-item">
|
|
129
|
+
<p class="qa-question">{{ qa.question }}</p>
|
|
130
|
+
<p class="qa-answer">{{ qa.answer }}</p>
|
|
131
|
+
</div>
|
|
132
|
+
{% endfor %}
|
|
133
|
+
</div>
|
|
134
|
+
</section>
|
|
135
|
+
|
|
136
|
+
<div class="hr-triple" role="separator">
|
|
137
|
+
<span class="hr-triple-inner"></span>
|
|
138
|
+
</div>
|
|
139
|
+
{% endif %}
|
|
140
|
+
|
|
141
|
+
{%- comment -%} Chapter III: Agent Summary {%- endcomment -%}
|
|
142
|
+
{% if session.agentSummary %}
|
|
143
|
+
<section aria-label="Agent summary">
|
|
144
|
+
<h2 class="chapter-heading fade-in fade-in-d4">
|
|
145
|
+
<span class="chapter-heading__number">Chapter III</span>
|
|
146
|
+
Agent Summary
|
|
147
|
+
</h2>
|
|
148
|
+
|
|
149
|
+
<table class="agent-table">
|
|
150
|
+
<thead>
|
|
151
|
+
<tr>
|
|
152
|
+
<th scope="col">Role</th>
|
|
153
|
+
<th scope="col">Duration</th>
|
|
154
|
+
<th scope="col">LOC</th>
|
|
155
|
+
</tr>
|
|
156
|
+
</thead>
|
|
157
|
+
<tbody>
|
|
158
|
+
{% for agent in session.agentSummary.agents %}
|
|
159
|
+
<tr>
|
|
160
|
+
<td><span class="agent-dot agent-dot--{{ agent.role | slugify }}" aria-hidden="true"></span>{{ agent.role }}</td>
|
|
161
|
+
<td>{{ agent.duration_minutes | formatDuration }}</td>
|
|
162
|
+
<td>{{ agent.loc_changed | localeNumber }}</td>
|
|
163
|
+
</tr>
|
|
164
|
+
{% endfor %}
|
|
165
|
+
</tbody>
|
|
166
|
+
</table>
|
|
167
|
+
|
|
168
|
+
{%- comment -%} Agent time distribution bar {%- endcomment -%}
|
|
169
|
+
{% assign totalAgentDur = 0 %}
|
|
170
|
+
{% for agent in session.agentSummary.agents %}
|
|
171
|
+
{% assign totalAgentDur = totalAgentDur | plus: agent.duration_minutes %}
|
|
172
|
+
{% endfor %}
|
|
173
|
+
{% if totalAgentDur > 0 %}
|
|
174
|
+
<div class="agent-bar" role="img" aria-label="Agent time distribution">
|
|
175
|
+
{% for agent in session.agentSummary.agents %}
|
|
176
|
+
{% assign agentPct = agent.duration_minutes | times: 100.0 | divided_by: totalAgentDur | round %}
|
|
177
|
+
<div class="agent-bar__seg" style="width: {{ agentPct }}%; background: var(--agent-{{ agent.role | slugify }});" title="{{ agent.role }} {{ agent.duration_minutes | formatDuration }}"></div>
|
|
178
|
+
{% endfor %}
|
|
179
|
+
</div>
|
|
180
|
+
{% endif %}
|
|
181
|
+
</section>
|
|
182
|
+
|
|
183
|
+
<div class="hr-triple" role="separator">
|
|
184
|
+
<span class="hr-triple-inner"></span>
|
|
185
|
+
</div>
|
|
186
|
+
{% endif %}
|
|
187
|
+
|
|
188
|
+
{%- comment -%} Highlights {%- endcomment -%}
|
|
189
|
+
{% if session.highlights.size > 0 %}
|
|
190
|
+
<section aria-label="Highlights">
|
|
191
|
+
<h2 class="chapter-heading fade-in fade-in-d4">
|
|
192
|
+
<span class="chapter-heading__number">Chapter IV</span>
|
|
193
|
+
Highlights
|
|
194
|
+
</h2>
|
|
195
|
+
<ol class="decisions-list">
|
|
196
|
+
{% for h in session.highlights %}
|
|
197
|
+
<li>{{ h }}</li>
|
|
198
|
+
{% endfor %}
|
|
199
|
+
</ol>
|
|
200
|
+
</section>
|
|
201
|
+
|
|
202
|
+
<div class="hr-triple" role="separator">
|
|
203
|
+
<span class="hr-triple-inner"></span>
|
|
204
|
+
</div>
|
|
205
|
+
{% endif %}
|
|
206
|
+
|
|
207
|
+
{%- comment -%} Turn Distribution (tool usage as proportional segmented bar) {%- endcomment -%}
|
|
208
|
+
{% if session.toolBreakdown.size > 0 %}
|
|
209
|
+
<section class="turn-distribution" aria-label="Turn distribution">
|
|
210
|
+
<h2 class="chapter-heading fade-in fade-in-d4">
|
|
211
|
+
<span class="chapter-heading__number">Chapter {% if session.agentSummary %}IV{% elsif session.highlights.size > 0 %}V{% else %}IV{% endif %}</span>
|
|
212
|
+
Turn Distribution
|
|
213
|
+
</h2>
|
|
214
|
+
{% assign totalToolUses = 0 %}
|
|
215
|
+
{% for tb in session.toolBreakdown %}
|
|
216
|
+
{% assign totalToolUses = totalToolUses | plus: tb.count %}
|
|
217
|
+
{% endfor %}
|
|
218
|
+
{% if totalToolUses > 0 %}
|
|
219
|
+
<div class="turn-bar" role="img" aria-label="Tool usage distribution: {% for tb in session.toolBreakdown %}{{ tb.tool }} {{ tb.count | times: 100.0 | divided_by: totalToolUses | round }}%{% unless forloop.last %}, {% endunless %}{% endfor %}">
|
|
220
|
+
{% for tb in session.toolBreakdown %}
|
|
221
|
+
{% assign tbPct = tb.count | times: 100.0 | divided_by: totalToolUses | round %}
|
|
222
|
+
{% if tbPct > 3 %}
|
|
223
|
+
{% case forloop.index0 %}
|
|
224
|
+
{% when 0 %}{% assign segBg = "var(--parch-accent)" %}
|
|
225
|
+
{% when 1 %}{% assign segBg = "var(--parch-text-secondary)" %}
|
|
226
|
+
{% when 2 %}{% assign segBg = "var(--parch-text-tertiary)" %}
|
|
227
|
+
{% when 3 %}{% assign segBg = "var(--parch-border-light)" %}
|
|
228
|
+
{% else %}{% assign segBg = "var(--parch-border-faint)" %}
|
|
229
|
+
{% endcase %}
|
|
230
|
+
<div class="turn-bar__seg" style="width: {{ tbPct }}%; background: {{ segBg }};">{{ tb.tool }}</div>
|
|
231
|
+
{% else %}
|
|
232
|
+
<div class="turn-bar__seg" style="width: {{ tbPct }}%; background: var(--parch-border-faint);"></div>
|
|
233
|
+
{% endif %}
|
|
234
|
+
{% endfor %}
|
|
235
|
+
</div>
|
|
236
|
+
<div class="turn-legend">
|
|
237
|
+
{% for tb in session.toolBreakdown %}
|
|
238
|
+
{% case forloop.index0 %}
|
|
239
|
+
{% when 0 %}{% assign legendBg = "var(--parch-accent)" %}
|
|
240
|
+
{% when 1 %}{% assign legendBg = "var(--parch-text-secondary)" %}
|
|
241
|
+
{% when 2 %}{% assign legendBg = "var(--parch-text-tertiary)" %}
|
|
242
|
+
{% when 3 %}{% assign legendBg = "var(--parch-border-light)" %}
|
|
243
|
+
{% else %}{% assign legendBg = "var(--parch-border-faint)" %}
|
|
244
|
+
{% endcase %}
|
|
245
|
+
<span class="turn-legend__item">
|
|
246
|
+
<span class="turn-legend__dot" style="background: {{ legendBg }};" aria-hidden="true"></span>
|
|
247
|
+
{{ tb.tool }} ({{ tb.count }})
|
|
248
|
+
</span>
|
|
249
|
+
{% endfor %}
|
|
250
|
+
</div>
|
|
251
|
+
{% endif %}
|
|
252
|
+
</section>
|
|
253
|
+
|
|
254
|
+
<div class="hr-triple" role="separator">
|
|
255
|
+
<span class="hr-triple-inner"></span>
|
|
256
|
+
</div>
|
|
257
|
+
{% endif %}
|
|
258
|
+
|
|
259
|
+
{%- comment -%} Beat Timeline Table {%- endcomment -%}
|
|
260
|
+
{% if session.beats.size > 0 %}
|
|
261
|
+
<section aria-label="Beat timeline">
|
|
262
|
+
<h2 class="chapter-heading fade-in fade-in-d4">
|
|
263
|
+
<span class="chapter-heading__number">Chapter {% if session.toolBreakdown.size > 0 %}{% if session.highlights.size > 0 %}VI{% else %}V{% endif %}{% else %}{% if session.highlights.size > 0 %}V{% else %}IV{% endif %}{% endif %}</span>
|
|
264
|
+
Beat Timeline
|
|
265
|
+
</h2>
|
|
266
|
+
<table class="timeline-mini">
|
|
267
|
+
<thead>
|
|
268
|
+
<tr>
|
|
269
|
+
<th scope="col">Beat</th>
|
|
270
|
+
<th scope="col">Phase</th>
|
|
271
|
+
<th scope="col">Primary Tool</th>
|
|
272
|
+
<th scope="col">Files Touched</th>
|
|
273
|
+
</tr>
|
|
274
|
+
</thead>
|
|
275
|
+
<tbody>
|
|
276
|
+
{% for beat in session.beats %}
|
|
277
|
+
<tr>
|
|
278
|
+
<td><span class="timeline-mini__beat-num">{{ beat.stepNumber }}</span></td>
|
|
279
|
+
<td>{{ beat.title }}</td>
|
|
280
|
+
<td>{{ beat.primaryTools | default: "—" }}</td>
|
|
281
|
+
<td>{{ beat.filesTouched | default: "—" }}</td>
|
|
282
|
+
</tr>
|
|
283
|
+
{% endfor %}
|
|
284
|
+
</tbody>
|
|
285
|
+
</table>
|
|
286
|
+
</section>
|
|
287
|
+
{% endif %}
|
|
288
|
+
</main>
|
|
289
|
+
|
|
290
|
+
{%- comment -%} Sidebar (Margin Annotations) {%- endcomment -%}
|
|
291
|
+
<aside class="sidebar fade-in fade-in-d2" aria-label="Session details">
|
|
292
|
+
{%- comment -%} Tools Used {%- endcomment -%}
|
|
293
|
+
{% if session.toolBreakdown.size > 0 %}
|
|
294
|
+
<div class="sidebar-section">
|
|
295
|
+
<h2 class="sidebar-section__title">Tools Used</h2>
|
|
296
|
+
<ul class="tool-list">
|
|
297
|
+
{% for tb in session.toolBreakdown %}
|
|
298
|
+
<li><span>{{ tb.tool }}</span> <span class="tool-list__count">{{ tb.count }}</span></li>
|
|
299
|
+
{% endfor %}
|
|
300
|
+
</ul>
|
|
301
|
+
</div>
|
|
302
|
+
{% endif %}
|
|
303
|
+
|
|
304
|
+
{%- comment -%} Files Changed {%- endcomment -%}
|
|
305
|
+
{% if session.topFiles.size > 0 %}
|
|
306
|
+
<div class="sidebar-section">
|
|
307
|
+
<h2 class="sidebar-section__title">Files Changed</h2>
|
|
308
|
+
<ul class="file-list">
|
|
309
|
+
{% for f in session.topFiles %}
|
|
310
|
+
<li>
|
|
311
|
+
<span class="file-list__name" title="{{ f.path }}">{{ f.path }}</span>
|
|
312
|
+
<span class="file-list__diff">+{{ f.additions }}</span>
|
|
313
|
+
</li>
|
|
314
|
+
{% endfor %}
|
|
315
|
+
</ul>
|
|
316
|
+
</div>
|
|
317
|
+
{% endif %}
|
|
318
|
+
|
|
319
|
+
{%- comment -%} Skills {%- endcomment -%}
|
|
320
|
+
{% if session.skills.size > 0 %}
|
|
321
|
+
<div class="sidebar-section">
|
|
322
|
+
<h2 class="sidebar-section__title">Skills</h2>
|
|
323
|
+
<div class="sidebar-skills">
|
|
324
|
+
{% for skill in session.skills %}
|
|
325
|
+
<span class="skill-tag">{{ skill }}</span>
|
|
326
|
+
{% endfor %}
|
|
327
|
+
</div>
|
|
328
|
+
</div>
|
|
329
|
+
{% endif %}
|
|
330
|
+
</aside>
|
|
331
|
+
</div>
|
|
332
|
+
|
|
333
|
+
<div class="hr-triple" role="separator">
|
|
334
|
+
<span class="hr-triple-inner"></span>
|
|
335
|
+
</div>
|
|
336
|
+
|
|
337
|
+
{%- comment -%} Colophon {%- endcomment -%}
|
|
338
|
+
<footer class="colophon" role="contentinfo">
|
|
339
|
+
<div class="colophon__mark" aria-hidden="true">§</div>
|
|
340
|
+
<p>Set in Crimson Pro & IBM Plex Mono</p>
|
|
341
|
+
<p>Composed with AI-assisted development tools</p>
|
|
342
|
+
<p>Published on heyi.am</p>
|
|
343
|
+
</footer>
|
|
344
|
+
</div>
|
|
345
|
+
|
|
346
|
+
</div>
|