@creator-notes/cnotes 0.59.0 → 0.59.1

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.
@@ -20,6 +20,9 @@ export declare const BRAND: {
20
20
  readonly url: "https://creatornotes.app";
21
21
  /** Bare domain. */
22
22
  readonly domain: "creatornotes.app";
23
+ /** Developer portal (docs only). The API stays on `url`; never a server target. */
24
+ readonly devUrl: "https://cnotes.dev";
25
+ readonly devDomain: "cnotes.dev";
23
26
  /** The installed command. */
24
27
  readonly command: "cnotes";
25
28
  /** Published package name. */
@@ -1 +1 @@
1
- {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/lib/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,KAAK;IAChB,kDAAkD;;IAElD,kEAAkE;;IAElE,mBAAmB;;IAEnB,6BAA6B;;IAE7B,8BAA8B;;IAE9B,uFAAuF;;IAEvF,oCAAoC;;CAE5B,CAAC"}
1
+ {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/lib/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,KAAK;IAChB,kDAAkD;;IAElD,kEAAkE;;IAElE,mBAAmB;;IAEnB,mFAAmF;;;IAGnF,6BAA6B;;IAE7B,8BAA8B;;IAE9B,uFAAuF;;IAEvF,oCAAoC;;CAE5B,CAAC"}
package/dist/lib/brand.js CHANGED
@@ -20,6 +20,9 @@ export const BRAND = {
20
20
  url: "https://creatornotes.app",
21
21
  /** Bare domain. */
22
22
  domain: "creatornotes.app",
23
+ /** Developer portal (docs only). The API stays on `url`; never a server target. */
24
+ devUrl: "https://cnotes.dev",
25
+ devDomain: "cnotes.dev",
23
26
  /** The installed command. */
24
27
  command: "cnotes",
25
28
  /** Published package name. */
@@ -1 +1 @@
1
- {"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/lib/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,kDAAkD;IAClD,IAAI,EAAE,eAAe;IACrB,kEAAkE;IAClE,GAAG,EAAE,0BAA0B;IAC/B,mBAAmB;IACnB,MAAM,EAAE,kBAAkB;IAC1B,6BAA6B;IAC7B,OAAO,EAAE,QAAQ;IACjB,8BAA8B;IAC9B,WAAW,EAAE,uBAAuB;IACpC,uFAAuF;IACvF,SAAS,EAAE,SAAS;IACpB,oCAAoC;IACpC,IAAI,EAAE,uBAAuB;CACrB,CAAC"}
1
+ {"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/lib/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,kDAAkD;IAClD,IAAI,EAAE,eAAe;IACrB,kEAAkE;IAClE,GAAG,EAAE,0BAA0B;IAC/B,mBAAmB;IACnB,MAAM,EAAE,kBAAkB;IAC1B,mFAAmF;IACnF,MAAM,EAAE,oBAAoB;IAC5B,SAAS,EAAE,YAAY;IACvB,6BAA6B;IAC7B,OAAO,EAAE,QAAQ;IACjB,8BAA8B;IAC9B,WAAW,EAAE,uBAAuB;IACpC,uFAAuF;IACvF,SAAS,EAAE,SAAS;IACpB,oCAAoC;IACpC,IAAI,EAAE,uBAAuB;CACrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@creator-notes/cnotes",
3
- "version": "0.59.0",
3
+ "version": "0.59.1",
4
4
  "description": "CLI for CreatorNotes — create notes, build canvases, search knowledge from the terminal",
5
5
  "type": "module",
6
6
  "bin": {
@@ -25,8 +25,12 @@ sections size themselves around their content, so no coordinates.
25
25
  | `3 · Advances` | The Project, Decision, or Customer the card names in `advances`, with a text card saying what becomes true if the block succeeds and which external send still needs a yes | from the card: `advances` |
26
26
  | `Where things live` (bottom) | Portals: the work board the card came from and the home board | none |
27
27
 
28
- Banner at the top, `richtext` medium, untinted, at most five sentences: the block
29
- day and time, the reading order, "answer on the card", where the portals go.
28
+ Banner at the top, `richtext` medium, untinted, at most five sentences, in the
29
+ cnotes skill's banner order (hard rule 7 under "Canvas Elements"): what happened,
30
+ what this board is for, who answers and where, how to read it. Then the lines
31
+ only this canvas needs: the block day and time, "answer on the card", where the
32
+ portals go. A banner that opens with the block time and the reading order and
33
+ never says what the card is about fails the cnotes cold-reader test.
30
34
  Reminder material (rules, operating plan) does not go on an orientation canvas;
31
35
  the home board carries it.
32
36
 
@@ -253,7 +253,11 @@ cnotes canvas digest <canvasId>
253
253
  # NAMING: never put an em-dash (—) or en-dash (–) in a canvas name. Use the interpunct
254
254
  # · (U+00B7, MIDDLE DOT — a small mid-height dot, NOT a bullet •) as the separator,
255
255
  # e.g. "Path to Revenue · Funding strategy", not "Path to Revenue — Funding strategy".
256
- cnotes canvas create "<name>" [--goal "<text>"] [--audience "<text>"] # prints Ref (CANVAS-N) + Link — surface them to the user (see "Surfacing the canvas link")
256
+ cnotes canvas create "<name>" --goal "<text>" [--audience "<text>"] # prints Ref (CANVAS-N) + Link — surface them to the user (see "Surfacing the canvas link")
257
+ # --goal is not optional in practice: write it FIRST, for a reader, as the decision or artifact
258
+ # the board exists to produce ("Decide whether X; pick the first slice"), never as a brief to
259
+ # yourself ("Research Tufte, diverge on..."). The goal renders only inside the (i) popover, so
260
+ # nobody sees it before the banner; the banner restates it (hard rule 7).
257
261
  cnotes canvas update <canvasId> [--title "<text>"] [--goal "<text>"] [--audience "<text>"]
258
262
  cnotes canvas delete <canvasId>
259
263
  cnotes canvas set-as-home <canvasId>
@@ -266,7 +270,7 @@ cnotes canvas add-node <canvasId> --note <noteId> [--x <n>] [--y <n>] # (despi
266
270
  # text = free-form rich text placed on the canvas (wire type: richtext). Markdown —
267
271
  # headings, emphasis, images. Optional background tint (--color); DEFAULT IS NO BACKGROUND.
268
272
  # A HEADING IS JUST `--content '# Q1 Goals'` with no tint — there is no separate heading
269
- # element. CARD-sized framing (at most ~3 sentences): orientation banners, emphasis
273
+ # element. CARD-sized framing (at most ~3 sentences; the orientation banner may run to ~5 and follows hard rule 7), emphasis
270
274
  # quoting a note, image tiles. Unversioned, unsearchable, no display ID (nothing can cite
271
275
  # it) — never the sole home of a claim. When the card names a note or canvas, write a
272
276
  # relationship mention with the REAL title, `[NOTE-12: Title](relationship:verb)`: it renders
@@ -878,7 +882,7 @@ A canvas holds two tiers of material, and the difference is load-bearing:
878
882
  | N distinct things (questions, risks, options, findings) | **N notes** grouped in a **list**; `--description` = one-line frame | bullets in one text element or in a list `--description` |
879
883
  | A named REGION of the canvas ("Shaping", "Open Questions") | a **section** frame (`add-section`) — draggable region, mention-addressable as `[[SECTION-<n>]]` from note bodies | a floating text heading over an implied area |
880
884
  | A heading / one-line label where a frame is too heavy (a column header inside a frame, a lane key) | a **text** element holding a markdown heading — `add-text --content '# Q1 Goals'`, no `--color` (leave it untinted), title case | a tinted card, or a section frame for something that isn't a region |
881
- | Prose telling the reader how to traverse THIS canvas | a **text** orientation banner (one per canvas or band; up to ~5 sentences) | a Guide note nobody needs off-canvas |
885
+ | Orientation: what happened, what this board is for, and how to read it | a **text** orientation banner in the fixed shape of rule 7 (one per canvas; a band may add a short one; up to ~5 sentences) | a reading-order-only banner, or a Guide note nobody needs off-canvas |
882
886
  | Emphasis — restating a key claim for screen presence | a **text** element that QUOTES a note (the note stays the home) | the text element as the only copy |
883
887
  | An image tile (logo, mockup, screenshot) | a **text** element holding the image, beside the owning note; embed the same image in the note body via `cnotes files upload <path> --markdown` so the note stays self-contained | the image as the knowledge itself |
884
888
  | A grid of images for review (mood board) | N text-element image tiles in a `grid` place spec + ONE note holding the decision criteria / rationale for the set | a caption note per tile, or rationale in the tiles |
@@ -906,14 +910,23 @@ A canvas holds two tiers of material, and the difference is load-bearing:
906
910
 
907
911
  Do not hand-pick a hex outside this table: the renderer snaps every tint to the nearest role by hue, so an off-palette color does not get you a new shade — it just picks a role imprecisely (`#c2410c` lands on Danger, not Warning). A tint colors the CARD only; text inside it keeps the normal prose colors, so the tint can never make a card harder to read. If you cannot name the role, omit the color.
908
912
 
909
- #### Two completion tests
913
+ 7. **The orientation banner opens for a stranger, in a fixed order.** The banner is the first and often the only card a cold reader sees (the goal sits behind the (i) button; nobody reads it first), so a banner that gives only the reading order fails: one shipped as "A story in six frames, read top to bottom. Frames 1 to 3 are the events: a release note is written, an agent writes an ad from it, the scope changes" and the reader could not say which release note, whose agent, or why any of it mattered. Write it in this order, at most ~5 sentences, heading = the board's subject (the canvas title or the goal), never a clever name for the banner:
914
+ 1. **What happened** — one dated sentence naming the people, products and events a stranger can look up ("On 19 September 2026 Deniss asked why CreatorNotes records every note a person opens but nothing an agent reads").
915
+ 2. **What this board is for** — the goal restated in reader's words: the decision or artifact it produces.
916
+ 3. **Who acts on it and how** — who decides, answers, or builds, and where the answer goes (as a mention chip with its real title, rule 2).
917
+ 4. **How to read it** — reading order and what each frame holds.
918
+ Nothing before the banner has defined anything, so no unnamed referents in it: not "the ad", "the app", "the scope", "the card" until the thing has been named or chipped. Wayfind maps and Attention orientation canvases add their own lines (destination, block time) after these four, never instead of them.
910
919
 
911
- Run both before ending your operation:
920
+ #### Three completion tests
921
+
922
+ Run all three before ending your operation:
912
923
 
913
924
  **The read-back test (for the next agent):** run `cnotes canvas read` and check that every claim is present as a NOTE section with a display ID, and the reasoning can be followed through note bodies and their mentions. Content that appears only as anonymous text-element prose fails the test even when visible — nothing can cite, search, or version it. List members read back as ID+title links without bodies; that is fine — the IDs are citable and batch-fetchable via `cnotes notes get`. As a heuristic for working canvases, at least ~4 notes per text element (zero text elements is fine); fewer means text elements are carrying content. Explainer canvases using the projection pattern (rule 4) are exempt from the ratio, not from the test.
914
925
 
915
926
  **The glance test (for the human):** zoomed to fit, a person should grasp what this canvas argues and where to start reading in about 10 seconds. A canvas that passes read-back but renders as an undifferentiated card grid is also not done — that is what section labels, orientation banners, projections, and layout are for.
916
927
 
928
+ **The cold-reader test (for the person who was not in the session):** cover everything but the banner. Can someone who never saw the conversation say what happened, what this board decides or produces, and who acts on it? If the banner only gives the reading order, or leans on "the ad" / "the app" / "the card" before naming them, it fails (rule 7). Run this on the banner text itself, not on your memory of the run.
929
+
917
930
  #### Worked example
918
931
 
919
932
  Right shape (a real competitor scan): 31 typed notes (COMPETITOR profile, FACT evidence row, INSIGHT verdicts per dimension, RISK/IDEA/STRATEGY response bands, QUESTION follow-ups in a list), three short text banners framing the bands ("Threats, Steals, Response — what hurts us, what's worth taking, the plan"), and labeled edges mirrored as mentions (`FACT-44 --grounds--> INSIGHT-361`).
@@ -137,8 +137,10 @@ The user arrives with a loose idea.
137
137
  `wayfind` plus the mode.
138
138
  5. **Place the map** in one `cnotes canvas place` spec: orientation banner,
139
139
  the four sections with their contents, blocking edges (blocker → dependent,
140
- label "blocks"). Banner is at most five sentences, plain display IDs only —
141
- mention syntax corrupts richtext.
140
+ label "blocks"). Banner is at most five sentences in the cnotes skill's banner
141
+ order (hard rule 7 under "Canvas Elements"): what happened and who asked,
142
+ the destination in reader's words, who resolves tickets and how, then how the
143
+ four frames read. Plain display IDs only — mention syntax corrupts richtext.
142
144
  6. **Fire the research subagents** for frontier research tickets; fold whatever
143
145
  returns into resolutions (steps 4–6 of the work loop) before closing.
144
146
  7. **Close the run, surface the canvas link, stop.** Charting resolves nothing