@hybridlabor-api/aos 4.13.1 → 4.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/.agents/AGENTS.md +8 -0
  2. package/.agents/nodes.json +5 -2
  3. package/.claude/hooks/conventional-commits.mjs +14 -15
  4. package/.claude/hooks/env-file-protection.mjs +14 -15
  5. package/.claude/hooks/go-gate.mjs +157 -13
  6. package/.claude/hooks/go-token.mjs +55 -0
  7. package/.claude/hooks/memb-inject.mjs +75 -62
  8. package/.claude/hooks/trail-autostart.mjs +27 -0
  9. package/.claude/settings.json +18 -0
  10. package/.claude/workflows/startcycle-dispatch.mjs +11 -4
  11. package/.opencode/plugins/bdb-aos.js +98 -121
  12. package/.opencode/plugins/lib/trail-autostart.js +38 -0
  13. package/CLAUDE.md +1 -1
  14. package/README.de.md +6 -10
  15. package/README.md +6 -10
  16. package/README.pt.md +6 -10
  17. package/THIRD_PARTY_NOTICES.md +19 -3
  18. package/assets/header-v5.png +0 -0
  19. package/bin/aos-acp.mjs +211 -0
  20. package/bin/aos-doctor.mjs +1 -1
  21. package/bin/aos-uninstall.mjs +2 -2
  22. package/docs/master-session-acp.md +51 -0
  23. package/installer.js +398 -65
  24. package/mcps/mcsc/packages/mcp/server.js +6 -7
  25. package/package.json +4 -3
  26. package/scripts/validate-skills.mjs +76 -0
  27. package/skills/basic/bdbmediastorm/SKILL.md +1 -1
  28. package/skills/basic/godmode-shipping/SKILL.md +3 -0
  29. package/skills/basic/master-session/SKILL.md +89 -0
  30. package/skills/basic/startcycle/SKILL.md +1 -1
  31. package/skills/basic/startcycle-graph/SKILL.md +2 -2
  32. package/skills/basic/startcycle-graph-user/SKILL.md +1 -1
  33. package/skills/basic/teamwork-preview/SKILL.md +1 -1
  34. package/skills/bdbrainstorm/SKILL.md +7 -1
  35. package/skills/global_config/agentic-harness-patterns/SKILL.md +257 -0
  36. package/skills/global_config/agentic-harness-patterns/metadata.json +10 -0
  37. package/skills/global_config/agentic-harness-patterns/references/agent-orchestration-pattern.md +97 -0
  38. package/skills/global_config/agentic-harness-patterns/references/bootstrap-sequence-pattern.md +106 -0
  39. package/skills/global_config/agentic-harness-patterns/references/context-engineering/compress-pattern.md +78 -0
  40. package/skills/global_config/agentic-harness-patterns/references/context-engineering/isolate-pattern.md +82 -0
  41. package/skills/global_config/agentic-harness-patterns/references/context-engineering/select-pattern.md +86 -0
  42. package/skills/global_config/agentic-harness-patterns/references/context-engineering-pattern.md +29 -0
  43. package/skills/global_config/agentic-harness-patterns/references/hook-lifecycle-pattern.md +111 -0
  44. package/skills/global_config/agentic-harness-patterns/references/memory-persistence-pattern.md +109 -0
  45. package/skills/global_config/agentic-harness-patterns/references/permission-gate-pattern.md +111 -0
  46. package/skills/global_config/agentic-harness-patterns/references/skill-runtime-pattern.md +104 -0
  47. package/skills/global_config/agentic-harness-patterns/references/task-decomposition-pattern.md +92 -0
  48. package/skills/global_config/agentic-harness-patterns/references/tool-registry-pattern.md +101 -0
  49. package/skills/global_config/agenttrail/SKILL.md +8 -0
  50. package/skills/global_config/agenttrail/bin/agenttrail.mjs +14 -0
  51. package/skills/global_config/agenttrail/bin/ensure.mjs +118 -0
  52. package/skills/global_config/aos-setup/scripts/aos-doctor.mjs +1 -1
  53. package/skills/global_config/bdb-memb-mcp/SKILL.md +4 -5
  54. package/skills/global_config/bdb-visual-edit/SKILL.md +51 -0
  55. package/skills/global_config/bdb-visual-edit/references/vite-react-source-attr.md +59 -0
  56. package/skills/global_config/bdb-visual-edit/scripts/pick-snippet.js +27 -0
  57. package/skills/global_config/bdb-visual-edit/scripts/sanitize-element.mjs +123 -0
  58. package/skills/global_config/factory-collect/SKILL.md +74 -0
  59. package/skills/global_config/factory-human-digest/SKILL.md +92 -0
  60. package/skills/global_config/factory-lookback/SKILL.md +95 -0
  61. package/skills/global_config/factory-review-prs/SKILL.md +63 -0
  62. package/skills/global_config/git-pr-review/SKILL.md +3 -0
  63. package/skills/global_config/grilling/SKILL.md +2 -0
  64. package/skills/global_config/mcsc/SKILL.md +1 -1
  65. package/skills/global_config/plan-arbiter/SKILL.md +125 -0
  66. package/skills/global_config/plan-canvas/SKILL.md +63 -9
  67. package/skills/global_config/plan-canvas/scripts/lib/loopback-guard.js +19 -3
  68. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/README.md +285 -0
  69. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/agent-trail.js +129 -0
  70. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/board-client.js +124 -0
  71. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/examples/demo-plan/canvas.mdx +19 -0
  72. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/examples/demo-plan/plan.mdx +18 -0
  73. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/examples/recap-demo/plan.mdx +72 -0
  74. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/examples/showcase/README.md +29 -0
  75. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/examples/showcase/architecture.json +30 -0
  76. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/examples/showcase/builder/00_architecture.html +14950 -0
  77. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/examples/showcase/builder/canvas.mdx +511 -0
  78. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/examples/showcase/builder/plan.mdx +208 -0
  79. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/examples/showcase/recap/plan.mdx +102 -0
  80. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/examples/showcase/standard/plan.md +136 -0
  81. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/examples/signup-storyboard/canvas.mdx +124 -0
  82. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/examples/signup-storyboard/plan.mdx +37 -0
  83. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/index.js +188 -0
  84. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/kit.js +123 -0
  85. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/mdx.js +411 -0
  86. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/render.js +1291 -0
  87. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/architecture/meta.json +1 -0
  88. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/architecture/plan.mdx +195 -0
  89. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/architecture/standard.md +95 -0
  90. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/bugfix/meta.json +1 -0
  91. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/bugfix/plan.mdx +105 -0
  92. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/bugfix/standard.md +76 -0
  93. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/feature/canvas.mdx +81 -0
  94. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/feature/meta.json +1 -0
  95. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/feature/plan.mdx +145 -0
  96. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/feature/standard.md +76 -0
  97. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/migration/meta.json +1 -0
  98. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/migration/plan.mdx +172 -0
  99. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/migration/standard.md +100 -0
  100. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/recap/meta.json +1 -0
  101. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/recap/plan.mdx +67 -0
  102. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/recap/standard.md +49 -0
  103. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/recap-board/canvas.mdx +63 -0
  104. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/recap-board/meta.json +1 -0
  105. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/recap-board/plan.mdx +49 -0
  106. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/recap-board/standard.md +39 -0
  107. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/recap-review/meta.json +1 -0
  108. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/recap-review/plan.mdx +118 -0
  109. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/recap-review/standard.md +57 -0
  110. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/release/meta.json +1 -0
  111. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/release/plan.mdx +173 -0
  112. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/release/standard.md +96 -0
  113. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/research/meta.json +1 -0
  114. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/research/plan.mdx +91 -0
  115. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/research/standard.md +54 -0
  116. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/show-control/canvas.mdx +53 -0
  117. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/show-control/meta.json +1 -0
  118. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/show-control/plan.mdx +225 -0
  119. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/templates/show-control/standard.md +111 -0
  120. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/theme.css +472 -0
  121. package/skills/global_config/plan-canvas/scripts/lib/plan-builder/trail.js +216 -0
  122. package/skills/global_config/plan-canvas/scripts/lib/plan-canvas/markdown.js +1 -1
  123. package/skills/global_config/plan-canvas/scripts/lib/plan-canvas/server.js +37 -4
  124. package/skills/global_config/plan-canvas/scripts/lib/plan-canvas/ui.js +125 -29
  125. package/skills/global_config/plan-canvas/scripts/plan-canvas.js +196 -8
  126. package/skills/global_config/pr-recap/SKILL.md +47 -0
  127. package/skills/global_config/pr-recap/scripts/pr-recap.mjs +200 -0
  128. package/skills/global_config/quick-recap/SKILL.md +55 -0
  129. package/skills/global_config/stay-within-limits/SKILL.md +85 -0
  130. package/skills/global_config/triage/SKILL.md +3 -0
  131. package/skills/global_config/visual-edit/README.md +96 -0
  132. package/skills/global_config/visual-edit/SKILL.md +615 -0
  133. package/skills/global_config/visual-plan/README.md +93 -0
  134. package/skills/global_config/visual-plan/SKILL.md +544 -0
  135. package/skills/global_config/visual-plan/references/canvas.md +139 -0
  136. package/skills/global_config/visual-plan/references/connection.md +51 -0
  137. package/skills/global_config/visual-plan/references/document-quality.md +186 -0
  138. package/skills/global_config/visual-plan/references/exemplar.md +62 -0
  139. package/skills/global_config/visual-plan/references/local-files.md +99 -0
  140. package/skills/global_config/visual-plan/references/wireframe.md +319 -0
  141. package/skills/global_config/visual-recap/README.md +103 -0
  142. package/skills/global_config/visual-recap/SKILL.md +560 -0
  143. package/skills/global_config/visual-recap/references/connection.md +51 -0
  144. package/skills/global_config/visual-recap/references/local-files.md +99 -0
  145. package/skills/global_config/visual-recap/references/wireframe.md +319 -0
  146. package/skills/playbooks/pb-ci-fix/SKILL.md +49 -0
  147. package/skills/playbooks/pb-event-tracker/SKILL.md +45 -0
  148. package/skills/playbooks/pb-meeting-actions/SKILL.md +42 -0
  149. package/skills/playbooks/pb-project-new/SKILL.md +48 -0
  150. package/skills/playbooks/pb-week-plan/SKILL.md +45 -0
  151. package/assets/header-v4.jpg +0 -0
@@ -0,0 +1,511 @@
1
+ <DesignBoard title="Harbor Notes - storyboard" version={1} transitions={[
2
+ { from: "welcome", to: "create", label: "Continue with email" },
3
+ { from: "create", to: "verify", label: "submit form" },
4
+ { from: "verify", to: "workspace", label: "code accepted" },
5
+ { from: "workspace", to: "notes", label: "create workspace" },
6
+ { from: "notes", to: "editor", label: "open a note" },
7
+ { from: "editor", to: "notes", label: "close, autosaved" },
8
+ { from: "editor", to: "share", label: "Share" },
9
+ { from: "share", to: "editor", label: "copy link" },
10
+ { from: "notes", to: "settings", label: "Settings" },
11
+ { from: "settings", to: "notes", label: "Back to notes" },
12
+ ]}>
13
+ <Section title="1 Create the account" subtitle="Three steps from first launch to a verified address. Low-fidelity sketches, not final UI.">
14
+ <Artboard id="welcome" label="Welcome" surface="mobile" x={80} y={120} width={320} height={490} order={1}>
15
+ <Screen surface="mobile" caption="First launch, signed out.">
16
+ <FrameScreen>
17
+ <StatusBar />
18
+ <Row>
19
+ <IconSquare active />
20
+ <Title text="Harbor Notes" />
21
+ </Row>
22
+ <Text value="Team notes that stay in sync." tone="muted" />
23
+ <Box>
24
+ <Text value="Write together, share with a link, export anytime." />
25
+ <Lines n={3} widths={[92,80,58]} />
26
+ </Box>
27
+ <Chips items={[{"label":"Notes","active":true},{"label":"Share"},{"label":"Export"}]} />
28
+ <Row>
29
+ <IconSquare active />
30
+ <Lines n={2} widths={[70,44]} />
31
+ </Row>
32
+ <Row>
33
+ <IconSquare />
34
+ <Lines n={2} widths={[58,36]} />
35
+ </Row>
36
+ <Row>
37
+ <IconSquare />
38
+ <Lines n={2} widths={[64,40]} />
39
+ </Row>
40
+ <Divider />
41
+ <Btn label="Continue with email" primary />
42
+ <Btn label="Continue with a team invite" />
43
+ <Text value="Already have an account? Sign in" tone="muted" />
44
+ </FrameScreen>
45
+ </Screen>
46
+ </Artboard>
47
+ <Artboard id="create" label="Create account" surface="mobile" x={520} y={120} width={320} height={540} order={2}>
48
+ <Screen surface="mobile">
49
+ <FrameScreen>
50
+ <StatusBar />
51
+ <Row>
52
+ <Text value="Step 1 of 3" tone="muted" />
53
+ <Chips items={[{"label":"Account","active":true},{"label":"Verify"},{"label":"Workspace"}]} />
54
+ </Row>
55
+ <Title text="Create account" />
56
+ <Box>
57
+ <Text value="Full name" tone="muted" />
58
+ <Lines n={1} widths={[46]} />
59
+ </Box>
60
+ <Box>
61
+ <Text value="Work email" tone="muted" />
62
+ <Lines n={1} widths={[62]} />
63
+ </Box>
64
+ <Box>
65
+ <Text value="Password" tone="muted" />
66
+ <Lines n={1} widths={[36]} />
67
+ </Box>
68
+ <Lines n={2} widths={[70,52]} />
69
+ <TaskRow title="I agree to the terms" done />
70
+ <TaskRow title="Send me product tips" note="optional" />
71
+ <Divider />
72
+ <Btn label="Create account" primary />
73
+ <Btn label="Use single sign-on" />
74
+ <Text value="Passwords need 10 characters" tone="muted" />
75
+ </FrameScreen>
76
+ </Screen>
77
+ </Artboard>
78
+ <Artboard id="verify" label="Verify email" surface="mobile" x={960} y={120} width={320} height={450} order={3}>
79
+ <Screen surface="mobile">
80
+ <FrameScreen>
81
+ <StatusBar />
82
+ <Row>
83
+ <Text value="Step 2 of 3" tone="muted" />
84
+ <Chips items={[{"label":"Account"},{"label":"Verify","active":true},{"label":"Workspace"}]} />
85
+ </Row>
86
+ <Title text="Check your inbox" />
87
+ <Text value="We sent a six digit code to ana@example.com." tone="muted" />
88
+ <Row>
89
+ <IconSquare />
90
+ <IconSquare />
91
+ <IconSquare />
92
+ <IconSquare />
93
+ <IconSquare />
94
+ <IconSquare />
95
+ </Row>
96
+ <Box>
97
+ <Text value="Code expires in 10:00" />
98
+ <Lines n={2} widths={[84,52]} />
99
+ </Box>
100
+ <TaskRow title="Paste fills all six boxes" done />
101
+ <TaskRow title="Code is single use" done />
102
+ <Divider />
103
+ <Btn label="Open mail app" primary />
104
+ <Btn label="Resend code" />
105
+ <Text value="Wrong address? Change email" tone="muted" />
106
+ </FrameScreen>
107
+ </Screen>
108
+ </Artboard>
109
+ </Section>
110
+ <Section title="2 Workspace and notes list" subtitle="Name the workspace, then land in the notes list and the editor.">
111
+ <Artboard id="workspace" label="Name your workspace" surface="mobile" x={1400} y={120} width={320} height={550} order={4}>
112
+ <Screen surface="mobile">
113
+ <FrameScreen>
114
+ <StatusBar />
115
+ <Row>
116
+ <Text value="Step 3 of 3" tone="muted" />
117
+ <Chips items={[{"label":"Account"},{"label":"Verify"},{"label":"Workspace","active":true}]} />
118
+ </Row>
119
+ <Title text="Name your workspace" />
120
+ <Box>
121
+ <Text value="Workspace name" tone="muted" />
122
+ <Lines n={1} widths={[44]} />
123
+ </Box>
124
+ <Box>
125
+ <Text value="Web address" tone="muted" />
126
+ <Lines n={1} widths={[38]} />
127
+ </Box>
128
+ <SectionLabel label="Use it for" />
129
+ <TaskRow title="Personal" done note="default" />
130
+ <TaskRow title="Team" />
131
+ <TaskRow title="School" />
132
+ <Divider />
133
+ <SectionLabel label="Invite teammates" />
134
+ <Row>
135
+ <IconSquare active />
136
+ <Lines n={2} widths={[70,44]} />
137
+ </Row>
138
+ <Row>
139
+ <IconSquare />
140
+ <Lines n={2} widths={[56,34]} />
141
+ </Row>
142
+ <Btn label="Create workspace" primary />
143
+ <Text value="Skip invites for now" tone="muted" />
144
+ </FrameScreen>
145
+ </Screen>
146
+ </Artboard>
147
+ <Artboard id="notes" label="Notes list" surface="web" x={1840} y={120} width={920} height={480} order={5}>
148
+ <Screen surface="web">
149
+ <FrameScreen>
150
+ <Row>
151
+ <IconSquare active />
152
+ <Title text="Harbor Notes" />
153
+ <Lines n={1} widths={[60]} />
154
+ <Btn label="Search" />
155
+ <Btn label="New note" primary />
156
+ </Row>
157
+ <Row>
158
+ <Col>
159
+ <SectionLabel label="Workspace" />
160
+ <Row>
161
+ <IconSquare active />
162
+ <Text value="Studio Team" weight="bold" />
163
+ </Row>
164
+ <Row>
165
+ <IconSquare active />
166
+ <Text value="All notes" />
167
+ </Row>
168
+ <Row>
169
+ <IconSquare />
170
+ <Text value="Shared with me" tone="muted" />
171
+ </Row>
172
+ <Row>
173
+ <IconSquare />
174
+ <Text value="Archive" tone="muted" />
175
+ </Row>
176
+ <Divider />
177
+ <SectionLabel label="Tags" />
178
+ <Row>
179
+ <IconSquare />
180
+ <Text value="planning" tone="muted" />
181
+ </Row>
182
+ <Row>
183
+ <IconSquare />
184
+ <Text value="research" tone="muted" />
185
+ </Row>
186
+ <Row>
187
+ <IconSquare />
188
+ <Text value="meetings" tone="muted" />
189
+ </Row>
190
+ <Divider />
191
+ <Row>
192
+ <IconSquare />
193
+ <Text value="Settings" tone="muted" />
194
+ </Row>
195
+ <Text value="4 members online" tone="muted" />
196
+ </Col>
197
+ <Col>
198
+ <Row>
199
+ <Title text="All notes" />
200
+ <Chips items={[{"label":"Recent","active":true},{"label":"Title"},{"label":"Owner"}]} />
201
+ </Row>
202
+ <Chips items={[{"label":"Notes","active":true},{"label":"Shared","active":false},{"label":"Archive","active":false}]} />
203
+ <Row>
204
+ <IconSquare active />
205
+ <Lines n={2} widths={[78,52]} />
206
+ </Row>
207
+ <Row>
208
+ <IconSquare />
209
+ <Lines n={2} widths={[66,44]} />
210
+ </Row>
211
+ <Row>
212
+ <IconSquare />
213
+ <Lines n={2} widths={[72,36]} />
214
+ </Row>
215
+ <Row>
216
+ <IconSquare />
217
+ <Lines n={2} widths={[58,48]} />
218
+ </Row>
219
+ <Row>
220
+ <IconSquare />
221
+ <Lines n={2} widths={[70,40]} />
222
+ </Row>
223
+ <Row>
224
+ <IconSquare />
225
+ <Lines n={2} widths={[62,54]} />
226
+ </Row>
227
+ <Row>
228
+ <IconSquare />
229
+ <Lines n={2} widths={[74,30]} />
230
+ </Row>
231
+ <Row>
232
+ <IconSquare />
233
+ <Lines n={2} widths={[54,42]} />
234
+ </Row>
235
+ </Col>
236
+ <Col>
237
+ <SectionLabel label="Preview" />
238
+ <Title text="Sprint planning" />
239
+ <Row>
240
+ <Text value="Edited 2 min ago by Ana" tone="muted" />
241
+ <Chips items={[{"label":"planning"},{"label":"shared","active":true}]} />
242
+ </Row>
243
+ <Lines n={5} widths={[96,88,92,70,54]} />
244
+ <Box>
245
+ <Text value="Open items" weight="bold" />
246
+ <TaskRow title="Confirm scope freeze" done />
247
+ <TaskRow title="Book load test" />
248
+ <TaskRow title="Review export format" />
249
+ </Box>
250
+ <Row>
251
+ <Btn label="Open" primary />
252
+ <Btn label="Share" />
253
+ <Btn label="Archive" />
254
+ </Row>
255
+ </Col>
256
+ </Row>
257
+ <Divider />
258
+ <Row>
259
+ <Text value="42 notes" tone="muted" />
260
+ <Text value="Synced just now" tone="muted" />
261
+ <Chips items={[{"label":"Online","active":true},{"label":"4 editors"}]} />
262
+ </Row>
263
+ </FrameScreen>
264
+ </Screen>
265
+ </Artboard>
266
+ <Artboard id="editor" label="Note editor" surface="web" x={80} y={760} width={920} height={510} order={6}>
267
+ <Screen surface="web">
268
+ <FrameScreen>
269
+ <Row>
270
+ <IconSquare active />
271
+ <Text value="Studio Team / Sprint planning" weight="bold" />
272
+ <Chips items={[{"label":"Saved","active":true},{"label":"Markdown"}]} />
273
+ <Btn label="Share" primary />
274
+ <Btn label="Export" />
275
+ </Row>
276
+ <Row>
277
+ <Col>
278
+ <SectionLabel label="Outline" />
279
+ <Row>
280
+ <IconSquare active />
281
+ <Text value="Goals" />
282
+ </Row>
283
+ <Row>
284
+ <IconSquare />
285
+ <Text value="Scope" tone="muted" />
286
+ </Row>
287
+ <Row>
288
+ <IconSquare />
289
+ <Text value="Risks" tone="muted" />
290
+ </Row>
291
+ <Row>
292
+ <IconSquare />
293
+ <Text value="Next steps" tone="muted" />
294
+ </Row>
295
+ <Divider />
296
+ <SectionLabel label="Attachments" />
297
+ <Row>
298
+ <IconSquare />
299
+ <Lines n={2} widths={[60,30]} />
300
+ </Row>
301
+ <Row>
302
+ <IconSquare />
303
+ <Lines n={2} widths={[52,26]} />
304
+ </Row>
305
+ <Btn label="Attach file" />
306
+ </Col>
307
+ <Col>
308
+ <Title text="Sprint planning" />
309
+ <Row>
310
+ <Btn label="B" />
311
+ <Btn label="I" />
312
+ <Btn label="Link" />
313
+ <Btn label="List" />
314
+ <Btn label="Code" />
315
+ </Row>
316
+ <Divider />
317
+ <Lines n={4} widths={[96,90,78,60]} />
318
+ <Box>
319
+ <Text value="Scope for week three" weight="bold" />
320
+ <TaskRow title="Notes list with tag filter" done />
321
+ <TaskRow title="Attachment upload" note="10 MB" />
322
+ <TaskRow title="Share links" />
323
+ </Box>
324
+ <Lines n={4} widths={[92,84,70,44]} />
325
+ <Text value="Autosaves every two seconds" tone="muted" />
326
+ </Col>
327
+ <Col>
328
+ <SectionLabel label="Activity" />
329
+ <Row>
330
+ <IconSquare active />
331
+ <Lines n={2} widths={[72,42]} />
332
+ </Row>
333
+ <Row>
334
+ <IconSquare />
335
+ <Lines n={2} widths={[60,36]} />
336
+ </Row>
337
+ <Row>
338
+ <IconSquare />
339
+ <Lines n={2} widths={[68,30]} />
340
+ </Row>
341
+ <Divider />
342
+ <SectionLabel label="Editing now" />
343
+ <Row>
344
+ <IconSquare active />
345
+ <Text value="Ana" tone="muted" />
346
+ <Chips items={[{"label":"title locked"}]} />
347
+ </Row>
348
+ <Row>
349
+ <IconSquare />
350
+ <Text value="Ben" tone="muted" />
351
+ </Row>
352
+ <Divider />
353
+ <Btn label="Copy link" />
354
+ <Btn label="Archive note" />
355
+ </Col>
356
+ </Row>
357
+ <Divider />
358
+ <Row>
359
+ <Text value="Revision 18" tone="muted" />
360
+ <Text value="412 words" tone="muted" />
361
+ <Chips items={[{"label":"Online","active":true}]} />
362
+ </Row>
363
+ </FrameScreen>
364
+ </Screen>
365
+ </Artboard>
366
+ </Section>
367
+ <Section title="3 Share and settings" subtitle="Read-only links and the workspace settings tabs.">
368
+ <Artboard id="share" label="Share dialog" surface="web" x={1160} y={760} width={520} height={570} order={7}>
369
+ <Screen surface="web">
370
+ <FrameScreen>
371
+ <Row>
372
+ <Title text="Share \"Sprint planning\"" />
373
+ <Btn label="Close" />
374
+ </Row>
375
+ <Chips items={[{"label":"Link","active":true},{"label":"People"}]} />
376
+ <Box>
377
+ <Text value="Anyone with the link can view" tone="muted" />
378
+ <Lines n={1} widths={[70]} />
379
+ </Box>
380
+ <SectionLabel label="Link expires" />
381
+ <TaskRow title="In 7 days" done note="default" />
382
+ <TaskRow title="In 30 days" />
383
+ <TaskRow title="Never" />
384
+ <Divider />
385
+ <SectionLabel label="People with access" />
386
+ <Row>
387
+ <IconSquare active />
388
+ <Lines n={2} widths={[56,34]} />
389
+ </Row>
390
+ <Row>
391
+ <IconSquare />
392
+ <Lines n={2} widths={[62,30]} />
393
+ </Row>
394
+ <Row>
395
+ <IconSquare />
396
+ <Lines n={2} widths={[50,28]} />
397
+ </Row>
398
+ <Box>
399
+ <Text value="Viewers cannot edit, invite or download files." />
400
+ <Lines n={2} widths={[88,54]} />
401
+ </Box>
402
+ <Divider />
403
+ <Row>
404
+ <Btn label="Revoke link" />
405
+ <Btn label="Copy link" primary />
406
+ </Row>
407
+ </FrameScreen>
408
+ </Screen>
409
+ </Artboard>
410
+ <Artboard id="settings" label="Workspace settings" surface="web" x={1800} y={760} width={920} height={490} order={8}>
411
+ <Screen surface="web">
412
+ <FrameScreen>
413
+ <Row>
414
+ <IconSquare active />
415
+ <Title text="Workspace settings" />
416
+ <Lines n={1} widths={[50]} />
417
+ <Btn label="Back to notes" />
418
+ </Row>
419
+ <Row>
420
+ <Chips items={[{"label":"General","active":true},{"label":"Members"},{"label":"Sharing"},{"label":"Billing"},{"label":"Danger zone"}]} />
421
+ </Row>
422
+ <Row>
423
+ <Col>
424
+ <SectionLabel label="General" />
425
+ <Box>
426
+ <Text value="Workspace name" tone="muted" />
427
+ <Lines n={1} widths={[44]} />
428
+ </Box>
429
+ <Box>
430
+ <Text value="Web address" tone="muted" />
431
+ <Lines n={1} widths={[38]} />
432
+ </Box>
433
+ <Box>
434
+ <Text value="Default role" tone="muted" />
435
+ <Lines n={1} widths={[30]} />
436
+ </Box>
437
+ <TaskRow title="Allow share links" done />
438
+ <TaskRow title="Require two-step sign-in" />
439
+ <Btn label="Save changes" primary />
440
+ </Col>
441
+ <Col>
442
+ <SectionLabel label="Members (4)" />
443
+ <Row>
444
+ <IconSquare active />
445
+ <Lines n={2} widths={[66,40]} />
446
+ </Row>
447
+ <Row>
448
+ <IconSquare />
449
+ <Lines n={2} widths={[58,36]} />
450
+ </Row>
451
+ <Row>
452
+ <IconSquare />
453
+ <Lines n={2} widths={[70,30]} />
454
+ </Row>
455
+ <Row>
456
+ <IconSquare />
457
+ <Lines n={2} widths={[52,44]} />
458
+ </Row>
459
+ <Btn label="Invite member" />
460
+ </Col>
461
+ <Col>
462
+ <SectionLabel label="Danger zone" />
463
+ <Box dashed>
464
+ <Text value="Export workspace" weight="bold" />
465
+ <Lines n={2} widths={[80,50]} />
466
+ <Btn label="Export as ZIP" />
467
+ </Box>
468
+ <Box dashed>
469
+ <Text value="Delete workspace" weight="bold" />
470
+ <Lines n={2} widths={[76,46]} />
471
+ <Btn label="Delete" />
472
+ </Box>
473
+ </Col>
474
+ </Row>
475
+ <Divider />
476
+ <Row>
477
+ <Text value="Plan: Beta" tone="muted" />
478
+ <Text value="4 of 10 seats" tone="muted" />
479
+ <Chips items={[{"label":"Saved","active":true}]} />
480
+ </Row>
481
+ </FrameScreen>
482
+ </Screen>
483
+ </Artboard>
484
+ </Section>
485
+
486
+ <Annotation id="note-code" title="Code entry" targetId="verify" placement="right">
487
+
488
+ Paste fills all six boxes at once. The code expires after ten minutes and a resend invalidates the old one.
489
+
490
+ </Annotation>
491
+
492
+ <Annotation id="note-lock" title="Title lock" targetId="editor" placement="bottom">
493
+
494
+ While one person edits the title, others see it locked. Body text merges by last write per note.
495
+
496
+ </Annotation>
497
+
498
+ <Annotation id="note-expiry" title="Safe default" targetId="share" placement="bottom">
499
+
500
+ New links expire in seven days. Revoking takes effect within one minute.
501
+
502
+ </Annotation>
503
+
504
+ <Annotation id="note-danger" title="Destructive actions" targetId="settings" placement="bottom">
505
+
506
+ Delete needs the workspace name typed again and is only visible to owners.
507
+
508
+ </Annotation>
509
+
510
+ <Screen surface="web" label="Semantic sample: shared note page" caption="The read-only page a link recipient sees, as semantic HTML." html={"<header style=\"display:flex;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #8884\"><strong>Harbor Notes</strong><span>Read-only</span></header><main style=\"padding:16px;max-width:560px\"><h1>Sprint planning</h1><p>Shared by Ana, expires in 7 days.</p><h2>Goals</h2><ul><li>Reach a working workspace in two minutes</li><li>No lost text on concurrent edits</li></ul><h2>Next steps</h2><ol><li>Confirm scope freeze</li><li>Book the load test</li></ol><button>Request edit access</button></main>"} />
511
+ </DesignBoard>