From 6b8be5e4835fc85f7e6b9e70b5d00dc8485faa55 Mon Sep 17 00:00:00 2001 From: saudzahirr Date: Tue, 25 Aug 2026 17:44:14 +0500 Subject: [PATCH 1/3] Add brayer and smopt to the project catalog Both are listed only in the /projects/ catalog: LEAD is untouched, so neither appears in the landing page lead grid or the nav dropdown. smopt gets a Source link only. Its docs and PyPI pages both 404 today, and a card that links to a missing page is worse than one that does not link at all. brayer has both, so it gets all three. Neither has a brand icon yet, so both render the initials placeholder the card component already falls back to. Co-Authored-By: Claude Opus 5 (1M context) --- src/data/site.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/data/site.ts b/src/data/site.ts index 23f284a..8b78b0f 100644 --- a/src/data/site.ts +++ b/src/data/site.ts @@ -110,6 +110,13 @@ export const PROJECTS: Project[] = [ pypi: 'nlpql', icon: 'nlpql.svg', }, + { + name: 'smopt', + display: 'SmOpt', + tagline: 'Penalty free first order solvers for optimization on the Stiefel manifold', + category: 'Optimization', + github: gh('smopt'), + }, // ---- Numerics --------------------------------------------------------- { @@ -175,6 +182,14 @@ export const PROJECTS: Project[] = [ pypi: 'gnspy', icon: 'gnspy.svg', }, + { + name: 'brayer', + tagline: 'Desktop forms built from Pydantic models, with widgets chosen from the field types', + category: 'Tooling', + github: gh('brayer'), + docs: eggzecDocs('brayer'), + pypi: 'brayer', + }, ] /** How a project is written in prose and on cards. */ From 2e86b6192a43c358123a734b3ebd935259708f3f Mon Sep 17 00:00:00 2001 From: saudzahirr Date: Tue, 25 Aug 2026 18:02:22 +0500 Subject: [PATCH 2/3] Give smopt its icon, docs and PyPI links The icon is smopt's own docs/assets/images/smopt-icon.svg. It matches the convention the other icons already follow -- same viewBox, same 1024 square, same background-rect-plus-glyph structure -- so it needed no conversion. Docs and PyPI both 404 today but are expected shortly, so the links go in now rather than in a second pass. Co-Authored-By: Claude Opus 5 (1M context) --- public/brand/icons/smopt.svg | 1 + src/data/site.ts | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 public/brand/icons/smopt.svg diff --git a/public/brand/icons/smopt.svg b/public/brand/icons/smopt.svg new file mode 100644 index 0000000..8170c25 --- /dev/null +++ b/public/brand/icons/smopt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/data/site.ts b/src/data/site.ts index 8b78b0f..721842d 100644 --- a/src/data/site.ts +++ b/src/data/site.ts @@ -116,6 +116,9 @@ export const PROJECTS: Project[] = [ tagline: 'Penalty free first order solvers for optimization on the Stiefel manifold', category: 'Optimization', github: gh('smopt'), + docs: eggzecDocs('smopt'), + pypi: 'smopt', + icon: 'smopt.svg', }, // ---- Numerics --------------------------------------------------------- From 3ad206feaaf2db51d919dfa4af8cb4dfbdad1a3f Mon Sep 17 00:00:00 2001 From: saudzahirr Date: Tue, 25 Aug 2026 18:05:47 +0500 Subject: [PATCH 3/3] Give brayer its icon Taken from brayer's docs/assets/brayer-icon.svg, which is tracked on that repository's master. Its viewBox is 16x16 on a 1024 square, the same shape pydoe.svg already uses, so it drops in without conversion. Both new cards now carry a real icon rather than the initials placeholder. Co-Authored-By: Claude Opus 5 (1M context) --- public/brand/icons/brayer.svg | 1 + src/data/site.ts | 1 + 2 files changed, 2 insertions(+) create mode 100644 public/brand/icons/brayer.svg diff --git a/public/brand/icons/brayer.svg b/public/brand/icons/brayer.svg new file mode 100644 index 0000000..1c8f022 --- /dev/null +++ b/public/brand/icons/brayer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/data/site.ts b/src/data/site.ts index 721842d..532e215 100644 --- a/src/data/site.ts +++ b/src/data/site.ts @@ -192,6 +192,7 @@ export const PROJECTS: Project[] = [ github: gh('brayer'), docs: eggzecDocs('brayer'), pypi: 'brayer', + icon: 'brayer.svg', }, ]