@easysociable/cli 0.1.6 → 0.1.8

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.
@@ -492,10 +492,11 @@ User wants a tracked job: "开一单", "open a run", "按完整流程", or a mul
492
492
  ### Platform gate (required before folder create)
493
493
 
494
494
  1. User already named platform(s) → use them.
495
- 2. Else **ask** (multi-select OK). Offer account’s `platforms` from `accounts/_index` (plus others user names).
496
- 3. **Do not** silently default to `x` when opening a run (default `x` still applies to other flows, e.g. watchlist filter).
497
- 4. **N platforms selected → N runs** (same topic/goal/pillar; independent selection/draft/ship).
498
- 5. Slug: include platform when N>1 or always OK — e.g. `2026-08-26-angle-x`, `…-linkedin`.
495
+ 2. Else **stop and ask a required multi-select platform question**. Offer the account’s `platforms` from `accounts/_index` plus any supported platforms the user may name: `x`, `linkedin`, `instagram`, `tiktok`, `threads`, `xiaohongshu`. The user must be able to select one or more.
496
+ 3. Do not create a folder, row, brief, or draft before the platform selection is answered.
497
+ 4. **Do not** silently default to `x` when opening a run (default `x` still applies to other flows, e.g. watchlist filter).
498
+ 5. **N platforms selected → N runs** (same topic/goal/pillar; independent platform craft, brief, draft, editor, rubric, and ship state).
499
+ 6. Slug: include the platform when N>1 or always OK — e.g. `2026-08-26-angle-x`, `…-linkedin`.
499
500
 
500
501
  ### Load platform craft (required — every run, every draft stage)
501
502
 
@@ -732,7 +732,7 @@
732
732
  brand: "观察台",
733
733
  search: "搜索 ID、一句话、来源…",
734
734
  overview: "总览", needs: "需求库", hits: "Hits", products: "产品库", recommendations: "推荐库", topics: "选题库", notes: "记录与知识", runs: "Run 档案", pub: "发布与复盘",
735
- notes_in: "记下的", notes_needs: "需求原话", notes_lib: "进库的",
735
+ notes_in: "记下的", notes_lib: "进库的",
736
736
  lead: "先认 IP,再看库存。",
737
737
  kpi_cap: "记下的", kpi_needs: "需求", kpi_hits: "Hits", kpi_lib: "进库的", kpi_topics: "选题", kpi_out: "下场",
738
738
  kpi_cap_sub: "Capture", kpi_needs_sub: "Needs 原话", kpi_lib_sub: "Swipe / Atom / Claim",
@@ -881,7 +881,7 @@
881
881
  brand: "Observatory",
882
882
  search: "Search ID, one-liner, source…",
883
883
  overview: "Overview", needs: "Needs", hits: "Hits", products: "Products", recommendations: "Recommendations", topics: "Topics", notes: "Notes & library", runs: "Run files", pub: "Shipped & review",
884
- notes_in: "Captured", notes_needs: "Needs", notes_lib: "Catalog",
884
+ notes_in: "Captured", notes_lib: "Catalog",
885
885
  lead: "Pick an IP, then inspect the stock.",
886
886
  kpi_cap: "Captured", kpi_needs: "Needs", kpi_hits: "Hits", kpi_lib: "Catalog", kpi_topics: "Topics", kpi_out: "Outcomes",
887
887
  kpi_cap_sub: "Capture", kpi_needs_sub: "Audience quotes", kpi_lib_sub: "Swipe / Atom / Claim",
@@ -2198,9 +2198,10 @@
2198
2198
 
2199
2199
  function renderNotes() {
2200
2200
  $list.innerHTML = "";
2201
+ if (notesTab === "needs") notesTab = "notes";
2201
2202
  const sub = document.createElement("div");
2202
2203
  sub.className = "subtabs";
2203
- sub.innerHTML = `<button data-t="notes">${t("notes_in")}</button><button data-t="needs">${t("notes_needs")}</button><button data-t="lib">${t("notes_lib")}</button>`;
2204
+ sub.innerHTML = `<button data-t="notes">${t("notes_in")}</button><button data-t="lib">${t("notes_lib")}</button>`;
2204
2205
  $list.appendChild(sub);
2205
2206
  sub.querySelectorAll("button").forEach(b => b.classList.toggle("on", b.dataset.t === notesTab));
2206
2207
  sub.onclick = (e) => {
@@ -2232,10 +2233,6 @@
2232
2233
  $list.appendChild(cards);
2233
2234
  return;
2234
2235
  }
2235
- if (notesTab === "needs") {
2236
- renderNeedsList($list);
2237
- return;
2238
- }
2239
2236
  const items = GRAPH.nodes.filter(n => n.lib && inScope(n));
2240
2237
  const subtypeOf = (n) => n.atom_type || n.form || n.claim_type || "";
2241
2238
  const kinds = [...new Set(items.map(n => n.kind))];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easysociable/cli",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "Agent-first CLI for EasySociable: Content Engine, Template, Slideshow, and MCP",
5
5
  "type": "module",
6
6
  "license": "MIT",