Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
4d024e8
delete v0.0.x
771-8bit Dec 16, 2025
48bacb8
Create plan.md
771-8bit Dec 19, 2025
2b7f94f
Create gemini.md
771-8bit Dec 19, 2025
fb5db1d
Create prompts.md
771-8bit Dec 19, 2025
d48679f
phase1-2
771-8bit Dec 19, 2025
3a0be37
phase1
771-8bit Dec 20, 2025
7bcd698
phase2
771-8bit Dec 20, 2025
050b2e2
refactor
771-8bit Dec 20, 2025
450d1cf
rename
771-8bit Dec 20, 2025
9502660
fix
771-8bit Dec 20, 2025
c07fb07
Update plan.md
771-8bit Dec 20, 2025
b0e0325
fix
771-8bit Dec 20, 2025
cfe4f9b
virtua
771-8bit Dec 20, 2025
6547a16
pre3
771-8bit Dec 20, 2025
e3cf647
phase3
771-8bit Dec 21, 2025
1bc8d86
pre4
771-8bit Dec 21, 2025
43dec2b
Update rust-ci.yml
771-8bit Dec 21, 2025
400adcd
multiplatform
771-8bit Dec 21, 2025
0075aa5
phase4
771-8bit Dec 22, 2025
08a15dc
chore: update package-lock.json and refine README for CI
771-8bit Dec 22, 2025
c424d25
phase5
771-8bit Dec 22, 2025
612e6d2
phase6-1
771-8bit Dec 22, 2025
85d634f
add plotter_test
771-8bit Dec 22, 2025
38dab27
frontend-ci
771-8bit Dec 22, 2025
fce4012
Update rust-ci.yml
771-8bit Dec 23, 2025
28bf7d7
refactor
771-8bit Dec 23, 2025
15dcc40
fix
771-8bit Dec 23, 2025
236daa5
Create security-audit.yml
771-8bit Dec 23, 2025
0de0e73
phase6-2
771-8bit Dec 27, 2025
d2bd4d1
fix
771-8bit Dec 27, 2025
ecfe77d
fix scroll
771-8bit Dec 28, 2025
a78f089
fix
771-8bit Dec 28, 2025
a7ccfd8
copy
771-8bit Dec 28, 2025
d632ad7
fix
771-8bit Dec 28, 2025
cd3bffe
pre-7
771-8bit Dec 28, 2025
33efce2
Update 07_plotter_spec.md
771-8bit Dec 29, 2025
93f51e9
phase7 ab
771-8bit Dec 29, 2025
86e02a2
phase c
771-8bit Dec 29, 2025
9ad6528
phase7 c
771-8bit Dec 29, 2025
2d03dec
fmt
771-8bit Dec 29, 2025
449518f
refactor plotter 1
771-8bit Dec 29, 2025
0f1dd11
css ci
771-8bit Dec 29, 2025
49482b0
fix
771-8bit Dec 29, 2025
9d67119
refactor plotter
771-8bit Dec 30, 2025
c81a761
fix plot
771-8bit Jan 2, 2026
ceacd29
fix memory-leak
771-8bit Jan 3, 2026
42b3075
プロッタLIVE表示の刷新と全面バグ修正、体系的テスト基盤の追加
771-8bit Sep 3, 2026
6b64373
システムズエンジニアリング設計資料一式(docs/20-25)を追加
771-8bit Sep 3, 2026
04711fa
CI統合・Linuxジョブ・リリース/winget(承認ゲート付き)ワークフロー、E2Eハーネス永続化
771-8bit Sep 3, 2026
880bf42
製品アイデンティティ確定とREADME全面改訂
771-8bit Sep 3, 2026
ad0b573
Linux実証(WSL2)の指摘修正: clippy厳格ゲート・バイナリ名・deb依存・E2Eハーネス
771-8bit Sep 3, 2026
567d015
CI失敗の修正(Prettier改行・cargo-about)とC#時代アプリアイコンの復元
771-8bit Sep 3, 2026
ca4c6ab
AI Bridge + MCPアダプタ実装、スコープ決定の反映(GAP-04/07/08/09解消)
771-8bit Sep 3, 2026
5ed06b2
README: AI連携を主要機能として前面化
771-8bit Sep 3, 2026
88f50c3
README: translate to English
771-8bit Sep 3, 2026
ab16fb3
MCPアダプタをアプリ本体に内蔵し、AI連携ガイドをGUIから提供
771-8bit Sep 3, 2026
619429f
fix: 接続拒否行が RST で失われる競合を解消(Windows CI の flake 修正)
771-8bit Sep 3, 2026
040b64e
README用スクリーンショットを撮り直し
771-8bit Sep 3, 2026
8b3fc05
E2Eを再現可能にし、MCPスモークをCIに組み込む(GAP-31ほぼ解消)
771-8bit Sep 3, 2026
6f04cfa
README: h2 見出しに絵文字を追加
771-8bit Sep 3, 2026
3424076
docs: 使い方ドキュメントを英語化
771-8bit Sep 3, 2026
9bba559
Picoテストファームを組み込みRust化し、実機データ完全性テストをPASS
771-8bit Sep 3, 2026
2be2d65
docs: T2-4 メモリソーク(実機10分)の結果を記録 — リーク未検出
771-8bit Sep 4, 2026
2e95d3c
Tier 2: CHANGELOG追加、ペアワイズE2E回帰(7/7)、ミューテーション差分
771-8bit Sep 4, 2026
4d439aa
fix: bridge.rs のテストを cargo fmt に合わせる(CI fmt 修正)
771-8bit Sep 4, 2026
1355441
docs: T2-3 bridge.rs 再測定結果を反映(missed 8→1)
771-8bit Sep 4, 2026
af095bb
T2-3/T2-4: 完走ミューテーション結果を正直に記録し、純ロジックの穴を補強
771-8bit Sep 4, 2026
a865419
docs: T2-3 検証再測定の確定値を記録(57→46 missed, 73.6%→78.7%)
771-8bit Sep 4, 2026
fec2cc1
docs: 高レート受信でもトークンを浪費しない AI API 設計 (26)
771-8bit Sep 4, 2026
a1d2368
fix(mcp): serial_wait_for の読み負けを解消し、蓄積を定数メモリに保つ
771-8bit Sep 4, 2026
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
77 changes: 16 additions & 61 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,63 +1,18 @@
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary

###############################################################################
# behavior for image files
# 改行コードの正規化: テキストはリポジトリ・チェックアウトとも常に LF。
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary
# 根拠: CI の Windows ランナーは core.autocrlf=true のため、指定がないと
# チェックアウトが CRLF になり、prettier(endOfLine: "lf" 既定)が
# 「全ファイル違反」で落ちる(2026-09-03 の CI 初回失敗の原因)。
* text=auto eol=lf

###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain
# バイナリ
*.png binary
*.gif binary
*.ico binary
*.icns binary
*.exe binary
*.msi binary
*.dmg binary
*.AppImage binary
*.woff binary
*.woff2 binary
150 changes: 150 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
# リリースゲート Tier 1(docs/25_release_strategy.md §3.2)。
# docs/24_vv_plan.md §9.1 の必須ゲート 7 項目をすべてここで通す。
#
# E2E(com0com + UIA)・ペアワイズ・ミューテーション・メモリソーク・実機 Pico は
# Tier 2(開発機で手動〜半自動)で実施する。ホストランナーでは
# com0com のカーネルモードドライバを入れられず、UI Automation に必要な
# 対話的デスクトップセッションも無いため、CI では回さない。詳細は docs/25 §3.4。
#
# ただし MCP まわりは GUI 不要の範囲を CI で回す:
# - MCP smoke (Node): mcp/server.mjs の偽ブリッジ結合(mcp/smoke.mjs)
# - MCP stdio smoke: ビルドした実バイナリを --mcp で起動し、実パイプ越しに
# JSON-RPC を検証(test_tools/e2e/mcp_stdio_smoke.py。両 OS)
#
# ジョブは windows-latest と ubuntu-22.04 の 2 本(どちらも正式サポート対象 OS)。
# 両者は依存関係を持たせず並列に走らせる。macOS を含む 3 OS マトリクスは
# 引き続き rust-ci.yml(週次の定点観測)が担当する。
# windows-latest には WebView2 が同梱されているため、Tauri のビルド依存は追加不要。
# ubuntu 側は WebKitGTK 一式を apt で入れる(後述 Install Linux dependencies)。
# cargo test はバンドルを作らないので tauri CLI も要らない。

name: CI

on:
push:
branches: [dev, master]
pull_request:

env:
CARGO_TERM_COLOR: always

jobs:
test:
name: Test (windows-latest)
runs-on: windows-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt

- name: Cache cargo build
uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri

- name: Install dependencies
run: npm ci

# 以降は「速く落ちるものから順」に並べる(fast-fail)。
- name: Type check
run: npx tsc --noEmit

- name: ESLint
run: npx eslint .

- name: Prettier
run: npx prettier --check "src/**/*.{ts,tsx,css}" "*.{json,js,ts}"

- name: Vitest
run: npx vitest run

- name: Frontend production build
run: npm run build

- name: Rust format
run: cargo fmt -- --check
working-directory: src-tauri

- name: Rust clippy
run: cargo clippy --all-targets -- -D warnings
working-directory: src-tauri

# 単体 + プロパティ(8 件)+ 状態遷移 0-switch / 1-switch(49 順序対)。
- name: Rust tests
run: cargo test
working-directory: src-tauri

# Node 版 MCP アダプタの結合スモーク(偽ブリッジ。docs/23 SYS-F-1105)
- name: MCP smoke (Node)
run: |
npm ci
node smoke.mjs
working-directory: mcp

# 内蔵 MCP アダプタ(--mcp)を実プロセス・実パイプで検証(SYS-F-1107)。
# cargo test 直後なので依存はビルド済み、bin の追加ビルドは差分のみ。
- name: Build app binary
run: cargo build --bin serial-monitor-essential
working-directory: src-tauri

- name: MCP stdio smoke (built binary)
run: python test_tools/e2e/mcp_stdio_smoke.py --exe src-tauri/target/debug/serial-monitor-essential.exe

# Linux(Ubuntu 22.04+ x64)正式サポートに伴うバックエンド検査。
# test ジョブとは needs で繋がず並列に走らせる(両方の結果を 1 回の push で得る)。
test-linux:
name: Test (ubuntu-22.04)
runs-on: ubuntu-22.04

steps:
- name: Checkout code
uses: actions/checkout@v4

# Tauri 2 の Linux ビルド依存一式。libudev-dev は serialport クレートが
# ポート列挙に使う libudev-sys のリンクに必須(無いと pkg-config で落ちる)。
- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libxdo-dev libsoup-3.0-dev libjavascriptcoregtk-4.1-dev libudev-dev build-essential pkg-config libssl-dev

- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy

# rust-cache は OS/arch を自動で鍵に含めるが、release.yml の Linux ジョブとは
# 用途が違うので key を明示して分離しておく。
- name: Cache cargo build
uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri
key: linux-ci
prefix-key: v0-rust-linux

# フロントエンド検査(tsc / eslint / prettier / vitest)は OS 非依存なので windows ジョブのみで走らせ、ここでは重複させない。
- name: Rust clippy
run: cargo clippy --all-targets -- -D warnings
working-directory: src-tauri

- name: Rust tests
run: cargo test
working-directory: src-tauri

# Linux バイナリでも内蔵 MCP アダプタが動くことを実プロセスで確認
- name: Build app binary
run: cargo build --bin serial-monitor-essential
working-directory: src-tauri

- name: MCP stdio smoke (built binary)
run: python3 test_tools/e2e/mcp_stdio_smoke.py --exe src-tauri/target/debug/serial-monitor-essential
116 changes: 116 additions & 0 deletions .github/workflows/frontend-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
name: Frontend CI (auxiliary checks)

# 役割: 補助検査(未使用 CSS 検出など)。
# Tier 1 の必須ゲートは ci.yml に統合済み — docs/25 §3.2。
# 旧トリガは main ブランチ前提で PR には発火していなかったため、
# 手動 + 週次スケジュールに変更(2026-09-03)。
on:
workflow_dispatch:
schedule:
- cron: '0 3 * * 1' # 毎週月曜 03:00 UTC

jobs:
lint:
name: ESLint
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'

- name: Install dependencies
run: |
rm -rf node_modules package-lock.json
npm install

- name: Run ESLint
run: npm run lint

unused-css:
name: Unused CSS
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'

- name: Install dependencies
run: |
rm -rf node_modules package-lock.json
npm install

- name: Check for unused CSS
run: npm run lint:css-unused

format:
name: Prettier
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'

- name: Install dependencies
run: |
rm -rf node_modules package-lock.json
npm install

- name: Check formatting
run: npm run format:check

typecheck:
name: TypeScript
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'

- name: Install dependencies
run: |
rm -rf node_modules package-lock.json
npm install

- name: Run type check
run: npx tsc --noEmit

test:
name: Vitest
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'

- name: Install dependencies
run: |
rm -rf node_modules package-lock.json
npm install

- name: Run tests
run: npm run test
Loading
Loading