Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,10 @@ If a required command fails or emits a warning from project code, fix it in the

## Lessons

- A pinned fallback does not pin an installer that tries `releases/latest`
first. Hiddify's automatic installer and manual fallback guide must use the
same tested release on Linux and Windows (ADR 0138).

- A fixed sleep does not prove a child has installed its signal handler on a
busy native runner. The graceful-stop fixture must read an explicit flushed
readiness message after handler installation, keep the child alive through
Expand Down
30 changes: 15 additions & 15 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ members = [
]

[workspace.package]
version = "6.2.91"
version = "6.2.92"
edition = "2021"
license = "MIT OR Apache-2.0"
rust-version = "1.88"
Expand Down
2 changes: 1 addition & 1 deletion apps/desktop/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@iran-split/desktop",
"version": "6.2.91",
"version": "6.2.92",
"private": true,
"type": "module",
"scripts": {
Expand Down
26 changes: 26 additions & 0 deletions docs/adr/0138-hiddify-5-5-5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# ADR 0138: Use Hiddify 5.5.5 for managed installation

## Status

Accepted

## Context

The Windows installer still downloaded Hiddify 4.1.1. Linux tried the mutable
`releases/latest` AppImage before falling back to 4.1.1, so the platforms could
install different versions.

## Decision

- Pin managed Hiddify downloads and manual installation guides to the official
[5.5.5 release](https://github.com/hiddify/hiddify-app/releases/tag/v5.5.5).
- Linux downloads its versioned x64 AppImage directly. Windows retains the
versioned x64 portable ZIP followed by the setup executable fallback.
- Preserve discovery of existing installations and their settings. This change
selects the version for new managed installations; it does not replace an
existing external client automatically.

## Validation

A cross-platform unit test checks the exact Linux and Windows asset URLs and
that the manual guide uses the same download as automatic installation.
1 change: 1 addition & 0 deletions docs/adr/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,3 +141,4 @@ Keep this index current. Add a new ADR for each non-obvious change, or update th
| [0135](./0135-serialized-native-lifecycle.md) | Serialize native release and budget lifecycle replies | Accepted |
| [0136](./0136-preserve-completed-proxy-handoff.md) | Preserve a completed proxy handoff on repeated Stop and Quit | Accepted |
| [0137](./0137-inactive-host-dns-evidence.md) | Record classified host DNS answers while disconnected | Accepted |
| [0138](./0138-hiddify-5-5-5.md) | Use Hiddify 5.5.5 for managed installation | Accepted |
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "iran-split-desktop-workspace",
"version": "6.2.91",
"version": "6.2.92",
"private": true,
"packageManager": "pnpm@9.0.1",
"engines": {
Expand Down
39 changes: 28 additions & 11 deletions src-tauri/src/deps.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use tracing::{info, warn};

const USER_AGENT: &str = concat!("BiFlow/", env!("CARGO_PKG_VERSION"));
const MAX_DOWNLOAD_BYTES: usize = 180 * 1024 * 1024;
const HIDDIFY_VERSION: &str = "v4.1.1";
const HIDDIFY_VERSION: &str = "v5.5.5";
const MIHOMO_VERSION: &str = "v1.19.29";
const MIHOMO_LINUX_SHA256: &str =
"9c397be7489538628fae781bc005e4c5b8cd7b0961b8bb2ca815c8150f193577";
Expand Down Expand Up @@ -372,11 +372,7 @@ async fn install_hiddify(data: &Path) -> Result<PathBuf, DepsError> {
}

async fn install_hiddify_linux(data: &Path) -> Result<PathBuf, DepsError> {
let bytes = download_first(&[
hiddify_linux_appimage_url(),
hiddify_linux_appimage_pinned_url(),
])
.await?;
let bytes = download(&hiddify_linux_appimage_url()).await?;
if !is_elf(&bytes) {
return Err(DepsError::Integrity(
"Hiddify AppImage is not an ELF binary".into(),
Expand Down Expand Up @@ -575,11 +571,6 @@ fn mihomo_file_name() -> &'static str {
}

fn hiddify_linux_appimage_url() -> String {
"https://github.com/hiddify/hiddify-app/releases/latest/download/Hiddify-Linux-x64-AppImage.AppImage"
.into()
}

fn hiddify_linux_appimage_pinned_url() -> String {
format!(
"https://github.com/hiddify/hiddify-app/releases/download/{HIDDIFY_VERSION}/Hiddify-Linux-x64-AppImage.AppImage"
)
Expand Down Expand Up @@ -867,6 +858,32 @@ mod tests {
assert!(!url_allowed("https://example.com/hiddify"));
}

#[test]
fn hiddify_downloads_and_manual_guide_use_5_5_5() {
let release = "https://github.com/hiddify/hiddify-app/releases/download/v5.5.5";
assert_eq!(
hiddify_linux_appimage_url(),
format!("{release}/Hiddify-Linux-x64-AppImage.AppImage")
);
assert_eq!(
hiddify_windows_portable_url(),
format!("{release}/Hiddify-Windows-Portable-x64.zip")
);
assert_eq!(
hiddify_windows_setup_url(),
format!("{release}/Hiddify-Windows-Setup-x64.exe")
);
let guide = install_guide(DependencyId::Hiddify);
assert_eq!(
guide.download_url,
if cfg!(target_os = "windows") {
hiddify_windows_setup_url()
} else {
hiddify_linux_appimage_url()
}
);
}

#[test]
fn opens_biflow_repository_links() {
assert!(open_url_allowed("https://github.com/devlifeX/BiFlow"));
Expand Down
2 changes: 1 addition & 1 deletion src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "BiFlow",
"version": "6.2.91",
"version": "6.2.92",
"identifier": "app.biflow.desktop",
"build": {
"beforeDevCommand": "pnpm bundle:check && pnpm --dir apps/desktop dev",
Expand Down
2 changes: 1 addition & 1 deletion version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6.2.91
6.2.92
Loading