copilot-tap-extension 2.0.7 → 2.0.9
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 +4 -1
- package/SOUL.md +51 -0
- package/bin/install.mjs +7 -1
- package/dist/copilot-instructions.md +15 -0
- package/dist/extension.mjs +823 -29
- package/dist/skills/tap-goal/SKILL.md +13 -2
- package/dist/skills/tap-loop/SKILL.md +6 -0
- package/dist/skills/tap-monitor/SKILL.md +19 -3
- package/dist/skills/tap-orchestrate/SKILL.md +81 -0
- package/dist/version.json +1 -1
- package/docs/adr/0001-persistent-config-default-ownership.md +33 -0
- package/docs/adr/0002-local-provider-gateway-runtime-security.md +36 -0
- package/docs/adr/0003-emitter-delivery-lifecycle.md +68 -0
- package/docs/adr/0004-persistent-config-canonical-streams.md +86 -0
- package/docs/adr/0005-provider-sdk-push-and-dynamic-tools.md +48 -0
- package/docs/adr/0006-command-emitter-cwd-workspace-boundary.md +46 -0
- package/docs/adr/0007-runtime-session-workspace-context.md +62 -0
- package/docs/evals.md +41 -0
- package/docs/evolution-of-tap-icon.html +989 -0
- package/docs/providers.md +242 -0
- package/docs/recipes/adaptive-agent.md +303 -0
- package/docs/recipes/agent-brainstorm/100-extension-ideas.md +288 -0
- package/docs/recipes/agent-brainstorm/deep-ideas.md +216 -0
- package/docs/recipes/ambient-guardian.md +314 -0
- package/docs/recipes/browser-bridge.md +162 -0
- package/docs/recipes/codex-goals-for-tap-goal.md +136 -0
- package/docs/recipes/copilot-sdk-canvas.md +147 -0
- package/docs/recipes/deferred-cognition.md +310 -0
- package/docs/recipes/provider-integration-patterns.md +93 -0
- package/docs/recipes/provider-interface-advanced.md +1364 -0
- package/docs/recipes/provider-interface-core-profile.md +568 -0
- package/docs/recipes/tap-control-plane-roadmap.md +60 -0
- package/docs/recipes/universal-tool-gateway.md +202 -0
- package/docs/reference.md +229 -0
- package/docs/use-cases.md +348 -0
- package/package.json +4 -1
- package/providers/detour/README.md +84 -0
- package/providers/detour/bridge.js +219 -0
- package/providers/detour/index.mjs +322 -0
- package/providers/detour/package-lock.json +577 -0
- package/providers/detour/package.json +19 -0
- package/providers/detour/scripts/build.mjs +31 -0
- package/providers/detour/src/bridge.js +256 -0
- package/providers/detour/src/contracts.js +40 -0
- package/providers/detour/src/inspector.js +260 -0
- package/providers/detour/src/inspector.test.mjs +53 -0
- package/providers/detour/src/panel.js +465 -0
- package/providers/detour/src/provider-core.js +233 -0
- package/providers/detour/src/provider-core.test.mjs +185 -0
- package/providers/detour/src/react-context-core.js +143 -0
- package/providers/detour/src/react-context.js +44 -0
- package/providers/detour/src/react-context.test.mjs +41 -0
- package/providers/templates/README.md +23 -0
- package/providers/templates/ci-review-provider.mjs +46 -0
- package/providers/templates/detour-workflow-provider.mjs +41 -0
- package/providers/templates/jira-github-provider.mjs +42 -0
- package/providers/templates/provider-utils.mjs +45 -0
- package/providers/templates/sast-triage-provider.mjs +51 -0
|
@@ -0,0 +1,989 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Evolution of the ※ Tap Icon</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root {
|
|
9
|
+
--bg: #FAFAFA;
|
|
10
|
+
--card: #FFFFFF;
|
|
11
|
+
--text: #6B7075;
|
|
12
|
+
--text-strong: #2D3033;
|
|
13
|
+
--text-heading: #1A1C1E;
|
|
14
|
+
--text-muted: #9A9FA3;
|
|
15
|
+
--text-faint: #B0B4B8;
|
|
16
|
+
--rule: #E8EAEB;
|
|
17
|
+
--quote: #8A8F93;
|
|
18
|
+
--teal: #2D7D9E;
|
|
19
|
+
--accent: #3994BC;
|
|
20
|
+
--accent-tint: #F0F7FA;
|
|
21
|
+
--accent-deep: #297AA0;
|
|
22
|
+
--shadow-1: 0 1px 4px rgba(0,0,0,.06), 0 4px 16px rgba(0,0,0,.04);
|
|
23
|
+
--shadow-2: 0 1px 3px rgba(0,0,0,.06), 0 3px 12px rgba(0,0,0,.04);
|
|
24
|
+
--shadow-hover: 0 2px 8px rgba(0,0,0,.08), 0 8px 24px rgba(0,0,0,.06);
|
|
25
|
+
--num-col: 80px; /* iteration-number min-width (56) + header gap (24) */
|
|
26
|
+
|
|
27
|
+
/* Terminal palette — shared by .cli and .glyph-cli */
|
|
28
|
+
--term-bg: #1E1E1E;
|
|
29
|
+
--term-fg: #C0C0C0;
|
|
30
|
+
--term-prompt: #569CD6;
|
|
31
|
+
--term-input: #9CDCFE;
|
|
32
|
+
--term-tap: #4EC9B0;
|
|
33
|
+
--term-err: #CE9178;
|
|
34
|
+
--term-ok: #DCDCAA;
|
|
35
|
+
--term-comment: #6A9955;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
|
|
39
|
+
body { font-family: 'Segoe UI', system-ui, sans-serif; background: var(--bg); color: var(--text); font-size: 16px; line-height: 1.65; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
|
|
40
|
+
::selection { background: var(--accent-tint); color: var(--accent-deep); }
|
|
41
|
+
|
|
42
|
+
.page { max-width: 1040px; margin: 0 auto; padding: 80px 48px 120px; }
|
|
43
|
+
h1 { font-size: 42px; font-weight: 300; color: var(--text-heading); letter-spacing: -0.022em; line-height: 1.15; margin-bottom: 12px; }
|
|
44
|
+
.subtitle { font-size: 18px; color: var(--text-muted); line-height: 1.5; margin-bottom: 56px; max-width: 720px; }
|
|
45
|
+
h2 { font-size: 13px; font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: .14em; margin: 64px 0 20px; }
|
|
46
|
+
h3 { font-size: 22px; font-weight: 400; color: var(--text-strong); line-height: 1.3; margin-bottom: 14px; }
|
|
47
|
+
p { font-size: 16px; line-height: 1.65; margin-bottom: 16px; max-width: 720px; }
|
|
48
|
+
.muted { color: var(--text-faint); }
|
|
49
|
+
.highlight { color: var(--accent-deep); }
|
|
50
|
+
blockquote { border-left: 3px solid var(--accent); padding-left: 20px; margin: 24px 0; font-style: italic; color: var(--quote); font-size: 17px; line-height: 1.6; max-width: 720px; }
|
|
51
|
+
|
|
52
|
+
/* Icon display */
|
|
53
|
+
.icon-row { display: flex; align-items: center; gap: 28px; margin: 28px 0 36px; flex-wrap: wrap; }
|
|
54
|
+
.icon-cell { display: flex; flex-direction: column; align-items: center; gap: 10px; }
|
|
55
|
+
.icon-cell svg { background: var(--card); border-radius: 12px; padding: 10px; box-shadow: var(--shadow-1); }
|
|
56
|
+
.icon-label { font-size: 11px; color: var(--quote); text-transform: uppercase; letter-spacing: .1em; font-weight: 500; }
|
|
57
|
+
|
|
58
|
+
/* Iterations: 2-column grid of compact cards */
|
|
59
|
+
.iterations-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; margin: 36px 0; }
|
|
60
|
+
.iteration { background: var(--card); border-radius: 16px; padding: 26px 28px; box-shadow: var(--shadow-2); margin: 0; position: relative; display: flex; flex-direction: column; }
|
|
61
|
+
.iteration-header { display: block; margin-bottom: 14px; padding-right: 40px; flex: 1 1 auto; }
|
|
62
|
+
.iteration-number { position: absolute; top: 22px; right: 24px; font-family: 'Cascadia Code', 'Fira Code', 'Consolas', monospace; font-size: 13px; font-weight: 600; color: var(--text-faint); line-height: 1; letter-spacing: .04em; font-variant-numeric: tabular-nums; min-width: auto; text-align: right; }
|
|
63
|
+
.iteration-content { min-width: 0; }
|
|
64
|
+
.iteration-title { font-size: 19px; font-weight: 500; color: var(--text-strong); margin-bottom: 10px; line-height: 1.3; letter-spacing: -0.005em; }
|
|
65
|
+
.interpretation { font-size: 15px; color: var(--text); margin-bottom: 10px; line-height: 1.55; max-width: none; }
|
|
66
|
+
.approach { font-size: 14px; color: var(--text-muted); margin-bottom: 0; line-height: 1.55; max-width: none; font-style: italic; }
|
|
67
|
+
|
|
68
|
+
.icon-display { display: flex; align-items: stretch; gap: 16px; margin: 18px 0 0; margin-left: 0; flex-wrap: wrap; }
|
|
69
|
+
.icon-size { display: flex; flex-direction: column; align-items: center; gap: 8px; flex-shrink: 0; }
|
|
70
|
+
.icon-size svg { background: var(--bg); border-radius: 10px; padding: 10px; box-shadow: inset 0 0 0 1px var(--rule); }
|
|
71
|
+
.size-label { font-size: 10px; color: var(--text-faint); text-transform: uppercase; letter-spacing: .1em; }
|
|
72
|
+
|
|
73
|
+
/* Terminal glyph card — per iteration */
|
|
74
|
+
.glyph-card { display: flex; flex-direction: column; gap: 8px; flex: 1; min-width: 0; }
|
|
75
|
+
.glyph-tag { font-size: 10px; color: var(--text-faint); text-transform: uppercase; letter-spacing: .1em; }
|
|
76
|
+
.glyph-cli { font-family: 'Cascadia Code', 'Fira Code', 'Consolas', monospace; font-size: 13px; background: var(--term-bg); color: var(--term-fg); padding: 14px 16px; border-radius: 10px; line-height: 1.5; box-shadow: 0 1px 2px rgba(0,0,0,.08); display: flex; align-items: center; column-gap: 10px; row-gap: 4px; flex-wrap: wrap; min-height: 84px; box-sizing: border-box; }
|
|
77
|
+
.glyph-cli .glyph { color: var(--term-tap); font-weight: 600; font-size: 18px; line-height: 1; flex-shrink: 0; min-width: 28px; text-align: center; }
|
|
78
|
+
.glyph-cli .tap { color: var(--term-tap); margin-right: -4px; }
|
|
79
|
+
.glyph-cli .err { color: var(--term-err); }
|
|
80
|
+
.glyph-cli .ok { color: var(--term-ok); }
|
|
81
|
+
.glyph-cli .msg { color: var(--term-fg); }
|
|
82
|
+
|
|
83
|
+
/* Gallery grid */
|
|
84
|
+
.gallery { display: grid; grid-template-columns: repeat(5, 1fr); gap: 20px; margin: 40px 0; }
|
|
85
|
+
.gallery-item { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 22px 14px; background: var(--card); border-radius: 12px; box-shadow: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.04); transition: transform .25s cubic-bezier(.2,.8,.2,1), box-shadow .25s cubic-bezier(.2,.8,.2,1); }
|
|
86
|
+
.gallery-item:hover { transform: translateY(-2px); box-shadow: var(--shadow-hover); }
|
|
87
|
+
.gallery-item svg { margin-bottom: 4px; }
|
|
88
|
+
.gallery-num { font-size: 11px; color: var(--text-faint); font-weight: 600; font-variant-numeric: tabular-nums; }
|
|
89
|
+
.gallery-name { font-size: 12px; color: var(--text); text-align: center; font-weight: 500; line-height: 1.3; }
|
|
90
|
+
|
|
91
|
+
/* Divider */
|
|
92
|
+
.divider { border: none; height: 1px; background: var(--rule); margin: 48px 0; }
|
|
93
|
+
|
|
94
|
+
/* Category headers */
|
|
95
|
+
.category { font-size: 12px; font-weight: 600; color: var(--accent); text-transform: uppercase; letter-spacing: .1em; margin: 0 0 6px; padding: 4px 10px; background: var(--accent-tint); border-radius: 6px; display: inline-block; }
|
|
96
|
+
|
|
97
|
+
/* Section subtitle (sits under h2 tag headers) */
|
|
98
|
+
.section-lede { font-size: 22px; color: var(--text-strong); font-weight: 400; margin-bottom: 20px; max-width: 760px; line-height: 1.4; letter-spacing: -0.005em; }
|
|
99
|
+
.section-body { max-width: 760px; }
|
|
100
|
+
.section-body p { font-size: 16px; line-height: 1.7; color: var(--text); }
|
|
101
|
+
.section-body p strong { color: var(--text-strong); font-weight: 600; }
|
|
102
|
+
|
|
103
|
+
/* Requirement list */
|
|
104
|
+
.req-list { list-style: none; padding: 0; margin: 18px 0; max-width: 760px; }
|
|
105
|
+
.req-list li { display: flex; gap: 18px; align-items: flex-start; padding: 18px 20px; background: var(--card); border-radius: 12px; box-shadow: var(--shadow-2); margin-bottom: 12px; }
|
|
106
|
+
.req-list .req-num { font-family: 'Cascadia Code', 'Fira Code', 'Consolas', monospace; font-size: 13px; color: var(--accent); font-weight: 600; min-width: 32px; padding-top: 2px; }
|
|
107
|
+
.req-list .req-body { font-size: 15px; line-height: 1.6; color: var(--text); }
|
|
108
|
+
.req-list .req-body strong { color: var(--text-strong); font-weight: 600; }
|
|
109
|
+
|
|
110
|
+
/* Inline tag chip */
|
|
111
|
+
.chip { font-family: 'Cascadia Code', 'Fira Code', 'Consolas', monospace; font-size: 12px; background: var(--accent-tint); color: var(--accent-deep); padding: 2px 8px; border-radius: 4px; margin: 0 2px; }
|
|
112
|
+
|
|
113
|
+
/* Brief coda — small italic note after the requirements list */
|
|
114
|
+
.brief-coda { font-size: 15px; color: var(--text-muted); max-width: 760px; margin-top: 16px; font-style: italic; }
|
|
115
|
+
|
|
116
|
+
/* Decision callout */
|
|
117
|
+
.decision { margin: 32px 0; padding: 22px 26px; background: var(--card); border-left: 3px solid var(--accent); border-radius: 4px 10px 10px 4px; box-shadow: var(--shadow-2); max-width: 800px; }
|
|
118
|
+
.decision strong { color: var(--text-strong); font-size: 15px; display: block; margin-bottom: 10px; }
|
|
119
|
+
.decision p { font-size: 15px; color: var(--text); line-height: 1.7; margin: 0; max-width: none; }
|
|
120
|
+
.decision code { font-family: 'Cascadia Code', 'Fira Code', 'Consolas', monospace; font-size: 13px; background: var(--accent-tint); color: var(--accent-deep); padding: 2px 7px; border-radius: 4px; }
|
|
121
|
+
|
|
122
|
+
/* CLI mockup */
|
|
123
|
+
.cli { background: var(--term-bg); color: var(--term-fg); font-family: 'Cascadia Code', 'Fira Code', 'Consolas', monospace; font-size: 15px; padding: 28px 32px; border-radius: 12px; margin: 28px 0; line-height: 1.7; box-shadow: 0 2px 12px rgba(0,0,0,.15); }
|
|
124
|
+
.cli .prompt { color: var(--term-prompt); }
|
|
125
|
+
.cli .input { color: var(--term-input); }
|
|
126
|
+
.cli .tap { color: var(--term-tap); }
|
|
127
|
+
.cli .err { color: var(--term-err); }
|
|
128
|
+
.cli .ok { color: var(--term-ok); }
|
|
129
|
+
.cli .cursor { color: var(--term-comment); animation: caret 1.1s steps(2, jump-none) infinite; }
|
|
130
|
+
|
|
131
|
+
@keyframes caret { 50% { opacity: 0; } }
|
|
132
|
+
|
|
133
|
+
/* Colophon */
|
|
134
|
+
.colophon { margin-top: 48px; color: var(--text-strong); opacity: .55; font-size: 13px; letter-spacing: .01em; }
|
|
135
|
+
|
|
136
|
+
@media (max-width: 820px) {
|
|
137
|
+
.iterations-grid { grid-template-columns: 1fr; gap: 16px; }
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
@media (max-width: 640px) {
|
|
141
|
+
.page { padding: 40px 20px 80px; }
|
|
142
|
+
.gallery { grid-template-columns: repeat(3, 1fr); }
|
|
143
|
+
.iteration { padding: 18px 20px; }
|
|
144
|
+
.iteration-number { top: 14px; right: 16px; }
|
|
145
|
+
.icon-display { margin-left: 0; }
|
|
146
|
+
.decision { padding: 16px 18px; }
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@media (prefers-reduced-motion: reduce) {
|
|
150
|
+
.gallery-item { transition: none; }
|
|
151
|
+
.gallery-item:hover { transform: none; }
|
|
152
|
+
.cli .cursor { animation: none; }
|
|
153
|
+
}
|
|
154
|
+
</style>
|
|
155
|
+
</head>
|
|
156
|
+
<body>
|
|
157
|
+
<div class="page">
|
|
158
|
+
|
|
159
|
+
<h1>20 Interpretations of "Tap"</h1>
|
|
160
|
+
<p class="subtitle">20 independent agents, 20 unique metaphors, 20 SVG icons — each answering one question: <em>what does "tap" mean to you?</em></p>
|
|
161
|
+
|
|
162
|
+
<blockquote>The app is called <strong>tap</strong> — a Copilot CLI extension that adds background event filtering and injection. It lets you "tap into" streams of data, filter noise, and surface important signals into your coding session. But "tap" is a word with many meanings. We asked 20 agents to each bring their own.</blockquote>
|
|
163
|
+
|
|
164
|
+
<!-- ═══ THE BRIEF ═══ -->
|
|
165
|
+
<h2>The Brief</h2>
|
|
166
|
+
<h3 class="section-lede">What we needed before exploring</h3>
|
|
167
|
+
|
|
168
|
+
<div class="section-body">
|
|
169
|
+
<p>Two artifacts, for the same product. Both have to feel like the same idea.</p>
|
|
170
|
+
</div>
|
|
171
|
+
|
|
172
|
+
<ol class="req-list">
|
|
173
|
+
<li>
|
|
174
|
+
<span class="req-num">01</span>
|
|
175
|
+
<span class="req-body"><strong>A 64 × 64 icon.</strong> An SVG mark for the Copilot CLI extension card. One size, one strong rendering — we don't need to scale down for very small contexts.</span>
|
|
176
|
+
</li>
|
|
177
|
+
<li>
|
|
178
|
+
<span class="req-num">02</span>
|
|
179
|
+
<span class="req-body"><strong>A terminal glyph.</strong> One to three characters — ASCII or Unicode — that prefix every message tap injects into the CLI. Must render in monospace fonts (Cascadia, Fira, Consolas), stay visually distinct from prompt markers like <code class="chip">$</code> <code class="chip">❯</code> <code class="chip">▶</code>, and connect semantically to the icon.</span>
|
|
180
|
+
</li>
|
|
181
|
+
</ol>
|
|
182
|
+
|
|
183
|
+
<p class="brief-coda">The icon brands the product. The glyph attaches to every line it speaks. They have to be the same idea in two media.</p>
|
|
184
|
+
|
|
185
|
+
<hr class="divider">
|
|
186
|
+
|
|
187
|
+
<!-- ═══ BRAINSTORMING ═══ -->
|
|
188
|
+
<h2>Brainstorming — 20 Agents, 20 Metaphors</h2>
|
|
189
|
+
<h3 class="section-lede">Each agent answered the same question independently: <em>what does "tap" mean to you?</em></h3>
|
|
190
|
+
|
|
191
|
+
<div class="section-body">
|
|
192
|
+
<p>The brief was deliberately open. Pick a metaphor. Design the icon. Propose a glyph. We wanted variety, not consensus — to see which metaphors held up at icon sizes <em>and</em> in monospace text, and which collapsed when one of those constraints squeezed.</p>
|
|
193
|
+
</div>
|
|
194
|
+
|
|
195
|
+
<div class="gallery">
|
|
196
|
+
<div class="gallery-item">
|
|
197
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 8h8c1.1 0 2 .9 2 2v1c0 .6-.4 1-1 1h-1v2c0 .6-.4 1-1 1H8" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M4 6v4" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><circle cx="9" cy="16" r="1.5" stroke="#3994BC" stroke-width="1.2" fill="none"/></svg>
|
|
198
|
+
<span class="gallery-num">01</span><span class="gallery-name">Data Tap</span>
|
|
199
|
+
</div>
|
|
200
|
+
<div class="gallery-item">
|
|
201
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 10 L18 10" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><path d="M10 10 L10 6" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><path d="M8 4 L10 6 L12 4" stroke="#3994BC" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/><circle cx="10" cy="10" r="1" fill="#3994BC"/><path d="M6 8 Q8 9 6 10 Q8 11 6 12" stroke="#3994BC" stroke-width="1" fill="none" opacity="0.6"/></svg>
|
|
202
|
+
<span class="gallery-num">02</span><span class="gallery-name">Wire Tap</span>
|
|
203
|
+
</div>
|
|
204
|
+
<div class="gallery-item">
|
|
205
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 6L8 14L12 14L16 6" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/><circle cx="5" cy="4" r="0.5" fill="#3994BC"/><circle cx="8" cy="3" r="0.5" fill="#3994BC"/><circle cx="11" cy="4" r="0.5" fill="#3994BC"/><circle cx="14" cy="3.5" r="0.5" fill="#3994BC"/><circle cx="15" cy="5" r="0.5" fill="#3994BC"/><circle cx="10" cy="16.5" r="0.8" fill="#2D7D9E"/></svg>
|
|
206
|
+
<span class="gallery-num">03</span><span class="gallery-name">Data Funnel</span>
|
|
207
|
+
</div>
|
|
208
|
+
<div class="gallery-item">
|
|
209
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none"><path d="M2 10 L7 10 L9 10 L10 5 L11 10 L13 10 L18 10" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><circle cx="10" cy="5" r="1.5" fill="#3994BC"/></svg>
|
|
210
|
+
<span class="gallery-num">04</span><span class="gallery-name">Signal Spike</span>
|
|
211
|
+
</div>
|
|
212
|
+
<div class="gallery-item">
|
|
213
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 3C6 2 6.5 1.5 7.5 1.5C8.5 1.5 9 2 9 3V17C9 18 8.5 18.5 7.5 18.5C6.5 18.5 6 18 6 17V3Z" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round"/><path d="M9 10H12C12.8 10 13.5 10.7 13.5 11.5C13.5 12.3 12.8 13 12 13H11" stroke="#2D7D9E" stroke-width="1.1" stroke-linecap="round"/><circle cx="11.5" cy="11.5" r="0.3" fill="#3994BC"/><path d="M11.2 13.2C11.2 13.8 11.7 14.3 12.3 14.3C12.9 14.3 13.4 13.8 13.4 13.2" stroke="#3994BC" stroke-width="1" stroke-linecap="round"/></svg>
|
|
214
|
+
<span class="gallery-num">05</span><span class="gallery-name">Maple Tap</span>
|
|
215
|
+
</div>
|
|
216
|
+
<div class="gallery-item">
|
|
217
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><line x1="2" y1="10" x2="7" y2="10" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><line x1="13" y1="10" x2="18" y2="10" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><circle cx="10" cy="10" r="3" stroke="#2D7D9E" stroke-width="1.5"/><line x1="10" y1="7" x2="10" y2="4" stroke="#3994BC" stroke-width="1.5" stroke-linecap="round"/><line x1="8" y1="4" x2="12" y2="4" stroke="#3994BC" stroke-width="1.5" stroke-linecap="round"/></svg>
|
|
218
|
+
<span class="gallery-num">06</span><span class="gallery-name">Pipeline Valve</span>
|
|
219
|
+
</div>
|
|
220
|
+
<div class="gallery-item">
|
|
221
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10 2C10 1.5 10.5 1 11 1C11.5 1 12 1.5 12 2V8L13.5 7C14 6.7 14.5 6.8 14.8 7.2C15.1 7.6 15 8.1 14.6 8.4L11.8 10.5C11.3 10.9 10.7 10.9 10.2 10.5L7.4 8.4C7 8.1 6.9 7.6 7.2 7.2C7.5 6.8 8 6.7 8.5 7L10 8V2Z" stroke="#2D7D9E" stroke-width="1" stroke-linejoin="round"/><circle cx="10" cy="12" r="2" stroke="#3994BC" stroke-width="0.8" opacity="0.8"/><circle cx="10" cy="12" r="4" stroke="#3994BC" stroke-width="0.6" opacity="0.5"/><circle cx="10" cy="12" r="6" stroke="#3994BC" stroke-width="0.4" opacity="0.3"/></svg>
|
|
222
|
+
<span class="gallery-num">07</span><span class="gallery-name">Gentle Tap</span>
|
|
223
|
+
</div>
|
|
224
|
+
<div class="gallery-item">
|
|
225
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><line x1="2" y1="10" x2="18" y2="10" stroke="#2D7D9E" stroke-width="1"/><circle cx="4" cy="7" r="0.8" fill="#3994BC"/><line x1="7" y1="7" x2="9" y2="7" stroke="#3994BC" stroke-width="1.2"/><circle cx="12" cy="7" r="0.8" fill="#3994BC"/><line x1="15" y1="7" x2="17" y2="7" stroke="#3994BC" stroke-width="1.2"/><line x1="3" y1="13" x2="5" y2="13" stroke="#2D7D9E" stroke-width="1.2"/><circle cx="8" cy="13" r="0.8" fill="#2D7D9E"/><circle cx="11" cy="13" r="0.8" fill="#2D7D9E"/><line x1="14" y1="13" x2="16" y2="13" stroke="#2D7D9E" stroke-width="1.2"/></svg>
|
|
226
|
+
<span class="gallery-num">08</span><span class="gallery-name">Morse Signal</span>
|
|
227
|
+
</div>
|
|
228
|
+
<div class="gallery-item">
|
|
229
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><line x1="10" y1="18" x2="10" y2="8" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><circle cx="10" cy="8" r="1" fill="#2D7D9E"/><path d="M 7 8 A 3 3 0 0 1 13 8" stroke="#2D7D9E" stroke-width="1.2" fill="none" stroke-linecap="round"/><path d="M 5 8 A 5 5 0 0 1 15 8" stroke="#3994BC" stroke-width="1.5" fill="none" stroke-linecap="round"/><path d="M 3 8 A 7 7 0 0 1 17 8" stroke="#2D7D9E" stroke-width="1.2" fill="none" stroke-linecap="round"/><rect x="8.5" y="15" width="3" height="3" fill="#2D7D9E" rx="0.5"/></svg>
|
|
230
|
+
<span class="gallery-num">09</span><span class="gallery-name">Signal Antenna</span>
|
|
231
|
+
</div>
|
|
232
|
+
<div class="gallery-item">
|
|
233
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="10" r="3" stroke="#2D7D9E" stroke-width="0.8" opacity="0.6"/><circle cx="10" cy="10" r="5.5" stroke="#2D7D9E" stroke-width="0.6" opacity="0.4"/><circle cx="10" cy="10" r="8" stroke="#2D7D9E" stroke-width="0.4" opacity="0.3"/><line x1="10" y1="10" x2="10" y2="2" stroke="#3994BC" stroke-width="0.8"/><line x1="10" y1="10" x2="16.5" y2="5.5" stroke="#3994BC" stroke-width="0.6" opacity="0.7"/><circle cx="14.9" cy="6.1" r="1" fill="#3994BC"/><circle cx="10" cy="10" r="0.8" fill="#2D7D9E"/></svg>
|
|
234
|
+
<span class="gallery-num">10</span><span class="gallery-name">Sonar Ping</span>
|
|
235
|
+
</div>
|
|
236
|
+
<div class="gallery-item">
|
|
237
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10 2 L10 8 L10 12 L10 18" stroke="#2D7D9E" stroke-width="1.5" opacity="0.4" stroke-linecap="round"/><path d="M10 2 L10 8" stroke="#2D7D9E" stroke-width="2" stroke-linecap="round"/><path d="M10 8 Q12 9 14 11 Q16 13 17 16" stroke="#3994BC" stroke-width="2.5" stroke-linecap="round" fill="none"/><circle cx="10" cy="8" r="1" fill="#3994BC"/></svg>
|
|
238
|
+
<span class="gallery-num">11</span><span class="gallery-name">Stream Fork</span>
|
|
239
|
+
</div>
|
|
240
|
+
<div class="gallery-item">
|
|
241
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><line x1="5" y1="5" x2="15" y2="15" stroke="#2D7D9E" stroke-width="1.6" stroke-linecap="round"/><line x1="15" y1="5" x2="5" y2="15" stroke="#2D7D9E" stroke-width="1.6" stroke-linecap="round"/><circle cx="10" cy="3" r="0.8" fill="#3994BC"/><circle cx="17" cy="10" r="0.8" fill="#3994BC"/><circle cx="10" cy="17" r="0.8" fill="#3994BC"/><circle cx="3" cy="10" r="0.8" fill="#3994BC"/></svg>
|
|
242
|
+
<span class="gallery-num">12</span><span class="gallery-name">Strike Mark</span>
|
|
243
|
+
</div>
|
|
244
|
+
<div class="gallery-item">
|
|
245
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 10C2 10 5.5 4 10 4C14.5 4 18 10 18 10C18 10 14.5 16 10 16C5.5 16 2 10 2 10Z" stroke="#2D7D9E" stroke-width="1.5" stroke-linejoin="round"/><circle cx="11" cy="9.5" r="3" stroke="#2D7D9E" stroke-width="1.5" fill="none"/><circle cx="11.5" cy="9" r="1.2" fill="#3994BC"/><path d="M1 6L3 8" stroke="#3994BC" stroke-width="1" stroke-linecap="round"/><path d="M1 14L3 12" stroke="#3994BC" stroke-width="1" stroke-linecap="round"/><path d="M19 6L17 8" stroke="#3994BC" stroke-width="1" stroke-linecap="round"/><circle cx="16" cy="4" r="1.5" fill="#3994BC"/></svg>
|
|
246
|
+
<span class="gallery-num">13</span><span class="gallery-name">Watchful Monitor</span>
|
|
247
|
+
</div>
|
|
248
|
+
<div class="gallery-item">
|
|
249
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="10" r="8" stroke="#2D7D9E" stroke-width="1.2" fill="none"/><g stroke="#2D7D9E" stroke-width="0.8"><line x1="4" y1="6" x2="16" y2="6"/><line x1="4" y1="8.5" x2="16" y2="8.5"/><line x1="4" y1="11" x2="16" y2="11"/><line x1="4" y1="13.5" x2="16" y2="13.5"/><line y1="4" x1="6" y2="16" x2="6"/><line y1="4" x1="8.5" y2="16" x2="8.5"/><line y1="4" x1="11" y2="16" x2="11"/><line y1="4" x1="13.5" y2="16" x2="13.5"/></g><circle cx="8.5" cy="8.5" r="0.8" fill="#3994BC"/><circle cx="13.5" cy="11" r="0.7" fill="#3994BC"/></svg>
|
|
250
|
+
<span class="gallery-num">14</span><span class="gallery-name">Data Sieve</span>
|
|
251
|
+
</div>
|
|
252
|
+
<div class="gallery-item">
|
|
253
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 12c0-3.5 2.5-6 4-6s4 2.5 4 6v1h-8v-1z" stroke="#2D7D9E" stroke-width="1.5" stroke-dasharray="2 1" stroke-linecap="round"/><path d="M5 13h10" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><path d="M10 15v1a1 1 0 0 1-2 0v-1" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><path d="M15 11c0.5-0.5 1-1 1.5-1" stroke="#3994BC" stroke-width="1" stroke-linecap="round"/><path d="M16 13c0.7-0.3 1.3-0.7 2-1" stroke="#3994BC" stroke-width="1" stroke-linecap="round"/></svg>
|
|
254
|
+
<span class="gallery-num">15</span><span class="gallery-name">Smart Bell</span>
|
|
255
|
+
</div>
|
|
256
|
+
<div class="gallery-item">
|
|
257
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><polygon points="8,6 14,10 8,14" stroke="#2D7D9E" stroke-width="1.5" fill="none"/><line x1="2" y1="10" x2="8" y2="10" stroke="#2D7D9E" stroke-width="1.5"/><line x1="14" y1="10" x2="18" y2="8" stroke="#2D7D9E" stroke-width="1.2"/><line x1="14" y1="10" x2="18" y2="10" stroke="#3994BC" stroke-width="1.8"/><line x1="14" y1="10" x2="18" y2="12" stroke="#2D7D9E" stroke-width="1.2"/><line x1="14" y1="10" x2="17.5" y2="14" stroke="#2D7D9E" stroke-width="1"/></svg>
|
|
258
|
+
<span class="gallery-num">16</span><span class="gallery-name">Signal Prism</span>
|
|
259
|
+
</div>
|
|
260
|
+
<div class="gallery-item">
|
|
261
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="11" r="1.5" stroke="#2D7D9E" stroke-width="0.4" opacity="1"/><circle cx="10" cy="11" r="3" stroke="#2D7D9E" stroke-width="0.3" opacity="0.7"/><circle cx="10" cy="11" r="4.5" stroke="#2D7D9E" stroke-width="0.25" opacity="0.4"/><circle cx="10" cy="11" r="6" stroke="#2D7D9E" stroke-width="0.2" opacity="0.2"/><path d="M10 7C9.5 7 9.2 7.4 9.2 7.8C9.2 8.4 10 9.5 10 9.5S10.8 8.4 10.8 7.8C10.8 7.4 10.5 7 10 7Z" fill="#3994BC"/></svg>
|
|
262
|
+
<span class="gallery-num">17</span><span class="gallery-name">Signal Drop</span>
|
|
263
|
+
</div>
|
|
264
|
+
<div class="gallery-item">
|
|
265
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 4C3 2.5 4 2 5 2C6 2 7 2.5 7 4C7 5 6.5 6 5.5 6.5" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round"/><path d="M13 4C13 2.5 14 2 15 2C16 2 17 2.5 17 4C17 5 16.5 6 15.5 6.5" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round"/><path d="M5.5 6.5C6.5 7 8 7.5 10 8.5C12 9.5 13.5 7 14.5 6.5" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round" fill="none"/><path d="M10 8.5L10 13" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round"/><circle cx="10" cy="15" r="2" stroke="#3994BC" stroke-width="1.5" fill="none"/><line x1="6" y1="18" x2="14" y2="18" stroke="#3994BC" stroke-width="1" opacity="0.6"/></svg>
|
|
266
|
+
<span class="gallery-num">18</span><span class="gallery-name">Stethoscope</span>
|
|
267
|
+
</div>
|
|
268
|
+
<div class="gallery-item">
|
|
269
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 2h10v2.8c0 1.2-.8 2-2 2.8L10 10l3 2.4c1.2.8 2 1.6 2 2.8V18H5v-2c0-1.2.8-2 2-2.8L10 10 7 7.6C5.8 6.8 5 6 5 4.8V2z" stroke="#2D7D9E" stroke-width="1.2" stroke-linejoin="round"/><circle cx="8" cy="3.6" r="0.7" fill="#3994BC"/><circle cx="10.5" cy="4.2" r="0.5" fill="#3994BC"/><circle cx="12" cy="3.8" r="0.6" fill="#3994BC"/><circle cx="9.5" cy="5.4" r="0.4" fill="#3994BC"/><circle cx="11.5" cy="5.2" r="0.4" fill="#3994BC"/><circle cx="9" cy="14.5" r="0.7" fill="#2D7D9E"/><circle cx="11" cy="15.2" r="0.5" fill="#2D7D9E"/></svg>
|
|
270
|
+
<span class="gallery-num">19</span><span class="gallery-name">Time Filter</span>
|
|
271
|
+
</div>
|
|
272
|
+
<div class="gallery-item">
|
|
273
|
+
<svg width="48" height="48" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 10h12" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><circle cx="15.5" cy="10" r="3" stroke="#2D7D9E" stroke-width="1.5" fill="none"/><circle cx="15.5" cy="10" r="2" stroke="#3994BC" stroke-width="0.8" fill="none"/><circle cx="15.5" cy="10" r="1" stroke="#3994BC" stroke-width="0.6" fill="none"/><circle cx="2" cy="10" r="1.2" stroke="#2D7D9E" stroke-width="1.2" fill="none"/><circle cx="15.5" cy="10" r="0.3" fill="#3994BC"/></svg>
|
|
274
|
+
<span class="gallery-num">20</span><span class="gallery-name">Telescope</span>
|
|
275
|
+
</div>
|
|
276
|
+
</div>
|
|
277
|
+
|
|
278
|
+
<hr class="divider">
|
|
279
|
+
|
|
280
|
+
<!-- ═══ DETAILED ITERATIONS ═══ -->
|
|
281
|
+
<div class="iterations-grid">
|
|
282
|
+
|
|
283
|
+
<!-- 01 -->
|
|
284
|
+
<div class="iteration">
|
|
285
|
+
<div class="iteration-header">
|
|
286
|
+
<span class="iteration-number">01</span>
|
|
287
|
+
<div class="iteration-content">
|
|
288
|
+
<div class="category">Physical Metaphor</div>
|
|
289
|
+
<div class="iteration-title">The Water Tap — Data Tap</div>
|
|
290
|
+
<p class="interpretation">To me, "tap" means a faucet that controls water flow. This extension is like a tap on a data pipeline — you turn it to filter and control what information flows into your coding session. It extracts valuable drops from the data stream.</p>
|
|
291
|
+
<p class="approach">A minimal faucet silhouette with a simple spout and handle using clean strokes. A single droplet below represents the filtered, important events that make it through. The stroke-only design ensures clarity at small icon sizes.</p>
|
|
292
|
+
</div>
|
|
293
|
+
</div>
|
|
294
|
+
<div class="icon-display">
|
|
295
|
+
<div class="icon-size">
|
|
296
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 8h8c1.1 0 2 .9 2 2v1c0 .6-.4 1-1 1h-1v2c0 .6-.4 1-1 1H8" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M4 6v4" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><circle cx="9" cy="16" r="1.5" stroke="#3994BC" stroke-width="1.2" fill="none"/></svg>
|
|
297
|
+
<span class="size-label">64 × 64 icon</span>
|
|
298
|
+
</div>
|
|
299
|
+
<div class="glyph-card">
|
|
300
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
301
|
+
<div class="glyph-cli"><span class="glyph">⊐•</span><span class="tap">tap:</span> <span class="msg">1 new event flowed through filter</span></div>
|
|
302
|
+
</div>
|
|
303
|
+
</div>
|
|
304
|
+
</div>
|
|
305
|
+
|
|
306
|
+
<!-- 02 -->
|
|
307
|
+
<div class="iteration">
|
|
308
|
+
<div class="iteration-header">
|
|
309
|
+
<span class="iteration-number">02</span>
|
|
310
|
+
<div class="iteration-content">
|
|
311
|
+
<div class="category">Surveillance</div>
|
|
312
|
+
<div class="iteration-title">The Wire Tap</div>
|
|
313
|
+
<p class="interpretation">To me, "tap" evokes surveillance and monitoring — like tapping into a phone line or wire to listen for important communications. The extension silently monitors background data streams, filtering out noise and only surfacing critical signals when they matter.</p>
|
|
314
|
+
<p class="approach">A clean signal line with a branch point where the "tap" connects, featuring a small lightning bolt to indicate active monitoring. Teal tones suggest digital signals and surveillance technology.</p>
|
|
315
|
+
</div>
|
|
316
|
+
</div>
|
|
317
|
+
<div class="icon-display">
|
|
318
|
+
<div class="icon-size">
|
|
319
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 10 L18 10" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><path d="M10 10 L10 6" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><path d="M8 4 L10 6 L12 4" stroke="#3994BC" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/><circle cx="10" cy="10" r="1" fill="#3994BC"/><path d="M6 8 Q8 9 6 10 Q8 11 6 12" stroke="#3994BC" stroke-width="1" fill="none" opacity="0.6"/></svg>
|
|
320
|
+
<span class="size-label">64 × 64 icon</span>
|
|
321
|
+
</div>
|
|
322
|
+
<div class="glyph-card">
|
|
323
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
324
|
+
<div class="glyph-cli"><span class="glyph">╫</span><span class="tap">tap:</span> <span class="msg">monitoring api.log on port 8080</span></div>
|
|
325
|
+
</div>
|
|
326
|
+
</div>
|
|
327
|
+
</div>
|
|
328
|
+
|
|
329
|
+
<!-- 03 -->
|
|
330
|
+
<div class="iteration">
|
|
331
|
+
<div class="iteration-header">
|
|
332
|
+
<span class="iteration-number">03</span>
|
|
333
|
+
<div class="iteration-content">
|
|
334
|
+
<div class="category">Filtering</div>
|
|
335
|
+
<div class="iteration-title">The Funnel — Data Funnel</div>
|
|
336
|
+
<p class="interpretation">"Tap" means filtering signal from noise — like tapping into a data stream to extract only what matters. The funnel represents this transformation, where chaotic input becomes focused, actionable output.</p>
|
|
337
|
+
<p class="approach">A simple funnel/cone shape with multiple small elements entering the wide top and a single clean drop emerging from the narrow bottom. Stroke-based design with teal palette for technical precision.</p>
|
|
338
|
+
</div>
|
|
339
|
+
</div>
|
|
340
|
+
<div class="icon-display">
|
|
341
|
+
<div class="icon-size">
|
|
342
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 6L8 14L12 14L16 6" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/><circle cx="5" cy="4" r="0.5" fill="#3994BC"/><circle cx="8" cy="3" r="0.5" fill="#3994BC"/><circle cx="11" cy="4" r="0.5" fill="#3994BC"/><circle cx="14" cy="3.5" r="0.5" fill="#3994BC"/><circle cx="15" cy="5" r="0.5" fill="#3994BC"/><circle cx="10" cy="16.5" r="0.8" fill="#2D7D9E"/></svg>
|
|
343
|
+
<span class="size-label">64 × 64 icon</span>
|
|
344
|
+
</div>
|
|
345
|
+
<div class="glyph-card">
|
|
346
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
347
|
+
<div class="glyph-cli"><span class="glyph">▽</span><span class="tap">tap:</span> <span class="msg">247 events filtered → 3 surfaced</span></div>
|
|
348
|
+
</div>
|
|
349
|
+
</div>
|
|
350
|
+
</div>
|
|
351
|
+
|
|
352
|
+
<!-- 04 -->
|
|
353
|
+
<div class="iteration">
|
|
354
|
+
<div class="iteration-header">
|
|
355
|
+
<span class="iteration-number">04</span>
|
|
356
|
+
<div class="iteration-content">
|
|
357
|
+
<div class="category">Medical</div>
|
|
358
|
+
<div class="iteration-title">The Heartbeat Monitor — Signal Spike</div>
|
|
359
|
+
<p class="interpretation">"Tap" is a vital signs monitor for your code — it watches the continuous stream of development events and filters out the noise. When something critical happens, it spikes the signal and injects that important event directly into your awareness.</p>
|
|
360
|
+
<p class="approach">A clean EKG-style heartbeat line that runs mostly flat across the icon with one sharp spike in the center. A small dot marks the peak where the critical event gets injected.</p>
|
|
361
|
+
</div>
|
|
362
|
+
</div>
|
|
363
|
+
<div class="icon-display">
|
|
364
|
+
<div class="icon-size">
|
|
365
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none"><path d="M2 10 L7 10 L9 10 L10 5 L11 10 L13 10 L18 10" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><circle cx="10" cy="5" r="1.5" fill="#3994BC"/></svg>
|
|
366
|
+
<span class="size-label">64 × 64 icon</span>
|
|
367
|
+
</div>
|
|
368
|
+
<div class="glyph-card">
|
|
369
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
370
|
+
<div class="glyph-cli"><span class="glyph">‾⋀‾</span><span class="tap">tap:</span> <span class="err">anomaly spike in test run #4821</span></div>
|
|
371
|
+
</div>
|
|
372
|
+
</div>
|
|
373
|
+
</div>
|
|
374
|
+
|
|
375
|
+
<!-- 05 -->
|
|
376
|
+
<div class="iteration">
|
|
377
|
+
<div class="iteration-header">
|
|
378
|
+
<span class="iteration-number">05</span>
|
|
379
|
+
<div class="iteration-content">
|
|
380
|
+
<div class="category">Natural</div>
|
|
381
|
+
<div class="iteration-title">The Maple Tap</div>
|
|
382
|
+
<p class="interpretation">"Tap" means tapping a maple tree for its precious sap — drilling into the raw source to extract the sweet essence. Just like filtering data streams, you pierce through the noise (bark and wood) to collect the valuable signal (sap).</p>
|
|
383
|
+
<p class="approach">A simple tree trunk with a small spigot inserted horizontally, with a droplet forming below to show the extraction process. Organic, rounded forms with stroke-based styling.</p>
|
|
384
|
+
</div>
|
|
385
|
+
</div>
|
|
386
|
+
<div class="icon-display">
|
|
387
|
+
<div class="icon-size">
|
|
388
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 3C6 2 6.5 1.5 7.5 1.5C8.5 1.5 9 2 9 3V17C9 18 8.5 18.5 7.5 18.5C6.5 18.5 6 18 6 17V3Z" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round"/><path d="M9 10H12C12.8 10 13.5 10.7 13.5 11.5C13.5 12.3 12.8 13 12 13H11" stroke="#2D7D9E" stroke-width="1.1" stroke-linecap="round"/><circle cx="11.5" cy="11.5" r="0.3" fill="#3994BC"/><path d="M11.2 13.2C11.2 13.8 11.7 14.3 12.3 14.3C12.9 14.3 13.4 13.8 13.4 13.2" stroke="#3994BC" stroke-width="1" stroke-linecap="round"/></svg>
|
|
389
|
+
<span class="size-label">64 × 64 icon</span>
|
|
390
|
+
</div>
|
|
391
|
+
<div class="glyph-card">
|
|
392
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
393
|
+
<div class="glyph-cli"><span class="glyph">┠○</span><span class="tap">tap:</span> <span class="msg">extracted 1 critical event from build log</span></div>
|
|
394
|
+
</div>
|
|
395
|
+
</div>
|
|
396
|
+
</div>
|
|
397
|
+
|
|
398
|
+
<!-- 06 -->
|
|
399
|
+
<div class="iteration">
|
|
400
|
+
<div class="iteration-header">
|
|
401
|
+
<span class="iteration-number">06</span>
|
|
402
|
+
<div class="iteration-content">
|
|
403
|
+
<div class="category">Industrial</div>
|
|
404
|
+
<div class="iteration-title">The Pipeline Valve</div>
|
|
405
|
+
<p class="interpretation">To me, "tap" is an industrial valve on a data pipeline that controls the flow of information. You can open it wide to let all events through, close it to block noise, or adjust it to a precise trickle of important signals.</p>
|
|
406
|
+
<p class="approach">A horizontal pipe with a circular valve junction and a control handle on top. Simple geometric shapes with clean strokes create an industrial, functional aesthetic.</p>
|
|
407
|
+
</div>
|
|
408
|
+
</div>
|
|
409
|
+
<div class="icon-display">
|
|
410
|
+
<div class="icon-size">
|
|
411
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><line x1="2" y1="10" x2="7" y2="10" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><line x1="13" y1="10" x2="18" y2="10" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><circle cx="10" cy="10" r="3" stroke="#2D7D9E" stroke-width="1.5"/><line x1="10" y1="7" x2="10" y2="4" stroke="#3994BC" stroke-width="1.5" stroke-linecap="round"/><line x1="8" y1="4" x2="12" y2="4" stroke="#3994BC" stroke-width="1.5" stroke-linecap="round"/></svg>
|
|
412
|
+
<span class="size-label">64 × 64 icon</span>
|
|
413
|
+
</div>
|
|
414
|
+
<div class="glyph-card">
|
|
415
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
416
|
+
<div class="glyph-cli"><span class="glyph">─⊕─</span><span class="tap">tap:</span> <span class="msg">filter 'errors-only' opened — 3 events through</span></div>
|
|
417
|
+
</div>
|
|
418
|
+
</div>
|
|
419
|
+
</div>
|
|
420
|
+
|
|
421
|
+
<!-- 07 -->
|
|
422
|
+
<div class="iteration">
|
|
423
|
+
<div class="iteration-header">
|
|
424
|
+
<span class="iteration-number">07</span>
|
|
425
|
+
<div class="iteration-content">
|
|
426
|
+
<div class="category">Interaction</div>
|
|
427
|
+
<div class="iteration-title">The Finger Tap — Gentle Tap</div>
|
|
428
|
+
<p class="interpretation">"Tap" represents the gentlest form of communication — a light finger touch that draws attention without disruption. It's the digital equivalent of a shoulder tap, providing meaningful signals precisely when needed.</p>
|
|
429
|
+
<p class="approach">A minimalist finger making contact with concentric ripple circles that emanate outward, symbolizing the propagation of important information. Ripples suggest filtered, purposeful notifications.</p>
|
|
430
|
+
</div>
|
|
431
|
+
</div>
|
|
432
|
+
<div class="icon-display">
|
|
433
|
+
<div class="icon-size">
|
|
434
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10 2C10 1.5 10.5 1 11 1C11.5 1 12 1.5 12 2V8L13.5 7C14 6.7 14.5 6.8 14.8 7.2C15.1 7.6 15 8.1 14.6 8.4L11.8 10.5C11.3 10.9 10.7 10.9 10.2 10.5L7.4 8.4C7 8.1 6.9 7.6 7.2 7.2C7.5 6.8 8 6.7 8.5 7L10 8V2Z" stroke="#2D7D9E" stroke-width="1" stroke-linejoin="round"/><circle cx="10" cy="12" r="2" stroke="#3994BC" stroke-width="0.8" opacity="0.8"/><circle cx="10" cy="12" r="4" stroke="#3994BC" stroke-width="0.6" opacity="0.5"/><circle cx="10" cy="12" r="6" stroke="#3994BC" stroke-width="0.4" opacity="0.3"/></svg>
|
|
435
|
+
<span class="size-label">64 × 64 icon</span>
|
|
436
|
+
</div>
|
|
437
|
+
<div class="glyph-card">
|
|
438
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
439
|
+
<div class="glyph-cli"><span class="glyph">(·)</span><span class="tap">tap:</span> <span class="msg">shoulder tap — PR #37 needs review</span></div>
|
|
440
|
+
</div>
|
|
441
|
+
</div>
|
|
442
|
+
</div>
|
|
443
|
+
|
|
444
|
+
<!-- 08 -->
|
|
445
|
+
<div class="iteration">
|
|
446
|
+
<div class="iteration-header">
|
|
447
|
+
<span class="iteration-number">08</span>
|
|
448
|
+
<div class="iteration-content">
|
|
449
|
+
<div class="category">Communication</div>
|
|
450
|
+
<div class="iteration-title">The Morse Key — Morse Signal</div>
|
|
451
|
+
<p class="interpretation">"Tap" evokes telegraph communication — the rhythmic tap-tap-tap of morse code translating raw signals into meaningful messages. The extension acts like a telegraph operator, decoding streams of data and filtering noise to surface important signals.</p>
|
|
452
|
+
<p class="approach">Abstract dots and dashes (morse code pattern) arranged around a horizontal baseline, suggesting signal decoding in progress. Minimal geometric elements remain clear at small sizes.</p>
|
|
453
|
+
</div>
|
|
454
|
+
</div>
|
|
455
|
+
<div class="icon-display">
|
|
456
|
+
<div class="icon-size">
|
|
457
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><line x1="2" y1="10" x2="18" y2="10" stroke="#2D7D9E" stroke-width="1"/><circle cx="4" cy="7" r="0.8" fill="#3994BC"/><line x1="7" y1="7" x2="9" y2="7" stroke="#3994BC" stroke-width="1.2"/><circle cx="12" cy="7" r="0.8" fill="#3994BC"/><line x1="15" y1="7" x2="17" y2="7" stroke="#3994BC" stroke-width="1.2"/><line x1="3" y1="13" x2="5" y2="13" stroke="#2D7D9E" stroke-width="1.2"/><circle cx="8" cy="13" r="0.8" fill="#2D7D9E"/><circle cx="11" cy="13" r="0.8" fill="#2D7D9E"/><line x1="14" y1="13" x2="16" y2="13" stroke="#2D7D9E" stroke-width="1.2"/></svg>
|
|
458
|
+
<span class="size-label">64 × 64 icon</span>
|
|
459
|
+
</div>
|
|
460
|
+
<div class="glyph-card">
|
|
461
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
462
|
+
<div class="glyph-cli"><span class="glyph">·−·</span><span class="tap">tap:</span> <span class="err">decoded: 3 errors in api.log</span></div>
|
|
463
|
+
</div>
|
|
464
|
+
</div>
|
|
465
|
+
</div>
|
|
466
|
+
|
|
467
|
+
<!-- 09 -->
|
|
468
|
+
<div class="iteration">
|
|
469
|
+
<div class="iteration-header">
|
|
470
|
+
<span class="iteration-number">09</span>
|
|
471
|
+
<div class="iteration-content">
|
|
472
|
+
<div class="category">Broadcast</div>
|
|
473
|
+
<div class="iteration-title">The Antenna — Signal Antenna</div>
|
|
474
|
+
<p class="interpretation">"Tap" means tuning into the right frequency from a chaotic spectrum of signals. Like adjusting a radio antenna to cut through static and lock onto a clear station, this extension filters background noise to surface the important data streams you need.</p>
|
|
475
|
+
<p class="approach">A vertical antenna with concentric signal arcs radiating outward, where one arc is highlighted to represent the filtered "locked-in" frequency. Clean geometric lines remain crisp at small sizes.</p>
|
|
476
|
+
</div>
|
|
477
|
+
</div>
|
|
478
|
+
<div class="icon-display">
|
|
479
|
+
<div class="icon-size">
|
|
480
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><line x1="10" y1="18" x2="10" y2="8" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><circle cx="10" cy="8" r="1" fill="#2D7D9E"/><path d="M 7 8 A 3 3 0 0 1 13 8" stroke="#2D7D9E" stroke-width="1.2" fill="none" stroke-linecap="round"/><path d="M 5 8 A 5 5 0 0 1 15 8" stroke="#3994BC" stroke-width="1.5" fill="none" stroke-linecap="round"/><path d="M 3 8 A 7 7 0 0 1 17 8" stroke="#2D7D9E" stroke-width="1.2" fill="none" stroke-linecap="round"/><rect x="8.5" y="15" width="3" height="3" fill="#2D7D9E" rx="0.5"/></svg>
|
|
481
|
+
<span class="size-label">64 × 64 icon</span>
|
|
482
|
+
</div>
|
|
483
|
+
<div class="glyph-card">
|
|
484
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
485
|
+
<div class="glyph-cli"><span class="glyph">Y))</span><span class="tap">tap:</span> <span class="msg">tuned to deploy.log — 1 active signal</span></div>
|
|
486
|
+
</div>
|
|
487
|
+
</div>
|
|
488
|
+
</div>
|
|
489
|
+
|
|
490
|
+
<!-- 10 -->
|
|
491
|
+
<div class="iteration">
|
|
492
|
+
<div class="iteration-header">
|
|
493
|
+
<span class="iteration-number">10</span>
|
|
494
|
+
<div class="iteration-content">
|
|
495
|
+
<div class="category">Detection</div>
|
|
496
|
+
<div class="iteration-title">The Sonar Ping</div>
|
|
497
|
+
<p class="interpretation">"Tap" is a sonar pulse sent into the chaotic depths of system output, detecting when something significant bounces back. Like a submarine's sonar, it cuts through the noise to pinpoint critical signals — errors, status changes, events that matter.</p>
|
|
498
|
+
<p class="approach">A radar sweep design with concentric circles representing the pulse waves, a rotating scan line from the center, and a bright signal dot detected on one of the rings. Clean stroke-based geometry.</p>
|
|
499
|
+
</div>
|
|
500
|
+
</div>
|
|
501
|
+
<div class="icon-display">
|
|
502
|
+
<div class="icon-size">
|
|
503
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="10" r="3" stroke="#2D7D9E" stroke-width="0.8" opacity="0.6"/><circle cx="10" cy="10" r="5.5" stroke="#2D7D9E" stroke-width="0.6" opacity="0.4"/><circle cx="10" cy="10" r="8" stroke="#2D7D9E" stroke-width="0.4" opacity="0.3"/><line x1="10" y1="10" x2="10" y2="2" stroke="#3994BC" stroke-width="0.8"/><line x1="10" y1="10" x2="16.5" y2="5.5" stroke="#3994BC" stroke-width="0.6" opacity="0.7"/><circle cx="14.9" cy="6.1" r="1" fill="#3994BC"/><circle cx="10" cy="10" r="0.8" fill="#2D7D9E"/></svg>
|
|
504
|
+
<span class="size-label">64 × 64 icon</span>
|
|
505
|
+
</div>
|
|
506
|
+
<div class="glyph-card">
|
|
507
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
508
|
+
<div class="glyph-cli"><span class="glyph">((•))</span><span class="tap">tap:</span> <span class="err">ping detected exit code 1 in run #4821</span></div>
|
|
509
|
+
</div>
|
|
510
|
+
</div>
|
|
511
|
+
</div>
|
|
512
|
+
|
|
513
|
+
<!-- 11 -->
|
|
514
|
+
<div class="iteration">
|
|
515
|
+
<div class="iteration-header">
|
|
516
|
+
<span class="iteration-number">11</span>
|
|
517
|
+
<div class="iteration-content">
|
|
518
|
+
<div class="category">Flow</div>
|
|
519
|
+
<div class="iteration-title">The Stream Fork</div>
|
|
520
|
+
<p class="interpretation">To me, "tap" means branching off from a main stream of data flow. Like a river fork where water splits, the extension creates a strategic diversion, capturing and redirecting important signals while letting the rest continue unnoticed.</p>
|
|
521
|
+
<p class="approach">A vertical flowing line that elegantly forks to the right. The main stream continues downward in a faded state while the branch curves prominently toward the viewer, symbolizing selective filtering and injection.</p>
|
|
522
|
+
</div>
|
|
523
|
+
</div>
|
|
524
|
+
<div class="icon-display">
|
|
525
|
+
<div class="icon-size">
|
|
526
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10 2 L10 8 L10 12 L10 18" stroke="#2D7D9E" stroke-width="1.5" opacity="0.4" stroke-linecap="round"/><path d="M10 2 L10 8" stroke="#2D7D9E" stroke-width="2" stroke-linecap="round"/><path d="M10 8 Q12 9 14 11 Q16 13 17 16" stroke="#3994BC" stroke-width="2.5" stroke-linecap="round" fill="none"/><circle cx="10" cy="8" r="1" fill="#3994BC"/></svg>
|
|
527
|
+
<span class="size-label">64 × 64 icon</span>
|
|
528
|
+
</div>
|
|
529
|
+
<div class="glyph-card">
|
|
530
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
531
|
+
<div class="glyph-cli"><span class="glyph">├></span><span class="tap">tap:</span> <span class="msg">branched off — 1 event injected</span></div>
|
|
532
|
+
</div>
|
|
533
|
+
</div>
|
|
534
|
+
</div>
|
|
535
|
+
|
|
536
|
+
<!-- 12 -->
|
|
537
|
+
<div class="iteration">
|
|
538
|
+
<div class="iteration-header">
|
|
539
|
+
<span class="iteration-number">12</span>
|
|
540
|
+
<div class="iteration-content">
|
|
541
|
+
<div class="category">Energy</div>
|
|
542
|
+
<div class="iteration-title">The Strike Mark</div>
|
|
543
|
+
<p class="interpretation">"Tap" means leaving a small mark when something hits. Most events glance off and disappear; the ones that matter strike home and register on every axis. The mark is the trace they leave — quick, locatable, hard to argue with.</p>
|
|
544
|
+
<p class="approach">Two crossed diagonal strokes form the strike itself, with four small accent dots at the cardinal positions to anchor the moment in space. Stroke-only and geometric — designed to read clearly even when reduced to a single character of inline text.</p>
|
|
545
|
+
</div>
|
|
546
|
+
</div>
|
|
547
|
+
<div class="icon-display">
|
|
548
|
+
<div class="icon-size">
|
|
549
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><line x1="5" y1="5" x2="15" y2="15" stroke="#2D7D9E" stroke-width="1.6" stroke-linecap="round"/><line x1="15" y1="5" x2="5" y2="15" stroke="#2D7D9E" stroke-width="1.6" stroke-linecap="round"/><circle cx="10" cy="3" r="0.8" fill="#3994BC"/><circle cx="17" cy="10" r="0.8" fill="#3994BC"/><circle cx="10" cy="17" r="0.8" fill="#3994BC"/><circle cx="3" cy="10" r="0.8" fill="#3994BC"/></svg>
|
|
550
|
+
<span class="size-label">64 × 64 icon</span>
|
|
551
|
+
</div>
|
|
552
|
+
<div class="glyph-card">
|
|
553
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
554
|
+
<div class="glyph-cli"><span class="glyph">※</span><span class="tap">tap:</span> <span class="err">build failed — exit code 1</span></div>
|
|
555
|
+
</div>
|
|
556
|
+
</div>
|
|
557
|
+
</div>
|
|
558
|
+
|
|
559
|
+
<!-- 13 -->
|
|
560
|
+
<div class="iteration">
|
|
561
|
+
<div class="iteration-header">
|
|
562
|
+
<span class="iteration-number">13</span>
|
|
563
|
+
<div class="iteration-content">
|
|
564
|
+
<div class="category">Perception</div>
|
|
565
|
+
<div class="iteration-title">The Watchman — Watchful Monitor</div>
|
|
566
|
+
<p class="interpretation">"Tap" means being the silent sentinel of your development environment. An ever-vigilant watchman monitors the constant stream of background events, filtering out the noise while keeping its focus sharp for the signals that truly matter.</p>
|
|
567
|
+
<p class="approach">A stylized eye with an alert, slightly off-center pupil to suggest active scanning. Signal lines radiating from the eye indicate monitoring capabilities, with a notification indicator showing readiness.</p>
|
|
568
|
+
</div>
|
|
569
|
+
</div>
|
|
570
|
+
<div class="icon-display">
|
|
571
|
+
<div class="icon-size">
|
|
572
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 10C2 10 5.5 4 10 4C14.5 4 18 10 18 10C18 10 14.5 16 10 16C5.5 16 2 10 2 10Z" stroke="#2D7D9E" stroke-width="1.5" stroke-linejoin="round"/><circle cx="11" cy="9.5" r="3" stroke="#2D7D9E" stroke-width="1.5" fill="none"/><circle cx="11.5" cy="9" r="1.2" fill="#3994BC"/><path d="M1 6L3 8" stroke="#3994BC" stroke-width="1" stroke-linecap="round"/><path d="M1 14L3 12" stroke="#3994BC" stroke-width="1" stroke-linecap="round"/><path d="M19 6L17 8" stroke="#3994BC" stroke-width="1" stroke-linecap="round"/><circle cx="16" cy="4" r="1.5" fill="#3994BC"/></svg>
|
|
573
|
+
<span class="size-label">64 × 64 icon</span>
|
|
574
|
+
</div>
|
|
575
|
+
<div class="glyph-card">
|
|
576
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
577
|
+
<div class="glyph-cli"><span class="glyph">◉</span><span class="tap">tap:</span> <span class="msg">watching 3 channels — 1 active</span></div>
|
|
578
|
+
</div>
|
|
579
|
+
</div>
|
|
580
|
+
</div>
|
|
581
|
+
|
|
582
|
+
<!-- 14 -->
|
|
583
|
+
<div class="iteration">
|
|
584
|
+
<div class="iteration-header">
|
|
585
|
+
<span class="iteration-number">14</span>
|
|
586
|
+
<div class="iteration-content">
|
|
587
|
+
<div class="category">Filtering</div>
|
|
588
|
+
<div class="iteration-title">The Sieve — Data Sieve</div>
|
|
589
|
+
<p class="interpretation">"Tap" is a fine mesh sieve cast into the data stream — most events pass through as noise, but the important signals get caught in the filter. The mesh itself represents the EventFilter rules that determine what stays and what flows away.</p>
|
|
590
|
+
<p class="approach">A circular sieve with a stroke-based grid pattern, showing small dots falling through the mesh while one or two larger dots are caught at intersections. The grid uses primary teal while caught signals use the brighter accent.</p>
|
|
591
|
+
</div>
|
|
592
|
+
</div>
|
|
593
|
+
<div class="icon-display">
|
|
594
|
+
<div class="icon-size">
|
|
595
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="10" r="8" stroke="#2D7D9E" stroke-width="1.2" fill="none"/><g stroke="#2D7D9E" stroke-width="0.8"><line x1="4" y1="6" x2="16" y2="6"/><line x1="4" y1="8.5" x2="16" y2="8.5"/><line x1="4" y1="11" x2="16" y2="11"/><line x1="4" y1="13.5" x2="16" y2="13.5"/><line y1="4" x1="6" y2="16" x2="6"/><line y1="4" x1="8.5" y2="16" x2="8.5"/><line y1="4" x1="11" y2="16" x2="11"/><line y1="4" x1="13.5" y2="16" x2="13.5"/></g><circle cx="8.5" cy="8.5" r="0.8" fill="#3994BC"/><circle cx="13.5" cy="11" r="0.7" fill="#3994BC"/></svg>
|
|
596
|
+
<span class="size-label">64 × 64 icon</span>
|
|
597
|
+
</div>
|
|
598
|
+
<div class="glyph-card">
|
|
599
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
600
|
+
<div class="glyph-cli"><span class="glyph">▦</span><span class="tap">tap:</span> <span class="msg">sieved 247 events → 3 caught</span></div>
|
|
601
|
+
</div>
|
|
602
|
+
</div>
|
|
603
|
+
</div>
|
|
604
|
+
|
|
605
|
+
<!-- 15 -->
|
|
606
|
+
<div class="iteration">
|
|
607
|
+
<div class="iteration-header">
|
|
608
|
+
<span class="iteration-number">15</span>
|
|
609
|
+
<div class="iteration-content">
|
|
610
|
+
<div class="category">Notification</div>
|
|
611
|
+
<div class="iteration-title">The Smart Bell</div>
|
|
612
|
+
<p class="interpretation">"Tap" is the intelligent bell that cuts through the noise — silent for hours until that one critical moment when it delivers a perfectly timed chime. It's selective notification at its finest, filtering out the chaos to surface only what truly matters.</p>
|
|
613
|
+
<p class="approach">A bell silhouette with dashed lines to represent its selective nature, paired with a single sound wave emanating from one side. Muted sections suggest intelligent filtering.</p>
|
|
614
|
+
</div>
|
|
615
|
+
</div>
|
|
616
|
+
<div class="icon-display">
|
|
617
|
+
<div class="icon-size">
|
|
618
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 12c0-3.5 2.5-6 4-6s4 2.5 4 6v1h-8v-1z" stroke="#2D7D9E" stroke-width="1.5" stroke-dasharray="2 1" stroke-linecap="round"/><path d="M5 13h10" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><path d="M10 15v1a1 1 0 0 1-2 0v-1" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><path d="M15 11c0.5-0.5 1-1 1.5-1" stroke="#3994BC" stroke-width="1" stroke-linecap="round"/><path d="M16 13c0.7-0.3 1.3-0.7 2-1" stroke="#3994BC" stroke-width="1" stroke-linecap="round"/></svg>
|
|
619
|
+
<span class="size-label">64 × 64 icon</span>
|
|
620
|
+
</div>
|
|
621
|
+
<div class="glyph-card">
|
|
622
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
623
|
+
<div class="glyph-cli"><span class="glyph">(!)</span><span class="tap">tap:</span> <span class="ok">PR #37 approved by @sarah</span></div>
|
|
624
|
+
</div>
|
|
625
|
+
</div>
|
|
626
|
+
</div>
|
|
627
|
+
|
|
628
|
+
<!-- 16 -->
|
|
629
|
+
<div class="iteration">
|
|
630
|
+
<div class="iteration-header">
|
|
631
|
+
<span class="iteration-number">16</span>
|
|
632
|
+
<div class="iteration-content">
|
|
633
|
+
<div class="category">Optics</div>
|
|
634
|
+
<div class="iteration-title">The Prism — Signal Prism</div>
|
|
635
|
+
<p class="interpretation">"Tap" is a prism that refracts the chaotic stream of development data into distinct, actionable signals. It transforms overwhelming noise of logs, events, and outputs into a clean spectrum where each type of information has its place and purpose.</p>
|
|
636
|
+
<p class="approach">A geometric triangular prism at the center with a single input beam from the left that splits into multiple output streams on the right. One output beam highlighted in the accent color represents the "injected" signal.</p>
|
|
637
|
+
</div>
|
|
638
|
+
</div>
|
|
639
|
+
<div class="icon-display">
|
|
640
|
+
<div class="icon-size">
|
|
641
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><polygon points="8,6 14,10 8,14" stroke="#2D7D9E" stroke-width="1.5" fill="none"/><line x1="2" y1="10" x2="8" y2="10" stroke="#2D7D9E" stroke-width="1.5"/><line x1="14" y1="10" x2="18" y2="8" stroke="#2D7D9E" stroke-width="1.2"/><line x1="14" y1="10" x2="18" y2="10" stroke="#3994BC" stroke-width="1.8"/><line x1="14" y1="10" x2="18" y2="12" stroke="#2D7D9E" stroke-width="1.2"/><line x1="14" y1="10" x2="17.5" y2="14" stroke="#2D7D9E" stroke-width="1"/></svg>
|
|
642
|
+
<span class="size-label">64 × 64 icon</span>
|
|
643
|
+
</div>
|
|
644
|
+
<div class="glyph-card">
|
|
645
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
646
|
+
<div class="glyph-cli"><span class="glyph">▷⫶</span><span class="tap">tap:</span> <span class="msg">split log stream into 3 channels</span></div>
|
|
647
|
+
</div>
|
|
648
|
+
</div>
|
|
649
|
+
</div>
|
|
650
|
+
|
|
651
|
+
<!-- 17 -->
|
|
652
|
+
<div class="iteration">
|
|
653
|
+
<div class="iteration-header">
|
|
654
|
+
<span class="iteration-number">17</span>
|
|
655
|
+
<div class="iteration-content">
|
|
656
|
+
<div class="category">Zen</div>
|
|
657
|
+
<div class="iteration-title">The Ripple — Signal Drop</div>
|
|
658
|
+
<p class="interpretation">"Tap" represents the precise moment when a meaningful signal breaks through the noise — like a single drop creating perfect ripples in still water. It's about capturing that transformative instant when background chaos becomes focused insight.</p>
|
|
659
|
+
<p class="approach">Concentric circles radiating from a center point with decreasing opacity to show ripples fading outward. A small teardrop above the center represents the incoming event. Minimalist, zen-like geometry.</p>
|
|
660
|
+
</div>
|
|
661
|
+
</div>
|
|
662
|
+
<div class="icon-display">
|
|
663
|
+
<div class="icon-size">
|
|
664
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="11" r="1.5" stroke="#2D7D9E" stroke-width="0.4" opacity="1"/><circle cx="10" cy="11" r="3" stroke="#2D7D9E" stroke-width="0.3" opacity="0.7"/><circle cx="10" cy="11" r="4.5" stroke="#2D7D9E" stroke-width="0.25" opacity="0.4"/><circle cx="10" cy="11" r="6" stroke="#2D7D9E" stroke-width="0.2" opacity="0.2"/><path d="M10 7C9.5 7 9.2 7.4 9.2 7.8C9.2 8.4 10 9.5 10 9.5S10.8 8.4 10.8 7.8C10.8 7.4 10.5 7 10 7Z" fill="#3994BC"/></svg>
|
|
665
|
+
<span class="size-label">64 × 64 icon</span>
|
|
666
|
+
</div>
|
|
667
|
+
<div class="glyph-card">
|
|
668
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
669
|
+
<div class="glyph-cli"><span class="glyph">◌</span><span class="tap">tap:</span> <span class="msg">1 event rippled through filter</span></div>
|
|
670
|
+
</div>
|
|
671
|
+
</div>
|
|
672
|
+
</div>
|
|
673
|
+
|
|
674
|
+
<!-- 18 -->
|
|
675
|
+
<div class="iteration">
|
|
676
|
+
<div class="iteration-header">
|
|
677
|
+
<span class="iteration-number">18</span>
|
|
678
|
+
<div class="iteration-content">
|
|
679
|
+
<div class="category">Medical</div>
|
|
680
|
+
<div class="iteration-title">The Stethoscope — Diagnostic Stethoscope</div>
|
|
681
|
+
<p class="interpretation">"Tap" is diagnostic listening — placing your ear on the system to hear its heartbeat through layers of noise. Like a stethoscope filtering body sounds to detect arrhythmias, the extension listens for critical signals while ignoring normal operational beats.</p>
|
|
682
|
+
<p class="approach">A simplified stethoscope with curved earpieces, connecting tube, and chest piece touching a monitored surface. Clean stroke-based design with medical precision and smooth curves.</p>
|
|
683
|
+
</div>
|
|
684
|
+
</div>
|
|
685
|
+
<div class="icon-display">
|
|
686
|
+
<div class="icon-size">
|
|
687
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 4C3 2.5 4 2 5 2C6 2 7 2.5 7 4C7 5 6.5 6 5.5 6.5" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round"/><path d="M13 4C13 2.5 14 2 15 2C16 2 17 2.5 17 4C17 5 16.5 6 15.5 6.5" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round"/><path d="M5.5 6.5C6.5 7 8 7.5 10 8.5C12 9.5 13.5 7 14.5 6.5" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round" fill="none"/><path d="M10 8.5L10 13" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round"/><circle cx="10" cy="15" r="2" stroke="#3994BC" stroke-width="1.5" fill="none"/><line x1="6" y1="18" x2="14" y2="18" stroke="#3994BC" stroke-width="1" opacity="0.6"/></svg>
|
|
688
|
+
<span class="size-label">64 × 64 icon</span>
|
|
689
|
+
</div>
|
|
690
|
+
<div class="glyph-card">
|
|
691
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
692
|
+
<div class="glyph-cli"><span class="glyph">⌒○</span><span class="tap">tap:</span> <span class="msg">irregular pattern in api.log</span></div>
|
|
693
|
+
</div>
|
|
694
|
+
</div>
|
|
695
|
+
</div>
|
|
696
|
+
|
|
697
|
+
<!-- 19 -->
|
|
698
|
+
<div class="iteration">
|
|
699
|
+
<div class="iteration-header">
|
|
700
|
+
<span class="iteration-number">19</span>
|
|
701
|
+
<div class="iteration-content">
|
|
702
|
+
<div class="category">Time</div>
|
|
703
|
+
<div class="iteration-title">The Hourglass — Time Filter</div>
|
|
704
|
+
<p class="interpretation">"Tap" represents the flow of time and data streams, where events continuously pass through like sand in an hourglass. The narrow filter point allows only relevant signals to reach your coding environment.</p>
|
|
705
|
+
<p class="approach">An hourglass silhouette with geometric precision, showing abundant data particles above the constriction and selective, highlighted events below. The minimalist stroke design emphasizes the filtering action at the narrow waist.</p>
|
|
706
|
+
</div>
|
|
707
|
+
</div>
|
|
708
|
+
<div class="icon-display">
|
|
709
|
+
<div class="icon-size">
|
|
710
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 2h10v2.8c0 1.2-.8 2-2 2.8L10 10l3 2.4c1.2.8 2 1.6 2 2.8V18H5v-2c0-1.2.8-2 2-2.8L10 10 7 7.6C5.8 6.8 5 6 5 4.8V2z" stroke="#2D7D9E" stroke-width="1.2" stroke-linejoin="round"/><circle cx="8" cy="3.6" r="0.7" fill="#3994BC"/><circle cx="10.5" cy="4.2" r="0.5" fill="#3994BC"/><circle cx="12" cy="3.8" r="0.6" fill="#3994BC"/><circle cx="9.5" cy="5.4" r="0.4" fill="#3994BC"/><circle cx="11.5" cy="5.2" r="0.4" fill="#3994BC"/><circle cx="9" cy="14.5" r="0.7" fill="#2D7D9E"/><circle cx="11" cy="15.2" r="0.5" fill="#2D7D9E"/></svg>
|
|
711
|
+
<span class="size-label">64 × 64 icon</span>
|
|
712
|
+
</div>
|
|
713
|
+
<div class="glyph-card">
|
|
714
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
715
|
+
<div class="glyph-cli"><span class="glyph">⧖</span><span class="tap">tap:</span> <span class="msg">30s window — 3 events caught</span></div>
|
|
716
|
+
</div>
|
|
717
|
+
</div>
|
|
718
|
+
</div>
|
|
719
|
+
|
|
720
|
+
<!-- 20 -->
|
|
721
|
+
<div class="iteration">
|
|
722
|
+
<div class="iteration-header">
|
|
723
|
+
<span class="iteration-number">20</span>
|
|
724
|
+
<div class="iteration-content">
|
|
725
|
+
<div class="category">Focus</div>
|
|
726
|
+
<div class="iteration-title">The Telescope — Signal Telescope</div>
|
|
727
|
+
<p class="interpretation">To me, "tap" represents a telescope that peers through the vast noise of background processes to bring distant, important signals into sharp focus. It's about having the right tool to see what matters when everything else is just blurred static in the distance.</p>
|
|
728
|
+
<p class="approach">A clean, stroke-based telescope with concentric focusing rings at the lens end and a small star visible through the scope. The design emphasizes zooming in on signal through noise, using simple geometric forms.</p>
|
|
729
|
+
</div>
|
|
730
|
+
</div>
|
|
731
|
+
<div class="icon-display">
|
|
732
|
+
<div class="icon-size">
|
|
733
|
+
<svg width="64" height="64" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 10h12" stroke="#2D7D9E" stroke-width="1.5" stroke-linecap="round"/><circle cx="15.5" cy="10" r="3" stroke="#2D7D9E" stroke-width="1.5" fill="none"/><circle cx="15.5" cy="10" r="2" stroke="#3994BC" stroke-width="0.8" fill="none"/><circle cx="15.5" cy="10" r="1" stroke="#3994BC" stroke-width="0.6" fill="none"/><circle cx="2" cy="10" r="1.2" stroke="#2D7D9E" stroke-width="1.2" fill="none"/><circle cx="15.5" cy="10" r="0.3" fill="#3994BC"/></svg>
|
|
734
|
+
<span class="size-label">64 × 64 icon</span>
|
|
735
|
+
</div>
|
|
736
|
+
<div class="glyph-card">
|
|
737
|
+
<span class="glyph-tag">Terminal prefix</span>
|
|
738
|
+
<div class="glyph-cli"><span class="glyph">─○</span><span class="tap">tap:</span> <span class="msg">zoomed in on test run #4821</span></div>
|
|
739
|
+
</div>
|
|
740
|
+
</div>
|
|
741
|
+
</div>
|
|
742
|
+
|
|
743
|
+
</div><!-- /.iterations-grid -->
|
|
744
|
+
|
|
745
|
+
<hr class="divider">
|
|
746
|
+
|
|
747
|
+
<!-- ═══ THEMES ═══ -->
|
|
748
|
+
<h2>Recurring Themes</h2>
|
|
749
|
+
|
|
750
|
+
<p><strong class="highlight">Filtering.</strong> The strongest cluster — funnel, sieve, prism, hourglass — all different shapes for the same idea: separating signal from noise. This is the core function of the extension.</p>
|
|
751
|
+
|
|
752
|
+
<p><strong class="highlight">Monitoring.</strong> Wire tap, watchman, sonar, antenna, heartbeat — the extension as a silent observer. It watches so you don't have to, and only speaks when something changes.</p>
|
|
753
|
+
|
|
754
|
+
<p><strong class="highlight">Flow control.</strong> Water tap, pipeline valve, stream fork — the extension as a mechanism that controls what passes through. You adjust the EventFilter like turning a valve.</p>
|
|
755
|
+
|
|
756
|
+
<p><strong class="highlight">Gentle interruption.</strong> Finger tap, smart bell, ripple — the extension as a polite notifier. It doesn't scream; it taps your shoulder.</p>
|
|
757
|
+
|
|
758
|
+
<p><strong class="highlight">Extraction.</strong> Maple tap, tree tap, strike mark — the extension reaches into raw sources and pulls out what's valuable. Most of the source is noise; the extract is signal.</p>
|
|
759
|
+
|
|
760
|
+
<hr class="divider">
|
|
761
|
+
|
|
762
|
+
<!-- ═══ CONVERGENCE ═══ -->
|
|
763
|
+
<h2>Convergence — Why ※</h2>
|
|
764
|
+
<h3 class="section-lede">After 20 explorations, three patterns showed up across the strongest entries.</h3>
|
|
765
|
+
|
|
766
|
+
<div class="section-body">
|
|
767
|
+
<p><strong>Diagonal strokes carry intersection energy.</strong> The strike, the prism splitting, the wire tap branching off — all read as "something crossed paths here."</p>
|
|
768
|
+
<p><strong>Cardinal dots read as captured signals at any size.</strong> Sonar ping, strike mark, sieve. Four points fix a moment in space.</p>
|
|
769
|
+
<p><strong>No literal metaphor survived as a single character in a terminal.</strong> Faucets, hourglasses, antennas — they need too much detail to read at 12px monospace. Only the abstract marks scaled.</p>
|
|
770
|
+
<p>The ※ Reference Mark (U+203B) already encodes the first two: an X with four cardinal dots, in one Unicode codepoint. It renders in every monospace font. It literally means <em>"look here, this matters."</em> The icon and the glyph become the same character — which is what we needed all along.</p>
|
|
771
|
+
<p>Iteration 12 (Strike Mark) was the closest precursor: same X, same four dots. The convergence wasn't a leap — it was recognizing what the strongest exploration had already found.</p>
|
|
772
|
+
</div>
|
|
773
|
+
|
|
774
|
+
<hr class="divider">
|
|
775
|
+
|
|
776
|
+
<!-- ═══ GEN 21: THE ※ MARK ═══ -->
|
|
777
|
+
<h2>Gen 21 — The ※ Reference Mark</h2>
|
|
778
|
+
<h3>One character. Ten icons.</h3>
|
|
779
|
+
|
|
780
|
+
<p>After 20 metaphor explorations, the identity converged on a single Unicode character: <strong style="font-size: 26px; color: var(--text-strong); line-height: 1;">※</strong> (U+203B, Reference Mark). It's perfect — it literally means "look here, this is a reference to something important." That's exactly what tap does: it references the important events from background noise.</p>
|
|
781
|
+
|
|
782
|
+
<p>The ※ shape is an <strong>X</strong> — two diagonal strokes — with <strong>dots at the four cardinal positions</strong> (top, bottom, left, right), nestled between the arms. The diagonals are the streams being monitored. The dots are the signals captured at each compass point.</p>
|
|
783
|
+
|
|
784
|
+
<blockquote>The mark says: "I noticed something. Look here."</blockquote>
|
|
785
|
+
|
|
786
|
+
<div class="icon-row" style="margin-top: 32px;">
|
|
787
|
+
<!-- 1: Pure ※ -->
|
|
788
|
+
<div class="icon-cell">
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="64" height="64">
|
|
795
|
+
<defs><linearGradient id="i1-xgrad" x1="0" y1="0" x2="1" y2="1"><stop offset="0%" stop-color="#3994BC"/><stop offset="100%" stop-color="#2D7D9E"/></linearGradient></defs>
|
|
796
|
+
<path d="M5.8 5.8 L14.2 14.2" stroke="url(#i1-xgrad)" stroke-width="2.5" stroke-linecap="round" fill="none"/>
|
|
797
|
+
<path d="M14.2 5.8 L5.8 14.2" stroke="url(#i1-xgrad)" stroke-width="2.5" stroke-linecap="round" fill="none"/>
|
|
798
|
+
<circle cx="10" cy="4.0" r="1.9" fill="#3994BC"/><circle cx="16.0" cy="10" r="1.9" fill="#3994BC"/><circle cx="10" cy="16.0" r="1.9" fill="#2D7D9E"/><circle cx="4.0" cy="10" r="1.9" fill="#2D7D9E"/>
|
|
799
|
+
</svg>
|
|
800
|
+
<span class="icon-label">Pure ※</span>
|
|
801
|
+
</div>
|
|
802
|
+
<!-- 2: ※ in Circle -->
|
|
803
|
+
<div class="icon-cell">
|
|
804
|
+
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="64" height="64">
|
|
810
|
+
<circle cx="10" cy="10" r="7.5" stroke="#2D7D9E" stroke-width="1.4" fill="none" stroke-linecap="round"/>
|
|
811
|
+
<line x1="14.8" y1="4.7" x2="15.8" y2="3.7" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round" opacity="0.7"/>
|
|
812
|
+
<line x1="15.0" y1="15.0" x2="16.0" y2="16.0" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round" opacity="0.7"/>
|
|
813
|
+
<line x1="4.7" y1="14.8" x2="3.7" y2="15.8" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round" opacity="0.7"/>
|
|
814
|
+
<line x1="5.0" y1="5.0" x2="4.0" y2="4.0" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round" opacity="0.7"/>
|
|
815
|
+
<path d="M6.2 6.2 L13.8 13.8" stroke="#3994BC" stroke-width="2.0" stroke-linecap="round" fill="none"/>
|
|
816
|
+
<path d="M13.8 6.2 L6.2 13.8" stroke="#3994BC" stroke-width="2.0" stroke-linecap="round" fill="none"/>
|
|
817
|
+
<circle cx="10" cy="2.5" r="1.3" fill="#3994BC"/><circle cx="17.5" cy="10" r="1.3" fill="#3994BC"/><circle cx="10" cy="17.5" r="1.3" fill="#2D7D9E"/><circle cx="2.5" cy="10" r="1.3" fill="#2D7D9E"/>
|
|
818
|
+
</svg>
|
|
819
|
+
<span class="icon-label">※ in Circle</span>
|
|
820
|
+
</div>
|
|
821
|
+
<!-- 3: ※ Pulse — EKG waveform replaces one diagonal -->
|
|
822
|
+
<div class="icon-cell">
|
|
823
|
+
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
|
|
827
|
+
|
|
828
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="64" height="64">
|
|
829
|
+
<defs><linearGradient id="i3-ekg" x1="0" y1="0" x2="1" y2="1"><stop offset="0%" stop-color="#5BB8DA"/><stop offset="100%" stop-color="#3994BC"/></linearGradient></defs>
|
|
830
|
+
<path d="M15.5 4.5 L4.5 15.5" stroke="#2D7D9E" stroke-width="1.8" stroke-linecap="round" fill="none"/>
|
|
831
|
+
<path d="M4.5 4.5 L8.5 8.5 L8.2 11.5 L11.0 9.0 L11.5 11.5 L15.5 15.5" stroke="url(#i3-ekg)" stroke-width="2.0" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
|
|
832
|
+
<circle cx="10" cy="4.0" r="1.5" fill="#5BB8DA"/><circle cx="16.0" cy="10" r="1.5" fill="#3994BC"/><circle cx="10" cy="16.0" r="1.5" fill="#2D7D9E"/><circle cx="4.0" cy="10" r="1.5" fill="#2D7D9E"/>
|
|
833
|
+
</svg>
|
|
834
|
+
<span class="icon-label">※ Pulse</span>
|
|
835
|
+
</div>
|
|
836
|
+
<!-- 4: ※ Radar -->
|
|
837
|
+
<div class="icon-cell">
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="64" height="64">
|
|
844
|
+
<circle cx="10" cy="10" r="3.5" stroke="#2D7D9E" stroke-width="0.7" fill="none" opacity="0.35"/>
|
|
845
|
+
<circle cx="10" cy="10" r="6" stroke="#2D7D9E" stroke-width="0.7" fill="none" opacity="0.35"/>
|
|
846
|
+
<circle cx="10" cy="10" r="8.5" stroke="#2D7D9E" stroke-width="0.7" fill="none" opacity="0.35"/>
|
|
847
|
+
<path d="M10 10 L4.34 4.34 A8.5 8.5 0 0 1 10 1.5 Z" fill="#3994BC" opacity="0.30"/>
|
|
848
|
+
<line x1="10" y1="10" x2="5" y2="5" stroke="#5BB8DA" stroke-width="1.5" stroke-linecap="round" opacity="0.9"/>
|
|
849
|
+
<path d="M5.8 5.8 L14.2 14.2" stroke="#2D7D9E" stroke-width="1.8" stroke-linecap="round" fill="none"/>
|
|
850
|
+
<path d="M14.2 5.8 L5.8 14.2" stroke="#2D7D9E" stroke-width="1.8" stroke-linecap="round" fill="none"/>
|
|
851
|
+
<circle cx="10" cy="4.0" r="1.3" fill="#3994BC"/><circle cx="16.0" cy="10" r="1.3" fill="#3994BC"/><circle cx="10" cy="16.0" r="1.3" fill="#2D7D9E"/><circle cx="4.0" cy="10" r="1.3" fill="#2D7D9E"/>
|
|
852
|
+
<circle cx="5.5" cy="5" r="0.9" fill="#5BB8DA" opacity="0.8"/>
|
|
853
|
+
</svg>
|
|
854
|
+
<span class="icon-label">※ Radar</span>
|
|
855
|
+
</div>
|
|
856
|
+
<!-- 5: ※ Tap Point — mark at a wire junction -->
|
|
857
|
+
<div class="icon-cell">
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
|
|
861
|
+
|
|
862
|
+
|
|
863
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="64" height="64">
|
|
864
|
+
<line x1="0.5" y1="9" x2="19.5" y2="9" stroke="#2D7D9E" stroke-width="1.0" stroke-linecap="round" opacity="0.4"/>
|
|
865
|
+
<line x1="0.5" y1="11" x2="19.5" y2="11" stroke="#2D7D9E" stroke-width="1.0" stroke-linecap="round" opacity="0.4"/>
|
|
866
|
+
<path d="M2.5 9.5 L4 10 L2.5 10.5" stroke="#3994BC" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" fill="none" opacity="0.6"/>
|
|
867
|
+
<path d="M15.5 9.5 L17 10 L15.5 10.5" stroke="#3994BC" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" fill="none" opacity="0.6"/>
|
|
868
|
+
<path d="M5.5 5.5 L14.5 14.5" stroke="#3994BC" stroke-width="2.2" stroke-linecap="round" fill="none"/>
|
|
869
|
+
<path d="M14.5 5.5 L5.5 14.5" stroke="#3994BC" stroke-width="2.2" stroke-linecap="round" fill="none"/>
|
|
870
|
+
<circle cx="10" cy="4.0" r="1.6" fill="#3994BC"/><circle cx="16.0" cy="10" r="1.6" fill="#3994BC"/><circle cx="10" cy="16.0" r="1.6" fill="#2D7D9E"/><circle cx="4.0" cy="10" r="1.6" fill="#2D7D9E"/>
|
|
871
|
+
</svg>
|
|
872
|
+
<span class="icon-label">※ Tap Point</span>
|
|
873
|
+
</div>
|
|
874
|
+
</div>
|
|
875
|
+
|
|
876
|
+
<div class="icon-row">
|
|
877
|
+
<!-- 6: ※ Signal — one dot broadcasting -->
|
|
878
|
+
<div class="icon-cell">
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="64" height="64">
|
|
885
|
+
<circle cx="10" cy="3.5" r="3.5" fill="#3994BC" opacity="0.2"/>
|
|
886
|
+
<path d="M6 3.5 A4 4 0 0 1 14 3.5" stroke="#5BB8DA" stroke-width="1.2" stroke-linecap="round" fill="none" opacity="0.5"/>
|
|
887
|
+
<path d="M7.5 3.5 A2.5 2.5 0 0 1 12.5 3.5" stroke="#5BB8DA" stroke-width="1.2" stroke-linecap="round" fill="none" opacity="0.6"/>
|
|
888
|
+
<path d="M5.8 5.8 L14.2 14.2" stroke="#2D7D9E" stroke-width="2.0" stroke-linecap="round" fill="none"/>
|
|
889
|
+
<path d="M14.2 5.8 L5.8 14.2" stroke="#2D7D9E" stroke-width="2.0" stroke-linecap="round" fill="none"/>
|
|
890
|
+
<circle cx="10" cy="3.5" r="2.0" fill="#5BB8DA"/>
|
|
891
|
+
<circle cx="16.0" cy="10" r="1.0" fill="#2D7D9E" opacity="0.4"/><circle cx="10" cy="16.0" r="1.0" fill="#2D7D9E" opacity="0.4"/><circle cx="4.0" cy="10" r="1.0" fill="#2D7D9E" opacity="0.4"/>
|
|
892
|
+
</svg>
|
|
893
|
+
<span class="icon-label">※ Signal</span>
|
|
894
|
+
</div>
|
|
895
|
+
<!-- 7: ※ Filter — noise in from top, signal out bottom -->
|
|
896
|
+
<div class="icon-cell">
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="64" height="64">
|
|
903
|
+
<defs><linearGradient id="i7-out" x1="0.5" y1="0" x2="0.5" y2="1"><stop offset="0%" stop-color="#3994BC"/><stop offset="100%" stop-color="#5BB8DA"/></linearGradient></defs>
|
|
904
|
+
<line x1="3" y1="0.5" x2="8" y2="4.5" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round" opacity="0.35"/>
|
|
905
|
+
<line x1="6" y1="0" x2="9" y2="4" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round" opacity="0.4"/>
|
|
906
|
+
<line x1="10" y1="0" x2="10" y2="4.5" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round" opacity="0.5" stroke-dasharray="1.5 1"/>
|
|
907
|
+
<line x1="14" y1="0" x2="11" y2="4" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round" opacity="0.4"/>
|
|
908
|
+
<line x1="17" y1="0.5" x2="12" y2="4.5" stroke="#2D7D9E" stroke-width="1.2" stroke-linecap="round" opacity="0.35"/>
|
|
909
|
+
<path d="M5.5 5.5 L14.5 14.5" stroke="#3994BC" stroke-width="2.0" stroke-linecap="round" fill="none"/>
|
|
910
|
+
<path d="M14.5 5.5 L5.5 14.5" stroke="#3994BC" stroke-width="2.0" stroke-linecap="round" fill="none"/>
|
|
911
|
+
<circle cx="10" cy="4.5" r="1.5" fill="#3994BC"/><circle cx="15.5" cy="10" r="1.5" fill="#3994BC"/><circle cx="10" cy="15.5" r="1.5" fill="#3994BC"/><circle cx="4.5" cy="10" r="1.5" fill="#3994BC"/>
|
|
912
|
+
<line x1="10" y1="15.5" x2="10" y2="19.5" stroke="#3994BC" stroke-width="4" stroke-linecap="round" opacity="0.1"/>
|
|
913
|
+
<line x1="10" y1="15.5" x2="10" y2="19.5" stroke="url(#i7-out)" stroke-width="2.2" stroke-linecap="round" opacity="0.9"/>
|
|
914
|
+
</svg>
|
|
915
|
+
<span class="icon-label">※ Filter</span>
|
|
916
|
+
</div>
|
|
917
|
+
<!-- 8: ※ Ripple -->
|
|
918
|
+
<div class="icon-cell">
|
|
919
|
+
|
|
920
|
+
|
|
921
|
+
|
|
922
|
+
|
|
923
|
+
|
|
924
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="64" height="64">
|
|
925
|
+
<circle cx="10" cy="10" r="9.5" stroke="#2D7D9E" stroke-width="0.5" fill="none" opacity="0.2"/>
|
|
926
|
+
<circle cx="10" cy="10" r="7.0" stroke="#2D7D9E" stroke-width="0.7" fill="none" opacity="0.35"/>
|
|
927
|
+
<circle cx="10" cy="10" r="4.5" stroke="#3994BC" stroke-width="1.0" fill="none" opacity="0.55"/>
|
|
928
|
+
<path d="M5.8 5.8 L14.2 14.2" stroke="#2D7D9E" stroke-width="2.2" stroke-linecap="round" fill="none"/>
|
|
929
|
+
<path d="M14.2 5.8 L5.8 14.2" stroke="#2D7D9E" stroke-width="2.2" stroke-linecap="round" fill="none"/>
|
|
930
|
+
<circle cx="10" cy="4.0" r="1.6" fill="#3994BC"/><circle cx="16.0" cy="10" r="1.6" fill="#3994BC"/><circle cx="10" cy="16.0" r="1.6" fill="#2D7D9E"/><circle cx="4.0" cy="10" r="1.6" fill="#2D7D9E"/>
|
|
931
|
+
</svg>
|
|
932
|
+
<span class="icon-label">※ Ripple</span>
|
|
933
|
+
</div>
|
|
934
|
+
<!-- 9: ※ Badge — rounded square -->
|
|
935
|
+
<div class="icon-cell">
|
|
936
|
+
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="64" height="64">
|
|
942
|
+
<defs><linearGradient id="i9-bg" x1="0.5" y1="0" x2="0.5" y2="1"><stop offset="0%" stop-color="#3994BC"/><stop offset="100%" stop-color="#256D8A"/></linearGradient></defs>
|
|
943
|
+
<rect x="1.5" y="1.5" width="17" height="17" rx="3.8" fill="url(#i9-bg)"/>
|
|
944
|
+
<line x1="5" y1="2.5" x2="15" y2="2.5" stroke="white" stroke-width="0.5" stroke-linecap="round" opacity="0.2"/>
|
|
945
|
+
<path d="M6.2 6.2 L13.8 13.8" stroke="#D0ECF5" stroke-width="1.8" stroke-linecap="round" fill="none"/>
|
|
946
|
+
<path d="M13.8 6.2 L6.2 13.8" stroke="#D0ECF5" stroke-width="1.8" stroke-linecap="round" fill="none"/>
|
|
947
|
+
<circle cx="10" cy="4.5" r="1.15" fill="white" opacity="0.9"/><circle cx="15.5" cy="10" r="1.15" fill="white" opacity="0.9"/><circle cx="10" cy="15.5" r="1.15" fill="white" opacity="0.9"/><circle cx="4.5" cy="10" r="1.15" fill="white" opacity="0.9"/>
|
|
948
|
+
</svg>
|
|
949
|
+
<span class="icon-label">※ Badge</span>
|
|
950
|
+
</div>
|
|
951
|
+
<!-- 10: ※ Minimal -->
|
|
952
|
+
<div class="icon-cell">
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
|
|
958
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="64" height="64">
|
|
959
|
+
<path d="M6.0 6.0 L14.0 14.0" stroke="#297AA0" stroke-width="1.6" stroke-linecap="round" fill="none"/>
|
|
960
|
+
<path d="M14.0 6.0 L6.0 14.0" stroke="#297AA0" stroke-width="1.6" stroke-linecap="round" fill="none"/>
|
|
961
|
+
<circle cx="10" cy="4.2" r="0.8" fill="#297AA0"/><circle cx="15.8" cy="10" r="0.8" fill="#297AA0"/><circle cx="10" cy="15.8" r="0.8" fill="#297AA0"/><circle cx="4.2" cy="10" r="0.8" fill="#297AA0"/>
|
|
962
|
+
</svg>
|
|
963
|
+
<span class="icon-label">※ Minimal</span>
|
|
964
|
+
</div>
|
|
965
|
+
</div>
|
|
966
|
+
|
|
967
|
+
<div class="decision">
|
|
968
|
+
<strong>Why ※ works for tap:</strong>
|
|
969
|
+
<p>It literally means "reference mark" — a typographic symbol that says <em>"look here, this matters."</em> That's exactly what an injected event does. The X strokes are the streams being monitored from all angles. The four cardinal dots are signals captured between the streams — one for each EventFilter outcome: drop, keep, surface, inject. In the CLI, it's just <code>※ tap:</code> — distinctive, compact, and impossible to confuse with anything else.</p>
|
|
970
|
+
</div>
|
|
971
|
+
|
|
972
|
+
<h2>In the CLI</h2>
|
|
973
|
+
<h3>How ※ looks as a message prefix</h3>
|
|
974
|
+
|
|
975
|
+
<div class="cli">
|
|
976
|
+
<span class="prompt">❯</span> <span class="input">working on auth module...</span><br>
|
|
977
|
+
<br>
|
|
978
|
+
<span class="tap">※ tap:</span> <span class="err">Build failed on run #4821 — exit code 1</span><br>
|
|
979
|
+
<span class="tap">※ tap:</span> <span class="ok">PR #37 approved by @sarah</span><br>
|
|
980
|
+
<span class="tap">※ tap:</span> <span class="err">3 new errors in api.log</span><br>
|
|
981
|
+
<br>
|
|
982
|
+
<span class="prompt">❯</span> <span class="cursor">█</span>
|
|
983
|
+
</div>
|
|
984
|
+
|
|
985
|
+
<p class="colophon">April 2026. 20 agents. 20 metaphors. 10 ※ variations. One mark: <em>※ tap</em>.</p>
|
|
986
|
+
|
|
987
|
+
</div>
|
|
988
|
+
</body>
|
|
989
|
+
</html>
|