ciderpress

1.0.0-rc.3

Minor Changes

  • f71d7f4: Fix: the navbar fallback no longer overrides the auto-generated /logo.svg with the hardcoded <CiderpressLogo /> wordmark. When logo is omitted, the nav now shows the SVG written to the public dir by the banner module (derived from title). Sites that committed their own public/logo.svg already won this round; sites that didn't were silently getting the ciderpress wordmark.

    The themed wordmark is still available as an opt-in:

    import { CiderpressLogo } from "ciderpress";
    
    export default defineConfig({
      logo: ({ theme }) => <CiderpressLogo />,
    });

    New: two top-level config fields for overriding auto-generated asset paths.

    • banner?: string — hero image used on the home page and workspace landing pages. Defaults to /banner.svg.
    • favicon?: string — favicon path. Defaults to /icon.svg. Distinct from icon (the Iconify id for the inline topbar mark).
    export default defineConfig({
      banner: '/assets/hero.png',
      favicon: '/favicon.ico',
    })

    Auto-generation and the <!-- ciderpress-generated --> marker still carry the default case — these fields are only needed to point at a different filename or a CDN URL.

Patch Changes

  • Updated dependencies [f71d7f4]
    • @ciderpress/cli@1.0.0-rc.3
    • @ciderpress/config@1.0.0-rc.3
    • @ciderpress/ui@1.0.0-rc.3

1.0.0-rc.2

Patch Changes

  • e4d81aa: Test/exercise the CI release pipeline.

    No code changes — this changeset only exists to force the changesets bot to open a release PR, validate that the GitHub Actions workflow can publish via npm trusted publishing (no NPM_TOKEN, OIDC-only with id-token: write + NPM_CONFIG_PROVENANCE: true), and confirm provenance attestations land on the resulting 1.0.0-rc.2 releases. Following the local bootstrap publish of 1.0.0-rc.1, this is the first CI-driven cut.

  • Updated dependencies [e4d81aa]

    • @ciderpress/cli@1.0.0-rc.2
    • @ciderpress/config@1.0.0-rc.2
    • @ciderpress/theme@1.0.0-rc.2
    • @ciderpress/ui@1.0.0-rc.2

1.0.0-rc.1

Major Changes

  • 0a651df: Rename to ciderpress. The project moved to the thebytefarm org and the kit now lives at the unscoped ciderpress package name (replacing @zpress/kit).

    Consumer migration:

    • @zpress/cli@ciderpress/cli
    • @zpress/config@ciderpress/config
    • @zpress/ui@ciderpress/ui
    • @zpress/theme@ciderpress/theme
    • @zpress/templates@ciderpress/templates
    • @zpress/kitciderpress (unscoped)
    • zpress.config.tsciderpress.config.ts
    • Window globals: __ZPRESS_*____CIDERPRESS_*__
    • CSS vars: --zp-*--cp-*

    The @zpress/* packages are not republished — @ciderpress/* starts fresh at this version. Tagline: press your docs.

Patch Changes

  • Updated dependencies [0a651df]
    • @ciderpress/cli@1.0.0-rc.1
    • @ciderpress/config@1.0.0-rc.1
    • @ciderpress/ui@1.0.0-rc.1
    • @ciderpress/theme@1.0.0-rc.1

1.0.0-rc.0

Major Changes

  • ciderpress 1.0 — release candidate

    This is a major release that locks the v1 public API. Headline changes:

    Theme system

    • Renamed the built-in base theme to honeycrisp (apple red, the canonical brand theme) and added grannysmith (apple green) as a second apple-themed default. Both ship with dark and light variants; the sun/moon toggle swaps between them. The legacy slug 'default' aliases to 'honeycrisp' via THEME_ALIASES for backward compatibility. The full built-in roster is now honeycrisp, grannysmith, midnight, and arcade.
    • Replaced theme.colorMode with theme.variant (values: 'dark' | 'light'). The 'toggle' value is no longer supported — themes that declare both variants always show the toggle; themes that declare one hide it.
    • defineTheme() input shape changed from { name, tokens, modes, defaultMode } to { name, variants: { dark?, light? }, defaultVariant? }. The factory validates the envelope before parsing token trees so error messages now point at the offending input field.
    • ciderpress and @ciderpress/config no longer re-export ColorMode, ThemeMode, COLOR_MODES, or resolveDefaultColorMode. Use ThemeVariant, THEME_VARIANTS, and resolveDefaultVariant from @ciderpress/theme. The deprecated aliases remain in @ciderpress/theme itself for one-version migration safety.

    Config surface

    • Frontmatter is now strict — unknown keys are rejected at config load and produce a typed compile-time error. On-disk markdown frontmatter is unaffected (gray-matter never typed it as Frontmatter).
    • Renamed WorkspaceCategoryWorkspaceGroup. The config.workspaces field name is unchanged.
    • Every field on CiderpressConfig and its sub-types now has solid JSDoc that propagates to IDE hover docs.
    • Tightened the CLI --color-mode schema from string to enum('dark', 'light').

    Dependency hygiene

    • Removed gray-matter (last released 2021, drags in the abandoned js-yaml@3 line with known prototype-pollution CVEs). Replaced with a ~25-line parse / stringify helper built on yaml (eemeli/yaml).
    • Removed unused js-yaml and @types/js-yaml direct deps from @ciderpress/cli.

    Fixes

    • safe-url.ts regex is now stored with �-  escape sequences instead of raw control bytes. Git no longer marks the file as binary; editors render it correctly.
    • Deleted orphaned packages/ui/src/head/js/color-mode-{dark,light}.js.
    • Hardened variant resolution across the head IIFE, theme provider, and theme switcher with cross-reference comments and a re-entrancy guard on the MutationObserver snap-back.

    Migration

    - import { ColorMode, ThemeMode, COLOR_MODES } from 'ciderpress'
    + import { ThemeVariant, THEME_VARIANTS } from 'ciderpress'
    
      defineConfig({
        theme: {
    -     colorMode: 'dark',
    +     variant: 'dark',
    -     name: 'base',
    +     name: 'honeycrisp',
        },
        themes: [
          defineTheme({
            name: 'sunset',
    -       tokens: sunsetTokens,
    -       modes: ['dark'],
    -       defaultMode: 'dark',
    +       variants: { dark: sunsetTokens },
    +       defaultVariant: 'dark',
          }),
        ],
    -   workspaces: [{ title: 'Integrations', ... } as WorkspaceCategory],
    +   workspaces: [{ title: 'Integrations', ... } as WorkspaceGroup],
      })

Patch Changes

  • Updated dependencies
    • @ciderpress/cli@1.0.0-rc.0
    • @ciderpress/config@1.0.0-rc.0
    • @ciderpress/theme@1.0.0-rc.0
    • @ciderpress/templates@1.0.0-rc.0
    • @ciderpress/ui@1.0.0-rc.0

0.2.23

Patch Changes

  • Updated dependencies [186ee92]
    • @ciderpress/cli@0.9.1

0.2.22

Patch Changes

  • Updated dependencies [d26e7f6]
    • @ciderpress/cli@0.9.0

0.2.21

Patch Changes

  • f26cf74: fix: resolve SWC decorator panic by upgrading rsbuild to 2.0.0-rc.1
  • Updated dependencies [ca4f487]
  • Updated dependencies [f26cf74]
    • @ciderpress/core@0.11.0
    • @ciderpress/cli@0.8.5
    • @ciderpress/ui@0.9.1

0.2.20

Patch Changes

  • Updated dependencies [4c04f9d]
  • Updated dependencies [c9a2cc8]
    • @ciderpress/ui@0.9.0
    • @ciderpress/cli@0.8.4

0.2.19

Patch Changes

  • ffed994: fix(packages/ui,packages/cli,packages/ciderpress): resolve duplicate React instances in consumer repos

    Added react and react-dom resolve aliases to the Rspress builder config so rspack always uses the consumer's single React copy. Moved react from direct dependencies to peer dependencies in @ciderpress/cli to prevent pnpm from installing a private copy. Aligned React peer version range in ciderpress to ^19.2.5.

  • Updated dependencies [ffed994]

    • @ciderpress/ui@0.8.13
    • @ciderpress/cli@0.8.3

0.2.18

Patch Changes

  • Updated dependencies [81d5928]
  • Updated dependencies [81d5928]
    • @ciderpress/core@0.10.2
    • @ciderpress/cli@0.8.2
    • @ciderpress/ui@0.8.12

0.2.17

Patch Changes

  • Updated dependencies [d25fea5]
  • Updated dependencies [7a39840]
    • @ciderpress/ui@0.8.11
    • @ciderpress/core@0.10.1
    • @ciderpress/cli@0.8.1

0.2.16

Patch Changes

  • Updated dependencies [c169109]
  • Updated dependencies [c169109]
  • Updated dependencies [c169109]
  • Updated dependencies [c169109]
    • @ciderpress/cli@0.8.0
    • @ciderpress/core@0.10.0
    • @ciderpress/ui@0.8.10

0.2.15

Patch Changes

  • Updated dependencies [7a5954f]
    • @ciderpress/core@0.9.0
    • @ciderpress/cli@0.7.0
    • @ciderpress/ui@0.8.9

0.2.14

Patch Changes

  • Updated dependencies [3e5f014]
  • Updated dependencies [e3b8c86]
  • Updated dependencies [1e966e1]
  • Updated dependencies [0113fb1]
    • @ciderpress/cli@0.6.0
    • @ciderpress/core@0.8.1
    • @ciderpress/ui@0.8.8

0.2.13

Patch Changes

  • Updated dependencies [f88d0f7]
    • @ciderpress/cli@0.5.4

0.2.12

Patch Changes

  • b912b2d: Update and add READMEs
  • Updated dependencies [9b5099b]
  • Updated dependencies [9b5099b]
  • Updated dependencies [b912b2d]
    • @ciderpress/core@0.8.0
    • @ciderpress/cli@0.5.3
    • @ciderpress/ui@0.8.7

0.2.11

Patch Changes

  • Updated dependencies [9388cce]
    • @ciderpress/core@0.7.5
    • @ciderpress/cli@0.5.2
    • @ciderpress/ui@0.8.6

0.2.10

Patch Changes

  • Updated dependencies [4179cee]
    • @ciderpress/core@0.7.4
    • @ciderpress/cli@0.5.1
    • @ciderpress/ui@0.8.5

0.2.9

Patch Changes

  • Updated dependencies [56862d1]
  • Updated dependencies [56862d1]
    • @ciderpress/cli@0.5.0
    • @ciderpress/ui@0.8.4

0.2.8

Patch Changes

  • Updated dependencies [71af7e9]
    • @ciderpress/core@0.7.3
    • @ciderpress/cli@0.4.3
    • @ciderpress/ui@0.8.3

0.2.7

Patch Changes

  • Updated dependencies [3f36be0]
    • @ciderpress/core@0.7.2
    • @ciderpress/cli@0.4.2
    • @ciderpress/ui@0.8.2

0.2.6

Patch Changes

  • Updated dependencies [03f1229]
  • Updated dependencies [b090c88]
    • @ciderpress/ui@0.8.1
    • @ciderpress/cli@0.4.1

0.2.5

Patch Changes

  • Updated dependencies [1f6b8c1]
  • Updated dependencies [d8cf9b2]
  • Updated dependencies [03b0726]
  • Updated dependencies [8a125b8]
  • Updated dependencies [179ae48]
    • @ciderpress/cli@0.4.0
    • @ciderpress/ui@0.8.0
    • @ciderpress/core@0.7.1

0.2.4

Patch Changes

  • 3e7a28a: Enforce consistent file structure conventions across all packages and upgrade dependencies to latest versions.

    File Structure

    Apply a standardized file layout pattern to every source file in the monorepo:

    • Exports first: All exported functions, constants, and types appear at the top of each file immediately after imports.
    • Private separator: Non-exported (private) helper functions are placed below a // --- Private --- section separator comment.
    • Complete JSDoc: Every function now has full JSDoc documentation including @param and @returns tags. Non-exported helpers include the @private tag.
    • Spacing cleanup: Removed inconsistent double blank lines between declarations across all packages.

    Test Colocation

    Moved all test files from packages/*/test/ directories to sit alongside their source files in packages/*/src/:

    • packages/cli/test/packages/cli/src/lib/
    • packages/config/test/packages/config/src/
    • packages/core/test/packages/core/src/ (including sync/ and sync/sidebar/ subdirectories)
    • packages/templates/test/packages/templates/src/
    • packages/theme/test/packages/theme/src/
    • packages/ui/test/packages/ui/src/

    Standards

    Updated .claude/rules/typescript.md to codify the file structure conventions so all future code follows the same pattern.

    Dependency Upgrades

    • oxlint 1.55.0 → 1.56.0
    • oxfmt 0.40.0 → 0.41.0
    • @kidd-cli/core 0.4.0 → 0.7.0
    • c12 4.0.0-beta.3 → 4.0.0-beta.4
    • laufen 1.1.0 → 1.2.1
    • @iconify-json/material-icon-theme 1.2.55 → 1.2.56
    • @iconify-json/simple-icons 1.2.73 → 1.2.74
  • Updated dependencies [77796f1]

  • Updated dependencies [7d074af]

  • Updated dependencies [429846c]

  • Updated dependencies [3e7a28a]

    • @ciderpress/core@0.7.0
    • @ciderpress/ui@0.7.0
    • @ciderpress/cli@0.3.4

0.2.3

Patch Changes

  • Updated dependencies [77e872e]
    • @ciderpress/ui@0.6.1
    • @ciderpress/cli@0.3.3

0.2.2

Patch Changes

  • Updated dependencies [1b3b8e3]
  • Updated dependencies [c57ab70]
    • @ciderpress/core@0.6.2
    • @ciderpress/cli@0.3.2
    • @ciderpress/ui@0.6.0

0.2.1

Patch Changes

  • Updated dependencies [6df5ab7]
    • @ciderpress/core@0.6.1
    • @ciderpress/ui@0.5.1
    • @ciderpress/cli@0.3.1

0.2.0

Minor Changes

  • 1361d59: # Comprehensive Config API Refactor

    Major breaking changes to the ciderpress configuration API for better consistency and clarity.

    Breaking Changes

    Type System Refactor

    BREAKING: The type hierarchy has been restructured with a new base type:

    • New Entry base type: Introduced with common fields (title, icon, description) that all config types now extend
    • Old Entry type renamed to Section: The previous Entry type (representing a section/page node) is now called Section for clearer semantics. No backward compatibility alias - the name Entry is now used for the new base type.
    • WorkspaceItemWorkspace: Renamed for consistency (backward compatible alias maintained)
    • WorkspaceGroupWorkspaceCategory: More descriptive name (backward compatible alias maintained)

    All config types now extend the new Entry base:

    // All types now extend Entry
    interface Entry {
      readonly title: string | TitleConfig
      readonly icon?: IconConfig
      readonly description?: string
    }
    
    interface Section extends Entry {
      /* ... */
    }
    interface Workspace extends Entry {
      /* ... */
    }
    interface WorkspaceCategory extends Entry {
      /* ... */
    }
    interface Feature extends Entry {
      /* ... */
    }

    Workspace Field Changes

    pathprefix: Renamed for consistency with Section.prefix

    // Before
    apps: [
      {
        title: 'API',
        path: '/apps/api',
      },
    ]
    
    // After
    apps: [
      {
        title: 'API',
        prefix: '/apps/api',
      },
    ]

    nametitle on WorkspaceCategory: All types now use title consistently

    // Before
    workspaces: [
      {
        name: 'Integrations',
        items: [
          /* ... */
        ],
      },
    ]
    
    // After
    workspaces: [
      {
        title: 'Integrations',
        items: [
          /* ... */
        ],
      },
    ]

    Discovery Configuration

    Workspace items now use a discovery field to configure content auto-discovery, eliminating duplication with Section fields:

    // Before
    apps: [
      {
        title: 'API',
        path: '/apps/api',
        from: 'docs/*.md',
        titleFrom: 'frontmatter',
        sort: 'alpha',
        recursive: false,
      },
    ]
    
    // After
    apps: [
      {
        title: 'API',
        prefix: '/apps/api',
        discovery: {
          from: 'docs/*.md',
          title: { from: 'auto' },
          sort: 'alpha',
          recursive: false,
        },
      },
    ]

    Note: The from field in discovery is relative to the workspace's base path (derived from prefix). For example, prefix: "/apps/api" + discovery.from: "docs/*.md" resolves to apps/api/docs/*.md (repo-root relative).

    Title Derivation Default Changed

    Default titleFrom changed from 'filename' to 'auto'

    The 'auto' strategy uses a smart fallback chain:

    1. Try frontmatter title field
    2. Fall back to first # heading
    3. Fall back to filename (kebab-to-title)

    This is more intuitive and matches user expectations. If you relied on 'filename' behavior, explicitly set titleFrom: 'filename'.

    New TitleConfig Type

    You can now use an object for the title field to configure derivation and transformation:

    // Simple string (unchanged)
    title: 'Guides'
    
    // New: Title configuration object
    title: {
      from: 'auto',  // or 'filename' | 'heading' | 'frontmatter'
      transform: (text, slug) => text.toUpperCase()
    }

    This is available on all types that extend Entry.

    New Features

    Discovery Configuration Type

    The new Discovery type (with RecursiveDiscoveryConfig and FlatDiscoveryConfig variants) provides proper typing for content discovery configuration:

    interface Discovery {
      from?: string | GlobPattern
      title?: TitleConfig
      sort?: 'alpha' | 'filename' | ((a, b) => number)
      exclude?: GlobPattern[]
      frontmatter?: Frontmatter
      recursive?: boolean
      indexFile?: string // Only when recursive: true
    }

    Enhanced Icon Documentation

    Icon colors are now fully documented in types with the 8-color palette rotation:

    • purple (default)
    • blue
    • green
    • amber
    • cyan
    • red
    • pink
    • slate

    Migration Guide

    Automated Find/Replace

    1. Update workspace field names:

      Find:    path: '/
      Replace: prefix: '/
    2. Update workspace group names:

      Find:    name: '
      Replace: title: '
    3. Update type imports (if using types directly):

      // Before
      import type { Entry, WorkspaceItem, WorkspaceGroup } from '@ciderpress/core'
      
      // After
      import type { Section, Workspace, WorkspaceCategory } from '@ciderpress/core'

    Manual Updates

    1. Migrate workspace discovery configuration (optional but recommended):

      // Before
      apps: [
        {
          title: 'API',
          path: '/apps/api',
          from: 'docs/*.md',
          titleFrom: 'frontmatter',
          sort: 'alpha',
        },
      ]
      
      // After
      apps: [
        {
          title: 'API',
          prefix: '/apps/api',
          discovery: {
            from: 'docs/*.md',
            title: { from: 'auto' }, // Better default!
            sort: 'alpha',
          },
        },
      ]
    2. Verify title derivation behavior: If you have sections with titleFrom: 'filename' and markdown files with frontmatter or headings, the default 'auto' mode will now use those instead of the filename. To preserve old behavior, explicitly set titleFrom: 'filename'.

    Backward Compatibility

    • Old type names (Entry, WorkspaceItem, WorkspaceGroup) are re-exported as aliases
    • Old field names on Section (titleFrom, titleTransform) still work alongside the new TitleConfig approach
    • No immediate action required, but migrating to new API is recommended

    Documentation

    See updated guides:

    • Workspaces - New prefix and discovery fields
    • Auto-Discovery - New 'auto' titleFrom mode and TitleConfig
    • Configuration Reference - Full field reference

Patch Changes

  • Updated dependencies [2055c1a]
  • Updated dependencies [3cf8dc0]
  • Updated dependencies [1361d59]
  • Updated dependencies [941550c]
    • @ciderpress/core@0.6.0
    • @ciderpress/ui@0.5.0
    • @ciderpress/cli@0.3.0

0.1.7

Patch Changes

  • Updated dependencies [2f01fa4]
    • @ciderpress/ui@0.4.1
    • @ciderpress/cli@0.2.2

0.1.6

Patch Changes

  • Updated dependencies [7255aa3]
    • @ciderpress/core@0.5.0
    • @ciderpress/ui@0.4.0
    • @ciderpress/cli@0.2.1

0.1.5

Patch Changes

  • Updated dependencies [83cc277]
  • Updated dependencies [d1e2b76]
    • @ciderpress/cli@0.2.0
    • @ciderpress/core@0.4.0
    • @ciderpress/ui@0.3.1

0.1.4

Patch Changes

  • Updated dependencies [aea7b38]
  • Updated dependencies [d1b4ad5]
  • Updated dependencies [37c2ec6]
    • @ciderpress/ui@0.3.0
    • @ciderpress/core@0.3.0
    • @ciderpress/cli@0.1.4

0.1.3

Patch Changes

  • Updated dependencies [f4d5388]
    • @ciderpress/ui@0.2.2
    • @ciderpress/cli@0.1.3

0.1.2

Patch Changes

  • 2e43a80: Add README files to all packages and update license copyright to Joggr, Inc.

  • 2e43a80: Fix type exports and dependency declarations

    • Generate bundled .d.ts declaration files via Rslib dts.bundle (previously no declaration files were emitted)
    • Point exports.types to generated dist/*.d.ts instead of raw source files
    • Move react, react-dom, and @rspress/core to peerDependencies in @ciderpress/ui
    • Surface react, react-dom, and @rspress/core as peerDependencies in ciderpress
    • Centralize shared dependency versions via pnpm catalog
    • Bump @kidd-cli/core to ^0.4.0 in @ciderpress/cli
  • Updated dependencies [2e43a80]

  • Updated dependencies [2e43a80]

    • @ciderpress/cli@0.1.2
    • @ciderpress/core@0.2.1
    • @ciderpress/ui@0.2.1

0.1.1

Patch Changes

  • Updated dependencies [77adac6]
    • @ciderpress/core@0.2.0
    • @ciderpress/ui@0.2.0
    • @ciderpress/cli@0.1.1

0.1.0

Minor Changes

  • 04d2e2b: Initial release

    Public wrapper package re-exporting @ciderpress/core, @ciderpress/ui, and @ciderpress/cli. Provides the ciderpress CLI bin and the defineConfig entry point for user config files.