forked from Rockachopa/Timmy-time-dashboard
This commit is contained in:
@@ -54,6 +54,7 @@ REPO_ROOT = Path(__file__).resolve().parent.parent
|
|||||||
RETRO_FILE = REPO_ROOT / ".loop" / "retro" / "cycles.jsonl"
|
RETRO_FILE = REPO_ROOT / ".loop" / "retro" / "cycles.jsonl"
|
||||||
SUMMARY_FILE = REPO_ROOT / ".loop" / "retro" / "summary.json"
|
SUMMARY_FILE = REPO_ROOT / ".loop" / "retro" / "summary.json"
|
||||||
EPOCH_COUNTER_FILE = REPO_ROOT / ".loop" / "retro" / ".epoch_counter"
|
EPOCH_COUNTER_FILE = REPO_ROOT / ".loop" / "retro" / ".epoch_counter"
|
||||||
|
CYCLE_RESULT_FILE = REPO_ROOT / ".loop" / "cycle_result.json"
|
||||||
|
|
||||||
# How many recent entries to include in rolling summary
|
# How many recent entries to include in rolling summary
|
||||||
SUMMARY_WINDOW = 50
|
SUMMARY_WINDOW = 50
|
||||||
@@ -246,9 +247,37 @@ def update_summary() -> None:
|
|||||||
SUMMARY_FILE.write_text(json.dumps(summary, indent=2) + "\n")
|
SUMMARY_FILE.write_text(json.dumps(summary, indent=2) + "\n")
|
||||||
|
|
||||||
|
|
||||||
|
def _load_cycle_result() -> dict:
|
||||||
|
"""Read .loop/cycle_result.json if it exists; return empty dict on failure."""
|
||||||
|
if not CYCLE_RESULT_FILE.exists():
|
||||||
|
return {}
|
||||||
|
try:
|
||||||
|
raw = CYCLE_RESULT_FILE.read_text().strip()
|
||||||
|
# Strip hermes fence markers (```json ... ```) if present
|
||||||
|
if raw.startswith("```"):
|
||||||
|
lines = raw.splitlines()
|
||||||
|
lines = [l for l in lines if not l.startswith("```")]
|
||||||
|
raw = "\n".join(lines)
|
||||||
|
return json.loads(raw)
|
||||||
|
except (json.JSONDecodeError, OSError):
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
args = parse_args()
|
args = parse_args()
|
||||||
|
|
||||||
|
# Backfill from cycle_result.json when CLI args have defaults
|
||||||
|
cr = _load_cycle_result()
|
||||||
|
if cr:
|
||||||
|
if args.issue is None and cr.get("issue"):
|
||||||
|
args.issue = int(cr["issue"])
|
||||||
|
if args.type == "unknown" and cr.get("type"):
|
||||||
|
args.type = cr["type"]
|
||||||
|
if args.tests_passed == 0 and cr.get("tests_passed"):
|
||||||
|
args.tests_passed = int(cr["tests_passed"])
|
||||||
|
if not args.notes and cr.get("notes"):
|
||||||
|
args.notes = cr["notes"]
|
||||||
|
|
||||||
# Auto-detect issue from branch when not explicitly provided
|
# Auto-detect issue from branch when not explicitly provided
|
||||||
if args.issue is None:
|
if args.issue is None:
|
||||||
args.issue = detect_issue_from_branch()
|
args.issue = detect_issue_from_branch()
|
||||||
|
|||||||
Reference in New Issue
Block a user