Skip to content

Releases: zamdevio/expgov

Release list

v1.0.0

Choose a tag to compare

@zamdevio zamdevio released this 09 Jul 04:44

expgov v1.0.0

First stable release of export-governance for TypeScript SDK barrels — inventory, diff, validate, trend, timeline, and graph. Read-only by default except init.

Docs: https://expgov.pages.dev


Install

# CLI (devDependency — command is still `expgov`)
pnpm add -D @expgov/cli

# SDK only — programmatic runExports* APIs
pnpm add -D @expgov/core
expgov init
expgov validate
expgov inventory

npm packages (both 1.0.0)

Package Role
@expgov/cli expgov binary + @expgov/cli/core config types
@expgov/core SDK engine without the CLI binary

Config authors:

import { defineConfig, type ExpgovConfig } from '@expgov/cli/core';

Why @expgov/cli (not expgov)?

npm rejected the unscoped name expgov as too similar to expo. The CLI publishes under the @expgov org scope; the command name stays expgov.

Details: https://expgov.pages.dev/install


What’s in v1.0.0

  • Full CLI: init, inventory, diff, validate, doctor, suggest, trend, timeline, graph, version, help
  • Tier governance — @sdkTier JSDoc + nested tiers.* config buckets
  • tsconfig paths ↔ npm exports parity checks
  • Per-SHA cache (.expgov/cache/) with worktree freshness gate
  • Stable --json envelopes for CI
  • VitePress docs site at expgov.pages.dev
  • Example SDK fixture in examples/sdk/

Fixes since 0.0.1

  • expgov version --check queries @expgov/cli on the npm registry (not unscoped expgov)
  • Update install hints use pnpm add -g @expgov/cli@latest
  • expgov init scaffolds import from '@expgov/cli/core'

v1 contract

  • Stable: CLI argv, --json envelope shape, exit codes
  • Additive minors OK: new commands, flags, and @expgov/core exports
  • Major bump required for breaking CLI or SDK contract changes

Backlog items (graph filters, multibarrel, fix, issues) are planned as additive layers on top of this surface.


Publish (maintainer)

cd packages/core && pnpm publish --access public   # @expgov/core@1.0.0
cd ../.. && pnpm publish --access public            # @expgov/cli@1.0.0

Links

v0.0.1

Choose a tag to compare

@zamdevio zamdevio released this 09 Jul 03:47

expgov v0.0.1 — first public release

Portable export-governance for TypeScript SDK barrels. Inventory public exports, diff between refs, validate tier rules, trend release tags, trace barrel history, and map the export graph — read-only by default except init.

Docs: https://expgov.pages.dev


Install

# CLI (devDependency — binary name is still `expgov`)
pnpm add -D @expgov/cli

# SDK only — programmatic runExports* APIs
pnpm add -D @expgov/core
expgov init
expgov validate
expgov inventory

CI / scripting:

expgov validate --json --silent

npm packages

Package npm Role
CLI @expgov/cli@0.0.1 expgov command + @expgov/cli/core config types
SDK @expgov/core@0.0.1 runExports* engine without the CLI binary

The CLI tarball is self-contained (dist/cli.js bundles core at build time). Config authors can use:

import { defineConfig, type ExpgovConfig } from '@expgov/cli/core';

SDK consumers import runExportsValidate, runExportsInventory, etc. from @expgov/core — same engines as the CLI, host-neutral, with matching --json envelopes.


Why @expgov/cli and not expgov?

npm rejected the unscoped name expgov as too similar to the existing package expo. That is registry policy, not a permissions issue — owning the @expgov org does not reserve the global unscoped name.

  • Install package: @expgov/cli
  • Command on PATH: expgov (unchanged)

Details: https://expgov.pages.dev/install


Commands

Command Purpose
init Scaffold expgov.config.ts
inventory Barrel snapshot — counts, tiers, namespaces
diff Compare export surfaces between refs
validate Governance checks (exit 0/1)
doctor Config discovery and cache hygiene
suggest Dry-run tier allowlist hints
trend Export counts across release tags
timeline Git log of barrel edits
graph Export surface graph
version CLI semver + optional npm update check
help Command reference

Global flags: --json, --quiet, --silent, --cwd, --config, cache overrides.


Highlights

  • Tier governance@sdkTier JSDoc + nested tiers.{stable,internal,advanced} config buckets
  • Parity checks — tsconfig paths ↔ npm exports
  • Per-SHA cache.expgov/cache/ with worktree freshness gate
  • Machine output — stable JSON envelopes for CI
  • Thin CLI host — Commander/chalk/inquirer in CLI; domain logic in @expgov/core
  • TypeScript-only configexpgov.config.ts via jiti (no JSON config)
  • Docs site — VitePress at expgov.pages.dev
  • Example SDKexamples/sdk/ teaching fixture

Requirements

  • Node.js ≥ 20
  • Git repo with a TypeScript SDK barrel (index.ts re-exports)

Pre-v1 note

This is the first public release. CLI argv, --json envelope shape, and exit codes are treated as user-facing contracts. Internal APIs may still change before v1.


Links