social-autoposter 1.6.80 → 1.6.81
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/mcp/dist/version.json +2 -2
- package/mcp/manifest.json +1 -1
- package/mcp/menubar/s4l_menubar.py +22 -5
- package/mcp/package.json +1 -1
- package/package.json +1 -1
package/mcp/dist/version.json
CHANGED
package/mcp/manifest.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"dxt_version": "0.1",
|
|
3
3
|
"name": "social-autoposter",
|
|
4
4
|
"display_name": "S4L",
|
|
5
|
-
"version": "1.6.
|
|
5
|
+
"version": "1.6.81",
|
|
6
6
|
"description": "Draft, review, approve, and autopilot X/Twitter posts. Thin desktop client over the S4L pipeline.",
|
|
7
7
|
"long_description": "A guided assistant that drafts, reviews, and autopilots X/Twitter posts.\nTo get started:\n1. Click **Configure** and set every tool permission to **Always Allow**.\n2. Copy this prompt: **Set me up on S4L end to end**.\n3. Quit fully with CMD+Q, restart Claude, and paste the prompt into a new chat.",
|
|
8
8
|
"author": {
|
|
@@ -97,7 +97,13 @@ class S4LMenuBar(rumps.App):
|
|
|
97
97
|
self._last_blocker_code = None
|
|
98
98
|
self._sig = None # last rendered state signature; skip rebuild if unchanged
|
|
99
99
|
self._review_active = False # a review-card sequence is on screen
|
|
100
|
-
|
|
100
|
+
# Signature of the pending drafts last presented. We de-dup on the CONTENT
|
|
101
|
+
# of the pending set, NOT on the batch_id: the server intentionally reuses
|
|
102
|
+
# a constant batch_id ("review-queue") so a continuous autopilot's drafts
|
|
103
|
+
# accumulate into one queue. Keying de-dup on that constant suppressed every
|
|
104
|
+
# later batch for the life of this process (only a restart cleared it),
|
|
105
|
+
# which is exactly the "drafts queued but no cards" bug.
|
|
106
|
+
self._last_review_sig = None
|
|
101
107
|
self._spin_i = 0
|
|
102
108
|
self._spinner = None # fast rumps.Timer animating the title while busy
|
|
103
109
|
# Reliable self-check of our own Accessibility (TCC) grant — this is the
|
|
@@ -391,24 +397,35 @@ class S4LMenuBar(rumps.App):
|
|
|
391
397
|
if not req:
|
|
392
398
|
return
|
|
393
399
|
batch = req.get("batch_id")
|
|
394
|
-
if not batch
|
|
400
|
+
if not batch:
|
|
395
401
|
return
|
|
396
402
|
plan = st.read_plan(req.get("plan_path") or "")
|
|
397
403
|
drafts = st.review_drafts(plan)
|
|
398
404
|
# Nothing left to review (empty, missing plan, or all already posted via
|
|
399
|
-
# the chat surface) —
|
|
405
|
+
# the chat surface) — clear the signal and reset the signature so a future
|
|
406
|
+
# batch is presented fresh.
|
|
400
407
|
if not drafts:
|
|
401
|
-
self.
|
|
408
|
+
self._last_review_sig = None
|
|
402
409
|
st.clear_review_request()
|
|
403
410
|
return
|
|
411
|
+
# De-dup on the CONTENT of the pending set (each draft's plan index + reply
|
|
412
|
+
# text), not the constant batch_id. This means: re-present whenever NEW
|
|
413
|
+
# drafts arrive (the signature changes), but don't re-pop the identical
|
|
414
|
+
# cards we already showed for this same pending set. No restart is ever
|
|
415
|
+
# needed for new pending drafts to surface.
|
|
416
|
+
sig = tuple((d.get("n"), d.get("reply_text") or "") for d in drafts)
|
|
417
|
+
if sig == self._last_review_sig:
|
|
418
|
+
return
|
|
404
419
|
self._review_active = True
|
|
405
|
-
self._reviewed_batches.add(batch)
|
|
406
420
|
try:
|
|
407
421
|
import s4l_card
|
|
408
422
|
|
|
409
423
|
s4l_card.present_review(
|
|
410
424
|
drafts, lambda decisions: self._on_review_done(batch, decisions)
|
|
411
425
|
)
|
|
426
|
+
# Record as shown only AFTER the cards are actually up, so a transient
|
|
427
|
+
# card-UI failure never permanently suppresses this pending set.
|
|
428
|
+
self._last_review_sig = sig
|
|
412
429
|
except Exception as e:
|
|
413
430
|
# Card UI unavailable — don't strand the batch; chat review still works.
|
|
414
431
|
self._review_active = False
|
package/mcp/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@m13v/social-autoposter-mcp",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.81",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "Desktop MCP client for social-autoposter (X/Twitter rail): manual draft/review/approve loop, autopilot control, and stats. Thin wrapper over the existing pipeline scripts.",
|
|
6
6
|
"license": "MIT",
|
package/package.json
CHANGED