Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
19f41ac
fix: round 2 review — security, SEO, accessibility, performance, CSS
holkexyz Apr 7, 2026
a898333
fix: round 3 review — safeRedirect, canonical, HSTS, a11y, auth-guard
holkexyz Apr 7, 2026
fe026fd
fix: use standard checkCsrf() in feedback route, add OG images to sub…
holkexyz Apr 7, 2026
6b7e029
fix: CodeRabbit feedback — sanitize feedback input, clean up ref patt…
holkexyz Apr 8, 2026
f4d17a5
fix: comprehensive code audit — security, a11y, types, performance, d…
holkexyz Apr 8, 2026
172b34a
fix: restore authLoading in fetchOrgs deps — orgs failed to load
holkexyz Apr 8, 2026
b0fc8ce
perf: parallelize org resolution — all orgs resolve concurrently
holkexyz Apr 8, 2026
23695e7
fix: mobile bottom-sheet sign-out button overflowing off screen
holkexyz Apr 8, 2026
57e2fcd
fix: sign-out button still clipping off screen on mobile
holkexyz Apr 8, 2026
cb5c5a3
fix: sign-out button now visible in mobile bottom sheet
holkexyz Apr 8, 2026
ac08920
fix: sign-out button spacing + selected background on user row
holkexyz Apr 8, 2026
3070d81
fix: owners can't leave — no member-list API calls needed
holkexyz Apr 8, 2026
c8c1326
refactor: rename organizations to groups throughout the codebase
holkexyz Apr 8, 2026
3596749
fix: remaining organization references in test plan and AGENTS.md
holkexyz Apr 8, 2026
f6cecf1
fix: CodeRabbit PR feedback — error handling, a11y, type safety
holkexyz Apr 8, 2026
e48eda3
fix: CodeRabbit round 2 — safeRedirect, session state, type guards
holkexyz Apr 8, 2026
595cbd6
refactor: use TID rkeys for membership records instead of derived keys
holkexyz Apr 8, 2026
a862631
fix: generate TID rkey for membership records via putRecord
holkexyz Apr 8, 2026
725c147
fix: use createRecord for memberships — PDS generates TID rkey
holkexyz Apr 8, 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
12 changes: 6 additions & 6 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ npm run lint # ESLint
- Feedback button avoids footer overlap via scroll listener on `.landing-footer`

### SEO / GEO
- JSON-LD: Organization + WebSite in `layout.tsx`, SoftwareApplication + FAQPage in `welcome/page.tsx`
- JSON-LD: Organization (schema.org) + WebSite in `layout.tsx`, SoftwareApplication + FAQPage in `welcome/page.tsx`
- OG/Twitter meta: defaults in `layout.tsx`, overrides per page
- Title template: `"%s — Certified"` (layout), pages export specific titles
- `robots.ts`, `sitemap.ts`, `manifest.ts` in `src/app/`
Expand Down Expand Up @@ -109,12 +109,12 @@ src/
│ ├── connected-apps/
│ │ ├── layout.tsx # AuthGuard
│ │ └── page.tsx
│ ├── organizations/ # Org management routes
│ ├── groups/ # Group management routes
│ ├── oauth/callback/page.tsx # OAuth redirect handler
│ ├── api/
│ │ ├── auth/ # login, logout, session, callback-handler
│ │ ├── xrpc/[...method]/route.ts # XRPC proxy with security
│ │ ├── organizations/ # Org API routes
│ │ ├── groups/ # Group API routes
│ │ ├── feedback/route.ts # Feedback email via Resend
│ │ ├── resolve-handle/route.ts
│ │ ├── resolve-did/route.ts
Expand All @@ -135,7 +135,7 @@ src/
│ │ ├── sidebar.tsx # Left nav for settings
│ │ └── auth-guard.tsx # Auth redirect with returnTo
│ ├── dashboard/ # Dashboard cards and lists
│ ├── organizations/ # Org management components
│ ├── groups/ # Group management components
│ ├── profile/ # Profile editing
│ ├── identity-link/ # Wallet attestation
│ ├── account/ # Email and password sections
Expand All @@ -144,14 +144,14 @@ src/
├── hooks/
│ ├── use-session.ts # Cached session data (handle, email)
│ ├── use-profile.ts # Profile data with AbortController
│ ├── use-org-profile.ts # Organization profile
│ ├── use-org-profile.ts # Group profile
│ ├── use-identity-links.ts # Wallet attestations
│ ├── use-attestation-signing.ts # EIP-712 signing
│ └── use-focus-trap.ts # Modal focus trapping
└── lib/
├── auth/ # OAuth client, session, CSRF, fetch wrapper
├── organizations/ # Org API, context, constants, types
├── groups/ # Group API, context, constants, types
├── identity-link/ # EIP-712 attestation, PDS read/write
├── atproto/ # DID resolution, profile fetch/update
├── constants/apps.ts # CONNECTED_APPS (single source of truth)
Expand Down
299 changes: 0 additions & 299 deletions GEO-AUDIT-REPORT.md

This file was deleted.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ When a user signs up, they get an AT Protocol identity and a Personal Data Serve
| `/` | Profile dashboard (authenticated) |
| `/settings` | Account settings |
| `/connected-apps` | Manage connected applications |
| `/organizations` | Organization management |
| `/groups` | Group management |
| `/about` | About Certified and the Hypercerts Foundation |
| `/terms` | Terms of Service |
| `/privacy` | Privacy Policy |
Expand Down
17 changes: 17 additions & 0 deletions certified-design.pen
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"version": "2.10",
"children": [
{
"type": "frame",
"id": "bi8Au",
"x": 0,
"y": 0,
"name": "Frame",
"clip": true,
"width": 800,
"height": 600,
"fill": "#FFFFFF",
"layout": "none"
}
]
}
Loading