From dccf26e60345e5da7b767fc4158d79efc48d146e Mon Sep 17 00:00:00 2001 From: jwinterm Date: Tue, 18 Aug 2026 10:23:47 -0400 Subject: [PATCH] chore(apps): drop "AI-powered", sort the list reverse alphabetically Suchoice's tagline was "AI-powered decision making", which named the implementation instead of the thing you get. It now reads "Six ways to decide, from a coin flip to 3D dice", which is what the product page already says and is concrete enough to tell you whether you want it. Order is now derived, not hand-maintained: sortedApps sorts on name descending at render. Hand-ordering the array works right up until someone adds an app to the end and the page is quietly wrong, which is the same class of problem as a hand-maintained timing constant. Reverse alphabetical gives Vegan IQ, Suchoice, Such Moon Launch, Hash Bags, Bloomword, Bauhaus Echo. Note Suchoice sorts above Such Moon Launch: the comparison is locale-aware, so the space in "Such Moon" does not simply win on byte order the way it would with a raw string compare. --- apps/web/src/app/apps/page.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/web/src/app/apps/page.tsx b/apps/web/src/app/apps/page.tsx index b800906..7060efd 100644 --- a/apps/web/src/app/apps/page.tsx +++ b/apps/web/src/app/apps/page.tsx @@ -71,7 +71,7 @@ const apps = [ }, { name: "Suchoice", - tagline: "AI-powered decision making", + tagline: "Six ways to decide, from a coin flip to 3D dice", icon: "/images/products/suchoice.png", color: "text-pink-600 dark:text-pink-400", borderColor: "border-pink-500/20", @@ -95,6 +95,10 @@ const apps = [ }, ]; +// Reverse alphabetical for now. Derived rather than hand-ordered, so adding an app +// cannot leave the page in an order someone has to remember to fix. +const sortedApps = [...apps].sort((a, b) => b.name.localeCompare(a.name)); + export default function LinksPage() { return (
@@ -104,7 +108,7 @@ export default function LinksPage() {

Our apps

- {apps.map((app, i) => ( + {sortedApps.map((app, i) => (