Skip to content

feat(app): add read-only catalog customizations page#26

Open
paddymul wants to merge 2 commits into
mainfrom
feat/catalog-customizations-page
Open

feat(app): add read-only catalog customizations page#26
paddymul wants to merge 2 commits into
mainfrom
feat/catalog-customizations-page

Conversation

@paddymul

@paddymul paddymul commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

What

A read-only Catalog customizations page in the React app that lists the project-wide Buckaroo customizations for a catalog and lets you inspect the source of each:

  • Summary stats — per-column statistics (def compute(col) -> ibis.Expr)
  • Styling classesColAnalysis subclasses controlling table rendering / pinned rows
  • Post-processing — expression transformers in Buckaroo's post-processing dropdown (def process(expr) -> ibis.Expr | DataFrame)

These are global to the catalog (one set per project), not per-entry. Disabled (_disabled/) items are listed and flagged.

How

  • Backend: GET /{project}/api/customizations returns the three registries via the existing tallyman_core list_stats / list_display_klasses / list_post_processings helpers — the same ones the catalog_list_* MCP tools use.
  • Frontend: CustomizationsPage (each item a collapsible <details><pre class="code"> source), api.customizations(), Customizations/CustomizationItem types, route + nav link. Refetches on SSE version bumps, so edits made via the MCP tools show up live.

Read-only by design — CRUD already exists through the MCP tools.

Test plan

  • tsc --noEmit clean
  • app.py parses; endpoint wires existing, tested list_* helpers
  • Manual: open /<project>/customizations, expand items, confirm source renders (couldn't boot the server locally — unrelated broken editable buckaroo dep path in the working tree)

🤖 Generated with Claude Code

List the project-wide Buckaroo customizations — summary stats, styling
classes, and post-processing functions — for a catalog, each expandable
to inspect its source.

Adds GET /{project}/api/customizations, which returns the three registries
via the existing tallyman_core list_stats / list_display_klasses /
list_post_processings helpers (the same ones the catalog_list_* MCP tools
use), including _disabled/ items flagged accordingly. The React SPA gets a
CustomizationsPage with a nav link; it refetches on SSE version bumps so
edits made via the MCP tools show up live.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… disabled badge

Previously a fetch 500/404 and the pre-load state both rendered identically to a genuinely empty catalog (three "none defined" sections). Track explicit loading/error state: show "loading…" on first load and the server error in an .error-banner, while keeping current data on screen during SSE-driven refetches so a version bump no longer flashes the page.

Swap the disabled badge off the blue accent .vchip (used elsewhere for informational version tags) to a muted outlined .cust-flag, consistent with the strikethrough/muted name.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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