Repository navigation
Releases: Smeldr/cli
Release list
smeldr.dev/cli v0.18.0 — Standing command
[0.18.0] - 2026-10-06
Added
smeldr-cli standing <type_name> <slug> [--json]: calls the MCP toolget_item_standingand printsholds,ceased, ornone(an item of a type that has standing but no stored row isnone), orno standing for this typewhen the type has no standing. Requiressmeldr.dev/mcpv1.46.0 or later on the server and Editor role. Type-name is dynamic (snake_case) or compiled (e.g.Decision,Amendment).--jsonprints the tool's whole result.
Notes
<type> getand<type> listdo not display standing: the REST item is the module's own struct, and adding the field there would change core's REST output. Usestandingor the MCP get tools to access standing directly.
smeldr.dev/cli v0.17.2 — coverage gate
[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 listdisplays 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 sharedkeyedTablehelper reuses existingrenderTable,findKeyIn, andasStringhelpers instead of duplicating table logic.
[0.16.0] — 2026-09-02
Added
- A new top-level
transitioncommand: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 thetransition_itemtool). 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 reachtransition_itemat 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 versionoutput (thecliVersionconstant inmain.go) had been stuck at0.15.2since thev0.15.3release 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
loadConfigno longer falls back to legacyFORGE_URL/FORGE_TOKEN/FORGE_MCP_URLenv vars, and.forge-cli.envis no longer read as a fallback to.smeldr-cli.env—SMELDR_*and.smeldr-cli.envonly 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 queuenow call the REST API (SMELDR_URLwith bearer
tokenSMELDR_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-clihas 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).
Requiresapp.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 nowgo install smeldr.dev/cli/cmd/smeldr-cli@latest. Update
any scripts that invokeforge-clito usesmeldr-cli.Legacy
FORGE_*env vars and.forge-cli.envare still read as fallbacks
(T86/T87 compatibility track — no change required for existing env files).
Added
smeldr-cli logscommand (T79, Amendment A133):GET /_logsdirectly
(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.
- Flags:
[0.13.0] — 2026-06-04
Added
navcommand group (Amendment A127, T18): four Editor-role commands
for navigation tree management (requiresapp.Nav(...)on the server):nav list— aligned table output (ID, LABEL, PATH, PARENT, HIDDEN, GHOST, SORT);--jsonfor 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
redirectcommand group (Amendment A125, T30): three Editor-role commands
for runtime redirect management (requiresapp.Redirects(db)on the server):redirect list— aligned table output (FROM, TO, CODE, PREFIX);--jsonfor 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):loadConfignow
readsSMELDR_URL,SMELDR_TOKEN,SMELDR_MCP_URLfirst, falling back to
FORGE_URL,FORGE_TOKEN,FORGE_MCP_URLwhen unset. Both.smeldr-cli.env
and.forge-cli.envare read (.smeldr-cli.envloaded first).forge-cli init
now writes.smeldr-cli.envwithSMELDR_*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.3entries are absent from this CHANGELOG, and the
cliVersionconst had lagged at0.9.0despite tags shipping through0.9.3
(audit list, oauth revoke, etc.). This release resyncs the const to0.10.0;
the missing 0.9.x entries are a pre-existing gap to backfill separately.
Added
blockcommand group mirroring the 12 block MCP tools (T32 component 3):block node create|update|get|list|publish|archive(Author role).block section add|reorder|removeandblock item add|reorder|remove(Editor role).
block node listprints an aligned table (columns ID, type_name, status, slug);
--jsonswitches to raw JSON.- Block
Fieldskeys are case-sensitive PascalCase;--field K=Vpreserves casing
(and--fields <json>passes an object through verbatim).
Changed
cliVersionresynced0.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 viaget_social_credential.forge-cli social credential delete <id>— permanently deletes a credential viadelete_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 viacreate_platform_config. Never echoes secrets.
Changed
forge-cli social credential create— now accepts--platform x. Fatal error if--instance-urlis provided for platformx.forge-cli social post create/queue— help text updated to showmastodon|linkedin|xfor--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 (statusqueued).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...
smeldr.dev/cli v0.17.1 — doc.go currency
[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
[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 listdisplays 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 sharedkeyedTablehelper reuses existingrenderTable,findKeyIn, andasStringhelpers instead of duplicating table logic.
smeldr.dev/cli v0.16.0 — transition command
[0.16.0] — 2026-09-02
Added
- A new top-level
transitioncommand: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 thetransition_itemtool). 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 reachtransition_itemat 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 versionoutput (thecliVersionconstant inmain.go) had been stuck at0.15.2since thev0.15.3release 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
[0.15.3] — 2026-08-20
Removed
loadConfigno longer falls back to legacyFORGE_URL/FORGE_TOKEN/FORGE_MCP_URLenv vars, and.forge-cli.envis no longer read as a fallback to.smeldr-cli.env—SMELDR_*and.smeldr-cli.envonly 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
[0.15.2] — 2026-07-09
Changed
post create,post list,post get,post publish,post archive,
post delete,post queuenow call the REST API (SMELDR_URLwith bearer
tokenSMELDR_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
[0.15.1] — 2026-06-28
Added
- LICENSE file (MIT).
smeldr-clihas 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
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). Requiresapp.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
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.