Skip to content

Commit 1df136a

Browse files
authored
Merge pull request #99 from n8bar/claude/m19-phase3-4
M19.4: CryptoZing favicon set (faithful trace) — retire emoji favicons
2 parents 10d84c0 + c616eba commit 1df136a

91 files changed

Lines changed: 823 additions & 206 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.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
- Wallet xpub onboarding lives at `/wallet/settings`; invoices expect a configured wallet or redirect there.
4848
- **Data hygiene:** As of 2025-11-16 the app only holds seed/test data—no real customers yet. Remove this note (and treat production emails accordingly) once live customer data exists.
4949
- CryptoZing must remain watch-only: never put private keys or seed phrases into tracked repo files, app config, database seeders, fixtures, tests, or normal application flows. If local testnet funding keys are needed for developer-only scenario setup, keep them only in untracked local storage (for example under `.cybercreek/`) and outside the product boundary.
50-
- Email delivery currently rewrites recipients to the CryptoZing catch-all via `MAIL_ALIAS_ENABLED/MAIL_ALIAS_DOMAIN` (set to `mailer.cryptozing.app` so Mailgun routes everything to Proton). Disable the aliasing before RC or any real-customer deployment.
50+
- Email delivery currently rewrites recipients to the CryptoZing catch-all via `MAIL_ALIAS_ENABLED/MAIL_ALIAS_DOMAIN` (set to `mailer.cryptozing.app` so Mailgun routes everything to Proton). Disable the aliasing before open beta or any real-customer deployment.
5151
- `SUPPORT_AGENT_EMAILS` controls which accounts are treated as support accounts, and `SUPPORT_ACCESS_HOURS` should remain the fixed server-side expiration window for temporary owner-granted support access.
5252
- The CryptoZing.app domain is reserved solely for this project; feel free to provision DNS/subdomains/mail for app needs without saving it for other products.
5353
- Set `APP_PUBLIC_URL` to whatever domain should appear in public invoice links (localhost for dev, `https://cryptozing.app` for production) so emails never point at the wrong host.

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ docker/ Container setup
208208
- Backlog: [`docs/BACKLOG.md`](docs/BACKLOG.md)
209209
- Changelog: [`docs/CHANGELOG.log`](docs/CHANGELOG.log)
210210
- Quick start: [`docs/ops/get-live/QUICK_START.md`](docs/ops/get-live/QUICK_START.md)
211-
- RC rollout checklist: [`docs/ops/RC_ROLLOUT_CHECKLIST.md`](docs/ops/RC_ROLLOUT_CHECKLIST.md)
211+
- Rollout checklist: [`docs/ops/OB_ROLLOUT_CHECKLIST.md`](docs/ops/OB_ROLLOUT_CHECKLIST.md)
212212
- Active milestone: [`docs/milestones/16_MAILER_AND_ALERTS_POLISH_AUDIT.md`](docs/milestones/16_MAILER_AND_ALERTS_POLISH_AUDIT.md)
213213
- Onboarding Part 1 spec: [`docs/specs/ONBOARD_SPEC.md`](docs/specs/ONBOARD_SPEC.md)
214214
- Post-payment onboarding spec: [`docs/specs/POST_PAYMENT_ONBOARDING.md`](docs/specs/POST_PAYMENT_ONBOARDING.md)

‎docs/BACKLOG.md‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ _Last updated: 2026-04-08_
44
This is the canonical post-MVP backlog.
55

66
Use this file only for deferred or future work.
7-
Anything still in RC scope belongs in [`docs/PLAN.md`](PLAN.md) and its linked canonical docs instead.
7+
Anything still in open-beta scope belongs in [`docs/PLAN.md`](PLAN.md) and its linked canonical docs instead.
88

99
## Near-Term Product UX
1010
1. **Invoices + Clients Search and Filtering**
@@ -43,21 +43,21 @@ _Carry-forward guardrail from active roadmap scope: suppress duplicate sends for
4343
- Reuse `InvoicePaid` events and delivery log updates to emit notifications without polling.
4444

4545
6. **Notification Preference Expansion**
46-
- Consider allowing issuers to configure alert thresholds per profile instead of keeping the RC-wide default threshold.
46+
- Consider allowing issuers to configure alert thresholds per profile instead of keeping the open-beta-wide default threshold.
4747

4848
7. **Configurable Past-Due Reminder Cadence**
4949
- Expose the hardcoded day-offset schedule (day 1, 7, 14 past due) as issuer-configurable notification settings.
50-
- RC ships a sane fixed default; this item adds issuer control post-RC.
50+
- The open beta ships a sane fixed default; this item adds issuer control post-open-beta.
5151

5252
8. **Custom Outbound Mail Logo Uploads**
5353
- Allow issuers to upload a custom logo for outbound mail instead of only showing or hiding the default CryptoZing logo.
5454
- Include storage, validation, replacement/removal, and email-client-safe fallback behavior.
55-
- Keep this separate from the RC KISS mail-branding controls, which are limited to brand-shell text fields plus a default-logo on/off toggle.
55+
- Keep this separate from the open-beta KISS mail-branding controls, which are limited to brand-shell text fields plus a default-logo on/off toggle.
5656

5757
## Support & Admin Roles
5858

5959
20. **Support agent / maintainer role separation**
60-
- For RC, the support agent role doubles as the operational maintainer: one email allowlist, one dashboard, full visibility into both issuer grants and service health monitoring.
60+
- For the open beta, the support agent role doubles as the operational maintainer: one email allowlist, one dashboard, full visibility into both issuer grants and service health monitoring.
6161
- Post-MVP, split these into distinct roles if the team grows:
6262
- A **maintainer** role that has access to the monitoring panel (queue depth, delivery failures, watcher health) but not to issuer grant browsing.
6363
- A **support agent** role that has access to issuer grant browsing but not to the monitoring panel, if a dedicated support function separate from engineering is needed.
@@ -96,7 +96,7 @@ _Carry-forward guardrail from active roadmap scope: suppress duplicate sends for
9696

9797
## Product UX
9898
16. **Multi-wallet selection + additional wallets UI**
99-
- Core wallet-key lineage and cursor safety is now tracked in active RC roadmap scope; this post-MVP item builds on that foundation.
99+
- Core wallet-key lineage and cursor safety is now tracked in active open-beta roadmap scope; this post-MVP item builds on that foundation.
100100
- Re-enable the Additional wallets UI in `/wallet/settings` once multi-wallet selection is in scope.
101101
- Add an invoice-level wallet selector and migration guidance for existing invoices.
102102

@@ -113,7 +113,7 @@ _Carry-forward guardrail from active roadmap scope: suppress duplicate sends for
113113
- Surface an issuer-facing ledger so credit issuance, application, reversal, and remaining credit are auditable over time.
114114

115115
19. **Spending-only companion wallet ecosystem idea**
116-
- Separate product idea, not RC scope for CryptoZing itself.
116+
- Separate product idea, not open-beta scope for CryptoZing itself.
117117
- Explore a companion wallet app that can spend/send but does not receive, and only shares public derivation material with CryptoZing.
118118
- Goal: reduce accidental outside receive activity on the same account namespace while keeping CryptoZing watch-only.
119119
- Future direction to evaluate later: whether a tighter CryptoZing + companion-wallet pairing should be encouraged or even required in a future product generation.

‎docs/CONTENT_PROMISES.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Content Promises Catalog
22

3-
A living catalog of promises and expectations that customer-facing content sets about CryptoZing — both directly and implicitly. Maintained as content is written so the product can be trued up to it before RC (see MS19).
3+
A living catalog of promises and expectations that customer-facing content sets about CryptoZing — both directly and implicitly. Maintained as content is written so the product can be trued up to it ahead of the open beta (see MS19).
44

55
## Why this exists
66

@@ -58,7 +58,7 @@ When an entry is a **critical omission** about a future product decision (for ex
5858

5959
## Reconciliation
6060

61-
Every major entry needs individual reconciliation before RC. Minor entries get a bulk verification pass. MS19 will include a phase to walk this catalog and either confirm the product honors each entry or trigger a content revision. New entries added after MS19 reconciliation will need to be caught in the next pre-release pass.
61+
Every major entry needs individual reconciliation before the open beta. Minor entries get a bulk verification pass. MS19 will include a phase to walk this catalog and either confirm the product honors each entry or trigger a content revision. New entries added after MS19 reconciliation will need to be caught in the next pre-release pass.
6262

6363
---
6464

‎docs/DOC_ROLES.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Canonical reference for what each tracked doc is for, and the rules about how th
44

55
## Canonical docs (top-level scope authority)
66

7-
- [`docs/PLAN.md`](PLAN.md) — RC milestone order, status, current focus, and the primary next doc.
7+
- [`docs/PLAN.md`](PLAN.md) — open-beta milestone order, status, current focus, and the primary next doc.
88
- [`docs/PRODUCT_SPEC.md`](PRODUCT_SPEC.md) — global product behavior and invariants.
99
- [`docs/BACKLOG.md`](BACKLOG.md) — post-MVP and deferred work only.
1010
- [`docs/UX_GUARDRAILS.md`](UX_GUARDRAILS.md) — global UX, accessibility, and interaction rules.

‎docs/PLAN.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,21 @@ Use [`docs/BACKLOG.md`](BACKLOG.md) for post-MVP work only.
1616

1717
## Current
1818
- Active milestone:
19-
- **MS19 - RC Hardening & Ops** — in progress; Phase 1 (notification coverage audit & verification) underway, later phases pre-flight.
19+
- **MS19 - Open Beta Hardening & Ops** — in progress; Phase 1 (notification coverage audit & verification) underway, later phases pre-flight.
2020
- Status: `active`
2121
- Next action: MS19 Phase 1 — notification coverage verification (Claude).
22-
- Primary next doc: [`docs/milestones/19_RC_HARDENING_OPS.md`](milestones/19_RC_HARDENING_OPS.md)
22+
- Primary next doc: [`docs/milestones/19_OB_HARDENING_OPS.md`](milestones/19_OB_HARDENING_OPS.md)
2323
- Most recently completed milestone doc: [`docs/milestones/x18_PRERELEASE_CONTENT_SEO.md`](milestones/x18_PRERELEASE_CONTENT_SEO.md)
2424

2525
## Published Release Target
26-
- **First public release: mid-to-late 2027.** The RC milestone timeline (MS21, targeting 2026-08-11) covers the release candidate. The published release target accounts for post-RC work needed before an official first release.
26+
- **First public release: mid-to-late 2027.** The open beta milestone timeline (MS21, targeting 2026-08-11) covers the open beta. The published release target accounts for post-open-beta work needed before an official first release.
2727

2828
## Active and Upcoming Milestones
2929
| Status | ID | Milestone | Short intent | Target | Primary doc |
3030
|---|---|---|---|---|---|
31-
| [ ] | 19 | RC Hardening & Ops | RC hardening before mainnet cutover: notification coverage audit; auth/password policy hardening (419-to-login redirect, session expiry logout); LLC formation (entity, EIN, bank account, operating agreement); legal layer (ToS, Privacy Policy, disclaimers, monetization-neutral copy review, UI placement); content promises reconciliation; contributor docs refresh; 2FA (email baseline, opportunistic TOTP). | 2026-07-18 | [`docs/milestones/19_RC_HARDENING_OPS.md`](milestones/19_RC_HARDENING_OPS.md) |
31+
| [ ] | 19 | Open Beta Hardening & Ops | Open beta hardening before mainnet cutover: notification coverage audit; auth/password policy hardening (419-to-login redirect, session expiry logout); LLC formation (entity, EIN, bank account, operating agreement); legal layer (ToS, Privacy Policy, disclaimers, monetization-neutral copy review, UI placement); content promises reconciliation; contributor docs refresh; 2FA (email baseline, opportunistic TOTP). | 2026-07-18 | [`docs/milestones/19_OB_HARDENING_OPS.md`](milestones/19_OB_HARDENING_OPS.md) |
3232
| [ ] | 20 | Mainnet Cutover Preparation | Define and rehearse env flips, wallet validation, mail sanity checks, and backout steps for mainnet cutover. | 2026-07-30 | [`docs/milestones/20_MAINNET_CUTOVER_PREP.md`](milestones/20_MAINNET_CUTOVER_PREP.md) |
33-
| [ ] | 21 | CryptoZing.app Deployment (RC) | Deploy the RC under `cryptozing.app`, replace the GitHub Pages placeholder at `/` with the live app landing page without breaking the SEO baseline established in MS15, remove temporary mail aliasing, and complete rollout verification. | 2026-08-11 | [`docs/milestones/21_RC_DEPLOYMENT.md`](milestones/21_RC_DEPLOYMENT.md) |
33+
| [ ] | 21 | CryptoZing.app Deployment (Open Beta) | Deploy the open beta under `cryptozing.app`, replace the GitHub Pages placeholder at `/` with the live app landing page without breaking the SEO baseline established in MS15, remove temporary mail aliasing, and complete rollout verification. | 2026-08-11 | [`docs/milestones/21_OB_DEPLOYMENT.md`](milestones/21_OB_DEPLOYMENT.md) |
3434

3535
## Completed Milestones
3636
| Status | ID | Milestone | Short intent | Primary doc |

‎docs/PRODUCT_SPEC.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Use [`docs/PLAN.md`](PLAN.md) for milestone order, current focus, and the primar
88
Use detailed docs under `docs/specs/` and `docs/milestones/` for local scope, acceptance criteria, and implementation-impacting notes.
99

1010
## Canonical Doc Roles
11-
- [`docs/PLAN.md`](PLAN.md): human-facing execution dashboard for RC milestone order, current focus, and the primary next doc.
11+
- [`docs/PLAN.md`](PLAN.md): human-facing execution dashboard for open-beta milestone order, current focus, and the primary next doc.
1212
- [`docs/BACKLOG.md`](BACKLOG.md): post-MVP and deferred work only.
1313
- [`docs/UX_GUARDRAILS.md`](UX_GUARDRAILS.md): global UX, accessibility, and interaction rules.
1414
- `docs/milestones/**`: milestone execution docs when a milestone is active or large enough to need detailed checklist tracking.
@@ -89,7 +89,7 @@ Issuers create invoices in USD, derive a unique Bitcoin receive address per invo
8989
### Public links, print output, and outbound communication
9090
- Public-share and email links must use `APP_PUBLIC_URL`.
9191
- Public and print surfaces must honor public-safe boundaries and status-specific behavior defined in [`docs/specs/PRINT_PUBLIC_POLISH.md`](specs/PRINT_PUBLIC_POLISH.md) and [`docs/milestones/x13_UX_OVERHAUL.md`](milestones/x13_UX_OVERHAUL.md).
92-
- Outbound mail in pre-production may be recipient-aliased via `MAIL_ALIAS_ENABLED` and `MAIL_ALIAS_DOMAIN`; this aliasing must be disabled before RC or real-customer use.
92+
- Outbound mail in pre-production may be recipient-aliased via `MAIL_ALIAS_ENABLED` and `MAIL_ALIAS_DOMAIN`; this aliasing must be disabled before open-beta launch or real-customer use.
9393
- Invoice send, receipt delivery, notification triggers, and delivery logging must remain auditable.
9494

9595
### Background processing and timing
@@ -100,8 +100,8 @@ Issuers create invoices in USD, derive a unique Bitcoin receive address per invo
100100
### Active plan-linked requirements
101101
- Automatic attribution hardening must make derivation state key-aware, preserve invoice key identity for auditability, detect and flag unsupported wallet reuse without hard-blocking the issuer, snapshot unsupported state onto newly created invoices while avoiding blanket retroactive invoice flagging, distinguish unsupported shared-wallet evidence from stale-address wrong-invoice reuse, reinforce the dedicated-account requirement in wallet and onboarding UX, and provide an auditable correction path for wrongly attributed on-chain payments.
102102
- Mailer and alerts hardening must prevent duplicate outbound mail, support issuer-editable templates with safe variables and preview/reset flows, and keep payment-triggered outbound communication truthful and reviewable, including low-information payment acknowledgments plus issuer-reviewed client receipts; the detailed outbound-mail rules live in [`docs/specs/NOTIFICATIONS.md`](specs/NOTIFICATIONS.md).
103-
- Post-payment onboarding should remain lightweight in RC: Part 1 still gets issuers to first invoice delivery, while Part 2 should activate only once a first paid invoice is receipt-eligible, suspend when ignore/reattribution review would make a receipt untruthful, and complete when the issuer sends the first reviewed client receipt.
104-
- Mainnet cutover and RC deployment must preserve invoice integrity while switching environments, include a backout path, and verify alias-off mail behavior plus public-link correctness before real-customer rollout.
103+
- Post-payment onboarding should remain lightweight for the open beta: Part 1 still gets issuers to first invoice delivery, while Part 2 should activate only once a first paid invoice is receipt-eligible, suspend when ignore/reattribution review would make a receipt untruthful, and complete when the issuer sends the first reviewed client receipt.
104+
- Mainnet cutover and open-beta deployment must preserve invoice integrity while switching environments, include a backout path, and verify alias-off mail behavior plus public-link correctness before real-customer rollout.
105105

106106
## Canonical Spec Map
107107
- Rates and BTC/USD behavior: [`docs/specs/RATES.md`](specs/RATES.md)
@@ -116,7 +116,7 @@ Issuers create invoices in USD, derive a unique Bitcoin receive address per invo
116116
- Support access: [`docs/specs/SUPPORT_ACCESS.md`](specs/SUPPORT_ACCESS.md)
117117
- Cross-cutting UX and accessibility rules: [`docs/UX_GUARDRAILS.md`](UX_GUARDRAILS.md)
118118
- Docs and contributor-experience scope: [`docs/ops/DOCS_DX.md`](ops/DOCS_DX.md)
119-
- Rollout verification: [`docs/ops/RC_ROLLOUT_CHECKLIST.md`](ops/RC_ROLLOUT_CHECKLIST.md)
119+
- Rollout verification: [`docs/ops/OB_ROLLOUT_CHECKLIST.md`](ops/OB_ROLLOUT_CHECKLIST.md)
120120

121121
## Current Cross-Feature Constraints
122122
- Additional wallet storage exists, but invoice-level multi-wallet selection remains deferred to post-MVP and is tracked in [`docs/BACKLOG.md`](BACKLOG.md).

‎docs/milestones.ics‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ END:VEVENT
1414
BEGIN:VEVENT
1515
DTSTART;VALUE=DATE:20260508
1616
DTEND;VALUE=DATE:20260718
17-
SUMMARY:MS19 — RC Hardening & Ops
18-
DESCRIPTION:RC hardening: notification coverage, auth/password policy, LLC formation, legal layer (ToS, Privacy Policy, disclaimers, monetization-neutral copy), content promises reconciliation, contributor docs, 2FA (email baseline, optional TOTP).
17+
SUMMARY:MS19 — Open Beta Hardening & Ops
18+
DESCRIPTION:Open beta hardening: notification coverage, auth/password policy, LLC formation, legal layer (ToS, Privacy Policy, disclaimers, monetization-neutral copy), content promises reconciliation, contributor docs, 2FA (email baseline, optional TOTP).
1919
UID:cz-ms19@cryptozing.app
2020
END:VEVENT
2121
BEGIN:VEVENT
@@ -28,8 +28,8 @@ END:VEVENT
2828
BEGIN:VEVENT
2929
DTSTART;VALUE=DATE:20260729
3030
DTEND;VALUE=DATE:20260811
31-
SUMMARY:MS21 — CryptoZing.app Deployment (RC)
32-
DESCRIPTION:Deploy the RC under cryptozing.app, replace GitHub Pages placeholder, remove temporary mail aliasing, complete rollout verification.
31+
SUMMARY:MS21 — CryptoZing.app Deployment (Open Beta)
32+
DESCRIPTION:Deploy the open beta under cryptozing.app, replace GitHub Pages placeholder, remove temporary mail aliasing, complete rollout verification.
3333
UID:cz-ms21@cryptozing.app
3434
END:VEVENT
3535
END:VCALENDAR

0 commit comments

Comments
 (0)