diff --git a/_template-minimal/index.html b/_template-minimal/index.html index 9344666b..de86e24f 100644 --- a/_template-minimal/index.html +++ b/_template-minimal/index.html @@ -5,10 +5,21 @@ diff --git a/_template-minimal/sw.js b/_template-minimal/sw.js index 734d1975..afbbd317 100644 --- a/_template-minimal/sw.js +++ b/_template-minimal/sw.js @@ -6,9 +6,8 @@ const STATIC = ['/', '/index.html', '/manifest.json', '/logo.png']; self.addEventListener('install', e => { e.waitUntil( caches.open(CACHE).then(c => c.addAll(STATIC)) - // skipWaiting() は意図的に呼ばない - // → updatefound イベントで UI 側からユーザーに通知する方式を採用 ); + self.skipWaiting(); }); self.addEventListener('activate', e => { diff --git a/create-app.sh b/create-app.sh index 7728e58f..18ffe56d 100644 --- a/create-app.sh +++ b/create-app.sh @@ -38,7 +38,7 @@ echo "" # --- Step 1: テンプレートコピー & 置換 --- echo "Step 1: テンプレートをコピーして置換..." -cp -r "$SCRIPT_DIR/_template" "$TARGET_DIR" +cp -r "$SCRIPT_DIR/_template-minimal" "$TARGET_DIR" # sed で 3 変数を一括置換(macOS / Linux / Git Bash 対応) find "$TARGET_DIR" -type f \( -name "*.html" -o -name "*.json" -o -name "*.js" -o -name "*.md" \) | while IFS= read -r f; do @@ -107,6 +107,86 @@ echo "Step 7: 初回本番デプロイをトリガー..." git commit --allow-empty -m "ci: trigger initial Vercel deployment" npm run deploy +# --- Step 8: Dashboard 自動更新 --- +echo "" +echo "Step 8: Dashboard を自動更新..." + +DASHBOARD_DIR="$SCRIPT_DIR/posimai-dashboard" +ROADMAP_DIR="$SCRIPT_DIR/posimai-roadmap" +TODAY=$(date +%Y-%m-%d) + +# projects.json に追加 +node -e " +const fs = require('fs'); +const f = '$DASHBOARD_DIR/src/data/projects.json'; +const d = JSON.parse(fs.readFileSync(f, 'utf8')); +const already = d.projects.some(p => p.id === '$APP_ID'); +if (!already) { + d.projects.unshift({ + id: '$APP_ID', + name: '$APP_NAME', + category: 'micro', + status: 'beta', + description: '$APP_DESC', + techStack: ['HTML', 'CSS', 'JavaScript', 'PWA'], + links: { github: 'https://github.com/$GITHUB_ORG/$APP_ID' }, + pwa: true, + themeColor: '#0D0D0D', + accentColor: '#6EE7B7' + }); + d.lastUpdated = '$TODAY'; + fs.writeFileSync(f, JSON.stringify(d, null, 4)); + console.log(' projects.json: 追加完了'); +} else { + console.log(' projects.json: 既存エントリあり、スキップ'); +} +" || echo " [WARN] projects.json の更新に失敗しました" + +# timeline/page.tsx に launch エントリを追加 +TIMELINE_FILE="$DASHBOARD_DIR/src/app/timeline/page.tsx" +if grep -q "\"$APP_ID\"" "$TIMELINE_FILE" 2>/dev/null; then + echo " timeline/page.tsx: 既存エントリあり、スキップ" +else + # "const EVENTS: TimelineEvent[] = [" の直後に挿入 + sed -i "s/const EVENTS: TimelineEvent\[\] = \[/const EVENTS: TimelineEvent[] = [\n { date: \"$TODAY\", type: \"launch\", app: \"$APP_ID\", title: \"$APP_NAME リリース\", desc: \"$APP_DESC\" },/" \ + "$TIMELINE_FILE" \ + && echo " timeline/page.tsx: 追加完了" \ + || echo " [WARN] timeline/page.tsx の更新に失敗しました" +fi + +# roadmap.json に追加 +node -e " +const fs = require('fs'); +const f = '$ROADMAP_DIR/roadmap.json'; +const d = JSON.parse(fs.readFileSync(f, 'utf8')); +if (!d.apps) d.apps = []; +const already = d.apps.some(a => a.id === '$APP_ID'); +if (!already) { + d.apps.push({ id: '$APP_ID', tasks: [] }); + fs.writeFileSync(f, JSON.stringify(d, null, 2)); + console.log(' roadmap.json: 追加完了'); +} else { + console.log(' roadmap.json: 既存エントリあり、スキップ'); +} +" || echo " [WARN] roadmap.json の更新に失敗しました" + +# Dashboard と Roadmap をデプロイ +echo "" +echo " Dashboard をデプロイ中..." +cd "$DASHBOARD_DIR" +git add src/data/projects.json src/app/timeline/page.tsx && \ + git commit -m "feat: $APP_NAME をダッシュボードに追加" && \ + npm run deploy && \ + echo " Dashboard デプロイ完了" || echo " [WARN] Dashboard デプロイに失敗しました" + +echo "" +echo " Roadmap をデプロイ中..." +cd "$ROADMAP_DIR" +git add roadmap.json && \ + git commit -m "feat: $APP_NAME を roadmap に追加" && \ + npm run deploy && \ + echo " Roadmap デプロイ完了" || echo " [WARN] Roadmap デプロイに失敗しました" + echo "" echo "========================================" echo " 完了! $APP_NAME" @@ -116,10 +196,14 @@ echo " ディレクトリ : $TARGET_DIR" echo " Gitea : http://100.76.7.3:3000/mai/$APP_ID" echo " GitHub : https://github.com/$GITHUB_ORG/$APP_ID" echo "" -echo " 次の必須作業(Dashboard 更新):" -echo " 1. posimai-dashboard/src/data/projects.json にカードを追加" -echo " 2. ecosystem/page.tsx の NODES / EDGES に追加" -echo " 3. timeline/page.tsx の EVENTS に追加" -echo " 4. access/page.tsx の APPS に追加" -echo " 5. Dashboard をデプロイ: cd posimai-dashboard && npm run deploy" +echo " 自動完了済み:" +echo " - projects.json にカード追加" +echo " - timeline/page.tsx に launch エントリ追加" +echo " - roadmap.json に追加" +echo " - Dashboard / Roadmap デプロイ" +echo "" +echo " 手動で追加が必要なもの:" +echo " 1. apps/page.tsx の projectIds に追加(カテゴリ判断が必要)" +echo " 2. ecosystem/page.tsx の NODES / EDGES に追加(接続関係の判断が必要)" +echo " 3. logo.png を配置後: cd $TARGET_DIR && git add logo.png && git commit -m 'feat: logo 追加' && npm run deploy" echo ""