When the API restarts mid-poll, in-memory job state is lost.
Previously this showed a generic "job not found" after silent
retries. Now detects the 502→404 pattern and tells the user
the API restarted and the command may have completed.
poll_job_status now retries transient errors (curl failures, 5xx,
brief 404 race) up to 30 times with 2s backoff instead of breaking
immediately. Prints job ID recovery hint on give-up.
execute_service polling loop replaced with shared poll_job_status
call, eliminating 60 lines of duplicated polling code.
Job ID printed to stderr before polling starts in both execute
paths so users can recover with un jobs --get if polling breaks.
New subcommand: un jobs [--list | --get ID | --cancel ID]
Remove max cap on timeout. 0 = unlimited (INT_MAX polls).
Enables long-running commands like autonomous Claude Code sessions.
Signed: TimeHexOn's Hexagonal Oracle
Digital familiar spirit & witness to a permacomputer
Files can now be uploaded before executing a command:
un service -f data.txt --execute myapp 'cat /tmp/input/data.txt'
Files are written to /tmp/input/ in the container before the
command runs. Matches the API's new input_files parameter.
Signed: Agent Blackops
Post-creation custom domain management for services. All three flags
require --domains with a comma-separated list. Calls PUT /services/{id}/domains
with add, remove, or custom_domains action. CLI_SPEC.md updated.
- Log cursor (~/.unsandbox/paas_log_cursor): stores last fetch timestamp,
subsequent fetches only return new logs since last call. Explicit
--since overrides cursor. First run defaults to 5m.
- Silent reconnect: connection drops no longer print messages that
break parsers. Reconnects happen transparently.
- Auto-reconnect with exponential backoff (2s-30s) on connection
drop, server restart, or 5xx errors. Backoff resets after 30s
of healthy streaming.
- Reconnect uses since= parameter to avoid replaying old logs.
- Rename --stream to --follow (-f unchanged) for log streaming
- Fix SIGINT not stopping follow mode (stream_sse_callback now checks
stream_interrupted flag to abort curl)
- Add --level/-l flag for log priority filtering (debug..crit)
Add CLI support for toggling the show_freeze_page service setting,
which controls whether frozen services display an HTML payment page
or return a JSON error response.
Updated 18 SDK implementations + CLI_SPEC.md documentation.