sticky-note-cli 2.6.2 → 2.6.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sticky-note-cli",
3
- "version": "2.6.2",
3
+ "version": "2.6.4",
4
4
  "description": "Human-to-human handoff for AI coding assistants. Git-backed shared memory for Claude Code and Copilot CLI.",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -164,6 +164,22 @@ after. A raw `git checkout` or `git switch` will fail if sticky-note
164
164
  files have uncommitted changes. The alias `git sw <branch>` also works
165
165
  if set up by `npx sticky-note init`.
166
166
 
167
+ ### ⚠️ Overlap warnings (CRITICAL — always surface these)
168
+
169
+ Sticky-note hooks detect when your files overlap with other teammates'
170
+ open or stuck threads. When you see `[STICKY-NOTE] ⚠️ OVERLAP DETECTED`
171
+ in your injected context, you **MUST** immediately tell the user:
172
+
173
+ 1. Which teammates are working on overlapping files
174
+ 2. What they're working on (the thread narrative)
175
+ 3. Whether they're stuck (and what failed)
176
+ 4. How to coordinate (resume command)
177
+
178
+ **Do NOT silently absorb this context.** The overlap warning exists to
179
+ prevent two people from wasting hours on the same problem. Surface it
180
+ BEFORE doing any other work, even if the user asked you to do something
181
+ else first.
182
+
167
183
  ### `[STICKY-NOTE]` tags
168
184
 
169
185
  All sticky-note hooks prefix their output with `[STICKY-NOTE]`. When you
@@ -150,7 +150,8 @@ function detectAndFormatOverlaps(threads, currentUser) {
150
150
  });
151
151
 
152
152
  const lines = [
153
- "## [STICKY-NOTE] ⚠️ OVERLAP DETECTED\n",
153
+ "## [STICKY-NOTE] ⚠️ OVERLAP DETECTED — TELL THE USER IMMEDIATELY\n",
154
+ "**IMPORTANT: You MUST surface this warning to the user before doing anything else.**\n",
154
155
  "Someone else is working on files you're touching:\n",
155
156
  ];
156
157
  for (const { thread, overlap } of warnings) {
@@ -354,7 +354,8 @@ function formatOverlapWarnings(threads, currentUser, memory) {
354
354
  if (warnings.length === 0 && claims.length === 0) return "";
355
355
 
356
356
  const lines = [
357
- "## [STICKY-NOTE] ⚠️ OVERLAP DETECTED\n",
357
+ "## [STICKY-NOTE] ⚠️ OVERLAP DETECTED — TELL THE USER IMMEDIATELY\n",
358
+ "**IMPORTANT: You MUST surface this warning to the user before doing anything else.**\n",
358
359
  "Someone else is working on files you're touching:\n",
359
360
  ];
360
361
 
@@ -484,9 +485,13 @@ function main() {
484
485
  memory.threads || [], getUser(), memory
485
486
  );
486
487
 
487
- // V2.5: Mark eagerly-injected stuck threads so PreToolUse won't re-inject
488
- for (const threadId of threadResult.threadIds) {
489
- markThreadInjected(threadId, sessionId);
488
+ // V2.5: Mark eagerly-injected stuck threads so PreToolUse won't re-inject.
489
+ // Skip for Copilot CLI — its sessionStart output is not surfaced to the AI,
490
+ // so marking threads as injected would prevent inject-context from delivering them.
491
+ if (!_isCopilotCli()) {
492
+ for (const threadId of threadResult.threadIds) {
493
+ markThreadInjected(threadId, sessionId);
494
+ }
490
495
  }
491
496
 
492
497
  appendAuditLine({