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
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@ assets/*.png

# Claude Code local runtime state (session-specific, not portable)
.claude/

# エージェント向けのローカルメモ。**このリポジトリは公開されている**ので、
# 手元のマシン固有の事情(アカウントの使い分け、認証、個人の作業手順)は
# ここに置き、リポジトリには入れない。誰の環境でも同じ設計の話は
# docs/ARCHITECTURE.md へ。
CLAUDE.md
AGENTS.md
cues.old/

# 更新の記録(npm/コピー導入時にのみ作られる、その環境固有の値)
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

## `03` 設計上、再提案をお断りしているもの

過去に検討して却下したものがあります。理由は [CLAUDE.md](CLAUDE.md) の "Rejected designs" に
過去に検討して却下したものがあります。理由は [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) の "Rejected designs" に
書いてありますので、提案の前に目を通してください。

- Cue 間の継承(`extends`)
Expand All @@ -47,7 +47,7 @@ npm run validate-cues # Cue のスキーマ検証
npm run check-package # 配布物に素材が混ざっていないか
```

詳しくは [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md)、設計の背景は [CLAUDE.md](CLAUDE.md)、
詳しくは [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md)、設計の背景は [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)、
ドキュメントを書くときは [docs/STYLE.md](docs/STYLE.md) を参照してください。

## `05` コミットメッセージ
Expand Down
13 changes: 13 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,19 @@ VoiSona Talk が起きてないか、REST API が有効になってないか、
| 新しい表情を作りたい | [docs/CUE_AUTHORING.md](docs/CUE_AUTHORING.md) |
| わたしの性格を変えたい | [docs/PERSONA.md](docs/PERSONA.md) |
| **中のコードを直したい** | [docs/](docs/README.md) — 開発者向けの資料はこっちに全部ある |
| なぜこの設計なのか知りたい | [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) — 設計判断と、そう決めた理由 |

> [!NOTE]
> **AI エージェントへ。** このリポジトリに `CLAUDE.md` / `AGENTS.md` は**ありません**。
> 公開リポジトリなので、それらは手元固有のメモ(アカウントの使い分け、認証、個人の
> 作業手順)専用として `.gitignore` してあります。**自動で読まれるファイルが無い**ので、
> コードに触る前に自分で **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** を開いて
> ください。二つの Electron プロセスの分担、Cue の仕組み、意図的に却下した設計まで
> 全部そこにあります——読まずに書くと、たいてい却下済みの案を再発明します。
>
> 用語(Idling / Cue / EventCue …)は [VISION.md](VISION.md)、準備とコマンドは
> [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md)。手元のメモを残すなら `CLAUDE.md` に
> 書けば、コミットに混ざりません。
| 手伝ってくれるなら | [CONTRIBUTING.md](CONTRIBUTING.md) — 歓迎するもの/お断りするもの |

---
Expand Down
19 changes: 12 additions & 7 deletions CLAUDE.md → docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
# CLAUDE.md
# アーキテクチャ — 設計判断と、そう決めた理由

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
> **コードを直すとき**に読みます。準備とコマンドは [DEVELOPMENT.md](DEVELOPMENT.md)、
> 用語は [../VISION.md](../VISION.md) に。
>
> ここは**誰の環境でも同じこと**だけを書く場所です。手元のマシン固有の事情
> (アカウントの使い分け、認証、個人の作業手順)は、git 管理外の `CLAUDE.md` /
> `AGENTS.md` に置いてください——このリポジトリは公開されています。

## What this is

Expand Down Expand Up @@ -398,11 +403,11 @@ not 「あたし」**) and for calling the user 「きみ」.
ドラッグして離すと、近ければ画面の**下の隅**へ吸い寄せられる。実装の全部が、
一つの事実から出ている——**窓の矩形と「彼女に見える範囲」は全然違う**。

窓は 420x680 だが、実測した透明帯は左100px・右119px・上175px・下7.5px。PSD
3541x5016 もあるのは万歳のように腕を広げるポーズのための幅で、`default` の彼女は
その中央に立っているにすぎない。だから窓の右下を画面の右下に合わせても、彼女は
隅から119px浮いて見える——「吸い付いた」と読めない距離で、最初の実装はこれで
失敗した。目が見ているのは彼女であって窓ではないので、**着地点もしきい値も実
窓は 420x680 だが、絵が乗っているのはその一部だけだ。PSD が縦横とも数千pxある
のは万歳のように腕を広げるポーズのための幅で、`default` の彼女はその中央に立って
いるにすぎない。**どれだけ浮くかは PSD 次第**——開発時の素材では左右に100px前後の
透明帯があり、窓の右下を画面の右下に合わせても彼女は隅から100px以上浮いて見えた。
「吸い付いた」と読めない距離で、最初の実装はこれで失敗している。目が見ているのは彼女であって窓ではないので、**着地点もしきい値も実
ピクセルで測る**。

その箱はレンダラが合成後のキャンバスのアルファを走査して出し
Expand Down
6 changes: 3 additions & 3 deletions docs/DEVELOPMENT.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 開発ガイド

> **ういちゃんMCP そのものを直すとき**に読みます。設計判断とその理由は [../CLAUDE.md](../CLAUDE.md)、用語は [../VISION.md](../VISION.md) に。
> **ういちゃんMCP そのものを直すとき**に読みます。設計判断とその理由は [ARCHITECTURE.md](ARCHITECTURE.md)、用語は [../VISION.md](../VISION.md) に。

---

Expand Down Expand Up @@ -143,8 +143,8 @@ flowchart LR
VoiSona Talk は MCP 起動時と `set_cue` のたびに、落ちていれば起こし直されます
- **エージェント名** — MCP クライアント情報から自動取得(`UI_CHAN_AGENT_NAME` で上書き可)

より詳しい実装のガイドは [CLAUDE.md](../CLAUDE.md) を参照。
より詳しい実装のガイドは [ARCHITECTURE.md](ARCHITECTURE.md) を参照。

---

<sub>次に読むなら [../CLAUDE.md](../CLAUDE.md)(実装ガイド) / [STYLE.md](STYLE.md)(ドキュメントを書くとき)</sub>
<sub>次に読むなら [ARCHITECTURE.md](ARCHITECTURE.md)(実装ガイド) / [STYLE.md](STYLE.md)(ドキュメントを書くとき)</sub>
2 changes: 1 addition & 1 deletion docs/PERSONA.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,4 @@ MCP が渡せるのはツール(=身体)だけです。**キャラクタ

---

<sub>次に読むなら [TOOLS.md](TOOLS.md)(人格が使うツール) / [../CLAUDE.md](../CLAUDE.md)(実装の詳細)</sub>
<sub>次に読むなら [TOOLS.md](TOOLS.md)(人格が使うツール) / [ARCHITECTURE.md](ARCHITECTURE.md)(実装の詳細)</sub>
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
| やりたいこと | 読むもの |
|---|---|
| 開発を始める(準備・コマンド・全体像) | [DEVELOPMENT.md](DEVELOPMENT.md) |
| コードを直す(設計判断と、その理由) | [../CLAUDE.md](../CLAUDE.md) |
| コードを直す(設計判断と、その理由) | [ARCHITECTURE.md](ARCHITECTURE.md) |
| 用語を確認する(Idling / Cue / EventCue …) | [../VISION.md](../VISION.md) |
| 新しい表情(Cue)を足す | [CUE_AUTHORING.md](CUE_AUTHORING.md) → レイヤー名は [PSD_LAYERS.md](PSD_LAYERS.md) |
| 性格・口調を変える | [PERSONA.md](PERSONA.md) |
Expand Down
2 changes: 1 addition & 1 deletion docs/STYLE.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ GitHub Alerts は種類ごとに色が付く。**用途を固定して、色が
| `README.md` | **ういちゃん本人**。「わたし」「きみ」。使う人向けの案内 |
| `docs/` | **書き手**。です・ます。事実と理由を淡々と |
| `persona/` `context/` | ドキュメントではない。**AI に注入される設定**。触ると振る舞いが変わる |
| `CLAUDE.md` | 実装者向け。英語。設計判断と、そう決めた理由 |
| `docs/ARCHITECTURE.md` | 実装者向け。設計判断と、そう決めた理由。**誰の環境でも同じことだけ**を書く(公開リポジトリなので、手元固有の事情は git 管理外の `CLAUDE.md` へ) |

> [!IMPORTANT]
> `docs/` でういちゃんの口調を真似しない。**楽しいのは README だけでいい。**
Expand Down
10 changes: 5 additions & 5 deletions src/renderer/psd-stage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -320,11 +320,11 @@ export class PsdStage {
* いま描かれている絵の**不透明な部分**が、canvas 要素の箱の中でどこにあるかを
* CSS px の内側余白(inset)で返す。読めなければ null。
*
* これが要る理由:窓(420x680)と「彼女に見える範囲」は全然違う。PSD
* 3541x5016 あるが、実際に絵があるのはその中央あたりだけで、左右に 785px /
* 954px の余白がある(万歳など腕を広げるポーズのために取ってある幅)。
* 表示スケールに直すと片側 90〜110px。窓の矩形を画面の隅に合わせても、
* 彼女は隅から100px浮いて見える——「吸い付いた」と読めない距離
* これが要る理由:窓と「彼女に見える範囲」は全然違う。PSD は万歳のように腕を
* 広げるポーズに合わせた大きさなので、`default` の彼女はその中央に立っている
* だけで、左右にはポーズ用の透明帯が残る。どれだけ残るかは PSD 次第——だから
* 定数で持たずに毎回ここで測る。窓の矩形を画面の隅に合わせると、彼女はその
* 透明帯ぶん隅から浮いて見える=「吸い付いた」と読めない
*/
contentInsets(
alphaThreshold = 8,
Expand Down