Compare commits

...

27 commits

Author SHA1 Message Date
Renovate Bot
0f78fc731a chore(deps): update rust crate notify to v7
All checks were successful
Rust / build (map[name:nightly]) (push) Successful in 6m52s
Rust / build (map[name:stable]) (push) Successful in 13m12s
Release Please / Release-plz (push) Successful in 2m18s
ci/woodpecker/cron/cron-docker-builder Pipeline was successful
ci/woodpecker/cron/push-next Pipeline was successful
ci/woodpecker/cron/tag-created Pipeline was successful
2024-10-25 18:12:13 +01:00
Renovate Bot
1784f3f28b chore(deps): update rust crate tui-scrollview to 0.5
All checks were successful
Rust / build (map[name:stable]) (push) Successful in 7m41s
Rust / build (map[name:nightly]) (push) Successful in 12m45s
Release Please / Release-plz (push) Successful in 2m6s
revert: reneable ScrollView
2024-10-25 18:10:44 +01:00
Renovate Bot
b794a21dd9 chore(deps): update rust crate gix to 0.67
All checks were successful
Rust / build (map[name:nightly]) (push) Successful in 6m58s
Rust / build (map[name:stable]) (push) Successful in 13m56s
Release Please / Release-plz (push) Successful in 1m6s
2024-10-22 19:16:59 +00:00
Renovate Bot
d989da659c chore(deps): update rust crate ratatui to 0.29
All checks were successful
Rust / build (map[name:nightly]) (push) Successful in 6m57s
Rust / build (map[name:stable]) (push) Successful in 14m18s
Release Please / Release-plz (push) Successful in 1m50s
2024-10-22 07:32:53 +01:00
23de987444 fix: disable ScrollView
All checks were successful
Rust / build (map[name:nightly]) (push) Successful in 12m38s
Rust / build (map[name:stable]) (push) Successful in 13m3s
Release Please / Release-plz (push) Successful in 1m57s
Current version is incompatible with latest Ratatui. Backout this change
when compatibility is restore.
2024-10-22 07:31:08 +01:00
Renovate Bot
9d6271a176 chore(deps): update docker.io/rust docker tag to v1.82.0
All checks were successful
Rust / build (map[name:stable]) (push) Successful in 9m16s
Rust / build (map[name:nightly]) (push) Successful in 13m39s
Release Please / Release-plz (push) Successful in 2m16s
2024-10-21 19:37:22 +01:00
Renovate Bot
ddc22867b3 chore(deps): update docker.io/woodpeckerci/plugin-docker-buildx docker tag to v5
All checks were successful
Rust / build (map[name:stable]) (push) Successful in 8m44s
Rust / build (map[name:nightly]) (push) Successful in 13m23s
Release Please / Release-plz (push) Successful in 2m37s
2024-10-21 19:37:13 +01:00
Renovate Bot
5e4e287562 chore(deps): update rust crate rstest to 0.23
All checks were successful
Rust / build (map[name:stable]) (push) Successful in 7m52s
Rust / build (map[name:nightly]) (push) Successful in 12m53s
Release Please / Release-plz (push) Successful in 1m27s
2024-10-21 19:18:04 +01:00
Renovate Bot
6a0e0580dc chore(deps): update rust crate secrecy to 0.10
All checks were successful
Rust / build (map[name:stable]) (push) Successful in 7m51s
Rust / build (map[name:nightly]) (push) Successful in 12m40s
Release Please / Release-plz (push) Successful in 1m41s
2024-10-21 19:14:10 +01:00
Renovate Bot
7bd6347dd8 chore(deps): update kemitix/rust action to v2.3.0
All checks were successful
ci/woodpecker/pr/cron-docker-builder Pipeline was successful
ci/woodpecker/pr/push-next Pipeline was successful
ci/woodpecker/pr/tag-created Pipeline was successful
ci/woodpecker/pull_request_closed/cron-docker-builder Pipeline was successful
ci/woodpecker/pull_request_closed/push-next Pipeline was successful
ci/woodpecker/pull_request_closed/tag-created Pipeline was successful
Rust / build (map[name:nightly]) (push) Successful in 7m44s
Rust / build (map[name:stable]) (push) Successful in 13m59s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
Release Please / Release-plz (push) Successful in 1m43s
ci/woodpecker/cron/cron-docker-builder Pipeline was successful
ci/woodpecker/cron/push-next Pipeline was successful
ci/woodpecker/cron/tag-created Pipeline was successful
2024-09-30 21:46:31 +00:00
Renovate Bot
360b7f2cf7 chore(deps): update kemitix/rust action to v2.2.0
All checks were successful
Release Please / Release-plz (push) Successful in 51s
Rust / build (map[name:stable]) (push) Successful in 6m31s
Rust / build (map[name:nightly]) (push) Successful in 11m11s
Rust / build (map[name:nightly]) (pull_request) Successful in 6m39s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
ci/woodpecker/pr/cron-docker-builder Pipeline was successful
ci/woodpecker/pr/push-next Pipeline was successful
ci/woodpecker/pr/tag-created Pipeline was successful
ci/woodpecker/pull_request_closed/cron-docker-builder Pipeline was successful
ci/woodpecker/pull_request_closed/push-next Pipeline was successful
ci/woodpecker/pull_request_closed/tag-created Pipeline was successful
Rust / build (map[name:stable]) (pull_request) Successful in 6m15s
ci/woodpecker/cron/cron-docker-builder Pipeline was successful
ci/woodpecker/cron/push-next Pipeline was successful
ci/woodpecker/cron/tag-created Pipeline was successful
2024-09-25 08:31:43 +00:00
f3a5b9cb4c build: switch to forgejo-todo-checker
All checks were successful
Rust / build (map[name:nightly]) (push) Successful in 6m21s
Rust / build (map[name:stable]) (push) Successful in 8m29s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
Release Please / Release-plz (push) Successful in 1m27s
ci/woodpecker/cron/cron-docker-builder Pipeline was successful
ci/woodpecker/cron/push-next Pipeline was successful
ci/woodpecker/cron/tag-created Pipeline was successful
Remove woodpecker's TODO checker
2024-09-22 15:22:53 +01:00
18a537b18e build: add cargo machette to push-next workflow
All checks were successful
Rust / build (map[name:nightly]) (push) Successful in 6m49s
Rust / build (map[name:stable]) (push) Successful in 7m42s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
Release Please / Release-plz (push) Successful in 54s
ci/woodpecker/cron/cron-docker-builder Pipeline was successful
ci/woodpecker/cron/push-next Pipeline was successful
ci/woodpecker/cron/tag-created Pipeline was successful
2024-09-17 15:20:34 +01:00
ef6474ef9f test: also run CI tests against Rust nightly
All checks were successful
Rust / build (map[name:nightly]) (push) Successful in 6m23s
Rust / build (map[name:stable]) (push) Successful in 7m58s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
Release Please / Release-plz (push) Successful in 47s
2024-09-17 11:44:52 +01:00
dbf1a0db27 docs: add demo gif of tui
All checks were successful
Rust / build (push) Successful in 6m10s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
Release Please / Release-plz (push) Successful in 1m31s
ci/woodpecker/cron/cron-docker-builder Pipeline was successful
ci/woodpecker/cron/push-next Pipeline was successful
ci/woodpecker/cron/tag-created Pipeline was successful
2024-09-16 13:54:33 +01:00
ForgeJo Action. See: https://git.kemitix.net/kemitix/rust
91c5973e31 chore: release
All checks were successful
ci/woodpecker/pr/cron-docker-builder Pipeline was successful
ci/woodpecker/pr/push-next Pipeline was successful
ci/woodpecker/pr/tag-created Pipeline was successful
ci/woodpecker/pull_request_closed/cron-docker-builder Pipeline was successful
ci/woodpecker/pull_request_closed/push-next Pipeline was successful
ci/woodpecker/pull_request_closed/tag-created Pipeline was successful
Release Please / Release-plz (push) Successful in 3m44s
ci/woodpecker/tag/cron-docker-builder Pipeline was successful
ci/woodpecker/tag/push-next Pipeline was successful
ci/woodpecker/tag/tag-created Pipeline was successful
ci/woodpecker/push/cron-docker-builder Pipeline was successful
Rust / build (push) Successful in 6m16s
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
ci/woodpecker/cron/cron-docker-builder Pipeline was successful
ci/woodpecker/cron/push-next Pipeline was successful
ci/woodpecker/cron/tag-created Pipeline was successful
Signed-off-by: ForgeJo Action. See: https://git.kemitix.net/kemitix/rust <action@git.kemitix.net>
2024-09-14 14:24:04 +00:00
978205b823 feat(tui): add time and version in border
All checks were successful
Rust / build (push) Successful in 6m12s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
Release Please / Release-plz (push) Successful in 1m6s
ci/woodpecker/cron/cron-docker-builder Pipeline was successful
ci/woodpecker/cron/push-next Pipeline was successful
ci/woodpecker/cron/tag-created Pipeline was successful
2024-09-14 15:13:45 +01:00
8359d0d7ca refactor: Update TUI sooner when receiving CI status
All checks were successful
Rust / build (push) Successful in 6m6s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
Release Please / Release-plz (push) Successful in 1m49s
Looking to avoid getting stuck on 'Checking CI status', but this doesn't
appear to be where the problem is coming from.
2024-09-14 12:40:30 +01:00
93cf6f83df chore: add run and run-ui recipes to justfile
All checks were successful
Rust / build (push) Successful in 6m9s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
Release Please / Release-plz (push) Successful in 1m34s
2024-09-14 12:26:06 +01:00
681d85aac1 chore: remove manual crates.io publish recipe from justfile
All checks were successful
Rust / build (push) Successful in 6m9s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
Release Please / Release-plz (push) Successful in 1m50s
2024-09-14 12:22:29 +01:00
d4f16e6f5e feat: should fetch repo on startup when not cloning
All checks were successful
Rust / build (push) Successful in 6m8s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
Release Please / Release-plz (push) Successful in 1m5s
We already have a copy of the repo, so we don't clone, but we should
perform a `git fetch` to make sure it is up-to-date.
2024-09-14 12:19:24 +01:00
048111202a feat: Remove branches when fetching from remote
All checks were successful
Rust / build (push) Successful in 6m9s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
Release Please / Release-plz (push) Successful in 1m30s
2024-09-14 07:42:24 +01:00
3ea7f36c98 build(docker): Don't break when debian drops old packge versions
Some checks failed
Rust / build (push) Successful in 6m8s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
Release Please / Release-plz (push) Failing after 1h0m59s
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
Debian routinly drop older versions of packages from the repositories as
new versions replace them. Pinning the version causes the build to break
at seamingly random times when the pinned version gets dropped.
2024-09-14 07:38:13 +01:00
6c60e3fb7a refactor: reimplement git fetch using git
All checks were successful
Rust / build (push) Successful in 6m11s
Release Please / Release-plz (push) Successful in 1m38s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
ci/woodpecker/cron/cron-docker-builder Pipeline was successful
ci/woodpecker/cron/push-next Pipeline was successful
ci/woodpecker/cron/tag-created Pipeline was successful
2024-09-13 18:55:21 +01:00
313d6d79c5 docs: mark tui as complete on roadmap
All checks were successful
Rust / build (push) Successful in 6m18s
Release Please / Release-plz (push) Successful in 1m6s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
2024-09-13 09:48:38 +01:00
189d579d33 docs: Add missing port mapping parameter for running in docker
All checks were successful
Rust / build (push) Successful in 6m11s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
Release Please / Release-plz (push) Successful in 56s
2024-09-13 08:59:38 +01:00
a77c6335a6 chore: ignore .local/ directory
All checks were successful
Rust / build (push) Successful in 6m23s
ci/woodpecker/push/cron-docker-builder Pipeline was successful
ci/woodpecker/push/push-next Pipeline was successful
ci/woodpecker/push/tag-created Pipeline was successful
Release Please / Release-plz (push) Successful in 1m27s
This directory is created when running git-next via docker with the --ui
option.
2024-09-13 08:53:04 +01:00
34 changed files with 893 additions and 365 deletions

View file

@ -22,13 +22,13 @@ jobs:
with:
fetch-depth: 0
- name: Run release-plz release-pr
uses: https://git.kemitix.net/kemitix/rust@v1.80.0-2
uses: https://git.kemitix.net/kemitix/rust@v2.3.0
with:
args: release-plz release-pr --backend gitea --git-token ${{ secrets.FORGEJO_TOKEN }}
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
- name: Run release-plz release
uses: https://git.kemitix.net/kemitix/rust@v1.80.0-2
uses: https://git.kemitix.net/kemitix/rust@v2.3.0
with:
args: release-plz release --backend gitea --git-token ${{ secrets.FORGEJO_TOKEN }}
env:

View file

@ -12,27 +12,41 @@ env:
jobs:
build:
runs-on: docker
strategy:
matrix:
toolchain:
- name: stable
- name: nightly
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Format
uses: https://git.kemitix.net/kemitix/rust@v1.81.0
- name: Check TODOs
uses: kemitix/todo-checker@v1.1.0
- name: Machete
uses: https://git.kemitix.net/kemitix/rust@v2.3.0
with:
args: cargo fmt --all -- --check
args: ${{ matrix.toolchain.name }} cargo machete
- name: Format
uses: https://git.kemitix.net/kemitix/rust@v2.3.0
with:
args: ${{ matrix.toolchain.name }} cargo fmt --all -- --check
- name: Clippy
uses: https://git.kemitix.net/kemitix/rust@v1.81.0
uses: https://git.kemitix.net/kemitix/rust@v2.3.0
with:
args: cargo hack --feature-powerset clippy
args: ${{ matrix.toolchain.name }} cargo hack --feature-powerset clippy
- name: Build
uses: https://git.kemitix.net/kemitix/rust@v1.81.0
uses: https://git.kemitix.net/kemitix/rust@v2.3.0
with:
args: cargo hack --feature-powerset build
args: ${{ matrix.toolchain.name }} cargo hack --feature-powerset build
- name: Test
uses: https://git.kemitix.net/kemitix/rust@v1.81.0
uses: https://git.kemitix.net/kemitix/rust@v2.3.0
with:
args: cargo hack --feature-powerset test
args: ${{ matrix.toolchain.name }} cargo hack --feature-powerset test

3
.gitignore vendored
View file

@ -1,3 +1,6 @@
# git-next ui logs
.local/
# ---> Rust
# Generated by Cargo
# will have compiled files and executables

View file

@ -1,23 +1,10 @@
steps:
todo_check:
# INFO: This doesn't have an equivalent yet for Forgejo Actions
# INFO: https://woodpecker-ci.org/plugins/TODO-Checker
image: codeberg.org/epsilon_02/todo-checker:1.1
when:
- event: push
branch: next
settings:
# git-next-woodpecker-todo-checker - read:issue
repository_token: "776a3b928b852472c2af727a360c85c00af64b9f"
prefix_regex: "(#|//) (TODO|FIXME): "
debug: false
docker-build:
when:
- event: push
branch: next
# INFO: https://woodpecker-ci.org/plugins/Docker%20Buildx
image: docker.io/woodpeckerci/plugin-docker-buildx:4.2.0
image: docker.io/woodpeckerci/plugin-docker-buildx:5.0.0
settings:
username: kemitix
repo: git.kemitix.net/kemitix/git-next

View file

@ -4,7 +4,7 @@ steps:
- event: tag
ref: refs/tags/v*
# INFO: https://woodpecker-ci.org/plugins/Docker%20Buildx
image: docker.io/woodpeckerci/plugin-docker-buildx:4.2.0
image: docker.io/woodpeckerci/plugin-docker-buildx:5.0.0
settings:
username: kemitix
repo: git.kemitix.net/kemitix/git-next

View file

@ -2,6 +2,28 @@
All notable changes to this project will be documented in this file.
## `git-next-core` - [0.13.11](https://git.kemitix.net/kemitix/git-next/compare/git-next-core-v0.13.10...git-next-core-v0.13.11) - 2024-09-14
### Added
- should fetch repo on startup when not cloning
- Remove branches when fetching from remote
### Other
- reimplement git fetch using git
## `git-next` - [0.13.11](https://git.kemitix.net/kemitix/git-next/compare/v0.13.10...v0.13.11) - 2024-09-14
### Added
- *(tui)* add time and version in border
- should fetch repo on startup when not cloning
- Remove branches when fetching from remote
### Other
- Update TUI sooner when receiving CI status
- reimplement git fetch using git
- mark tui as complete on roadmap
- Add missing port mapping parameter for running in docker
## `git-next-forge-github` - [0.13.10](https://git.kemitix.net/kemitix/git-next/compare/git-next-forge-github-v0.13.9...git-next-forge-github-v0.13.10) - 2024-09-12
### Added

461
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@ resolver = "2"
members = ["crates/*"]
[workspace.package]
version = "0.13.10"
version = "0.13.11"
edition = "2021"
license = "MIT"
@ -27,12 +27,13 @@ git-next-forge-forgejo = { path = "crates/forge-forgejo", version = "0.13" }
git-next-forge-github = { path = "crates/forge-github", version = "0.13" }
# TUI
ratatui = "0.28"
ratatui = "0.29"
directories = "5.0"
lazy_static = "1.5"
color-eyre = "0.6"
tui-scrollview = "0.4"
tui-scrollview = "0.5"
regex = "1.10"
chrono = "0.4"
# CLI parsing
clap = { version = "4.5", features = ["cargo", "derive"] }
@ -51,7 +52,7 @@ sha2 = "0.10"
hex = "0.4"
# git
gix = { version = "0.66", features = [
gix = { version = "0.67", features = [
"dirwalk",
"blocking-http-transport-reqwest-rust-tls",
] }
@ -67,7 +68,7 @@ serde_json = "1.0"
toml = "0.8"
# Secrets and Password
secrecy = "0.8"
secrecy = "0.10"
# Conventional Commit check
git-conventional = "0.12"
@ -97,7 +98,7 @@ pike = "0.1"
take-until = "0.2"
# file watcher
notify = "6.1"
notify = "7.0"
# Actors
actix = "0.13"
@ -117,4 +118,4 @@ pretty_assertions = "1.4"
rand = "0.8"
mockall = "0.13"
test-log = "0.2"
rstest = { version = "0.22", features = ["async-timeout"] }
rstest = { version = "0.23", features = ["async-timeout"] }

View file

@ -15,14 +15,10 @@ COPY . .
RUN cargo build --release --bin git-next --all-features && \
strip target/release/git-next
FROM docker.io/debian:stable-20240722-slim AS runtime
FROM docker.io/debian:stable-20240904-slim AS runtime
WORKDIR /app
RUN apt-get update && \
apt-get install --no-install-recommends -y \
git=1:2.39.2-1.1 \
libssl3=3.0.14-1~deb12u1 \
libdbus-1-dev=1.14.10-1~deb12u1 \
ca-certificates=20230311 \
apt-get satisfy -y "git (>=2.39), libssl3 (>=3.0.14), libdbus-1-dev (>=1.14.10), ca-certificates (>=20230311)" \
&& \
rm -rf /var/lib/apt/lists/*
USER 1000

View file

@ -1,4 +1,4 @@
FROM docker.io/rust:1.81.0-bookworm
FROM docker.io/rust:1.82.0-bookworm
RUN apt-get update && \
apt-get install -y libdbus-1-dev && \

View file

@ -6,4 +6,7 @@
development workflows where each commit must pass CI before being included in
the main branch.
![Demo](./demo.gif)
See [README.md](https://git.kemitix.net/kemitix/git-next/src/branch/main/crates/cli/README.md) for more information.

View file

@ -16,7 +16,7 @@ categories = { workspace = true }
default = ["forgejo", "github", "tui"]
forgejo = ["git-next-forge-forgejo"]
github = ["git-next-forge-github"]
tui = ["ratatui", "directories", "lazy_static", "tui-scrollview", "regex"]
tui = ["ratatui", "directories", "lazy_static", "tui-scrollview", "regex", "chrono"]
[dependencies]
git-next-core = { workspace = true }
@ -30,6 +30,7 @@ lazy_static = { workspace = true, optional = true }
color-eyre = { workspace = true }
tui-scrollview = { workspace = true, optional = true }
regex = { workspace = true, optional = true }
chrono = { workspace = true, optional = true }
# CLI parsing
clap = { workspace = true }

View file

@ -59,7 +59,7 @@ cargo install --path crates/cli
- [x] cli
- [x] server
- [x] notifications - notify user when intervention required (e.g. to rebase)
- [ ] tui overview
- [x] tui overview
- [ ] webui overview
## Branch Names
@ -612,7 +612,7 @@ Note: this assumes the `git-next-server.toml` has a `listen.http.port` of
This will run with the `server start` options:
```shell
docker run -it -v .:/app/ git.kemitix.net/kemitix/git-next:latest
docker run -it -p "8080:8092" -v .:/app/ git.kemitix.net/kemitix/git-next:latest
```
To perform `server init`:

View file

@ -19,7 +19,7 @@ use tracing::{info, instrument, warn};
pub fn advance_next(
commit: Option<Commit>,
force: git_next_core::git::push::Force,
repo_details: RepoDetails,
repo_details: &RepoDetails,
repo_config: RepoConfig,
open_repository: &dyn OpenRepositoryLike,
message_token: MessageToken,
@ -29,7 +29,7 @@ pub fn advance_next(
info!("Advancing next to commit '{}'", commit);
reset(
open_repository,
&repo_details,
repo_details,
&repo_config.branches().next(),
&commit.into(),
&force,

View file

@ -44,7 +44,7 @@ impl Handler<AdvanceNext> for RepoActor {
match advance_next(
commit,
force,
repo_details,
&repo_details,
repo_config,
&**open_repository,
self.message_token,

View file

@ -17,21 +17,20 @@ impl Handler<ReceiveCIStatus> for RepoActor {
type Result = ();
fn handle(&mut self, msg: ReceiveCIStatus, ctx: &mut Self::Context) -> Self::Result {
let log = self.log.clone();
logger(log.as_ref(), "start: ReceiveCIStatus");
let addr = ctx.address();
logger(self.log.as_ref(), "start: ReceiveCIStatus");
let (next, status) = msg.peel();
self.update_tui(RepoUpdate::ReceiveCIStatus {
status: status.clone(),
});
debug!(?status, "");
let graph_log = graph::log(&self.repo_details);
self.update_tui_log(graph_log.clone());
let addr = ctx.address();
let forge_alias = self.repo_details.forge.forge_alias().clone();
let repo_alias = self.repo_details.repo_alias.clone();
let message_token = self.message_token;
let sleep_duration = self.sleep_duration;
let graph_log = graph::log(&self.repo_details);
self.update_tui_log(graph_log.clone());
self.update_tui(RepoUpdate::ReceiveCIStatus {
status: status.clone(),
});
debug!(?status, "");
match status {
Status::Pass => {
do_send(&addr, AdvanceMain::new(next), self.log.as_ref());
@ -57,8 +56,9 @@ impl Handler<ReceiveCIStatus> for RepoActor {
commit: next,
log: graph_log,
},
log.as_ref(),
self.log.as_ref(),
);
let log = self.log.clone();
async move {
debug!("sleeping before retrying...");
logger(log.as_ref(), "before sleep");

View file

@ -79,7 +79,6 @@ impl Handler<ValidateRepo> for RepoActor {
self.update_tui_log(git_log);
if next_is_valid && next != main {
info!("Checking CI");
self.update_tui(RepoUpdate::CheckingCI);
do_send(&ctx.address(), CheckCIStatus::new(next), self.log.as_ref());
} else if next != dev {
info!("Advance next");

View file

@ -7,7 +7,7 @@ fn advance_next_sut(
next: &Commit,
main: &Commit,
dev_commit_history: &[Commit],
repo_details: RepoDetails,
repo_details: &RepoDetails,
repo_config: RepoConfig,
open_repository: &dyn OpenRepositoryLike,
message_token: MessageToken,
@ -42,7 +42,7 @@ mod when_at_dev {
&next,
main,
dev_commit_history,
repo_details,
&repo_details,
repo_config,
&open_repository,
message_token,
@ -77,7 +77,7 @@ mod can_advance {
&next,
main,
dev_commit_history,
repo_details,
&repo_details,
repo_config,
&open_repository,
message_token,
@ -108,7 +108,7 @@ mod can_advance {
&next,
main,
dev_commit_history,
repo_details,
&repo_details,
repo_config,
&open_repository,
message_token,
@ -148,7 +148,7 @@ mod can_advance {
&next,
main,
dev_commit_history,
repo_details,
&repo_details,
repo_config,
&open_repository,
message_token,
@ -180,7 +180,7 @@ mod can_advance {
&next,
main,
dev_commit_history,
repo_details,
&repo_details,
repo_config,
&open_repository,
message_token,

View file

@ -43,6 +43,10 @@ async fn should_open() -> TestResult {
//given
let fs = given::a_filesystem();
let (mut open_repository, repo_details) = given::an_open_repository(&fs);
open_repository
.expect_fetch()
.times(1)
.return_once(|| Ok(()));
given::has_all_valid_remote_defaults(&mut open_repository, &repo_details);
// factory opens a repository
let mut repository_factory = MockRepositoryFactory::new();
@ -79,6 +83,10 @@ async fn when_server_has_no_repo_config_should_send_load_from_repo() -> TestResu
//given
let fs = given::a_filesystem();
let (mut open_repository, mut repo_details) = given::an_open_repository(&fs);
open_repository
.expect_fetch()
.times(1)
.return_once(|| Ok(()));
#[allow(clippy::unwrap_used)]
let _repo_config = repo_details.repo_config.take().unwrap();
@ -106,6 +114,10 @@ async fn when_server_has_repo_config_should_send_register_webhook() -> TestResul
//given
let fs = given::a_filesystem();
let (mut open_repository, repo_details) = given::an_open_repository(&fs);
open_repository
.expect_fetch()
.times(1)
.return_once(|| Ok(()));
#[allow(clippy::unwrap_used)]
given::has_all_valid_remote_defaults(&mut open_repository, &repo_details);
@ -129,6 +141,10 @@ async fn opened_repo_with_no_default_push_should_not_proceed() -> TestResult {
//given
let fs = given::a_filesystem();
let (mut open_repository, repo_details) = given::an_open_repository(&fs);
open_repository
.expect_fetch()
.times(1)
.return_once(|| Ok(()));
given::has_remote_defaults(
&mut open_repository,
@ -158,15 +174,10 @@ async fn opened_repo_with_no_default_fetch_should_not_proceed() -> TestResult {
//given
let fs = given::a_filesystem();
let (mut open_repository, repo_details) = given::an_open_repository(&fs);
given::has_remote_defaults(
&mut open_repository,
HashMap::from([
(Direction::Push, repo_details.remote_url()),
(Direction::Fetch, None),
]),
);
open_repository
.expect_fetch()
.times(1)
.return_once(|| Err(git::fetch::Error::NoFetchRemoteFound));
let mut repository_factory = MockRepositoryFactory::new();
expect::open_repository(&mut repository_factory, open_repository);
fs.dir_create(&repo_details.gitdir)?;

View file

@ -6,7 +6,7 @@ use git_next_core::{
ApiToken, ForgeType, GitDir, Hostname, RepoBranches, RepoConfig, RepoConfigSource, RepoPath,
StoragePathType, User,
};
use secrecy::Secret;
use secrecy::SecretString;
type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>;
@ -59,7 +59,7 @@ fn repo_details_find_default_push_remote_finds_correct_remote() -> Result<()> {
repo_details.forge = repo_details
.forge
.with_user(User::new("git".to_string()))
.with_token(ApiToken::new(Secret::new(String::new())))
.with_token(ApiToken::new(SecretString::from(String::new())))
.with_hostname(Hostname::new("git.kemitix.net"));
repo_details.repo_path = RepoPath::new("kemitix/git-next".to_string());
let Ok(open_repository) = git::repository::factory::real().open(&repo_details) else {
@ -95,7 +95,7 @@ fn gitdir_validate_should_pass_a_valid_git_repo() -> Result<()> {
repo_details.forge = repo_details
.forge
.with_user(User::new("git".to_string()))
.with_token(ApiToken::new(Secret::new(String::new())))
.with_token(ApiToken::new(SecretString::from(String::new())))
.with_hostname(Hostname::new("git.kemitix.net"));
tracing::debug!("opening...");
let Ok(repository) = git::repository::factory::real().open(&repo_details) else {
@ -129,7 +129,7 @@ fn gitdir_validate_should_fail_a_git_repo_with_wrong_remote() {
repo_details.forge = repo_details
.forge
.with_user(User::new("git".to_string()))
.with_token(ApiToken::new(Secret::new(String::new())))
.with_token(ApiToken::new(SecretString::from(String::new())))
.with_hostname(Hostname::new("git.kemitix.net"));
let Ok(repository) = git::repository::factory::real().open(&repo_details) else {
// .git directory may not be present on dev environment

View file

@ -17,7 +17,9 @@ the current directory for this.
If you want to persist the clones of your monitored repos then point `storage.path` in
`git-next-server.toml` to the the directory `/app`, (e.g. `path = "/app/data"`).
`docker run -it -v .:/app/ git.kemitix.net/kemitix/git-next:latest server start --ui`
Map the port your webhook notifications are arriving on to the port specified in `listen.http.port`.
`docker run -it -p "8080:8092" -v .:/app/ git.kemitix.net/kemitix/git-next:latest server start --ui`
## logs

View file

@ -5,7 +5,7 @@ use ratatui::{
style::{Color, Style, Stylize as _},
symbols::border,
text::{Line, Span},
widgets::{block::Title, Block, Paragraph, StatefulWidget, Widget},
widgets::{Block, Paragraph, StatefulWidget, Widget},
};
use git_next_core::{
@ -51,6 +51,10 @@ impl State {
}
}
fn time() -> String {
chrono::Local::now().format("%H:%M").to_string()
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum ServerState {
/// UI has started but has no information on the state of the server
@ -356,16 +360,19 @@ impl StatefulWidget for &State {
Self: Sized,
{
let block = Block::bordered()
.title(Title::from(" Git-Next ".bold()).alignment(Alignment::Center))
.title(
Title::from(Line::from(vec![
.title_top(
Line::from(format!(" Git-Next v{} ", clap::crate_version!()).bold())
.alignment(Alignment::Center),
)
.title_bottom(
Line::from(vec![
" [q]uit ".into(),
self.beating_heart().into(),
" ".into(),
]))
.alignment(Alignment::Center)
.position(ratatui::widgets::block::Position::Bottom),
])
.alignment(Alignment::Center),
)
.title_bottom(Line::from(format!(" {} ", time())).alignment(Alignment::Right))
.border_set(border::THICK);
let interior = block.inner(area);
block.render(area, buf);

View file

@ -5,7 +5,8 @@ use git_next_core::{ForgeAlias, RepoAlias};
use ratatui::{
buffer::Buffer,
layout::{Alignment, Direction, Layout, Rect},
widgets::{block::Title, Block, Widget},
text::Line,
widgets::{Block, Widget},
};
use crate::tui::{
@ -31,8 +32,8 @@ impl<'a> Widget for ExpandedForgeWidget<'a> {
where
Self: Sized,
{
let block = Block::default().title(
Title::from(format!(" forge: {} ", self.forge_alias)).alignment(Alignment::Left),
let block = Block::default().title_top(
Line::from(format!(" forge: {} ", self.forge_alias)).alignment(Alignment::Left),
);
let children = self.children();
let layout = Layout::default()

View file

@ -2,10 +2,10 @@
/// `ForgeJo`: <https://{hostname}/user/settings/applications>
/// `Github`: <https://github.com/settings/tokens>
#[derive(Clone, Debug, derive_more::Constructor)]
pub struct ApiToken(secrecy::Secret<String>);
pub struct ApiToken(secrecy::SecretString);
/// The API Token is in effect a password, so it must be explicitly exposed to access its value
impl secrecy::ExposeSecret<String> for ApiToken {
fn expose_secret(&self) -> &String {
impl secrecy::ExposeSecret<str> for ApiToken {
fn expose_secret(&self) -> &str {
self.0.expose_secret()
}
}

View file

@ -10,7 +10,7 @@ use std::{
use derive_more::{Constructor, Display};
use kxio::fs::FileSystem;
use secrecy::Secret;
use secrecy::SecretString;
use serde::{Deserialize, Serialize};
use tracing::info;
@ -242,8 +242,11 @@ impl Shout {
self.webhook.clone().map(|x| x.url)
}
pub fn webhook_secret(&self) -> Option<Secret<String>> {
self.webhook.clone().map(|x| x.secret).map(Secret::new)
pub fn webhook_secret(&self) -> Option<SecretString> {
self.webhook
.clone()
.map(|x| x.secret)
.map(SecretString::from)
}
#[must_use]
@ -278,8 +281,8 @@ impl OutboundWebhook {
self.url.as_ref()
}
#[must_use]
pub fn secret(&self) -> Secret<String> {
Secret::new(self.secret.clone())
pub fn secret(&self) -> SecretString {
SecretString::from(self.secret.clone())
}
}

View file

@ -539,7 +539,7 @@ mod server {
let shout_webhook_url = shout.webhook_url().unwrap_or_default();
let shout_webhook_secret = shout
.webhook_secret()
.map(|secret| secret.expose_secret().clone())
.map(|secret| secret.expose_secret().to_string())
.unwrap_or_default();
let_assert!(Some(shout_email) = shout.email());
let shout_email_from = shout_email.from();

View file

@ -3,6 +3,9 @@ pub type Result<T> = core::result::Result<T, Error>;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("io")]
Io(#[from] std::io::Error),
#[error("unable to open repo: {0}")]
UnableToOpenRepo(String),

View file

@ -11,7 +11,7 @@ use crate::{
use std::sync::{Arc, RwLock};
use secrecy::{ExposeSecret, Secret};
use secrecy::{ExposeSecret, SecretString};
use tracing::instrument;
/// The derived information about a repo, used to interact with it
@ -53,7 +53,7 @@ impl RepoDetails {
),
}
}
pub(crate) fn origin(&self) -> secrecy::Secret<String> {
pub(crate) fn origin(&self) -> secrecy::SecretString {
let repo_details = self;
let user = &repo_details.forge.user();
let hostname = &repo_details.forge.hostname();
@ -78,7 +78,7 @@ impl RepoDetails {
}
// url is a secret as it contains auth token
pub(crate) fn url(&self) -> Secret<String> {
pub(crate) fn url(&self) -> SecretString {
let user = self.forge.user();
let token = self.forge.token().expose_secret();
let auth_delim = if token.is_empty() { "" } else { ":" };

View file

@ -60,11 +60,9 @@ impl RepositoryFactory for RealRepositoryFactory {
fn git_clone(&self, repo_details: &RepoDetails) -> Result<Box<dyn OpenRepositoryLike>> {
tracing::info!("creating");
let (gix_repo, _outcome) = gix::prepare_clone_bare(
repo_details.origin().expose_secret().as_str(),
&*repo_details.gitdir,
)?
.fetch_only(gix::progress::Discard, &AtomicBool::new(false))?;
let (gix_repo, _outcome) =
gix::prepare_clone_bare(repo_details.origin().expose_secret(), &*repo_details.gitdir)?
.fetch_only(gix::progress::Discard, &AtomicBool::new(false))?;
tracing::info!("created");
let repo = RealOpenRepository::new(
Arc::new(RwLock::new(gix_repo.into())),

View file

@ -1,6 +1,7 @@
//
use crate::{
git::{
self,
repository::{
open::{OpenRepository, OpenRepositoryLike},
test::TestRepository,
@ -47,7 +48,9 @@ pub fn open(
) -> Result<Box<dyn OpenRepositoryLike>> {
let open_repository = if repo_details.gitdir.exists() {
info!("Local copy found - opening...");
repository_factory.open(repo_details)?
let repo = repository_factory.open(repo_details)?;
repo.fetch()?;
repo
} else {
info!("Local copy not found - cloning...");
repository_factory.git_clone(repo_details)?
@ -117,6 +120,9 @@ pub enum Error {
#[error("git clone: {0}")]
Clone(String),
#[error("git fetch: {0}")]
FetchError(#[from] git::fetch::Error),
#[error("open: {0}")]
Open(String),

View file

@ -67,34 +67,32 @@ impl super::OpenRepositoryLike for RealOpenRepository {
#[tracing::instrument(skip_all)]
#[cfg(not(tarpaulin_include))] // would require writing to external service
fn fetch(&self) -> Result<(), git::fetch::Error> {
use std::sync::atomic::AtomicBool;
let Ok(repository) = self.inner.read() else {
#[cfg(not(tarpaulin_include))] // don't test mutex lock failure
return Err(git::fetch::Error::Lock);
};
let thread_local = repository.to_thread_local();
let Some(Ok(remote)) =
thread_local.find_default_remote(git::repository::Direction::Fetch.into())
else {
#[cfg(not(tarpaulin_include))] // test is on local repo - should always have remotes
if self
.find_default_remote(git::repository::Direction::Fetch)
.is_none()
{
return Err(git::fetch::Error::NoFetchRemoteFound);
};
remote
.connect(gix::remote::Direction::Fetch)
.map_err(|gix| git::fetch::Error::Connect(gix.to_string()))?
.prepare_fetch(
gix::progress::Discard,
gix::remote::ref_map::Options::default(),
)
.map_err(|gix| git::fetch::Error::Prepare(gix.to_string()))?
.receive(gix::progress::Discard, &AtomicBool::default())
.map_err(|gix| git::fetch::Error::Receive(gix.to_string()))?;
}
info!("Fetching");
gix::command::prepare("/usr/bin/git fetch --prune")
.with_context(gix::diff::command::Context {
git_dir: Some(
self.inner
.read()
.map_err(|_| git::fetch::Error::Lock)
.map(|r| r.git_dir().to_path_buf())?,
),
..Default::default()
})
.with_shell_allow_argument_splitting()
.stdout(std::process::Stdio::null())
.stderr(std::process::Stdio::null())
.spawn()?
.wait()?;
info!("Fetch okay");
Ok(())
}
// TODO: (#72) reimplement using `gix`
#[cfg(not(tarpaulin_include))] // would require writing to external service
#[tracing::instrument(skip_all)]
fn push(
@ -114,7 +112,7 @@ impl super::OpenRepositoryLike for RealOpenRepository {
}
};
// INFO: never log the command as it contains the API token within the 'origin'
let command: secrecy::Secret<String> = format!(
let command: secrecy::SecretString = format!(
"/usr/bin/git push {} {to_commit}:{branch_name} {force}",
origin.expose_secret()
)

447
demo.cast Normal file
View file

@ -0,0 +1,447 @@
{"version": 2, "width": 80, "height": 24, "timestamp": 1726490135, "env": {"SHELL": "/opt/homebrew/bin/bash", "TERM": "xterm-256color"}}
[0.029531, "o", "\u001b[?1049h"]
[0.030008, "o", "\u001b[1;1H┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[1m Git-Next v0.13.11 \u001b[22m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\u001b[2;1H┃\u001b[2;36HLoading...1\u001b[2;80H┃\u001b[3;1H┃\u001b[3;80H┃\u001b[4;1H┃\u001b[4;80H┃\u001b[5;1H┃\u001b[5;80H┃\u001b[6;1H┃\u001b[6;80H┃\u001b[7;1H┃\u001b[7;80H┃\u001b[8;1H┃\u001b[8;80H┃\u001b[9;1H┃\u001b[9;80H┃\u001b[10;1H┃\u001b[10;80H┃\u001b[11;1H┃\u001b[11;80H┃\u001b[12;1H┃\u001b[12;80H┃\u001b[13;1H┃\u001b[13;80H┃\u001b[14;1H┃\u001b[14;80H┃\u001b[15;1H┃\u001b[15;80H┃\u001b[16;1H┃\u001b[16;80H┃\u001b[17;1H┃\u001b[17;80H┃\u001b[18;1H┃\u001b[18;80H┃\u001b[19;1H┃\u001b[19;80H┃\u001b[20;1H┃\u001b[20;80H┃\u001b[21;1H┃\u001b[21;80H┃\u001b[22;1H┃\u001b[22;80H┃\u001b[23;1H┃\u001b[23;80H┃\u001b[24;1H┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[24;36H[q]uit\u001b[24;43H💚\u001b[24;47H━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[24;74H13:35\u001b[24;80H┛\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.552043, "o", "\u001b[2;3Hforge:\u001b[2;10Hjo\u001b[2;36H \u001b[3;3H\u001b[38;5;6;49mgit-next\u001b[3;12H\u001b[39;49m(main\u001b[3;18H->\u001b[3;21Hnext\u001b[3;26H->\u001b[3;29Hdev)\u001b[3;34H\u001b[38;5;7;49mregistering webhook...\u001b[3;57H\u001b[39;49m──────────────────────\u001b[5;3H\u001b[38;5;6;49mkxio\u001b[5;8H\u001b[39;49m(main\u001b[5;14H->\u001b[5;17Hnext\u001b[5;22H->\u001b[5;25Hdev)\u001b[5;30H\u001b[38;5;7;49mregistering webhook...\u001b[5;53H\u001b[39;49m──────────────────────────\u001b[7;3H\u001b[38;5;6;49mpodal\u001b[7;9H\u001b[39;49m(main\u001b[7;15H->\u001b[7;18Hnext\u001b[7;23H->\u001b[7;26Hdev)\u001b[7;31H\u001b[38;5;7;49mregistering webhook...\u001b[7;54H\u001b[39;49m─────────────────────────\u001b[9;3H\u001b[38;5;6;49mrefile-m4b\u001b[9;14H\u001b[39;49m(main\u001b[9;20H->\u001b[9;23Hnext\u001b[9;28H->\u001b[9;31Hdev)\u001b[9;36H\u001b[38;5;7;49mregistering webhook...\u001b[9;59H\u001b[39;49m────────────────────\u001b[11;3H\u001b[38;5;6;49mrust-action\u001b[11;15H\u001b[39;49m(main\u001b[11;21H->\u001b[11;24Hnext\u001b[11;29H->\u001b[11;32Hdev)\u001b[11;37H\u001b[38;5;7;49mregistering webhook...\u001b[11;60H"]
[2.552123, "o", "\u001b[39;49m───────────────────\u001b[13;3H\u001b[38;5;6;49mskip\u001b[13;8H\u001b[39;49m(main\u001b[13;14H->\u001b[13;17Hnext\u001b[13;22H->\u001b[13;25Hdev)\u001b[13;30H\u001b[38;5;7;49mregistering webhook...\u001b[13;53H\u001b[39;49m──────────────────────────\u001b[15;3H\u001b[38;5;6;49mtasyn\u001b[15;9H\u001b[39;49m(main\u001b[15;15H->\u001b[15;18Hnext\u001b[15;23H->\u001b[15;26Hdev)\u001b[15;31H\u001b[38;5;7;49mregistering webhook...\u001b[15;54H\u001b[39;49m─────────────────────────\u001b[17;3H\u001b[38;5;6;49mtest\u001b[17;8H\u001b[39;49m(main\u001b[17;14H->\u001b[17;17Hnext\u001b[17;22H->\u001b[17;25Hdev)\u001b[17;30H\u001b[38;5;7;49mregistering webhook...\u001b[17;53H\u001b[39;49m──────────────────────────\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.614517, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.649175, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.684709, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.71967, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.75525, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.789211, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[2.826615, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[3.673281, "o", "\u001b[7;31H\u001b[38;5;2;49mokay\u001b[39;49m ──────────────────\u001b[8;2H*\u001b[8;4H249b943\u001b[8;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[8;30H\u001b[39;49mfix(deps):\u001b[8;41Hupdate\u001b[8;48Hrust\u001b[8;53Hcrate\u001b[8;59Hscraper\u001b[8;67Hto\u001b[8;70H0.20\u001b[9;3H \u001b[9;14H \u001b[9;20H \u001b[9;23H \u001b[9;28H \u001b[9;31H \u001b[9;36H \u001b[9;59H \u001b[10;3H\u001b[38;5;6;49mrefile-m4b\u001b[10;14H\u001b[39;49m(main\u001b[10;20H->\u001b[10;23Hnext\u001b[10;28H->\u001b[10;31Hdev)\u001b[10;36H\u001b[38;5;7;49mregistering webhook...\u001b[10;59H\u001b[39;49m────────────────────\u001b[11;3H \u001b[11;15H \u001b[11;21H \u001b[11;24H \u001b[11;29H \u001b[11;32H \u001b[11;37H \u001b[11;60H \u001b[12;3H\u001b[38;5;6;49mrust-action\u001b[12;15H\u001b[39;49m(main\u001b[12;21H->\u001b[12;24Hnext\u001b[12;29H->\u001b[12;32Hdev)\u001b[12;37H\u001b[38;5;7;49mregistering webhook...\u001b[12;60H\u001b[39;49m───────────────────\u001b[13;3H \u001b[13;8H \u001b[13;14H \u001b[13;17H \u001b[13;22H \u001b[13;25H \u001b[13;30H \u001b[13;53"]
[3.673319, "o", "H \u001b[14;3H\u001b[38;5;6;49mskip\u001b[14;8H\u001b[39;49m(main\u001b[14;14H->\u001b[14;17Hnext\u001b[14;22H->\u001b[14;25Hdev)\u001b[14;30H\u001b[38;5;2;49mokay\u001b[14;35H\u001b[39;49m────────────────────────────────────────────\u001b[15;2H* fc7fbca \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m chore(deps): update docker.io/rust docker tag to \u001b[17;4H\u001b[38;5;6;49ma\u001b[17;6Hyn\u001b[39;49m (main -> next -> dev) \u001b[38;5;7;49mregistering webh\u001b[17;48Hok\u001b[17;52H.\u001b[39;49m \u001b[19;3H\u001b[38;5;6;49mtest\u001b[19;8H\u001b[39;49m(main\u001b[19;14H->\u001b[19;17Hnext\u001b[19;22H->\u001b[19;25Hdev)\u001b[19;30H\u001b[38;5;7;49mregistering webhook...\u001b[19;53H\u001b[39;49m──────────────────────────\u001b[24;43H 💚\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[4.567297, "o", "\u001b[2;79H▲\u001b[3;34H\u001b[38;5;2;49mokay\u001b[39;49m ──────────────────\u001b[3;79H█\u001b[4;2H*\u001b[4;4H91c5973\u001b[4;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[4;30H\u001b[39;49mchore:\u001b[4;37Hrelease\u001b[4;79H█\u001b[5;3H \u001b[5;8H \u001b[5;14H \u001b[5;17H \u001b[5;22H \u001b[5;25H \u001b[5;30H \u001b[5;53H █\u001b[6;3H\u001b[38;5;6;49mkxio\u001b[6;8H\u001b[39;49m(main\u001b[6;14H->\u001b[6;17Hnext\u001b[6;22H->\u001b[6;25Hdev)\u001b[6;30H\u001b[38;5;7;49mregistering webhook...\u001b[6;53H\u001b[39;49m──────────────────────────█\u001b[7;3H \u001b[7;9H \u001b[7;15H \u001b[7;18H \u001b[7;23H \u001b[7;26H \u001b[7;31H \u001b[7;36H █\u001b[8;2H \u001b[38;5;6;49mpodal\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────█\u001b[9;2H*\u001b[9;4H249b943\u001b[9;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[9;30H\u001b[39;49mfix(deps):\u001b[9;41Hupdate\u001b[9;48Hrust\u001b[9;53Hcrate\u001b[9;59Hs"]
[4.567379, "o", "craper\u001b[9;67Hto\u001b[9;70H0.20\u001b[9;79H█\u001b[10;3H \u001b[10;14H \u001b[10;20H \u001b[10;23H \u001b[10;28H \u001b[10;31H \u001b[10;36H \u001b[10;59H █\u001b[11;3H\u001b[38;5;6;49mrefile-m4b\u001b[11;14H\u001b[39;49m(main\u001b[11;20H->\u001b[11;23Hnext\u001b[11;28H->\u001b[11;31Hdev)\u001b[11;36H\u001b[38;5;7;49mregistering webhook...\u001b[11;59H\u001b[39;49m────────────────────█\u001b[12;3H \u001b[12;15H \u001b[12;21H \u001b[12;24H \u001b[12;29H \u001b[12;32H \u001b[12;37H \u001b[12;60H █\u001b[13;3H\u001b[38;5;6;49mrust-action\u001b[13;15H\u001b[39;49m(main\u001b[13;21H->\u001b[13;24Hnext\u001b[13;29H->\u001b[13;32Hdev)\u001b[13;37H\u001b[38;5;2;49mokay\u001b[13;42H\u001b[39;49m─────────────────────────────────────║\u001b[14;2H* de4785c \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[14;30H\u001b[39;49mfeat: ensure toolchains are up-to-date ║\u001b[15;2H \u001b[15;4H \u001b[15;12H \u001b[15;30H \u001b[15;43H \u001b[15;50H \u001b[15;65H \u001b[15;72H \u001b[15;76"]
[4.567437, "o", "H \u001b[15;79H║\u001b[16;3H\u001b[38;5;6;49mskip\u001b[16;8H\u001b[39;49m(main\u001b[16;14H->\u001b[16;17Hnext\u001b[16;22H->\u001b[16;25Hdev)\u001b[16;30H\u001b[38;5;2;49mokay\u001b[16;35H\u001b[39;49m────────────────────────────────────────────║\u001b[17;2H* fc7fbca \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m chore(deps): update docker.io/rust docker tag to ║\u001b[18;79H║\u001b[19;4H\u001b[38;5;6;49ma\u001b[19;6Hyn\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ─────────────────\u001b[19;79H║\u001b[20;2H*\u001b[20;4H24fe845\u001b[20;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[20;30H\u001b[39;49mchore(deps):\u001b[20;43Hupdate\u001b[20;50Hdocker.io/postgres:16.4-alpin║\u001b[21;79H║\u001b[22;3H\u001b[38;5;6;49mtest\u001b[22;8H\u001b[39;49m(main\u001b[22;14H->\u001b[22;17Hnext\u001b[22;22H->\u001b[22;25Hdev)\u001b[22;30H\u001b[38;5;7;49mregistering webhook...\u001b[22;53H\u001b[39;49m──────────────────────────║\u001b[23;79H▼\u001b[24;43H💚\u001b[24;45H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[4.603024, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[4.636433, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.373579, "o", "\u001b[11;36H\u001b[38;5;2;49mokay\u001b[39;49m ──────────────────\u001b[12;2H*\u001b[12;4H7fba5fb\u001b[12;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[12;30H\u001b[39;49mSupport\u001b[12;38H--version,\u001b[12;49H--help\u001b[12;56Hand\u001b[12;60H--directory\u001b[12;72Hcli\u001b[12;76Harg\u001b[13;3H \u001b[13;15H \u001b[13;21H \u001b[13;24H \u001b[13;29H \u001b[13;32H \u001b[13;37H \u001b[13;42H \u001b[14;2H \u001b[38;5;6;49mrust-action\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ─────────────────────────────────────\u001b[15;2H*\u001b[15;4Hde4785c\u001b[15;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[15;30H\u001b[39;49mfeat:\u001b[15;36Hensure\u001b[15;43Htoolchains\u001b[15;54Hare\u001b[15;58Hup-to-date\u001b[16;3H \u001b[16;8H \u001b[16;14H \u001b[16;17H \u001b[16;22H \u001b[16;25H \u001b[16;30H \u001b[16;35H \u001b[17;2H \u001b[38;5;6;49mskip\u001b[39;49m (m\u001b[17;11Hin -> next -> dev)\u001b[17;30H\u001b[38;5;2;49mokay\u001b[39;49m ─────────────────────"]
[5.373661, "o", "───────────────────────\u001b[18;2H*\u001b[18;4Hfc7fbca\u001b[18;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[18;30H\u001b[39;49mchore(deps):\u001b[18;43Hupdate\u001b[18;50Hdocker.io/rust\u001b[18;65Hdocker\u001b[18;72Htag\u001b[18;76Hto\u001b[19;3H \u001b[19;9H \u001b[19;15H \u001b[19;18H \u001b[19;23H \u001b[19;26H \u001b[19;31H \u001b[19;36H \u001b[20;2H \u001b[38;5;6;49mtasyn\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────\u001b[21;2H*\u001b[21;4H24fe845\u001b[21;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[21;30H\u001b[39;49mchore(deps):\u001b[21;43Hupdate\u001b[21;50Hdocker.io/postgres:16.4-alpin\u001b[22;3H \u001b[22;8H \u001b[22;14H \u001b[22;17H \u001b[22;22H \u001b[22;25H \u001b[22;30H \u001b[22;53H \u001b[23;3H\u001b[38;5;6;49mtest\u001b[23;8H\u001b[39;49m(main\u001b[23;14H->\u001b[23;17Hnext\u001b[23;22H->\u001b[23;25Hdev)\u001b[23;30H\u001b[38;5;2;49mokay\u001b[23;35H\u001b[39;49m─────────────────"]
[5.373769, "o", "───────────────────────────\u001b[24;43H 💚\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.667499, "o", "\u001b[6;3H\u001b[38;5;15;48;5;1mkxio\u001b[6;8Hcommit is a Work-in-progress\u001b[39;49m (main -> next -> dev) \u001b[38;5;1;49mALERT\u001b[39;49m \u001b[7;2H*\u001b[7;4H805d0b3\u001b[7;12H\u001b[38;5;15;48;5;4m(dev)\u001b[7;18H\u001b[39;49mWIP:\u001b[7;23Hdocs(fs):\u001b[7;33Hadd\u001b[7;37Hsome\u001b[7;42Hdocumentation\u001b[8;2H* 9943a0f \u001b[38;5;15;48;5;4m(main)(next)\u001b[39;49m chore(deps): update docker.io/rust docker tag to v1.81\u001b[9;2H \u001b[9;4H \u001b[9;12H \u001b[9;30H \u001b[9;41H \u001b[9;48H \u001b[9;53H \u001b[9;59H \u001b[9;67H \u001b[9;70H \u001b[10;3H\u001b[38;5;6;49mpodal\u001b[10;9H\u001b[39;49m(main\u001b[10;15H->\u001b[10;18Hnext\u001b[10;23H->\u001b[10;26Hdev)\u001b[10;31H\u001b[38;5;2;49mokay\u001b[10;36H\u001b[39;49m───────────────────────────────────────────\u001b[11;2H* 249b943 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m fix(deps):\u001b[11;41Hupdate rust crate scraper to 0.20 \u001b[12;2H \u001b[12;4H \u001b[12;12H \u001b[12;30H \u001b[12;38H \u001b[12;49H \u001b[12;56H \u001b[12;60H \u001b[12;72H \u001b[12;76H ║\u001b[13;3H\u001b[38;5;6;49mr"]
[5.667549, "o", "efile-m4b\u001b[13;14H\u001b[39;49m(main\u001b[13;20H->\u001b[13;23Hnext\u001b[13;28H->\u001b[13;31Hdev)\u001b[13;36H\u001b[38;5;2;49mokay\u001b[13;41H\u001b[39;49m──────────────────────────────────────\u001b[14;2H* 7fba5fb \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m Support --version, --help and --directory cli arg\u001b[15;2H \u001b[15;4H \u001b[15;12H \u001b[15;30H \u001b[15;36H \u001b[15;43H \u001b[15;54H \u001b[15;58H \u001b[16;3H\u001b[38;5;6;49mrust-action\u001b[16;15H\u001b[39;49m(main\u001b[16;21H->\u001b[16;24Hnext\u001b[16;29H->\u001b[16;32Hdev)\u001b[16;37H\u001b[38;5;2;49mokay\u001b[16;42H\u001b[39;49m─────────────────────────────────────\u001b[17;2H* de4785c \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[17;30H\u001b[39;49mfeat: ensure toolchains are up-to-date \u001b[18;2H \u001b[18;4H \u001b[18;12H \u001b[18;30H \u001b[18;43H \u001b[18;50H \u001b[18;65H \u001b[18;72H \u001b[18;76H \u001b[19;3H\u001b[38;5;6;49mskip\u001b[19;8H\u001b[39;49m(main\u001b[19;14H->\u001b[19;17Hnext\u001b"]
[5.667635, "o", "[19;22H->\u001b[19;25Hdev)\u001b[19;30H\u001b[38;5;2;49mokay\u001b[19;35H\u001b[39;49m────────────────────────────────────────────\u001b[20;2H* fc7fbca \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m chore(deps): update docker.io/rust docker tag to \u001b[21;2H \u001b[21;4H \u001b[21;12H \u001b[21;30H \u001b[21;43H \u001b[21;50H \u001b[22;3H\u001b[38;5;6;49mtasyn\u001b[22;9H\u001b[39;49m(main\u001b[22;15H->\u001b[22;18Hnext\u001b[22;23H->\u001b[22;26Hdev)\u001b[22;31H\u001b[38;5;2;49mokay\u001b[22;36H\u001b[39;49m───────────────────────────────────────────\u001b[23;2H* 24fe845 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[23;30H\u001b[39;49mchore(deps): update docker.io/postgres:16.4-alpin\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.703032, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.738998, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.774205, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.808972, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.844592, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.881476, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.91946, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.956562, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[5.993522, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.031996, "o", "\u001b[24;43H💚\u001b[24;45H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.069336, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.109029, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.1469, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.184289, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.220107, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.256197, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.293358, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.331134, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.366742, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.402568, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.439465, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.478813, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.517268, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.560687, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.594301, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.629263, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.669428, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.706761, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.742165, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.78203, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.822172, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.859887, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.897026, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.938296, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[6.975571, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.01065, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.047644, "o", "\u001b[24;43H 💚\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.08457, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.121364, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.157513, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.195418, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.228658, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.264878, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.305593, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.3437, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.381122, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.418853, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.454425, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.492184, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.540907, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.578132, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.614231, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.65196, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.69186, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.731624, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.767836, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.804511, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.840577, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.877375, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.913764, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.952312, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[7.989869, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.031084, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.068302, "o", "\u001b[24;43H💚\u001b[24;45H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.104549, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.140569, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.177935, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.21429, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.251383, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.289527, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.329826, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.367669, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.404116, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.441232, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.479153, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.516467, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.554111, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.590533, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.631784, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.672414, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.708258, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.745135, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.78123, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.82166, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.861283, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.898503, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.934001, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[8.971135, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.008281, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.045177, "o", "\u001b[24;43H 💚\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.082668, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.119739, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.156767, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.194149, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.23081, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.2488, "o", "\u001b[2;3H\u001b[38;5;6;49mgit-next\u001b[39;49m (main\u001b[2;18H->\u001b[2;21Hnext\u001b[2;26H->\u001b[2;29Hdev)\u001b[2;34H\u001b[38;5;2;49mokay\u001b[2;39H\u001b[39;49m────────────────────────────────────────\u001b[3;2H* 91c5973\u001b[3;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m chore: release \u001b[4;2H \u001b[4;4H \u001b[4;12H \u001b[4;30H \u001b[4;37H \u001b[5;3H\u001b[38;5;15;48;5;1mkxio\u001b[5;8Hcommit is a Work-in-progress\u001b[5;37H\u001b[39;49m(main\u001b[5;43H->\u001b[5;46Hnext\u001b[5;51H->\u001b[5;54Hdev)\u001b[5;59H\u001b[38;5;1;49mALERT\u001b[5;65H\u001b[39;49m──────────────\u001b[6;2H* 805d0b3 \u001b[38;5;15;48;5;4m(dev)\u001b[39;49m WIP: docs(fs): add\u001b[6;37Hsome docum\u001b[6;48Hn\u001b[6;50Hation \u001b[6;59H \u001b[6;65H \u001b[7;4H9943a0f\u001b[7;13H\u001b[38;5;15;48;5;4mmain)(next)\u001b[39;49m \u001b[7;26Hhore(deps): update docker.\u001b[7;54H/rust\u001b[7;60Hdocker\u001b[7;67Htag\u001b[7;71Hto\u001b[7;74Hv1.81\u001b[8;2H \u001b[8;4H \u001b[8;12H \u001b[8;25H \u001b[8;38H \u001b[8;45H \u001b[8;60H \u001b[8;67H "]
[9.248957, "o", "\u001b[8;71H \u001b[8;74H \u001b[9;3H\u001b[38;5;6;49mpodal\u001b[9;9H\u001b[39;49m(main\u001b[9;15H->\u001b[9;18Hnext\u001b[9;23H->\u001b[9;26Hdev)\u001b[9;31H\u001b[38;5;2;49mokay\u001b[9;36H\u001b[39;49m───────────────────────────────────────────\u001b[10;2H* 249b943 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m fix(deps): update rust crate scraper to 0.20 \u001b[11;2H \u001b[11;4H \u001b[11;12H \u001b[11;30H \u001b[11;41H \u001b[11;48H \u001b[11;53H \u001b[11;59H \u001b[11;67H \u001b[11;70H \u001b[12;3H\u001b[38;5;6;49mrefile-m4b\u001b[12;14H\u001b[39;49m(main\u001b[12;20H->\u001b[12;23Hnext\u001b[12;28H->\u001b[12;31Hdev)\u001b[12;36H\u001b[38;5;2;49mokay\u001b[12;41H\u001b[39;49m──────────────────────────────────────█\u001b[13;2H* 7fba5fb \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m Support --version, --help and --directory cli arg\u001b[14;2H \u001b[14;4H \u001b[14;12H \u001b[14;30H \u001b[14;38H \u001b[14;49H \u001b[14;56H \u001b[14;60H \u001b[14;72H \u001b[14;76H "]
[9.249109, "o", " \u001b[15;3H\u001b[38;5;6;49mrust-action\u001b[15;15H\u001b[39;49m(main\u001b[15;21H->\u001b[15;24Hnext\u001b[15;29H->\u001b[15;32Hdev)\u001b[15;37H\u001b[38;5;2;49mokay\u001b[15;42H\u001b[39;49m─────────────────────────────────────\u001b[16;2H* de4785c \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m feat: ensure toolchains are up-to-date \u001b[17;2H \u001b[17;4H \u001b[17;12H \u001b[17;30H \u001b[17;36H \u001b[17;43H \u001b[17;54H \u001b[17;58H \u001b[18;3H\u001b[38;5;6;49mskip\u001b[18;8H\u001b[39;49m(main\u001b[18;14H->\u001b[18;17Hnext\u001b[18;22H->\u001b[18;25Hdev)\u001b[18;30H\u001b[38;5;2;49mokay\u001b[18;35H\u001b[39;49m────────────────────────────────────────────\u001b[19;2H* fc7fbc\u001b[19;11H \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[19;30H\u001b[39;49mchore(deps): update docker.io/rust docker tag to \u001b[20;2H \u001b[20;4H \u001b[20;12H \u001b[20;30H \u001b[20;43H \u001b[20;50H \u001b[20;65H \u001b[20;72H \u001b[20;76H \u001b[21;3H\u001b[38;5;6;49mtasyn\u001b["]
[9.249125, "o", "21;9H\u001b[39;49m(main\u001b[21;15H->\u001b[21;18Hnext\u001b[21;23H->\u001b[21;26Hdev)\u001b[21;31H\u001b[38;5;2;49mokay\u001b[21;36H\u001b[39;49m───────────────────────────────────────────\u001b[22;2H* 24fe845 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m chore(deps): update docker.io/postgres:16.4-alpin\u001b[23;2H \u001b[23;4H \u001b[23;12H \u001b[23;30H \u001b[23;43H \u001b[23;50H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.269683, "o", "\u001b[2;2H* 91c5973\u001b[2;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m chore: release \u001b[3;2H \u001b[3;4H \u001b[3;12H \u001b[3;30H \u001b[3;37H \u001b[3;79H║\u001b[4;3H\u001b[38;5;15;48;5;1mkxio\u001b[4;8Hcommit is a Work-in-progress\u001b[4;37H\u001b[39;49m(main\u001b[4;43H->\u001b[4;46Hnext\u001b[4;51H->\u001b[4;54Hdev)\u001b[4;59H\u001b[38;5;1;49mALERT\u001b[4;65H\u001b[39;49m──────────────\u001b[5;2H* 805d0b3 \u001b[38;5;15;48;5;4m(dev)\u001b[39;49m WIP: docs(fs): add\u001b[5;37Hsome docum\u001b[5;48Hn\u001b[5;50Hation \u001b[5;59H \u001b[5;65H \u001b[6;4H9943a0f\u001b[6;13H\u001b[38;5;15;48;5;4mmain)(next)\u001b[39;49m \u001b[6;26Hhore(deps): update docker.\u001b[6;54H/rust\u001b[6;60Hdocker\u001b[6;67Htag\u001b[6;71Hto\u001b[6;74Hv1.81\u001b[7;2H \u001b[7;4H \u001b[7;12H \u001b[7;25H \u001b[7;38H \u001b[7;45H \u001b[7;60H \u001b[7;67H \u001b[7;71H \u001b[7;74H \u001b[8;3H\u001b[38;5;6;49mpodal\u001b[8;9H\u001b[39;49m(main\u001b[8;15H->\u001b[8;18Hnext\u001b[8;23H->\u001b[8;26Hdev)\u001b[8;31H\u001b[38;5;2;49mokay\u001b[8;36H\u001b[39;49m─────────────────────────────"]
[9.271446, "o", "──────────────\u001b[9;2H* 249b943 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m fix(deps): update rust crate scraper to 0.20 \u001b[10;2H \u001b[10;4H \u001b[10;12H \u001b[10;30H \u001b[10;41H \u001b[10;48H \u001b[10;53H \u001b[10;59H \u001b[10;67H \u001b[10;70H \u001b[11;3H\u001b[38;5;6;49mrefile-m4b\u001b[11;14H\u001b[39;49m(main\u001b[11;20H->\u001b[11;23Hnext\u001b[11;28H->\u001b[11;31Hdev)\u001b[11;36H\u001b[38;5;2;49mokay\u001b[11;41H\u001b[39;49m──────────────────────────────────────\u001b[12;2H* 7fba5fb \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m Support --version, --help and --directory cli arg\u001b[13;2H \u001b[13;4H \u001b[13;12H \u001b[13;30H \u001b[13;38H \u001b[13;49H \u001b[13;56H \u001b[13;60H \u001b[13;72H \u001b[13;76H \u001b[14;3H\u001b[38;5;6;49mrust-action\u001b[14;15H\u001b[39;49m(main\u001b[14;21H->\u001b[14;24Hnext\u001b[14;29H->\u001b[14;32Hdev)\u001b[14;37H\u001b[38;5;2;49mokay\u001b[14;42H\u001b[39;49m───────────────────────────────"]
[9.271582, "o", "──────\u001b[15;2H* de4785c \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m feat: ensure toolchains are up-to-date \u001b[16;2H \u001b[16;4H \u001b[16;12H \u001b[16;30H \u001b[16;36H \u001b[16;43H \u001b[16;54H \u001b[16;58H \u001b[17;3H\u001b[38;5;6;49mskip\u001b[17;8H\u001b[39;49m(main\u001b[17;14H->\u001b[17;17Hnext\u001b[17;22H->\u001b[17;25Hdev)\u001b[17;30H\u001b[38;5;2;49mokay\u001b[17;35H\u001b[39;49m────────────────────────────────────────────\u001b[18;2H* fc7fbc\u001b[18;11H \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[18;30H\u001b[39;49mchore(deps): update docker.io/rust docker tag to \u001b[19;2H \u001b[19;4H \u001b[19;12H \u001b[19;30H \u001b[19;43H \u001b[19;50H \u001b[19;65H \u001b[19;72H \u001b[19;76H \u001b[20;3H\u001b[38;5;6;49mtasyn\u001b[20;9H\u001b[39;49m(main\u001b[20;15H->\u001b[20;18Hnext\u001b[20;23H->\u001b[20;26Hdev)\u001b[20;31H\u001b[38;5;2;49mokay\u001b[20;36H\u001b[39;49m──────────────────────────────────────────"]
[9.271711, "o", "─\u001b[21;2H* 24fe845 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m chore(deps): update docker.io/postgres:16.4-alpin\u001b[22;2H \u001b[22;4H \u001b[22;12H \u001b[22;30H \u001b[22;43H \u001b[22;50H \u001b[23;3H\u001b[38;5;6;49mtest\u001b[23;8H\u001b[39;49m(main\u001b[23;14H->\u001b[23;17Hnext\u001b[23;22H->\u001b[23;25Hdev)\u001b[23;30H\u001b[38;5;2;49mokay\u001b[23;35H\u001b[39;49m────────────────────────────────────────────\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.291758, "o", "\u001b[2;2H \u001b[2;4H \u001b[2;12H \u001b[2;30H \u001b[2;37H \u001b[3;3H\u001b[38;5;15;48;5;1mkxio\u001b[3;8Hcommit is a Work-in-progress\u001b[3;37H\u001b[39;49m(main\u001b[3;43H->\u001b[3;46Hnext\u001b[3;51H->\u001b[3;54Hdev)\u001b[3;59H\u001b[38;5;1;49mALERT\u001b[3;65H\u001b[39;49m──────────────\u001b[4;2H* 805d0b3 \u001b[38;5;15;48;5;4m(dev)\u001b[39;49m WIP: docs(fs): add\u001b[4;37Hsome docum\u001b[4;48Hn\u001b[4;50Hation \u001b[4;59H \u001b[4;65H \u001b[5;4H9943a0f\u001b[5;13H\u001b[38;5;15;48;5;4mmain)(next)\u001b[39;49m \u001b[5;26Hhore(deps): update docker.\u001b[5;54H/rust\u001b[5;60Hdocker\u001b[5;67Htag\u001b[5;71Hto\u001b[5;74Hv1.81\u001b[6;2H \u001b[6;4H \u001b[6;12H \u001b[6;25H \u001b[6;38H \u001b[6;45H \u001b[6;60H \u001b[6;67H \u001b[6;71H \u001b[6;74H \u001b[7;3H\u001b[38;5;6;49mpodal\u001b[7;9H\u001b[39;49m(main\u001b[7;15H->\u001b[7;18Hnext\u001b[7;23H->\u001b[7;26Hdev)\u001b[7;31H\u001b[38;5;2;49mokay\u001b[7;36H\u001b[39;49m───────────────────────────────────────────\u001b[8;2H* 249b943 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m fix(deps): update rust "]
[9.292005, "o", "crate scraper to 0.20 \u001b[9;2H \u001b[9;4H \u001b[9;12H \u001b[9;30H \u001b[9;41H \u001b[9;48H \u001b[9;53H \u001b[9;59H \u001b[9;67H \u001b[9;70H \u001b[10;3H\u001b[38;5;6;49mrefile-m4b\u001b[10;14H\u001b[39;49m(main\u001b[10;20H->\u001b[10;23Hnext\u001b[10;28H->\u001b[10;31Hdev)\u001b[10;36H\u001b[38;5;2;49mokay\u001b[10;41H\u001b[39;49m──────────────────────────────────────\u001b[11;2H* 7fba5fb \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m Support --version, --help and --directory cli arg\u001b[12;2H \u001b[12;4H \u001b[12;12H \u001b[12;30H \u001b[12;38H \u001b[12;49H \u001b[12;56H \u001b[12;60H \u001b[12;72H \u001b[12;76H \u001b[13;3H\u001b[38;5;6;49mrust-action\u001b[13;15H\u001b[39;49m(main\u001b[13;21H->\u001b[13;24Hnext\u001b[13;29H->\u001b[13;32Hdev)\u001b[13;37H\u001b[38;5;2;49mokay\u001b[13;42H\u001b[39;49m─────────────────────────────────────\u001b[14;2H* de4785c \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m feat: ensure toolchains are up-to-date \u001b[15;2H \u001b"]
[9.292207, "o", "[15;4H \u001b[15;12H \u001b[15;30H \u001b[15;36H \u001b[15;43H \u001b[15;54H \u001b[15;58H \u001b[16;3H\u001b[38;5;6;49mskip\u001b[16;8H\u001b[39;49m(main\u001b[16;14H->\u001b[16;17Hnext\u001b[16;22H->\u001b[16;25Hdev)\u001b[16;30H\u001b[38;5;2;49mokay\u001b[16;35H\u001b[39;49m────────────────────────────────────────────\u001b[17;2H* fc7fbc\u001b[17;11H \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[17;30H\u001b[39;49mchore(deps): update docker.io/rust docker tag to \u001b[18;2H \u001b[18;4H \u001b[18;12H \u001b[18;30H \u001b[18;43H \u001b[18;50H \u001b[18;65H \u001b[18;72H \u001b[18;76H \u001b[19;3H\u001b[38;5;6;49mtasyn\u001b[19;9H\u001b[39;49m(main\u001b[19;15H->\u001b[19;18Hnext\u001b[19;23H->\u001b[19;26Hdev)\u001b[19;31H\u001b[38;5;2;49mokay\u001b[19;36H\u001b[39;49m───────────────────────────────────────────\u001b[20;2H* 24fe845 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m chore(deps): update docker.io/postgres:16.4-alpin\u001b[21;2H \u001b[21;4H \u001b[21"]
[9.292245, "o", ";12H \u001b[21;30H \u001b[21;43H \u001b[21;50H \u001b[22;3H\u001b[38;5;6;49mtest\u001b[22;8H\u001b[39;49m(main\u001b[22;14H->\u001b[22;17Hnext\u001b[22;22H->\u001b[22;25Hdev)\u001b[22;30H\u001b[38;5;2;49mokay\u001b[22;35H\u001b[39;49m────────────────────────────────────────────\u001b[23;2H* b7340df \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[23;30H\u001b[39;49mchore: update 6 \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.314279, "o", "\u001b[2;3H\u001b[38;5;15;48;5;1mkxio\u001b[2;8Hcommit is a Work-in-progress\u001b[2;37H\u001b[39;49m(main\u001b[2;43H->\u001b[2;46Hnext\u001b[2;51H->\u001b[2;54Hdev)\u001b[2;59H\u001b[38;5;1;49mALERT\u001b[2;65H\u001b[39;49m──────────────\u001b[3;2H* 805d0b3 \u001b[38;5;15;48;5;4m(dev)\u001b[39;49m WIP: docs(fs): add\u001b[3;37Hsome docum\u001b[3;48Hn\u001b[3;50Hation \u001b[3;59H \u001b[3;65H \u001b[4;4H9943a0f\u001b[4;13H\u001b[38;5;15;48;5;4mmain)(next)\u001b[39;49m \u001b[4;26Hhore(deps): update docker.\u001b[4;54H/rust\u001b[4;60Hdocker\u001b[4;67Htag\u001b[4;71Hto\u001b[4;74Hv1.81║\u001b[5;2H \u001b[5;4H \u001b[5;12H \u001b[5;25H \u001b[5;38H \u001b[5;45H \u001b[5;60H \u001b[5;67H \u001b[5;71H \u001b[5;74H \u001b[6;3H\u001b[38;5;6;49mpodal\u001b[6;9H\u001b[39;49m(main\u001b[6;15H->\u001b[6;18Hnext\u001b[6;23H->\u001b[6;26Hdev)\u001b[6;31H\u001b[38;5;2;49mokay\u001b[6;36H\u001b[39;49m───────────────────────────────────────────\u001b[7;2H* 249b943 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m fix(deps): update rust crate scraper to 0.20 \u001b[8;2H \u001b[8;4H \u001b[8;12H "]
[9.314894, "o", " \u001b[8;30H \u001b[8;41H \u001b[8;48H \u001b[8;53H \u001b[8;59H \u001b[8;67H \u001b[8;70H \u001b[9;3H\u001b[38;5;6;49mrefile-m4b\u001b[9;14H\u001b[39;49m(main\u001b[9;20H->\u001b[9;23Hnext\u001b[9;28H->\u001b[9;31Hdev)\u001b[9;36H\u001b[38;5;2;49mokay\u001b[9;41H\u001b[39;49m──────────────────────────────────────\u001b[10;2H* 7fba5fb \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m Support --version, --help and --directory cli arg\u001b[11;2H \u001b[11;4H \u001b[11;12H \u001b[11;30H \u001b[11;38H \u001b[11;49H \u001b[11;56H \u001b[11;60H \u001b[11;72H \u001b[11;76H \u001b[12;3H\u001b[38;5;6;49mrust-action\u001b[12;15H\u001b[39;49m(main\u001b[12;21H->\u001b[12;24Hnext\u001b[12;29H->\u001b[12;32Hdev)\u001b[12;37H\u001b[38;5;2;49mokay\u001b[12;42H\u001b[39;49m─────────────────────────────────────\u001b[13;2H* de4785c \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m feat: ensure toolchains are up-to-date █\u001b[14;2H \u001b[14;4H \u001b[14;12H \u001b[14;30H \u001b[14;36H \u001b[14;43H"]
[9.315054, "o", " \u001b[14;54H \u001b[14;58H \u001b[15;3H\u001b[38;5;6;49mskip\u001b[15;8H\u001b[39;49m(main\u001b[15;14H->\u001b[15;17Hnext\u001b[15;22H->\u001b[15;25Hdev)\u001b[15;30H\u001b[38;5;2;49mokay\u001b[15;35H\u001b[39;49m────────────────────────────────────────────\u001b[16;2H* fc7fbc\u001b[16;11H \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[16;30H\u001b[39;49mchore(deps): update docker.io/rust docker tag to \u001b[17;2H \u001b[17;4H \u001b[17;12H \u001b[17;30H \u001b[17;43H \u001b[17;50H \u001b[17;65H \u001b[17;72H \u001b[17;76H \u001b[18;3H\u001b[38;5;6;49mtasyn\u001b[18;9H\u001b[39;49m(main\u001b[18;15H->\u001b[18;18Hnext\u001b[18;23H->\u001b[18;26Hdev)\u001b[18;31H\u001b[38;5;2;49mokay\u001b[18;36H\u001b[39;49m───────────────────────────────────────────\u001b[19;2H* 24fe845 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m chore(deps): update docker.io/postgres:16.4-alpin\u001b[20;2H \u001b[20;4H \u001b[20;12H \u001b[20;30H \u001b[20;43H \u001b[20;50H "]
[9.315195, "o", " \u001b[21;3H\u001b[38;5;6;49mtest\u001b[21;8H\u001b[39;49m(main\u001b[21;14H->\u001b[21;17Hnext\u001b[21;22H->\u001b[21;25Hdev)\u001b[21;30H\u001b[38;5;2;49mokay\u001b[21;35H\u001b[39;49m────────────────────────────────────────────\u001b[22;2H* b7340df \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[22;30H\u001b[39;49mchore: update 6 \u001b[23;2H \u001b[23;4H \u001b[23;12H \u001b[23;30H \u001b[23;37H \u001b[23;44H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.334731, "o", "\u001b[2;2H* 805d0b3 \u001b[38;5;15;48;5;4m(dev)\u001b[39;49m WIP: docs(fs): add\u001b[2;37Hsome docum\u001b[2;48Hn\u001b[2;50Hation \u001b[2;59H \u001b[2;65H \u001b[3;4H9943a0f\u001b[3;13H\u001b[38;5;15;48;5;4mmain)(next)\u001b[39;49m \u001b[3;26Hhore(deps): update docker.\u001b[3;54H/rust\u001b[3;60Hdocker\u001b[3;67Htag\u001b[3;71Hto\u001b[3;74Hv1.81\u001b[4;2H \u001b[4;4H \u001b[4;12H \u001b[4;25H \u001b[4;38H \u001b[4;45H \u001b[4;60H \u001b[4;67H \u001b[4;71H \u001b[4;74H \u001b[5;3H\u001b[38;5;6;49mpodal\u001b[5;9H\u001b[39;49m(main\u001b[5;15H->\u001b[5;18Hnext\u001b[5;23H->\u001b[5;26Hdev)\u001b[5;31H\u001b[38;5;2;49mokay\u001b[5;36H\u001b[39;49m───────────────────────────────────────────\u001b[6;2H* 249b943 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m fix(deps): update rust crate scraper to 0.20 \u001b[7;2H \u001b[7;4H \u001b[7;12H \u001b[7;30H \u001b[7;41H \u001b[7;48H \u001b[7;53H \u001b[7;59H \u001b[7;67H \u001b[7;70H \u001b[8;3H\u001b[38;5;6;49mrefile-m4b\u001b[8;14H\u001b[39;49m(main\u001b[8;20H->\u001b[8;23Hnext\u001b[8;28H->\u001b[8;31Hdev)\u001b[8;36H\u001b[38;5;2;49mokay\u001b[8;4"]
[9.334863, "o", "1H\u001b[39;49m──────────────────────────────────────\u001b[9;2H* 7fba5fb \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m Support --version, --help and --directory cli arg\u001b[10;2H \u001b[10;4H \u001b[10;12H \u001b[10;30H \u001b[10;38H \u001b[10;49H \u001b[10;56H \u001b[10;60H \u001b[10;72H \u001b[10;76H \u001b[11;3H\u001b[38;5;6;49mrust-action\u001b[11;15H\u001b[39;49m(main\u001b[11;21H->\u001b[11;24Hnext\u001b[11;29H->\u001b[11;32Hdev)\u001b[11;37H\u001b[38;5;2;49mokay\u001b[11;42H\u001b[39;49m─────────────────────────────────────\u001b[12;2H* de4785c \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m feat: ensure toolchains are up-to-date \u001b[13;2H \u001b[13;4H \u001b[13;12H \u001b[13;30H \u001b[13;36H \u001b[13;43H \u001b[13;54H \u001b[13;58H \u001b[14;3H\u001b[38;5;6;49mskip\u001b[14;8H\u001b[39;49m(main\u001b[14;14H->\u001b[14;17Hnext\u001b[14;22H->\u001b[14;25Hdev)\u001b[14;30H\u001b[38;5;2;49mokay\u001b[14;35H\u001b[39;49m──────────────"]
[9.334916, "o", "──────────────────────────────\u001b[15;2H* fc7fbc\u001b[15;11H \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[15;30H\u001b[39;49mchore(deps): update docker.io/rust docker tag to \u001b[16;2H \u001b[16;4H \u001b[16;12H \u001b[16;30H \u001b[16;43H \u001b[16;50H \u001b[16;65H \u001b[16;72H \u001b[16;76H \u001b[17;3H\u001b[38;5;6;49mtasyn\u001b[17;9H\u001b[39;49m(main\u001b[17;15H->\u001b[17;18Hnext\u001b[17;23H->\u001b[17;26Hdev)\u001b[17;31H\u001b[38;5;2;49mokay\u001b[17;36H\u001b[39;49m───────────────────────────────────────────\u001b[18;2H* 24fe845 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m chore(deps): update docker.io/postgres:16.4-alpin\u001b[19;2H \u001b[19;4H \u001b[19;12H \u001b[19;30H \u001b[19;43H \u001b[19;50H \u001b[20;3H\u001b[38;5;6;49mtest\u001b[20;8H\u001b[39;49m(main\u001b[20;14H->\u001b[20;17Hnext\u001b[20;22H->\u001b[20;25Hdev)\u001b[20;30H\u001b[38;5;2;49mokay\u001b[20;35H\u001b[39;49m─────────────────────"]
[9.335083, "o", "───────────────────────\u001b[21;2H* b7340df \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[21;30H\u001b[39;49mchore: update 6 \u001b[22;2H \u001b[22;4H \u001b[22;12H \u001b[22;30H \u001b[22;37H \u001b[22;44H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.355977, "o", "\u001b[2;4H9943a0f\u001b[2;13H\u001b[38;5;15;48;5;4mmain)(next)\u001b[39;49m \u001b[2;26Hhore(deps): update docker.\u001b[2;54H/rust\u001b[2;60Hdocker\u001b[2;67Htag\u001b[2;71Hto\u001b[2;74Hv1.81\u001b[3;2H \u001b[3;4H \u001b[3;12H \u001b[3;25H \u001b[3;38H \u001b[3;45H \u001b[3;60H \u001b[3;67H \u001b[3;71H \u001b[3;74H \u001b[4;3H\u001b[38;5;6;49mpodal\u001b[4;9H\u001b[39;49m(main\u001b[4;15H->\u001b[4;18Hnext\u001b[4;23H->\u001b[4;26Hdev)\u001b[4;31H\u001b[38;5;2;49mokay\u001b[4;36H\u001b[39;49m───────────────────────────────────────────\u001b[5;2H* 249b943 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m fix(deps): update rust crate scraper to 0.20 ║\u001b[6;2H \u001b[6;4H \u001b[6;12H \u001b[6;30H \u001b[6;41H \u001b[6;48H \u001b[6;53H \u001b[6;59H \u001b[6;67H \u001b[6;70H \u001b[7;3H\u001b[38;5;6;49mrefile-m4b\u001b[7;14H\u001b[39;49m(main\u001b[7;20H->\u001b[7;23Hnext\u001b[7;28H->\u001b[7;31Hdev)\u001b[7;36H\u001b[38;5;2;49mokay\u001b[7;41H\u001b[39;49m──────────────────────────────────────\u001b[8;2H* 7fb"]
[9.357512, "o", "a5fb \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m Support --version, --help and --directory cli arg\u001b[9;2H \u001b[9;4H \u001b[9;12H \u001b[9;30H \u001b[9;38H \u001b[9;49H \u001b[9;56H \u001b[9;60H \u001b[9;72H \u001b[9;76H \u001b[10;3H\u001b[38;5;6;49mrust-action\u001b[10;15H\u001b[39;49m(main\u001b[10;21H->\u001b[10;24Hnext\u001b[10;29H->\u001b[10;32Hdev)\u001b[10;37H\u001b[38;5;2;49mokay\u001b[10;42H\u001b[39;49m─────────────────────────────────────\u001b[11;2H* de4785c \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m feat: ensure toolchains are up-to-date \u001b[12;2H \u001b[12;4H \u001b[12;12H \u001b[12;30H \u001b[12;36H \u001b[12;43H \u001b[12;54H \u001b[12;58H \u001b[13;3H\u001b[38;5;6;49mskip\u001b[13;8H\u001b[39;49m(main\u001b[13;14H->\u001b[13;17Hnext\u001b[13;22H->\u001b[13;25Hdev)\u001b[13;30H\u001b[38;5;2;49mokay\u001b[13;35H\u001b[39;49m────────────────────────────────────────────\u001b[14;2H* fc7fbc\u001b[14;11H \u001b[38;5;15;48;5;4m(dev)(main)(nex"]
[9.358399, "o", "t)\u001b[14;30H\u001b[39;49mchore(deps): update docker.io/rust docker tag to █\u001b[15;2H \u001b[15;4H \u001b[15;12H \u001b[15;30H \u001b[15;43H \u001b[15;50H \u001b[15;65H \u001b[15;72H \u001b[15;76H \u001b[16;3H\u001b[38;5;6;49mtasyn\u001b[16;9H\u001b[39;49m(main\u001b[16;15H->\u001b[16;18Hnext\u001b[16;23H->\u001b[16;26Hdev)\u001b[16;31H\u001b[38;5;2;49mokay\u001b[16;36H\u001b[39;49m───────────────────────────────────────────\u001b[17;2H* 24fe845 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m chore(deps): update docker.io/postgres:16.4-alpin\u001b[18;2H \u001b[18;4H \u001b[18;12H \u001b[18;30H \u001b[18;43H \u001b[18;50H \u001b[19;3H\u001b[38;5;6;49mtest\u001b[19;8H\u001b[39;49m(main\u001b[19;14H->\u001b[19;17Hnext\u001b[19;22H->\u001b[19;25Hdev)\u001b[19;30H\u001b[38;5;2;49mokay\u001b[19;35H\u001b[39;49m────────────────────────────────────────────\u001b[20;2H* b7340df \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[20;30H\u001b[39;49mchore:"]
[9.358584, "o", " update 6 \u001b[21;2H \u001b[21;4H \u001b[21;12H \u001b[21;30H \u001b[21;37H \u001b[21;44H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.392711, "o", "\u001b[2;2H \u001b[2;4H \u001b[2;12H \u001b[2;25H \u001b[2;38H \u001b[2;45H \u001b[2;60H \u001b[2;67H \u001b[2;71H \u001b[2;74H \u001b[3;3H\u001b[38;5;6;49mpodal\u001b[3;9H\u001b[39;49m(main\u001b[3;15H->\u001b[3;18Hnext\u001b[3;23H->\u001b[3;26Hdev)\u001b[3;31H\u001b[38;5;2;49mokay\u001b[3;36H\u001b[39;49m───────────────────────────────────────────\u001b[4;2H* 249b943 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m fix(deps): update rust crate scraper to 0.20 \u001b[5;2H \u001b[5;4H \u001b[5;12H \u001b[5;30H \u001b[5;41H \u001b[5;48H \u001b[5;53H \u001b[5;59H \u001b[5;67H \u001b[5;70H \u001b[6;3H\u001b[38;5;6;49mrefile-m4b\u001b[6;14H\u001b[39;49m(main\u001b[6;20H->\u001b[6;23Hnext\u001b[6;28H->\u001b[6;31Hdev)\u001b[6;36H\u001b[38;5;2;49mokay\u001b[6;41H\u001b[39;49m──────────────────────────────────────\u001b[7;2H* 7fba5fb \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m Support --version, --help and --directory cli arg\u001b[8;2H \u001b[8;4H \u001b[8;12H \u001b[8;30H "]
[9.392818, "o", " \u001b[8;38H \u001b[8;49H \u001b[8;56H \u001b[8;60H \u001b[8;72H \u001b[8;76H \u001b[9;3H\u001b[38;5;6;49mrust-action\u001b[9;15H\u001b[39;49m(main\u001b[9;21H->\u001b[9;24Hnext\u001b[9;29H->\u001b[9;32Hdev)\u001b[9;37H\u001b[38;5;2;49mokay\u001b[9;42H\u001b[39;49m─────────────────────────────────────\u001b[10;2H* de4785c \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m feat: ensure toolchains are up-to-date \u001b[11;2H \u001b[11;4H \u001b[11;12H \u001b[11;30H \u001b[11;36H \u001b[11;43H \u001b[11;54H \u001b[11;58H \u001b[12;3H\u001b[38;5;6;49mskip\u001b[12;8H\u001b[39;49m(main\u001b[12;14H->\u001b[12;17Hnext\u001b[12;22H->\u001b[12;25Hdev)\u001b[12;30H\u001b[38;5;2;49mokay\u001b[12;35H\u001b[39;49m────────────────────────────────────────────\u001b[13;2H* fc7fbc\u001b[13;11H \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[13;30H\u001b[39;49mchore(deps): update docker.io/rust docker tag to \u001b[14;2H \u001b[14;4H \u001b[14;12H \u001b[14;30H \u001b[14;43H \u001b[14;50H "]
[9.392892, "o", " \u001b[14;65H \u001b[14;72H \u001b[14;76H \u001b[15;3H\u001b[38;5;6;49mtasyn\u001b[15;9H\u001b[39;49m(main\u001b[15;15H->\u001b[15;18Hnext\u001b[15;23H->\u001b[15;26Hdev)\u001b[15;31H\u001b[38;5;2;49mokay\u001b[15;36H\u001b[39;49m───────────────────────────────────────────\u001b[16;2H* 24fe845 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m chore(deps): update docker.io/postgres:16.4-alpin\u001b[17;2H \u001b[17;4H \u001b[17;12H \u001b[17;30H \u001b[17;43H \u001b[17;50H \u001b[18;3H\u001b[38;5;6;49mtest\u001b[18;8H\u001b[39;49m(main\u001b[18;14H->\u001b[18;17Hnext\u001b[18;22H->\u001b[18;25Hdev)\u001b[18;30H\u001b[38;5;2;49mokay\u001b[18;35H\u001b[39;49m────────────────────────────────────────────\u001b[19;2H* b7340df \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[19;30H\u001b[39;49mchore: update 6 \u001b[20;2H \u001b[20;4H \u001b[20;12H \u001b[20;30H \u001b[20;37H \u001b[20;44H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.413689, "o", "\u001b[2;3H\u001b[38;5;6;49mpodal\u001b[2;9H\u001b[39;49m(main\u001b[2;15H->\u001b[2;18Hnext\u001b[2;23H->\u001b[2;26Hdev)\u001b[2;31H\u001b[38;5;2;49mokay\u001b[2;36H\u001b[39;49m───────────────────────────────────────────\u001b[3;2H* 249b943 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m fix(deps): update rust crate scraper to 0.20 \u001b[4;2H \u001b[4;4H \u001b[4;12H \u001b[4;30H \u001b[4;41H \u001b[4;48H \u001b[4;53H \u001b[4;59H \u001b[4;67H \u001b[4;70H \u001b[5;3H\u001b[38;5;6;49mrefile-m4b\u001b[5;14H\u001b[39;49m(main\u001b[5;20H->\u001b[5;23Hnext\u001b[5;28H->\u001b[5;31Hdev)\u001b[5;36H\u001b[38;5;2;49mokay\u001b[5;41H\u001b[39;49m──────────────────────────────────────\u001b[6;2H* 7fba5fb \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m Support --version, --help and --directory cli arg\u001b[7;2H \u001b[7;4H \u001b[7;12H \u001b[7;30H \u001b[7;38H \u001b[7;49H \u001b[7;56H \u001b[7;60H \u001b[7;72H \u001b[7;76H \u001b[8;3H\u001b[38;5;6;49mrust-action\u001b[8;15H\u001b[39;49m(main\u001b[8"]
[9.413775, "o", ";21H->\u001b[8;24Hnext\u001b[8;29H->\u001b[8;32Hdev)\u001b[8;37H\u001b[38;5;2;49mokay\u001b[8;42H\u001b[39;49m─────────────────────────────────────\u001b[9;2H* de4785c \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m feat: ensure toolchains are up-to-date \u001b[10;2H \u001b[10;4H \u001b[10;12H \u001b[10;30H \u001b[10;36H \u001b[10;43H \u001b[10;54H \u001b[10;58H \u001b[11;3H\u001b[38;5;6;49mskip\u001b[11;8H\u001b[39;49m(main\u001b[11;14H->\u001b[11;17Hnext\u001b[11;22H->\u001b[11;25Hdev)\u001b[11;30H\u001b[38;5;2;49mokay\u001b[11;35H\u001b[39;49m────────────────────────────────────────────\u001b[12;2H* fc7fbc\u001b[12;11H \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[12;30H\u001b[39;49mchore(deps): update docker.io/rust docker tag to \u001b[13;2H \u001b[13;4H \u001b[13;12H \u001b[13;30H \u001b[13;43H \u001b[13;50H \u001b[13;65H \u001b[13;72H \u001b[13;76H \u001b[14;3H\u001b[38;5;6;49mtasyn\u001b[14;9H\u001b[39;49m(main\u001b[14;15H->\u001b[14;18Hnext\u001b[14;23H->\u001b[14;26Hdev)\u001b"]
[9.413866, "o", "[14;31H\u001b[38;5;2;49mokay\u001b[14;36H\u001b[39;49m───────────────────────────────────────────\u001b[15;2H* 24fe845 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m chore(deps): update docker.io/postgres:16.4-alpin█\u001b[16;2H \u001b[16;4H \u001b[16;12H \u001b[16;30H \u001b[16;43H \u001b[16;50H \u001b[17;3H\u001b[38;5;6;49mtest\u001b[17;8H\u001b[39;49m(main\u001b[17;14H->\u001b[17;17Hnext\u001b[17;22H->\u001b[17;25Hdev)\u001b[17;30H\u001b[38;5;2;49mokay\u001b[17;35H\u001b[39;49m────────────────────────────────────────────\u001b[18;2H* b7340df \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[18;30H\u001b[39;49mchore: update 6 \u001b[19;2H \u001b[19;4H \u001b[19;12H \u001b[19;30H \u001b[19;37H \u001b[19;44H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.434833, "o", "\u001b[2;2H* 249b943 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m fix(deps): update rust crate scraper to 0.20 \u001b[3;2H \u001b[3;4H \u001b[3;12H \u001b[3;30H \u001b[3;41H \u001b[3;48H \u001b[3;53H \u001b[3;59H \u001b[3;67H \u001b[3;70H \u001b[4;3H\u001b[38;5;6;49mrefile-m4b\u001b[4;14H\u001b[39;49m(main\u001b[4;20H->\u001b[4;23Hnext\u001b[4;28H->\u001b[4;31Hdev)\u001b[4;36H\u001b[38;5;2;49mokay\u001b[4;41H\u001b[39;49m──────────────────────────────────────\u001b[5;2H* 7fba5fb \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m Support --version, --help and --directory cli arg\u001b[6;2H \u001b[6;4H \u001b[6;12H \u001b[6;30H \u001b[6;38H \u001b[6;49H \u001b[6;56H \u001b[6;60H \u001b[6;72H \u001b[6;76H ║\u001b[7;3H\u001b[38;5;6;49mrust-action\u001b[7;15H\u001b[39;49m(main\u001b[7;21H->\u001b[7;24Hnext\u001b[7;29H->\u001b[7;32Hdev)\u001b[7;37H\u001b[38;5;2;49mokay\u001b[7;42H\u001b[39;49m─────────────────────────────────────\u001b[8;2H* de4785c \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m f"]
[9.435142, "o", "eat: ensure toolchains are up-to-date \u001b[9;2H \u001b[9;4H \u001b[9;12H \u001b[9;30H \u001b[9;36H \u001b[9;43H \u001b[9;54H \u001b[9;58H \u001b[10;3H\u001b[38;5;6;49mskip\u001b[10;8H\u001b[39;49m(main\u001b[10;14H->\u001b[10;17Hnext\u001b[10;22H->\u001b[10;25Hdev)\u001b[10;30H\u001b[38;5;2;49mokay\u001b[10;35H\u001b[39;49m────────────────────────────────────────────\u001b[11;2H* fc7fbc\u001b[11;11H \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[11;30H\u001b[39;49mchore(deps): update docker.io/rust docker tag to \u001b[12;2H \u001b[12;4H \u001b[12;12H \u001b[12;30H \u001b[12;43H \u001b[12;50H \u001b[12;65H \u001b[12;72H \u001b[12;76H \u001b[13;3H\u001b[38;5;6;49mtasyn\u001b[13;9H\u001b[39;49m(main\u001b[13;15H->\u001b[13;18Hnext\u001b[13;23H->\u001b[13;26Hdev)\u001b[13;31H\u001b[38;5;2;49mokay\u001b[13;36H\u001b[39;49m───────────────────────────────────────────\u001b[14;2H* 24fe845 \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[39;49m chore(deps): update docker"]
[9.435248, "o", ".io/postgres:16.4-alpin\u001b[15;2H \u001b[15;4H \u001b[15;12H \u001b[15;30H \u001b[15;43H \u001b[15;50H \u001b[16;3H\u001b[38;5;6;49mtest\u001b[16;8H\u001b[39;49m(main\u001b[16;14H->\u001b[16;17Hnext\u001b[16;22H->\u001b[16;25Hdev)\u001b[16;30H\u001b[38;5;2;49mokay\u001b[16;35H\u001b[39;49m────────────────────────────────────────────\u001b[17;2H* b7340df \u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[17;30H\u001b[39;49mchore: update 6 \u001b[18;2H \u001b[18;4H \u001b[18;12H \u001b[18;30H \u001b[18;37H \u001b[18;44H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.472802, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.510706, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.547102, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.586478, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.621846, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.656939, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.694522, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.730343, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.768279, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.804285, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.844258, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.881454, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.920047, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.957121, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[9.995542, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.03548, "o", "\u001b[24;43H💚\u001b[24;45H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.072844, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.110417, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.146604, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.183643, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.223757, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.259221, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.298185, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.335671, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.377657, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.413226, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.449543, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.485979, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.530581, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.568398, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.588452, "o", "\u001b[2;2H \u001b[38;5;6;49mpodal\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────\u001b[3;2H*\u001b[3;4H249b943\u001b[3;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[3;30H\u001b[39;49mfix(deps):\u001b[3;41Hupdate\u001b[3;48Hrust\u001b[3;53Hcrate\u001b[3;59Hscraper\u001b[3;67Hto\u001b[3;70H0.20\u001b[4;3H \u001b[4;14H \u001b[4;20H \u001b[4;23H \u001b[4;28H \u001b[4;31H \u001b[4;36H \u001b[4;41H \u001b[5;2H \u001b[38;5;6;49mrefile-m4b\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ──────────────────────────────────────\u001b[6;2H*\u001b[6;4H7fba5fb\u001b[6;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[6;30H\u001b[39;49mSupport\u001b[6;38H--version,\u001b[6;49H--help\u001b[6;56Hand\u001b[6;60H--directory\u001b[6;72Hcli\u001b[6;76Harg█\u001b[7;3H \u001b[7;15H \u001b[7;21H \u001b[7;24H \u001b[7;29H \u001b[7;32H \u001b[7;37H \u001b[7;42H \u001b[8;2H \u001b[38;5;6;49mrust-action\u001b[39;49m (main -> "]
[10.588626, "o", "next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ─────────────────────────────────────\u001b[9;2H*\u001b[9;4Hde4785c\u001b[9;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[9;30H\u001b[39;49mfeat:\u001b[9;36Hensure\u001b[9;43Htoolchains\u001b[9;54Hare\u001b[9;58Hup-to-date\u001b[10;3H \u001b[10;8H \u001b[10;14H \u001b[10;17H \u001b[10;22H \u001b[10;25H \u001b[10;30H \u001b[10;35H \u001b[11;2H \u001b[38;5;6;49mskip\u001b[39;49m (m\u001b[11;11Hin -> next -> dev)\u001b[11;30H\u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────────\u001b[12;2H*\u001b[12;4Hfc7fbca\u001b[12;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[12;30H\u001b[39;49mchore(deps):\u001b[12;43Hupdate\u001b[12;50Hdocker.io/rust\u001b[12;65Hdocker\u001b[12;72Htag\u001b[12;76Hto\u001b[13;3H \u001b[13;9H \u001b[13;15H \u001b[13;18H \u001b[13;23H \u001b[13;26H \u001b[13;31H \u001b[13;36H \u001b[14;2H \u001b[38;5;6;49mtasyn\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ─"]
[10.588685, "o", "──────────────────────────────────────────\u001b[15;2H*\u001b[15;4H24fe845\u001b[15;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[15;30H\u001b[39;49mchore(deps):\u001b[15;43Hupdate\u001b[15;50Hdocker.io/postgres:16.4-alpin\u001b[16;3H \u001b[16;8H \u001b[16;14H \u001b[16;17H \u001b[16;22H \u001b[16;25H \u001b[16;30H \u001b[16;35H \u001b[17;2H \u001b[38;5;6;49mtest\u001b[39;49m (main -> next -> dev)\u001b[17;30H\u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────────\u001b[18;2H*\u001b[18;4Hb7340df\u001b[18;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[18;30H\u001b[39;49mchore:\u001b[18;37Hupdate\u001b[18;44H6\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.607079, "o", "\u001b[2;3H \u001b[2;9H \u001b[2;15H \u001b[2;18H \u001b[2;23H \u001b[2;26H \u001b[2;31H \u001b[2;36H \u001b[3;2H \u001b[38;5;6;49mpodal\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────\u001b[4;2H*\u001b[4;4H249b943\u001b[4;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[4;30H\u001b[39;49mfix(deps):\u001b[4;41Hupdate\u001b[4;48Hrust\u001b[4;53Hcrate\u001b[4;59Hscraper\u001b[4;67Hto\u001b[4;70H0.20\u001b[5;3H \u001b[5;14H \u001b[5;20H \u001b[5;23H \u001b[5;28H \u001b[5;31H \u001b[5;36H \u001b[5;41H \u001b[6;2H \u001b[38;5;6;49mrefile-m4b\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ──────────────────────────────────────\u001b[7;2H*\u001b[7;4H7fba5fb\u001b[7;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[7;30H\u001b[39;49mSupport\u001b[7;38H--version,\u001b[7;49H--help\u001b[7;56Hand\u001b[7;60H--directory\u001b[7;72Hcli\u001b[7;76Harg\u001b[8;3H \u001b[8;15H \u001b[8;21H \u001b[8;24H \u001b[8"]
[10.607191, "o", ";29H \u001b[8;32H \u001b[8;37H \u001b[8;42H \u001b[9;2H \u001b[38;5;6;49mrust-action\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ─────────────────────────────────────\u001b[10;2H*\u001b[10;4Hde4785c\u001b[10;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[10;30H\u001b[39;49mfeat:\u001b[10;36Hensure\u001b[10;43Htoolchains\u001b[10;54Hare\u001b[10;58Hup-to-date\u001b[11;3H \u001b[11;8H \u001b[11;14H \u001b[11;17H \u001b[11;22H \u001b[11;25H \u001b[11;30H \u001b[11;35H \u001b[12;2H \u001b[38;5;6;49mskip\u001b[39;49m (m\u001b[12;11Hin -> next -> dev)\u001b[12;30H\u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────────\u001b[13;2H*\u001b[13;4Hfc7fbca\u001b[13;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[13;30H\u001b[39;49mchore(deps):\u001b[13;43Hupdate\u001b[13;50Hdocker.io/rust\u001b[13;65Hdocker\u001b[13;72Htag\u001b[13;76Hto\u001b[14;3H \u001b[14;9H \u001b[14;15H \u001b[14;18H \u001b[14;23H \u001b[14;26H \u001b[14;31H \u001b[14;36H "]
[10.607383, "o", " \u001b[15;2H \u001b[38;5;6;49mtasyn\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────║\u001b[16;2H*\u001b[16;4H24fe845\u001b[16;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[16;30H\u001b[39;49mchore(deps):\u001b[16;43Hupdate\u001b[16;50Hdocker.io/postgres:16.4-alpin\u001b[17;3H \u001b[17;8H \u001b[17;14H \u001b[17;17H \u001b[17;22H \u001b[17;25H \u001b[17;30H \u001b[17;35H \u001b[18;2H \u001b[38;5;6;49mtest\u001b[39;49m (main -> next -> dev)\u001b[18;30H\u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────────\u001b[19;2H*\u001b[19;4Hb7340df\u001b[19;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[19;30H\u001b[39;49mchore:\u001b[19;37Hupdate\u001b[19;44H6\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.625804, "o", "\u001b[2;2H*\u001b[2;4H9943a0f\u001b[2;12H\u001b[38;5;15;48;5;4m(main)(next)\u001b[2;25H\u001b[39;49mchore(deps):\u001b[2;38Hupdate\u001b[2;45Hdocker.io/rust\u001b[2;60Hdocker\u001b[2;67Htag\u001b[2;71Hto\u001b[2;74Hv1.81\u001b[3;3H \u001b[3;9H \u001b[3;15H \u001b[3;18H \u001b[3;23H \u001b[3;26H \u001b[3;31H \u001b[3;36H \u001b[4;2H \u001b[38;5;6;49mpodal\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────\u001b[5;2H*\u001b[5;4H249b943\u001b[5;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[5;30H\u001b[39;49mfix(deps):\u001b[5;41Hupdate\u001b[5;48Hrust\u001b[5;53Hcrate\u001b[5;59Hscraper\u001b[5;67Hto\u001b[5;70H0.20\u001b[6;3H \u001b[6;14H \u001b[6;20H \u001b[6;23H \u001b[6;28H \u001b[6;31H \u001b[6;36H \u001b[6;41H \u001b[7;2H \u001b[38;5;6;49mrefile-m4b\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ──────────────────────────────────────\u001b[8;2H*\u001b[8;4H7fba5fb\u001b[8;12H\u001b[38;5;15;48;5;4m(dev)(ma"]
[10.625948, "o", "in)(next)\u001b[8;30H\u001b[39;49mSupport\u001b[8;38H--version,\u001b[8;49H--help\u001b[8;56Hand\u001b[8;60H--directory\u001b[8;72Hcli\u001b[8;76Harg\u001b[9;3H \u001b[9;15H \u001b[9;21H \u001b[9;24H \u001b[9;29H \u001b[9;32H \u001b[9;37H \u001b[9;42H \u001b[10;2H \u001b[38;5;6;49mrust-action\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ─────────────────────────────────────\u001b[11;2H*\u001b[11;4Hde4785c\u001b[11;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[11;30H\u001b[39;49mfeat:\u001b[11;36Hensure\u001b[11;43Htoolchains\u001b[11;54Hare\u001b[11;58Hup-to-date\u001b[12;3H \u001b[12;8H \u001b[12;14H \u001b[12;17H \u001b[12;22H \u001b[12;25H \u001b[12;30H \u001b[12;35H \u001b[13;2H \u001b[38;5;6;49mskip\u001b[39;49m (m\u001b[13;11Hin -> next -> dev)\u001b[13;30H\u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────────\u001b[14;2H*\u001b[14;4Hfc7fbca\u001b[14;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[14;30H\u001b[39;49mchore(deps"]
[10.626011, "o", "):\u001b[14;43Hupdate\u001b[14;50Hdocker.io/rust\u001b[14;65Hdocker\u001b[14;72Htag\u001b[14;76Hto\u001b[15;3H \u001b[15;9H \u001b[15;15H \u001b[15;18H \u001b[15;23H \u001b[15;26H \u001b[15;31H \u001b[15;36H \u001b[16;2H \u001b[38;5;6;49mtasyn\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────\u001b[17;2H*\u001b[17;4H24fe845\u001b[17;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[17;30H\u001b[39;49mchore(deps):\u001b[17;43Hupdate\u001b[17;50Hdocker.io/postgres:16.4-alpin\u001b[18;3H \u001b[18;8H \u001b[18;14H \u001b[18;17H \u001b[18;22H \u001b[18;25H \u001b[18;30H \u001b[18;35H \u001b[19;2H \u001b[38;5;6;49mtest\u001b[39;49m (main -> next -> dev)\u001b[19;30H\u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────────\u001b[20;2H*\u001b[20;4Hb7340df\u001b[20;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[20;30H\u001b[39;49mchore:\u001b[20;37Hupdate\u001b[20;44H6\u001b[39m\u001b[4"]
[10.626024, "o", "9m\u001b[59m\u001b[0m\u001b[?25l"]
[10.644844, "o", "\u001b[2;4H805d0b3\u001b[2;13H\u001b[38;5;15;48;5;4mdev)\u001b[39;49m WIP: do\u001b[2;26Hs(fs): add some documentat\u001b[2;54Hn \u001b[2;60H \u001b[2;67H \u001b[2;71H \u001b[2;74H \u001b[3;2H*\u001b[3;4H9943a0f\u001b[3;12H\u001b[38;5;15;48;5;4m(main)(next)\u001b[3;25H\u001b[39;49mchore(deps):\u001b[3;38Hupdate\u001b[3;45Hdocker.io/rust\u001b[3;60Hdocker\u001b[3;67Htag\u001b[3;71Hto\u001b[3;74Hv1.81\u001b[4;3H \u001b[4;9H \u001b[4;15H \u001b[4;18H \u001b[4;23H \u001b[4;26H \u001b[4;31H \u001b[4;36H \u001b[5;2H \u001b[38;5;6;49mpodal\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────█\u001b[6;2H*\u001b[6;4H249b943\u001b[6;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[6;30H\u001b[39;49mfix(deps):\u001b[6;41Hupdate\u001b[6;48Hrust\u001b[6;53Hcrate\u001b[6;59Hscraper\u001b[6;67Hto\u001b[6;70H0.20\u001b[7;3H \u001b[7;14H \u001b[7;20H \u001b[7;23H \u001b[7;28H \u001b[7;31H \u001b[7;36H \u001b[7;41H \u001b[8;2H \u001b[38;5;6;49mrefile-m4b\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ─────"]
[10.644992, "o", "─────────────────────────────────\u001b[9;2H*\u001b[9;4H7fba5fb\u001b[9;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[9;30H\u001b[39;49mSupport\u001b[9;38H--version,\u001b[9;49H--help\u001b[9;56Hand\u001b[9;60H--directory\u001b[9;72Hcli\u001b[9;76Harg\u001b[10;3H \u001b[10;15H \u001b[10;21H \u001b[10;24H \u001b[10;29H \u001b[10;32H \u001b[10;37H \u001b[10;42H \u001b[11;2H \u001b[38;5;6;49mrust-action\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ─────────────────────────────────────\u001b[12;2H*\u001b[12;4Hde4785c\u001b[12;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[12;30H\u001b[39;49mfeat:\u001b[12;36Hensure\u001b[12;43Htoolchains\u001b[12;54Hare\u001b[12;58Hup-to-date\u001b[13;3H \u001b[13;8H \u001b[13;14H \u001b[13;17H \u001b[13;22H \u001b[13;25H \u001b[13;30H \u001b[13;35H \u001b[14;2H \u001b[38;5;6;49mskip\u001b[39;49m (m\u001b[14;11Hin -> next -> dev)\u001b[14;30H\u001b[38;5;2;49mokay\u001b[39;49m ─────────────────────"]
[10.645137, "o", "───────────────────────║\u001b[15;2H*\u001b[15;4Hfc7fbca\u001b[15;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[15;30H\u001b[39;49mchore(deps):\u001b[15;43Hupdate\u001b[15;50Hdocker.io/rust\u001b[15;65Hdocker\u001b[15;72Htag\u001b[15;76Hto\u001b[16;3H \u001b[16;9H \u001b[16;15H \u001b[16;18H \u001b[16;23H \u001b[16;26H \u001b[16;31H \u001b[16;36H \u001b[17;2H \u001b[38;5;6;49mtasyn\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────\u001b[18;2H*\u001b[18;4H24fe845\u001b[18;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[18;30H\u001b[39;49mchore(deps):\u001b[18;43Hupdate\u001b[18;50Hdocker.io/postgres:16.4-alpin\u001b[19;3H \u001b[19;8H \u001b[19;14H \u001b[19;17H \u001b[19;22H \u001b[19;25H \u001b[19;30H \u001b[19;35H \u001b[20;2H \u001b[38;5;6;49mtest\u001b[39;49m (main -> next -> dev)\u001b[20;30H\u001b[38;5;2;49mokay\u001b[39;49m ─────────────────────────────"]
[10.645277, "o", "───────────────\u001b[21;2H*\u001b[21;4Hb7340df\u001b[21;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[21;30H\u001b[39;49mchore:\u001b[21;37Hupdate\u001b[21;44H6\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.663505, "o", "\u001b[2;2H \u001b[38;5;15;48;5;1mkxio\u001b[39;49m \u001b[38;5;15;48;5;1mcommit is a Work-in-progress\u001b[2;37H\u001b[39;49m(main -> n\u001b[2;48Hx\u001b[2;50H -> dev)\u001b[2;59H\u001b[38;5;1;49mALERT\u001b[2;65H\u001b[39;49m──────────────\u001b[3;4H805d0b3\u001b[3;13H\u001b[38;5;15;48;5;4mdev)\u001b[39;49m WIP: do\u001b[3;26Hs(fs): add some documentat\u001b[3;54Hn \u001b[3;60H \u001b[3;67H \u001b[3;71H \u001b[3;74H \u001b[4;2H*\u001b[4;4H9943a0f\u001b[4;12H\u001b[38;5;15;48;5;4m(main)(next)\u001b[4;25H\u001b[39;49mchore(deps):\u001b[4;38Hupdate\u001b[4;45Hdocker.io/rust\u001b[4;60Hdocker\u001b[4;67Htag\u001b[4;71Hto\u001b[4;74Hv1.81\u001b[5;3H \u001b[5;9H \u001b[5;15H \u001b[5;18H \u001b[5;23H \u001b[5;26H \u001b[5;31H \u001b[5;36H \u001b[6;2H \u001b[38;5;6;49mpodal\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────\u001b[7;2H*\u001b[7;4H249b943\u001b[7;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[7;30H\u001b[39;49mfix(deps):\u001b[7;41Hupdate\u001b[7;48Hrust\u001b[7;53Hcrate\u001b[7;59Hscraper\u001b[7;67Hto\u001b[7;70H0.20\u001b[8;3H \u001b["]
[10.663582, "o", "8;14H \u001b[8;20H \u001b[8;23H \u001b[8;28H \u001b[8;31H \u001b[8;36H \u001b[8;41H \u001b[9;2H \u001b[38;5;6;49mrefile-m4b\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ──────────────────────────────────────\u001b[10;2H*\u001b[10;4H7fba5fb\u001b[10;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[10;30H\u001b[39;49mSupport\u001b[10;38H--version,\u001b[10;49H--help\u001b[10;56Hand\u001b[10;60H--directory\u001b[10;72Hcli\u001b[10;76Harg\u001b[11;3H \u001b[11;15H \u001b[11;21H \u001b[11;24H \u001b[11;29H \u001b[11;32H \u001b[11;37H \u001b[11;42H \u001b[12;2H \u001b[38;5;6;49mrust-action\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ─────────────────────────────────────\u001b[13;2H*\u001b[13;4Hde4785c\u001b[13;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[13;30H\u001b[39;49mfeat:\u001b[13;36Hensure\u001b[13;43Htoolchains\u001b[13;54Hare\u001b[13;58Hup-to-date\u001b[14;3H \u001b[14;8H \u001b[14;14H \u001b[14;17H \u001b[14;22H \u001b[14;25H \u001b[14;"]
[10.663631, "o", "30H \u001b[14;35H \u001b[15;2H \u001b[38;5;6;49mskip\u001b[39;49m (m\u001b[15;11Hin -> next -> dev)\u001b[15;30H\u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────────\u001b[16;2H*\u001b[16;4Hfc7fbca\u001b[16;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[16;30H\u001b[39;49mchore(deps):\u001b[16;43Hupdate\u001b[16;50Hdocker.io/rust\u001b[16;65Hdocker\u001b[16;72Htag\u001b[16;76Hto\u001b[17;3H \u001b[17;9H \u001b[17;15H \u001b[17;18H \u001b[17;23H \u001b[17;26H \u001b[17;31H \u001b[17;36H \u001b[18;2H \u001b[38;5;6;49mtasyn\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────\u001b[19;2H*\u001b[19;4H24fe845\u001b[19;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[19;30H\u001b[39;49mchore(deps):\u001b[19;43Hupdate\u001b[19;50Hdocker.io/postgres:16.4-alpin\u001b[20;3H \u001b[20;8H \u001b[20;14H \u001b[20;17H \u001b[20;22H \u001b[20;25H \u001b[20;30H \u001b[20;35H "]
[10.663766, "o", " \u001b[21;2H \u001b[38;5;6;49mtest\u001b[39;49m (main -> next -> dev)\u001b[21;30H\u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────────\u001b[22;2H*\u001b[22;4Hb7340df\u001b[22;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[22;30H\u001b[39;49mchore:\u001b[22;37Hupdate\u001b[22;44H6\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.682703, "o", "\u001b[2;3H \u001b[2;8H \u001b[2;37H \u001b[2;43H \u001b[2;46H \u001b[2;51H \u001b[2;54H \u001b[2;59H \u001b[2;65H \u001b[3;2H \u001b[38;5;15;48;5;1mkxio\u001b[39;49m \u001b[38;5;15;48;5;1mcommit is a Work-in-progress\u001b[3;37H\u001b[39;49m(main -> n\u001b[3;48Hx\u001b[3;50H -> dev)\u001b[3;59H\u001b[38;5;1;49mALERT\u001b[3;65H\u001b[39;49m──────────────\u001b[4;4H805d0b3\u001b[4;13H\u001b[38;5;15;48;5;4mdev)\u001b[39;49m WIP: do\u001b[4;26Hs(fs): add some documentat\u001b[4;54Hn \u001b[4;60H \u001b[4;67H \u001b[4;71H \u001b[4;74H █\u001b[5;2H*\u001b[5;4H9943a0f\u001b[5;12H\u001b[38;5;15;48;5;4m(main)(next)\u001b[5;25H\u001b[39;49mchore(deps):\u001b[5;38Hupdate\u001b[5;45Hdocker.io/rust\u001b[5;60Hdocker\u001b[5;67Htag\u001b[5;71Hto\u001b[5;74Hv1.81\u001b[6;3H \u001b[6;9H \u001b[6;15H \u001b[6;18H \u001b[6;23H \u001b[6;26H \u001b[6;31H \u001b[6;36H \u001b[7;2H \u001b[38;5;6;49mpodal\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────\u001b[8;2H*\u001b[8;4H249b943\u001b[8;12H\u001b[38;5;15;48;5;"]
[10.682851, "o", "4m(dev)(main)(next)\u001b[8;30H\u001b[39;49mfix(deps):\u001b[8;41Hupdate\u001b[8;48Hrust\u001b[8;53Hcrate\u001b[8;59Hscraper\u001b[8;67Hto\u001b[8;70H0.20\u001b[9;3H \u001b[9;14H \u001b[9;20H \u001b[9;23H \u001b[9;28H \u001b[9;31H \u001b[9;36H \u001b[9;41H \u001b[10;2H \u001b[38;5;6;49mrefile-m4b\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ──────────────────────────────────────\u001b[11;2H*\u001b[11;4H7fba5fb\u001b[11;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[11;30H\u001b[39;49mSupport\u001b[11;38H--version,\u001b[11;49H--help\u001b[11;56Hand\u001b[11;60H--directory\u001b[11;72Hcli\u001b[11;76Harg\u001b[12;3H \u001b[12;15H \u001b[12;21H \u001b[12;24H \u001b[12;29H \u001b[12;32H \u001b[12;37H \u001b[12;42H \u001b[13;2H \u001b[38;5;6;49mrust-action\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ─────────────────────────────────────║\u001b[14;2H*\u001b[14;4Hde4785c\u001b[14;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[14;30H\u001b[39;49m"]
[10.683246, "o", "feat:\u001b[14;36Hensure\u001b[14;43Htoolchains\u001b[14;54Hare\u001b[14;58Hup-to-date\u001b[15;3H \u001b[15;8H \u001b[15;14H \u001b[15;17H \u001b[15;22H \u001b[15;25H \u001b[15;30H \u001b[15;35H \u001b[16;2H \u001b[38;5;6;49mskip\u001b[39;49m (m\u001b[16;11Hin -> next -> dev)\u001b[16;30H\u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────────\u001b[17;2H*\u001b[17;4Hfc7fbca\u001b[17;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[17;30H\u001b[39;49mchore(deps):\u001b[17;43Hupdate\u001b[17;50Hdocker.io/rust\u001b[17;65Hdocker\u001b[17;72Htag\u001b[17;76Hto\u001b[18;3H \u001b[18;9H \u001b[18;15H \u001b[18;18H \u001b[18;23H \u001b[18;26H \u001b[18;31H \u001b[18;36H \u001b[19;2H \u001b[38;5;6;49mtasyn\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────\u001b[20;2H*\u001b[20;4H24fe845\u001b[20;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[20;30H\u001b[39;49mchore(deps):\u001b[20;"]
[10.683342, "o", "43Hupdate\u001b[20;50Hdocker.io/postgres:16.4-alpin\u001b[21;3H \u001b[21;8H \u001b[21;14H \u001b[21;17H \u001b[21;22H \u001b[21;25H \u001b[21;30H \u001b[21;35H \u001b[22;2H \u001b[38;5;6;49mtest\u001b[39;49m (main -> next -> dev)\u001b[22;30H\u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────────\u001b[23;2H*\u001b[23;4Hb7340df\u001b[23;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[23;30H\u001b[39;49mchore:\u001b[23;37Hupdate\u001b[23;44H6\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.702671, "o", "\u001b[2;2H*\u001b[2;4H91c5973\u001b[2;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[2;30H\u001b[39;49mchore:\u001b[2;37Hrelease\u001b[3;3H \u001b[3;8H \u001b[3;37H \u001b[3;43H \u001b[3;46H \u001b[3;51H \u001b[3;54H \u001b[3;59H \u001b[3;65H \u001b[4;2H \u001b[38;5;15;48;5;1mkxio\u001b[39;49m \u001b[38;5;15;48;5;1mcommit is a Work-in-progress\u001b[4;37H\u001b[39;49m(main -> n\u001b[4;48Hx\u001b[4;50H -> dev)\u001b[4;59H\u001b[38;5;1;49mALERT\u001b[4;65H\u001b[39;49m──────────────\u001b[5;4H805d0b3\u001b[5;13H\u001b[38;5;15;48;5;4mdev)\u001b[39;49m WIP: do\u001b[5;26Hs(fs): add some documentat\u001b[5;54Hn \u001b[5;60H \u001b[5;67H \u001b[5;71H \u001b[5;74H \u001b[6;2H*\u001b[6;4H9943a0f\u001b[6;12H\u001b[38;5;15;48;5;4m(main)(next)\u001b[6;25H\u001b[39;49mchore(deps):\u001b[6;38Hupdate\u001b[6;45Hdocker.io/rust\u001b[6;60Hdocker\u001b[6;67Htag\u001b[6;71Hto\u001b[6;74Hv1.81\u001b[7;3H \u001b[7;9H \u001b[7;15H \u001b[7;18H \u001b[7;23H \u001b[7;26H \u001b[7;31H \u001b[7;36H \u001b[8;2H \u001b[38;5;6;49mpodal\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ──────────────────────────"]
[10.703019, "o", "─────────────────\u001b[9;2H*\u001b[9;4H249b943\u001b[9;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[9;30H\u001b[39;49mfix(deps):\u001b[9;41Hupdate\u001b[9;48Hrust\u001b[9;53Hcrate\u001b[9;59Hscraper\u001b[9;67Hto\u001b[9;70H0.20\u001b[10;3H \u001b[10;14H \u001b[10;20H \u001b[10;23H \u001b[10;28H \u001b[10;31H \u001b[10;36H \u001b[10;41H \u001b[11;2H \u001b[38;5;6;49mrefile-m4b\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ──────────────────────────────────────\u001b[12;2H*\u001b[12;4H7fba5fb\u001b[12;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[12;30H\u001b[39;49mSupport\u001b[12;38H--version,\u001b[12;49H--help\u001b[12;56Hand\u001b[12;60H--directory\u001b[12;72Hcli\u001b[12;76Harg\u001b[13;3H \u001b[13;15H \u001b[13;21H \u001b[13;24H \u001b[13;29H \u001b[13;32H \u001b[13;37H \u001b[13;42H \u001b[14;2H \u001b[38;5;6;49mrust-action\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────"]
[10.703551, "o", "──────\u001b[15;2H*\u001b[15;4Hde4785c\u001b[15;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[15;30H\u001b[39;49mfeat:\u001b[15;36Hensure\u001b[15;43Htoolchains\u001b[15;54Hare\u001b[15;58Hup-to-date\u001b[16;3H \u001b[16;8H \u001b[16;14H \u001b[16;17H \u001b[16;22H \u001b[16;25H \u001b[16;30H \u001b[16;35H \u001b[17;2H \u001b[38;5;6;49mskip\u001b[39;49m (m\u001b[17;11Hin -> next -> dev)\u001b[17;30H\u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────────\u001b[18;2H*\u001b[18;4Hfc7fbca\u001b[18;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[18;30H\u001b[39;49mchore(deps):\u001b[18;43Hupdate\u001b[18;50Hdocker.io/rust\u001b[18;65Hdocker\u001b[18;72Htag\u001b[18;76Hto\u001b[19;3H \u001b[19;9H \u001b[19;15H \u001b[19;18H \u001b[19;23H \u001b[19;26H \u001b[19;31H \u001b[19;36H \u001b[20;2H \u001b[38;5;6;49mtasyn\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ──────────────────────────────────────────"]
[10.703743, "o", "─\u001b[21;2H*\u001b[21;4H24fe845\u001b[21;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[21;30H\u001b[39;49mchore(deps):\u001b[21;43Hupdate\u001b[21;50Hdocker.io/postgres:16.4-alpin\u001b[22;3H \u001b[22;8H \u001b[22;14H \u001b[22;17H \u001b[22;22H \u001b[22;25H \u001b[22;30H \u001b[22;35H \u001b[23;2H \u001b[38;5;6;49mtest\u001b[39;49m (main -> next -> dev)\u001b[23;30H\u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────────\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.72275, "o", "\u001b[2;2H \u001b[38;5;6;49mgit-next\u001b[2;12H\u001b[39;49m(main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────\u001b[3;2H*\u001b[3;4H91c5973\u001b[3;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[3;30H\u001b[39;49mchore:\u001b[3;37Hrelease\u001b[3;79H█\u001b[4;3H \u001b[4;8H \u001b[4;37H \u001b[4;43H \u001b[4;46H \u001b[4;51H \u001b[4;54H \u001b[4;59H \u001b[4;65H \u001b[5;2H \u001b[38;5;15;48;5;1mkxio\u001b[39;49m \u001b[38;5;15;48;5;1mcommit is a Work-in-progress\u001b[5;37H\u001b[39;49m(main -> n\u001b[5;48Hx\u001b[5;50H -> dev)\u001b[5;59H\u001b[38;5;1;49mALERT\u001b[5;65H\u001b[39;49m──────────────\u001b[6;4H805d0b3\u001b[6;13H\u001b[38;5;15;48;5;4mdev)\u001b[39;49m WIP: do\u001b[6;26Hs(fs): add some documentat\u001b[6;54Hn \u001b[6;60H \u001b[6;67H \u001b[6;71H \u001b[6;74H \u001b[7;2H*\u001b[7;4H9943a0f\u001b[7;12H\u001b[38;5;15;48;5;4m(main)(next)\u001b[7;25H\u001b[39;49mchore(deps):\u001b[7;38Hupdate\u001b[7;45Hdocker.io/rust\u001b[7;60Hdocker\u001b[7;67Htag\u001b[7;71Hto\u001b[7;74Hv1.81\u001b[8;3H \u001b[8;9H \u001b[8;15H \u001b[8;18H \u001b[8;23H \u001b[8;26H "]
[10.7228, "o", "\u001b[8;31H \u001b[8;36H \u001b[9;2H \u001b[38;5;6;49mpodal\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────\u001b[10;2H*\u001b[10;4H249b943\u001b[10;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[10;30H\u001b[39;49mfix(deps):\u001b[10;41Hupdate\u001b[10;48Hrust\u001b[10;53Hcrate\u001b[10;59Hscraper\u001b[10;67Hto\u001b[10;70H0.20\u001b[11;3H \u001b[11;14H \u001b[11;20H \u001b[11;23H \u001b[11;28H \u001b[11;31H \u001b[11;36H \u001b[11;41H \u001b[12;2H \u001b[38;5;6;49mrefile-m4b\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ──────────────────────────────────────\u001b[13;2H*\u001b[13;4H7fba5fb\u001b[13;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[13;30H\u001b[39;49mSupport\u001b[13;38H--version,\u001b[13;49H--help\u001b[13;56Hand\u001b[13;60H--directory\u001b[13;72Hcli\u001b[13;76Harg\u001b[14;3H \u001b[14;15H \u001b[14;21H \u001b[14;24H \u001b[14;29H \u001b[14;32H \u001b[14;37H "]
[10.723231, "o", " \u001b[14;42H \u001b[15;2H \u001b[38;5;6;49mrust-action\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ─────────────────────────────────────\u001b[16;2H*\u001b[16;4Hde4785c\u001b[16;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[16;30H\u001b[39;49mfeat:\u001b[16;36Hensure\u001b[16;43Htoolchains\u001b[16;54Hare\u001b[16;58Hup-to-date\u001b[17;3H \u001b[17;8H \u001b[17;14H \u001b[17;17H \u001b[17;22H \u001b[17;25H \u001b[17;30H \u001b[17;35H \u001b[18;2H \u001b[38;5;6;49mskip\u001b[39;49m (m\u001b[18;11Hin -> next -> dev)\u001b[18;30H\u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────────\u001b[19;2H*\u001b[19;4Hfc7fbca\u001b[19;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[19;30H\u001b[39;49mchore(deps):\u001b[19;43Hupdate\u001b[19;50Hdocker.io/rust\u001b[19;65Hdocker\u001b[19;72Htag\u001b[19;76Hto\u001b[20;3H \u001b[20;9H \u001b[20;15H \u001b[20;18H \u001b[20;23H \u001b[20;26H \u001b[20;31H \u001b[20;36H "]
[10.723349, "o", " \u001b[21;2H \u001b[38;5;6;49mtasyn\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────\u001b[22;2H*\u001b[22;4H24fe845\u001b[22;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[22;30H\u001b[39;49mchore(deps):\u001b[22;43Hupdate\u001b[22;50Hdocker.io/postgres:16.4-alpin\u001b[23;3H \u001b[23;8H \u001b[23;14H \u001b[23;17H \u001b[23;22H \u001b[23;25H \u001b[23;30H \u001b[23;35H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.742361, "o", "\u001b[2;3Hforge: jo \u001b[2;18H \u001b[2;21H \u001b[2;26H \u001b[2;29H \u001b[2;34H \u001b[2;39H \u001b[3;2H \u001b[38;5;6;49mgit-next\u001b[3;12H\u001b[39;49m(main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────\u001b[4;2H*\u001b[4;4H91c5973\u001b[4;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[4;30H\u001b[39;49mchore:\u001b[4;37Hrelease\u001b[5;3H \u001b[5;8H \u001b[5;37H \u001b[5;43H \u001b[5;46H \u001b[5;51H \u001b[5;54H \u001b[5;59H \u001b[5;65H \u001b[6;2H \u001b[38;5;15;48;5;1mkxio\u001b[39;49m \u001b[38;5;15;48;5;1mcommit is a Work-in-progress\u001b[6;37H\u001b[39;49m(main -> n\u001b[6;48Hx\u001b[6;50H -> dev)\u001b[6;59H\u001b[38;5;1;49mALERT\u001b[6;65H\u001b[39;49m──────────────\u001b[7;4H805d0b3\u001b[7;13H\u001b[38;5;15;48;5;4mdev)\u001b[39;49m WIP: do\u001b[7;26Hs(fs): add some documentat\u001b[7;54Hn \u001b[7;60H \u001b[7;67H \u001b[7;71H \u001b[7;74H \u001b[8;2H*\u001b[8;4H9943a0f\u001b[8;12H\u001b[38;5;15;48;5;4m(main)(next)\u001b[8;25H\u001b[39;49mchore(deps):\u001b[8;38Hupdate\u001b[8;45Hdocker.io/ru"]
[10.742451, "o", "st\u001b[8;60Hdocker\u001b[8;67Htag\u001b[8;71Hto\u001b[8;74Hv1.81\u001b[9;3H \u001b[9;9H \u001b[9;15H \u001b[9;18H \u001b[9;23H \u001b[9;26H \u001b[9;31H \u001b[9;36H \u001b[10;2H \u001b[38;5;6;49mpodal\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────\u001b[11;2H*\u001b[11;4H249b943\u001b[11;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[11;30H\u001b[39;49mfix(deps):\u001b[11;41Hupdate\u001b[11;48Hrust\u001b[11;53Hcrate\u001b[11;59Hscraper\u001b[11;67Hto\u001b[11;70H0.20\u001b[12;3H \u001b[12;14H \u001b[12;20H \u001b[12;23H \u001b[12;28H \u001b[12;31H \u001b[12;36H \u001b[12;41H ║\u001b[13;2H \u001b[38;5;6;49mrefile-m4b\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ──────────────────────────────────────\u001b[14;2H*\u001b[14;4H7fba5fb\u001b[14;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[14;30H\u001b[39;49mSupport\u001b[14;38H--version,\u001b[14;49H--help\u001b[14;56Hand\u001b[14;60H--dire"]
[10.742513, "o", "ctory\u001b[14;72Hcli\u001b[14;76Harg\u001b[15;3H \u001b[15;15H \u001b[15;21H \u001b[15;24H \u001b[15;29H \u001b[15;32H \u001b[15;37H \u001b[15;42H \u001b[16;2H \u001b[38;5;6;49mrust-action\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ─────────────────────────────────────\u001b[17;2H*\u001b[17;4Hde4785c\u001b[17;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[17;30H\u001b[39;49mfeat:\u001b[17;36Hensure\u001b[17;43Htoolchains\u001b[17;54Hare\u001b[17;58Hup-to-date\u001b[18;3H \u001b[18;8H \u001b[18;14H \u001b[18;17H \u001b[18;22H \u001b[18;25H \u001b[18;30H \u001b[18;35H \u001b[19;2H \u001b[38;5;6;49mskip\u001b[39;49m (m\u001b[19;11Hin -> next -> dev)\u001b[19;30H\u001b[38;5;2;49mokay\u001b[39;49m ────────────────────────────────────────────\u001b[20;2H*\u001b[20;4Hfc7fbca\u001b[20;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[20;30H\u001b[39;49mchore(deps):\u001b[20;43Hupdate\u001b[20;50Hdocker.io/rust\u001b[20;65Hdocker\u001b[20;72Htag\u001b[20;76Hto\u001b"]
[10.742578, "o", "[21;3H \u001b[21;9H \u001b[21;15H \u001b[21;18H \u001b[21;23H \u001b[21;26H \u001b[21;31H \u001b[21;36H \u001b[22;2H \u001b[38;5;6;49mtasyn\u001b[39;49m (main -> next -> dev) \u001b[38;5;2;49mokay\u001b[39;49m ───────────────────────────────────────────\u001b[23;2H*\u001b[23;4H24fe845\u001b[23;12H\u001b[38;5;15;48;5;4m(dev)(main)(next)\u001b[23;30H\u001b[39;49mchore(deps):\u001b[23;43Hupdate\u001b[23;50Hdocker.io/postgres:16.4-alpin\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.761454, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.782349, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.801877, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.822526, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.842672, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.861559, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.879728, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.898859, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.917931, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.946604, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.966104, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[10.985743, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.023523, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.061011, "o", "\u001b[24;43H 💚\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.100465, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.138144, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.174063, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.211364, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.24819, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.285142, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.322272, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.358341, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.39547, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.431719, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.469256, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.511171, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.546092, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.583528, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.618694, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.657656, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.693252, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.731247, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.769971, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.804203, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.841036, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.877137, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.914426, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.954717, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[11.990908, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.028533, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.066414, "o", "\u001b[24;43H💚\u001b[24;45H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.107049, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.142204, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.179509, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.216573, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.253728, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.289769, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.326863, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.363905, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.40106, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.43865, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.475818, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.512054, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.550834, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.589195, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.626474, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.665855, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.702211, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.737993, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.774967, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.815764, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.852596, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.892064, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.92746, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[12.964137, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.002874, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.03968, "o", "\u001b[24;43H 💚\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.076753, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.113219, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.151584, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.188483, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.229106, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.264818, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.301622, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.338226, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.375524, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.411574, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.447307, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.483603, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.520106, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.560836, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.598547, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.635115, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.672651, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.712643, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.7507, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.786601, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.82323, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.858725, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.8978, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.934514, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[13.972287, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.008834, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.046299, "o", "\u001b[24;43H💚\u001b[24;45H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.083399, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.120763, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.155627, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.193875, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.231887, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.267898, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.302399, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.343537, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.380356, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.417261, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.453534, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.49263, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.530636, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.566577, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.606367, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.641865, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.679072, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.71686, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.760187, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.795183, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.83164, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.868972, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.905974, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.94637, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[14.983598, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.019429, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.056081, "o", "\u001b[24;43H 💚\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.093109, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.130406, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.172122, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.209038, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.244863, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.282047, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.316998, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.360829, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.39752, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.435025, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.476643, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.518269, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.551214, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.588339, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.626227, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.668075, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.704194, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.740791, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.778154, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.819102, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.855694, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.891253, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.927393, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[15.963477, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.000617, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.036768, "o", "\u001b[24;43H💚\u001b[24;45H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.074615, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.109168, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.147181, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.184001, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.221019, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.259995, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.298455, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.335449, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.374772, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.412157, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.45174, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.487307, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.525937, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.564883, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.602005, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.638765, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.674415, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.712126, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.746806, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.783087, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.821257, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.859364, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.897079, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.934126, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[16.970609, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.007439, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.043377, "o", "\u001b[24;43H 💚\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.081879, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.119148, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.156208, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.192544, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.229623, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.268441, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.304077, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.341245, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.377117, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.417434, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.456131, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.492909, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.530736, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.568137, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.608431, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.646151, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.683754, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.718481, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.75638, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.792562, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.829402, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.866012, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.903936, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.943019, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[17.984106, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.021665, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.059774, "o", "\u001b[24;43H💚\u001b[24;45H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.098821, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.135715, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.17206, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.208703, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.245904, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.283908, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.31957, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.355896, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.393339, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.429976, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.466756, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.506115, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.545975, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.583191, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.621038, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.656638, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.701071, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.739152, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.776111, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.81384, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.850448, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.888985, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.925942, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[18.962416, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[19.000353, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[19.039442, "o", "\u001b[24;43H 💚\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"]
[19.042413, "o", "\u001b[?25h"]
[19.042469, "o", "\u001b[?1049l"]
[19.110591, "o", "\u001b[?1049l"]

BIN
demo.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 KiB

View file

@ -47,24 +47,17 @@ grcov-coverage:
find . -name '*.profraw' -exec rm "{}" \;
echo "Now:\n\topen target/debug/coverage/index.html"
publish version:
#!/usr/bin/bash -e
echo "Publishing git-next v{{version}} to crates.io..."
if [ -z $(git status --short) ]; then
echo "Worktree is clean - proceeding"
else
echo "Worktree is Dirty - aborting" ; exit
fi
git checkout v{{version}}
ORDER=$(cargo publish-workspace --target-version {{version}} --crate-prefix git-next --show-order 2>/dev/null | cut -d\ -f2-)
echo "Publishing crates in order: ${ORDER}"
# INFO: Why not use publish-workspace to publish? It doesn't support when crates-io registry is replaced
for P in ${ORDER}
do
echo "Publishing ${P}..."
cargo publish --registry crates-io -p $P
echo "Done: ${P}"
echo "======================================"
done
echo "All crates published"
git checkout dev
docker-build-builder:
docker build -t git.kemitix.net/kemitix/git-next-builder:2024.08.04 -f Dockerfile.builder .
docker-build: docker-build-builder
docker build -t git.kemitix.net/kemitix/git-next:latest .
docker-run: docker-build
docker run -it -p "7777:8888" -v .:/app/ git.kemitix.net/kemitix/git-next:latest server start --ui
run *args:
cargo run -- {{ args }}
run-ui:
just run server start --ui