Skip to content

Commit f888b8d

Browse files
authored
Merge pull request #303 from MeshJS/preprod
Release: landing/theme overhaul, governance vote UX + DB-cached tallies, mobile/UX foundations, signing & infra fixes
2 parents 0349635 + dbc9356 commit f888b8d

89 files changed

Lines changed: 6051 additions & 3587 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
Project-specific context for AI coding agents. See also [.cursor/skills/multisig/SKILL.md](../.cursor/skills/multisig/SKILL.md) for the multisig Cursor skill.
44

5+
## Specs & PRDs
6+
7+
Specs live in the vault, not this repo. The maintainer keeps a document-driven dev base (an Obsidian vault) where features are specified as **PRDs** before they are built; concept and entity notes there are the upstream source for data models and flows.
8+
9+
- Before building a vault-specced feature, read its **PRD** (and the concept/entity notes it links) for scope, data model, and acceptance criteria. An entity note is the spec for its Prisma model.
10+
- Implementing PRs should **cite the PRD id** in the description (e.g. "Implements PRD-001"), so code stays traceable to the document that produced it.
11+
- The vault is the maintainer's local knowledge base; if you don't have access, ask for the relevant PRD's contents rather than guessing scope.
12+
513
## Stack and layout
614

715
- **Stack**: Next.js (Pages Router), TypeScript, tRPC, Prisma, PostgreSQL, Cardano (Mesh SDK). Auth: NextAuth (user) + JWT (API: wallet sign-in or bot keys).

.env.example

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ JWT_SECRET="your-jwt-secret-minimum-32-characters-long"
1919
# Get your JWT token from https://app.pinata.cloud/
2020
PINATA_JWT="your-pinata-jwt-token"
2121

22+
# Optional: dedicated Pinata IPFS gateway origin (e.g. https://<id>.mypinata.cloud).
23+
# IPFS reads resolve through /api/ipfs/resolve, which tries this gateway first
24+
# (our pinned content) before falling back to public gateways, and new uploads
25+
# return a URL on this gateway instead of the frequently-504ing public ipfs.io.
26+
# NEXT_PUBLIC_PINATA_GATEWAY_URL="https://your-gateway.mypinata.cloud"
27+
2228
# GitHub Personal Access Token
2329
# Create one at https://github.com/settings/tokens
2430
# GITHUB_TOKEN="your-github-token" (Optional - for GitHub issue creation)
@@ -33,6 +39,12 @@ NEXT_PUBLIC_BLOCKFROST_API_KEY_PREPROD="your-blockfrost-preprod-api-key"
3339
# Used to authenticate the balance snapshot batch endpoint
3440
# SNAPSHOT_AUTH_TOKEN="your-snapshot-auth-token"
3541

42+
# Canonical public URL of the deployment.
43+
# Used for SEO: canonical tags, Open Graph / Twitter URLs, robots.txt and the
44+
# sitemap. Defaults to the production domain when unset; set this on preview or
45+
# self-hosted environments so links point at the right origin.
46+
# NEXT_PUBLIC_SITE_URL="https://multisig.meshjs.dev"
47+
3648
# Optional: Skip environment validation during builds
3749
# Useful for Docker builds where env vars are set at runtime
3850
# SKIP_ENV_VALIDATION=true

ROADMAP.md

Lines changed: 220 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -42,70 +42,228 @@ Status of M1 tasks. Last updated 2026-04-23.
4242

4343
---
4444

45-
## Months 2–3 — June–July 2026
45+
## Month 2 — June 2026
4646

47-
**Direction:** Authentication, Summon migration, collateral service, minor fixes.
47+
**Focus:** Mesh 2.0 upgrade and CI improvements.
4848

49-
- Improved authentication — nonce-based auth, wallet connection fixes, registration flow (#135, #53)
50-
- Summon migration — land API routes and wallet import (PR #212, PR #208)
51-
- Collateral service — 22 ADA → 4 UTxOs for proxy collateral (#221)
52-
- Full address verification (#196)
53-
- Transaction pagination (#30)
54-
- Better 404 page (#22)
55-
- Monthly report
49+
**Quirin**
50+
51+
| Task | Issues |
52+
|------|--------|
53+
| Mesh 2.0 upgrade — migrate to Mesh SDK 2.0 | |
54+
55+
**Andre**
56+
57+
| Task | Issues |
58+
|------|--------|
59+
| CI improvements | |
60+
61+
---
62+
63+
## Month 3 — July 2026
64+
65+
**Focus:** On-chain wallet discovery and FROST kickoff.
66+
67+
**Quirin**
68+
69+
| Task | Issues |
70+
|------|--------|
71+
| FROST research kickoff | #220 |
72+
73+
**Andre**
74+
75+
| Task | Issues |
76+
|------|--------|
77+
| Wallet V2 — on-chain registration and discovery | #33 |
78+
79+
---
80+
81+
## Month 4 — August 2026
82+
83+
**Focus:** Document Sign-Off MVP — build (see [Flagship feature](#flagship-feature--document-sign-off)).
84+
85+
**Quirin**
86+
87+
| Task | Issues |
88+
|------|--------|
89+
| Document Sign-Off MVP (build) — 5-table data model, four routes, CIP-8 signature enforcement, version-hash binding | |
90+
91+
**Andre**
92+
93+
| Task | Issues |
94+
|------|--------|
95+
| Document Sign-Off MVP (build) — Documents section UI, six-state lifecycle, signer review screen | |
96+
97+
---
98+
99+
## Month 5 — September 2026
100+
101+
**Focus:** Document Sign-Off MVP — ship (8–10 wk effort completes).
102+
103+
**Quirin**
104+
105+
| Task | Issues |
106+
|------|--------|
107+
| Document Sign-Off MVP (ship) — proof export (JSON + PDF), verify route | |
108+
109+
**Andre**
110+
111+
| Task | Issues |
112+
|------|--------|
113+
| Document Sign-Off MVP (ship) — diffs where feasible, status grouping, polish | |
114+
| Monthly report | |
56115

57116
---
58117

59-
## Months 4–6 — August–October 2026
118+
## Month 6 — October 2026
60119

61-
**Direction:** Governance, smart contracts, and on-chain wallet discovery.
120+
**Focus:** Document Sign-Off provenance, FROST findings, hardware wallets.
62121

63-
- Aiken crowdfund integration (PR #164)
64-
- Governance metadata fix (#122)
65-
- Proxy voting polish and documentation
66-
- Wallet V2 — on-chain registration and discovery (#33)
67-
- Pending transactions on homepage (#125)
68-
- FROST research kickoff (#220)
69-
- Backlog cleanup, dependency/security updates
70-
- Monthly reports
122+
**Quirin**
123+
124+
| Task | Issues |
125+
|------|--------|
126+
| Document Sign-Off v1 — Provenance (history, diff & rollback, richer audit export) | |
127+
| FROST research — deliver findings, PoC, go/no-go | #220 |
128+
129+
**Andre**
130+
131+
| Task | Issues |
132+
|------|--------|
133+
| Hardware wallet support — Ledger/Trezor | #44 |
71134

72135
---
73136

74-
## Months 7–9 — November 2026–January 2027
137+
## Month 7 — November 2026
138+
139+
**Focus:** Governance polish, dApp connector, bot platform.
140+
141+
**Quirin**
75142

76-
**Direction:** Ecosystem integrations and developer experience.
143+
| Task | Issues |
144+
|------|--------|
145+
| Governance metadata fix | #122 |
146+
| dApp connector — external dApps request multi-sig transactions | |
77147

78-
- Hardware wallet support — Ledger/Trezor (#44)
79-
- Bot platform v2 — SDK, webhooks, example bots
80-
- dApp connector — external dApps request multi-sig transactions
81-
- API documentation and developer portal
82-
- FROST research — deliver findings, PoC, go/no-go (#220)
83-
- Monthly reports
148+
**Andre**
149+
150+
| Task | Issues |
151+
|------|--------|
152+
| Pending transactions on homepage | #125 |
153+
| Bot platform v2 — SDK, webhooks, example bots | |
84154

85155
---
86156

87-
## Months 10–12 — February–April 2027
157+
## Month 8 — December 2026
158+
159+
**Focus:** Proxy voting, testing, developer experience.
160+
161+
**Quirin**
162+
163+
| Task | Issues |
164+
|------|--------|
165+
| Proxy voting polish and documentation | |
166+
| Transaction builder & tRPC integration tests | #255 |
167+
168+
**Andre**
169+
170+
| Task | Issues |
171+
|------|--------|
172+
| API documentation and developer portal | |
173+
| Backlog cleanup, dependency/security updates | |
174+
| Monthly report | |
175+
176+
---
177+
178+
## Month 9 — January 2027
179+
180+
**Focus:** Document Sign-Off checkpoints, vesting, growth.
181+
182+
**Quirin**
183+
184+
| Task | Issues |
185+
|------|--------|
186+
| Document Sign-Off v2 — Checkpoints (opt-in on-chain anchoring in Cardano metadata) | |
187+
| Vesting — time-locked multi-sig contracts | #81 |
188+
189+
**Andre**
190+
191+
| Task | Issues |
192+
|------|--------|
193+
| User profiles and contacts | |
194+
195+
---
196+
197+
## Month 10 — February 2027
198+
199+
**Focus:** Invite flow and discovery.
200+
201+
**Quirin**
202+
203+
| Task | Issues |
204+
|------|--------|
205+
| Invite flow | PR #67 |
206+
207+
**Andre**
208+
209+
| Task | Issues |
210+
|------|--------|
211+
| Discover page — browse wallets, DAOs, governance | #52 |
212+
213+
---
214+
215+
## Month 11 — March 2027
216+
217+
**Focus:** Polish, wrap-up, and forward-looking research.
218+
219+
**Quirin**
220+
221+
| Task | Issues |
222+
|------|--------|
223+
| Performance and UX audit | |
224+
| Final summary report — activity, outcomes, gaps, next steps | |
225+
226+
**Andre**
227+
228+
| Task | Issues |
229+
|------|--------|
230+
| Document Sign-Off v3 — Collaboration & standards (CRDT/QES bridge — scoped as research) | |
231+
| Monthly report | |
232+
233+
---
234+
235+
## Month 12 — April 2027
236+
237+
**Focus:** Buffer / catch-up — absorb slippage from earlier months, finalize reporting, plan next cycle.
238+
239+
No fixed feature commitments; reserved for spillover, stabilization, and next-roadmap planning.
240+
241+
---
242+
243+
## Flagship feature — Document Sign-Off
244+
245+
A wallet-native, off-chain document approval layer: bind approval to an exact version hash, inherit the wallet's signer set + threshold, and collect CIP-8 sign-off (approve/reject) per signer. No new chain, no new token, no change to the transaction model — delivered as a Documents section inside the wallet.
88246

89-
**Direction:** Growth features, polish, and wrap-up.
247+
| Phase | Scope | Months |
248+
|-------|-------|--------|
249+
| MVP — Sign-off | Documents section, six-state lifecycle, version-hash binding, signer review, exportable JSON+PDF proof. Off-chain. | M4–M5 |
250+
| v1 — Provenance | Revision history first-class, diff & rollback, richer audit export (off-chain). | M6 |
251+
| v2 — Checkpoints | Optional on-chain anchoring of a version's hash + parent in Cardano tx metadata. | M9 |
252+
| v3 — Collaboration & standards | Real-time co-authoring (CRDT), metadata standard (CIP candidate), eIDAS/EUDI QES bridge. | M11 (research) |
90253

91-
- Vesting — time-locked multi-sig contracts (#81)
92-
- User profiles and contacts
93-
- Discover page — browse wallets, DAOs, governance (#52)
94-
- Performance and UX audit
95-
- Invite flow (PR #67)
96-
- Final summary report — activity, outcomes, gaps, next steps
97-
- Monthly reports
254+
**Data model:** five entities (`Document`, `DocumentVersion`, `DocumentReview`, `DocumentSignerSnapshot`, `DocumentEvent`) + optional `Checkpoint`, all reusing wallet signer identity and threshold. Approval belongs to a version, never a mutable container; a new version starts a fresh round at zero approvals.
98255

99256
---
100257

101258
## Research Track
102259

103260
| Topic | Description | Months | Owner |
104261
|-------|-------------|--------|-------|
105-
| **FROST multi-sig wallets** | Research FROST (Flexible Round-Optimized Schnorr Threshold) signatures for Cardano. Evaluate feasibility of replacing or complementing native script multi-sig with threshold Schnorr signatures — smaller on-chain footprint, better privacy (single signature on-chain), and flexible threshold schemes. Investigate Cardano-compatible FROST libraries, protocol readiness, and migration path from current native scripts. | 6-9 | Quirin |
262+
| **FROST & PQC multi-sig wallets** | Research FROST (Flexible Round-Optimized Schnorr Threshold) signatures for Cardano. Evaluate feasibility of replacing or complementing native script multi-sig with threshold Schnorr signatures — smaller on-chain footprint, better privacy (single signature on-chain), and flexible threshold schemes. Investigate Cardano-compatible FROST libraries, protocol readiness, and migration path from current native scripts. Also evaluate **Lemour post-quantum (PQC) multi-sig** — lattice-based threshold signatures for long-term quantum resistance — as a forward-looking alternative/complement to FROST. | M3 (kickoff) – M6 (findings) | Quirin |
106263

107264
**Research deliverables:**
108265
- Written summary of FROST vs native script trade-offs
266+
- Assessment of Lemour PQC multi-sig — maturity, libraries, and quantum-resistance trade-offs vs FROST
109267
- Proof-of-concept if libraries are available
110268
- Go/no-go recommendation for integration into the platform
111269

@@ -145,33 +303,34 @@ Aggregated view of the 12-month roadmap split by contributor. Each task has a si
145303
- [M1] Fix transaction loading bug (#211)
146304
- [M1] Handle external PR — Summon API routes (PR #212)
147305
- [M1] Fix legacy wallet compatibility bug
148-
- [M2–3] Improved authentication — nonce-based auth, wallet connection fixes, registration flow (#135, #53)
149-
- [M2–3] Full address verification (#196)
150-
- [M2–3] Transaction pagination (#30)
151-
- [M4–6] Aiken crowdfund integration (PR #164)
152-
- [M4–6] Governance metadata fix (#122)
153-
- [M4–6] Proxy voting polish and documentation
154-
- [M4–6] FROST research kickoff (#220)
155-
- [M7–9] dApp connector — external dApps request multi-sig transactions
156-
- [M7–9] FROST research — deliver findings, PoC, go/no-go (#220)
157-
- [M10–12] Vesting — time-locked multi-sig contracts (#81)
158-
- [M10–12] Performance and UX audit
159-
- [M10–12] Invite flow (PR #67)
160-
- [M10–12] Final summary report
306+
- [M2] Mesh 2.0 upgrade — migrate to Mesh SDK 2.0
307+
- [M3] FROST research kickoff (#220)
308+
- [M4–5] Document Sign-Off MVP — data model, routes, CIP-8 enforcement, proof export
309+
- [M6] Document Sign-Off v1 — Provenance (history, diff & rollback, audit export)
310+
- [M6] FROST research — deliver findings, PoC, go/no-go (#220)
311+
- [M7] Governance metadata fix (#122)
312+
- [M7] dApp connector — external dApps request multi-sig transactions
313+
- [M8] Proxy voting polish and documentation
314+
- [M8] Transaction builder & tRPC integration tests (#255)
315+
- [M9] Document Sign-Off v2 — Checkpoints (opt-in on-chain anchoring)
316+
- [M9] Vesting — time-locked multi-sig contracts (#81)
317+
- [M10] Invite flow (PR #67)
318+
- [M11] Performance and UX audit
319+
- [M11] Final summary report
161320

162321
### Andre
163322

164323
- [M1] Improve repository infrastructure — preprod environment and comprehensive smoke CI
165324
- [M1] CI smoke tests on real chain (#213)
166325
- [M1] Handle external PR — capability-based metadata (PR #208)
167-
- [M2–3] Summon migration — land API routes and wallet import (PR #212, PR #208)
168-
- [M2–3] Collateral service22 ADA → 4 UTxOs for proxy collateral (#221)
169-
- [M2–3] Better 404 page (#22)
170-
- [M4–6] Wallet V2 — on-chain registration and discovery (#33)
171-
- [M4–6] Pending transactions on homepage (#125)
172-
- [M4–6] Backlog cleanup, dependency/security updates
173-
- [M7–9] Hardware wallet support — Ledger/Trezor (#44)
174-
- [M7–9] Bot platform v2 — SDK, webhooks, example bots
175-
- [M7–9] API documentation and developer portal
176-
- [M10–12] User profiles and contacts
177-
- [M10–12] Discover page — browse wallets, DAOs, governance (#52)
326+
- [M2] CI improvements
327+
- [M3] Wallet V2on-chain registration and discovery (#33)
328+
- [M4–5] Document Sign-Off MVP — Documents UI, six-state lifecycle, signer review, diffs
329+
- [M6] Hardware wallet support — Ledger/Trezor (#44)
330+
- [M7] Pending transactions on homepage (#125)
331+
- [M7] Bot platform v2 — SDK, webhooks, example bots
332+
- [M8] API documentation and developer portal
333+
- [M8] Backlog cleanup, dependency/security updates
334+
- [M9] User profiles and contacts
335+
- [M10] Discover page — browse wallets, DAOs, governance (#52)
336+
- [M11] Document Sign-Off v3 — Collaboration & standards (research)

next.config.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,13 @@ const config = {
4444
unoptimized: false,
4545
},
4646
// Turbopack configuration (Next.js 16+)
47-
// Empty config silences the warning about webpack/turbopack conflict
48-
// WebAssembly support is enabled by default in Turbopack
49-
turbopack: {},
47+
// Pin the workspace root to this config's directory. Without this, Turbopack
48+
// can mis-detect the root when stray lockfiles exist higher up the tree (e.g.
49+
// a git worktree under a parent that also has a package-lock.json), which
50+
// breaks resolution of the whisky WASM during dev SSR. `import.meta.dirname`
51+
// is the project root in every checkout, so this is safe in CI and prod too.
52+
// WebAssembly support is enabled by default in Turbopack.
53+
turbopack: { root: import.meta.dirname },
5054

5155
// Webpack config for builds that explicitly use webpack (e.g., with --webpack flag)
5256
webpack: function (config, options) {

0 commit comments

Comments
 (0)