@m13v/s4l 1.7.5-rc.46 → 1.7.5-rc.48

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.
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "1.7.5-rc.46",
3
- "installedAt": "2026-07-16T19:12:33.534Z"
2
+ "version": "1.7.5-rc.48",
3
+ "installedAt": "2026-07-16T23:30:59.761Z"
4
4
  }
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.7.5-rc.46",
5
+ "version": "1.7.5-rc.48",
6
6
  "description": "Draft, review, approve, and autopilot X/Twitter posts.",
7
7
  "long_description": "## **⚠️ The disclaimer above is generic Claude boilerplate.** Anthropic shows the same warning on every plugin regardless of what it does; any plugin has the same level of access as any app you download from the internet.\n\nS4L is an open source product developed by Mediar.ai Incorporated, a VC-backed San Francisco-based startup.\n\nTo get started:\n\n1\\. Copy this prompt: **Set me up on S4L plugin end to end**\n\n2\\. Quit with CMD+Q, reopen Claude, paste into a new chat.\n\nWhat happens next:\n\n* About every 5 minutes S4L scans X for posts that match your topics and drafts replies in your voice.\n* Drafts show up as review cards, usually the first within a few minutes. Nothing is posted automatically; you approve each one.\n* Posting autopilot stays off until you explicitly turn it on.",
8
8
  "author": {
package/mcp/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m13v/s4l-mcp",
3
- "version": "1.7.5-rc.46",
3
+ "version": "1.7.5-rc.48",
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m13v/s4l",
3
- "version": "1.7.5-rc.46",
3
+ "version": "1.7.5-rc.48",
4
4
  "description": "Automated social posting pipeline for Reddit, X/Twitter, LinkedIn, and Moltbook. Install as a Claude Code agent skill.",
5
5
  "bin": {
6
6
  "social-autoposter": "bin/cli.js",
@@ -2504,7 +2504,7 @@ def _draft_iteration(plan, config, reddit_username):
2504
2504
 
2505
2505
  print(f"[post_reddit] Starting draft session for {len(candidates)} thread(s)...")
2506
2506
  start = time.time()
2507
- ok, output, usage = run_claude_structured(prompt, timeout=1200)
2507
+ ok, output, usage = run_claude_structured(prompt, timeout=1800)
2508
2508
  elapsed = time.time() - start
2509
2509
  print(f"[post_reddit] Draft finished in {elapsed:.0f}s (${usage['cost_usd']:.4f})")
2510
2510
 
@@ -1209,9 +1209,17 @@ def main() -> int:
1209
1209
  try:
1210
1210
  import twitter_browser as _tb # S4L_LOCK_ROLE=post already set above
1211
1211
  _tb._acquire_browser_lock() # preempts a live scan; sys.exit(1) if contended
1212
- os.environ["S4L_LOCK_OWNER"] = _tb._LOCK_SESSION_ID
1212
+ # _MUTEX.session_id, NOT the pre-2026-07-14 module global
1213
+ # _LOCK_SESSION_ID: the mutex refactor (db02eed1) removed that
1214
+ # symbol, and the stale reference made this line raise
1215
+ # AttributeError on EVERY batch. The parent then held the lock it
1216
+ # had just acquired while its own children (unable to inherit,
1217
+ # forbidden to preempt a post-role holder) each burned the full
1218
+ # 45s wait and failed, until the 180s POST_LOCK_EXPIRY freed the
1219
+ # tail: operator-box posting fell ~95% for two days (S4L-62).
1220
+ os.environ["S4L_LOCK_OWNER"] = _tb._MUTEX.session_id
1213
1221
  _batch_lock_held = True
1214
- print(f"[post] batch lock held by {_tb._LOCK_SESSION_ID} (role=post); "
1222
+ print(f"[post] batch lock held by {_tb._MUTEX.session_id} (role=post); "
1215
1223
  f"{_total} candidate(s) inherit it", flush=True)
1216
1224
  except SystemExit:
1217
1225
  # _acquire_browser_lock exits when a LIVE non-preemptable peer (another