Commit Graph
100 Commits
Author SHA1 Message Date
Christian Visintin 99b76f2fd9 ci: disable unused GnuTLS compression backends
Linux musl probe / build-x86_64-unknown-linux-musl (push) Has been cancelled
Linux musl probe / build-aarch64-unknown-linux-musl (push) Has been cancelled
2026-09-03 09:01:12 +02:00
Christian Visintin a57f020e4a ci: restore workspace before Cargo patch
Linux musl probe / build-x86_64-unknown-linux-musl (push) Has been cancelled
Linux musl probe / build-aarch64-unknown-linux-musl (push) Has been cancelled
2026-09-02 23:34:39 +02:00
Christian Visintin da23372d4b ci: build musl releases with static Samba dependencies 2026-09-02 23:30:07 +02:00
Christian Visintin 5304bc3224 ci: use compatible static gettext package 2026-09-02 23:22:12 +02:00
Christian Visintin 6de1cdb39c ci: add static gettext dependency 2026-09-02 23:22:12 +02:00
Christian Visintin 57a710eff5 ci: align musl dependencies with pavao 2026-09-02 23:22:12 +02:00
Christian Visintin 6e6d077532 ci: install samba perl parser dependency 2026-09-02 23:22:12 +02:00
Christian Visintin 63f7f0d084 ci: fix temporary samba patch rewrite 2026-09-02 23:22:12 +02:00
Christian Visintin 9d2c3746d0 ci: probe musl samba configure workaround 2026-09-02 23:22:11 +02:00
Christian Visintin 0b787fee34 ci: add static musl crypto dependencies 2026-09-02 23:22:11 +02:00
Christian Visintin 48d3701678 ci: probe static musl release builds 2026-09-02 23:22:11 +02:00
Christian Visintin 622a64ac58 build: bump remotefs-smb 0.5.0 2026-09-02 22:27:56 +02:00
Christian Visintin 751f68f6d4 feat(smb): add SMB dialect selection and persistence (#445)
Deploy docs to GitHub Pages / deploy (push) Has been cancelled
Install.sh / build (ubuntu-latest) (push) Has been cancelled
CI / toolchain (push) Has been cancelled
CI / fmt (push) Has been cancelled
CI / install-scripts (push) Has been cancelled
Install.sh / build (macos-latest) (push) Has been cancelled
Site / build-site (push) Has been cancelled
CI / crates-macos-latest (push) Has been cancelled
CI / crates-ubuntu-latest (push) Has been cancelled
CI / crates-windows-latest (push) Has been cancelled
CI / doc (push) Has been cancelled
CI / deny (push) Has been cancelled
Support Auto, SMB1, SMB2, and SMB3 selection on Unix, bound negotiation to the selected dialect family, preserve legacy bookmarks as Auto, and document the new option. Windows keeps operating-system-managed negotiation.

Closes #439
2026-09-02 14:14:23 +02:00
Christian Visintin e966a83220 chore(just): add run_signed script
Deploy docs to GitHub Pages / deploy (push) Has been cancelled
CI / toolchain (push) Has been cancelled
CI / fmt (push) Has been cancelled
CI / install-scripts (push) Has been cancelled
Install.sh / build (macos-latest) (push) Has been cancelled
Install.sh / build (ubuntu-latest) (push) Has been cancelled
Site / build-site (push) Has been cancelled
CI / crates-macos-latest (push) Has been cancelled
CI / crates-ubuntu-latest (push) Has been cancelled
CI / crates-windows-latest (push) Has been cancelled
CI / doc (push) Has been cancelled
CI / deny (push) Has been cancelled
2026-09-01 12:52:10 +02:00
Christian Visintin d99c76b43c feat(ssh): auto-fill ssh config parameters in auth form
Resolve SSH host parameters in auth forms and CLI connections while preserving explicit user, bookmark, and parsed alias values. Continue forwarding SSH config files for HostName and other SSH options, and document the precedence in English and Chinese.

Closes #441
2026-09-01 12:52:10 +02:00
Christian Visintin 7434c51063 feat: add support for all ssh2 config parameters.
Achieved by bumping `remotefs-ssh` to `0.9`.

Added support for these parameters:

- Compression
- Host key certificates
- CA signature algorithms
- keys to agents
- ProxyJump
- Server alive intervals
- Agent forwarding
- Remote forwarding
- Bind address
- Bind interface
- Connection attempts
- TCP Keepalive
- Accepted public key algos
- Certificate files

Refs #441
2026-09-01 12:52:10 +02:00
Christian Visintin 9fbd617f88 fix: print actual reason for failed host params collecting
previously, we didn't show any reason for failed collecting of host params in the auth form, but just a generic message

refs #441
2026-09-01 12:52:10 +02:00
Christian Visintin 2bbe560ec5 chore: remove invalid advisories for remotefs-aws-s3
CI / toolchain (push) Has been cancelled
CI / fmt (push) Has been cancelled
CI / install-scripts (push) Has been cancelled
Install.sh / build (macos-latest) (push) Has been cancelled
Install.sh / build (ubuntu-latest) (push) Has been cancelled
Deploy docs to GitHub Pages / deploy (push) Has been cancelled
Site / build-site (push) Has been cancelled
CI / crates-macos-latest (push) Has been cancelled
CI / crates-ubuntu-latest (push) Has been cancelled
CI / crates-windows-latest (push) Has been cancelled
CI / doc (push) Has been cancelled
CI / deny (push) Has been cancelled
2026-08-30 21:48:21 +02:00
Christian Visintin 7472ca98a0 chore: add AI_POLICY and update Pull request template 2026-08-30 21:47:28 +02:00
Christian Visintin 974b6d6917 feat(gcs): add Google Cloud Storage support (#443)
* feat(gcs): add Google Cloud Storage support

Closes #436

* fix: honor configured protocol and finalization errors

* ci: remove TruffleHog checks
2026-08-30 18:58:17 +02:00
Christian Visintin 98a1ce42dc build(deps): update aes-gcm to 0.11
CI / toolchain (push) Has been cancelled
CI / fmt (push) Has been cancelled
CI / install-scripts (push) Has been cancelled
Install.sh / build (macos-latest) (push) Has been cancelled
Install.sh / build (ubuntu-latest) (push) Has been cancelled
Site / build-site (push) Has been cancelled
CI / crates-macos-latest (push) Has been cancelled
CI / crates-ubuntu-latest (push) Has been cancelled
CI / crates-windows-latest (push) Has been cancelled
CI / doc (push) Has been cancelled
CI / deny (push) Has been cancelled
Migrate nonce generation and parsing to the aes-gcm 0.11 API while preserving the encrypted payload format.
2026-08-29 14:06:27 +02:00
Christian Visintin afbc74113f ci: migrate project automation to Just (#442)
Deploy docs to GitHub Pages / deploy (push) Has been cancelled
Site / build-site (push) Has been cancelled
Install.sh / build (macos-latest) (push) Has been cancelled
Install.sh / build (ubuntu-latest) (push) Has been cancelled
CI / toolchain (push) Has been cancelled
CI / fmt (push) Has been cancelled
CI / install-scripts (push) Has been cancelled
CI / crates-ubuntu-latest (push) Has been cancelled
CI / crates-windows-latest (push) Has been cancelled
CI / doc (push) Has been cancelled
CI / deny (push) Has been cancelled
CI / crates-macos-latest (push) Has been cancelled
* ci: migrate project automation to Just

Centralize build, test, release, dependency, hook, and website commands in Just recipes. Pin workflow tooling, use the repository toolchain, and run the complete validation set in CI.

* ci: codex being codex

* docs: update CLAUDE.md for just task runner migration

Reflect the switch to just recipes for build/test/clippy/fmt, note
dprint replacing raw rustfmt, and add a cross-platform code requirement.

* fix: resolve clippy warnings breaking CI on ubuntu and windows

Use clone() instead of implicit to_string() on already-owned String
values, gate the windows-only unused make_file_at import behind
cfg(posix), and fix unused mut / manual assign-op in the windows-only
localhost test.

* fix: fmt
2026-08-28 19:29:58 +02:00
Christian Visintin 08c51a32cc ci: remove Codeberg mirror workflow. I do not support Codeberg mission anymore
CI / build-(macos-latest) (push) Has been cancelled
CI / build-(ubuntu-latest) (push) Has been cancelled
CI / build-(windows-latest) (push) Has been cancelled
Install.sh / build (macos-latest) (push) Has been cancelled
Install.sh / build (ubuntu-latest) (push) Has been cancelled
Site / build-site (push) Has been cancelled
2026-07-29 22:41:06 +02:00
Christian Visintin 739517f7e4 feat(site): add privacy policy page (#435)
codeberg-mirror / mirror (push) Has been cancelled
CI / build-(macos-latest) (push) Has been cancelled
CI / build-(ubuntu-latest) (push) Has been cancelled
CI / build-(windows-latest) (push) Has been cancelled
Install.sh / build (macos-latest) (push) Has been cancelled
Install.sh / build (ubuntu-latest) (push) Has been cancelled
Site / build-site (push) Has been cancelled
Add a GDPR privacy policy covering Vercel hosting/server logs and
EU-hosted Umami analytics, and link it from the footer.
2026-06-19 19:12:53 +02:00
Christian Visintin 77281ed926 fix(publish): anchor include globs to crate root
CI / build-(macos-latest) (push) Has been cancelled
CI / build-(ubuntu-latest) (push) Has been cancelled
CI / build-(windows-latest) (push) Has been cancelled
codeberg-mirror / mirror (push) Has been cancelled
Install.sh / build (macos-latest) (push) Has been cancelled
Install.sh / build (ubuntu-latest) (push) Has been cancelled
Site / build-site (push) Has been cancelled
Unanchored include patterns (LICENSE, README.md) matched at any depth
via gitignore-glob semantics, pulling 437 site/node_modules files into
the package and breaking cargo publish's dirty check.
2026-06-08 21:18:43 +02:00
Christian Visintin 4b6325ebe3 chore: update Cargo.lock 2026-06-08 21:15:21 +02:00
Christian Visintin 6933a98cda chore(Cargo.lock): update Cargo.lock 2026-06-08 21:14:39 +02:00
veeso 5cee1184dc chore: release v1.1.1 2026-06-08 18:54:35 +00:00
Christian Visintin 4a9da89642 fix(build): drop vergen-git2 build dependency
vergen-git2 reads git metadata at build time, but the crates.io source
tarball ships no .git, so the published 1.1.0 fails on `cargo install`.
crates.io versions are immutable (no overwrite) and Chocolatey's
moderation queue blocks a fast re-push, so a clean 1.1.1 without vergen
is the only fix.
2026-06-08 20:53:55 +02:00
veeso 282f75c3f3 chore: release v1.1.0 2026-06-08 18:17:39 +00:00
Christian Visintin 535ed23540 chore: update cliff config 2026-06-08 20:17:02 +02:00
Christian Visintin 70bd7d7330 fix(transfer): enqueue full destination path instead of directory
Queued transfers stored only the destination directory as the target
path. Downstream upload logic treats the queued destination as the full
file path and passes it straight to create_file, so transfers failed
with a Failure error when the remote target resolved to a directory.

Append each entry's file name to the destination directory at enqueue
time in both enqueue_file and enqueue_all, matching the single-file
transfer path which already builds the full target path.
2026-06-08 20:17:02 +02:00
Christian Visintin 352eec4762 chore(Cargo.toml): bump 1.1.0 2026-06-08 20:17:02 +02:00
Christian Visintin 3a5327f5b1 ci(release): fetch full git history and tags for build.rs
build.rs uses vergen-git2 (Git2::all_git), which runs `git describe` and
reads commit metadata. The build and publish-crate jobs checked out a
shallow clone without tags, so vergen could not resolve the describe
string and libgit2 may fail on shallow repos. Add fetch-depth: 0 and
fetch-tags: true to both jobs that compile the crate.
2026-06-08 20:17:02 +02:00
Christian Visintin b1601fb17e chore(deps): migrate keyring from 3 to 4
keyring v4 is no longer a library crate; the API moved to keyring-core
plus per-platform credential store crates. Replace the keyring dependency
with keyring-core and the native store crates, and register the default
store at runtime (lazily, once) since v4 no longer selects it at compile
time via Cargo features.
2026-06-08 20:17:02 +02:00
Christian Visintin bca261b7b2 chore(deps): bump aes, cbc, md-5, rand and vergen-git2
Migrate to the new RustCrypto cipher 0.5 traits (aes 0.9, cbc 0.2),
rand 0.10 and vergen-git2 10, whose APIs changed:

- vergen-git2: builders renamed (BuildBuilder -> Build, etc.) and the
  all_* constructors no longer return a Result
- aes/cbc: BlockDecryptMut -> BlockModeDecrypt and
  decrypt_padded_vec_mut -> decrypt_padded_vec
- rand: sample API moved
2026-06-08 20:17:02 +02:00
Christian Visintin 904befaea8 fix(copy): prevent emptying file when copy destination is empty (#421)
Install.sh / build (macos-latest) (push) Has been cancelled
Install.sh / build (ubuntu-latest) (push) Has been cancelled
CI / build-(macos-latest) (push) Has been cancelled
CI / build-(ubuntu-latest) (push) Has been cancelled
CI / build-(windows-latest) (push) Has been cancelled
codeberg-mirror / mirror (push) Has been cancelled
Deploy docs to GitHub Pages / deploy (push) Has been cancelled
Site / build-site (push) Has been cancelled
An empty copy destination resolved to the source file's own path, so
std::fs::copy truncated the original file to 0 bytes.

- localhost::copy now refuses to copy a file onto itself, returning an
  error instead of truncating it (root cause).
- action_copy treats an empty/whitespace destination as a cancel.

Closes #421
2026-06-08 17:12:52 +02:00
Christian Visintin afe7b05830 docs(config): update config dir paths for macOS/Windows in en & zh
Reflect the new config directory locations (~/.config/termscp on macOS,
%USERPROFILE%\.termscp on Windows) across the English and Chinese docs,
and add a CLAUDE.md note to keep both translations in sync.
2026-06-08 16:39:24 +02:00
Christian Visintin 837592e48a feat(config): move config dir to ~/.config/termscp on macOS and %USERPROFILE%\.termscp on Windows
Resolve the config directory through a single per-platform config_dir()
function instead of relying on dirs::config_dir everywhere:

- macOS: ~/.config/termscp (was ~/Library/Application Support/termscp)
- Windows: %USERPROFILE%\.termscp (was roaming %APPDATA%\termscp)
- Linux/other: /termscp (unchanged)

Existing users are migrated automatically on first run: when the new
directory is absent and the legacy location exists, the whole config
directory is moved to the new path. The cache directory stays at the
platform-native location.

Closes #431
2026-06-08 16:39:24 +02:00
Christian Visintin ab5de031e3 ci(site): always run site 2026-06-08 16:02:27 +02:00
Christian Visintin f3085161e6 fix(progress): equalize dual progress bar heights
The bottom (partial) bar carried a block title (the current filename),
which forces a 1-row top inset in ratatui's `Block::inner` even though
its top border is dropped to join the seam with the full bar. That left
the partial bar with one inner row while the full bar kept two, so the
two gauges rendered at unequal heights.

- Move the filename from the partial bar's title into its gauge label.
- Skip setting an empty title so no phantom top-positioned title triggers
  the inset.
- Put the panel title on the top (full) bar for multi-file transfers.
- Bump the two-bar popup height to fit the joined panel.

Also bump Cargo.lock and adapt the embedded terminal to the new vt100
`screen_mut()` API.
2026-06-08 16:02:27 +02:00
Christian Visintin 1dafc76850 fix(progress): rework transfer progress panel (#424)
Migrate the transfer progress UI to tuirealm 4, where the stdlib
`ProgressBar` widget was dropped, by rebuilding the dual-bar panel on
top of `Gauge`.

- Restore the unified two-bar look: the full bar (top) and partial bar
  (bottom) draw joined borders so they read as a single panel; a single
  file shows one fully-bordered bar.
- Redraw on every file boundary in the send/recv queue loops so the
  full bar's (N/total) counter advances even for small files that finish
  within one in-loop redraw interval.
- Track progress with a single `TransferProgress` (exact file count from
  the pre-scan, lazy partial/full computation) and consolidate the theme
  progress-bar fields.
2026-06-08 16:02:27 +02:00
Christian Visintin f066d6a387 chore(readme): remove current version 2026-06-08 10:43:35 +02:00
Christian Visintin 987751d732 chore(site): add site umami analytics 2026-06-08 10:43:35 +02:00
Christian Visintin 1ca8abbfe8 ci: rename ci workflow 2026-06-08 10:16:00 +02:00
Christian Visintin 26e71a2f1d ci(release): publish to crates.io via OIDC trusted publishing 2026-06-08 10:16:00 +02:00
Christian Visintin b1d77c78fe fix(install): quote vars, fix set -e cargo check and rustup tmpfile cleanup
- silence SC3043 by declaring dash dialect (local is supported)
- quote unquoted vars (SC2086/SC1090)
- fix set -e aborting arch install before cargo check
- fix install_cargo removing unset $archive instead of $rustup
- make brew upgrade fallback a real if-then-else (SC2015)
- drop leftover starship BASE_URL and debug echo $1
2026-06-08 10:16:00 +02:00
Christian Visintin 2a7d48a92b ci: unify os workflows into one 2026-06-08 10:16:00 +02:00
Christian Visintin 82141e7f2b chore: remove ko-fi 2026-06-08 10:16:00 +02:00
Christian Visintin 14bc15cfca chore(site): update og_preview 2026-06-08 10:16:00 +02:00
Christian Visintin 85fa99e4cc docs(zh): fix keyring deep-link anchor to translated heading slug 2026-06-08 10:16:00 +02:00
Christian Visintin 3ff3cdb587 ci: add github pages workflow for docs site 2026-06-08 10:16:00 +02:00
Christian Visintin 726443ae21 docs: fix update command (termscp update, not --update) in READMEs 2026-06-08 10:16:00 +02:00
Christian Visintin 0bd449e7bc docs(zh): align README with root README, drop dead language links 2026-06-08 10:16:00 +02:00
Christian Visintin c24f08691d docs: drop extra language docs/READMEs, point manual links to docs.termscp.rs 2026-06-08 10:16:00 +02:00
Christian Visintin 14e6872432 docs: disable MD060 table alignment (incompatible with CJK width) 2026-06-08 10:16:00 +02:00
Christian Visintin 88900a80b8 docs(zh): translate cli reference and developer pages 2026-06-08 10:16:00 +02:00
Christian Visintin ce619bcff2 docs(zh): translate configuration pages 2026-06-08 10:16:00 +02:00
Christian Visintin 5a16467e71 docs(zh): translate usage pages 2026-06-08 10:16:00 +02:00
Christian Visintin b6ca8c57f0 docs(zh): translate section headings in getting-started pages 2026-06-08 10:16:00 +02:00
Christian Visintin 660c17a0df docs(zh): translate introduction and getting-started pages 2026-06-08 10:16:00 +02:00
Christian Visintin aed4ecc522 docs: scaffold zh-CN mdbook 2026-06-08 10:16:00 +02:00
Christian Visintin ee69ba6ef8 docs: add markdownlint config for docs site 2026-06-08 10:16:00 +02:00
Christian Visintin 0db3ea43d2 docs(en): fix CLI references (no -t / --update flags; -b is a value option) 2026-06-08 10:16:00 +02:00
Christian Visintin 6a61eb16f7 docs(en): write cli reference and developer pages 2026-06-08 10:16:00 +02:00
Christian Visintin e32ed613cc docs(en): write configuration pages 2026-06-08 10:16:00 +02:00
Christian Visintin dbd61f0fab docs(en): write usage pages 2026-06-08 10:16:00 +02:00
Christian Visintin a18fa0ca5a docs(en): write introduction and getting-started pages 2026-06-08 10:16:00 +02:00
Christian Visintin c8846266d7 docs: add en-US table of contents 2026-06-08 10:16:00 +02:00
Christian Visintin 40440832be docs: scaffold en-US mdbook 2026-06-08 10:16:00 +02:00
Christian Visintin 34c03841be docs: add CNAME for docs.termscp.rs 2026-06-08 10:16:00 +02:00
Christian Visintin ded71dce48 docs: add mdbook language switcher script 2026-06-08 10:16:00 +02:00
Christian Visintin eefa1b3db0 docs: add shared mdbook assets and favicon.ico 2026-06-08 10:16:00 +02:00
Christian Visintin a2d766d688 ci(site): add format/lint/test/build workflow for astro site
Add Site GitHub Actions workflow running prettier format check, astro
check, tests, and build on changes under site/. Wire prettier into the
site package with config, ignore, and scripts, and format existing
sources.
2026-06-08 10:16:00 +02:00
Christian Visintin f92cb93755 feat(install): add Windows PowerShell installer and copy buttons on site
Add install.ps1 mirroring install.sh for Windows: arch detection,
release zip download, binary extraction, user PATH update.

- copy install.ps1 to site public/ at build time (copy-install.mjs)
- serve /install.ps1 with text/plain Content-Type (vercel.json)
- add PowerShell one-liner to install page and README
- bump install.ps1 default version in bump_version.sh
- add CopyButton component next to every install command line
2026-06-08 10:16:00 +02:00
Christian Visintin d070825dd7 chore(install.sh): remove reference to changelog 2026-06-08 10:16:00 +02:00
Christian Visintin 3774156873 docs: replace last termscp.veeso.dev refs (install.sh manual/changelog, crate homepage) 2026-06-08 10:16:00 +02:00
Christian Visintin bbeefc557e fix(site): drop @ts-check on astro config to clear false vite type error 2026-06-08 10:16:00 +02:00
Christian Visintin 3ee21aba2f docs: point READMEs to termscp.rs + install.sh, docs.termscp.rs 2026-06-08 10:16:00 +02:00
Christian Visintin 6cf5bf18cf ci: remove pages workflow, fix release version-bump for astro site 2026-06-08 10:16:00 +02:00
Christian Visintin d7b7ab7fa1 feat(site): robots, sitemap reference, vercel redirects + cache headers 2026-06-08 10:16:00 +02:00
Christian Visintin 48b387de14 chore(site): remove ko-fi, add astro check dep, drop unused explorer media 2026-06-08 10:16:00 +02:00
Christian Visintin e381484022 refactor(site): english-only, remove i18n machinery 2026-06-08 10:16:00 +02:00
Christian Visintin 203a6da387 build(site): copy install.sh from repo root at build time (single source) 2026-06-08 10:16:00 +02:00
Christian Visintin 3379940ec9 feat(site): install page led by install.sh script, package-manager tabs 2026-06-08 10:16:00 +02:00
Christian Visintin 2153164484 fix(site): hero selected-row contrast (latte) + mobile row truncation 2026-06-08 10:16:00 +02:00
Christian Visintin 0cc7362bd9 refactor(site): drop in-site manual, link to external docs.termscp.rs 2026-06-08 10:16:00 +02:00
Christian Visintin 5c84a0e88d feat(site): landing page with dual-pane explorer hero 2026-06-08 10:16:00 +02:00
Christian Visintin a25b17a4e5 feat(site): responsive mobile nav, css-driven theme icons, localizePath helper 2026-06-08 10:16:00 +02:00
Christian Visintin d670aed079 feat(site): nav, footer, theme toggle, language picker 2026-06-08 10:16:00 +02:00
Christian Visintin 6fa3c042b1 feat(site): x-default hreflang, twitter card, og:image:alt; dedupe locales/site in base layout 2026-06-08 10:16:00 +02:00
Christian Visintin fc7e789390 feat(site): base layout with og/hreflang, theme bootstrap, umami 2026-06-08 10:16:00 +02:00
Christian Visintin 3c4356af92 fix(site): robust man-fetch invocation guard, add timeout+retry 2026-06-08 10:16:00 +02:00
Christian Visintin ba513850c1 feat(site): build-time man.md fetcher pinned to release ref 2026-06-08 10:16:00 +02:00
Christian Visintin f56dd60868 refactor(site): type-safe i18n keys derived from en 2026-06-08 10:16:00 +02:00
Christian Visintin f544a63d19 feat(site): i18n string resolver with en fallback 2026-06-08 10:16:00 +02:00
Christian Visintin 02fec64d35 feat(site): catppuccin theme tokens, tailwind 4, self-hosted font 2026-06-08 10:16:00 +02:00
Christian Visintin a54ff078cc chore(site): scaffold astro project, remove legacy SPA 2026-06-08 10:16:00 +02:00
Christian Visintin c27748272d chore: gitignore .superpowers brainstorm artifacts 2026-06-08 10:16:00 +02:00
Christian Visintin f6d65cf09d ci: fix release notes generation in release workflow
Deploy static content to Pages / deploy (push) Has been cancelled
codeberg-mirror / mirror (push) Has been cancelled
Install.sh / build (macos-latest) (push) Has been cancelled
Install.sh / build (ubuntu-latest) (push) Has been cancelled
Linux / build-linux (push) Has been cancelled
MacOS / build-macos (push) Has been cancelled
Windows / build-windows (push) Has been cancelled
prepare job failed: git-cliff --latest crashed with 'trim_start_matches on
null' because the checkout was shallow (no tags/history) so no release existed.

- checkout prepare with fetch-depth: 0 + fetch-tags so git-cliff sees full
  history and tags (also fixes an otherwise-truncated CHANGELOG)
- generate release notes with --unreleased --tag v$VERSION instead of --latest:
  --latest selected the previous real tag (stale notes); --unreleased --tag
  renders the version being released
2026-06-07 19:16:00 +02:00