Materialize feature badges - #574
Conversation
|
Preview deployment status for this pull request.
|
The badge was carrying two jobs in one control: which Materialize feature a page documents, and how finished that feature is. A pill is the right form for the first and a poor one for the second — it has no room to say what "Early Access" means or who to contact — and since both features share the same status today, it read as ten repetitions of a word that couldn't explain itself. Split them. The pill carries identity plus an asterisk; a colour-matched note carries what the asterisk means, docked in the TOC rail beside the pill it belongs to. Same accent token on both, so they read as one marker across two columns rather than two unrelated notices. Nextra hides the TOC below 80rem, which would leave the asterisk pointing at nothing on a laptop, so the note also renders inline under the pills and CSS shows exactly one. That 80rem is duplicated from Nextra's own `x:max-xl:hidden` — it isn't exposed as a variable, so a future Nextra bump needs to re-check it. Also lifts the Sandworm accent palette out of `.docs-home` onto :root and html.dark. It was scoped to the landing page, so feature-badge.css had to hardcode the teal and violet HSL values with a comment as the only link back to the source of truth. The badge now reads them via var(), and its two html.dark override blocks go away since the tokens flip themselves. The --stone-* ramp stays scoped: it's inverted for that page, not general-purpose. Page-to-feature mapping moves into lib/materialize-features.ts. Nextra's toc.extraContent is a global slot with no access to page props, so the note can only learn its feature from the route; keeping a prop on the pill as well would have been a second source of truth. MDX now uses a bare <FeatureBadge /> and Snapshots renders both pills from it. Early access is a separate flag from the feature list, so a feature going GA is a one-line change that drops its asterisk and note while keeping pill and colour. Colour values are unchanged throughout: --teal-500 resolves to 178 35% 33% light / 177 28.2% 45.9% dark and --violet-500 to 253 62% 50% / 253 73.4% 63.1%, matching what shipped. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…gram - New concept pages: Hydration and Watched Permissions, grounded in the Tiger source (../internal/tiger) - Overview page: adds a system architecture diagram showing the services behind Materialize (Snapshotter, Hydrator, Datastore, SpiceDB, Cache Server, Event Log) and how they connect to a customer's own systems - Renamed "Consuming Client" to "Event Processor" (guide + diagram) to avoid confusion with a SpiceDB client - Recolored the Accelerated Queries badge/diagram accent from teal to blue for better legibility, still sourced from the authzed.com palette - Flagged the new/changed pages as "Needs Review" in the sidebar nav Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…to the overview and some improvements to the concept pages
Reworks the diagram to follow AuthZed's Sandworm design system (design/diagrams.md): dashed 7-3 scope containers vs. solid node borders, mono-caps container labels riding the dashed edge, orthogonal connectors with rounded corners, and stone/teal color tokens instead of black/grey. Also fixes several label-overlap and text-wrapping issues found along the way. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…keep Sandworm client-state SVG unused for now - New API page for DownloadPermissionSets covering Parquet vs Avro file formats and parsing guidance - Permission Sets: add a second set-to-set example, a collapsible example schema, and a callout clarifying the child/parent terminology - Rename the group example from group:shared to group:engineering for clarity - Link DownloadPermissionSets from the permission set lifecycle page - Add the redesigned Sandworm client-state diagram SVG (not yet wired into the page) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… SpiceDB snapshots The architecture diagram showed Event Streams flowing directly from the Event Log to the customer's Event Processor; the Cache Server is actually what reads the log and streams events out. Redrew the diagram with a two-tier layout so most connectors are short straight lines instead of long detours. The Snapshots and Hydration concept pages used "snapshot" to mean both Materialize's computed permission-set snapshot and SpiceDB's own schema and relationship snapshot. Renamed the former to "permission set snapshot" throughout and added a disambiguation section distinguishing it from a SpiceDB revision and a SpiceDB snapshot.
Permission Sets links were going to the wrong directory
|
@authzed-catherine Found two links that were ../ rather than ./, so they were backing out above the Materialize directory, but thats it! |
cormacf
left a comment
There was a problem hiding this comment.
@authzed-catherine If those two link changes I added look good to you, it looks good to me!
The note carries a head line naming its feature, which the TOC rail needs — it sits in its own column, away from the pill it answers. Inline it lands directly under that pill, so the head repeats a name already on screen, and on Snapshots the two notes then print the same body sentence twice under two pills. Roughly half the block was duplicate text. The body copy never varied by feature; it's the same Dedicated early-access offer for both. So inline, when every pill on the page carries the asterisk, render one headless note and let the pills speak for identity. The asterisk moves to the head of that note as its referent. Heads stay whenever only some pills are early access — once Accelerated Queries or Event Streams reaches GA on its own, the note has to say which pill it belongs to again. Same reason the rail keeps them at every width. Colour follows the same rule: a single pill lets the note keep its accent on both the rule and the asterisk, two pills would force it to pick a side, so those fall back to a neutral hairline.
Build output of scripts/build-changed-manifest.mjs, stale since the DownloadPermissionSets page landed. Adds that entry and sorts limitations into place; no hand edits.
|
CLA Assistant Lite bot: I have read the CLA Document and I hereby sign the CLA 2 out of 3 committers have signed the CLA. |
Description
Identified the Materialize content for the accelerated queries use-case versus the event streams use-case.
Follow-up: pill + note split
The badge was carrying two jobs in one control — which feature a page documents, and how finished that feature is. A pill suits the first and not the second: it has no room to say what "Early Access" means or who to contact, and since both features share the same status today it read as ten repetitions of a word that couldn't explain itself.
Split into two markers that read as one:
Snapshots documents both features and renders both pills from a single tag.
Implementation notes for reviewers
Accent tokens moved to
:root. The Sandworm palette was scoped under.docs-home, sofeature-badge.csshad to hardcode the teal and violet HSL values with a comment as the only link back to the source of truth. They now live inapp/globals.cssand the badge reads them viavar(), which also removes its twohtml.darkoverride blocks — the tokens flip themselves. Colour values are unchanged:--teal-500is178 35% 33%light /177 28.2% 45.9%dark,--violet-500is253 62% 50%/253 73.4% 63.1%. The--stone-*ramp stays scoped to.docs-home; it's inverted for that page and isn't general-purpose.Authoring changed. MDX now uses a bare
<FeatureBadge />; the page-to-feature mapping lives inlib/materialize-features.ts. This is forced by Nextra —toc.extraContentis a global slot with no access to page props, so the note can only learn its feature from the route, and keeping a prop on the pill as well would have been a second source of truth. Adding a new Materialize page now means adding an entry to that map. Worth a second opinion: the inline prop may be preferable even at the cost of duplication.80rem(x:max-xl:hidden), which would leave the asterisk pointing at nothing on a laptop. The note therefore renders in both placements and CSS shows exactly one. That80remis duplicated infeature-notes.cssbecause Nextra doesn't expose it as a variable — a future Nextra upgrade needs to re-check it, or the two placements desync and you get either both notes or neither.Early access is a separate flag from the feature list, so a feature reaching GA is a one-line change that drops its asterisk and note while keeping its pill and colour.
Testing
pnpm buildpasses (92 pages),pnpm format:checkclean./materialize/concepts/snapshots(two pills, two notes) and the single-feature pages (one each); confirmed nothing leaks onto non-Materialize pages.Open questions
getting-started/limitationsis the only Materialize page besides Overview without a badge. Deliberate, or an oversight?References