development → staging - #780
Merged
Merged
Conversation
…eation - Display a parent task chip in the task edit modal (with remove/select), and split the due-date input into separate date/time fields (#762). - Move task timestamp display (created/modified/completed) out of the inline summary into a clock-icon tooltip on the edit modal's title row (#764). - Rework "Add a subtask": clicking it now opens the same task edit/detail modal used everywhere else, seeded with a blank, unsaved draft, instead of adding a "Subtask of X" chip before the task input (#774). The draft is only actually created once its name has been genuinely edited (via usePlayerItemModal's existing no-op-edit guard); closing the modal without editing the name discards the draft with no API call. - Add PlayerItemList `hiddenItemIds` (keep an item deep-linkable without rendering it as a row) and `onModalClose` (notify the caller which item's modal just closed) to support the draft-subtask flow.
Parent task chip, due-date split, timestamp tooltip, subtask creation
…ivity Re-enables handle_online_login, set_activity_active_modifiers, and schedule_online_end (disabled in 870afd2 pending premium-XP isolation), routing all modifier creation through the shared activate_link_modifier helper (extended with a scope param so it can target PLAYER as well as CHARACTER modifiers). Stopping an activity no longer ends its activity_active modifier immediately - ends_at is pushed out by a 5-minute grace window via schedule_modifier_end, and starting another activity within that window refreshes the same modifier row instead of dropping and reactivating it. Adds progression.ap.get_productivity (baseline constant x live active XpModifier multiplier) and Character.get_productivity as the authored, live-read productivity signal called for in the issue - deliberately not derived from lifetime AP total. Closes #750 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N8Siy6MEuhLq9kCa3ujBwf
Adds stories for the pure, prop-driven component gaps identified in #749: PlayerItemList, List/Li, Achievements, ModeSwitcher, EntitySearchInput, TutorialModal, WaitlistForm, StaticBanner, BackToTopButton, ToastManager. Also adds the minimal decorator infra these turned out to need: - withQueryClient (global): a fresh, retry-off QueryClient per story, for components that call TanStack Query hooks directly or transitively (EntitySearchInput, TutorialModal both do, despite being listed as context-free in the issue's audit). - withGameContext + testUtils/mockGameContext: a minimal GameContext mock for EntitySearchInput's indirect useGame() dependency (via useFeatureFlag). ActivityInput was left out of this batch - it now pulls in useGame, useSupportFlow, useFeatureFlag and timer state, which is bucket-2/3-level complexity, not the "prop-driven, no context" component the issue described.
Stories Navbar, NavDrawer, Footer, and Infobar - the layout chrome called out as bucket 3 in #749, step 4 of its suggested approach. - Split AuthContext's raw context into context/authContext.ts, mirroring the existing GameContext.tsx/gameContext.ts split, so it can be mounted directly in stories without pulling in AuthProvider's real bootstrap/fetch logic. - Add testUtils/mockAuthContext.ts (mockAuthContextValue({authenticated, ...overrides})) and .storybook/decorators/withAuthContext.tsx, following bucket-1's conventions. - Navbar.stories.tsx: LoggedOut, LoggedIn, WithAnnouncements (play test opens the popover), WithMapEnabled - wrapped in MemoryRouter + a seeded QueryClient (appConfig, announcements) + mock AuthContext/GameContext. - NavDrawer.stories.tsx: LoggedIn (play test clicks close, asserts onClose fires), LoggedOut, WithMapEnabled, Closed. - Footer.stories.tsx: LoggedOut (play test asserts no Admin Panel link), LoggedIn, StaffUser (play test asserts the link appears). - Infobar.stories.tsx: Default (play test asserts name/level), PremiumPlayer, Loading, NoPlayer (renders null). Verified via eslint, tsc --noEmit, and storybook build (all clean), plus vitest on AuthContext.test.tsx and the Navbar/NavDrawer unit tests (24 passing) to confirm the context split didn't break anything. test:storybook (Playwright-driven play functions/a11y) still can't run in this sandbox - no sudo for Chromium's system deps - run locally/CI before merging. Remaining gap per #749: bucket 2 (data-fetching panels - Categories/ Projects/Skills/Tasks/ActivitiesPanel, ComingSoonPanel, NotesPanel, DetailSurface, SupportFlow screens, UnifiedTimerHome, ActivityTimeline, CurrentActivity, CharacterCurrentActivity) and the deferred ActivityInput. Per the issue's own plan, step 5 is to revisit whether those need separate stories given PlayerItemList's existing coverage. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…et-1 feat: Storybook coverage — bucket 1 + layout chrome (#749)
Re-enable player-presence XP modifiers and add live character productivity
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
Fixes and UX improvements
Developer experience and quality
Technical notes
handle_online_login,set_activity_active_modifiers,schedule_online_end), routed through a sharedactivate_link_modifierhelper; stopping an activity now uses a 5-minute grace window (schedule_modifier_end) before ending itsactivity_activemodifier, and restarting within that window refreshes the existing modifier row instead of recreating it.