Skip to content

Store front: a redesign, and the Concepts as a tree instead of 752 chips - #623

Merged
Evanfeenstra merged 2 commits into
mainfrom
feature/store-redesign
Nov 11, 2026
Merged

Evanfeenstra merged 2 commits into
mainfrom
feature/store-redesign

Conversation

@Evanfeenstra

Copy link
Copy Markdown
Contributor

What

The store front (?store=1, what index.stakwork.ai shows a visitor) redesigned, and its Concept lists fixed.

Why

  • The store wore the admin console's 12 px type and palette, with insider copy ("the phone book", "the rows of the signed index card").
  • A package's page listed every Concept it carries as a chip. openlaw/legal-desk carries 752, so its page was 32,500 px tall. It is about 2,700 px now.
  • That page also downloaded 2.7 MB of JSON (every Concept page's text) to draw a list of names.

Changes

Concepts

  • One tree everywhere (ConceptTree in Store.tsx): the roots with their counts, a branch opened in place and its children drawn only then, a filter over every page (through src/search.ts). The package page and the Concepts page share it.
  • "Under this page" and search results are rows with a one-line description, 24 at a time, then "Show all".
  • The top search returns the matching Concept pages as well as packages; / focuses it.
  • conceptChildren in store-links.ts (tested) is the tree's branches.

Look

  • Its own scale and a darker palette. components.css redefines the shell's palette variables on .store, so the shared .btn, .badge and .md-view follow with no second copy of their rules. Nothing outside .store changes.
  • A hero with the index's counts, cards, a package header with a stat strip that jumps to each part, workflows as rows that open to their inputs, steps and agent tools, a sticky aside, skeletons while a read is out, a phone layout.
  • A "For agents" block with the one line that adds the store to an MCP client.

Server

  • GET /index/packages/:publisher/:name?docs=0 leaves each Concept page's text out (withoutConceptDocs, tested); the store reads a package that way. An index that predates this ignores the parameter, so the page works against either.

Dev

  • STRUT_DEV_INDEX=<url> npm run dev in web/ (and the store entry in .claude/launch.json) runs this checkout's store over a deployed index's open reads. That is how this was built and checked against index.stakwork.ai's data.

For the reviewer

The store (`?store=1`, index.stakwork.ai) wore the admin console's 12 px
type and palette, and a package's page listed every Concept it carries as
a chip: openlaw/legal-desk's page was 32,500 px tall.

- Concepts are one tree everywhere (`ConceptTree`): the roots with their
  counts, a branch opened in place and its children drawn only then, a
  filter over every page. The package page and the Concepts page share
  it; "Under this page" and search results are rows, 24 at a time.
  `conceptChildren` (store-links.ts, tested) is the tree's branches.
- The top search returns the matching Concept pages as well as packages;
  `/` focuses it.
- The look: its own scale and a darker palette (the shell's variables
  redefined on `.store`), a hero with the index's counts, cards, a
  package header with a stat strip that jumps to each part, workflows as
  rows that open to their inputs, steps and agent tools, a sticky aside,
  skeletons while a read is out, a phone layout. A "For agents" block
  carries the one line that adds the store to an MCP client.
- `GET /index/packages/:publisher/:name?docs=0` leaves each Concept
  page's text out (`withoutConceptDocs`); the store reads a package that
  way. legal-desk's page was 2.7 MB of JSON for a tree drawn from names.
- `STRUT_DEV_INDEX=<url> npm run dev` (web/vite.config.ts; the `store`
  entry in .claude/launch.json) runs this checkout's store over a
  deployed index's open reads.
…teps are titled Tools

- The hero is its label, its headline and the counts: the sentence under
  the headline is gone.
- No section carries a one-line description any more, on the home page or
  a package's page; `SectionHead` is a title, a count and what the caller
  puts beside them. The note under a package's steps about the lint goes
  with them (the `clean` badge's tooltip says what it read).
- A package's steps are titled Tools, as the shell's sidebar titles step
  types: the section, the stat, and the count in the home page's package
  row. A workflow's own "steps" keep the word: they are what it runs.
@Evanfeenstra
Evanfeenstra merged commit b93286f into main Nov 11, 2026
4 checks passed
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