You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
v0.2.0 — CLI migrated to xyz-go: one definition, three interfaces
Changes
The CLI frontend moved from urfave/cli to xyz-go v0.2.4: ls/stat/cat/presign/find
now share ONE definition (one args struct + handler) with HTTP/MCP; cp/serve/mcp are
CLI-only commands in the same registry; the urfave dependency is gone from go.mod
Root help keeps its dns-style bilingual layout (the command table is now generated
from the registry, so it can never drift); per-command -h: xyz template plus the
bilingual prose and full examples (Description / CliHints.After blocks)
Shell completion from xyz-go v0.2.4 (oss completion bash|zsh|fish)
Unchanged (regression-verified item by item)
Every flag name/alias/shorthand/default of the six commands; ls PRE rows/colors/NDJSON/
paging cache/footer hints, find's streaming hits/export/NDJSON summary, cp's progress
bars and atomic writes, serve/mcp — all identical to v0.1.16
Known deviations (with reasons)
find multi-positionals: oss find a b c errors with exit 2 — xyz positionals are
fixed-count (no variadic). Use the first positional plus repeatable --inputs or stdin
(single-input and stdin usage are unchanged)
Usage errors exit 2 instead of 1: unknown flags / positional-count errors follow
xyz semantics (2 = usage error; runtime errors still exit 1). Some framework messages
(e.g. the positional-count error) are library-provided Chinese, not bilingual
Help layout: per-command flag lists are rendered by xyz (with (default …)/alias
hints, differing from urfave's style); bilingual examples live at the end of -h.
-v/--version prints a single "oss version X" line (the repo URL is in oss -h)
No comma splitting: --include a,b is one value now (xyz repeatable-flag
semantics) — pass multiple values via repeated flags; HTTP/MCP behavior unchanged
HTTP/MCP input wire names match flags: path_style/page_size/start_after/next_token
are now kebab-case to equal the CLI flags exactly; HTTP response fields keep their
snake_case names
--json is global: stat/cat/presign/cp now accept --json/-j (xyz global flag), but
only ls/find switch to JSON output; the others keep their usual output