Context
Agents and scripts piping CLI output need clean data without spinners, success messages, or decorative output mixed in. Currently, human-format output includes spinners on stderr and emoji-prefixed status messages that make parsing unreliable.
Proposal
Add --quiet / -q global flag that:
- Suppresses spinners entirely (no progress indicators on stderr)
- Suppresses status messages (no
✓ Time entry created, no ✗ Error)
- Prints only the data to stdout (the resource payload or formatted list)
- Errors still go to stderr with just the message (no emoji, no hints)
Example
# Normal
$ productive time add --service 123 --time 480
✓ Time entry created
ID: 99999
Date: 2026-03-24
Duration: 8h 0m
# Quiet
$ productive time add --service 123 --time 480 --quiet
99999
# Quiet + JSON (cleanest for piping)
$ productive time add --service 123 --time 480 --quiet --format json
{"id":"99999","date":"2026-03-24","time":480}
Interaction with --format json
--format json already avoids spinners and emojis, but still wraps output in status objects ({"status": "success", ...}). With --quiet --format json, output should be just the raw resource data.
Implementation
- Add
quiet to CommandContext
- Spinner factory returns no-op when quiet
OutputFormatter methods become no-ops for status/success/warning/info when quiet
- Only
output() still writes to stdout
Context
Agents and scripts piping CLI output need clean data without spinners, success messages, or decorative output mixed in. Currently, human-format output includes spinners on stderr and emoji-prefixed status messages that make parsing unreliable.
Proposal
Add
--quiet/-qglobal flag that:✓ Time entry created, no✗ Error)Example
Interaction with --format json
--format jsonalready avoids spinners and emojis, but still wraps output in status objects ({"status": "success", ...}). With--quiet --format json, output should be just the raw resource data.Implementation
quiettoCommandContextOutputFormattermethods become no-ops for status/success/warning/info when quietoutput()still writes to stdout