Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
158 commits
Select commit Hold shift + click to select a range
88cdbe0
chore(staging): staging auth base URL
jlwaugh Sep 29, 2026
948ff91
chore: update staging deployment URLs [skip ci]
github-actions[bot] Sep 29, 2026
f7b4f23
sync with main
jlwaugh Sep 29, 2026
8ce6772
chore: update staging deployment URLs [skip ci]
github-actions[bot] Sep 29, 2026
cb77e0e
sync with main
jlwaugh Sep 29, 2026
0adc7fb
chore: update staging deployment URLs [skip ci]
github-actions[bot] Sep 29, 2026
9949407
merge fix/org-switching for QA
jlwaugh Sep 29, 2026
5f22378
chore: update staging deployment URLs [skip ci]
github-actions[bot] Sep 29, 2026
7acb48f
merge fix/org-switching for QA
jlwaugh Sep 30, 2026
46117b4
chore: update staging deployment URLs [skip ci]
github-actions[bot] Sep 30, 2026
6771841
Merge remote-tracking branch 'origin/main' into staging
jlwaugh Sep 30, 2026
8dc3c51
Merge branch 'staging' of https://github.com/MultiAgency/dashboard in…
jlwaugh Sep 30, 2026
a0ae42d
chore: update staging deployment URLs [skip ci]
github-actions[bot] Sep 30, 2026
b3282db
chore(staging): publish staging config under the dev.multiagency.ai r…
jlwaugh Sep 30, 2026
5bd42c1
chore: update staging deployment URLs [skip ci]
github-actions[bot] Sep 30, 2026
1eeb796
Merge remote-tracking branch 'origin/main' into staging
jlwaugh Oct 4, 2026
414751b
Merge branch 'feature/member-registry' into staging
jlwaugh Oct 4, 2026
e429909
chore: update staging deployment URLs [skip ci]
github-actions[bot] Oct 4, 2026
6e0cdbf
fix(ui): show verified GitHub login to every viewer
jlwaugh Oct 4, 2026
420316e
feat: platform Members page with services agreement recording
jlwaugh Oct 4, 2026
a5b978f
chore: merge driver keeps each branch's deployment URLs in bos.config…
jlwaugh Oct 5, 2026
07d812e
Merge remote-tracking branch 'origin/fix/verified-github-read-only' i…
jlwaugh Oct 5, 2026
93166ce
Merge remote-tracking branch 'origin/feature/members-page' into staging
jlwaugh Oct 5, 2026
1f46451
chore: update staging deployment URLs [skip ci]
github-actions[bot] Oct 5, 2026
ff20e9d
feat: private work-order tracking for admins
jlwaugh Oct 5, 2026
6cb72c5
merge remote-tracking branch 'origin/feature/work-orders' into staging
jlwaugh Oct 5, 2026
b7d0931
chore: update staging deployment URLs [skip ci]
github-actions[bot] Oct 5, 2026
50e0c62
fix: merge driver keeps each module's URL and integrity together
jlwaugh Oct 5, 2026
54e5c21
fix(work-orders): count only this Agency's payouts, once, against all…
jlwaugh Oct 5, 2026
2ceb017
Merge remote-tracking branch 'origin/chore/bos-config-merge-driver' i…
jlwaugh Oct 5, 2026
a72312f
Merge remote-tracking branch 'origin/feature/work-orders' into staging
jlwaugh Oct 5, 2026
3d04006
chore: update staging deployment URLs [skip ci]
github-actions[bot] Oct 5, 2026
1d4c15c
fix(work-orders): keep signed orders out of draft, cover terminated p…
jlwaugh Oct 5, 2026
287ed55
fix(members): reset the agreement form when switching members
jlwaugh Oct 5, 2026
ad6b2ae
Merge remote-tracking branch 'origin/feature/work-orders' into staging
jlwaugh Oct 5, 2026
3ad43bb
Merge remote-tracking branch 'origin/feature/members-page' into staging
jlwaugh Oct 5, 2026
45f4304
chore: update staging deployment URLs [skip ci]
github-actions[bot] Oct 5, 2026
c1215a8
feat(work-orders): work orders with GitHub evidence, compensation req…
saadiqbal-dev Oct 22, 2026
552867a
feat(work-orders): Google Docs and Drive e-signature without n8n
saadiqbal-dev Oct 22, 2026
a3e8850
feat(work-orders): delivered work in client reports and overlap warning
saadiqbal-dev Oct 22, 2026
f4c3895
feat(work-orders): USD budgets paid in NEAR at the live price
saadiqbal-dev Oct 22, 2026
5e70565
feat(work-orders): read the Google service account key from a file path
saadiqbal-dev Oct 22, 2026
d9d7a88
fix(work-orders): read the agency's private projects in background work
saadiqbal-dev Oct 22, 2026
fdec993
fix(work-orders): require a Shared Drive folder for filled documents
saadiqbal-dev Oct 22, 2026
6fb4c19
feat(work-orders): sign work orders in the dashboard
saadiqbal-dev Oct 22, 2026
87207d0
fix(work-orders): load pdf-lib's prebuilt bundle so the API bundle st…
saadiqbal-dev Oct 22, 2026
85b1155
feat(work-orders): automatic payouts through a NEAR Intents agent
saadiqbal-dev Oct 22, 2026
c479d53
feat(work-orders): show the payout agent's NEAR balance
saadiqbal-dev Oct 22, 2026
dc37750
feat(work-orders): one-click agent top-up for every active work order
saadiqbal-dev Oct 22, 2026
712e017
refactor(work-orders): send emails only through Resend and drop n8n f…
saadiqbal-dev Oct 22, 2026
6f755e2
feat(work-orders): send work orders for e-signature through Documenso…
saadiqbal-dev Oct 22, 2026
b16e656
feat(work-orders): pick up Documenso signatures automatically
saadiqbal-dev Oct 22, 2026
ec8f488
refactor(work-orders): open documents in a new tab instead of an inli…
saadiqbal-dev Oct 22, 2026
8323af5
feat(work-orders): builder trust tiers and AI consistency check build…
saadiqbal-dev Oct 22, 2026
5776664
feat(payouts): server-signed payee rules, payout pre-checks and fundi…
saadiqbal-dev Oct 22, 2026
b2d6a75
feat(work-orders): scheduler, self-healing payouts and auto-activation
saadiqbal-dev Oct 22, 2026
fc6372e
feat(work-orders): automatic approval for trusted builders
saadiqbal-dev Oct 23, 2026
3b2a5e9
feat(settings): collapse each settings section until it's opened
saadiqbal-dev Oct 23, 2026
e514cbf
feat(work-orders): branded emails for the key work order steps
saadiqbal-dev Oct 26, 2026
b43db1f
fix(work-orders): signing panels no longer say Documenso sends the em…
saadiqbal-dev Oct 26, 2026
b0cabb4
fix(work-orders): agency emails go only to the representative's email
saadiqbal-dev Oct 26, 2026
7c3b1b5
fix(work-orders): guard payouts and signing, drop n8n and server owne…
jlwaugh Oct 26, 2026
d24cf03
Merge remote-tracking branch 'origin/feature/work-orders-integration'…
jlwaugh Oct 26, 2026
d609851
chore: update staging deployment URLs [skip ci]
github-actions[bot] Oct 26, 2026
49e9759
fix(work-orders): send the owner wallet's key when creating the payou…
jlwaugh Oct 26, 2026
d02821e
Merge remote-tracking branch 'origin/feature/work-orders-integration'…
jlwaugh Oct 26, 2026
d3c69ba
chore: update staging deployment URLs [skip ci]
github-actions[bot] Oct 26, 2026
daf982f
fix(work-orders): create the payout agent with the owner's sign-in key
jlwaugh Oct 26, 2026
dc1e5da
Merge remote-tracking branch 'origin/feature/work-orders-integration'…
jlwaugh Oct 26, 2026
dc8ddbb
chore: update staging deployment URLs [skip ci]
github-actions[bot] Oct 26, 2026
36f94d0
feat(work-orders): the agency representative signs first in Documenso
saadiqbal-dev Oct 26, 2026
00a4462
feat(work-orders): prompt the representative to sign first after offe…
saadiqbal-dev Oct 26, 2026
e67cb0e
feat(work-orders): remember a builder's GitHub login for the agency
saadiqbal-dev Oct 26, 2026
28c3a80
feat(work-orders): organization default representative
saadiqbal-dev Oct 26, 2026
742992d
feat(settings): prompt to rename a placeholder agency name
saadiqbal-dev Oct 26, 2026
cf97a1c
feat(payouts): quote payout readiness, check budget coverage and emai…
saadiqbal-dev Oct 26, 2026
a7df9c0
feat(work-orders): warn before approving or offering when the payout …
saadiqbal-dev Oct 26, 2026
c6e6d87
feat(db): google drive connection, template field map and work order …
saadiqbal-dev Oct 26, 2026
c3d2e5c
feat(work-orders): connect Google Drive per agency and map template f…
saadiqbal-dev Oct 26, 2026
15765e6
feat(ui): connect Google Drive, pick files and set up template fields
saadiqbal-dev Oct 26, 2026
77699cd
feat(work-orders): progress model with the next step and who it waits on
saadiqbal-dev Oct 26, 2026
395010e
feat(work-orders): setup status checks for sending work orders
saadiqbal-dev Oct 26, 2026
f07d969
fix(ui): open a settings section on in-app hash links
saadiqbal-dev Oct 26, 2026
0a44926
feat(ui): ready-to-send checklist on work orders, settings and the ne…
saadiqbal-dev Oct 26, 2026
af12421
feat(work-orders): count the work orders that need the agency
saadiqbal-dev Oct 26, 2026
75f9e38
feat(ui): turn the work orders list into an inbox
saadiqbal-dev Oct 26, 2026
6b12fc9
feat(ui): show how many work orders need you in the side menu
saadiqbal-dev Oct 26, 2026
7655451
fix(ui): preflight fix links open in a new tab; one agency name promp…
saadiqbal-dev Oct 26, 2026
70450de
feat(work-orders): activity route listing the emails sent for a work …
saadiqbal-dev Oct 26, 2026
2a98471
feat(ui): progress stepper, next step card and activity timeline for …
saadiqbal-dev Oct 26, 2026
b9eaa00
feat(ui): admin work order page leads with progress and the next step…
saadiqbal-dev Oct 26, 2026
9875e8f
feat(work-orders): preview the next auto-numbered work order code
saadiqbal-dev Oct 26, 2026
255b3ce
feat(ui): create and sign a work order in one step, with smart defaults
saadiqbal-dev Oct 26, 2026
4f2dc11
feat(ui): duplicate a work order into the next period
saadiqbal-dev Oct 26, 2026
3060dfb
feat(ui): clearer work orders inbox rows
saadiqbal-dev Oct 26, 2026
948866b
fix(work-orders): follow the n8n removal and owner-signed payout intents
saadiqbal-dev Oct 26, 2026
776891e
fix(work-orders): saving the signed PDF to Drive returns the admin view
saadiqbal-dev Oct 26, 2026
657fefd
fix(work-orders): read envelopes sent before agency-signs-first in th…
saadiqbal-dev Oct 27, 2026
ce48c41
fix(work-orders): the Google Drive callback only finishes for the use…
saadiqbal-dev Oct 27, 2026
cb7a013
feat(ui): warn about payout coverage after Create and sign too
saadiqbal-dev Oct 27, 2026
6a02ea4
refactor(work-orders): one waiting-on phrase, setup types from the AP…
saadiqbal-dev Oct 27, 2026
72a84ae
fix(work-orders): no double payouts, wNEAR top-ups, missing emails
jlwaugh Oct 27, 2026
098a1e8
fix(dao): failed proposals stay reserved until they expire; Trezu-for…
jlwaugh Oct 27, 2026
9361585
fix(work-orders): the Google callback compares the same actor that st…
saadiqbal-dev Oct 27, 2026
ccc671d
fix(ui): progress step captions stay inside their column, with the pe…
saadiqbal-dev Oct 27, 2026
48fcc42
feat(work-orders): renewals go out for signature with the new dates
saadiqbal-dev Oct 27, 2026
bfbbedb
fix(work-orders): keep agency actions from builders, sign through Doc…
saadiqbal-dev Oct 27, 2026
0c343df
style(emails): match the MultiAgency site: flat square layout, site c…
saadiqbal-dev Oct 27, 2026
77fc1fe
style(emails): the MultiAgency grid logo inline in the header, black …
saadiqbal-dev Oct 27, 2026
0bc0fa9
style(emails): mobile layout: full-width card, stacked details and fu…
saadiqbal-dev Oct 27, 2026
1f6fa4d
fix(payouts): no more broken NEAR Intents explorer links for payouts
saadiqbal-dev Oct 27, 2026
241da82
fix(work-orders): renewal email fits the signing flow; a successful o…
saadiqbal-dev Oct 27, 2026
d175d65
Merge pull request #82 from MultiAgency/feature/work-orders-integration
jlwaugh Oct 27, 2026
202212f
chore: update staging deployment URLs [skip ci]
github-actions[bot] Oct 27, 2026
c09caee
Merge pull request #83 from MultiAgency/feature/work-orders-integration
jlwaugh Oct 27, 2026
6daf11e
chore: update staging deployment URLs [skip ci]
github-actions[bot] Oct 27, 2026
7f8fe45
Merge PR #82 into feature/work-orders-integration; DAO migrations ren…
jlwaugh Oct 27, 2026
d45e092
Merge remote-tracking branch 'origin/staging' into feature/work-order…
jlwaugh Oct 27, 2026
01791aa
fix(work-orders): signers stay on Documenso's completion page instead…
jlwaugh Oct 27, 2026
e51b040
fix(work-orders): no DAO start or link while an agent payout may have…
jlwaugh Oct 27, 2026
e534915
chore: update staging deployment URLs [skip ci]
github-actions[bot] Oct 27, 2026
ca40d93
fix(work-orders): no payouts after termination, guarded state changes…
itexpert120 Oct 28, 2026
237d612
feat(ui): touch-friendly base components, status colours, clearer wor…
itexpert120 Oct 28, 2026
9268c40
style(ui): off-white page instead of the dot grid, plainer work-order…
itexpert120 Oct 28, 2026
93c045a
fix(work-orders): terminated orders only offer actions that can still…
itexpert120 Oct 28, 2026
b2fc9ba
Merge pull request #84 from MultiAgency/fix/staging-review
jlwaugh Oct 28, 2026
8a45f20
chore: update staging deployment URLs [skip ci]
github-actions[bot] Oct 28, 2026
94bc74a
chore: migrate to everything.dev v2 (rc.25)
jlwaugh Oct 28, 2026
2dff9c5
Merge remote-tracking branch 'origin/staging' into feature/everything…
jlwaugh Oct 28, 2026
c90d9bf
Merge remote-tracking branch 'origin/staging' into feature/everything…
jlwaugh Oct 28, 2026
1d1edb9
fix(ci): generate types before tests, as typecheck does
jlwaugh Oct 28, 2026
a5cfad2
chore: sync with bos upgrade to match other v2 migrations
itexpert120 Oct 28, 2026
a18fa89
build: everything.dev rc.27; guard CI workflows
jlwaugh Oct 29, 2026
eba17f0
feat(work-orders): simpler first work order, Home, clearer list and d…
saadiqbal-dev Oct 30, 2026
06887e5
build: drop unused template dependencies
jlwaugh Oct 30, 2026
da7e840
fix(work-orders): safer terminate and delete, project and draft guards
jlwaugh Oct 30, 2026
ac759cc
Merge pull request #86 from MultiAgency/feature/from-staging
jlwaugh Oct 30, 2026
e3e4f7b
chore: update staging deployment URLs [skip ci]
github-actions[bot] Oct 30, 2026
6c251d2
Merge remote-tracking branch 'origin/staging' into upgrade/everything-v2
jlwaugh Oct 30, 2026
4553b09
fix(platform): invite admin from server on approval
jlwaugh Oct 30, 2026
e47dfe1
Merge pull request #85 from MultiAgency/upgrade/everything-v2
jlwaugh Oct 30, 2026
24056c6
email whoever has to act next, and tell builders when an order is end…
saadiqbal-dev Oct 30, 2026
a8ee630
keep the rep's name and email together, signer's own email on counter…
saadiqbal-dev Oct 30, 2026
3b141a7
fix(work-orders): notify the right people on drafts, cancels and term…
jlwaugh Oct 31, 2026
5172d0e
fix(work-orders): renewals go out for signature; summary names the se…
jlwaugh Oct 31, 2026
3045694
Merge pull request #87 from MultiAgency/fix/work-order-emails
itexpert120 Oct 31, 2026
e90f7b8
Merge pull request #89 from MultiAgency/fix/work-order-wording
itexpert120 Nov 2, 2026
14cbed1
fix(work-orders): refuse rejecting a request while its DAO proposal i…
itexpert120 Nov 2, 2026
23be6e9
fix(work-orders): accept only http(s) links for manual items and docu…
itexpert120 Nov 2, 2026
954ad4b
fix(work-orders): link a NEAR work order's proposal only after its DA…
itexpert120 Nov 2, 2026
292a6d3
fix(dao): don't save an expiry inferred from the voting period as final
itexpert120 Nov 2, 2026
836b6ec
fix(dao): keep the original error when a proposal lookup fails with a…
itexpert120 Nov 2, 2026
330232f
fix(auth): treat an Organization without a status as active in member…
itexpert120 Nov 2, 2026
647b40b
fix(work-orders): claim payout-blocked notifications atomically
itexpert120 Nov 2, 2026
d356bb3
fix(ui): show members a notice on the settings page instead of an error
itexpert120 Nov 2, 2026
809477f
fix(ui): open work order documents in a tab without an opener
itexpert120 Nov 2, 2026
c768e66
ci(staging): pass Railway workspace token and IDs so deploys can pin …
itexpert120 Nov 2, 2026
8a109ce
chore: upgrade everything-dev to 2.0.0-rc.29
itexpert120 Nov 2, 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
  •  
  •  
  •  
165 changes: 165 additions & 0 deletions .bos/sync-snapshot.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
{
"timestamp": "2026-10-29T08:27:53.915Z",
"files": {
".env.example": "1cc4e7e699b4c2b6",
".gitignore": "fc2a48f144174f1b",
"biome.json": "42eb28ab6de9b2d8",
"package.json": "0dc4cb05afd8f672",
".github/workflows/ci.yml": "581816dd542d83e8",
".github/workflows/deploy.yml": "e29ad815b9e155c3",
".github/workflows/staging.yml": "a7abb67acc4c9fa9",
"ui/package.json": "e06e1fe68d4fd498",
"ui/postcss.config.mjs": "2e8e873280319959",
"ui/tsconfig.json": "6ee6f7d245baee21",
"api/package.json": "72df7063cbb3c5ea",
"api/plugin.dev.ts": "ce4813efdb2bb94d",
"api/tsconfig.json": "55f76a4f6877cf53",
"api/drizzle.config.ts": "e6021f35b5691c2f",
"api/src/global.d.ts": "6375a54827bfd7cf",
"api/tests/types.d.ts": "6bcecd32da4ef4a7",
"skills-lock.json": "0e08d2ce05877269",
"docs/agents/triage-labels.md": "4f53c9b40ce2651e",
"docs/agents/testing.md": "d44d3e87196962ae",
"docs/agents/runtime-map.md": "5af51a0856be21ea",
"docs/agents/issue-tracker.md": "a56eda57327656d5",
"docs/agents/how-it-fits.md": "cf9f9512c165a5cf",
"docs/agents/effect-patterns.md": "6b702931629dc0fc",
"docs/agents/domain.md": "56fa9506a609cf9b",
"docs/agents/coding-standards.md": "8fb3f561ad967dda",
"docs/agents/change-placement.md": "c25987ba90c99667",
".agents/skills/writing-shape/SKILL.md": "f5e6c57bdd85178a",
".agents/skills/writing-for-agents/SKILL.md": "551adca942227b44",
".agents/skills/writing-for-agents/SKILL-MECHANICS.md": "c768e6307c7c1072",
".agents/skills/writing-fragments/SKILL.md": "298b0edd23df2291",
".agents/skills/wizard/template.sh": "33cbe9dfb1d0e918",
".agents/skills/wizard/SKILL.md": "bdf31d48211ea559",
".agents/skills/writing-beats/SKILL.md": "a96abafa2372eede",
".agents/skills/wait-what/SKILL.md": "d961bb37defd975c",
".agents/skills/to-tickets/SKILL.md": "5c9fba69845c2519",
".agents/skills/triage/SKILL.md": "917b0baf74be583e",
".agents/skills/triage/OUT-OF-SCOPE.md": "1fbf9b432130c638",
".agents/skills/triage/AGENT-BRIEF.md": "7f5f87fed3033df1",
".agents/skills/wayfinder/SKILL.md": "fee6e1d0c50f0e73",
".agents/skills/to-spec/SKILL.md": "43ad9cf318e5e7d3",
".agents/skills/teach/SKILL.md": "a32df9dcdfc0c4fd",
".agents/skills/teach/RESOURCES-FORMAT.md": "e9cacf34026e11a8",
".agents/skills/teach/MISSION-FORMAT.md": "8cacbb3c0644d3ae",
".agents/skills/teach/LEARNING-RECORD-FORMAT.md": "701fa34b6748aa89",
".agents/skills/teach/GLOSSARY-FORMAT.md": "9b99859ec2843766",
".agents/skills/to-questionnaire/SKILL.md": "b5eb929842ee0e93",
".agents/skills/setup-ts-deep-modules/dependency-cruiser.config.cjs": "3c4973bec69f73b2",
".agents/skills/setup-ts-deep-modules/SKILL.md": "29acca66ac99d453",
".agents/skills/setup-pre-commit/SKILL.md": "c9819d7f1e3b1980",
".agents/skills/tdd/tests.md": "859f9e592c188fda",
".agents/skills/tdd/mocking.md": "3ceb807fdf4a47d6",
".agents/skills/tdd/SKILL.md": "93ea419b76e9caaf",
".agents/skills/setup-matt-pocock-skills/triage-labels.md": "4f53c9b40ce2651e",
".agents/skills/setup-matt-pocock-skills/issue-tracker-local.md": "7dcda20a2eb4bdc8",
".agents/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md": "ea175f73d193b3f5",
".agents/skills/setup-matt-pocock-skills/issue-tracker-github.md": "afd6852a80185217",
".agents/skills/setup-matt-pocock-skills/domain.md": "593a7042218689f1",
".agents/skills/setup-matt-pocock-skills/SKILL.md": "9a0c21694be19fa3",
".agents/skills/scaffold-exercises/SKILL.md": "75f5c9d771606fb9",
".agents/skills/review-animations/STANDARDS.md": "e7d3605034acda54",
".agents/skills/review-animations/SKILL.md": "6ff590d29e436766",
".agents/skills/research/SKILL.md": "985569f15739c713",
".agents/skills/retro/SKILL.md": "33fbc28568e3146f",
".agents/skills/pick-ui-library/SKILL.md": "675fdce308683256",
".agents/skills/pr/SKILL.md": "ab63f1cf78647389",
".agents/skills/pr/CREDITS.md": "a7a087127665d729",
".agents/skills/prototype/UI.md": "723211e878acbc7b",
".agents/skills/prototype/SKILL.md": "714de632d116bb73",
".agents/skills/prototype/LOGIC.md": "f61c7d249e786a79",
".agents/skills/migrate-to-shoehorn/SKILL.md": "de4da4c11d924fac",
".agents/skills/loop-me/SKILL.md": "e44d1cc3e760fb86",
".agents/skills/improve-codebase-architecture/SKILL.md": "552240a5ab5cec6b",
".agents/skills/improve-codebase-architecture/HTML-REPORT.md": "581e8bb5a521e46b",
".agents/skills/improve-animations/SKILL.md": "7396244746443347",
".agents/skills/improve-animations/PLAN-TEMPLATE.md": "0a08ac8e23fd2082",
".agents/skills/improve-animations/AUDIT.md": "551c8473e20e5f47",
".agents/skills/improve/SKILL.md": "a9f6689762d307db",
".agents/skills/implement-spec/SKILL.md": "7a22dd2e60b8fcec",
".agents/skills/mobile-native/SKILL.md": "888b7651d66d66db",
".agents/skills/implement/SKILL.md": "6d3fd9e83b8f36e5",
".agents/skills/grilling/SKILL.md": "10ff989e7498b23b",
".agents/skills/handoff/SKILL.md": "7c62de979fdc7ac3",
".agents/skills/grill-with-docs/SKILL.md": "7de372c13488f1ee",
".agents/skills/grill-me/SKILL.md": "caaf8b8de1684f96",
".agents/skills/find-animation-opportunities/SKILL.md": "d52a377819b84a71",
".agents/skills/git-guardrails-claude-code/SKILL.md": "69b291d655626a01",
".agents/skills/everything-dev-app/SKILL.md": "cbb443391366c61b",
".agents/skills/emil-design-eng/SKILL.md": "ffbe68e6007fb42c",
".agents/skills/domain-modeling/SKILL.md": "7b925d7b1e341a2e",
".agents/skills/domain-modeling/GLOSSARY-FORMAT.md": "21dcc40cdec8e151",
".agents/skills/domain-modeling/ADR-FORMAT.md": "944c92aa790e8fbd",
".agents/skills/fastkv-registry/SKILL.md": "5ccaf2bc324a226d",
".agents/skills/diagnosing-bugs/SKILL.md": "9168404abda0967a",
".agents/skills/codebase-design/SKILL.md": "2c20617f87ec8af6",
".agents/skills/codebase-design/DESIGN-IT-TWICE.md": "52b52e75655a27ae",
".agents/skills/codebase-design/DEEPENING.md": "f3dd099ce99289bd",
".agents/skills/code-review/SKILL.md": "47f4e52c21694def",
".agents/skills/break-ui/SKILL.md": "e7eec1d70ac56a04",
".agents/skills/break-ui/CATALOG.md": "7358efcc6bb48e35",
".agents/skills/ask-matt/SKILL.md": "32b3c71d6dbb5a7c",
".agents/skills/ask-matt/PHASE-BOUNDARIES.md": "a8aa20158609ef39",
".agents/skills/apple-design/SKILL.md": "77bb63b7043bb93a",
".agents/skills/ask-sonner/SKILL.md": "39f3ee185b3aa2cf",
".agents/skills/ask-sonner/API.md": "4bb06f482c575752",
".agents/skills/claude-handoff/SKILL.md": "6738e8b7c7899ea0",
".agents/skills/animation-vocabulary/SKILL.md": "40d2b27adfdfeb05",
".agents/skills/animation-performance/SKILL.md": "ceb9dd3fe9126158",
".agents/skills/animate/SKILL.md": "b8ede161270458e6",
".agents/skills/animate/RECIPES.md": "21ff63d84391db8d",
".agents/skills/writing-for-agents/agents/openai.yaml": "eacb24b2a618cfb8",
".agents/skills/writing-shape/agents/openai.yaml": "56de45430e23104f",
".agents/skills/writing-fragments/agents/openai.yaml": "81167f25ee8ea1bb",
".agents/skills/wizard/agents/openai.yaml": "98f44d682d58e262",
".agents/skills/writing-beats/agents/openai.yaml": "ddaef01da61d8e3c",
".agents/skills/wait-what/agents/openai.yaml": "b41faadf741d51e4",
".agents/skills/to-tickets/agents/openai.yaml": "21bc6215fffcd761",
".agents/skills/triage/agents/openai.yaml": "2e683717720cf456",
".agents/skills/wayfinder/agents/openai.yaml": "88bc81a11a6d52ac",
".agents/skills/to-spec/agents/openai.yaml": "1c5b4d1e3d8e5228",
".agents/skills/teach/agents/openai.yaml": "5856f3ae8aec742f",
".agents/skills/to-questionnaire/agents/openai.yaml": "9e8a06c38c8842ee",
".agents/skills/setup-ts-deep-modules/agents/openai.yaml": "159f680217d50747",
".agents/skills/setup-pre-commit/agents/openai.yaml": "acf41db398c5c43a",
".agents/skills/tdd/agents/openai.yaml": "ea6f01cf1b8c06a4",
".agents/skills/setup-matt-pocock-skills/agents/openai.yaml": "9527de0110541c45",
".agents/skills/scaffold-exercises/agents/openai.yaml": "525b33913340bea7",
".agents/skills/research/agents/openai.yaml": "9b4c470d63221c1f",
".agents/skills/retro/agents/openai.yaml": "cb6fb9d7e6b4be59",
".agents/skills/pr/agents/openai.yaml": "2295b586624db4ef",
".agents/skills/prototype/agents/openai.yaml": "5af65e43ab41a350",
".agents/skills/migrate-to-shoehorn/agents/openai.yaml": "395c2db852e66a19",
".agents/skills/loop-me/agents/openai.yaml": "b66fa10079957051",
".agents/skills/improve-codebase-architecture/agents/openai.yaml": "c8cb20f68ebf0edb",
".agents/skills/improve/references/plan-template.md": "5782493c47031564",
".agents/skills/improve/references/closing-the-loop.md": "ce8c52916ddf659b",
".agents/skills/improve/references/audit-playbook.md": "587c1b927070f3c2",
".agents/skills/implement-spec/agents/openai.yaml": "fd41efb42c60c963",
".agents/skills/implement/agents/openai.yaml": "8970a8596ade0c28",
".agents/skills/grilling/agents/openai.yaml": "1411d7df7d99b7e6",
".agents/skills/handoff/agents/openai.yaml": "5c479fd562c69185",
".agents/skills/grill-with-docs/agents/openai.yaml": "94cd0ab161fb468a",
".agents/skills/grill-me/agents/openai.yaml": "c061e39c3e0f9d86",
".agents/skills/git-guardrails-claude-code/scripts/block-dangerous-git.sh": "234922b83c0a1737",
".agents/skills/git-guardrails-claude-code/agents/openai.yaml": "d53cd783fc0ac208",
".agents/skills/domain-modeling/agents/openai.yaml": "f6bf2aa996c6e6f5",
".agents/skills/diagnosing-bugs/scripts/hitl-loop.template.sh": "35103539fc36873e",
".agents/skills/codebase-design/agents/openai.yaml": "edebc9e4fcfe1021",
".agents/skills/diagnosing-bugs/agents/openai.yaml": "3e430dbe4334a875",
".agents/skills/code-review/agents/openai.yaml": "8229ca854e11dc8e",
".agents/skills/ask-matt/agents/openai.yaml": "bdffbc5a0a99ed1b",
".agents/skills/claude-handoff/agents/openai.yaml": "2308a67297886463",
"plugins/projects/src/global.d.ts": "6375a54827bfd7cf",
"plugins/builders/src/global.d.ts": "6375a54827bfd7cf",
"plugins/projects/tests/types.d.ts": "e5e6ac86cef12452",
"plugins/builders/tests/types.d.ts": "e5e6ac86cef12452",
"plugins/projects/drizzle.config.ts": "e6021f35b5691c2f",
"plugins/builders/drizzle.config.ts": "e6021f35b5691c2f",
"plugins/projects/tsconfig.json": "55f76a4f6877cf53",
"plugins/builders/tsconfig.json": "55f76a4f6877cf53",
"AGENTS.md": "31a5b680bebfbc3c"
}
}
7 changes: 7 additions & 0 deletions .changeset/platform-members.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@everything-dev/builders-plugin": minor
"api": minor
"ui": minor
---

Platform admins get a Members page (`/platform/members`, linked from Workspaces) listing every member of the contribution board, including those with only a testnet account: their verified GitHub login, kind and operator, admission on each network, and whether a services agreement is on file. From there a platform admin records or updates a member's agreement (version, date signed and a private proof that is never shown again). The builders plugin adds a platform-admin-only `listMembersWithAgreements`, and the API adds `members.list` and `members.recordAgreement`, both enforced as platform-admin-only by the plugin.
5 changes: 5 additions & 0 deletions .changeset/verified-github-read-only.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ui": patch
---

A builder's verified GitHub login now shows in the page header of their profile, for every viewer, not only those who can edit it. A board member's read-only profile says the contribution board verifies their identity, instead of saying they manage their own profile.
6 changes: 6 additions & 0 deletions .changeset/work-orders.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"api": minor
"ui": minor
---

Agencies run work orders end to end under Admin → Work orders, replacing the private work-order tracking for platform admins. A work order names a builder, a Project, a period, GitHub repositories and a budget; it is offered for signature in MultiAgency, through Documenso or through Google Docs and Drive, and each party only sees its own signing link. Once active, the builder files compensation requests backed by GitHub evidence; the Agency approves them (or approves trusted builders automatically after a veto window) and pays them through a DAO proposal or automatically in NEAR through a payout agent on NEAR Intents. The payout agent's owner signs every rule and permission change with their wallet; MultiAgency verifies those signatures before relaying them, and reminds managers before the permission expires. Withdrawn, changed or declined offers cancel their Documenso envelope. Requires the work-order and payout secrets listed in `bos.app.ts`; `PAYOUTS_OWNER_PRIVATE_KEY` is no longer used.
40 changes: 25 additions & 15 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,41 +1,51 @@
# FRAMEWORK-OWNED — reconciled from the parent template by `bos upgrade`.
# Local edits are allowed: on the next upgrade the template version wins and your
# copy is backed up under `.bos/sync-backup/`. To make a change permanent, file an
# issue: https://github.com/NEARBuilders/everything-dev/issues

# Generated from configured bos secrets
# Update values as needed for your local environment

# app.host
CORS_ORIGIN=http://localhost:3000
TENANT_WHITELIST=
ALLOW_OVERRIDE=
ALLOW_UNTRUSTED_SSR=
CSP_STRICT=

# app.api
API_DATABASE_URL=postgres://everythingdev:everythingdev@localhost:5432/api_db
AUTH_DATABASE_URL=postgres://everythingdev:everythingdev@localhost:5433/auth_db
# Leave empty to run dev on ephemeral pglite; set a postgres:// URL to opt into compose Postgres.
API_DATABASE_URL=
BETTER_AUTH_SECRET=
# Leave empty to run dev on ephemeral pglite; set a postgres:// URL to opt into compose Postgres.
AUTH_DATABASE_URL=
APPLICATIONS_WEBHOOK_URL=
CONTACT_FORM_WEBHOOK_URL=
CONTACT_FORM_WEBHOOK_SECRET=
RESEND_API_KEY=
NOTIFY_FROM_EMAIL=
APP_ORIGIN=
FASTNEAR_API_KEY=
GITHUB_TOKEN=
WORK_ORDERS_RUN_SECRET=
ANTHROPIC_API_KEY=
GOOGLE_SERVICE_ACCOUNT_JSON=
GOOGLE_OAUTH_CLIENT_ID=
GOOGLE_OAUTH_CLIENT_SECRET=
GOOGLE_PICKER_API_KEY=
GOOGLE_CLOUD_PROJECT_NUMBER=
GOOGLE_STARTER_TEMPLATE_ID=
GOOGLE_TOKENS_SECRET_KEY=
NEAR_INTENTS_AGENT_API_KEY=
NEAR_INTENTS_AGENT_API_URL=
DOCUMENSO_API_KEY=
DOCUMENSO_API_URL=
PAYOUTS_SECRET_KEY=

# app.auth
NEAR_SUB_ACCOUNT_PARENT_KEY_MAINNET=
NEAR_SUB_ACCOUNT_PARENT_KEY_TESTNET=
BETTER_AUTH_SECRET=
GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_SECRET=
TWILIO_ACCOUNT_SID=
TWILIO_AUTH_TOKEN=
TWILIO_PHONE_NUMBER=
NEAR_RELAYER_PRIVATE_KEY_MAINNET=
NEAR_RELAYER_PRIVATE_KEY_TESTNET=

# plugins.projects
PROJECTS_DATABASE_URL=postgres://everythingdev:everythingdev@localhost:5435/projects_db

# plugins.builders
BUILDERS_DATABASE_URL=postgres://everythingdev:everythingdev@localhost:5434/builders_db
REGISTRY_TOKEN_TESTNET=
REGISTRY_TOKEN_MAINNET=

14 changes: 14 additions & 0 deletions .env.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Generated test environment — loaded by test suites instead of .env
# Test databases run on dedicated *-test docker-compose services

# app.api
API_DATABASE_URL=postgres://everythingdev:everythingdev@localhost:5434/api_test_db
BETTER_AUTH_SECRET=regression-test-secret-do-not-use-in-production
AUTH_DATABASE_URL=postgres://everythingdev:everythingdev@localhost:5435/auth_test_db

# plugins.projects
PROJECTS_DATABASE_URL=postgres://everythingdev:everythingdev@localhost:5434/api_test_db

# plugins.builders
BUILDERS_DATABASE_URL=postgres://everythingdev:everythingdev@localhost:5434/api_test_db

30 changes: 30 additions & 0 deletions .github/workflows/ci-child.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Child CI Jobs

# CHILD-OWNED — bos upgrade never rewrites this file (#538). This repo's extra
# CI jobs live here. `ci.yml` (framework-owned) calls this workflow in parallel
# with the pinned reusable `ci` call and includes its result in the merge gate.

on:
workflow_call:

permissions:
contents: read

jobs:
workflow-guard:
name: Workflow guard
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 (Node 24)

- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: "24"

- name: Test the guard
run: node --test scripts/check-workflows.test.ts

- name: Check workflows (bos upgrade rewrites ci.yml and staging.yml)
run: node scripts/check-workflows.ts
Loading
Loading