diff --git a/claude-obsidian/__pycache__/claude-obsidian-synccpython-312.pyc b/claude-obsidian/__pycache__/claude-obsidian-synccpython-312.pyc index f3a7dcf..c8dc203 100644 Binary files a/claude-obsidian/__pycache__/claude-obsidian-synccpython-312.pyc and b/claude-obsidian/__pycache__/claude-obsidian-synccpython-312.pyc differ diff --git a/claude-obsidian/claude-obsidian-sync b/claude-obsidian/claude-obsidian-sync index d1dcf03..fd0d5a0 100755 --- a/claude-obsidian/claude-obsidian-sync +++ b/claude-obsidian/claude-obsidian-sync @@ -611,8 +611,8 @@ SKIPPED = "(empty, skipped)" EX_TEMPFAIL = 75 # "try again later" -- systemd logs it, the next timer run retries -def run_jobs(cfg, work, fn) -> tuple[int, int, str | None]: - ok = failed = 0 +def run_jobs(cfg, work, fn) -> tuple[int, int, str | None, int]: + ok = failed = skipped = 0 quota = None stop = threading.Event() # Future.cancel() cannot stop a job a worker already picked up @@ -632,7 +632,7 @@ def run_jobs(cfg, work, fn) -> tuple[int, int, str | None]: try: result = fut.result() if result == SKIPPED: - print(f"skip {label} (no conversation content)", flush=True) + print(f"skip {label} (no conversation content)", flush=True); skipped += 1 else: print(f"ok {label} -> {result}", flush=True); ok += 1 except (QuotaExhausted, BudgetExhausted) as e: @@ -644,7 +644,7 @@ def run_jobs(cfg, work, fn) -> tuple[int, int, str | None]: pass except Exception as e: # keep going; next run retries print(f"FAIL {label}: {e}", file=sys.stderr, flush=True); failed += 1 - return ok, failed, quota + return ok, failed, quota, skipped def finish(ok: int, failed: int, quota: str | None, dry_run, remaining: int, ledger: "Ledger | None" = None) -> None: @@ -738,10 +738,10 @@ def cmd_sync(cfg, args) -> None: src = str(p).replace(str(HOME), "~") return process(cfg, llm, vault, state, key, meta, "claude-code", "Code", fp, src, mode) - ok, failed, quota = run_jobs(cfg, [(w[0].name, *w) for w in work], lambda _l, p, fp, key: one(p, fp, key)) + ok, failed, quota, skipped = run_jobs(cfg, [(w[0].name, *w) for w in work], lambda _l, p, fp, key: one(p, fp, key)) if vault and ok: write_index(cfg, vault, state) - finish(ok, failed, quota, mode, total - ok, llm.ledger) + finish(ok, failed, quota, mode, total - ok - skipped, llm.ledger) def cmd_import(cfg, args) -> None: @@ -762,12 +762,12 @@ def cmd_import(cfg, args) -> None: llm, vault = LLM(cfg), (None if args.dry_run else Vault(cfg)) if vault: vault.ping() - ok, failed, quota = run_jobs(cfg, [((m.get("title") or m["session_id"])[:50], m, fp, key) for m, fp, key in work], + ok, failed, quota, skipped = run_jobs(cfg, [((m.get("title") or m["session_id"])[:50], m, fp, key) for m, fp, key in work], lambda _l, m, fp, key: process(cfg, llm, vault, state, key, m, "claude-ai", "Web", fp, None, args.dry_run)) if vault and ok: write_index(cfg, vault, state) - finish(ok, failed, quota, args.dry_run, total - ok, llm.ledger) + finish(ok, failed, quota, args.dry_run, total - ok - skipped, llm.ledger) def main() -> None: