❯ go-clikit
v0.10.0 pkg.go.dev ↗

reference › interfaces

Interfaces

What a release keeps beyond the Go API, such as the event log, the texts of the displays and the words of --progress. Changing any of them is a breaking change.

The Go API is not the only thing that a program relies on. A test of a program compares the text that a display draws. A script reads the JSON of a doctor command. A view reads the event log that an older release wrote. So the kit keeps these as interfaces too. Changing any of them is a breaking change, and a new or stricter rule of progresstest.Check is one too.

InterfacePackageDecision
The six span kindsprogress—
The JSONL event log, version 1: keys can be added, never renamed or removedprogress, eventlogthe event log
The text that the displays draw with the zero Themedisplay—
The runes that are escaped can grow in a minor release; the forms of the escapes cannottermtextdecision 14
The colours and art of a theme can change in a minor releasedisplaydecision 20
The rules that Check enforcesprogresstestdecision 15
The words of Modes, in their order; the texts of the errors and notes, the refusals of the log file includedcliprogressdecision 21
The texts of the errors of the checks of Strictcobratreedecision 24
The texts of InvalidValue and FlagErrorcobratreedecision 29
What cliout writesclioutdecision 30
The rate, the rule and the line of the notificationsmcpprogressdecision 27, decision 32
The rule of ThemeFor, and the names and texts of decision 31cliprogressdecision 31
The refusals, headers, cookie and frameslocalweb and its packagesdecision 34
The files, record, addresses, htmx headers, htmx.Config and the script versionslaunch, assets, page, htmxdecision 35, decision 41
The name and mode of the lock filefsutildecision 37
The status words, the JSON keys and the text of Writedoctordecision 38
The CRLF ruletermtextdecision 42

Versions#

  • The kit uses semantic versions. At v0, a breaking change is allowed in a minor release, and the release notes name it.
  • Adding API or a package is a minor release.
  • A rename keeps a deprecated alias for one minor release. Its Deprecated: paragraph ends with “(decision 36)”.
  • The go line of go.mod is the oldest Go release that the Go project supports (decision 2).
  • Nothing in the tree names a version (decision 4). A pushed tag is never moved or deleted.