* chore(deps): bump bubbletea to v2.0.10, drop the uncloud fork
v2.0.10 carries the upstream fix for terminal capability replies leaking into
the shell (charmbracelet/bubbletea#1801). It skips every query that expects a
reply when input is disabled: the startup probe for synchronized output and
Unicode core, clipboard reads, background, foreground and cursor colour
requests, cursor position reports, and terminal version and termcap queries.
That supersedes the unlabs-dev fork, whose patch covered only the startup
probe, so the replace directive goes away and uncloud tracks upstream again.
The bump on its own does not fix the leak. Bubble Tea skips the queries only
when a program declares that it has no input, and nothing in uncloud declares
that yet. Measured: this tree still leaks "^[[?2026;2$y^[[?2027;0$y" under a
PTY harness. The next commit is what makes the spinners declare it.
Refs: #286, charmbracelet/bubbletea#1801
* logging: client side
Create internal/logs and put abstracted way service and machine logging in there
This adds the bits to do machine logging of the services.
See #273 and discussion in #158
Signed-off-by: Miek Gieben <miek@miek.nl>
* go mod tidy
Signed-off-by: Miek Gieben <miek@miek.nl>
* fix typo
Signed-off-by: Miek Gieben <miek@miek.nl>
* Hook it up further
Signed-off-by: Miek Gieben <miek@miek.nl>
* Check unit validity server side
Signed-off-by: Miek Gieben <miek@miek.nl>
* Make cli-docs
Signed-off-by: Miek Gieben <miek@miek.nl>
* Add newline to logs
Signed-off-by: Miek Gieben <miek@miek.nl>
* docs
Signed-off-by: Miek Gieben <miek@miek.nl>
* Polish a bit
Signed-off-by: Miek Gieben <miek@miek.nl>
* comment fix
Signed-off-by: Miek Gieben <miek@miek.nl>
* There is no groupid
Signed-off-by: Miek Gieben <miek@miek.nl>
---------
Signed-off-by: Miek Gieben <miek@miek.nl>
* chore: fix landing logo shadow
* feat: implement service logs command with colored output and strict ordering
* revert Makefile
* fix after rebase
* move logs command under services with root shortcut
* simplify server options for streaming logs and CLI flags
* refactor ContainerLogs grpc server
* update --tail flag
* minor docker.proto
* refactor client ServiceLogs and ContainerLogs
* move ProxyMachinesContext from api to client pkg
* minor refactor proto Stream
* add api/logs
* implement LogMerger
* fix LogMerger to correctly use semaphore
* increate inflish entries to 100 per stream
* send heartbeats
* refactor ContainerLogs to synchronise Send of entries and heartbeats to the steram
* minor logmerege
* remove ContainerName form ServiceLogEntryMetadata
* refactor ContainerLogs into docker.Service
* detect stalled container logs streams
* update logmerger tests
* fix comment in test
* refactor LogMerger with options
* uc logs: format one or multiple services
* make LogMerger emit heartbeats, emit entries <= watermark, rewrite tests
* update uc logs with new LogMerger
* go mod tidy
* fix after merge
---------
Co-authored-by: Evgenii Orlov <evgenii.orlov@semrush.com>
* feat: Add `uc ps` command to list all containers in the cluster
* Fix indentation
* Improvements to the container state highlights code (use enum, better var naming)
* Add group/sort option by "health"
* Rename `uc ps --group-by` flag to `--sort`. Also, remove `--context` flag.
* Use huh.spinner with standard style/type
* Remove pointless TrimPrefix on container name
* Move machine lookup out of services loop
* Use more efficient `ListServiceContainers`
* Use consistent header other
* Use api.ProxyMachinesContext helper for context to query all machines for service containers
* Make errored MachineServiceContainer entries a warning, not return an error immediately, in `uc ps`
* Use lipgloss table instead of tabwriter for "uc ps" command
* Handle nil metadata in `uc ps` on container when cluster only has one machine