Conversation
- Rebuild `/{treeId}/{hatId}` on the design system: breadcrumb, quest
panel on the right (60/40 split on desktop), combined assignees +
supporters card with kind-specific badges, edit button inline.
- Rebuild `/{treeId}/{hatId}/{address}` with a stats card (活動開始日 /
総活動日数 / あなたの{ロールシェア|ケアポイント}), ロールシェアの保有率
ShareDistribution chart, and toast-on-success deactivate / reactivate
flow. Logged-in user's balance is read straight from the GraphQL
response (no formatEther — FractionToken is ERC-1155 integer counts).
- Add `Breadcrumb` and `ShareDistribution` composites with Ladle
stories. Wire breadcrumbs across role list / duty / holder pages;
every crumb renders as `<Link>` with the current page disabled so the
baseline doesn't shift between linked and current items.
- Convert `useActiveState` to a `useQuery` so callers can `refetch`
after a wallet write instead of juggling revalidation tokens.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Extract QuestPanel (with QuestCard / QuestStateBadge / questMeta) into
`app/components/quests/QuestPanel.tsx` so duty and holder detail share
one implementation.
- Mirror the duty detail's desktop 60/40 split on holder detail with
the QuestPanel in the right column on desktop and stacked on mobile.
- Gate the "クエストを作成" CTA behind `canCreate` — only show it when
the viewer actually holds role share for the hat (any wearer's shard
on duty detail, the current wearer's shard on holder detail).
- Role card on `/{treeId}/role` now shows both `詳細` and `担当を追加`
buttons; "詳細を見る" copy trimmed to "詳細".
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ers (#435) The contract's `deactivate` / `reactivate` / `renounce` gate is `hasAuthority(msg.sender) || msg.sender == wearer`, but the holder detail page was only rendering the action buttons for `isMe`. Operator hat wearers / admins (anyone the module's `minterHatId` resolves to) were locked out of the UI despite being allowed on-chain. - Add the missing `hasAuthority(address) view returns (bool)` entry to the frontend's `HatsTimeFrameModule` ABI. - Add `useHasAuthority` (React Query) that reads the module's `hasAuthority` for the connected wallet. - Gate the authorized-actions block on `canManage = isMe || hasModuleAuthority`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/{treeId}/{hatId}on the design system — breadcrumb, header, description card, combined assignees + supporters card (with当番リード/サポーターbadges), and a quest panel that lives on the right side (60/40 split) on desktop or below 説明 on mobile. クエスト作成 button is part of the quest panel./{treeId}/{hatId}/{address}— duty/wearer header with active/休止 badge, stats card (活動開始日/総活動日数/あなたの{ロールシェア|ケアポイント}),ロールシェアの保有率chart, send shortcut (hidden when logged out), and 一時休止 / 再開 / 当番を剥奪 actions withsonnertoast on success.Breadcrumb(every crumb rendered as a<Link>with the current page disabled, so the baseline is identical) andShareDistribution(stacked horizontal bar + legend with avatars + percent)./{treeId}/role,/{treeId}/{hatId},/{treeId}/{hatId}/{address}so navigation back through the chain works without per-page back buttons.useActiveStatetouseQueryand returnrefetch— the holder detail flips アクティブ → 休止中 from chain-confirmed data instead of revalidation tokens or optimistic state.formatEtherwas being applied to ERC-1155 integer balances and turning them into near-zero "dummy" values.Closes #435.
Test plan
/{treeId}/role→/{treeId}/{hatId}: breadcrumb shows当番一覧 > {duty}, クエスト一覧が右(or下)に表示、クエスト作成ボタンが同じパネルにある/{treeId}/{hatId}, 現在の担当 card lists wearers with当番リードand RoleShare holders withサポーターbadges/{treeId}/{hatId}/{address}: breadcrumb shows当番一覧 > {duty} > {resolved name}, 活動開始日 / 総活動日数 / あなたのロールシェア が表示あなたのロールシェアshows—when the shard hasn't been minted yet or the user is logged out,0only when others hold but the user doesn't, the real number otherwiseアクティブ→休止中に切り替わる。再開も同様🤖 Generated with Claude Code