diff --git a/MEMORY.md b/MEMORY.md index e3486c1..aebca33 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -13,6 +13,7 @@ ## Reference - [reference_deploy.md](reference_deploy.md) — デプロイ手順・リモート設定 +- [reference_gitea_auth.md](reference_gitea_auth.md) — Giteaリポジトリ自動作成手順(git credential storeを使用、手動案内禁止) ## 要判断・保留事項 - [project_ponshu_cleanup.md](project_ponshu_cleanup.md) — ponshu-room環境整理の未解決事項(Vercel命名・git remote・posimai-projectの謎) diff --git a/feedback_style.md b/feedback_style.md index 5833724..021f61f 100644 --- a/feedback_style.md +++ b/feedback_style.md @@ -4,6 +4,7 @@ description: コーディングや応答スタイルに関するユーザーか type: feedback --- +- 実装報告・説明は必ず日本語で書く(英語禁止) - 実装前に批判的コードレビューを行い問題を整理してから修正する - 絵文字禁止(CLAUDE.md に明記) - npm run deploy = git push gitea main && git push github main(必ず両方) @@ -11,6 +12,12 @@ type: feedback - 過度な説明不要。修正内容は表形式でコンパクトにまとめる - `vercel --prod` は直接実行しない +## Gitea リポジトリ作成はユーザーに確認せず自動でやる + +**Why:** 毎回「Gitea は人間(手動)」と書いてしまい、ユーザーのタスクにしてしまっていた。ユーザーはAIが自動でやることを期待している。 + +**How to apply:** Gitea リポジトリ作成が必要な場面では、ユーザーへの確認・提案・「手動で作成してください」などは一切言わず、即座にAPI実行する。まずリポジトリ存在確認(`curl GET /api/v1/repos/mai/[name]`)し、なければ作成(`curl POST /api/v1/user/repos`)する。認証は `git credential fill` で取得。 + ## 新アプリ作成時のフルデプロイ(ユーザーに言われなくても必ずやる) **Why:** ユーザーは毎回「デプロイまでやって」と言わなくていいようにしたい。 diff --git a/project_status.md b/project_status.md index c84ab58..473b978 100644 --- a/project_status.md +++ b/project_status.md @@ -1,82 +1,78 @@ --- name: プロジェクト現状・残タスク・次ステップ -description: 2026-03-19 posimai-together UI/UX 全面改善完了。server.js に DELETE エンドポイント追加(deploy-server.sh 要実行)。 +description: 2026-03-21 全アプリコードレビュー完了。残タスク・新アプリ候補を整理。 type: project --- -## 完了済み(2026-03-19 このセッション) +## 残タスク(2026-03-21 時点) -### posimai-together UI/UX 全面改善(デプロイ済み) -- **FAB**(右下固定投稿ボタン)— フィードスクロール中でも常時表示 -- **Web Share Target JS接続** — OS シェアメニューから Together を選ぶと URL 自動入力 -- **PC Bottom Sheet 最大幅** — 560px 中央固定・角丸(全画面拡張廃止) -- **URLインラインプレビュー** — 貼り付け直後に favicon+ドメイン表示 -- **一言メモ折りたたみ** — デフォルト非表示、「メモを追加」でトグル -- **招待リンク** — 設定画面に「招待リンクをコピー」ボタン。`?invite=CODE` で自動入力 -- **タグフィルターバー** — 横スクロール化(タグが増えても縦圧迫なし) -- **投稿削除** — 自分の投稿のみ trash-2 アイコンで削除(確認ダイアログ付き) -- **AIタグフィルター** — タグをタップしてフィード絞り込み -- **タイトル自動取得** — URL投稿時に Jina Reader からタイトルを DB 保存して表示 +### AI が対応できる未着手タスク -### server.js 追加(未デプロイ — deploy-server.sh 要実行) -- `DELETE /together/share/:id` エンドポイント追加(username 一致チェック付き) -- **注意**: AIタグ生成プロンプト(archiveShare の Gemini prompt を JSON 返却に変更)はまだ未実装 +| タスク | 詳細 | +|--------|------| +| posimai-events 実データ連携 | MOCK_EVENTS 除去済み。現在は空配列を返す。n8n webhook → POST /api/events → Vercel KV(または Synology DB)に書き込む実装が必要 | +| 既存アプリへの posimai-ui 適用 | together は適用済み。他アプリ(brain, reader, feed, maps 等)へ順次適用予定。1アプリずつ着手時に対応 | +| habit / pulse データを Brief ブリーフィングに組み込む | Brief は現在 Feed API のみ参照。habit の完了率・pulse の気分/エネルギーを冒頭サマリーに読み上げさせる設計が必要 | +| Reader デバイス間同期 | 「近日公開」テキストが残存。Synology history API 経由での既読履歴クロスデバイス共有の実装 | +| Pulse AI インサイト | 相関分析(habit との関係)・Gemini を使った週次振り返りコメント機能 | +| Ambient Ponshu Room ゾーン | zone-placeholder のまま。Ponshu Room が保留解除されたら連携実装 | + +### 手動テスト(人間が必要) + +| タスク | 詳細 | +|--------|------| +| posimai_widget APK 実機テスト | v1.5.0 / v1.6.0(Pulse ウィジェット追加)の実機動作確認 | +| Magic Link 動作確認 | ?init_key= パラメータでブラウザ手動テスト(habit/pulse/daily/ambient/clean/brain) | +| Brief VOICEVOX テスト | Synology Docker に VOICEVOX コンテナ追加後、ずんだもん音声の動作確認 | + +### 新アプリ候補(確定) + +| アプリ | 内容 | 優先度 | +|--------|------|--------| +| posimai-rewind | habit / pulse / brain / journal 横断の振り返りアプリ。pulse の相関分析ギャップも解決 | 高 | +| posimai-shelf | 本・映画・アニメ記録。brain(Web記事)と補完、journal に感想転送 | 中 | + +### 新アプリ候補(却下済み) + +| アプリ | 理由 | +|--------|------| +| posimai-weather | ambient に統合推奨(すでに open-meteo で実装済み)。単独アプリ不要 | +| posimai-budget | 代替ツールで代替しやすい | +| posimai-voice | clean・digest と薄くかぶる、thin すぎ | --- -## 残タスク(優先度順) +## 完了済み(2026-03-21 このセッション) -### 要 deploy-server.sh -- [ ] `bash deploy-server.sh` を実行して DELETE エンドポイントを本番反映 +### 全アプリ批判的コードレビュー +- 重大な CLAUDE.md 違反: なし +- 別チャット誤検知の訂正: ambient 天気は open-meteo で実装済み(fetchWeather 関数)、daily skip ボタンも skipArticle() で実装済み +- sw.js console.log / console.warn 削除: brain / reader / feed(各2箇所) -### 未実装(server.js) -- [ ] **AIタグ自動付与** — archiveShare の Gemini プロンプトを JSON 返却に変更して `tags` カラムに保存 - - 現状: `tags` カラムは空のまま(フロントのフィルターUIは実装済み) - - 実装方法: プロンプトを `{"summary":"...","tags":["タグ1","タグ2"]}` 返却に変更し、JSON.parse してDBに保存 +### posimai-brief 新規作成・デプロイ +- Feed 記事読み上げ PWA(VOICEVOX / ずんだもん 対応、Canvas 波形、MediaSession API) +- GitHub リポジトリ作成・Vercel 連携・初回デプロイトリガー完了 +- Dashboard カード・Ecosystem・Timeline・Access Guide 追加済み -### 手動テスト(未着手) -- [ ] posimai_widget APK 実機インストール・ウィジェット動作テスト -- [ ] Magic Link 動作確認(ブラウザで手動テスト) +### posimai-veil 改善(2026-03-21) +- カスタムアプリ登録機能(63 Lucide アイコンピッカー、イニシャルバッジ) +- PWA インストール対応(logo.png 追加) +- ツールバー統合(カテゴリタブ + 虫眼鏡 + square-pen 編集アイコン = 1行) +- 検索バーを折りたたみ式に変更 +- SW キャッシュを v3 にバンプ(旧キャッシュ強制削除) +- base.css の main padding 上書き(没入型レイアウト対応) -### Gitea 手動作業 -- [ ] Gitea に `posimai-ui` リポジトリ手動作成 → `cd posimai-ui && git push gitea main` +### posimai-dashboard 改善(2026-03-21) +- /keys ページに Gemini API 消費状況(サーバー側 / クライアント側)を詳細追記 +- Brief 追加に伴うカード・Ecosystem・Timeline・Access Guide 更新 --- -## 完了済み(2026-03-19 前チャット) - -### 24時間自動化インフラ -- deploy-server.sh 完全無人化(SSH鍵認証 + docker グループ) -- create-app.sh(新規アプリ1コマンド自動化) -- _template-minimal/(ツール系アプリ用テンプレート) -- memory 自動 push Hook(settings.json PostToolUse) -- Aider on Synology(Docker コンテナ方式、~/aider-run.sh) - -### posimai-ui デザインシステム新設 -- URL: `https://posimai-ui.vercel.app/v1/base.css` / `base.js` -- _template-minimal を posimai-ui 参照に更新済み -- Gitea リポジトリのみ未作成(GitHub は作成済み) - ---- - -## 完了済み(2026-03-17 全アプリ品質監査) - -### CRITICAL(全対応済み) -- SW クロスオリジンキャッシュバグ修正(pulse / lens / tech-events / diff / timer / daily / brain) -- together に DOMPurify + marked XSS対策 -- server.js URL プロトコル検証・reaction type バリデーション -- posimai-daily/sw.js クロスオリジンAPIキャッシュバグ修正(v11) - -### インフラ整理 -- ai_proxy コンテナ・ディレクトリ完全削除 -- GEMINI_TOGETHER_API_KEY を Synology .env + docker-compose に追加 -- CLAUDE.md / AGENTS.md Timeline 更新ルール強化(「任意」→「必須」) - ---- - -## 確定済み「対応不要」 -- `?init_key=` URL: 廃止しない(Magic Link 意図的設計) -- モノレポ化・Firebase SSO: 個人利用規模では不要 +## 確定済み「対応不要」(CLAUDE.md にも記載済み) +- Lucide CDN に defer 付与: 体感効果なし・不要 +- モノレポ化: 個人規模では不要 +- Firebase / Supabase SSO: 現行 Magic Link で十分 +- `?init_key=` URL 廃止: 意図的設計 ## 重要なシステム情報 @@ -94,9 +90,13 @@ type: project ### Synology インフラ - NAS IP(Tailscale): 100.76.7.3 - 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 +### VOICEVOX(Brief 用) +- server.js に TTS エンドポイント実装済み(/tts, /tts/warmup, /tts/ready) +- VOICEVOX_URL = process.env.VOICEVOX_URL || 'http://voicevox:50021' +- Synology の docker-compose に voicevox コンテナを追加するだけで自動有効化 + ### ponshu-room 保留中 - 状態: Flutter版との UI/UX 乖離・Sakenowa 連携・Washi テーマ対応が必要で保留 - 再開時: `ponshu-room/ROADMAP.md` を参照 diff --git a/reference_gitea_auth.md b/reference_gitea_auth.md new file mode 100644 index 0000000..11416b2 --- /dev/null +++ b/reference_gitea_auth.md @@ -0,0 +1,34 @@ +--- +name: Gitea リポジトリ自動作成方法 +description: 新アプリ作成時にGiteaリポジトリをAIが自動作成する手順(手動案内は禁止) +type: reference +--- + +## Gitea 認証情報の取得方法 + +`GITEA_TOKEN` 環境変数は設定されていないが、git credential store に認証情報が保存されている。 + +```bash +GITEA_PASS=$(git credential fill <<< $'protocol=http\nhost=100.76.7.3:3000' | grep password | cut -d= -f2) +``` + +## Gitea リポジトリ作成コマンド + +```bash +curl -s -X POST "http://100.76.7.3:3000/api/v1/user/repos" \ + -H "Content-Type: application/json" \ + -u "mai:$GITEA_PASS" \ + -d "{\"name\":\"APP_ID\",\"private\":false,\"auto_init\":false}" +``` + +- エンドポイント: `/api/v1/user/repos`(user = mai) +- 成功時: `{"full_name":"mai/APP_ID",...}` が返る +- 既存の場合: `{"message":"The repository with the same name already exists."}` → push だけ実行すればよい + +## 必須ルール + +新アプリ作成時に「Giteaリポジトリは手動で作成してください」と案内してはいけない。 +必ず上記コマンドで自動作成し、`git push gitea main` まで完了させる。 + +**Why:** 以前は手動案内していたが、credential store に認証情報があることを確認済み(2026-03-22)。 +**How to apply:** 新アプリのgit init → commit → Gitea作成(curl)→ GitHub作成(gh)→ push の順で完結させる。