Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CONTRACT.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Status

This document defines the draft `1.0` core catalog document shape. Catalog and package version `0.6.0` remain pre-1.0 and may change incompatibly before a stable release. The Rust catalog is distributed on crates.io; generated npm artifacts are maintained in this repository. User-imported provider packs use the separate contract in [`PROVIDER_PACKS.md`](./PROVIDER_PACKS.md); their custom-term assets never enter this core catalog.
This document defines the draft `1.0` core catalog document shape. Catalog and package version `0.7.0` remain pre-1.0 and may change incompatibly before a stable release. The Rust catalog is distributed on crates.io; generated npm artifacts are maintained in this repository. User-imported provider packs use the separate contract in [`PROVIDER_PACKS.md`](./PROVIDER_PACKS.md); their custom-term assets never enter this core catalog.

The JSON Schema at [`schemas/catalog.schema.json`](./schemas/catalog.schema.json) is the machine-readable source of truth. [`catalog/catalog.json`](./catalog/catalog.json) is the only source catalog. Generated Cargo and npm copies must not be edited directly. The schema is copied into both packages; `$schema` is an editor-facing canonical repository URL and runtime consumers do not fetch it.

Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ edition = "2024"
license = "Apache-2.0"
repository = "https://github.com/stack-sh/theme"
rust-version = "1.85"
version = "0.6.0"
version = "0.7.0"

[workspace.dependencies]
serde = { version = "1.0", features = ["derive"] }
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

The core catalog contract is defined by [`CONTRACT.md`](./CONTRACT.md) and [`schemas/catalog.schema.json`](./schemas/catalog.schema.json). The separate local-only provider-pack contract is defined by [`PROVIDER_PACKS.md`](./PROVIDER_PACKS.md) and [`schemas/provider-pack.schema.json`](./schemas/provider-pack.schema.json). The canonical core source is [`catalog/catalog.json`](./catalog/catalog.json); Rust and JavaScript package trees are generated from that source with one content revision.

The current `0.6.0` catalog contains the core `default`, `light`, and `dark` themes, repository-authored fallbacks for every Stack 1.0 node kind, 30 provider-neutral explicit icons, and versioned host-independent font metrics. The explicit icon catalog covers clients and compute, networking and delivery, data and events, development workflows, security, general collaboration tools, and AI systems. Its identifiers are `api`, `web`, `mobile`, `desktop`, `server`, `container`, `cluster`, `cloud`, `scheduler`, `webhook`, `identity`, `observability`, `gateway`, `load-balancer`, `dns`, `cdn`, `firewall`, `network`, `event`, `stream`, `search`, `analytics`, `repository`, `pipeline`, `secret`, `document`, `task`, `chat`, `email`, and `ai`.
The current `0.7.0` catalog contains the core `default`, `light`, and `dark` themes, repository-authored fallbacks for every Stack 1.0 node kind, 30 provider-neutral explicit icons, and versioned host-independent font metrics. The explicit icon catalog covers clients and compute, networking and delivery, data and events, development workflows, security, general collaboration tools, and AI systems. Its identifiers are `api`, `web`, `mobile`, `desktop`, `server`, `container`, `cluster`, `cloud`, `scheduler`, `webhook`, `identity`, `observability`, `gateway`, `load-balancer`, `dns`, `cdn`, `firewall`, `network`, `event`, `stream`, `search`, `analytics`, `repository`, `pipeline`, `secret`, `document`, `task`, `chat`, `email`, and `ai`.

Provider-specific assets are not bundled. The provider-pack contract lets a CLI or browser validate an archive that the user explicitly selected from the provider's official source, keep it local, preserve the artwork, and carry source and terms notices into diagram output.

Expand All @@ -13,7 +13,7 @@ Provider-specific assets are not bundled. The provider-pack contract lets a CLI
Add the Rust catalog from crates.io with:

```sh
cargo add stack-theme@0.6.0
cargo add stack-theme@0.7.0
```

The package supports Rust 1.85 or newer and includes only the generated catalog API, repository-authored SVG assets, public schemas, package documentation, and the Apache-2.0 license.
Expand Down Expand Up @@ -75,4 +75,4 @@ Repository-authored source code, catalog data, and assets are licensed under the

Third-party fonts, icons, and other assets keep their own licenses and are not relicensed under Apache-2.0. Their provenance and redistribution terms must be recorded in [THIRD_PARTY_LICENSES.md](./THIRD_PARTY_LICENSES.md) before they are committed. Current provider icons are user-imported and are never committed or copied into the Cargo or npm packages.

Maintainers use the [trusted publishing procedure](./docs/releasing.md#ongoing-trusted-publishing) for subsequent crates.io releases. See the [0.6.0 release notes](./docs/releases/v0.6.0.md) for the database card update.
Maintainers use the [trusted publishing procedure](./docs/releasing.md#ongoing-trusted-publishing) for subsequent crates.io releases. See the [0.7.0 release notes](./docs/releases/v0.7.0.md) for the cache card update.
8 changes: 4 additions & 4 deletions catalog/catalog.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://raw.githubusercontent.com/stack-sh/theme/main/schemas/catalog.schema.json",
"schemaVersion": "1.0",
"catalogVersion": "0.6.0",
"catalogVersion": "0.7.0",
"reservedThemeIds": [],
"fallbacks": {
"missingThemeId": "default",
Expand Down Expand Up @@ -82,7 +82,7 @@
"function": { "shape": "hexagon", "fill": "surfaceMuted", "stroke": "accent", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 0, "fallbackIconId": "kind-function" },
"worker": { "shape": "capsule", "fill": "surface", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 16000, "fallbackIconId": "kind-worker" },
"database": { "shape": "rounded-rectangle", "fill": "surface", "stroke": "accent", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 8000, "fallbackIconId": "kind-database" },
"cache": { "shape": "cylinder", "fill": "surfaceMuted", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 0, "fallbackIconId": "kind-cache" },
"cache": { "shape": "rounded-rectangle", "fill": "surfaceMuted", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 8000, "fallbackIconId": "kind-cache" },
"queue": { "shape": "capsule", "fill": "surfaceMuted", "stroke": "accent", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 16000, "fallbackIconId": "kind-queue" },
"storage": { "shape": "rounded-rectangle", "fill": "surface", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 4000, "fallbackIconId": "kind-storage" },
"external": { "shape": "hexagon", "fill": "surfaceMuted", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 0, "fallbackIconId": "kind-external" }
Expand Down Expand Up @@ -144,7 +144,7 @@
"function": { "shape": "hexagon", "fill": "surfaceMuted", "stroke": "accent", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 0, "fallbackIconId": "kind-function" },
"worker": { "shape": "capsule", "fill": "surface", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 16000, "fallbackIconId": "kind-worker" },
"database": { "shape": "rounded-rectangle", "fill": "surface", "stroke": "accent", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 8000, "fallbackIconId": "kind-database" },
"cache": { "shape": "cylinder", "fill": "surfaceMuted", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 0, "fallbackIconId": "kind-cache" },
"cache": { "shape": "rounded-rectangle", "fill": "surfaceMuted", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 8000, "fallbackIconId": "kind-cache" },
"queue": { "shape": "capsule", "fill": "surfaceMuted", "stroke": "accent", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 16000, "fallbackIconId": "kind-queue" },
"storage": { "shape": "rounded-rectangle", "fill": "surface", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 4000, "fallbackIconId": "kind-storage" },
"external": { "shape": "hexagon", "fill": "surfaceMuted", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 0, "fallbackIconId": "kind-external" }
Expand Down Expand Up @@ -206,7 +206,7 @@
"function": { "shape": "hexagon", "fill": "surfaceMuted", "stroke": "accent", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 0, "fallbackIconId": "kind-function" },
"worker": { "shape": "capsule", "fill": "surface", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 16000, "fallbackIconId": "kind-worker" },
"database": { "shape": "rounded-rectangle", "fill": "surface", "stroke": "accent", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 8000, "fallbackIconId": "kind-database" },
"cache": { "shape": "cylinder", "fill": "surfaceMuted", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 0, "fallbackIconId": "kind-cache" },
"cache": { "shape": "rounded-rectangle", "fill": "surfaceMuted", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 8000, "fallbackIconId": "kind-cache" },
"queue": { "shape": "capsule", "fill": "surfaceMuted", "stroke": "accent", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 16000, "fallbackIconId": "kind-queue" },
"storage": { "shape": "rounded-rectangle", "fill": "surface", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 4000, "fallbackIconId": "kind-storage" },
"external": { "shape": "hexagon", "fill": "surfaceMuted", "stroke": "border", "text": "text", "accent": "accent", "cornerRadiusMilliPx": 0, "fallbackIconId": "kind-external" }
Expand Down
2 changes: 1 addition & 1 deletion crates/stack-theme/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@

The public contract and compatibility policy are documented in the repository's [`CONTRACT.md`](https://github.com/stack-sh/theme/blob/main/CONTRACT.md).

Add version 0.6.0 from crates.io with `cargo add stack-theme@0.6.0`. The package supports Rust 1.85 or newer.
Add version 0.7.0 from crates.io with `cargo add stack-theme@0.7.0`. The package supports Rust 1.85 or newer.
14 changes: 7 additions & 7 deletions crates/stack-theme/src/generated/catalog.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://raw.githubusercontent.com/stack-sh/theme/main/schemas/catalog.schema.json",
"schemaVersion": "1.0",
"catalogVersion": "0.6.0",
"catalogVersion": "0.7.0",
"reservedThemeIds": [],
"fallbacks": {
"missingThemeId": "default",
Expand Down Expand Up @@ -188,12 +188,12 @@
"fallbackIconId": "kind-database"
},
"cache": {
"shape": "cylinder",
"shape": "rounded-rectangle",
"fill": "surfaceMuted",
"stroke": "border",
"text": "text",
"accent": "accent",
"cornerRadiusMilliPx": 0,
"cornerRadiusMilliPx": 8000,
"fallbackIconId": "kind-cache"
},
"queue": {
Expand Down Expand Up @@ -1395,12 +1395,12 @@
"fallbackIconId": "kind-database"
},
"cache": {
"shape": "cylinder",
"shape": "rounded-rectangle",
"fill": "surfaceMuted",
"stroke": "border",
"text": "text",
"accent": "accent",
"cornerRadiusMilliPx": 0,
"cornerRadiusMilliPx": 8000,
"fallbackIconId": "kind-cache"
},
"queue": {
Expand Down Expand Up @@ -2602,12 +2602,12 @@
"fallbackIconId": "kind-database"
},
"cache": {
"shape": "cylinder",
"shape": "rounded-rectangle",
"fill": "surfaceMuted",
"stroke": "border",
"text": "text",
"accent": "accent",
"cornerRadiusMilliPx": 0,
"cornerRadiusMilliPx": 8000,
"fallbackIconId": "kind-cache"
},
"queue": {
Expand Down
4 changes: 2 additions & 2 deletions crates/stack-theme/src/generated/metadata.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Generated by scripts/generate.mjs. Do not edit.
pub const CATALOG_VERSION: &str = "0.6.0";
pub const CATALOG_REVISION: &str = "sha256:4d4e9dcda36bf2a5187a233c0be74c9e9302f41d5021e1fa2a73712837ff55c1";
pub const CATALOG_VERSION: &str = "0.7.0";
pub const CATALOG_REVISION: &str = "sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a";

pub fn icon_svg(asset_path: &str) -> Option<&'static str> {
match asset_path {
Expand Down
7 changes: 7 additions & 0 deletions docs/releases/v0.7.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Stack Theme 0.7.0

Cache nodes now use a rounded card with an 8 px corner radius in the `default`, `light`, and `dark` themes. The cache icon retains the node's identity without a decorative cylinder cap competing with its label or border.

Cache colors, typography, icons, and minimum dimensions are unchanged. The `cylinder` shape remains supported for custom themes; only the built-in cache fallback changes. The catalog schema remains `1.0`, and layout and rendering remain the engine's responsibility.

The Rust crate and generated catalog share version `0.7.0`. This release does not introduce custom palettes or a new npm distribution channel.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "stack-theme-workspace",
"private": true,
"version": "0.6.0",
"version": "0.7.0",
"workspaces": [
"packages/theme"
],
Expand Down
2 changes: 1 addition & 1 deletion packages/theme/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@

The package is browser-safe and performs no filesystem, network, clock, locale, or host-font access. See the repository's [`CONTRACT.md`](https://github.com/stack-sh/theme/blob/main/CONTRACT.md) for the core catalog and [`PROVIDER_PACKS.md`](https://github.com/stack-sh/theme/blob/main/PROVIDER_PACKS.md) for the local provider-pack contract.

Catalog `0.6.0` includes 30 provider-neutral explicit icons shared by the `default`, `light`, and `dark` themes: `api`, `web`, `mobile`, `desktop`, `server`, `container`, `cluster`, `cloud`, `scheduler`, `webhook`, `identity`, `observability`, `gateway`, `load-balancer`, `dns`, `cdn`, `firewall`, `network`, `event`, `stream`, `search`, `analytics`, `repository`, `pipeline`, `secret`, `document`, `task`, `chat`, `email`, and `ai`. Resolve a core icon's catalog asset path through `iconSvg()`; do not treat a logical icon identifier as a filesystem path or URL.
Catalog `0.7.0` includes 30 provider-neutral explicit icons shared by the `default`, `light`, and `dark` themes: `api`, `web`, `mobile`, `desktop`, `server`, `container`, `cluster`, `cloud`, `scheduler`, `webhook`, `identity`, `observability`, `gateway`, `load-balancer`, `dns`, `cdn`, `firewall`, `network`, `event`, `stream`, `search`, `analytics`, `repository`, `pipeline`, `secret`, `document`, `task`, `chat`, `email`, and `ai`. Resolve a core icon's catalog asset path through `iconSvg()`; do not treat a logical icon identifier as a filesystem path or URL.

`providerPackSchema` describes manifests produced from a provider archive that the user explicitly imports. It requires local-only processing, disabled package redistribution, provider-prefixed icon IDs, source and processed hashes, artwork-preservation policy, and user-visible terms notices. The package contains no vendor asset bytes and never downloads or uploads an archive.
4 changes: 2 additions & 2 deletions packages/theme/catalog-metadata.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"catalogVersion": "0.6.0",
"catalogRevision": "sha256:4d4e9dcda36bf2a5187a233c0be74c9e9302f41d5021e1fa2a73712837ff55c1"
"catalogVersion": "0.7.0",
"catalogRevision": "sha256:4a8b94b746c6b120998bfbe701edd722449a28c89c424b0a33f67561756ded5a"
}
18 changes: 9 additions & 9 deletions packages/theme/catalog.generated.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 7 additions & 7 deletions packages/theme/catalog.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://raw.githubusercontent.com/stack-sh/theme/main/schemas/catalog.schema.json",
"schemaVersion": "1.0",
"catalogVersion": "0.6.0",
"catalogVersion": "0.7.0",
"reservedThemeIds": [],
"fallbacks": {
"missingThemeId": "default",
Expand Down Expand Up @@ -188,12 +188,12 @@
"fallbackIconId": "kind-database"
},
"cache": {
"shape": "cylinder",
"shape": "rounded-rectangle",
"fill": "surfaceMuted",
"stroke": "border",
"text": "text",
"accent": "accent",
"cornerRadiusMilliPx": 0,
"cornerRadiusMilliPx": 8000,
"fallbackIconId": "kind-cache"
},
"queue": {
Expand Down Expand Up @@ -1395,12 +1395,12 @@
"fallbackIconId": "kind-database"
},
"cache": {
"shape": "cylinder",
"shape": "rounded-rectangle",
"fill": "surfaceMuted",
"stroke": "border",
"text": "text",
"accent": "accent",
"cornerRadiusMilliPx": 0,
"cornerRadiusMilliPx": 8000,
"fallbackIconId": "kind-cache"
},
"queue": {
Expand Down Expand Up @@ -2602,12 +2602,12 @@
"fallbackIconId": "kind-database"
},
"cache": {
"shape": "cylinder",
"shape": "rounded-rectangle",
"fill": "surfaceMuted",
"stroke": "border",
"text": "text",
"accent": "accent",
"cornerRadiusMilliPx": 0,
"cornerRadiusMilliPx": 8000,
"fallbackIconId": "kind-cache"
},
"queue": {
Expand Down
2 changes: 1 addition & 1 deletion packages/theme/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@stack-sh/theme",
"version": "0.6.0",
"version": "0.7.0",
"description": "Canonical Stack theme catalog contract and embedded catalog data",
"type": "module",
"license": "Apache-2.0",
Expand Down
Loading