@telepath-computer/television 0.1.206 → 0.1.208
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/dist/canonical/v1/components.js +1 -258
- package/dist/canonical/v1/styles.css +372 -312
- package/dist/cli.cjs +3749 -3629
- package/dist/onboarding/README.md +17 -12
- package/dist/onboarding/business-ops/about.html +4 -8
- package/dist/onboarding/business-ops/retention-vs-releases.html +0 -9
- package/dist/onboarding/business-ops/revenue-vs-goals.html +0 -11
- package/dist/onboarding/onboarding-channels.json +114 -0
- package/dist/onboarding/productivity/about.html +4 -8
- package/dist/onboarding/productivity/company-todos/index.html +0 -3
- package/dist/onboarding/productivity/company-todos/task.css +3 -3
- package/dist/onboarding/productivity/company-todos/task.js +1 -4
- package/dist/onboarding/productivity/meeting-prep.html +0 -7
- package/dist/onboarding/productivity/priorities-today.html +0 -7
- package/dist/onboarding/productivity/todays-calendar/calendar.js +327 -643
- package/dist/onboarding/productivity/todays-calendar/index.html +0 -4
- package/dist/onboarding/research/about.html +5 -9
- package/dist/onboarding/research/open-model-research.html +0 -9
- package/dist/onboarding/research/todays-news.html +3 -10
- package/dist/onboarding/tv-guide/welcome/index.html +5 -5
- package/dist/skills/television/SKILL.md +180 -136
- package/dist/skills/tv-calendar/calendar.js +327 -643
- package/dist/skills/tv-tasks/SKILL.md +10 -9
- package/dist/skills/tv-tasks/task.css +5 -6
- package/dist/skills/tv-tasks/task.js +2 -5
- package/dist/skills/tv-theme/SKILL.md +293 -193
- package/dist/views/artifact-missing/index.html +125 -60
- package/dist/views/markdown/index.html +22 -45
- package/dist/web/assets/artifact-bridge-BXDhGuL-.js +1 -0
- package/dist/web/assets/{artifactMissing-DY3nzD0p.js → artifactMissing-9rcTXhkH.js} +1 -1
- package/dist/web/assets/main-Blg8fuaV.css +1 -0
- package/dist/web/assets/main-C15ixkrL.js +593 -0
- package/dist/web/assets/{urlUnsupported-B2K6eB7H.js → urlUnsupported-kgq7Zh2V.js} +1 -1
- package/dist/web/index.html +4 -3
- package/dist/web/views/artifact-missing/index.html +125 -60
- package/dist/web/views/url-unsupported/index.html +127 -74
- package/package.json +2 -2
- package/dist/onboarding/onboarding-screens.json +0 -167
- package/dist/skills/tv-calendar/THIRD-PARTY-NOTICES.txt +0 -36
- package/dist/web/assets/artifact-bridge-BhiFDvPj.js +0 -1
- package/dist/web/assets/main-5017mprd.css +0 -1
- package/dist/web/assets/main-DdeZRdEy.js +0 -865
- /package/dist/canonical/v1/fonts/{Hind-Variable.woff2 → Hind-Variable.933e9900.woff2} +0 -0
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
# Onboarding content — replacement contract
|
|
2
2
|
|
|
3
|
-
This tree deliberately mixes provenance: baked
|
|
4
|
-
|
|
3
|
+
This tree deliberately mixes provenance: baked channels and hand-authored
|
|
4
|
+
channels are full runtime peers, indistinguishable to the config, validation,
|
|
5
5
|
and installer (specs/arch/onboarding/bake.md). This README is where each
|
|
6
|
-
|
|
6
|
+
channel's provenance is recorded.
|
|
7
7
|
|
|
8
8
|
**`business-ops`, `productivity`, and `research` are baked content**:
|
|
9
|
-
generated from the design sources under `specs/ui/onboarding/` by
|
|
9
|
+
generated from the design sources under `specs/ui/onboarding-artifacts/` by
|
|
10
10
|
`scripts/bake-onboarding.mjs` (specs/arch/onboarding/bake.md; requires the
|
|
11
11
|
repository's Node 24 toolchain). Do not edit
|
|
12
|
-
these
|
|
13
|
-
|
|
12
|
+
these channel folders or their `artifacts` config entries by hand — a re-bake
|
|
13
|
+
overwrites them. To change their content, edit the design sources
|
|
14
14
|
and re-bake; the diff is reviewed and committed like any content change.
|
|
15
|
-
Their display `name` values,
|
|
16
|
-
`onboarding-
|
|
15
|
+
Their display `name` values, channel order, and `focusChannel` in
|
|
16
|
+
`onboarding-channels.json` are hand-edits the bake preserves. An artifact
|
|
17
|
+
entry may also carry optional initial-page `size` and `geometry`; for baked
|
|
18
|
+
channels author those fields in the design channel's `layout.yml` so a
|
|
19
|
+
re-bake carries them into the config. Hand-authored channels such as
|
|
20
|
+
`tv-guide` may author the same fields directly in the config. Missing fields
|
|
21
|
+
use the shared page defaults.
|
|
17
22
|
|
|
18
23
|
**All non-tv-guide content is swap-free**: tests derive their expectations
|
|
19
24
|
from this config and these files at runtime, so content edits (baked or
|
|
@@ -21,12 +26,12 @@ hand-authored) need zero test changes.
|
|
|
21
26
|
|
|
22
27
|
**`tv-guide` content is deliberately test-pinned** (it is released copy) and
|
|
23
28
|
is hand-authored, not baked: `packages/server/test/onboarding-content.test.ts`
|
|
24
|
-
pins its artifact
|
|
25
|
-
|
|
29
|
+
pins its artifact order, and `test/node/fresh-install-onboarding.test.ts` pins
|
|
30
|
+
its welcome copy and asset.
|
|
26
31
|
Changing TV Guide content means updating those pins on purpose.
|
|
27
32
|
|
|
28
|
-
**The
|
|
29
|
-
`test/helpers/shipped-onboarding.ts`. Adding, removing, or renaming a
|
|
33
|
+
**The channel SET (folder names = slugs) is pinned in exactly one place**:
|
|
34
|
+
`test/helpers/shipped-onboarding.ts`. Adding, removing, or renaming a channel
|
|
30
35
|
updates that list deliberately. Slugs are permanent identity once released —
|
|
31
36
|
renaming one reads as delete-plus-add to every existing install
|
|
32
37
|
(specs/arch/onboarding/content.md).
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
-
<title>About this
|
|
6
|
+
<title>About this channel</title>
|
|
7
7
|
<link rel="stylesheet" href="/canonical/v1/styles.css">
|
|
8
8
|
<script type="module" src="/canonical/v1/components.js"></script>
|
|
9
9
|
<style>
|
|
@@ -56,7 +56,7 @@ header > .summary-deck {
|
|
|
56
56
|
muted and italic so it reads as a quotation rather than body copy. One
|
|
57
57
|
accent for all three (the rule is decoration, not a categorization). */
|
|
58
58
|
|
|
59
|
-
/* The About cards read as the
|
|
59
|
+
/* The About cards read as the channel's guide, not an example result: they sit
|
|
60
60
|
on a post-it yellow surface, a deliberate exception to the set's "artifacts
|
|
61
61
|
don't set backgrounds" rule. The surface is a fixed ramp token (yellow in
|
|
62
62
|
any theme, like a sticky note), so the text and accent are pinned to fixed
|
|
@@ -112,15 +112,12 @@ body {
|
|
|
112
112
|
</style>
|
|
113
113
|
</head>
|
|
114
114
|
<body>
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
115
|
<main class="shell">
|
|
119
116
|
<header>
|
|
120
|
-
<h1>About this
|
|
117
|
+
<h1>About this channel</h1>
|
|
121
118
|
|
|
122
119
|
<p class="lede">
|
|
123
|
-
This
|
|
120
|
+
This channel shows examples of TV artifacts focused on business
|
|
124
121
|
operations. Instead of flipping between different apps and web pages,
|
|
125
122
|
you can ask your agent to generate artifacts that combine and
|
|
126
123
|
synthesize the information you need to run your business, in one
|
|
@@ -145,6 +142,5 @@ body {
|
|
|
145
142
|
</li>
|
|
146
143
|
</ul>
|
|
147
144
|
</main>
|
|
148
|
-
|
|
149
145
|
</body>
|
|
150
146
|
</html>
|
|
@@ -374,14 +374,6 @@ svg.chart .point-labels .peak { fill: var(--green-500); }
|
|
|
374
374
|
</style>
|
|
375
375
|
</head>
|
|
376
376
|
<body>
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
377
|
<main class="shell">
|
|
386
378
|
<header class="hero">
|
|
387
379
|
<h1>Retention vs. recent releases</h1>
|
|
@@ -567,6 +559,5 @@ svg.chart .point-labels .peak { fill: var(--green-500); }
|
|
|
567
559
|
</div>
|
|
568
560
|
</section>
|
|
569
561
|
</main>
|
|
570
|
-
|
|
571
562
|
</body>
|
|
572
563
|
</html>
|
|
@@ -391,16 +391,6 @@ svg.chart .bar-labels .accent { fill: var(--green-500); }
|
|
|
391
391
|
</style>
|
|
392
392
|
</head>
|
|
393
393
|
<body>
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
394
|
<main class="shell">
|
|
405
395
|
<header class="hero">
|
|
406
396
|
<h1>Revenue vs. goals</h1>
|
|
@@ -616,6 +606,5 @@ svg.chart .bar-labels .accent { fill: var(--green-500); }
|
|
|
616
606
|
<p>Revenue has grown 11.8x over the past 18 months, from $240K in Q1 2025 to $2.84M in Q2 2026. The company missed or came in just under goal for the first five quarters — typical for a pre-product-market-fit startup — but exceeded the Q2 2026 target by $240K, driven by the v0.4.0 release and the Acme expansion path. TTM revenue is $7.64M, with the $9.6M Acme expansion path central to the seed deck narrative.</p>
|
|
617
607
|
</section>
|
|
618
608
|
</main>
|
|
619
|
-
|
|
620
609
|
</body>
|
|
621
610
|
</html>
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"focusChannel": "tv-guide",
|
|
4
|
+
"channels": [
|
|
5
|
+
{
|
|
6
|
+
"slug": "research",
|
|
7
|
+
"name": "Research",
|
|
8
|
+
"artifacts": [
|
|
9
|
+
{
|
|
10
|
+
"slug": "about",
|
|
11
|
+
"title": "About this channel",
|
|
12
|
+
"size": {
|
|
13
|
+
"width": 300,
|
|
14
|
+
"height": 740
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"slug": "todays-news",
|
|
19
|
+
"title": "Today's AI News"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"slug": "open-model-research",
|
|
23
|
+
"title": "Open model research"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"slug": "draft-blog-post",
|
|
27
|
+
"title": "Draft blog post"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"slug": "business-ops",
|
|
33
|
+
"name": "Business ops",
|
|
34
|
+
"artifacts": [
|
|
35
|
+
{
|
|
36
|
+
"slug": "about",
|
|
37
|
+
"title": "About this channel",
|
|
38
|
+
"size": {
|
|
39
|
+
"width": 300,
|
|
40
|
+
"height": 740
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"slug": "revenue-vs-goals",
|
|
45
|
+
"title": "Revenue vs. goals",
|
|
46
|
+
"size": {
|
|
47
|
+
"width": 650,
|
|
48
|
+
"height": 740
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"slug": "retention-vs-releases",
|
|
53
|
+
"title": "Retention vs. recent releases",
|
|
54
|
+
"size": {
|
|
55
|
+
"width": 650,
|
|
56
|
+
"height": 740
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"slug": "productivity",
|
|
63
|
+
"name": "Productivity",
|
|
64
|
+
"artifacts": [
|
|
65
|
+
{
|
|
66
|
+
"slug": "about",
|
|
67
|
+
"title": "About this channel",
|
|
68
|
+
"size": {
|
|
69
|
+
"width": 300,
|
|
70
|
+
"height": 740
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"slug": "priorities-today",
|
|
75
|
+
"title": "Priorities for Today"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"slug": "company-todos",
|
|
79
|
+
"title": "Company To-dos",
|
|
80
|
+
"size": {
|
|
81
|
+
"width": 400,
|
|
82
|
+
"height": 740
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"slug": "todays-calendar",
|
|
87
|
+
"title": "Today's Calendar",
|
|
88
|
+
"size": {
|
|
89
|
+
"width": 300,
|
|
90
|
+
"height": 740
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"slug": "meeting-prep",
|
|
95
|
+
"title": "Meeting prep"
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"slug": "tv-guide",
|
|
101
|
+
"name": "TV Guide",
|
|
102
|
+
"artifacts": [
|
|
103
|
+
{
|
|
104
|
+
"slug": "welcome",
|
|
105
|
+
"title": "Welcome to Television",
|
|
106
|
+
"size": {
|
|
107
|
+
"width": 800,
|
|
108
|
+
"height": 740
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
-
<title>About this
|
|
6
|
+
<title>About this channel</title>
|
|
7
7
|
<link rel="stylesheet" href="/canonical/v1/styles.css">
|
|
8
8
|
<script type="module" src="/canonical/v1/components.js"></script>
|
|
9
9
|
<style>
|
|
@@ -56,7 +56,7 @@ header > .summary-deck {
|
|
|
56
56
|
muted and italic so it reads as a quotation rather than body copy. One
|
|
57
57
|
accent for all three (the rule is decoration, not a categorization). */
|
|
58
58
|
|
|
59
|
-
/* The About cards read as the
|
|
59
|
+
/* The About cards read as the channel's guide, not an example result: they sit
|
|
60
60
|
on a post-it yellow surface, a deliberate exception to the set's "artifacts
|
|
61
61
|
don't set backgrounds" rule. The surface is a fixed ramp token (yellow in
|
|
62
62
|
any theme, like a sticky note), so the text and accent are pinned to fixed
|
|
@@ -112,15 +112,12 @@ body {
|
|
|
112
112
|
</style>
|
|
113
113
|
</head>
|
|
114
114
|
<body>
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
115
|
<main class="shell">
|
|
119
116
|
<header>
|
|
120
|
-
<h1>About this
|
|
117
|
+
<h1>About this channel</h1>
|
|
121
118
|
|
|
122
119
|
<p class="lede">
|
|
123
|
-
This
|
|
120
|
+
This channel shows examples of TV artifacts focused on personal
|
|
124
121
|
productivity. Instead of using a separate to-do app, calendar, or
|
|
125
122
|
notepad, you can have your agent synthesize all of that information into
|
|
126
123
|
a single view that helps you better manage your day.
|
|
@@ -144,6 +141,5 @@ body {
|
|
|
144
141
|
</li>
|
|
145
142
|
</ul>
|
|
146
143
|
</main>
|
|
147
|
-
|
|
148
144
|
</body>
|
|
149
145
|
</html>
|
|
@@ -50,8 +50,8 @@ tv-task:has(tv-task-checkbox[checked]) tv-task-title {
|
|
|
50
50
|
color: var(--color-text-muted);
|
|
51
51
|
text-decoration: line-through;
|
|
52
52
|
}
|
|
53
|
-
/* A completed task's due date
|
|
54
|
-
|
|
53
|
+
/* A completed task's due date is always muted, overriding the today/overdue
|
|
54
|
+
emphasis. */
|
|
55
55
|
tv-task:has(tv-task-checkbox[checked]) tv-task-meta-due {
|
|
56
56
|
color: var(--task-meta-text);
|
|
57
57
|
}
|
|
@@ -113,7 +113,7 @@ tv-task:has(tv-task-checkbox[disabled]) tv-task-title {
|
|
|
113
113
|
|
|
114
114
|
/* ---- List container ----
|
|
115
115
|
No frame of its own: the artifact page is the surface, and Television's
|
|
116
|
-
artifact
|
|
116
|
+
artifact frame supplies the chrome around the document. */
|
|
117
117
|
|
|
118
118
|
tv-task-list {
|
|
119
119
|
display: block;
|
|
@@ -253,7 +253,7 @@ __publicField(TaskCheckboxElement, "observedAttributes", ["checked", "disabled"]
|
|
|
253
253
|
if (!customElements.get("tv-task-checkbox")) {
|
|
254
254
|
customElements.define("tv-task-checkbox", TaskCheckboxElement);
|
|
255
255
|
}
|
|
256
|
-
const CALENDAR_ICON = `<tv-icon name="calendar
|
|
256
|
+
const CALENDAR_ICON = `<tv-icon name="calendar" size="sm" aria-hidden="true"></tv-icon>`;
|
|
257
257
|
const DUE_STYLES = `
|
|
258
258
|
:host {
|
|
259
259
|
display: inline-flex;
|
|
@@ -261,9 +261,6 @@ const DUE_STYLES = `
|
|
|
261
261
|
gap: 4px;
|
|
262
262
|
color: currentColor;
|
|
263
263
|
}
|
|
264
|
-
tv-icon {
|
|
265
|
-
flex: none;
|
|
266
|
-
}
|
|
267
264
|
`;
|
|
268
265
|
class TaskMetaDueElement extends HTMLElement {
|
|
269
266
|
constructor() {
|
|
@@ -338,12 +338,6 @@ header.hero h1 {
|
|
|
338
338
|
</style>
|
|
339
339
|
</head>
|
|
340
340
|
<body>
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
341
|
<main class="shell">
|
|
348
342
|
<header class="hero">
|
|
349
343
|
<h1>Meeting Prep — 1:1 with Priya</h1>
|
|
@@ -435,6 +429,5 @@ header.hero h1 {
|
|
|
435
429
|
</section>
|
|
436
430
|
|
|
437
431
|
</main>
|
|
438
|
-
|
|
439
432
|
</body>
|
|
440
433
|
</html>
|
|
@@ -289,12 +289,6 @@ header.hero h1 {
|
|
|
289
289
|
</style>
|
|
290
290
|
</head>
|
|
291
291
|
<body>
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
292
|
<main class="shell">
|
|
299
293
|
<header class="hero">
|
|
300
294
|
<h1>Priorities for Today</h1>
|
|
@@ -404,6 +398,5 @@ header.hero h1 {
|
|
|
404
398
|
</div>
|
|
405
399
|
</section>
|
|
406
400
|
</main>
|
|
407
|
-
|
|
408
401
|
</body>
|
|
409
402
|
</html>
|