Skip to content

Releases: Smeldr/cli

smeldr.dev/cli v0.18.0 — Standing command

Choose a tag to compare

@xxwink xxwink released this 06 Oct 11:20

[0.18.0] - 2026-10-06

Added

  • smeldr-cli standing <type_name> <slug> [--json]: calls the MCP tool get_item_standing and prints holds, ceased, or none (an item of a type that has standing but no stored row is none), or no standing for this type when the type has no standing. Requires smeldr.dev/mcp v1.46.0 or later on the server and Editor role. Type-name is dynamic (snake_case) or compiled (e.g. Decision, Amendment). --json prints the tool's whole result.

Notes

  • <type> get and <type> list do not display standing: the REST item is the module's own struct, and adding the field there would change core's REST output. Use standing or the MCP get tools to access standing directly.

smeldr.dev/cli v0.17.2 — coverage gate

Choose a tag to compare

@xxwink xxwink released this 19 Sep 14:21

[0.17.2] — 2026-09-19

Added

codecov.yml (target 24%, ~2 points below today's real 25.8% coverage) and a coverage-upload step in ci.yml (go test -coverprofile=coverage.out ./... + codecov/codecov-action@v5). Neither existed before. Raising coverage toward core's own 96% gate is real, separate, follow-up work — this release only adds the regression gate at today's real baseline.

[0.17.1] — 2026-09-19

Changed

cli's module root has no importable package — cmd/smeldr-cli is the only one, and pkg.go.dev renders whatever package doc comment sits there. Moved main.go's existing, accurate comment (env vars, usage) to a dedicated doc.go. Docs-only, no behaviour change.

[0.17.0] — 2026-09-03

Added

  • Two list commands now render an aligned table by default instead of raw JSON: smeldr-cli <type> list (e.g. smeldr-cli posts list) displays SLUG, STATUS, CREATEDAT, UPDATEDAT; smeldr-cli social post list displays ID, PLATFORM, STATUS, SCHEDULED_AT. Both commands gained --json (restore raw-JSON output) and --fields <comma,separated,keys> (custom columns, case-insensitive key matching). A new shared keyedTable helper reuses existing renderTable, findKeyIn, and asString helpers instead of duplicating table logic.

[0.16.0] — 2026-09-02

Added

  • A new top-level transition command: smeldr-cli transition <type_name> <slug> --to <state> [--reason <text>]. Moves an item — dynamic content or a compiled type (e.g. Decision, Task, Signal) — to a new state via its registered StateFlow, over MCP (calling the transition_item tool). Role is enforced by the target transition's own gate on the server, not by smeldr-cli itself. This is the CLI's first way to reach transition_item at all — previously the only way to trigger a StateFlow transition on a compiled type (e.g. ratifying a Decision) was a hand-built raw HTTP request to the MCP endpoint. Example: smeldr-cli transition Decision <slug> --to ratified.

Fixed

  • The smeldr-cli --version / smeldr-cli version output (the cliVersion constant in main.go) had been stuck at 0.15.2 since the v0.15.3 release shipped — the binary's own version output was lying about itself for that whole release. Now correctly reports the version being shipped.

[0.15.3] — 2026-08-20

Removed

  • loadConfig no longer falls back to legacy FORGE_URL/FORGE_TOKEN/FORGE_MCP_URL env vars, and .forge-cli.env is no longer read as a fallback to .smeldr-cli.env — SMELDR_* and .smeldr-cli.env only now. Extends D53's reasoning (no compatibility twin for a caller that does not exist, smeldr.dev/core) from core's exported Go API to this repo's own env-var compatibility, per Peter's own explicit 2026-08-15 go-ahead (T87).

[0.15.2] — 2026-07-09

Changed

  • post create, post list, post get, post publish, post archive,
    post delete, post queue now call the REST API (SMELDR_URL with bearer
    token SMELDR_TOKEN) instead of MCP tools. Endpoints: POST /social/posts,
    GET /social/posts, GET /social/posts/{id}, PUT /social/posts/{id},
    DELETE /social/posts/{id}. Post delete returns 204 No Content (no output).
  • Help text updated to clarify: post commands use REST API (SMELDR_URL + bearer
    token); credential, schedule, and platform commands use MCP endpoint (SMELDR_MCP_URL).

[0.15.1] — 2026-06-28

Added

  • LICENSE file (MIT). smeldr-cli has no AGPL linkage (does not import
    smeldr.dev/core); MIT maximises adoption for an operator tool.
    Copyright holder: Peter Ravn Thers.

[0.15.0] — 2026-06-10

Added

  • smeldr-cli logs — fetches and displays in-memory captured log entries
    from a running Smeldr instance (Admin role). Flags: --level (min level),
    --limit (most recent N), --since (RFC3339), --json (raw output).
    Requires app.CaptureLogs() on the server (core v1.36.0+, A128) (T79).

[0.14.1] — 2026-06-07

Changed

  • Brand-prose sweep (T101, A135): flag description, help text, and comments updated
    "Forge" → "Smeldr" (init.go, media.go, status.go). Test env-var identifiers
    TEST_FORGE_CLI_* → TEST_SMELDR_CLI_*, __nonexistent_forge_cli_env__ →
    __nonexistent_smeldr_cli_env__. Preserved: ForgeURL, FORGE_* fallback docs,
    README migration note, fixture values. No exported-symbol or behaviour change.

[0.14.0] — 2026-06-07

Breaking

  • Binary renamed forge-cli → smeldr-cli (T100, Amendment A133): The
    install path is now go install smeldr.dev/cli/cmd/smeldr-cli@latest. Update
    any scripts that invoke forge-cli to use smeldr-cli.

    Legacy FORGE_* env vars and .forge-cli.env are still read as fallbacks
    (T86/T87 compatibility track — no change required for existing env files).

Added

  • smeldr-cli logs command (T79, Amendment A133): GET /_logs directly
    (not via MCP) — prints a tabwriter table of the in-memory log ring captured by
    app.CaptureLogs() (core v1.36.0+, A128). Requires Admin role.
    • Flags: --level LEVEL, --limit N, --since RFC3339, --json.
    • Table columns: TIMESTAMP, LEVEL, SEQ, MESSAGE (entries newest-first).
    • Dropped-entry footer when the ring buffer has overflowed.
    • Direct HTTP (not MCP) — works even when the MCP layer is the failing component.

[0.13.0] — 2026-06-04

Added

  • nav command group (Amendment A127, T18): four Editor-role commands
    for navigation tree management (requires app.Nav(...) on the server):
    • nav list — aligned table output (ID, LABEL, PATH, PARENT, HIDDEN, GHOST, SORT); --json for raw.
    • nav create --label <label> [--path <path>] [--parent-id <id>] [--module <module>] [--hidden] [--ghost] [--sort-order <n>]
    • nav update <id> [same flags] — absent fields preserved from stored item.
    • nav delete <id> — deletes item and all its descendants.

[0.12.0] — 2026-06-04

Added

  • redirect command group (Amendment A125, T30): three Editor-role commands
    for runtime redirect management (requires app.Redirects(db) on the server):
    • redirect list — aligned table output (FROM, TO, CODE, PREFIX); --json for raw.
    • redirect create --from <path> --to <path> [--code 301|302|410] [--prefix]
    • redirect delete <from-path>

[0.11.0] — 2026-06-03

Changed (additive, non-breaking)

  • SMELDR_* env vars preferred (Amendment A123, T86 / T78): loadConfig now
    reads SMELDR_URL, SMELDR_TOKEN, SMELDR_MCP_URL first, falling back to
    FORGE_URL, FORGE_TOKEN, FORGE_MCP_URL when unset. Both .smeldr-cli.env
    and .forge-cli.env are read (.smeldr-cli.env loaded first). forge-cli init
    now writes .smeldr-cli.env with SMELDR_* variable names. Closes T78.

[0.10.0] — 2026-06-01

Block-system commands (T32 component 6, Amendment A119) + T77 table output.

Note: the 0.9.0–0.9.3 entries are absent from this CHANGELOG, and the
cliVersion const had lagged at 0.9.0 despite tags shipping through 0.9.3
(audit list, oauth revoke, etc.). This release resyncs the const to 0.10.0;
the missing 0.9.x entries are a pre-existing gap to backfill separately.

Added

  • block command group mirroring the 12 block MCP tools (T32 component 3):
    • block node create|update|get|list|publish|archive (Author role).
    • block section add|reorder|remove and block item add|reorder|remove (Editor role).
  • block node list prints an aligned table (columns ID, type_name, status, slug);
    --json switches to raw JSON.
  • Block Fields keys are case-sensitive PascalCase; --field K=V preserves casing
    (and --fields <json> passes an object through verbatim).

Changed

  • cliVersion resynced 0.9.0 → 0.10.0.

[0.8.0] — 2026-05-14

forge-social CLI parity — credential get/delete, platform configure, X support.

Added

  • forge-cli social credential get <id> — retrieves a single credential by slug via get_social_credential.
  • forge-cli social credential delete <id> — permanently deletes a credential via delete_social_credential.
  • forge-cli social platform configure --platform mastodon|linkedin|x --client-id <id> --client-secret <secret> --redirect-url <url> [--instance-url <url>] [--success-url <url>] — configures per-platform OAuth 2.0 app credentials via create_platform_config. Never echoes secrets.

Changed

  • forge-cli social credential create — now accepts --platform x. Fatal error if --instance-url is provided for platform x.
  • forge-cli social post create/queue — help text updated to show mastodon|linkedin|x for --platform.

[0.7.0] — 2026-05-12

forge-social CLI commands — post, credential, and schedule management (M18+M19).

Added

  • forge-cli social post create --credential <id> --body "..." [--platform mastodon|linkedin] [--at <RFC3339>] — creates a draft or scheduled post via MCP.
  • forge-cli social post queue --credential <id> --body "..." [--platform ...] — enqueues a post for the next available PublicationSchedule slot (status queued).
  • forge-cli social post list [--status <status>] — lists posts filtered by status.
  • forge-cli social post get <id> — retrieves a single post.
  • forge-cli social post publish <id> — publishes a post immediately.
  • forge-cli social post archive <id> — archives a post.
  • forge-cli social post delete <id> — permanently deletes a post.
  • forge-cli social credential create --platform mastodon|linkedin [--instance-url <url>] — starts OAuth flow and prints the authorization URL.
  • forge-cli social credential list — lists all configured credentials.
  • forge-cli social schedule create --credential <id> --slot "<weekday> HH:MM IANA/TZ" [--slot ...] — creates a recurring publication schedule.
  • forge-cli social schedule show --credential <id> — shows the schedule for a credential.
  • forge-cli social schedule pause --credential <id> — suspends the schedule.
  • forge-cli social schedule resume --credential <id> — reactivates a paused schedul...
Read more

smeldr.dev/cli v0.17.1 — doc.go currency

Choose a tag to compare

@xxwink xxwink released this 19 Sep 07:48

[0.17.1] — 2026-09-19

Changed

cli's module root has no importable package — cmd/smeldr-cli is the only one, and pkg.go.dev renders whatever package doc comment sits there. Moved main.go's existing, accurate comment (env vars, usage) to a dedicated doc.go. Docs-only, no behaviour change.


smeldr.dev/cli v0.17.0 — table output for content/social post list

Choose a tag to compare

@xxwink xxwink released this 03 Sep 20:52

[0.17.0] — 2026-09-03

Added

  • Two list commands now render an aligned table by default instead of raw JSON: smeldr-cli <type> list (e.g. smeldr-cli posts list) displays SLUG, STATUS, CREATEDAT, UPDATEDAT; smeldr-cli social post list displays ID, PLATFORM, STATUS, SCHEDULED_AT. Both commands gained --json (restore raw-JSON output) and --fields <comma,separated,keys> (custom columns, case-insensitive key matching). A new shared keyedTable helper reuses existing renderTable, findKeyIn, and asString helpers instead of duplicating table logic.

smeldr.dev/cli v0.16.0 — transition command

Choose a tag to compare

@xxwink xxwink released this 02 Sep 17:10

[0.16.0] — 2026-09-02

Added

  • A new top-level transition command: smeldr-cli transition <type_name> <slug> --to <state> [--reason <text>]. Moves an item — dynamic content or a compiled type (e.g. Decision, Task, Signal) — to a new state via its registered StateFlow, over MCP (calling the transition_item tool). Role is enforced by the target transition's own gate on the server, not by smeldr-cli itself. This is the CLI's first way to reach transition_item at all — previously the only way to trigger a StateFlow transition on a compiled type (e.g. ratifying a Decision) was a hand-built raw HTTP request to the MCP endpoint. Example: smeldr-cli transition Decision <slug> --to ratified.

Fixed

  • The smeldr-cli --version / smeldr-cli version output (the cliVersion constant in main.go) had been stuck at 0.15.2 since the v0.15.3 release shipped — the binary's own version output was lying about itself for that whole release. Now correctly reports the version being shipped.

smeldr-cli v0.15.3 — remove legacy FORGE_* fallbacks

Choose a tag to compare

@xxwink xxwink released this 20 Aug 20:10

[0.15.3] — 2026-08-20

Removed

  • loadConfig no longer falls back to legacy FORGE_URL/FORGE_TOKEN/FORGE_MCP_URL env vars, and .forge-cli.env is no longer read as a fallback to .smeldr-cli.env — SMELDR_* and .smeldr-cli.env only now. Extends D53's reasoning (no compatibility twin for a caller that does not exist, smeldr.dev/core) from core's exported Go API to this repo's own env-var compatibility, per Peter's own explicit 2026-08-15 go-ahead (T87).

smeldr.dev/cli v0.15.2 — Social REST switch

Choose a tag to compare

@xxwink xxwink released this 09 Jul 20:15

[0.15.2] — 2026-07-09

Changed

  • post create, post list, post get, post publish, post archive,
    post delete, post queue now call the REST API (SMELDR_URL with bearer
    token SMELDR_TOKEN) instead of MCP tools. Endpoints: POST /social/posts,
    GET /social/posts, GET /social/posts/{id}, PUT /social/posts/{id},
    DELETE /social/posts/{id}. Post delete returns 204 No Content (no output).
  • Help text updated to clarify: post commands use REST API (SMELDR_URL + bearer
    token); credential, schedule, and platform commands use MCP endpoint (SMELDR_MCP_URL).

smeldr.dev/cli v0.15.1 — add MIT license

Choose a tag to compare

@xxwink xxwink released this 28 Jun 18:34

[0.15.1] — 2026-06-28

Added

  • LICENSE file (MIT). smeldr-cli has no AGPL linkage (does not import
    smeldr.dev/core); MIT maximises adoption for an operator tool.
    Copyright holder: Peter Ravn Thers.

smeldr-cli v0.15.0 — logs command

Choose a tag to compare

@xxwink xxwink released this 10 Jun 18:24

What's new

  • smeldr-cli logs — fetches and displays in-memory captured log entries from a running Smeldr instance (Admin role). Flags: --level (min level), --limit (most recent N), --since (RFC3339), --json (raw output). Requires app.CaptureLogs() on the server (core v1.36.0+, A128) (T79).

Also corrects the embedded version string (was stuck at 0.14.0 since v0.14.0; now correctly reports 0.15.0).

smeldr-cli v0.14.1

Choose a tag to compare

@xxwink xxwink released this 07 Jun 19:33

Brand-prose sweep (T101, A135): flag description, help text, and comments Forge → Smeldr (init.go, media.go, status.go). Test env-var identifiers \TEST_FORGE_CLI_\ → \TEST_SMELDR_CLI_. Preserved: \ForgeURL, FORGE_* fallback docs, .forge-cli.env\ ref, README migration note. No exported-symbol or behaviour change.