Skip to content

feat: シフト募集・申請・確定フローの実装とmagicLinksテーブル導入#268

Merged
yn1323 merged 15 commits intodevelopfrom
feat/0211
Mar 1, 2026
Merged

feat: シフト募集・申請・確定フローの実装とmagicLinksテーブル導入#268
yn1323 merged 15 commits intodevelopfrom
feat/0211

Conversation

@yn1323
Copy link
Copy Markdown
Owner

@yn1323 yn1323 commented Mar 1, 2026

Summary

シフト募集の作成→スタッフへのメール通知→マジックリンクからのシフト申請→管理者によるシフト編集・確定という一連のフローを実装。加えて、マジックリンクのトークン管理をstaffsテーブルから専用のmagicLinksテーブルに移行し、トークンをスタッフ×募集単位で管理するように設計変更。

Design

データフロー

sequenceDiagram
    管理者->>Convex: 募集作成 (recruitment.create)
    Convex->>magicLinks: スタッフ×募集ごとにトークン生成・保存
    Convex->>Resend: メール送信スケジュール
    Resend-->>スタッフ: マジックリンクメール
    スタッフ->>Frontend: /shift-submit?token=xxx
    Frontend->>Convex: getSubmitPageData(token)
    Convex->>magicLinks: トークンからstaff+recruitmentを特定
    Convex-->>Frontend: 募集データ返却
    スタッフ->>Convex: シフト希望提出 (shiftRequest.submit)
    管理者->>Frontend: シフト編集・確定
    管理者->>Convex: 確定 (recruitment.confirm)
    Convex->>magicLinks: 募集に紐づくトークン取得
    Convex->>Resend: 確定通知メール送信
Loading

Changes

バックエンド

  • magicLinksテーブル新設: トークンを(staffId, recruitmentId)ペアで管理。staffsテーブルからmagicLinkToken/magicLinkExpiresAtフィールドを削除
  • recruitment mutations: 募集作成時にmagicLinksへinsert、確定時にmagicLinksからトークン取得
  • shiftRequest queries/mutations: トークンからrecruitmentIdを直接取得(open募集の動的検索を廃止)
  • メール送信: Resendを使った募集通知・確定通知メールの実装
  • shiftAssignment: シフト割当のCRUD

フロントエンド

  • ShiftSubmitページ: マジックリンクからのシフト希望提出フロー(フォーム→確認→提出済み)
  • RecruitmentDetail: 募集詳細ページの改善
  • ShiftConfirm: シフト確定画面
  • Storybook: ShiftSubmit関連コンポーネントのStories追加

yn1323 and others added 15 commits February 13, 2026 22:52
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
recruitmentsテーブル追加・create mutation作成・フロントエンド接続

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Title内の重複アバター・名前を削除し、編集ボタンをStaffDetailContentの
ヘッダー行(アバター+名前の右端)に移動。スキル表示をチップスタイルに変更。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
recruitment queries作成・ShiftsPageでuseQueryに切り替え

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- recruitmentsテーブルにby_shop_and_startDateインデックス追加
- listByShopクエリでバックエンド側降順ソートを実装
- フロントエンドの冗長なソート処理を削除
- RecruitmentDetailのレイアウトをTitle/Card/Animation構成に統一

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- RecruitmentDetailにContainer/Title/Animation標準パターンを適用
- ボタンを「締切・編集へ」1つに統合(LuPencilLine + teal)
- テーブル構造要素のbg="gray.50"→"white"に変更(ページ背景との境界明確化)
- ShiftForm内部のpx={4}を削除しpadding責務を呼び出し側に移動

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Resend + Convex Action で募集作成時にスタッフへメール通知する基盤を構築。
- convex/email/actions.ts: Resend APIによるメール送信internalAction
- convex/recruitment/mutations.ts: magicLink生成・メール送信スケジュール追加
- scripts/setupEnv.ts: .envからConvex環境変数を一括設定するスクリプト

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…feat/0211

# Conflicts:
#	convex/_generated/api.d.ts
#	convex/email/actions.ts
#	convex/recruitment/mutations.ts
#	convex/recruitment/queries.ts
#	convex/schema.ts
#	convex/shiftRequest/mutations.ts
#	convex/shiftRequest/queries.ts
#	src/components/features/Shift/RecruitmentDetail/index.tsx
#	src/components/features/ShiftSubmit/index.tsx
#	src/components/pages/ShiftSubmit/index.tsx
#	src/components/pages/Shops/ShiftConfirmPage/index.tsx
@cloudflare-workers-and-pages
Copy link
Copy Markdown
Contributor

cloudflare-workers-and-pages Bot commented Mar 1, 2026

Deploying yps-crispy-carnival with  Cloudflare Pages  Cloudflare Pages

Latest commit: 4d21a88
Status: ✅  Deploy successful!
Preview URL: https://e2461300.yps-crispy-carnival-42r.pages.dev
Branch Preview URL: https://feat-0211.yps-crispy-carnival-42r.pages.dev

View logs

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 1, 2026

📊 Playwright Test Report

テスト結果: 成功

View Report

@yn1323 yn1323 merged commit c046d18 into develop Mar 1, 2026
13 checks passed
@yn1323 yn1323 deleted the feat/0211 branch March 1, 2026 15:48
yn1323 added a commit that referenced this pull request Apr 11, 2026
* chore(deps): update dependency @biomejs/biome to v2.2.5 (#78)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @clerk/testing to v1.13.2 (#79)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @tanstack/react-devtools to v0.7.2 (#80)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency dotenv to v17.2.3 (#81)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency chromatic to v13.3.0 (#87)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @clerk/clerk-react to v5.50.0 (#88)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vite to v7.1.9 (#83)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency react-hook-form to v7.64.0 (#89)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update react monorepo to v19.2.0 (#90)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update tanstack-router monorepo to v1.132.37 (#85)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update storybook monorepo to v9.1.10 (#84)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency typescript to v5.9.3 (#82)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: y-natani <yn1323@gmail.com>

* chore(deps): update dependency @types/node to v24.6.2 (#86)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: y-natani <yn1323@gmail.com>

* 店舗登録 (#91)

* lint

* temp

* fix: delete

* git ignore

* fix

* fix

* ignore

* fix: delete serena

* fix

* fix

* fix: error message test

* fix: 店舗一覧

* chore

* feat: e2e

* fix

* chore(deps): update dependency @clerk/testing to v1.13.3 (#92)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @tanstack/react-devtools to v0.7.6 (#93)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update react monorepo (#94)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @chakra-ui/react to v3.27.1 (#95)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency convex to v1.27.5 (#96)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: tasks.json

* fix(deps): update dependency zod to v4.1.12 (#97)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update tanstack-router monorepo (#98)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @types/node to v24.7.2 (#99)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency react-hook-form to v7.65.0 (#102)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @clerk/clerk-react to v5.51.0 (#101)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Feat/1012 (#103)

* fix

* fix

* fix: seed

* fix

* chore

* feat: shop top

* fix

* f

* Feat/1013 (#104)

* fix

* fix

* fix

* Feat/1013 (#105)

* fix

* feat: breadcrumb

* feat: edit

* fix

* fix

* Feat/1013 (#106)

* fix

* feat: breadcrumb

* feat: edit

* fix

* fix

* fix

* chore(deps): update dependency @biomejs/biome to v2.2.6 (#107)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @clerk/testing to v1.13.7 (#108)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @tanstack/react-devtools to v0.7.7 (#109)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @types/react-dom to v19.2.2 (#110)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency jsdom to v27.0.1 (#111)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vite to v7.1.10 (#112)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update storybook monorepo to v9.1.13 (#113)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: ci

* chore(deps): update actions/setup-node action to v6

* chore(deps): update dependency @types/node to v24.8.1 (#114)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update playwright monorepo to v1.56.1 (#100)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @clerk/clerk-react to v5.53.2

* fix(deps): update dependency convex to v1.28.0

* fix(deps): update tanstack-router monorepo to v1.133.13

* fix (#119)

* fix

* fix

* fix

* chore(deps): update dependency @clerk/testing to v1.13.8 (#121)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @tanstack/react-devtools to v0.7.8 (#122)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency chromatic to v13.3.2 (#123)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vite to v7.1.12 (#124)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update storybook monorepo to v9.1.15 (#125)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @clerk/clerk-react to v5.53.3 (#126)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update tanstack-router monorepo (#127)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @biomejs/biome to v2.3.0 (#128)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency node to v24 (#129)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vitejs/plugin-react to v5.1.0 (#130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @chakra-ui/react to v3.28.0 (#131)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update actions/upload-artifact action to v5 (#132)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @biomejs/biome to v2.3.2 (#134)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @clerk/testing to v1.13.9 (#135)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @types/node to v24.9.2 (#136)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency chromatic to v13.3.3 (#137)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update storybook monorepo to v9.1.16 (#138)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @clerk/clerk-react to v5.53.4 (#139)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency jotai to v2.15.1 (#142)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @tanstack/react-devtools to v0.8.0 (#140)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency jsdom to v27.1.0 (#141)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency react-hook-form to v7.66.0 (#143)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update tanstack-router monorepo to v1.134.9 (#144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @biomejs/biome to v2.3.4 (#146)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @clerk/testing to v1.13.12 (#147)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @tanstack/react-devtools to v0.8.1 (#148)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @clerk/clerk-react to v5.53.8 (#149)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency convex to v1.28.2 (#150)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update tanstack-router monorepo to v1.134.15 (#151)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @types/node to v24.10.0 (#152)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vite to v7.2.2 (#153)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @chakra-ui/react to v3.29.0 (#154)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update tanstack-router monorepo to v1.135.0 (#155)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Feat/1019 (#156)

* fix

* fix: layout

* fix

* fix

* fix

* fix: test

* Feat/1113 (#157)

* fix: dashboard

* fix: shop list

* fix: shop register

* fix: form

* fix: ShopDetail

* fix: user detail

* fix: ci

* fix

* fix

* fix

* chore(deps): update dependency @biomejs/biome to v2.3.5 (#158)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @clerk/testing to v1.13.15 (#159)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Feat/1115 (#164)

* fix

* fix

* chore(deps): update dependency @types/node to v24.10.1 (#160)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vitejs/plugin-react to v5.1.1 (#161)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update react monorepo (#162)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency jsdom to v27.2.0 (#163)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @clerk/clerk-react to v5.55.0 (#165)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Feat/1115 (#168)

* fix

* tmp

* f

* f

* f

* fix

* f

* f

* f

* f

* fix

* fix(deps): update dependency convex to v1.29.1 (#166)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update tanstack-router monorepo to v1.136.5 (#167)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update tanstack-router monorepo to v1.136.6 (#169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat: introduce shift template management with new UI components and routing (#170)

* chore(deps): update dependency @biomejs/biome to v2.3.7 (#171)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @clerk/testing to v1.13.18 (#172)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @types/react to v19.2.6 (#173)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency chromatic to v13.3.4 (#174)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat: Implement ShopList and ShopDetail InfoTab components, and add agent rules with gitignore update

* chore(deps): update dependency vite to v7.2.4 (#175)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency convex to v1.29.3 (#176)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update actions/checkout action to v6 (#180)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency react-hook-form to v7.66.1 (#177)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @chakra-ui/react to v3.30.0 (#182)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @clerk/clerk-react to v5.56.2 (#178)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update tanstack-router monorepo to v1.139.3 (#179)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Feat/1122 (#181)

* feat: add `InfoTab` component to display shop details like operating hours, shift deadlines, and description.

* fix

* fix: invite

* f

* f

* fix: tab

* remove: word member

* fix

* fix

* fix

* Feat/1124 (#183)

* fix: shop staff count

* fix

* fix: tab

* fix

* wip

* fix

* fix: e2e

* fix: format

* fix: workflow

* fix

* fix

* fix

* fix: sho

* fix

* fix: delete debug

* Add user invitation feature (#184)

* docs: ユーザー招待機能の仕様書を追加

- 権限(owner/manager のみ招待可能)
- 招待リンクの仕様(トークン形式、有効期限14日)
- 招待フロー(作成、キャンセル、再送)
- 受け入れフロー(状態判定、ログイン状態分岐)
- データモデル、API一覧、エラーコード

* docs: 招待時に付与可能なロールを修正

ownerロールも招待時に付与可能であることを明記

* fix: ownerロールを招待・ロール変更で付与可能に修正

- convex/shop.ts: addUserToShopでownerロールを許可
- doc/spec/2025-10-04_店舗管理機能.md: ownerロール制限に関する
  誤った記載を修正

* style: フォーマット修正

---------

Co-authored-by: Claude <noreply@anthropic.com>

* Sort staff list by role hierarchy (#185)

* feat: スタッフ一覧を役割順(オーナー→マネージャー→一般)でソート

役割の優先度に基づいてユーザー間のソートを追加。
各ユーザーの最も高い役割を基準にソートすることで、
オーナー、マネージャー、一般の順に表示されるようになる。

* refactor: sortをtoSortedに変更

非破壊的なソートメソッドtoSortedを使用するよう変更。
TypeScript libをES2023に更新してtoSortedをサポート。

---------

Co-authored-by: Claude <noreply@anthropic.com>

* ユーザー編集ボタンの表示制御を役割に基づいて実装 (#186)

- オーナー: 全員編集可能
- マネージャー: 全員編集可能、ただしオーナーは編集不可
- 一般ユーザー: 自分のものだけ編集可能

Co-authored-by: Claude <noreply@anthropic.com>

* Fix unauthorized access to other user information (#187)

* ユーザー情報アクセス制御の仕様書を追加

- 背景・課題、要件、実装方針をまとめた
- 役割ベースのアクセス制御設計を記載
- 影響範囲とテスト観点を整理

* E2Eテストのfixture追加とスケルトン作成

- constants: manager, general用のauth jsonファイルパス追加
- login.setup.ts: manager, general用のログイン処理追加
- playwright.config.ts: manager, general用のプロジェクト追加
- E2Eテストスケルトン: staff, manager, general用のアクセス制御テスト
- 仕様書: E2Eテスト計画を追記

* ユーザー情報アクセス制御を実装

- getUsersInShopにロール別フィルタリングを追加(generalはactiveのみ表示)
- getUserByIdに制限ビュー対応を追加(他人は名前・役割のみ)
- getUserShopsにアクセス制御を追加
- UserDetailコンポーネントに制限ビュー表示を実装
- StaffEditPageに権限チェックを追加
- E2Eテストを追加(owner/manager/general各ロール)
- Storybookに制限ビューパターンを追加

* 制限ビュー時のメッセージを非表示に変更

- 権限がない場合は何も表示しない仕様に変更
- E2Eテストからメッセージ確認を削除

* E2Eテストのセレクタ修正とプロジェクト設定を調整

- スタッフ一覧のセレクタをCard.Root構造に合わせて修正
- Manager/General用プロジェクトを環境変数条件で有効化

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>

* Claude/fix user info access 012c5 z somom4 ptgb5 zjgov tz (#188)

* ユーザー情報アクセス制御の仕様書を追加

- 背景・課題、要件、実装方針をまとめた
- 役割ベースのアクセス制御設計を記載
- 影響範囲とテスト観点を整理

* E2Eテストのfixture追加とスケルトン作成

- constants: manager, general用のauth jsonファイルパス追加
- login.setup.ts: manager, general用のログイン処理追加
- playwright.config.ts: manager, general用のプロジェクト追加
- E2Eテストスケルトン: staff, manager, general用のアクセス制御テスト
- 仕様書: E2Eテスト計画を追記

* ユーザー情報アクセス制御を実装

- getUsersInShopにロール別フィルタリングを追加(generalはactiveのみ表示)
- getUserByIdに制限ビュー対応を追加(他人は名前・役割のみ)
- getUserShopsにアクセス制御を追加
- UserDetailコンポーネントに制限ビュー表示を実装
- StaffEditPageに権限チェックを追加
- E2Eテストを追加(owner/manager/general各ロール)
- Storybookに制限ビューパターンを追加

* 制限ビュー時のメッセージを非表示に変更

- 権限がない場合は何も表示しない仕様に変更
- E2Eテストからメッセージ確認を削除

* E2Eテストのセレクタ修正とプロジェクト設定を調整

- スタッフ一覧のセレクタをCard.Root構造に合わせて修正
- Manager/General用プロジェクトを環境変数条件で有効化

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix

---------

Co-authored-by: Claude <noreply@anthropic.com>

* 画面遷移後に戻った際のタブ状態を維持する機能を追加 (#189)

- 店舗詳細→ユーザー詳細、店舗詳細→招待画面への遷移時にfromTabパラメータを追加
- 戻るリンクにfromTabの値を引き継ぎ、タブ状態を復元

Co-authored-by: Claude <noreply@anthropic.com>

* Refactor code for consistency and quality (#190)

* コード一貫性を向上させるリファクタリング

CLAUDE.mdルール準拠:
- interface → type 変換 (color-mode.tsx, tooltip.tsx)
- Function Declaration → Arrow Function 変換
- Promise.then → async/await 変換 (reportWebVitals.ts)

エラーハンドリング統一:
- console.error 削除、toaster.create に統一
- pages/Invite の責務分離 (useMutation を features に移動)
- SendTab, UserRegister のエラーハンドリング統一

コンポーネント改善:
- LoadingState 共通コンポーネント作成
- TopPage をセクションコンポーネントに分割 (643行 → 33行)
- ShiftTemplateList の JSX ネスト削減と命名改善

アクセシビリティ改善:
- ShiftTemplateForm の曜日選択を Badge → Button に変更
- MyPage のお知らせカードを Box → Button に変更

* 招待受け入れ時のレースコンディションを修正

問題:
Convexのリアルタイム更新により、mutationが成功すると即座に
invitation.isAcceptedがtrueになり、InvitePageがAlreadyAccepted
を表示してしまう。LoggedIn内でAcceptedを表示する前にUIが切り替わる。

解決:
- acceptedShop状態をInvitePageレベルで管理
- リアルタイム更新チェック前にローカル状態をチェック
- LoggedInはonAcceptedコールバックで親に成功を通知

* フォーマット修正

---------

Co-authored-by: Claude <noreply@anthropic.com>

* Add employee resignation feature for stores (#191)

* スタッフ退職機能を実装

- shopUserBelongingsにresignedAt, resignationReasonフィールドを追加
- resignUserFromShop mutationを追加(権限チェック、自己退職禁止を含む)
- StaffTabのステータスフィルターを retired から resigned に統一
- UserEditに退職処理モーダルを実装(退職理由の任意入力対応)
- 退職機能の仕様書を追加

* 退職機能のE2Eテストを追加

- getShopsByAuthIdで退職済みユーザーの店舗を除外するように修正
- オーナーがスタッフを退職処理するE2Eテストを追加
- 退職後のgeneralユーザーが店舗一覧で店舗を見れないことを確認するテストを追加
- playwright.config.tsに退職後テストの依存関係を設定

* E2Eテストのセレクタを修正

getByText('退職処理')が複数要素にマッチするため、getByRole('button')を使用するように修正

* E2Eテストのフィルター待機ロジックを修正

退職済みフィルター適用後、スタッフ一覧または空メッセージのいずれかを待機するように修正

---------

Co-authored-by: Claude <noreply@anthropic.com>

* Review E2E testing approach and efficiency (#192)

* refactor: E2Eテストのナビゲーション処理を共通化

- e2e/helpers/navigation.ts: ナビゲーションヘルパー関数を追加
- e2e/helpers/staff-access-tests.ts: Owner/Manager共通テスト関数を追加
- 各テストファイルでヘルパーを使用するようリファクタ
- playwright.config.ts: テスト間依存関係を明確化するコメントを追加
- 各テストファイルに依存関係のドキュメントコメントを追加

* fix: E2Eテストヘルパーの未使用パラメータを削除

- testFullStaffListVisible, testFullStaffDetailVisibleから未使用のroleパラメータを削除
- フォーマット修正を適用

---------

Co-authored-by: Claude <noreply@anthropic.com>

* Review current store user editing features (#193)

* スタッフ管理情報の編集機能を実装

- Convexスキーマに管理用フィールド追加(memo, workStyleNote, maxWorkingHoursPerMonth, hourlyWage)
- getShopUserInfo query追加(owner/managerのみ閲覧可能)
- updateShopUserInfo mutation追加(owner/managerのみ編集可能)
- UserEditフォームをConvexに接続
- 働き方メモTextareaを新規追加(AIシフト作成用)
- E2Eテスト追加(値変更・保存確認)

* useQueryをpages配下に移動(コンポーネント責務の整理)

- StaffEditPageでgetShopUserInfo、getShopByIdを呼び出すように変更
- UserEditはpropsでshopUserInfo、shopNameを受け取るように変更
- UserEditからuseQueryを削除
- Storybookの引数を更新

---------

Co-authored-by: Claude <noreply@anthropic.com>

* タイムカードモックページを追加 (#194)

打刻機能、履歴表示、月間サマリーを含むタイムカードUIのモックを作成

Co-authored-by: Claude <noreply@anthropic.com>

* fix: yml (#196)

* Review code for refactoring opportunities (#195)

* リファクタリング: コード品質改善

- スキーマ重複解消(ShopRegister/ShopEdit → ShopForm/schema.ts)
- convex/helpers.ts拡張(共通ヘルパー関数・セキュアなトークン生成)
- convex/shop.ts, invite.ts, user.tsでヘルパー関数を使用
- convex/user.tsでv.id()を使用・Promise.then()をasync/awaitに変換
- useAtom → useAtomValue最適化(読み取り専用の場合)
- Storybookのanyコメント解消(Id型を適切にインポート)
- isNumber → isDigitString命名改善

* fix(storybook): ダミールーターにキャッチオールルートを追加

Storybook内でLink to="/shops/$shopId"などの動的パスを使用する
コンポーネントがエラーになる問題を修正

* fix(storybook): Pages層ストーリーのIDを有効なConvex ID形式に修正

Convexは"shop123"のようなIDを受け付けず、バリデーションエラーを
発生させていた。有効なConvex ID形式に修正

---------

Co-authored-by: Claude <noreply@anthropic.com>

* Refactor Convex directory with better file structure (#197)

* feat: Feature Slices + CQRSアーキテクチャのサンプル実装

convex/shop/配下にqueries.tsとmutations.tsを作成し、
読み取り操作と書き込み操作を分離するアーキテクチャパターンを示す

* feat: policies.tsを追加しロール判定ロジックを集約

- shop/policies.ts: 権限判定の純粋関数を集約
- queries.ts/mutations.tsからpoliciesを参照するよう更新
- コロケーションパターンでドメイン内に閉じ込め

* docs: Convexアーキテクチャ設計方針をCLAUDE.mdに追加

Feature Slices + CQRS + Policy Patternの設計方針を文書化

* refactor: Convexを Feature Slices + CQRS + Policy Patternに移行

- shop/, user/, invite/ ディレクトリに分割
- 各ドメインに queries.ts, mutations.ts, policies.ts を配置
- 旧ファイル (shop.ts, user.ts, invite.ts) を削除
- ロール判定ロジックを policies.ts に集約

* fix: フロントエンドのAPI参照を新しいディレクトリ構造に更新

- すべてのフロントエンドファイルでConvex APIパスを更新
  - api.shop -> api.shop.queries/mutations
  - api.user -> api.user.queries/mutations
  - api.invite -> api.invite.queries/mutations
- convex/_generated/api.d.tsを新しいディレクトリ構造に対応
- uniqueBy関数の型定義を改善(Record<string, unknown> -> object)
- Biomeによるフォーマット適用

---------

Co-authored-by: Claude <noreply@anthropic.com>

* chore(deps): update dependency @biomejs/biome to v2.3.8 (#198)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @clerk/testing to v1.13.19 (#199)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @tanstack/react-devtools to v0.8.2 (#200)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Review and plan product direction changes (#204)

* docs: プロダクト方向性v2を追加

スタッフ認証をマジックリンク方式に変更する方針を文書化
- スタッフのアカウント登録不要化
- タイムカード・勤怠機能の削除
- スキル管理、週労働時間上限の追加
- 時間帯別必要人員設定(未確定)

* docs: 旧仕様からv2へのリンクを追加

* docs: v2移行作業の範囲をまとめたドキュメントを追加

* feat: Phase 1 - タイムカード・勤怠機能削除、useTimeCard削除

- routes: timecard.tsx, attendance.tsx 削除
- components: Timecard/, AttendanceTab/, TimecardPage/ 削除
- schema: shops.useTimeCard フィールド削除
- ShopForm: useTimeCard関連のUI・バリデーション削除
- Convex API: create/update からuseTimeCard引数削除
- stories: 各種storiesファイルからuseTimeCard削除
- docs: Phase 1-4の移行作業ドキュメント追加

* fix: シードデータからuseTimeCard削除

スキーマ変更に合わせてシードデータを更新

* fix: メニューから勤怠記録リンク削除

BottomMenu, SideMenuから/attendanceへのリンクを削除

* feat: Phase 2 - staffsテーブル追加、スキル関連定数追加

- shopUserBelongingsテーブルをstaffsテーブルに変更
- skills, maxWeeklyHoursフィールド追加
- スキル関連の定数をconvex/constants.tsに追加

* refactor: Phase 3 - API修正(ロール制御から所有者制御へ)

- helpers.ts: isShopOwner, requireShopOwner追加
- shop/queries.ts: listStaffsに変更、所有者チェック追加
- shop/mutations.ts: addStaff, resignStaff, updateStaffInfoに変更
- user/queries.ts: 不要なクエリを削除

* remove: ポリシーファイルとinvite機能を削除

- shop/policies.ts: ロールベースポリシー削除
- user/policies.ts: 不要なポリシー削除
- invite/: 旧招待機能を完全削除

* refactor: フロントエンドコンポーネントをstaffsモデルに対応

- ShopDetail: userRoleをisOwnerに変更、usersをstaffsに変更
- ShopEdit: userRoleをisOwnerに変更
- ShopList: ロールバッジと招待メッセージを削除
- StaffTab: 新しいStaffType構造に対応、スキル表示追加
- AuthGuard: /welcomeから/shopsへリダイレクト変更
- convertShopData: convertRole関数を削除

* remove: User機能コンポーネントを削除

- UserDetail: 旧ユーザー詳細画面削除
- UserEdit: 旧ユーザー編集画面削除
- UserRegister: 旧ユーザー登録画面削除
- Join: 招待参加画面削除

* refactor: ページコンポーネントをstaffsモデルに対応

- DetailPage: listStaffsクエリ使用、isOwner計算に変更
- EditPage: isOwner計算に変更
- ListPage: canCreateクエリを削除
- 不要なページ削除: InvitePage, WelcomePage, Staffs関連

* remove: 不要なルートを削除

- /shops/$shopId/invite: 招待ページルート削除
- /shops/$shopId/staff: 旧スタッフルート削除
- /shops/$shopId/staffs: スタッフ管理ルート削除
- /invite: 招待参加ルート削除
- /welcome: ウェルカムページルート削除

* style: フォーマット修正

* fix: モバイルメニューのログインボタンが動作しない問題を修正

SignInButtonでラップされていなかったモバイルメニュー内の
ログインボタンを修正

* fix: 新規ユーザーログイン時に画面が真っ白になる問題を修正

- user/mutations.ts: getOrCreate mutation追加(既存ユーザー取得または新規作成)
- AuthGuard: 新規ユーザーを自動作成するロジック追加
- Clerkでログイン後、Convexにユーザーレコードがない場合は自動作成

---------

Co-authored-by: Claude <noreply@anthropic.com>

* Analyze and fix failing end-to-end tests (#209)

* refactor(e2e): v2移行に伴うE2Eテストの再構築

## 変更内容

### seedデータのv2スキーマ対応
- shopUserBelongings.jsonl → staffs.jsonl に変換
- users.jsonlからuserB(テストユーザーB)を削除(新規店長テスト用)
- Manager/Generalユーザーを削除(v2では権限区分廃止)

### 削除したテスト(v2で不要)
- shop/invite.test.ts(Clerk招待→マジックリンクに変更)
- staff/access-control.test.ts(権限区分廃止)
- staff/edit.test.ts(編集UI未実装)
- staff/resign.test.ts(退職UI未実装)
- userB/accept.test.ts(招待受け入れ廃止)
- manager/staff-access.test.ts(Manager権限廃止)
- general/staff-access.test.ts(General権限廃止)
- general/after-resign.test.ts(General権限廃止)

### 新規作成したテスト
- shop/list.test.ts: 店舗一覧表示、遷移
- shop/detail.test.ts: 店舗詳細、タブ切替、編集遷移
- shop/edit.test.ts: 店舗情報編集、保存
- staff/list.test.ts: スタッフ一覧、検索、フィルター
- userB/new-owner.test.ts: 新規店長の初回ログイン〜店舗登録

### 設定ファイル修正
- playwright.config.ts: Manager/General project削除
- login.setup.ts: Manager/Generalログイン削除
- constants/index.ts: 不要な定数削除
- helpers/navigation.ts: 不要なヘルパー関数削除

* fix(e2e): lint/type-checkエラーを修正

- 未使用インポートを削除(goToStaffTab, goToFirstShop)
- Number.parseIntにradixパラメータを追加

* fix(e2e): Link内ButtonのgetByRole修正

「〜に戻る」ボタンはLink内のButtonなのでgetByRole("button")に修正

* fix

* fi

* fix: test

* fix

* fix

---------

Co-authored-by: Claude <noreply@anthropic.com>

* fix (#210)

* Fix/claudemd (#211)

* fix

* fix: skills

* fix

* fix

* fix

* fix(deps): update tanstack-router monorepo to v1.139.12 (#203)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @types/react to v19.2.7 (#201)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency zod to v4.1.13 (#202)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update playwright monorepo to v1.57.0 (#205)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Design store manager invitation system (#212)

* feat: マネージャー招待機能を実装

- Convexスキーマにrole, inviteToken, inviteExpiresAtフィールドを追加
- 招待関連の定数(STAFF_ROLES, INVITE_EXPIRY_DAYS等)を追加
- 招待用ヘルパー関数(getStaffByInviteToken, isShopOwnerOrManager等)を追加
- convex/invite/ に招待のミューテーション・クエリを実装
  - create: 招待作成
  - accept: 招待受け入れ
  - cancel: 招待キャンセル
  - resend: 招待再送
  - getByToken: トークンで招待情報取得
  - listByShopId: 店舗の招待一覧取得
- ManagerInviteModal: 招待作成モーダルコンポーネント
- InvitePage: 招待受け入れページ(/invite?token=xxx)
- StaffTabにマネージャー招待ボタンを追加

Note: npx convex dev を実行して型生成が必要です

* feat: InvitePageのStorybookを追加

- Basic: トークンありの場合
- NoToken: トークンなしの場合(エラー表示)

* chore: 自動生成ファイルを更新

- convex/_generated/api.d.ts: invite モジュールを追加
- src/routeTree.gen.ts: /invite ルートを追加

* refactor: マネージャー招待モーダルからロール選択を削除

招待されるのはマネージャーのみのため、ロール選択UIを削除し
固定でmanagerロールとして招待するように変更

* test: マネージャー招待機能のE2Eテストを追加

- 招待作成テスト(メインユーザー)
  - モーダルの開閉テスト
  - 招待リンク作成テスト
  - 必須項目バリデーションテスト
  - tmpファイルへのURL保存テスト(クロスユーザーテスト用)

- 招待受け入れテスト(サブユーザー)
  - 招待リンクから店舗に参加できることのテスト
  - 無効なトークンのエラーハンドリングテスト
  - トークンなしのエラーハンドリングテスト

- ヘルパー関数とtmpファイルパス定数を追加

* fix: E2Eテストのlocatorを修正

- [font-family="mono"]属性セレクタがChakra UIで機能しないためgetByTextに変更

* fix

* fix: empty

* fix: e2e

* fix

* fix

* fix

* fix

* fix

---------

Co-authored-by: Claude <noreply@anthropic.com>

* fix(deps): update dependency @clerk/clerk-react to v5.57.1 (#206)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update actions/github-script action to v8 (#208)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @clerk/testing to v1.13.21 (#213)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vite to v7.2.6 (#214)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency jotai to v2.15.2 (#215)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update react monorepo to v19.2.1 (#216)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update tanstack-router monorepo (#217)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency tsx to v4.21.0 (#218)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @clerk/clerk-react to v5.58.0 (#219)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency convex to v1.30.0 (#220)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update tanstack-router monorepo to v1.140.0 (#221)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency react-hook-form to v7.68.0 (#207)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix: renovate (#222)

* Feat/1209 (#223)

* fix

* fix

* chore(deps): update dependency @clerk/testing to v1.13.23 (#224)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @tanstack/react-devtools to v0.8.4 (#225)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @types/node to v24.10.3 (#226)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @vitejs/plugin-react to v5.1.2 (#227)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vite to v7.2.7 (#228)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @clerk/clerk-react to v5.58.1 (#229)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update react monorepo to v19.2.3 (#230)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency jsdom to v27.3.0 (#231)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency convex to v1.31.1 (#232)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @types/node to v24.10.4 (#237)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency jotai to v2.16.0 (#233)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update tanstack-router monorepo (#234)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update actions/cache action to v5 (#235)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update actions/upload-artifact action to v6 (#236)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @biomejs/biome to v2.3.10 (#238)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @clerk/testing to v1.13.26 (#239)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @testing-library/react to v16.3.1 (#240)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update storybook monorepo to v9.1.17 (#241)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency convex to v1.31.2 (#242)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Feat/1222 (#249)

* chore: ui

* fix: toolbar(wip)

* fix

* fix: sidebar

* fix: toolbar

* fix: メンバーを追加ボタン

* fix

* fix

* fix

* fix

* fix(deps): update tanstack-router monorepo (#243)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vite to v7.3.0 (#244)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @clerk/clerk-react to v5.59.2 (#245)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency react-hook-form to v7.69.0 (#246)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency zod to v4.2.1 (#247)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency vite-tsconfig-paths to v6 (#248)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Feat/0105 (#250)

* fix

* fix

* fix

* fix(deps): update dependency jotai to v2.16.1 (#251)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @tanstack/react-devtools to v0.9.0 (#252)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency jsdom to v27.4.0 (#253)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update tanstack-router monorepo to v1.143.11 (#254)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update tanstack-router monorepo to v1.144.0 (#255)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Feat/0113 (#256)

* feat: shop change

* feat: 募集ページ

* feat: shift recruit mocks

* feat: mock (#257)

* Feat/0120 (#258)

* tmp

* fix

* feat

* fix

* feat: シフトテーブルUI改善・ソート機能・充足度グラデーション表示 (#259)

* fix: time span

* fix: vertical line

* feat: md

* fix: toolbar

* fix: toolbar

* feat: summary as gradation color

* fix: 充足度合計

* fix: add colors to gradation

* chore

* fix: tab

* fix: resize

* del: right click menu

* tmp

* fix

* fix

* feat: sort

* fix: sort

* fix: fixed table (WIP)

* fix: footer space

* fix: radius

* fix: border

* fix: height

* fix: spec

* Feat/0128 (#260)

* fix: staff modal

* fix: content

* fix: toolbar

* fix

* fix: 微調整

* fix

* Feat/0128 (#261)

* fix: staff modal

* fix: content

* fix: toolbar

* fix

* fix: 微調整

* fix

* feat: overview

* fix: matrix (#262)

* feat: シフト俯瞰ビュー切替・統一ソート・バグ修正 (#263)

* feat: claude

* feat: over view

* fix

* fix

* feat: ShiftForm リファクタリング(統合・旧コンポーネント削除) (#264)

* fix: SP

* fix: Shift SP

* sp

* fix: read only mode

* feat: refactor

* fix: phase1

* feat: phase2

* fix: phase3

* f

* feat: StaffingRequirement UX改善(リネーム・祝日追加・曜日カラーリング・新コンポーネント) (#265)

* fix

* fix: add sp storybook

* feat: staffing requirement

* fix

* fix

* feat: StaffingRequirement UX改善・SP対応・仕様書更新 (#266)

* f

* fix

* fix

* feat: スタッフ用シフト提出ページ + 募集メール送信機能 (#267)

* fix: スタッフ一覧のマネージャーバッジを上下中央寄せ

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: シフト募集CREATE バックエンド実装

recruitmentsテーブル追加・create mutation作成・フロントエンド接続

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: スタッフ詳細ページの重複表示を解消しレイアウト修正

Title内の重複アバター・名前を削除し、編集ボタンをStaffDetailContentの
ヘッダー行(アバター+名前の右端)に移動。スキル表示をチップスタイルに変更。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: シフト管理画面をDB接続(モックデータ削除)

recruitment queries作成・ShiftsPageでuseQueryに切り替え

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: シフト募集一覧を開始日の降順ソートに変更・募集詳細UIリファクタ

- recruitmentsテーブルにby_shop_and_startDateインデックス追加
- listByShopクエリでバックエンド側降順ソートを実装
- フロントエンドの冗長なソート処理を削除
- RecruitmentDetailのレイアウトをTitle/Card/Animation構成に統一

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: シフト募集詳細レイアウト改善・テーブル背景色被り修正

- RecruitmentDetailにContainer/Title/Animation標準パターンを適用
- ボタンを「締切・編集へ」1つに統合(LuPencilLine + teal)
- テーブル構造要素のbg="gray.50"→"white"に変更(ページ背景との境界明確化)
- ShiftForm内部のpx={4}を削除しpadding責務を呼び出し側に移動

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: シフト募集開始時のメール送信機能を追加

Resend + Convex Action で募集作成時にスタッフへメール通知する基盤を構築。
- convex/email/actions.ts: Resend APIによるメール送信internalAction
- convex/recruitment/mutations.ts: magicLink生成・メール送信スケジュール追加
- scripts/setupEnv.ts: .envからConvex環境変数を一括設定するスクリプト

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: implement shift submit page flow and UX copy

* feat: ShiftSubmit関連コンポーネントのStorybook追加

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: Storybookから未インストールの@storybook/test依存を削除

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* feat: シフト募集・申請・確定フローの実装とmagicLinksテーブル導入 (#268)

* fix: スタッフ一覧のマネージャーバッジを上下中央寄せ

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: シフト募集CREATE バックエンド実装

recruitmentsテーブル追加・create mutation作成・フロントエンド接続

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: スタッフ詳細ページの重複表示を解消しレイアウト修正

Title内の重複アバター・名前を削除し、編集ボタンをStaffDetailContentの
ヘッダー行(アバター+名前の右端)に移動。スキル表示をチップスタイルに変更。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: シフト管理画面をDB接続(モックデータ削除)

recruitment queries作成・ShiftsPageでuseQueryに切り替え

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: シフト募集一覧を開始日の降順ソートに変更・募集詳細UIリファクタ

- recruitmentsテーブルにby_shop_and_startDateインデックス追加
- listByShopクエリでバックエンド側降順ソートを実装
- フロントエンドの冗長なソート処理を削除
- RecruitmentDetailのレイアウトをTitle/Card/Animation構成に統一

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: シフト募集詳細レイアウト改善・テーブル背景色被り修正

- RecruitmentDetailにContainer/Title/Animation標準パターンを適用
- ボタンを「締切・編集へ」1つに統合(LuPencilLine + teal)
- テーブル構造要素のbg="gray.50"→"white"に変更(ページ背景との境界明確化)
- ShiftForm内部のpx={4}を削除しpadding責務を呼び出し側に移動

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: シフト募集開始時のメール送信機能を追加

Resend + Convex Action で募集作成時にスタッフへメール通知する基盤を構築。
- convex/email/actions.ts: Resend APIによるメール送信internalAction
- convex/recruitment/mutations.ts: magicLink生成・メール送信スケジュール追加
- scripts/setupEnv.ts: .envからConvex環境変数を一括設定するスクリプト

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: implement shift submit page flow and UX copy

* feat: ShiftSubmit関連コンポーネントのStorybook追加

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: Storybookから未インストールの@storybook/test依存を削除

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* add: pen file

* feat: シフト編集・確定

* fix

* del

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: コード重複解消・責務分離・N+1クエリ最適化 (#269)

* refactor: コード重複解消・責務分離・N+1クエリ最適化

- convex/helpers.ts と position/mutations.ts の重複関数を一本化
- shop/mutations.ts からスタッフ操作を staff/mutations.ts に分離
- staffSkill/queries.ts の listByShop でポジション一括取得に最適化
- PositionManager/PositionEditor の共通部品を抽出(SortablePositionItem, PositionAddForm, validatePositionName)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* `chore: @yn1323/cognac導入と設定ファイル追加`

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* f

* Feat/0323 (#270)

* chore: 不要スキルの削除(create-pr, doc-update, resume-plan, save-plan)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: commitスキルの追加(自動コミット分割)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: CLAUDE.mdの説明充実・自動生成ファイルの注意事項追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: 充足度の数値表示がグリッドラインとずれる問題を修正

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: discussスキルの追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: ShiftFormデザインガイド・デザインファイルの追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: ShiftForm DailyViewの消しゴムモード削除・空状態ガイド追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: Claude Code権限設定の更新・discussスキルの改善

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: ShiftForm情報設計プランの追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: undo/redo・toolMode・scrollDragの廃止とPositionToolbar簡素化

情報設計改善プランStep1: selectモード・undo/redo・スクロールドラッグを削除し、
ポジションボタンのみのシンプルなツールバーに変更。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ポジション間ギャップの休憩ストライプ表示

情報設計改善プランStep2: computeVisualBreaksでポジション間の空き時間を検出し、
ストライプパターンで休憩を可視化。PC・SP両対応。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ピーク帯設定・充足度アラート・DateTabsバッジの追加

情報設計改善プランStep3-5: ピーク帯定義+最低人員の簡易入力モード、
DailyView/OverviewViewの充足度アラート表示、DateTabsの曜日色分け・⚠️/✅バッジ。
dateStatuses計算をuseDateStatuses hookに共通化。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: StaffEditModalの参照専用モード追加

情報設計改善プランStep7: viewOnly propでShiftFormからの
スタッフ名クリック時は参照のみ表示に変更。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: 実装ルールの追加

lint・type-check・test実行後の/simplify実行を必須化。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: ShiftFormのドラッグ操作時にカーソルがcrosshairに変わる挙動を削除

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ポジションバーのホバーカーソルとPopoverの時間順ソートを追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: ドラッグ操作後の同一ポジション隣接セグメントが統合されない問題を修正

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: SummaryFooterRowのラベルを「出勤数」から「人数」に変更

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: ポジション色バーのホバー時にcursor: pointerが表示されない問題を修正

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ShiftForm日別ビューのUI改善(二重テキスト削除・ホバー強化・時刻ラベル視認性・タブ強調)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ShiftFormのUI全体改善(充足度バー未着手グレー化・一覧ビュートーンダウン・ガイドバーアニメーション・ツールバー背景色)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ShiftFormのビュー切替とポジション選択を統合ツールバーに集約

ビュー切替(日別/一覧)とポジションボタンを1本のツールバーにまとめ、
視覚的な散漫さを解消。日付タブのbold削除・ツールバー高さ固定で
レイアウトシフトも防止。一覧ビューのborderRadiusもlgに統一。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: CLAUDE.mdのデザインセクションをdoc/design/構成に更新

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* f

* f

* feat: 必要人員設定のヘッダーアイコン追加と休日タブのフォント色を赤に変更

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: convex自動生成ファイルのimport順序更新

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: デザインシステムの.penファイルを追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: 未使用のStaffingRequirementを削除し、必要なファイルをPeakBandSettingsに移動

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: スタッフからmaxWeeklyHoursとhourlyWageフィールドを削除

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: スタッフ閲覧画面でメモ欄を常時表示し、未入力時は「記入なし」を表示

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: スタッフからmaxWeeklyHoursとhourlyWageフィールドを削除

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: ピーク帯設定のバリデーション追加とUI改善

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: CLAUDE.mdにコンポーネント分割ルール追加、biomeスキーマ更新

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: ピーク帯設定バグ修正の計画ドキュメント追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* f

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Update wrangler config name to dev-yps-crispy-carnival

* Feat/0323 (#274)

* chore: 不要スキルの削除(create-pr, doc-update, resume-plan, save-plan)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: commitスキルの追加(自動コミット分割)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: CLAUDE.mdの説明充実・自動生成ファイルの注意事項追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: 充足度の数値表示がグリッドラインとずれる問題を修正

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: discussスキルの追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: ShiftFormデザインガイド・デザインファイルの追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: ShiftForm DailyViewの消しゴムモード削除・空状態ガイド追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: Claude Code権限設定の更新・discussスキルの改善

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: ShiftForm情報設計プランの追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: undo/redo・toolMode・scrollDragの廃止とPositionToolbar簡素化

情報設計改善プランStep1: selectモード・undo/redo・スクロールドラッグを削除し、
ポジションボタンのみのシンプルなツールバーに変更。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ポジション間ギャップの休憩ストライプ表示

情報設計改善プランStep2: computeVisualBreaksでポジション間の空き時間を検出し、
ストライプパターンで休憩を可視化。PC・SP両対応。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ピーク帯設定・充足度アラート・DateTabsバッジの追加

情報設計改善プランStep3-5: ピーク帯定義+最低人員の簡易入力モード、
DailyView/OverviewViewの充足度アラート表示、DateTabsの曜日色分け・⚠️/✅バッジ。
dateStatuses計算をuseDateStatuses hookに共通化。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: StaffEditModalの参照専用モード追加

情報設計改善プランStep7: viewOnly propでShiftFormからの
スタッフ名クリック時は参照のみ表示に変更。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: 実装ルールの追加

lint・type-check・test実行後の/simplify実行を必須化。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: ShiftFormのドラッグ操作時にカーソルがcrosshairに変わる挙動を削除

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ポジションバーのホバーカーソルとPopoverの時間順ソートを追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: ドラッグ操作後の同一ポジション隣接セグメントが統合されない問題を修正

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: SummaryFooterRowのラベルを「出勤数」から「人数」に変更

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: ポジション色バーのホバー時にcursor: pointerが表示されない問題を修正

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ShiftForm日別ビューのUI改善(二重テキスト削除・ホバー強化・時刻ラベル視認性・タブ強調)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ShiftFormのUI全体改善(充足度バー未着手グレー化・一覧ビュートーンダウン・ガイドバーアニメーション・ツールバー背景色)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ShiftFormのビュー切替とポジション選択を統合ツールバーに集約

ビュー切替(日別/一覧)とポジションボタンを1本のツールバーにまとめ、
視覚的な散漫さを解消。日付タブのbold削除・ツールバー高さ固定で
レイアウトシフトも防止。一覧ビューのborderRadiusもlgに統一。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: CLAUDE.mdのデザインセクションをdoc/design/構成に更新

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* f

* f

* chore: v2のConvexバックエンドを削除・スキーマ簡素化

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: v3プロダクト定義書・Convexアーキテクチャ規約の追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: v2の不要コードを一括削除

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: v3に向けたコード簡素化(ShiftForm・テンプレート・ルーティング)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ダッシュボードページの追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: ShiftFormのドラッグ操作・SP版シフト編集を簡素化

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: v3再構築に向けた旧ドキュメントの一括削除

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: ARCHITECTURE.md・INDEX.mdを現在のコードベース実態に合わせて更新

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: プロダクト定義書の追加

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: プロダクト定義書のファイル名に日付プレフィックスを付与

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: 情報設計書の追加

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* doc

* chore: Chakra UIテーマ設定ファイルの追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: デザイン関連ファイルをdesign/ディレクトリに整理

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: system.penにリユーザブルコンポーネントとインデックスを追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: CLAUDE.mdにペルソナとレイアウトルールを追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: デザインファイルのリネームとダッシュボード画面の追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: デザインインデックスのSP画面ID追加とContentWrapperコンポーネント定義

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ContentWrapperテンプレートコンポーネントの作成

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ダッシュボード画面の実装(モックデータ版)

募集セクション・スタッフセクション・作成/追加モーダルを含む
レスポンシブ対応(PC: Dialog / SP: BottomSheet)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: BottomSheetにアクションボタン(送信・キャンセル)を追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ダッシュボード画面のUI改善

募集カードにシフトボード遷移ボタン・日付フォーマット・ステータス表示を改善。
募集フォームのフィールドラベル整理、スタッフ一覧の簡素化、statusをcompletedに変更。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: CLAUDE.mdの実装ルール説明を更新

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: BottomSheetデザインにアクションボタン(送信・キャンセル)を追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: ダッシュボード画面のSPデザインを追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: concurrentlyを導入しdev:allスクリプトを追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: セキュリティ・認証設計書を追加し関連ドキュメントを更新

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs: シフトボードのUX設計書…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant