Commit Graph

1403 Commits

Author SHA1 Message Date
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
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
Christian Visintin
930e76814f build: add chocolatey package, remove legacy dist build scripts
The old manual dist/build/* scripts and dist/{deb,rpm}.sh are superseded by the
automated release workflow. Add the chocolatey package consumed by release.yml.
2026-06-07 16:58:51 +02:00
Christian Visintin
cdd4c60805 ci: pin all actions to verified SHAs and clear zizmor findings
Pin every action to a commit SHA whose tag comment matches (verified via gh api),
add least-privilege permissions, set persist-credentials: false, and replace the
archived actions-rs/cargo with a plain cargo test. zizmor clean at default persona.
2026-06-07 16:58:51 +02:00
Christian Visintin
c652ca18b8 ci: automated release workflow
Single workflow_dispatch (version, dry_run) that bumps versions, regenerates
CHANGELOG via git-cliff, rebuilds site CSS, builds all targets, creates the
GitHub release, updates the Homebrew tap and publishes Chocolatey.

- dist/release/bump_version.sh: version replacer across all tracked locations (+tests)
- .github/workflows/release.yml: prepare -> build matrix -> homebrew/release -> choco
- retire build-artifacts.yml (merged into release.yml)
- Linux builds via cargo-zigbuild (old glibc) for broad compatibility
2026-06-07 16:58:51 +02:00
Christian Visintin
0ad18ea5e7 chore: update release date v1.0.0 2026-04-18 22:25:40 +02:00
Christian Visintin
2ed71c7ff8 chore: 1.0.0 changelog 2026-04-19 01:54:46 +05:30
Christian Visintin
49102985a4 ci: add linux and windows aarch64 build targets 2026-04-19 01:54:46 +05:30
Christian Visintin
bc59df494b fix: filter self-references and dot entries from remote directory listings
Some non-compliant FTP servers (e.g. LiteSpeed) include a self-reference
to the listed directory in the LIST response, causing the current folder
to appear as a duplicate entry in the explorer.

Closes #410
2026-04-19 01:54:46 +05:30
Christian Visintin
080c013fab build: upgrade remotefs-ssh to 0.8.3
closes #414
2026-04-19 01:54:46 +05:30
Christian Visintin
6252df2959 build: migrate to tui-realm 4.0
Upgrade tuirealm (3.x -> 4.0.0), tui-realm-stdlib (3 -> 4), tui-term
(0.2 -> 0.3). Apply all breaking changes from the 4.0 migration guide
across the termscp UI.

Key changes:

- Root-level re-exports removed; imports moved to module-qualified
  paths (`tuirealm::application`, `::component`, `::event`, `::props`,
  `::state`, `::subscription`, `::listener`, `::ratatui`). Same for
  stdlib component types (`tui_realm_stdlib::components::*`).
- `MockComponent` trait renamed to `Component`; old `Component` trait
  renamed to `AppComponent`. `#[derive(MockComponent)]` is now
  `#[derive(Component)]`. `Component::on` now takes `&Event<_>`.
- `TextSpan` replaced with `SpanStatic`/`LineStatic`/`TextStatic`
  (ratatui-based); tuple `(String, Alignment)` titles replaced with
  the new `Title` builder; `Alignment` split into
  `HorizontalAlignment`/`VerticalAlignment`; stdlib components use
  `.alignment_horizontal` instead of `.alignment`.
- `State::One`/`PropPayload::One` -> `Single`. `CmdResult::None`
  -> `NoChange`. `Props::get_or` removed; `Props::get` now returns a
  borrowed `Option<&AttrValue>` (call sites switched to
  `.and_then(AttrValue::as_*)`). `Component::query` returns
  `Option<QueryResult<'a>>`.
- `Attribute::HighlightedColor` -> `HighlightStyle` (a full `Style`).
  `.highlighted_*` helpers renamed to `.highlight_*`.
- `PollStrategy::UpTo(n)` now requires a `Duration`; tick timeout moved
  from `EventListenerCfg::poll_timeout` into `PollStrategy`.
- `TerminalBridge` removed; `Context` now holds
  `CrosstermTerminalAdapter` directly and enables raw mode + alternate
  screen explicitly. The `TerminalAdapter` trait is imported where its
  methods are used.
- `Update` trait removed; activity `update` methods are plain inherent
  functions.
- `ProgressBar` replaced by stdlib `Gauge`. Paragraph `.wrap` renamed
  to `.wrap_trim`; `.text` now takes an `Into<Text>`. Stdlib `List` row
  items are now individual lines (`Vec<Span>` per row) rather than a
  `Table` of spans; custom `FileList`/`Log` convert between the two
  models.
- Radio builders drop `.foreground(color)` so unselected items render
  with the terminal default foreground, and set
  `highlight_style(Style::default().fg(color).add_modifier(REVERSED))`
  so the selected entry is visibly highlighted only with the theme
  color.
- Custom `FileList` keeps the selected row highlighted with the full
  highlight style when focused and falls back to a foreground-only
  style when unfocused.
- Theme loading is now backwards compatible: `Theme` uses a custom
  `Deserialize` through an intermediate `ThemeFile` with optional
  fields, so missing keys, unknown values or legacy aliases
  (`transfer_progress_bar_full`/`_partial`) fall back to defaults on a
  per-field basis instead of failing the whole load.
2026-04-19 01:54:46 +05:30
Christian Visintin
9160c52cb0 build: remotefs-ssh 0.8.2
this version removes any usage of sh commands from the sftp backend and only uses pure protocol functions

closes #409
2026-04-19 01:54:46 +05:30
Christian Visintin
38f1fccfd0 build: remotefs-ssh 0.8.1 2026-04-19 01:54:46 +05:30
Christian Visintin
6ceaf048b5 fix: render progress bar immediately after mounting
Call self.view() right after mount_progress_bar() at all 6 call sites
so the bar is visible on screen before the transfer loop begins.
2026-04-19 01:54:46 +05:30
Christian Visintin
534c16427e fix: use time-based redraw interval instead of progress-delta threshold
The old 1% progress threshold caused the UI to appear frozen on large
files (e.g. 1GB) because many read/write iterations passed between
redraws. Switching to a 100ms time-based interval ensures consistent
UI responsiveness regardless of file size.
2026-04-19 01:54:46 +05:30
Christian Visintin
9b19240925 feat: consolidate theme progress bar fields into single transfer_progress_bar 2026-04-19 01:54:46 +05:30
Christian Visintin
0ddbf3b104 feat: update transfer loop to use unified TransferProgress 2026-04-19 01:54:46 +05:30
Christian Visintin
126e58503f feat: update progress bar display for new unified data model 2026-04-19 01:54:46 +05:30
Christian Visintin
0be8b60c7d feat: simplify progress bar layout to single component 2026-04-19 01:54:46 +05:30
Christian Visintin
4ed6b118ca feat: replace dual progress bar components with single TransferProgressBar 2026-04-19 01:54:46 +05:30
Christian Visintin
a48b226d9b feat: rework TransferProgress to track bytes with lazy estimation 2026-04-19 01:54:46 +05:30
Christian Visintin
e11af03fdd chore: enable safe clippy pedantic lints 2026-04-19 01:54:46 +05:30
Christian Visintin
f044e6ace2 docs: document ssh key storage API 2026-04-19 01:54:46 +05:30
Christian Visintin
e056afbd28 test: extend system regression coverage 2026-04-19 01:54:46 +05:30