* feat(web): violet retheme — accent-primary, neutral scale, card tokens, radius, AA text (TASK-2291)
PLAN-2290 Phase 1, PR B. Values-only retheme in app.css + theme-color meta:
- --accent-primary #9268f8 dark / #7c3aed light; --accent-blue aliased to it
(~95% of its 462 sites are brand usage; categorical sites moved to
--status-blue in PR A and stay blue). Dark value chosen by contrast math:
AA as link text (4.85:1) while improving white-on-fill from 2.75 to 3.78
(>=3:1 UI threshold; full text-on-fill AA lands with the Phase 2 Button
primitive via --text-on-accent).
- Violet-biased neutral scale both themes; light mode inverts to off-white
canvas (#f5f5f9) with white surfaces per the mock.
- Muted/secondary text re-picked: >=5:1 on every bg token in both themes
(closes TASK-2262 C9 app-wide).
- --border-strong/--card-bg/--card-border/--shadow-card defined both themes
(consumed from Phase 3).
- Radius scale 6/4/8 -> 8/5/12; light-mode danger tuned to #dc2626 (4.83:1).
- theme-color meta #4a9eff -> #8b5cf6.
Verified: make check green; screenshots on 4 surfaces x 2 themes reviewed;
contrast ratios computed for all text-token pairs.
* fix(web): violet PWA branding (manifest/icon) + pin light accents in print block
Codex review findings on #1018: manifest theme_color/background and icon.svg
still carried the blue brand; print block now pins light-theme accents so
dark-theme printing doesn't put the bright violet on white paper. Dark
button text-on-fill AA is explicitly deferred to the Phase 2 Button
primitive (tracked in TASK-2292).
* fix(web): regenerate apple-touch-icon.png from the violet icon.svg (180x180)
* fix(web): regenerate remaining brand rasters from violet icon.svg
favicon-16/32, favicon.ico (single PNG-encoded 48px entry), icon-192 (was
0 bytes), icon-512, padicon.png (OG image, 701x701) all regenerated from
the canonical icon.svg 'P' mark — the old rasters were a blue calendar
design inconsistent with the linked SVG. site.webmanifest colors updated
to the violet scheme.
Retire "Collaborate with your AI agents" in favor of
"Project Management for the agent era". Companion change to
PerpetualSoftware/pad-web#45 — they ship together so the brand
reads consistently across the marketing site and the product.
The phrasing leans into the moment without trend-chasing.
"agent" carries more weight than "AI" — it points at *how* the
technology shows up in your workflow (an autonomous teammate),
not just *that* it exists. It's also the unit of change Pad is
uniquely structured around (issue IDs, conventions, playbooks —
things agents read).
This commit only updates plain-text surfaces (README, goreleaser
description, embedded PWA manifests, app meta tags). Visual
accenting of the word "agent" lives in pad-web (homepage hero
<h1> + OG card image), the only places that render the tagline
to humans rather than to package managers / OG crawlers.
## Files
- README.md — top-of-readme tagline.
- .goreleaser.yaml — Homebrew formula description.
- web/static/site.webmanifest — embedded PWA description.
- web/static/manifest.json — duplicate PWA manifest in the same dir.
- web/src/routes/+layout.svelte — <meta name="description"> and
<meta property="og:description"> on every app page.
## Verification
- make check: 0 errors. golangci-lint, go test ./..., govulncheck,
and `cd web && npm run build` all pass. The 6 svelte-check
warnings are all pre-existing in files this PR doesn't touch
(NestedChildren, ChildItems, roles/+page, console/admin/+page).
Migrates from xarmian/pad to PerpetualSoftware/pad across the entire
repo and updates the product subtitle to "Collaborate with your AI
agents".
Go module rename
- go.mod: github.com/xarmian/pad → github.com/PerpetualSoftware/pad
- All Go imports updated across cmd/pad, internal/{cli,server,store,
models,collections,items,events,metrics,webhooks} (~130 files)
- Test fixtures with the literal repo slug ("xarmian/pad" in JSON
shapes, SSH/HTTPS git URL strings, workspace_context fixtures)
also updated, including the secondary repo entry
(xarmian/pad-web → PerpetualSoftware/pad-web — pad-web was also
moved to the org per branch context)
Docs / config
- README badges, install instructions, brew tap, Docker image, source
build path, sponsor link (sponsor link kept as personal @xarmian)
- Subtitle: "Project management for developers and AI agents." →
"Collaborate with your AI agents." (README, manifests, web layout
meta, .goreleaser homebrew description)
- CONTRIBUTING.md, SECURITY.md, skills/INSTALL.md
- .goreleaser.yaml: homebrew_casks owner, GHCR image, release github
owner, cosign cert-identity regex, comments
- .github/workflows/release.yml: tap/release comments
- deploy/k8s/deployment.yaml: container image
- docs/deployment.md: clone URL
- web/static/{site.webmanifest,manifest.json}: description
- web/src/routes/+layout.svelte: meta description + og:description
Brew tap path is PerpetualSoftware/tap/pad (CamelCase, matches
GitHub user case). GHCR image is ghcr.io/perpetualsoftware/pad
(lowercased per GHCR's URL normalization). CODEOWNERS @xarmian and
FUNDING.yml github: xarmian intentionally retained — those are the
personal maintainer / sponsor account, separate from the org repo.
Verification: go build ./..., go test ./... (all pkgs pass), web
build, and make install all clean (TASK-844, TASK-845).
Dashboard: Complete rewrite as command center with active work cards,
collection grid with status dots and progress bars, phase progress,
side-by-side attention/up-next, skeleton loading, instant creation buttons.
New pages: Activity feed with date grouping, action/source/collection
filters, and pagination. Sidebar navigation link + "View all" from dashboard.
New components: Keyboard shortcuts overlay (press ?), notification center
(bell icon + slide-out panel with toast history), contextual empty states
per collection with agent prompt hints.
Improvements: Command palette with search icon, item refs, colored status
badges. Mobile board horizontal scroll with snap-to-column. Collection
page header with collapsible filter toggle. Saved view tabs. Item detail
relationships section (blocks/blocked-by/wiki-links). Sidebar shows
active item counts only. Mobile header taps to dashboard. PWA manifest.
Bug fix: Mobile sidebar swipe zone reduced to left edge (0-24px) to
avoid conflicts with board horizontal scrolling.
Generate favicon sizes (16, 32, ico), Apple touch icon (180),
PWA icons (192, 512), and web manifest from padicon.png. Add
Open Graph meta tags for social sharing previews.
Pad — project management for developers and AI agents.
Single Go binary with embedded SvelteKit web UI, SQLite storage,
CLI, and Claude Code /pad skill integration.
https://getpad.dev