Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
268 commits
Select commit Hold shift + click to select a range
25503fd
feat(hedgemony): RTS-style selection, right-click move, builder unit
MattBro May 13, 2026
162385f
feat(hedgemony): animated builder hedgehog with walk and build cycles
MattBro May 13, 2026
625d3c9
feat: add background music to Hedgemony map view
steventruong May 13, 2026
df8742e
feat: slice 2
sinthetix May 14, 2026
16a6072
feat: improve hedgemony map usability
MattBro May 14, 2026
600e345
docs(hedgemony): Builder two-button split + wild stays as third entry
MattBro May 14, 2026
c514c53
feat(hedgemony): Builder two-button split (Build nest + Quick nest)
MattBro May 14, 2026
8d2359f
feat(hedgemony): builder walks around nests via A* pathfinding
MattBro May 14, 2026
a58cc06
feat(hedgemony): wire GoalSpecDraftService into guided nest creation
Z3r0Sum May 14, 2026
c55c108
feat(hedgemony): forest-map backdrop, drop command-path lines
MattBro May 14, 2026
0080547
fix(hedgemony): plan from sprite's live position, snap goal along hea…
MattBro May 14, 2026
dd383a2
fix(hedgemony): nest movement feels RTS-y, not spring-snapped
MattBro May 14, 2026
09eacae
docs(hedgemony): capture RTS movement-feel rules in spec
MattBro May 14, 2026
6c9d20d
feat(hedgemony): SVG forest map with procedural terrain + scattered p…
MattBro May 14, 2026
de0ba13
feat(hedgemony): nest sprite as burrow with resident hog overlay
MattBro May 14, 2026
216ff3a
feat(hedgemony): structured spec-driven goal drafts
Z3r0Sum May 14, 2026
f8414f1
fix(hedgemony): transparent nest PNG; hog carries nest while relocating
MattBro May 14, 2026
3876eb0
feat: slice 3
sinthetix May 14, 2026
ac6e70c
fix(hedgemony): defer nest sprite until builder finishes building
MattBro May 14, 2026
b55624f
fix(code): Restore named leading-* utilities to fix oversized badges …
Twixes May 13, 2026
809c229
fix(terminal): focus xterm on first click and on attach (#2132)
posthog[bot] May 14, 2026
04f1408
refactor(hedgemony): extract builder coordinator hook, centralize coo…
MattBro May 14, 2026
c60a2b4
feat(hedgemony): RTS-style camera pan with arrows/WASD + edge-scroll
MattBro May 14, 2026
7371e52
test(hedgemony): cover deferred build flow in useBuilderCoordinator
MattBro May 14, 2026
103c601
fix(hedgemony): retry malformed goal-draft replies and surface a retr…
MattBro May 14, 2026
e36337a
feat(hedgemony): use repo picker dropdown in spawn dialog
MattBro May 14, 2026
f81727d
feat(hedgemony): collapse quick-nest form to a single prompt field
MattBro May 14, 2026
2af5e63
refactor(hedgemony): collapse view state into a discriminated ViewMode
MattBro May 14, 2026
fb66b43
feat(sessions): animate nest construction in cloud initializing view
MattBro May 14, 2026
384fb6b
refactor(hedgemony): drop X/Y inputs from place nest dialog
MattBro May 14, 2026
9c5b72d
fix(hedgemony): keep spawn dialog open when picking a repo
MattBro May 14, 2026
5b90b34
refactor(hedgemony): remove empty-state overlay
MattBro May 14, 2026
57089c0
add sound effects
steventruong May 14, 2026
ed36ace
fix(hedgemony): read original target from Radix outside-click event
MattBro May 14, 2026
307d55d
feat(sessions): make nest construction read as continuous building
MattBro May 14, 2026
4a506e0
feat(hedgemony): procedural sfx engine + voice line pipeline
seanosh May 14, 2026
8323f24
feat(hedgemony): swinging hammer overlay on in-progress brood hoglets
MattBro May 14, 2026
e94fedd
refactor(hedgemony): collapse PlaceNestDialog state into a reducer
MattBro May 14, 2026
067ae76
refactor(hedgemony): share hoglet status/PR tables between brood and …
MattBro May 14, 2026
d9c1661
refactor(hedgemony): extract spawn dialog outside-click guard with test
MattBro May 14, 2026
9bb38c9
infinity background
steventruong May 14, 2026
b56630f
changing canvas size
steventruong May 14, 2026
97b0552
refactor(hedgemony): table-driven prop scatter weights in MapBackdrop
MattBro May 14, 2026
6710732
feat(hedgemony): render a construction site while the builder builds
MattBro May 14, 2026
09a1e0b
feat(hedgemony): wire voice playback to select/move events
seanosh May 14, 2026
30f552a
feat: slice 4
sinthetix May 14, 2026
49ce594
fix(hedgemony): never auto-dismiss spawn dialog on outside click
MattBro May 14, 2026
296ec64
refactor(hedgemony): move tRPC subscriptions out of nest/hoglet stores
MattBro May 14, 2026
fa94fb2
feat(hedgemony): split voice/SFX volume from music
seanosh May 14, 2026
4e585a6
feat(hedgemony): nest bootstrap handoff, completion lifecycle, contex…
Z3r0Sum May 14, 2026
8b203bf
refactor(hedgemony): spawn hoglet UI from modal to side panel
MattBro May 14, 2026
a1820f6
revert: drop nest-themed animation from cloud initializing view
MattBro May 14, 2026
77fc6f4
feat(hedgemony): distinguish music vs voice/SFX controls by icon
seanosh May 14, 2026
0e848d9
feat(hedgemony): add RTS-style fullscreen map with minimap and bookmarks
MattBro May 14, 2026
38e734e
feat: slice 5
sinthetix May 14, 2026
490e3c8
feat(hedgemony): add Hedgehouse town hall as wild-hog spawn point
MattBro May 14, 2026
400e0e9
feat(hedgemony): wild hoglets roam the map + fix spawn panel containment
MattBro May 14, 2026
453ac0d
additional fix
steventruong May 14, 2026
13c6960
feat(hedgemony): upgrade goal drafting to Opus with effort and betas
Z3r0Sum May 14, 2026
63ad32f
fix again
steventruong May 14, 2026
23136db
fix(hedgemony): center hedgehouse on map origin, mirror affinityScore…
MattBro May 14, 2026
006918f
feat(hedgemony): select Hedgehouse, bottom action card, bottom spawn …
MattBro May 14, 2026
1174927
remove voices from hedgehouse
steventruong May 14, 2026
9a9f76b
fix(hedgemony): hide app chrome in fullscreen and mark portal no-drag
MattBro May 14, 2026
64d8a8d
feat(hedgemony): make F enter true fullscreen and add exit affordance
MattBro May 14, 2026
32fdb4f
feat(hedgemony): bookmark chips and middle-click drag-pan
MattBro May 14, 2026
afb178f
feat: slice 6
sinthetix May 14, 2026
747c0e7
feat(hedgemony): iterative spec refinement and drafting polish
Z3r0Sum May 14, 2026
264faad
fix(hedgemony): remove redundant relocate hint banner
MattBro May 14, 2026
bbf27e9
fix fullscreen top-edge pan and remove occluding shortcut hint
MattBro May 14, 2026
6dede7d
feat(hedgemony): hoglet select + right-click move + bottom chat panel
MattBro May 14, 2026
38932ab
feat(hedgemony): animate camera transitions on go-to actions
MattBro May 14, 2026
25ff81d
spawn wild hoglets next to the hedgehouse
MattBro May 14, 2026
6ce8a7a
feat(hedgemony): proper multi-turn LLM messages and transcript polish
Z3r0Sum May 14, 2026
6196825
feat: hoglet tooltips
sinthetix May 14, 2026
da271fa
feat: slice 7
sinthetix May 14, 2026
d51240b
fix(hedgemony): open repo dropdown upward in Send out a wild hog panel
MattBro May 14, 2026
108fb18
fix(hedgemony): unify conversation into a single chat panel
Z3r0Sum May 14, 2026
7e93a6c
fix(hedgemony): reliable auto-scroll in conversation panel
Z3r0Sum May 14, 2026
e7811ad
feat: fun mode
sinthetix May 14, 2026
b3ddd2f
add names
steventruong May 14, 2026
8fb1cd0
feat(hedgemony): persist nest draft across app restarts
Z3r0Sum May 14, 2026
0a44f56
fix(hedgemony): clamp oversized spec arrays instead of failing
Z3r0Sum May 14, 2026
b78c2d7
hoglets walk now
steventruong May 14, 2026
87d3a38
refactor(hedgemony): extract hoglet+nest mutations out of HedgemonyMa…
MattBro May 14, 2026
8266612
refactor(hedgemony): split hedgehog tick handlers into a registry
MattBro May 14, 2026
6650308
feat(hedgemony): box-select hoglets, retire mutation, command console
MattBro May 14, 2026
0555cc9
refactor(hedgemony): migrate remaining panels to CommandConsole
MattBro May 14, 2026
f9decc3
fix(hedgemony): swap relocate-nest icon to avoid send-button confusion
MattBro May 14, 2026
9efca5e
feat(hedgemony): include builder hedgehog in marquee selection
MattBro May 14, 2026
18327c9
feat: slice 8
sinthetix May 14, 2026
4e6f6ea
feat(hedgemony): add SC/AoE-style hotkeys to command console panels
MattBro May 14, 2026
bcd07aa
feat(hedgemony): nest collision for hoglet move orders
MattBro May 14, 2026
b9ee86c
refactor(hedgemony): split MapBackdrop into zones/scatter/props modules
MattBro May 14, 2026
874fda6
fix: propagate CommandConsole height so hoglet chat is visible
MattBro May 14, 2026
a7ef375
fix(hedgemony): hide fullscreen HUD noise and make console card opaque
MattBro May 14, 2026
9b54600
fix: keep CommandConsole bevel opaque in fullscreen
MattBro May 14, 2026
bec6788
fix(hedgemony): restore pathfinding for builder + extend to hoglets
MattBro May 14, 2026
8421c9d
feat: add expand toggle to hoglet panel
MattBro May 14, 2026
d3d5c03
feat(hedgemony): give wild-hog spawn panel full task-creation options
MattBro May 14, 2026
aaa8eb3
fix(hedgemony): use onComplete callbacks for hoglet path animation
MattBro May 14, 2026
e325594
test(hedgemony): cover multi-waypoint walking in useWalkTo
MattBro May 14, 2026
ab1cabf
death animation and sound bites, fix archiving
steventruong May 14, 2026
1cf7c55
fix(hedgemony): bump radii so hoglets stop outside the nest visual
MattBro May 14, 2026
3172a0c
feat(hedgemony): RTS-style hotkey coverage and in-game helper overlay
MattBro May 14, 2026
32278d8
fix(hedgemony): park builder outside the Hedgehouse obstacle
MattBro May 14, 2026
774c312
feat(hedgemony): keyboard selection for Builder, Hedgehouse, and nests
MattBro May 14, 2026
24f46db
feat(hedgemony): SC-style control groups (1-9) with Mod+Shift to assign
MattBro May 14, 2026
7982d7f
fix(hedgemony): route every hoglet move through pathfinding, not just…
MattBro May 14, 2026
a40c616
feat(hedgemony): wire message_hoglet to live sessions and harden tick…
Z3r0Sum May 14, 2026
a20572d
fix(hedgemony): bump builder spawn past inflated Hedgehouse radius
MattBro May 14, 2026
403eb31
fix: route hedgemony units around collisions
MattBro May 14, 2026
4aace99
feat(hedgemony): broaden signal-ingestion filter in dev builds
MattBro May 14, 2026
02ee89c
fix(hedgemony): escape obstacles radially outward, not across the int…
MattBro May 14, 2026
1dd32e7
fix: scroll nest detail panel to bottom on open
MattBro May 14, 2026
23af897
feat(hedgemony): add dev console command to trigger a test signal
MattBro May 14, 2026
303478c
fix: avoid clipping on rapid unit reorders
MattBro May 14, 2026
1a6b8e3
fix: actually scroll nest detail panel to bottom on open
MattBro May 14, 2026
bf8b375
fix(hedgemony): resync builder motion to planned origin on every path…
MattBro May 14, 2026
fe23b23
feat(hedgemony): add dev console stub to inject a signal hoglet directly
MattBro May 14, 2026
7d98424
fix(hedgemony): snap every resting hoglet position out of obstacles
Z3r0Sum May 14, 2026
c090802
fix(hedgemony): self-heal stranded builder positions before planning
MattBro May 14, 2026
121e649
refactor(hedgemony): consolidate position-snap helpers
MattBro May 14, 2026
8c33046
fix: use bottom sentinel + scrollIntoView for nest panel auto-scroll
MattBro May 14, 2026
89d2557
feat(hedgemony): add __hedgemonyListTasks dev console helper
MattBro May 14, 2026
900f9cb
fix(hedgemony): resolve hoglet-to-hoglet overlap with iterative colli…
Z3r0Sum May 14, 2026
66aaef4
fix(hedgemony): persist nest primary repo and default spawn_hoglet to it
MattBro May 14, 2026
97cd405
refactor(hedgemony): drop holding area, signal hoglets land on the map
MattBro May 14, 2026
e257398
feat(hedgemony): make hoglet ↔ nest affiliation visible
MattBro May 14, 2026
9968e22
feat(hedgemony): runtime preferences, tick abort, and spawn saga
Z3r0Sum May 14, 2026
98a9244
docs: add cr doc to handle
Z3r0Sum May 14, 2026
b0aa134
Merge remote-tracking branch 'origin/main' into hedgemony
Z3r0Sum May 14, 2026
ac7b1d9
Merge remote-tracking branch 'origin/hedgemony' into hedgemony
Z3r0Sum May 14, 2026
3e4b663
hedgemony: move nest panel to right drawer with hoglet list
MattBro May 14, 2026
c8e45f2
fix(code): give hoglets a repo when the hedgehog spawns them
MattBro May 14, 2026
504ad04
fix(code): default nest primaryRepository to most-recently-accessed repo
MattBro May 14, 2026
5d3b107
fix(hedgemony): widen pathfinding bbox so wide-detour paths actually …
MattBro May 14, 2026
ea00bda
fix(code): hide hedgemony hotkey launcher when a panel is selected
MattBro May 14, 2026
cd335ad
feat(code): highlight a hoglet's task in the sidebar when it is selected
MattBro May 14, 2026
a7177a1
fix(hedgemony): resolve GitHub user integration for nest-spawned hoglets
Z3r0Sum May 14, 2026
7d328c4
update voices from `voice-lines.json` and generate both male and fema…
seanosh May 14, 2026
4374f85
chore: fun voice plan
sinthetix May 14, 2026
f263269
fix(hedgemony): wrap external PR comment, CI, and follow-up fields in…
MattBro May 14, 2026
733360b
fix(hedgemony): atomic dedupe via onConflictDoNothing for feedback ev…
MattBro May 14, 2026
0377bc2
fix(hedgemony): anchor death animation to live sprite position
MattBro May 14, 2026
a1a2b5d
fix(hedgemony): cap pending event queues in feedback routing and pr-g…
MattBro May 14, 2026
5b823df
gender voice mapping
steventruong May 14, 2026
fc1fc13
feat(hedgemony): live collision resolution for sprites in transit
MattBro May 14, 2026
4f88fa9
docs(hedgemony): audit-status snapshot of vertical slices
MattBro May 14, 2026
b961dea
docs(hedgemony): modularity review notes
MattBro May 14, 2026
c289dda
fix(hedgemony): roll back orphaned task run when raise_hoglet partial…
MattBro May 14, 2026
66f8525
fix(hedgemony): hide fullscreen exit X when something is selected
MattBro May 14, 2026
dd3d442
feat: slice 9 and securitay
sinthetix May 14, 2026
c96b780
fix(hedgemony): enforce per-nest hourly tick cap via hedgemony_tick_log
MattBro May 14, 2026
dc10604
fix(hedgemony): reserve a pending dedupe row before emitting injectPr…
MattBro May 14, 2026
58b9ebe
feat(hedgemony): merge goal repos into known set and add
Z3r0Sum May 14, 2026
c3a0869
refactor(hedgemony): centralize tuning constants in config.ts
MattBro May 14, 2026
b169b5c
refactor(hedgemony): extract selectHogletAnimation as a pure function
MattBro May 14, 2026
3fff4dd
fix(hedgemony): register schema logger from main entry point
MattBro May 14, 2026
be45396
fix(hedgemony): clear pending camera commit timeout on rapid recall
MattBro May 14, 2026
ded1daa
fix: resolve merge conflict in useSignalIngestion.ts
steventruong May 14, 2026
5f68dcc
fix: renderer
sinthetix May 14, 2026
1c81862
perf(hedgemony): stop usePanCamera RAF when idle and cache edge-pan e…
MattBro May 14, 2026
891f548
refactor(hedgemony): extract useHogletVisuals hook
MattBro May 14, 2026
4f7f5d8
refactor(hedgemony): collapse WildHoglet and BroodHoglet onto useHogl…
MattBro May 14, 2026
5c5efad
refactor(hedgemony): extract computeMapClickAction pure reducer
MattBro May 14, 2026
ff0f41e
fix(hedgemony): buffer watch events until initial list resolves
MattBro May 14, 2026
d3ad3bb
fix(hedgemony): defer voice REGISTRY init until after its deps are de…
MattBro May 14, 2026
46f5bdb
hedgemony: remove PR-dependency lines between hoglets on the map
MattBro May 14, 2026
3160fa3
fix: rendering
sinthetix May 14, 2026
d81a8e1
perf(hedgemony): scope hoglet position subscriptions to each sprite
MattBro May 14, 2026
cfd1167
perf(hedgemony): memoize selectNests and stabilize PR-graph subs
MattBro May 14, 2026
7e0331a
minimap fixes
steventruong May 14, 2026
5529125
docs: plan for nest states and validation
Z3r0Sum May 14, 2026
022b553
refactor(hedgemony): move signal ingestion orchestration to main service
MattBro May 14, 2026
6234848
feat(hedgemony): add operator-override memory to gate hedgehog ticks
MattBro May 14, 2026
ff92d31
add lolcat and pirate voices per fun mode specs
seanosh May 14, 2026
f302f52
fix: ALL_MODES and ALL_GENDERS sit above the buildRegistry() call so …
seanosh May 14, 2026
f5f3f60
adding archive effects for nest
steventruong May 14, 2026
48f9cbd
docs: repo slug validation
Z3r0Sum May 14, 2026
71409df
feat(hedgemony): validate repo slugs and default hoglets to autonomous
Z3r0Sum May 14, 2026
33bd844
refactor(hedgemony): define repository and remote service interfaces
MattBro May 14, 2026
89cd973
refactor(hedgemony): implement Zustand and tRPC adapters for hedgemon…
MattBro May 14, 2026
4bdb462
refactor(hedgemony): inject dependencies into moveNest with rollback …
MattBro May 14, 2026
cea59a7
refactor(hedgemony): inject dependencies into adoptHoglet with rollba…
MattBro May 14, 2026
829e4ce
refactor(hedgemony): inject dependencies into releaseHoglet with roll…
MattBro May 14, 2026
1db803f
refactor(hedgemony): inject dependencies into handleHogletDrop
MattBro May 14, 2026
4082eab
refactor(hedgemony): inject dependencies into subscription initializers
MattBro May 14, 2026
bfd5ec3
refactor(hedgemony): extract BuilderStateMachine class with unit tests
MattBro May 14, 2026
f911eda
refactor(hedgemony): rewire useBuilderCoordinator as adapter over Bui…
MattBro May 14, 2026
5b2dc20
refactor(hedgemony): make builder position dependency explicit
MattBro May 14, 2026
b3e935f
chore: snapshot in-flight acp-extensions move and hedgemony notes
MattBro May 14, 2026
c1ab121
fix(hedgemony): harden goal-spec draft parsing against invalid priori…
Z3r0Sum May 14, 2026
89e37f4
feat: finops
sinthetix May 14, 2026
33b3fbb
feat: money hog
sinthetix May 14, 2026
b914b85
journal fix
sinthetix May 14, 2026
a369fd5
fix: accessibility handler
sinthetix May 14, 2026
155e2d3
demo emails
sinthetix May 14, 2026
c9da38f
refactor(hedgemony): add SceneTicker and FakeSceneTicker with unit tests
MattBro May 14, 2026
f235dc4
refactor(hedgemony): migrate AnimatedHedgehog to SceneTicker
MattBro May 14, 2026
4e3074d
refactor(hedgemony): migrate collision resolver to SceneTicker
MattBro May 14, 2026
84e4454
refactor(hedgemony): drive useWalkTo from SceneTicker
MattBro May 14, 2026
c37938a
refactor(hedgemony): migrate usePanCamera to SceneTicker
MattBro May 14, 2026
c8db84a
chore(hedgemony): snapshot in-flight map view and builder coordinator…
MattBro May 14, 2026
9fde986
fix(hedgemony): align hedgehouse sprite with its collision center
MattBro May 14, 2026
0ad29b1
fix(hedgemony): unblock repo access grants on mixed-case GitHub slugs
MattBro May 14, 2026
fbde075
feat: PUT MONEY HOG BACK
sinthetix May 14, 2026
31015d3
fix(hedgemony): keep Radix dialog overlays above fullscreen layer
MattBro May 14, 2026
625671c
docs(hedgemony): snapshot modularity refactor status
MattBro May 14, 2026
f81a8c9
fix(agent): set GIT_TERMINAL_PROMPT=0 to prevent git credential hangs
Z3r0Sum May 14, 2026
fdb15ca
feat(hedgemony): propagate hoglet task status to sprites and make hed…
Z3r0Sum May 18, 2026
6b253a3
fix(hedgemony): keep long nest messages from blowing out panel width
Z3r0Sum May 18, 2026
432705d
refactor(hedgemony): drop nest-accent dot from brood hoglet name pill
Z3r0Sum May 18, 2026
94dee32
test(hedgemony): align goal-spec retry assertion with new error text
MattBro May 14, 2026
f8a36b2
refactor(hedgemony): extract useHedgemonyHotkeys
MattBro May 18, 2026
4b3ed8d
refactor(hedgemony): extract useHedgemonySubscriptions
MattBro May 18, 2026
9f482ec
refactor(hedgemony): extract useCameraBookmarks
MattBro May 18, 2026
59674b3
refactor(hedgemony): extract HedgemonyController for mode and selecti…
MattBro May 18, 2026
baf8581
refactor(hedgemony): slim HedgemonyMapView render layer
MattBro May 18, 2026
3c22045
feat(hedgemony): close perception loop and add goal-complete exit
Z3r0Sum May 18, 2026
ccf056c
docs: add spec around commit attribution
Z3r0Sum May 18, 2026
8c359cd
feat(hedgemony): decomposition anchors and operator-actionable audits
Z3r0Sum May 18, 2026
59a38d7
feat(hedgemony): main-side direct injection for hedgehog messages
Z3r0Sum May 19, 2026
b66fee2
feat(hedgemony): hold tool, queue-aware probes, lockstep detection
Z3r0Sum May 19, 2026
d03ea32
feat(hedgemony): unwedge holds, add main-side hoglet perception
Z3r0Sum May 19, 2026
c57f6b9
feat(hedgemony): perceive every hoglet turn, not just terminal output
Z3r0Sum May 19, 2026
ddad91b
fix(hedgemony): accept structured LLM tool inputs across every tool
Z3r0Sum May 19, 2026
349aa86
docs(hedgemony): Stage 5 plan for package extraction
MattBro May 18, 2026
f29e94b
feat(hedgemony): move voice + bgm audio to posthog.com CDN
MattBro May 19, 2026
e0655e3
rename(hedgemony): hogcraft → code-rts in audio CDN refs
MattBro May 19, 2026
c8a93c8
fix(hedgemony): drop personal-email demo allowlist from useCanViewFinOps
MattBro May 19, 2026
609edcf
refactor(hedgemony): rename HEDGEMONY_FLAG constant to RTS_FLAG
MattBro May 20, 2026
2eb01e4
refactor(hedgemony): move hedgemony/ directories to rts/
MattBro May 20, 2026
cdcc4aa
refactor(hedgemony): rename Hedgemony*/hedgemony* file names to Rts*/…
MattBro May 20, 2026
4987bfe
refactor(hedgemony): rename Hedgemony*/hedgemony[A-Z] identifiers to …
MattBro May 20, 2026
c01fd9f
refactor(hedgemony): rename trpc namespace key, persistence keys, dat…
MattBro May 20, 2026
5ee557b
refactor(hedgemony): rename logger scopes, analytics events, react ke…
MattBro May 20, 2026
33f5999
refactor(hedgemony): final string + test fixture cleanup
MattBro May 20, 2026
e57f137
refactor(hedgemony): flatten migration chain into 0006_rts_schema
Z3r0Sum May 21, 2026
61a4c3e
chore(hedgemony): delete unused hedgemony-bgm.mp3
MattBro May 21, 2026
9b463cf
feat(rts): gate FinOps panel behind RTS_FINOPS_FLAG feature flag
MattBro May 21, 2026
beb8654
feat(code-rts): make signal ingestion an explicit operator opt-in
Z3r0Sum May 21, 2026
a8016b8
feat(rts): point audio CDN at code-rts.posthog.com (Cloudflare R2)
MattBro May 21, 2026
104e773
fix(rts): clean up BgmPlayer audio element + log play errors
MattBro May 21, 2026
3e6d3a9
chore(rts): namespace RTS-specific DB repositories + script
MattBro May 22, 2026
7a4c9d0
refactor(rts): replace cloud-task-client unsafe casts with zod schemas
MattBro May 22, 2026
7d3c560
test(rts): add unit tests for hedgehog handlers
MattBro May 22, 2026
6bc3930
refactor(rts): split NestDetailPanel into focused section components
MattBro May 22, 2026
6d5852d
refactor(rts): extract HedgehogDecisionRouter from HedgehogTickService
MattBro May 22, 2026
9f0c11e
fix(rts): tear down RTS services on shutdown + document CDN ownership
MattBro May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,13 @@ apps/code/resources/codex-acp/
# Licensed fonts (downloaded from S3 during CI)
apps/code/assets/fonts/BerkeleyMono/

# Hogcraft voice mp3s are hosted on posthog.com, generated locally for testing only.
# Regenerate with: node --env-file=.env scripts/generate-voice.mjs
apps/code/src/renderer/assets/sounds/voice/

# Local dev skills (override shipped + remote skills in dev mode)
plugins/posthog/local-skills/

# Symlinked copies of posthog, to make developing against those APIs easier
posthog-sym
.claude/stock-research/
1 change: 1 addition & 0 deletions apps/code/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
"@types/react-dom": "^19.1.0",
"@types/semver": "^7.7.1",
"@vitejs/plugin-react": "^4.2.1",
"@vitest/coverage-v8": "4.0.18",
"@vitest/ui": "^4.0.10",
"adm-zip": "^0.5.16",
"drizzle-kit": "^0.31.9",
Expand Down
152 changes: 152 additions & 0 deletions apps/code/src/main/db/migrations/0006_rts_schema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
CREATE TABLE `rts_feedback_event` (
`id` text PRIMARY KEY NOT NULL,
`nest_id` text,
`hoglet_task_id` text NOT NULL,
`source` text NOT NULL,
`payload_hash` text NOT NULL,
`payload_ref` text NOT NULL,
`trust_tier` text DEFAULT 'external' NOT NULL,
`routed_outcome` text NOT NULL,
`processed` text DEFAULT 'unknown' NOT NULL,
`injected_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL,
FOREIGN KEY (`nest_id`) REFERENCES `rts_nest`(`id`) ON UPDATE no action ON DELETE set null
);
--> statement-breakpoint
CREATE UNIQUE INDEX `rts_feedback_event_dedupe_idx` ON `rts_feedback_event` (`hoglet_task_id`,`source`,`payload_hash`);--> statement-breakpoint
CREATE INDEX `rts_feedback_event_nest_idx` ON `rts_feedback_event` (`nest_id`,`injected_at`);--> statement-breakpoint
CREATE TABLE `rts_hedgehog_state` (
`nest_id` text PRIMARY KEY NOT NULL,
`state` text DEFAULT 'idle' NOT NULL,
`last_tick_at` text,
`serialized_state_json` text,
`created_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL,
`updated_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL,
FOREIGN KEY (`nest_id`) REFERENCES `rts_nest`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `rts_hoglet` (
`id` text PRIMARY KEY NOT NULL,
`name` text,
`task_id` text NOT NULL,
`nest_id` text,
`signal_report_id` text,
`affinity_score` real,
`model` text,
`total_input_tokens` integer DEFAULT 0 NOT NULL,
`total_output_tokens` integer DEFAULT 0 NOT NULL,
`total_cache_read_tokens` integer DEFAULT 0 NOT NULL,
`total_cache_creation_tokens` integer DEFAULT 0 NOT NULL,
`total_cost_usd` real DEFAULT 0 NOT NULL,
`last_usage_at` text,
`created_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL,
`updated_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL,
`deleted_at` text,
FOREIGN KEY (`nest_id`) REFERENCES `rts_nest`(`id`) ON UPDATE no action ON DELETE set null
);
--> statement-breakpoint
CREATE UNIQUE INDEX `rts_hoglet_taskId_unique` ON `rts_hoglet` (`task_id`);--> statement-breakpoint
CREATE UNIQUE INDEX `rts_hoglet_signalReportId_unique` ON `rts_hoglet` (`signal_report_id`);--> statement-breakpoint
CREATE INDEX `rts_hoglet_nest_id_idx` ON `rts_hoglet` (`nest_id`);--> statement-breakpoint
CREATE TABLE `rts_nest_message` (
`id` text PRIMARY KEY NOT NULL,
`nest_id` text NOT NULL,
`kind` text NOT NULL,
`visibility` text DEFAULT 'summary' NOT NULL,
`source_task_id` text,
`body` text NOT NULL,
`payload_json` text,
`created_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL,
FOREIGN KEY (`nest_id`) REFERENCES `rts_nest`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE INDEX `rts_nest_message_nest_id_idx` ON `rts_nest_message` (`nest_id`);--> statement-breakpoint
CREATE INDEX `rts_nest_message_created_at_idx` ON `rts_nest_message` (`created_at`);--> statement-breakpoint
CREATE TABLE `rts_nest` (
`id` text PRIMARY KEY NOT NULL,
`name` text NOT NULL,
`goal_prompt` text NOT NULL,
`definition_of_done` text,
`map_x` integer NOT NULL,
`map_y` integer NOT NULL,
`status` text DEFAULT 'active' NOT NULL,
`health` text DEFAULT 'ok' NOT NULL,
`target_metric_id` text,
`loadout_json` text,
`primary_repository` text,
`total_input_tokens` integer DEFAULT 0 NOT NULL,
`total_output_tokens` integer DEFAULT 0 NOT NULL,
`total_cache_read_tokens` integer DEFAULT 0 NOT NULL,
`total_cache_creation_tokens` integer DEFAULT 0 NOT NULL,
`total_cost_usd` real DEFAULT 0 NOT NULL,
`last_usage_at` text,
`created_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL,
`updated_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL
);
--> statement-breakpoint
CREATE INDEX `rts_nest_status_idx` ON `rts_nest` (`status`);--> statement-breakpoint
CREATE TABLE `rts_operator_decision` (
`id` text PRIMARY KEY NOT NULL,
`nest_id` text NOT NULL,
`kind` text NOT NULL,
`subject_key` text NOT NULL,
`reason` text,
`created_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL,
`updated_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL,
FOREIGN KEY (`nest_id`) REFERENCES `rts_nest`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE INDEX `rts_operator_decision_nest_idx` ON `rts_operator_decision` (`nest_id`);--> statement-breakpoint
CREATE UNIQUE INDEX `rts_operator_decision_subject_idx` ON `rts_operator_decision` (`nest_id`,`kind`,`subject_key`);--> statement-breakpoint
CREATE TABLE `rts_pr_dependency` (
`id` text PRIMARY KEY NOT NULL,
`nest_id` text NOT NULL,
`parent_task_id` text NOT NULL,
`child_task_id` text NOT NULL,
`state` text NOT NULL,
`created_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL,
`updated_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL,
FOREIGN KEY (`nest_id`) REFERENCES `rts_nest`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE INDEX `rts_pr_dependency_nest_idx` ON `rts_pr_dependency` (`nest_id`);--> statement-breakpoint
CREATE INDEX `rts_pr_dependency_child_idx` ON `rts_pr_dependency` (`child_task_id`);--> statement-breakpoint
CREATE UNIQUE INDEX `rts_pr_dependency_triple_idx` ON `rts_pr_dependency` (`nest_id`,`parent_task_id`,`child_task_id`);--> statement-breakpoint
CREATE TABLE `rts_tick_log` (
`id` text PRIMARY KEY NOT NULL,
`nest_id` text NOT NULL,
`ticked_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL,
`outcome` text NOT NULL,
FOREIGN KEY (`nest_id`) REFERENCES `rts_nest`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE INDEX `rts_tick_log_window_idx` ON `rts_tick_log` (`nest_id`,`ticked_at`);--> statement-breakpoint
CREATE TABLE `rts_usage_event` (
`id` text PRIMARY KEY NOT NULL,
`nest_id` text,
`hoglet_id` text,
`task_id` text,
`task_run_id` text,
`turn_index` integer,
`team` text DEFAULT 'posthog-code' NOT NULL,
`product` text DEFAULT 'rts' NOT NULL,
`environment` text NOT NULL,
`system` text DEFAULT 'rts' NOT NULL,
`workload` text NOT NULL,
`purpose` text,
`model` text NOT NULL,
`input_tokens` integer DEFAULT 0 NOT NULL,
`output_tokens` integer DEFAULT 0 NOT NULL,
`cache_read_tokens` integer DEFAULT 0 NOT NULL,
`cache_creation_tokens` integer DEFAULT 0 NOT NULL,
`cost_usd` real DEFAULT 0 NOT NULL,
`cost_source` text NOT NULL,
`occurred_at` text DEFAULT (CURRENT_TIMESTAMP) NOT NULL,
FOREIGN KEY (`nest_id`) REFERENCES `rts_nest`(`id`) ON UPDATE no action ON DELETE set null,
FOREIGN KEY (`hoglet_id`) REFERENCES `rts_hoglet`(`id`) ON UPDATE no action ON DELETE set null
);
--> statement-breakpoint
CREATE INDEX `rts_usage_event_nest_idx` ON `rts_usage_event` (`nest_id`,`occurred_at`);--> statement-breakpoint
CREATE INDEX `rts_usage_event_hoglet_idx` ON `rts_usage_event` (`hoglet_id`,`occurred_at`);--> statement-breakpoint
CREATE INDEX `rts_usage_event_occurred_at_idx` ON `rts_usage_event` (`occurred_at`);--> statement-breakpoint
CREATE INDEX `rts_usage_event_workload_idx` ON `rts_usage_event` (`workload`,`occurred_at`);--> statement-breakpoint
CREATE UNIQUE INDEX `rts_usage_event_dedupe_idx` ON `rts_usage_event` (`task_run_id`,`turn_index`);
Loading