10 KiB
10 KiB
| name | description | type |
|---|---|---|
| プロジェクト現状・残タスク・次ステップ | 2026-03-16 全アプリ品質監査完了。ponshu-room は Flutter との乖離解消まで保留。 | project |
完了済み(〜2026-03-15 全セッション)
インフラ・設定
- Docker Compose の .env 分離(Synology)
- Magic Link キー保存先を全アプリで posimai_api_key に統一
- theme-color を全アプリで Teal (#6EE7B7) に統一
- server.js CORS wildcard(posimai-*.vercel.app)対応 → デプロイ済み
- Gemini モデル: gemini-3.1-flash-lite → gemini-2.0-flash-lite(Journal AI tag 修正)
posimai-daily 改修(2026-03-15)
- Feed 欄を Brain API →
posimai-feed.vercel.app/api/feedに変更(常に最新) - VOICEVOX TTS 実装(AudioContext エンジン、AbortController、fallback)
- 話者選択 UI(設定パネルに 6 話者ボタン)
- SW v3(skipWaiting + clients.claim)
- API キー移行スクリプト(posimai_api_key → posimai-daily-apikey)
- NAS Infrastructure ページ(posimai-dashboard)追加
- Sidebar に NAS Infrastructure リンク追加
Dashboard 機能追加
- Ecosystem Map / Timeline / Boilerplates / Access Guide / NAS Infrastructure
- Sidebar 各ページへのリンク追加
新アプリ実装
- posimai-digest, posimai-clean, posimai-ambient, posimai_widget, posimai-widget-dl
posimai-daily VOICEVOX TTS 問題(2026-03-15 解決済み)
根本原因(確定)
VOICEVOX の合成速度が遅すぎた(NAS の CPU が弱い):
- 短文 "テスト": 13 秒
- ニュース記事(30 文字): 67 秒
- キャッシュ HIT: 0.005 秒
Tailscale Funnel が数秒のタイムアウトで接続を切断 → browser に response が届かず pending のまま。
解決策(2026-03-15 実装・デプロイ済み)
バックグラウンドウォームアップ方式:
- server.js に
POST /brain/api/tts/warmupエンドポイント追加- 即座に 202 を返す(Funnel タイムアウトなし)
- VOICEVOX をバックグラウンドでシリアル合成してキャッシュに入れる
- index.html で Feed 読み込み後に warmup を fire-and-forget で呼ぶ
#tts-statusに「音声準備中...」→「音声準備完了」を表示
ウォームアップ時間の目安
- 記事ごとに 13〜70 秒(テキスト長による)
- 全 6 テキスト(5 記事 + 締め): 2〜5 分
- ユーザーが記事を読んでいる間に完了するケースが多い
- 未完了でも Web Speech API フォールバックが動く
現在のコード状態
server.js:ttsSynthesize()ヘルパー +/tts/warmupエンドポイント追加済みposimai-daily/index.html: warmup 呼び出し +#tts-status表示ロジック追加済みposimai-daily/api/tts.js: Vercel プロキシ(未使用、残置)
バックアップ現状(2026-03-17 調査)
安全(Gitea + GitHub 二重保存済み)
- 全 posimai-* アプリ 22個 → gitea / github リモート両方あり確認済み
- ponshu-room → 同上
Step 2 完了済み(2026-03-17)
posimai-rootリポジトリ: gitea/github 両方に push 済み- 内容: CLAUDE.md, AGENTS.md, _template/, deploy-server.sh, scripts/, server.js, .gitignore
- Gitea: http://100.76.7.3:3000/mai/posimai-root
- GitHub: https://github.com/posimai/posimai-root (private)
claude-memoryリポジトリ: gitea/github 両方に push 済み- 内容: memory/ 以下の全 .md ファイル(8ファイル)
- Gitea: http://100.76.7.3:3000/mai/claude-memory
- GitHub: https://github.com/posimai/claude-memory (private)
バックアップ後の残リスク
posimai-rootの .gitignore で各アプリディレクトリは除外(個別リポジトリで管理)- memory 変更時は手動で
cd ~/.claude/projects/c--Users-maita-posimai-project/memory && git add . && git commit && git push gitea main && git push github mainが必要
Step 1 完了済み(2026-03-17)
- posimai-dashboard: Header.tsx 末尾改行コミット・push 済み
- posimai-tech-events: theme-color media query 修正・gas-proxy-setup.md コミット・push 済み
- posimai-hotels: 改行コード差分のみ → git restore で戻した(変更なし)
全プロジェクト精査結果(2026-03-17)
[CRITICAL] 即対応必須
- C-1 posimai-pulse/sw.js — クロスオリジン API キャッシュバグ(originチェックなし)→ 修正1行
- C-2 posimai-lens/sw.js — 同上
- C-3 posimai-tech-events/sw.js — /brain/api パスが /api/ で始まらず staticブランチにキャッシュされる
- C-4 server.js archiveShare — URL プロトコルバリデーションなし(SSRF類似リスク)
- H-1 posimai-ambient/index.html — theme-color media query なし(ライトモードで黒ステータスバー)
- H-3 posimai-together/index.html:2005 — marked.parse に DOMPurify なし(外部コンテンツXSSリスク)
- M-3 server.js /together/react — type フィールドバリデーションなし(like/star/fire以外が保存される)
[MEDIUM] 設計不整合
- M-1 #6EE7B7 のハードコード(brand-logo gradient)— pulse/diff/habit/lens に残存、var(--accent)に置換
- M-2 border-radius: 8px が97箇所残存(カード・モーダルに混在)
- M-4 posimai-diff/sw.js, posimai-timer/sw.js — originチェックなし(現在実害なし、将来リスク)
[LOW] Tech debt
- L-1 posimai-brain/sw.js — 重複 fetch リスナー(Web Share Target 用 no-op)
- L-4 Dashboard Timeline 最終エントリが 2026-03-15 で止まっている
- L-5 server.js コメントに絵文字(CLAUDE.md違反、実害なし)
確認済み(対応不要)
- Lucide バージョン: 全アプリ @0.344.0 固定済み
- manifest.json / sw.js: 全PWAアプリで存在確認済み
- 絵文字: HTML ファイルでは検出なし
残タスク(手動・未対応)
- ai_proxy コンテナ削除(Synology Container Manager)
- posimai_widget APK 実機インストール・ウィジェット動作テスト
- Magic Link 動作確認(ブラウザで手動テスト)
- Lucide アイコン @latest → バージョン固定(14アプリ横断、低優先度)
ponshu-room PWA — 保留中(2026-03-16)
状態: Flutter ネイティブアプリとの UI/UX 乖離が大きく、再設計が必要なため保留。
問題点(3つ):
- テーマが根本的に違う(Posimai Teal → Washi 琥珀に要変更)
- Sakenowa 自動マッチング(6軸フレーバー)が未実装
- MBTI・ゲーミフィケーションが未実装
再開時の参照先: ponshu-room/ROADMAP.md(全詳細・優先度・実装チェックリスト記載)
再開時の作業順:
- CSS を Washi テーマへ書き換え(最速で効果大)
- データモデル拡張(Sakenowa フィールド追加)
- Sakenowa API 連携(公開 API、認証不要)
- グリッド/リスト切替
- MBTI・ゲーミフィケーション(後回し可)
触ってはいけないもの: ponshu_room_lite/(Flutter 版本体、読み取り専用参照のみ)
posimai-together 実装状況(2026-03-17 完了)
完了済み
- DB テーブル(together_groups/members/shares/reactions/comments)クリーンリセット migration 追加
- 設定モーダル統合(3モーダル → 1モーダル、タブ切替)
- Quick Capture(Web Share Target API、GET method)
- インライン Reader Sheet(Jina Reader + marked.js)
- AI 要約スケルトン(archive_status: pending/done/failed)
- Bubble Board(Canvas アニメーション)
- 30秒ポーリング + 新着バナー
Gemini API キー管理(未完了)
- server.js に
genAITogether(GEMINI_TOGETHER_API_KEY専用インスタンス)追加済み・デプロイ済み - Container Manager での
GEMINI_TOGETHER_API_KEY環境変数設定が未完了- 「複製」で同名コンテナを作れない問題に直面
- 根本解決策:docker-compose.yml + .env ファイルへの移行が必要
- 次セッションで SSH 経由で Synology の現状確認 → docker-compose 移行を実施する
次セッションでやること(優先順)
- SSH で Synology の現在のコンテナ設定を確認(docker inspect posimai_api)
- docker-compose.yml + .env ファイルを作成(/volume1/docker/posimai/ 等)
- GEMINI_TOGETHER_API_KEY を .env に追加
- docker-compose で再デプロイ(コンテナ名は posimai_api のまま維持)
- Together アプリで AI 要約が動作することを確認
Gemini サーバー側管理の中長期計画
- posimai-think → server.js の
/think/chatエンドポイント経由に移行(GEMINI_THINK_API_KEY) - posimai-digest → server.js の
/digest/summarize経由に移行(GEMINI_DIGEST_API_KEY) - ponshu-room → server.js の
/ponshu/analyze経由に移行(GEMINI_PONSHU_API_KEY) - 各アプリのキー入力 UI は廃止
確定済み「対応不要」
?init_key=URL: 廃止しない。Magic Link 方式は意図的設計- Jina Reader SPOF: 対応済み。AbortSignal.timeout(15000) + OGP フォールバック実装済み
- モノレポ化・Firebase SSO: 個人利用規模では不要
重要なシステム情報
Dashboard 認証
- Basic 認証: middleware.ts で実装
- デフォルト: mai / posimai
- Vercel 環境変数: BASIC_AUTH_USER / BASIC_AUTH_PASSWORD
デザインシステム v2
- Dark: bg #0D0D0D / surface #1A1A1A / accent #6EE7B7(Teal)
- Light: bg #F9FAFB / surface #FFFFFF / accent #059669(Emerald-600)
- アプリ別例外: journal/site = #80CAEE(Sky Blue)
- フォント: Inter 300/400/500/600 / アイコン: Lucide / 絵文字禁止
- radius: 12px
Synology インフラ
- NAS IP(Tailscale): 100.76.7.3
- Docker binary: /var/packages/ContainerManager/target/usr/bin/docker
- Tailscale binary: /var/packages/Tailscale/target/bin/tailscale
- Brain API: http://127.0.0.1:8090/brain/api (ホスト上), posimai_api コンテナ
- VOICEVOX: http://127.0.0.1:50021 (ホスト上), コンテナ名 voicevox:50021
- Tailscale Funnel: /brain → http://127.0.0.1:8090, / → http://127.0.0.1:3000