Skip to content

Ship the v4 design: secrets table, history, settings, themes - #59

Merged
szymeo merged 1 commit into
mainfrom
szymeo/design-system-review
Oct 13, 2026
Merged

szymeo merged 1 commit into
mainfrom
szymeo/design-system-review

Conversation

@szymeo

@szymeo szymeo commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator

Ships the approved v4 mockup in apps/web, plus a small backend change for GitHub sync status.

What changes for users

  • Secrets is a grouped table with fixed-width peeks (first/last chars, never the length). Copy a row, a group, everything or a selection; paste .env; add, edit, delete and undo. The raw .env view stays, restyled, and never puts masked values in the page.
  • History groups versions by day with per-secret + ~ − counts, a pinned 6-month activity map, a per-secret diff grouped like Secrets, a .env diff toggle and Restore.
  • Project settings use the Logdash layout: General, Members (roles, invites), GitHub sync (with "Synced" / "N versions behind" status) and Danger zone. Members and GitHub moved here from their own tabs.
  • Account settings (⌘,): profile, appearance (System/Light/Dark + 10 grey presets with a live preview), passphrase change, devices & CLI.
  • Shell: compact sidebar, ⌘K search, invitations, project reorder, GitHub suggestions, mobile drawer.

Reloads land where you were

  • Tabs are paths: /app/project/:id, /history, /settings.
  • History keeps ?v=, ?range= and ?day=; settings keep #section.
  • Table / .env view, history diff mode and theme are saved preferences.

Security notes

  • No new path sends plaintext, keys or passphrases to the server. A review pass found none.
  • Passphrase change re-encrypts the private key in the browser and sends only the new blob. Every unlock path now decrypts a fresh copy, so other tabs reject the old passphrase.
  • ⌘K only matches values for projects set to Visible; results never show values.

Backend

  • POST /projects/:id/analytics/secrets-pushed accepts optional integrationIds and sets lastPushedAt on that project's integrations. The SDK is regenerated.
  • Fixes a flaky test bootstrap: supertest picked a random port per request that another local process could already hold. The test app now listens once on 127.0.0.1 (15/15 green runs).

Checks

  • apps/web: pnpm lint, pnpm check, pnpm build pass; Playwright browser-lock 6/6, logdash-proxy 6/6.
  • backend: pnpm test 205/205 three runs in a row, pnpm build passes; SDK has no drift.
  • End to end in the browser in dark and light at 1440×900 and 390×844.

- Design system: one generated grey ramp (10 presets) feeding light and dark
  themes, Geist + Geist Mono, shared primitives in lib/ui (Button, Segmented,
  Well, SearchField, Dialog, SettingsLayout, ...). Theme applied before first
  paint.
- App shell: compact sidebar (account menu, ⌘K search, invitations, projects
  with reorder, GitHub suggestions, CLI, ⌘, settings), rounded panel, mobile
  drawer. ProjectPage split into focused views.
- Navigation lives in the URL: /app/project/:id, /history, /settings,
  ?v= / ?range= / ?day= for history, #section for settings. Table/.env view
  and history diff mode persist in localStorage.
- Secrets: grouped table with fixed-width peeks (never reveals length),
  copy row/group/all/selection, paste .env, add/edit/delete/undo via
  byte-preserving text edits; restyled .env editor whose DOM never holds
  masked values.
- History: day-grouped versions with per-secret +~- counts, pinned activity
  heatmap, per-secret diff grouped like Secrets, .env diff, Restore.
- Project settings (Logdash layout): general, members/invites, GitHub sync
  with push status, danger zone. Backend records lastPushedAt per integration.
- Account settings: profile, appearance (theme + greys + preview), passphrase
  change (re-encrypts the private key in the browser), devices & CLI.
- Fix own-save "updated elsewhere" race, stale private key in other tabs
  after a passphrase change, and the flaky backend test bootstrap (listen on
  127.0.0.1 once instead of supertest's per-request random port).
@vercel

vercel Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
cryptly Ready Ready Preview Oct 12, 2026 3:06pm UTC

@szymeo
szymeo merged commit c66f6bd into main Oct 13, 2026
3 checks passed

This branch was successfully deployed

1 active deployment
Preview — 4385659d Deployed Oct 12, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant