Skip to content

v1.6.0 — Rebrand to clup & foundations

Choose a tag to compare

@marcoarnulfo marcoarnulfo released this 22 Jul 16:26
· 273 commits to main since this release
73eb284

🇬🇧 English

v1.6 rebrands the binary to clup and lays the technical foundations for the whole roadmap. Almost none of it is visible in the TUI (the visual redesign lands in v1.9) — this release is about the plumbing.

⚠️ Rebrand: clickupclup (non-breaking)

  • The primary binary is now clup: go install github.com/marcoarnulfo/clickup-cli/cmd/clup@latest.
  • The old clickup binary still works as a deprecated shim (prints a warning, forwards to clup) for a few releases.
  • Config moved to …/clup/config.yml (macOS ~/Library/Application Support/clup, Linux ~/.config/clup), with a permanent read-fallback to the legacy clickup-cli path — existing configs keep working, and are migrated on first save (the legacy file is left as a pointer stub). Added a schema_version field.
  • The CLICKUP_TOKEN / CLICKUP_DEMO env vars are unchanged.

🚀 New: headless report

  • clup report --month 2026-06 --scope me --format json|csv|md prints a report to stdout for cron/scripts/agents (all formats stream to stdout — use shell redirection). CLICKUP_DEMO is ignored by report, and the JSON output is a stable scripting schema (safe to parse with jq).

🧱 Foundations (mostly internal)

  • Extracted the report I/O pipeline into internal/service (shared by the TUI and headless).
  • Unified the HTTP client into one do() with a shared rate limiter (90/min, burst 30) that honors Retry-After and retries 429 on all verbs.
  • Added FilteredTeamTasks (paginated GET /team/{id}/task); parallelized status enrichment.
  • Injected the clock into the root model; extracted a pure CustomRange.
  • API errors now route back to Home with an inline message instead of a dead-end error screen (retryableErrMsg); a 401 still relaunches the setup wizard.

🐛 Fixes

  • Fixed a token-leak: in demo mode the client was built with the real token instead of the demo token.
  • Fixed a silent token-wipe: the setup wizard could write an empty token to disk when the typed token equaled CLICKUP_TOKEN.
  • Demo mode: the log-hours flow is now fully I/O-free (no more accidental real API calls under CLICKUP_DEMO=1); regenerated docs/demo.gif.

Notes

Full changelog: v1.5.0...v1.6.0


🇮🇹 Italiano

La v1.6 ribrandizza il binario in clup e posa le fondamenta tecniche per l'intera roadmap. Quasi nulla è visibile nella TUI (il redesign estetico arriva con la v1.9) — questa release riguarda l'infrastruttura.

⚠️ Rebrand: clickupclup (non-breaking)

  • Il binario principale ora è clup: go install github.com/marcoarnulfo/clickup-cli/cmd/clup@latest.
  • Il vecchio clickup continua a funzionare come shim deprecato (stampa un warning, inoltra a clup) per qualche release.
  • La config si è spostata in …/clup/config.yml (macOS ~/Library/Application Support/clup, Linux ~/.config/clup), con fallback di lettura permanente al vecchio path clickup-cli — le config esistenti continuano a funzionare e vengono migrate al primo salvataggio (il file legacy resta come stub-puntatore). Aggiunto un campo schema_version.
  • Le env var CLICKUP_TOKEN / CLICKUP_DEMO sono invariate.

🚀 Novità: report headless

  • clup report --month 2026-06 --scope me --format json|csv|md stampa un report su stdout per cron/script/agenti (tutti i formati vanno su stdout — usa la redirezione della shell). CLICKUP_DEMO è ignorato da report, e l'output JSON è uno schema di scripting stabile (parsabile con jq).

🧱 Fondamenta (perlopiù interne)

  • Estratta la pipeline I/O del report in internal/service (condivisa da TUI e headless).
  • Client HTTP unificato in un unico do() con rate limiter condiviso (90/min, burst 30) che onora Retry-After e ritenta i 429 su tutti i verbi.
  • Aggiunto FilteredTeamTasks (GET /team/{id}/task paginato); arricchimento status parallelizzato.
  • Clock iniettato nel model radice; estratta una CustomRange pura.
  • Gli errori API tornano alla Home con messaggio inline invece della schermata d'errore senza uscita (retryableErrMsg); il 401 rilancia comunque il setup wizard.

🐛 Correzioni

  • Corretto un leak del token: in demo il client veniva costruito col token reale invece che con quello demo.
  • Corretto un wipe silenzioso del token: il setup wizard poteva scrivere un token vuoto su disco quando il token digitato coincideva con CLICKUP_TOKEN.
  • Demo mode: il flusso log-ore ora è completamente senza I/O (niente più chiamate API reali accidentali con CLICKUP_DEMO=1); rigenerata docs/demo.gif.

Note

Changelog completo: v1.5.0...v1.6.0