First commit

This commit is contained in:
CyberRex
2026-07-31 14:39:33 +09:00
commit 38670efd46
103 changed files with 22514 additions and 0 deletions

32
AGENTS.md Normal file
View File

@@ -0,0 +1,32 @@
# AGENTS.md
このリポジトリは Mirakurun の Rust 実装です。
## 最優先
- 変更前に `/home/cyberrex/Mirakurun/development_status.md` と既存実装を確認する。
- Node.js 版 Mirakurun 4.1.3 の公開 API、設定、DB、ストリーム挙動との互換性を維持する。
- 不要なリファクタリングや整形変更をせず、既存の未コミット変更を巻き戻さない。
- Rust 版の実装、設計判断、検証、ブロッカー、予定変更が発生した場合は、同じ作業内で `/home/cyberrex/Mirakurun/development_status.md` を更新する。
- ステータスの完了項目には検証結果を伴わせ、未検証の項目を完了扱いにしない。
## Rust
- Rust 2024 Edition と `rust-version = "1.85"` を維持する。
- `cargo fmt --check``cargo clippy --workspace --all-targets --all-features -- -D warnings``cargo test --workspace --all-features`を基本検証とする。
- 本番コードで `unwrap``expect`、意図しない `panic!` を使用しない。
- Webハンドラー内でブロッキングI/Oを行わない。共有可変状態は用途ごとに分離し、ロックをawait境界を越えて保持しない。
- 公開型と永続化型ではSerdeのフィールド名、省略条件、整数幅を明示する。
## 構成
- `crates/mirakurun-types`: 公開API、設定、DBの型。
- `crates/mirakurun-core`: 設定、永続化、MPEG-TS/ARIB、チューナー、ジョブ。
- `crates/mirakurun-client`: TCP/Unixソケット対応クライアント。
- `crates/mirakurun-rs`: CLI、HTTP/WebSocketサーバー、Web UI。
## 互換性確認
- Node.js 版は `/home/cyberrex/Mirakurun` にある基準実装として扱う。
- API変更ではHTTPステータス、本文、nullと省略、ヘッダー、HEADの挙動を契約テストで確認する。
- TS処理変更では188バイト同期、PID、PAT/PMT、CRC、連続性カウンター、切断時の後処理を確認する。