claude-memory/project_tools_enhancement.md

6.1 KiB
Raw Blame History

name description type
ツールアプリ差別化実装計画 Posimai ツールカテゴリ各アプリへのエコシステム連携・差別化機能の実装計画(優先順位付き) project

背景・目的

ツールカテゴリdigest/clean/timer/lens/diff/roadmapは現状「汎用ツール + Posimaiデザイン」止まりで、 エコシステムとの連携がゼロ。Posimaiらしさを出すために以下の実装を優先順位順に進める。

Why: 各ツールが Pulse/Brain/Journal/Maps 等の他アプリと連携することで、 「使って終わり」から「記録・蓄積・振り返り」のループが完成する。

How to apply: 実装前に必ず現在のアプリコードを全文読んでから着手する。


実装優先順位と内容

1位: posimai-timer — Pulse連携 + セッションログ

実装内容:

  • タイマー終了時(カウントダウン)に「集中セッション終了モーダル」を表示
    • 何をやったか(テキストメモ、任意)
    • エネルギーレベル1-5 スライダー or タップ選択)
    • 気分1-5 → これを Pulse と同じ localStorage スキーマで保存する
  • セッション履歴ビューを追加(サイドバーに「履歴」ナビ追加)
    • 日付ごとのセッション一覧(時刻・時間・メモ・エネルギー)
    • 今週の合計集中時間を冒頭に表示
    • Habit と同じ週ヒートマップで可視化(日別集中時間)

Pulse との連携方式:

  • Pulse の localStorage キー: posimai-pulse-entriesdata-app-id="posimai-pulse" 配下)
  • Timer が直接同じキーに書き込むのではなく、Timer 独自キー posimai-timer-sessions に保存 → Pulse アプリ側で Timer セッション連携を将来追加する方が正しい設計 → 今回は Timer 内にセッション記録・閲覧機能を完結させる

UI ルール:

  • 終了モーダルは既存のデザインシステム(--surface, --border, --accentを使う
  • モーダルはシンプル。テキスト入力 + エネルギー選択5段階のみ。送信 or スキップ
  • ヒートマップは Habit アプリと同じロジックで実装7列 × N行グリッド、今週ハイライト

2位: posimai-diff — 履歴保存 + Journalへ送信

実装内容:

  • 比較履歴の永続化
    • 「保存」ボタンでタイトル付き保存localStorage: posimai-diff-history
    • 履歴ビュー(サイドバー「履歴」)で過去の比較を再読み込み
    • 最大20件保存古いものから削除
  • Journalへ送信ボタン
    • 差分結果エリアの右上に「Journal へ送る」ボタン
    • クリックで Posimai Journalhttps://posimai-journal.vercel.app)を ?body= パラメータ付きで別タブで開く (差分テキスト + 比較元タイトルを body に含める)

3位: posimai-lens — Maps連携ボタン

実装内容:

  • EXIF に GPS 座標が含まれる場合、「Mapsで開く」ボタンを表示
    • クリックで https://posimai-maps.vercel.app/?lat=XX&lng=YY&label=ファイル名 を別タブで開く
    • Maps 側が ?lat=&lng=&label= を受け取ってピン表示できるか事前確認が必要 Maps の現コードを読んで対応の有無を確認してから実装する)
  • 撮影設定メモのお気に入り登録
    • 「この設定をお気に入りに追加」ボタンlocalStorage: posimai-lens-favorites
    • お気に入りビューで設定名 + F値/SS/ISO 一覧

4位: posimai-digest — Brainへ保存

実装内容:

  • 要約結果エリアの右下に「Brain に保存」ボタン
  • クリックで Synology Brain API に POST
    • エンドポイント: POST /brain/api/articles
    • body: { title: (元URLのタイトルor先頭40文字), content: 要約テキスト, url: 元URL, source: "digest" }
    • API キーは既存の posimai_api_key を使用localStorage から取得)
  • 保存成功時はトースト表示「Brain に保存しました」

5位: posimai-clean — 現状維持

現時点では追加機能の優先度が低いため対応しない。


実装前に必ず確認することCLAUDE.md ルール抜粋・特に重要なもの)

  1. 絵文字は一切使わないコード・HTML・コメント・トースト文言すべて
  2. lucide@latest を使わない@0.344.0 固定
  3. アクセントカラーは var(--accent) を使う#6EE7B7 のハードコード禁止
  4. SW でクロスオリジン GET をキャッシュしないBrain API 等の外部 API は必ずネットワーク経由)
  5. 底面固定要素には env(safe-area-inset-bottom) を付ける
  6. 外部リンクには rel="noopener" を付けるtarget="_blank" とセット)
  7. デプロイは npm run deploy= git push gitea main && git push github main vercel --prod は直接実行しない
  8. デプロイ後は Dashboard Timeline に追記して Dashboard もデプロイする(規模問わず必須)
  9. lucide.createIcons() は早期 return の後に呼ばない(アイコンが空になるバグ防止)

デプロイ手順(毎回)

cd posimai-[app]
git add .
git commit -m "feat: ..."
npm run deploy   # git push gitea main && git push github main

# その後必ず Dashboard Timeline 更新
cd ../posimai-dashboard
# src/app/timeline/page.tsx の EVENTS 配列に追記
git add src/app/timeline/page.tsx
git commit -m "chore: update timeline"
npm run deploy

各アプリの現状2026-03-23 確認)

アプリ 現状 Pulse/Brain API連携
posimai-timer ストップウォッチ + カウントダウン。履歴なし なし
posimai-diff テキスト差分のみ。保存機能なし なし
posimai-lens EXIF読み取り + 履歴。GPS表示ありテキスト なし
posimai-digest Gemini API 要約 + 履歴。APIキー設定あり なし
posimai-clean URLクリーン + 履歴 なし