Skip to content
Merged
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: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ edition = "2021"
readme = "README.md"
license = "MIT"
authors = ["spencerwooo <spencer.woo@outlook.com>"]
homepage = "https://github.com/spencerwooo/mihoro"
repository = "https://github.com/spencerwooo/mihoro"
homepage = "https://github.com/Pectics/mihoto"
repository = "https://github.com/Pectics/mihoto"
keywords = ["cli", "clash", "network", "linux", "mihomo"]
categories = ["command-line-utilities"]

Expand Down
32 changes: 32 additions & 0 deletions NOTICE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Mihoto Fork Notice

Mihoto is a fork of [spencerwooo/mihoro](https://github.com/spencerwooo/mihoro),
the Rust-based Mihomo CLI client for Linux.

The fork keeps the upstream Git history and the original MIT license text in
`LICENSE`. The original copyright notice remains:

```text
Copyright (c) 2023 Spencer (Shangbo Wu)
```

## Fork Baseline

- Upstream repository: `spencerwooo/mihoro`
- Fork repository: `Pectics/mihoto`
- Upstream baseline tag: `mihoro-v0.14.0-base`
- Baseline commit: `e31827ed257e7ce97217cd0a2dbcd1ef96dbac7f`
- Baseline upstream release: `v0.14.0`

The `mihoro-v0.14.0-base` tag marks the upstream release baseline used to start
Mihoto governance work. It is intended to be immutable.

## Attribution Policy

- Preserve upstream Git history whenever possible.
- Preserve upstream authorship when porting commits.
- Prefer `git cherry-pick -x` when taking code from upstream commits.
- Reference upstream issues or pull requests in Mihoto issues and PRs when they
motivate a change.
- Keep mechanical rename work separate from behavior changes and architecture
changes.
24 changes: 17 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
<div align="center">
<div><img src="https://github.com/user-attachments/assets/b292facf-b4d0-4087-b33c-e9ffba061e73" alt="mihoro banner" width="512" /></div>

<a href="https://github.com/spencerwooo/mihoro/actions/workflows/ci.yml">
<img src="https://github.com/spencerwooo/mihoro/actions/workflows/ci.yml/badge.svg" alt="CI">
<a href="https://github.com/Pectics/mihoto/actions/workflows/ci.yml">
<img src="https://github.com/Pectics/mihoto/actions/workflows/ci.yml/badge.svg" alt="CI">
</a>
<a href="https://github.com/spencerwooo/mihoro/actions/workflows/release.yml">
<img src="https://github.com/spencerwooo/mihoro/actions/workflows/release.yml/badge.svg" alt="Release">
<a href="https://github.com/Pectics/mihoto/actions/workflows/release.yml">
<img src="https://github.com/Pectics/mihoto/actions/workflows/release.yml/badge.svg" alt="Release">
</a>
<a href="https://github.com/spencerwooo/mihoro/releases/latest">
<img src="https://img.shields.io/github/v/release/spencerwooo/mihoro" alt="GitHub release (latest by date)">
<a href="https://github.com/Pectics/mihoto/releases/latest">
<img src="https://img.shields.io/github/v/release/Pectics/mihoto" alt="GitHub release (latest by date)">
</a>
</div>

---

**mihoro** - The 🦀 Rust™-based [Mihomo](https://github.com/MetaCubeX/mihomo) CLI client on Linux.

Mihoto is a safety-focused fork of [spencerwooo/mihoro](https://github.com/spencerwooo/mihoro).
The inherited CLI, binary, package, and config names remain `mihoro` until
dedicated rename PRs change them. See [NOTICE.md](NOTICE.md) and
[docs/fork-baseline.md](docs/fork-baseline.md) for fork attribution, the
`mihoro-v0.14.0-base` baseline tag, and CI expectations.

- Setup, update, apply overrides, and manage with systemd. **No more, no less.**
- No root privilege required. Maintains per-user instance.
- First-class support for config subscription.
Expand All @@ -24,6 +30,9 @@

## Install

Until Mihoto publishes its own release artifacts, the install commands below
continue to install upstream `mihoro` release builds.

```shell
curl -fsSL https://raw.githubusercontent.com/spencerwooo/mihoro/main/install.sh | sh
```
Expand Down Expand Up @@ -252,4 +261,5 @@ Web-based dashboards require enabling `external_controller` under `[mihomo_confi

## License

[MIT](LICENSE)
[MIT](LICENSE). Mihoto preserves the upstream Mihoro license and author
attribution; see [NOTICE.md](NOTICE.md).
61 changes: 61 additions & 0 deletions docs/fork-baseline.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Fork Baseline and CI Policy

Mihoto starts as a safety-focused fork of
[spencerwooo/mihoro](https://github.com/spencerwooo/mihoro). This document fixes
the fork provenance, naming boundary, and CI expectations for early Mihoto work.

## Provenance

- `origin` is `Pectics/mihoto`.
- `upstream` is `spencerwooo/mihoro`.
- `mihoro-v0.14.0-base` marks upstream `v0.14.0` at commit
`e31827ed257e7ce97217cd0a2dbcd1ef96dbac7f`.
- The baseline tag is intended to be immutable. Do not move or force-update it.
- Ported upstream code should preserve authorship and include upstream references
in issues, commits, or PR descriptions.

## Rename Matrix

Mihoto is the fork and roadmap name. The inherited CLI remains `mihoro` until a
dedicated rename PR changes each surface deliberately.

| Surface | Current value | Baseline decision |
| --- | --- | --- |
| GitHub repository | `Pectics/mihoto` | Fork identity |
| Upstream repository | `spencerwooo/mihoro` | Attribution and sync source |
| Cargo package | `mihoro` | Keep until mechanical rename |
| Binary | `mihoro` | Keep until mechanical rename |
| Config file | `~/.config/mihoro.toml` | Keep until migration plan exists |
| User agent | `mihoro` | Keep until compatibility impact is reviewed |
| systemd service | `mihomo.service` | Keep; it manages Mihomo core |
| Release assets | `mihoro-<version>-<target>.tar.gz` | Keep until release rename plan |

Rename work must be split from behavior changes so that user-visible migrations
can be reviewed, tested, and rolled back independently.

## CI and Branch Protection Expectations

All Mihoto implementation work should use issue-linked pull requests against
`main`. The protected CI baseline is the `CI` workflow with these checks:

- `cargo fmt --all -- --check`
- `cargo clippy`
- `cargo check --all-targets`
- `cargo test --all-targets`

Branch protection is a repository setting, not a source-controlled file. The
expected GitHub setting for `main` is to require PRs and the `CI` status before
merge. If branch protection is changed, record that change in the linked issue or
PR.

## Safety Baseline

Early Mihoto work follows these rules:

- Updates, service changes, TUN/DNS changes, and migrations must be explicit,
validated, auditable, and recoverable.
- Subscription URLs, secrets, and authentication material must not appear in
logs, issues, or PR artifacts.
- Documentation-only PRs should say why no runtime tests were added.
- Rollback for documentation-only changes is a normal revert. The baseline tag
should not be deleted or moved as part of rollback.