@seanyao/roll 2.604.1 → 3.0.0

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/lib/i18n/loop.sh CHANGED
@@ -7,8 +7,6 @@ _i18n_set en loop.roll_loop_s_active_02d_00 " • roll-loop %s active %02d:0
7
7
  _i18n_set zh loop.roll_loop_s_active_02d_00 " • roll-loop %s 有效窗口 %02d:00–%02d:00 %s(active %02d:00–%02d:00)"
8
8
  _i18n_set en loop.roll_dream_daily_at_02d_02d " • roll-.dream daily at %02d:%02d 每天 %02d:%02d"
9
9
  _i18n_set zh loop.roll_dream_daily_at_02d_02d " • roll-.dream daily at %02d:%02d 每天 %02d:%02d"
10
- _i18n_set en loop.roll_brief_daily_at_02d_02d " • roll-brief daily at %02d:%02d 每天 %02d:%02d"
11
- _i18n_set zh loop.roll_brief_daily_at_02d_02d " • roll-brief daily at %02d:%02d 每天 %02d:%02d"
12
10
  _i18n_set en loop.loop_already_enabled_for_this_project_2 "Loop already enabled for this project"
13
11
  _i18n_set zh loop.loop_already_enabled_for_this_project_2 "当前项目 loop 已启用"
14
12
  _i18n_set en loop.loop_enabled_2 "Loop enabled"
@@ -17,8 +15,6 @@ _i18n_set en loop.roll_loop_s_active_02d_00_2 " • roll-loop %s active %02d
17
15
  _i18n_set zh loop.roll_loop_s_active_02d_00_2 " • roll-loop %s 有效窗口 %02d:00–%02d:00 %s(active %02d:00–%02d:00)"
18
16
  _i18n_set en loop.roll_dream_daily_at_02d_02d_2 " • roll-.dream daily at %02d:%02d 每天 %02d:%02d"
19
17
  _i18n_set zh loop.roll_dream_daily_at_02d_02d_2 " • roll-.dream daily at %02d:%02d 每天 %02d:%02d"
20
- _i18n_set en loop.roll_brief_daily_at_02d_02d_2 " • roll-brief daily at %02d:%02d 每天 %02d:%02d"
21
- _i18n_set zh loop.roll_brief_daily_at_02d_02d_2 " • roll-brief daily at %02d:%02d 每天 %02d:%02d"
22
18
  _i18n_set en loop.loop_not_enabled_for_this_project "Loop not enabled for this project"
23
19
  _i18n_set zh loop.loop_not_enabled_for_this_project "当前项目 loop 未启用"
24
20
  _i18n_set en loop.loop_disabled "Loop disabled"
@@ -668,6 +668,12 @@ def load_runs(slug: str) -> Dict[str, Dict[str, Any]]:
668
668
  r = json.loads(line)
669
669
  except Exception:
670
670
  continue
671
+ # FIX-193: a stray line can parse as a bare JSON scalar (e.g. an
672
+ # agent pretty-printed a record across lines and `"FIX-181"` parses
673
+ # as a str) — r.get() then crashes the whole dashboard. Records
674
+ # must be objects; skip anything else.
675
+ if not isinstance(r, dict):
676
+ continue
671
677
  p = r.get("project", "")
672
678
  if p != slug and p != base and not p.startswith(f"{slug}-cycle-"):
673
679
  # String match failed — try path match for old-slug salvage.
@@ -1186,15 +1192,17 @@ def render(events, cron, state, backlog, *, days=3, lang="both", now=None,
1186
1192
  # would duplicate signal without adding info.
1187
1193
  print(eb_zh)
1188
1194
 
1189
- # US-LOOP-036: daily service (dream/brief) next-fire lines, read straight
1190
- # from the launchd plist so they reflect the latest `roll config <svc>-time`
1191
- # reload rather than a stale yaml-derived guess.
1192
- for _svc in ("dream", "brief"):
1195
+ # US-LOOP-036: daily service (dream) next-fire line, read straight from the
1196
+ # launchd plist so it reflects the latest `roll config dream-time` reload
1197
+ # rather than a stale yaml-derived guess.
1198
+ # FIX-194/FIX-195: brief loop retired — dream is the only daily service.
1199
+ for _svc in ("dream",):
1193
1200
  _sl = _daily_schedule_line(_svc, now=now)
1194
1201
  if _sl:
1195
1202
  print(" " + c("dim", _sl))
1196
- # FIX-151: dedicated loop (pr/ci/alert) last-tick age
1197
- for _loop in ("pr", "ci", "alert"):
1203
+ # FIX-151: dedicated loop last-tick age.
1204
+ # FIX-194: ci/alert loops retired — pr is the only dedicated loop tick.
1205
+ for _loop in ("pr",):
1198
1206
  _tl = _tick_age_line(_loop, now=now)
1199
1207
  if _tl:
1200
1208
  print(" " + c("dim", _tl))
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@seanyao/roll",
3
- "version": "2.604.1",
4
- "description": "Roll Roll out features with AI agents",
3
+ "version": "3.0.0",
4
+ "description": "Roll \u2014 Roll out features with AI agents",
5
+ "packageManager": "pnpm@11.1.3",
5
6
  "scripts": {
6
- "test": "bash tests/run.sh"
7
+ "test": "bash scripts/test-ts.sh",
8
+ "test:bats": "bash tests/run.sh",
9
+ "bundle": "node scripts/bundle.mjs",
10
+ "prepack": "pnpm -r build && pnpm bundle"
7
11
  },
8
12
  "keywords": [
9
13
  "ai",
@@ -18,11 +22,12 @@
18
22
  "url": "git+https://github.com/seanyao/roll.git"
19
23
  },
20
24
  "bin": {
21
- "roll": "bin/roll"
25
+ "roll": "dist/roll.mjs"
22
26
  },
23
27
  "license": "MIT",
24
28
  "author": "Sean Yao <sean.dlut@gmail.com>",
25
29
  "files": [
30
+ "dist/",
26
31
  "bin/",
27
32
  "conventions/",
28
33
  "lib/",
@@ -30,5 +35,14 @@
30
35
  "template/",
31
36
  "README.md",
32
37
  "CHANGELOG.md"
33
- ]
34
- }
38
+ ],
39
+ "engines": {
40
+ "node": ">=22"
41
+ },
42
+ "devDependencies": {
43
+ "@types/node": "^25.9.1",
44
+ "esbuild": "^0.28.0",
45
+ "typescript": "^6.0.3",
46
+ "vitest": "^4.1.8"
47
+ }
48
+ }