@telepath-computer/television 0.1.216 → 1.3.3

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.
Files changed (81) hide show
  1. package/dist/THIRD-PARTY-NOTICES.txt +336 -0
  2. package/dist/canonical/v1/frozen.json +6 -0
  3. package/dist/canonical/v1/styles.css +7 -2
  4. package/dist/canonical/v2/components.js +1 -0
  5. package/dist/canonical/v2/fonts/Hind-Variable.933e9900.woff2 +0 -0
  6. package/dist/canonical/v2/styles.css +1241 -0
  7. package/dist/cli.cjs +1763 -761
  8. package/dist/onboarding/README.md +16 -14
  9. package/dist/onboarding/business-ops/about.html +4 -3
  10. package/dist/onboarding/business-ops/retention-vs-releases.html +25 -32
  11. package/dist/onboarding/business-ops/revenue-vs-goals.html +26 -31
  12. package/dist/onboarding/productivity/about.html +4 -3
  13. package/dist/onboarding/productivity/company-todos/THIRD-PARTY-NOTICES.txt +29 -0
  14. package/dist/onboarding/productivity/company-todos/index.html +20 -20
  15. package/dist/onboarding/productivity/company-todos/task.css +4 -5
  16. package/dist/onboarding/productivity/company-todos/task.js +1 -1
  17. package/dist/onboarding/productivity/meeting-prep.html +12 -12
  18. package/dist/onboarding/productivity/priorities-today.html +10 -10
  19. package/dist/onboarding/productivity/todays-calendar/calendar.css +1 -1
  20. package/dist/onboarding/productivity/todays-calendar/index.html +12 -14
  21. package/dist/onboarding/research/about.html +4 -3
  22. package/dist/onboarding/research/open-model-research.html +35 -35
  23. package/dist/onboarding/research/todays-news.html +72 -72
  24. package/dist/onboarding/tv-guide/welcome.html +178 -0
  25. package/dist/skills/television/SKILL.md +124 -67
  26. package/dist/skills/television/theming.md +1086 -0
  27. package/dist/skills/tv-calendar/SKILL.md +3 -1
  28. package/dist/skills/tv-calendar/calendar.css +1 -1
  29. package/dist/skills/tv-table/SKILL.md +5 -2
  30. package/dist/skills/tv-tasks/SKILL.md +19 -15
  31. package/dist/skills/tv-tasks/task.css +4 -26
  32. package/dist/skills/tv-tasks/task.js +1 -1
  33. package/dist/themes/README.md +5 -0
  34. package/dist/themes/aquarium/README.md +48 -0
  35. package/dist/themes/aquarium/iframe-background.js +137 -0
  36. package/dist/themes/aquarium/manifest.json +7 -0
  37. package/dist/themes/aquarium/theme.css +46 -0
  38. package/dist/themes/blueprint/README.md +31 -0
  39. package/dist/themes/blueprint/manifest.json +6 -0
  40. package/dist/themes/blueprint/theme.css +115 -0
  41. package/dist/themes/clouds/README.md +15 -0
  42. package/dist/themes/clouds/THIRD-PARTY-NOTICES.txt +81 -0
  43. package/dist/themes/clouds/manifest.json +6 -0
  44. package/dist/themes/clouds/theme.css +62 -0
  45. package/dist/themes/clouds/wallpaper-dark.webp +0 -0
  46. package/dist/themes/clouds/wallpaper.webp +0 -0
  47. package/dist/themes/crt-phosphor/README.md +31 -0
  48. package/dist/themes/crt-phosphor/manifest.json +6 -0
  49. package/dist/themes/crt-phosphor/theme.css +105 -0
  50. package/dist/themes/nord/README.md +9 -0
  51. package/dist/themes/nord/THIRD-PARTY-NOTICES.txt +29 -0
  52. package/dist/themes/nord/manifest.json +5 -0
  53. package/dist/themes/nord/theme.css +28 -0
  54. package/dist/themes/swiss/README.md +5 -0
  55. package/dist/themes/swiss/manifest.json +5 -0
  56. package/dist/themes/swiss/theme.css +34 -0
  57. package/dist/themes/tokyo-night/README.md +17 -0
  58. package/dist/themes/tokyo-night/THIRD-PARTY-NOTICES.txt +235 -0
  59. package/dist/themes/tokyo-night/manifest.json +5 -0
  60. package/dist/themes/tokyo-night/theme.css +31 -0
  61. package/dist/themes/tokyo-night/wallpaper.webp +0 -0
  62. package/dist/views/artifact-missing/index.html +40 -68
  63. package/dist/views/markdown/THIRD-PARTY-NOTICES.txt +26 -0
  64. package/dist/views/markdown/index.html +49 -23
  65. package/dist/web/THIRD-PARTY-NOTICES.txt +26 -0
  66. package/dist/web/assets/artifact-bridge-BEUWXKq7.js +1 -0
  67. package/dist/web/assets/{artifactMissing-BiK_l3Ts.js → artifactMissing-CUs1ZwDx.js} +1 -1
  68. package/dist/web/assets/main-Bi6QZnn7.css +1 -0
  69. package/dist/web/assets/main-Dw6rK_zF.js +706 -0
  70. package/dist/web/assets/{urlUnsupported-RGIrhMDe.js → urlUnsupported-powR79PT.js} +1 -1
  71. package/dist/web/index.html +40 -5
  72. package/dist/web/views/artifact-missing/index.html +40 -68
  73. package/dist/web/views/url-unsupported/index.html +40 -68
  74. package/package.json +1 -1
  75. package/dist/onboarding/tv-guide/welcome/assets/television.svg +0 -71
  76. package/dist/onboarding/tv-guide/welcome/index.html +0 -203
  77. package/dist/skills/tv-theme/SKILL.md +0 -449
  78. package/dist/web/assets/artifact-bridge-3Trk-B2L.js +0 -1
  79. package/dist/web/assets/clouds-CAYIArXj.jpg +0 -0
  80. package/dist/web/assets/main-Blg8fuaV.css +0 -1
  81. package/dist/web/assets/main-V14r9Psb.js +0 -596
@@ -1 +1 @@
1
- import{h as a,l as o,m as d}from"./artifact-bridge-3Trk-B2L.js";a(window,{reportNavigation:!1});window.addEventListener("message",t=>{t.source===window.parent&&o(t.data)&&l(t.data.url)});window.parent.postMessage({type:d},"*");function l(t,n=document){const e=f(n);if(p(e),t===null){e.targetBlock.hidden=!0,e.desktopApp.hidden=!1;return}const r=g(t);if(e.targetBlock.hidden=!1,e.desktopApp.hidden=!1,e.addressLabel.textContent="This is the URL you're trying to visit:",r){e.targetLink.textContent=t,e.targetLink.href=r.href,e.targetLink.hidden=!1;return}e.plainAddress.textContent=t,e.plainAddress.hidden=!1}function p(t){t.targetLink.removeAttribute("href"),t.targetLink.textContent="",t.targetLink.hidden=!0,t.addressLabel.textContent="",t.plainAddress.textContent="",t.plainAddress.hidden=!0}function g(t){try{const n=new URL(t);return n.protocol!=="http:"&&n.protocol!=="https:"?null:n}catch{return null}}function f(t){const n=t.getElementById("target-block"),e=t.getElementById("address-label"),r=t.getElementById("target-link"),s=t.getElementById("plain-address"),i=t.getElementById("desktop-app");if(!(n instanceof HTMLElement))throw new Error("Missing #target-block");if(!(e instanceof HTMLElement))throw new Error("Missing #address-label");if(!(r instanceof HTMLAnchorElement))throw new Error("Missing #target-link");if(!(s instanceof HTMLElement))throw new Error("Missing #plain-address");if(!(i instanceof HTMLElement))throw new Error("Missing #desktop-app");return{targetBlock:n,addressLabel:e,targetLink:r,plainAddress:s,desktopApp:i}}
1
+ import{j as a,m as o,n as d}from"./artifact-bridge-BEUWXKq7.js";a(window,{reportNavigation:!1});window.addEventListener("message",t=>{t.source===window.parent&&o(t.data)&&l(t.data.url)});window.parent.postMessage({type:d},"*");function l(t,n=document){const e=f(n);if(p(e),t===null){e.targetBlock.hidden=!0,e.desktopApp.hidden=!1;return}const r=g(t);if(e.targetBlock.hidden=!1,e.desktopApp.hidden=!1,e.addressLabel.textContent="This is the URL you're trying to visit:",r){e.targetLink.textContent=t,e.targetLink.href=r.href,e.targetLink.hidden=!1;return}e.plainAddress.textContent=t,e.plainAddress.hidden=!1}function p(t){t.targetLink.removeAttribute("href"),t.targetLink.textContent="",t.targetLink.hidden=!0,t.addressLabel.textContent="",t.plainAddress.textContent="",t.plainAddress.hidden=!0}function g(t){try{const n=new URL(t);return n.protocol!=="http:"&&n.protocol!=="https:"?null:n}catch{return null}}function f(t){const n=t.getElementById("target-block"),e=t.getElementById("address-label"),r=t.getElementById("target-link"),s=t.getElementById("plain-address"),i=t.getElementById("desktop-app");if(!(n instanceof HTMLElement))throw new Error("Missing #target-block");if(!(e instanceof HTMLElement))throw new Error("Missing #address-label");if(!(r instanceof HTMLAnchorElement))throw new Error("Missing #target-link");if(!(s instanceof HTMLElement))throw new Error("Missing #plain-address");if(!(i instanceof HTMLElement))throw new Error("Missing #desktop-app");return{targetBlock:n,addressLabel:e,targetLink:r,plainAddress:s,desktopApp:i}}
@@ -1,15 +1,50 @@
1
1
  <!doctype html>
2
- <html lang="en">
2
+ <html lang="en" data-television-document="app">
3
3
  <head>
4
+ <script>(function installAppearanceResolver(
5
+ initialPreference ,
6
+ targetWindow = window,
7
+ ) {
8
+ const existing = targetWindow.__televisionAppearanceResolver;
9
+ if (existing !== undefined) return existing;
10
+
11
+ const query = targetWindow.matchMedia("(prefers-color-scheme: dark)");
12
+ let preference = initialPreference;
13
+ const isPreference = (value ) =>
14
+ value === "system" || value === "light" || value === "dark";
15
+ const apply = () => {
16
+ const effective = preference === "system"
17
+ ? query.matches ? "dark" : "light"
18
+ : preference;
19
+ targetWindow.document.documentElement.dataset.theme = effective;
20
+ };
21
+ const controller = {
22
+ setPreference(nextPreference) {
23
+ if (!isPreference(nextPreference)) return;
24
+ preference = nextPreference;
25
+ apply();
26
+ },
27
+ };
28
+
29
+ // Publish before installing the listener so a re-entrant installation sees
30
+ // the same controller and cannot add a competing listener.
31
+ targetWindow.__televisionAppearanceResolver = controller;
32
+ query.addEventListener("change", () => {
33
+ if (preference === "system") apply();
34
+ });
35
+ apply();
36
+ return controller;
37
+ })((()=>{try{const value=window.localStorage.getItem("television-appearance-mode");return value==="system"||value==="light"||value==="dark"?value:"system";}catch{return "system";}})());</script>
38
+
4
39
  <meta charset="UTF-8" />
5
40
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
6
41
  <link rel="icon" type="image/svg+xml" href="./assets/favicon-DaYMFRha.svg" />
7
42
  <title>Television</title>
8
- <script type="module" crossorigin src="./assets/main-V14r9Psb.js"></script>
9
- <link rel="modulepreload" crossorigin href="./assets/artifact-bridge-3Trk-B2L.js">
43
+ <script type="module" crossorigin src="./assets/main-Dw6rK_zF.js"></script>
44
+ <link rel="modulepreload" crossorigin href="./assets/artifact-bridge-BEUWXKq7.js">
10
45
  <link rel="modulepreload" crossorigin href="./assets/missing-artifact-page-DVzJ41AE.js">
11
- <link rel="stylesheet" crossorigin href="./assets/main-Blg8fuaV.css">
12
- <link rel="preload" as="font" crossorigin="" href="/canonical/v1/fonts/Hind-Variable.933e9900.woff2">
46
+ <link rel="stylesheet" crossorigin href="./assets/main-Bi6QZnn7.css">
47
+ <link rel="preload" as="font" crossorigin="" href="/canonical/v2/fonts/Hind-Variable.933e9900.woff2">
13
48
  </head>
14
49
  <body></body>
15
50
  </html>
@@ -1,77 +1,44 @@
1
1
  <!doctype html>
2
2
  <html lang="en">
3
3
  <head>
4
+ <script>(function installAppearanceResolver(initialPreference, targetWindow = window) {
5
+ const existing = targetWindow.__televisionAppearanceResolver;
6
+ if (existing !== void 0) return existing;
7
+ const query = targetWindow.matchMedia("(prefers-color-scheme: dark)");
8
+ let preference = initialPreference;
9
+ const isPreference = (value) => value === "system" || value === "light" || value === "dark";
10
+ const apply = () => {
11
+ const effective = preference === "system" ? query.matches ? "dark" : "light" : preference;
12
+ targetWindow.document.documentElement.dataset.theme = effective;
13
+ };
14
+ const controller = {
15
+ setPreference(nextPreference) {
16
+ if (!isPreference(nextPreference)) return;
17
+ preference = nextPreference;
18
+ apply();
19
+ }
20
+ };
21
+ targetWindow.__televisionAppearanceResolver = controller;
22
+ query.addEventListener("change", () => {
23
+ if (preference === "system") apply();
24
+ });
25
+ apply();
26
+ return controller;
27
+ })("system");</script>
28
+
4
29
  <meta charset="UTF-8" />
5
30
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
31
  <title>Artifact file not found</title>
7
- <style>/* Standalone documents inherit none of the app's foundation. These are the
8
- declarations this page uses, copied from the foundation's colors.css,
9
- text.css, and spacing.css. */
10
- :root {
11
- --neutral-200: oklch(92.2% 0 none);
12
- --neutral-900: oklch(20.5% 0 none);
13
- --blue-500: oklch(0.623 0.214 259.815);
14
-
15
- --color-text: var(--neutral-900);
16
- --color-background: var(--neutral-200);
17
-
18
- --text-base: 14px;
19
- --text-sm: round(calc(var(--text-md) / var(--text-scale)), 1px);
20
- --text-md: var(--text-base);
21
- --text-lg: round(calc(var(--text-md) * var(--text-scale)), 1px);
22
- --text-scale: 1.125;
23
- --leading-base: 1.5;
24
-
25
- /* Loading Hind here would require another standalone asset route. Use the
26
- fallback portion of the foundation's sans stack instead. */
27
- --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
28
- --font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, monospace;
29
- --font-weight-semibold: 600;
30
-
31
- --space-2: 2px;
32
- --space-4: 4px;
33
- --space-6: 6px;
34
- --space-12: 12px;
35
- --space-24: 24px;
36
- --radius-4: 4px;
37
- }
38
-
39
- /* The standalone reset declarations are copied from foundation/reset.css. */
40
- *,
41
- *::before,
42
- *::after {
43
- box-sizing: border-box;
44
- }
45
-
46
- html,
47
- body {
48
- margin: 0;
49
- padding: 0;
50
- }
51
-
52
- body {
53
- min-height: 100vh;
54
- font-family: var(--font-sans);
55
- font-size: var(--text-md);
56
- line-height: var(--leading-base);
57
- color: var(--color-text);
58
- background: var(--color-background);
59
- }
60
-
61
- h1,
62
- p {
63
- margin: 0;
64
- }
65
-
66
- /* The page: the app's ground with the state's message in a centred reading
67
- column. */
32
+ <link data-television-style="canonical" rel="stylesheet" href="/canonical/v2/styles.css" />
33
+ <style>/* The page: a muted surface with the state's message in a centred reading
34
+ column — quiet ground of its own, not the app's wallpaper. Canonical
35
+ supplies the reset, foundation tokens, and base prose. */
68
36
  .artifact-error {
69
37
  min-height: 100vh;
70
- box-sizing: border-box;
71
38
  padding: var(--space-24);
72
39
  display: grid;
73
40
  place-items: center;
74
- background: var(--color-background);
41
+ background: var(--color-surface-muted);
75
42
  }
76
43
 
77
44
  .artifact-error-body {
@@ -81,6 +48,11 @@ p {
81
48
  gap: var(--space-12);
82
49
  }
83
50
 
51
+ .artifact-error h1,
52
+ .artifact-error p {
53
+ margin: 0;
54
+ }
55
+
84
56
  .artifact-error h1 {
85
57
  font-size: var(--text-lg);
86
58
  font-weight: var(--font-weight-semibold);
@@ -101,7 +73,7 @@ p {
101
73
  }
102
74
 
103
75
  .artifact-error a {
104
- color: var(--blue-500);
76
+ color: var(--color-primary);
105
77
  }
106
78
 
107
79
  /* The chips — the path, the commands: mono, wrapping anywhere, selected
@@ -111,10 +83,10 @@ p {
111
83
  max-width: 100%;
112
84
  overflow-wrap: anywhere;
113
85
  padding: var(--space-2) var(--space-6);
114
- border-radius: var(--radius-4);
86
+ border-radius: 4px;
115
87
  font-family: var(--font-mono);
116
88
  font-size: var(--text-sm);
117
- background: var(--neutral-200);
89
+ background: var(--color-surface-muted);
118
90
  user-select: all;
119
91
  }
120
92
 
@@ -123,8 +95,8 @@ p {
123
95
  display: none !important;
124
96
  }
125
97
  </style>
126
- <script type="module" crossorigin src="../../assets/artifactMissing-BiK_l3Ts.js"></script>
127
- <link rel="modulepreload" crossorigin href="../../assets/artifact-bridge-3Trk-B2L.js">
98
+ <script type="module" crossorigin src="../../assets/artifactMissing-CUs1ZwDx.js"></script>
99
+ <link rel="modulepreload" crossorigin href="../../assets/artifact-bridge-BEUWXKq7.js">
128
100
  <link rel="modulepreload" crossorigin href="../../assets/missing-artifact-page-DVzJ41AE.js">
129
101
  </head>
130
102
  <body>
@@ -1,77 +1,44 @@
1
1
  <!doctype html>
2
2
  <html lang="en">
3
3
  <head>
4
+ <script>(function installAppearanceResolver(initialPreference, targetWindow = window) {
5
+ const existing = targetWindow.__televisionAppearanceResolver;
6
+ if (existing !== void 0) return existing;
7
+ const query = targetWindow.matchMedia("(prefers-color-scheme: dark)");
8
+ let preference = initialPreference;
9
+ const isPreference = (value) => value === "system" || value === "light" || value === "dark";
10
+ const apply = () => {
11
+ const effective = preference === "system" ? query.matches ? "dark" : "light" : preference;
12
+ targetWindow.document.documentElement.dataset.theme = effective;
13
+ };
14
+ const controller = {
15
+ setPreference(nextPreference) {
16
+ if (!isPreference(nextPreference)) return;
17
+ preference = nextPreference;
18
+ apply();
19
+ }
20
+ };
21
+ targetWindow.__televisionAppearanceResolver = controller;
22
+ query.addEventListener("change", () => {
23
+ if (preference === "system") apply();
24
+ });
25
+ apply();
26
+ return controller;
27
+ })("system");</script>
28
+
4
29
  <meta charset="UTF-8" />
5
30
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
31
  <title>External web page</title>
7
- <style>/* Standalone documents inherit none of the app's foundation. These are the
8
- declarations this page uses, copied from the foundation's colors.css,
9
- text.css, and spacing.css. */
10
- :root {
11
- --neutral-200: oklch(92.2% 0 none);
12
- --neutral-900: oklch(20.5% 0 none);
13
- --blue-500: oklch(0.623 0.214 259.815);
14
-
15
- --color-text: var(--neutral-900);
16
- --color-background: var(--neutral-200);
17
-
18
- --text-base: 14px;
19
- --text-sm: round(calc(var(--text-md) / var(--text-scale)), 1px);
20
- --text-md: var(--text-base);
21
- --text-lg: round(calc(var(--text-md) * var(--text-scale)), 1px);
22
- --text-scale: 1.125;
23
- --leading-base: 1.5;
24
-
25
- /* Loading Hind here would require another standalone asset route. Use the
26
- fallback portion of the foundation's sans stack instead. */
27
- --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
28
- --font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, monospace;
29
- --font-weight-semibold: 600;
30
-
31
- --space-2: 2px;
32
- --space-4: 4px;
33
- --space-6: 6px;
34
- --space-12: 12px;
35
- --space-24: 24px;
36
- --radius-4: 4px;
37
- }
38
-
39
- /* The standalone reset declarations are copied from foundation/reset.css. */
40
- *,
41
- *::before,
42
- *::after {
43
- box-sizing: border-box;
44
- }
45
-
46
- html,
47
- body {
48
- margin: 0;
49
- padding: 0;
50
- }
51
-
52
- body {
53
- min-height: 100vh;
54
- font-family: var(--font-sans);
55
- font-size: var(--text-md);
56
- line-height: var(--leading-base);
57
- color: var(--color-text);
58
- background: var(--color-background);
59
- }
60
-
61
- h1,
62
- p {
63
- margin: 0;
64
- }
65
-
66
- /* The page: the app's ground with the state's message in a centred reading
67
- column. */
32
+ <link data-television-style="canonical" rel="stylesheet" href="/canonical/v2/styles.css" />
33
+ <style>/* The page: a muted surface with the state's message in a centred reading
34
+ column — quiet ground of its own, not the app's wallpaper. Canonical
35
+ supplies the reset, foundation tokens, and base prose. */
68
36
  .artifact-error {
69
37
  min-height: 100vh;
70
- box-sizing: border-box;
71
38
  padding: var(--space-24);
72
39
  display: grid;
73
40
  place-items: center;
74
- background: var(--color-background);
41
+ background: var(--color-surface-muted);
75
42
  }
76
43
 
77
44
  .artifact-error-body {
@@ -81,6 +48,11 @@ p {
81
48
  gap: var(--space-12);
82
49
  }
83
50
 
51
+ .artifact-error h1,
52
+ .artifact-error p {
53
+ margin: 0;
54
+ }
55
+
84
56
  .artifact-error h1 {
85
57
  font-size: var(--text-lg);
86
58
  font-weight: var(--font-weight-semibold);
@@ -101,7 +73,7 @@ p {
101
73
  }
102
74
 
103
75
  .artifact-error a {
104
- color: var(--blue-500);
76
+ color: var(--color-primary);
105
77
  }
106
78
 
107
79
  /* The chips — the path, the commands: mono, wrapping anywhere, selected
@@ -111,10 +83,10 @@ p {
111
83
  max-width: 100%;
112
84
  overflow-wrap: anywhere;
113
85
  padding: var(--space-2) var(--space-6);
114
- border-radius: var(--radius-4);
86
+ border-radius: 4px;
115
87
  font-family: var(--font-mono);
116
88
  font-size: var(--text-sm);
117
- background: var(--neutral-200);
89
+ background: var(--color-surface-muted);
118
90
  user-select: all;
119
91
  }
120
92
 
@@ -123,8 +95,8 @@ p {
123
95
  display: none !important;
124
96
  }
125
97
  </style>
126
- <script type="module" crossorigin src="../../assets/urlUnsupported-RGIrhMDe.js"></script>
127
- <link rel="modulepreload" crossorigin href="../../assets/artifact-bridge-3Trk-B2L.js">
98
+ <script type="module" crossorigin src="../../assets/urlUnsupported-powR79PT.js"></script>
99
+ <link rel="modulepreload" crossorigin href="../../assets/artifact-bridge-BEUWXKq7.js">
128
100
  </head>
129
101
  <body>
130
102
  <main class="artifact-error">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telepath-computer/television",
3
- "version": "0.1.216",
3
+ "version": "1.3.3",
4
4
  "license": "MIT",
5
5
  "engines": {
6
6
  "node": ">=22.12.0"
@@ -1,71 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <svg id="TV_-_Black" data-name="TV - Black" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 55 55">
3
- <defs>
4
- <style>
5
- .cls-1, .cls-2 {
6
- fill: none;
7
- }
8
-
9
- .cls-3 {
10
- fill: #0015ff;
11
- }
12
-
13
- .cls-4 {
14
- fill: #ff01d0;
15
- }
16
-
17
- .cls-5 {
18
- fill: #40d2b3;
19
- }
20
-
21
- .cls-6 {
22
- fill: url(#linear-gradient);
23
- }
24
-
25
- .cls-7 {
26
- fill: #38c428;
27
- }
28
-
29
- .cls-2 {
30
- stroke: #fff;
31
- stroke-width: 3px;
32
- }
33
-
34
- .cls-8 {
35
- fill: #fff;
36
- }
37
-
38
- .cls-9 {
39
- fill: #ffcd27;
40
- }
41
-
42
- .cls-10 {
43
- fill: #d24043;
44
- }
45
-
46
- .cls-11 {
47
- clip-path: url(#clippath);
48
- }
49
- </style>
50
- <linearGradient id="linear-gradient" x1="27.5" y1="1.45" x2="27.5" y2="53.55" gradientUnits="userSpaceOnUse">
51
- <stop offset="0" stop-color="#000"/>
52
- <stop offset="1" stop-color="#262626"/>
53
- </linearGradient>
54
- <clipPath id="clippath">
55
- <path class="cls-1" d="M14.2,7.7h26.6c3.15,0,5.7,2.66,5.7,5.94v27.72c0,3.28-2.55,5.94-5.7,5.94H14.2c-3.15,0-5.7-2.66-5.7-5.94V13.64c0-3.28,2.55-5.94,5.7-5.94Z"/>
56
- </clipPath>
57
- </defs>
58
- <path class="cls-6" d="M12.5,1.45h30c5.47,0,10.48,4.46,10.89,9.98.73,10.7.73,21.44,0,32.13-.41,5.52-5.42,9.98-10.89,9.98H12.5c-5.47,0-10.48-4.46-10.89-9.98-.73-10.7-.73-21.44,0-32.13C2.02,5.91,7.03,1.45,12.5,1.45Z"/>
59
- <g class="cls-11">
60
- <g>
61
- <rect class="cls-8" x="8.5" y="7.7" width="38" height="39.6" rx="5.7" ry="5.7"/>
62
- <path class="cls-7" d="M27.5,48.78V6.71h-9.98v42.07h9.98Z"/>
63
- <path class="cls-4" d="M27.5,6.71v42.07h9.97V6.71h-9.97Z"/>
64
- <path class="cls-5" d="M22.75,48.29c-3.8-18.22-1.58-34.98,0-41.08h-11.88v41.08c3.96.33,11.88.79,11.88,0Z"/>
65
- <path class="cls-10" d="M32.25,7.21c3.8,18.22,1.58,34.98,0,41.08h11.88V7.21c-3.96-.33-11.88-.79-11.88,0Z"/>
66
- <path class="cls-9" d="M15.62,47.3c-5.7-17.42-2.38-33.66,0-39.6H7.07v39.6s9.03.49,8.55,0Z"/>
67
- <path class="cls-3" d="M38.92,6.93c5.69,17.76,2.37,34.31,0,40.36h8.53V6.93s-9.01-.5-8.53,0Z"/>
68
- </g>
69
- </g>
70
- <path class="cls-2" d="M14.2,8.74h26.6c2.56,0,5.25,2.06,5.8,4.64,1.89,9.31,1.89,18.91,0,28.23-.55,2.58-3.25,4.64-5.8,4.64H14.2c-2.56,0-5.25-2.06-5.8-4.64-1.89-9.31-1.89-18.91,0-28.23.55-2.58,3.25-4.64,5.8-4.64Z"/>
71
- </svg>
@@ -1,203 +0,0 @@
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>Welcome to Television</title>
7
- <link rel="stylesheet" href="/canonical/v1/styles.css">
8
- <script type="module" src="/canonical/v1/components.js"></script>
9
- <style>
10
- html {
11
- min-height: 100%;
12
- background: linear-gradient(135deg, #ffffff 0%, #f2f2f2 100%);
13
- background-attachment: fixed;
14
- overscroll-behavior: none;
15
- }
16
-
17
- body {
18
- margin: 0;
19
- padding: 48px;
20
- min-height: 100%;
21
- box-sizing: border-box;
22
- background: transparent;
23
- font-size: 15px;
24
- }
25
-
26
- tv-icon {
27
- position: relative;
28
- top: 1px;
29
- color: var(--color-text-muted);
30
- }
31
-
32
- .logo {
33
- width: 22px;
34
- height: 22px;
35
- margin-left: 2px;
36
- margin-right: -2px;
37
- vertical-align: -3px;
38
- }
39
-
40
- h1 {
41
- margin-bottom: 10px;
42
- font-size: 24px;
43
- }
44
-
45
- .lede {
46
- margin-bottom: 18px;
47
- color: var(--color-text-muted);
48
- }
49
-
50
- .keycap {
51
- display: inline-block;
52
- margin: 0 2px;
53
- padding: 0 3px;
54
- border: 1px solid var(--color-border);
55
- border-radius: 6px;
56
- background: var(--color-bg-muted);
57
- font-size: 14px;
58
- font-weight: 600;
59
- line-height: 1.3;
60
- white-space: nowrap;
61
- }
62
-
63
- .prompts {
64
- position: relative;
65
- max-width: 460px;
66
- height: 220px;
67
- margin: 24px auto;
68
- }
69
-
70
- .prompt {
71
- position: absolute;
72
- display: grid;
73
- grid-template-columns: 22px minmax(0, 1fr);
74
- gap: 8px;
75
- align-items: flex-start;
76
- width: 238px;
77
- min-height: 104px;
78
- margin: 0;
79
- padding: 14px;
80
- border: 1px solid var(--color-border);
81
- border-radius: 14px;
82
- background: #fff;
83
- box-shadow: 0 6px 18px rgb(0 0 0 / 0.06);
84
- color: color-mix(in srgb, var(--color-text) 82%, var(--color-text-muted));
85
- font-size: 13.5px;
86
- }
87
-
88
- .prompt svg {
89
- width: 22px;
90
- height: 22px;
91
- color: var(--color-primary);
92
- }
93
-
94
- .prompt svg.weather-icon {
95
- color: #ffcc28;
96
- }
97
-
98
- .prompt svg.todo-icon {
99
- color: #41d1b3;
100
- }
101
-
102
- .prompt svg.food-icon {
103
- color: #d14144;
104
- }
105
-
106
- .prompt:nth-child(1) {
107
- left: -48px;
108
- top: 0;
109
- width: 298px;
110
- transform: rotate(-4deg);
111
- }
112
-
113
- .prompt:nth-child(2) {
114
- right: -52px;
115
- top: 40px;
116
- min-height: 78px;
117
- transform: rotate(5deg);
118
- }
119
-
120
- .prompt:nth-child(3) {
121
- left: 74px;
122
- top: 106px;
123
- width: 310px;
124
- transform: rotate(2deg);
125
- }
126
-
127
- @media (max-width: 560px) {
128
- .prompts {
129
- display: flex;
130
- flex-direction: column;
131
- align-items: center;
132
- height: auto;
133
- gap: 8px;
134
- }
135
-
136
- .prompt {
137
- position: static;
138
- width: min(350px, 100%);
139
- min-height: 0;
140
- transform: none !important;
141
- }
142
- }
143
-
144
- .callout {
145
- margin-top: 28px;
146
- padding: 12px 14px;
147
- border: 1px solid var(--color-border);
148
- border-radius: 10px;
149
- background: color-mix(in srgb, oklch(0.86 0.01 255.67) 22%, var(--color-bg-muted));
150
- }
151
-
152
- .callout h2 {
153
- display: flex;
154
- gap: 6px;
155
- align-items: center;
156
- margin-top: 0;
157
- color: color-mix(in srgb, var(--blue-700) 24%, var(--color-text-muted));
158
- font-size: 12px;
159
- font-weight: 800;
160
- letter-spacing: 0.06em;
161
- text-transform: uppercase;
162
- }
163
-
164
- .callout-icon {
165
- width: 16px;
166
- height: 16px;
167
- flex: none;
168
- }
169
-
170
- .callout p {
171
- color: color-mix(in srgb, var(--blue-900) 28%, var(--color-text-muted));
172
- }
173
-
174
- .callout p:last-child {
175
- margin-bottom: 0;
176
- }
177
- </style>
178
- </head>
179
- <body>
180
- <h1>Your <img class="logo" src="./assets/television.svg" alt=""> Television is on!</h1>
181
-
182
- <p class="lede">Television is the missing GUI for your personal agent, created by the team at Telepath. We’re glad you’re here.</p>
183
-
184
- <p>Your TV is organized into <strong>Channels</strong>, which are listed in the sidebar. We put you on "TV Guide" to start. Click <tv-icon name="expand"></tv-icon> to rename a channel or pin it to the top. Use <tv-icon name="add"></tv-icon> to add a new channel.</p>
185
-
186
- <p>Channels hold <tv-icon name="artifact"></tv-icon> <strong>Artifacts</strong>, like this one. They're live surfaces your agent can create, edit, and update. Artifacts can be notes, editable documents, dashboards, web pages, reports, or custom web apps. Each artifact has a button at the top of the screen; click these buttons to navigate, or double-click to zoom. (You can also navigate by holding down Option and using the arrow keys.)</p>
187
-
188
- <p>To create or change an artifact, simply tell your agent what you want to see! Click <tv-icon name="skills"></tv-icon> to view some of the artifacts that TV supports. Or try asking your agent…</p>
189
-
190
- <div class="prompts">
191
- <p class="prompt"><svg class="weather-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M139.84,84.41v0a68.22,68.22,0,0,0-41.65,46v-.11a44.08,44.08,0,0,0-38.54,5h0a48,48,0,1,1,80.19-50.94Z" opacity="0.2"/><path d="M164,72a76.2,76.2,0,0,0-20.26,2.73,55.63,55.63,0,0,0-9.41-11.54l9.51-13.57a8,8,0,1,0-13.11-9.18L121.22,54A55.9,55.9,0,0,0,96,48c-.58,0-1.16,0-1.74,0L91.37,31.71a8,8,0,1,0-15.75,2.77L78.5,50.82A56.1,56.1,0,0,0,55.23,65.67L41.61,56.14a8,8,0,1,0-9.17,13.11L46,78.77A55.55,55.55,0,0,0,40,104c0,.57,0,1.15,0,1.72L23.71,108.6a8,8,0,0,0,1.38,15.88,8.24,8.24,0,0,0,1.39-.12l16.32-2.88a55.74,55.74,0,0,0,5.86,12.42A52,52,0,0,0,84,224h80a76,76,0,0,0,0-152ZM56,104a40,40,0,0,1,72.54-23.24,76.26,76.26,0,0,0-35.62,40,52.14,52.14,0,0,0-31,4.17A40,40,0,0,1,56,104ZM164,208H84a36,36,0,1,1,4.78-71.69c-.37,2.37-.63,4.79-.77,7.23a8,8,0,0,0,16,.92,58.91,58.91,0,0,1,1.88-11.81c0-.16.09-.32.12-.48A60.06,60.06,0,1,1,164,208Z"/></svg><span>What’s the 3-day weather forecast for New York City? Include a nice icon for each day’s weather. Update it twice a day.</span></p>
192
- <p class="prompt"><svg class="todo-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M216,48V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V48a8,8,0,0,1,8-8H208A8,8,0,0,1,216,48Z" opacity="0.2"/><path d="M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM224,48V208a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32H208A16,16,0,0,1,224,48ZM208,208V48H48V208H208Z"/></svg><span>Open my to-do list from my Obsidian vault.</span></p>
193
- <p class="prompt"><svg class="food-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M208,40V168H152S152,64,208,40Z" opacity="0.2"/><path d="M72,88V40a8,8,0,0,1,16,0V88a8,8,0,0,1-16,0ZM216,40V224a8,8,0,0,1-16,0V176H152a8,8,0,0,1-8-8,268.75,268.75,0,0,1,7.22-56.88c9.78-40.49,28.32-67.63,53.63-78.47A8,8,0,0,1,216,40ZM200,53.9c-32.17,24.57-38.47,84.42-39.7,106.1H200ZM119.89,38.69a8,8,0,1,0-15.78,2.63L112,88.63a32,32,0,0,1-64,0l7.88-47.31a8,8,0,1,0-15.78-2.63l-8,48A8.17,8.17,0,0,0,32,88a48.07,48.07,0,0,0,40,47.32V224a8,8,0,0,0,16,0V135.32A48.07,48.07,0,0,0,128,88a8.17,8.17,0,0,0-.11-1.31Z"/></svg><span>Research the best Thai restaurants in San Francisco and give me a report on the top three. Include photos.</span></p>
194
- </div>
195
-
196
- <p>Your agent will usually know when to answer by creating an artifact. If it replies in chat instead, just say: “put that on my TV.”</p>
197
-
198
- <section class="callout">
199
- <h2><svg class="callout-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M208,104a79.86,79.86,0,0,1-30.59,62.92A24.29,24.29,0,0,0,168,186v6a8,8,0,0,1-8,8H96a8,8,0,0,1-8-8v-6a24.11,24.11,0,0,0-9.3-19A79.87,79.87,0,0,1,48,104.45C47.76,61.09,82.72,25,126.07,24A80,80,0,0,1,208,104Z" opacity="0.2"/><path d="M176,232a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h80A8,8,0,0,1,176,232Zm40-128a87.55,87.55,0,0,1-33.64,69.21A16.24,16.24,0,0,0,176,186v6a16,16,0,0,1-16,16H96a16,16,0,0,1-16-16v-6a16,16,0,0,0-6.23-12.66A87.59,87.59,0,0,1,40,104.49C39.74,56.83,78.26,17.14,125.88,16A88,88,0,0,1,216,104Zm-16,0a72,72,0,0,0-73.74-72c-39,.92-70.47,33.39-70.26,72.39a71.65,71.65,0,0,0,27.64,56.3A32,32,0,0,1,96,186v6h64v-6a32.15,32.15,0,0,1,12.47-25.35A71.65,71.65,0,0,0,200,104Zm-16.11-9.34a57.6,57.6,0,0,0-46.56-46.55,8,8,0,0,0-2.66,15.78c16.57,2.79,30.63,16.85,33.44,33.45A8,8,0,0,0,176,104a9,9,0,0,0,1.35-.11A8,8,0,0,0,183.89,94.66Z"/></svg>More examples</h2>
200
- <p>See the other channels for more examples of how to use Television. (You can close or delete these channels whenever you like; they're just there to give you ideas!)</p>
201
- </section>
202
- </body>
203
- </html>