Commit graph

834 commits

Author SHA1 Message Date
80bcbd59db fix CharacterTypeahead usage in weapon forms 2025-12-15 11:03:12 -08:00
ba17a17224 style CharacterTypeahead to match Select, use granblueId as value 2025-12-15 11:03:06 -08:00
3d75c22f3b fix CharacterTypeahead width in DetailItem 2025-12-15 11:03:02 -08:00
3a9e1f8845 prefill gacha fields from wiki data in import forms 2025-12-15 09:52:13 -08:00
b5f832191f add gacha suggestion types and use CharacterGachaSection 2025-12-15 09:52:08 -08:00
879a3bd8bd move season field to Metadata section 2025-12-15 09:52:03 -08:00
75a97cabaa add CharacterGachaSection component 2025-12-15 09:51:58 -08:00
dd16718c03 add Holiday to CHARACTER_SERIES, remove Standard season 2025-12-15 09:51:54 -08:00
8a44d588c8 add page titles to database pages 2025-12-14 21:56:01 -08:00
0336fabaa8 add dynamic page titles for profiles and teams 2025-12-14 21:55:54 -08:00
8541f54f90 add page titles to static pages 2025-12-14 21:55:45 -08:00
1a21828815 add PageMeta component and i18n keys for page titles 2025-12-14 21:55:37 -08:00
b50c1854d6 fetch wiki data client-side to bypass cloudflare 2025-12-14 21:50:45 -08:00
ed6a9fd2f4 send wiki_raw when creating entities from import 2025-12-14 21:50:40 -08:00
cfb62447a0 move Recruits and Promotions to Gacha section 2025-12-14 21:50:35 -08:00
850c5dd771 auto-update summon max level based on uncap
same behavior as weapons: 100/150/200/250 for base/flb/ulb/trans
2025-12-14 21:14:03 -08:00
d6160d0bae auto-download images after entity creation 2025-12-14 20:00:23 -08:00
9fb66e731e auto-download images after batch import 2025-12-14 20:00:23 -08:00
64725bd4e8 add link buttons to import form fields
- add URL builders for wiki/gamewith/kamigame
- add hasLinkButton prop to DetailItem components
- show disabled link button when value is empty
- store page names instead of full URLs
- fix DetailItem to render children when editable
- remove focus background styling
2025-12-14 19:35:33 -08:00
e1ba34048a improve import form components
- fix Select reactivity with external value changes
- add series/promotions to taxonomy sections
- add onDataChange callbacks to uncap sections
- add game CDN image helpers for batch imports
- expand suggestion type definitions
2025-12-14 19:35:20 -08:00
37f2178d4a pre-fill summon ID from wiki data in batch import 2025-12-14 17:01:16 -08:00
6e6121cb71 use DetailItem for Granblue ID (already pre-populated) 2025-12-14 13:41:34 -08:00
3ec5e9f48a fix: preserve wiki_data keys during request transform 2025-12-14 13:28:43 -08:00
5c870b148e use client-side wiki fetch for batch preview imports 2025-12-14 13:17:34 -08:00
34db76fbdc add client-side wiki fetcher to bypass cloudflare 2025-12-14 13:17:21 -08:00
b2f4cf5246 fix placeholder images to use CDN url 2025-12-14 12:59:29 -08:00
42f7722e50 batch import: use individual inputs instead of comma-separated
- start with 3 inputs, add/remove as needed
- avoids issues with item names containing commas
2025-12-14 12:41:05 -08:00
dd1591d5b3 update nav to point to consolidated series page 2025-12-14 11:59:39 -08:00
f429988981 consolidate series pages into single page with tabs 2025-12-14 11:59:35 -08:00
50ee6b80ff add character/summon series to entity adapter and queries 2025-12-14 11:59:31 -08:00
d921d37362 add character and summon series types 2025-12-14 11:59:26 -08:00
77339a2b27 add name, proficiency, and level badge to artifact cards 2025-12-14 02:06:42 -08:00
c90da7ad4e show item names in collection cards 2025-12-14 02:06:34 -08:00
7f9398efbd add retired toggle to member/phantom edit dialog 2025-12-14 01:52:19 -08:00
7fdb07cacf fix collection card image sizing 2025-12-14 01:52:15 -08:00
04b91a638d pass showGranblueId to ProfileHeader 2025-12-14 01:52:10 -08:00
930627c71c use lighter bg and darker text for settings tabs 2025-12-14 01:31:36 -08:00
106b9261f8 fix Select placeholder check for falsy values 2025-12-14 01:24:07 -08:00
e8608ff32d respect showGranblueId setting in ProfileHeader 2025-12-14 01:24:03 -08:00
376e915ade refactor UserSettingsModal to tabbed layout 2025-12-14 01:23:59 -08:00
9ee90fc6fc add /users/me endpoint to user adapter 2025-12-14 01:23:55 -08:00
242aa7c0a9 add settings section components 2025-12-14 01:23:50 -08:00
c785d1d0ab add SettingsNav and SettingsRow components 2025-12-14 01:23:47 -08:00
8e57cdc2a5 add missing crewStore import 2025-12-13 23:27:48 -08:00
9429ccff53 use AWS for placeholder images in production 2025-12-13 23:26:35 -08:00
9c69db640e hide invitations menu item when user is in a crew 2025-12-13 23:20:58 -08:00
b844012f3b use neutral ViewModeToggle in collection pages 2025-12-13 23:17:58 -08:00
f20c99bdac add ViewModeToggle component with element theming and neutral mode 2025-12-13 23:17:50 -08:00
04469ee202 fix icon svg handling, update grid/list icons 2025-12-13 23:17:42 -08:00
4745baca1c add bulk phantom creation, delete confirmation, default to all filter
- bulk create phantoms with individual join dates
- confirm before deleting phantoms
- reorder filters with All first and as default
2025-12-13 23:12:40 -08:00
7dcb100412 add medium size to Dialog, leftIcon/rightIcon props to Button 2025-12-13 23:12:34 -08:00
0e5f7e1642 fix modal content overflow pushing footer out of view 2025-12-13 23:12:30 -08:00
7e0f66d9cc fix registration availability checks and signup endpoint
- correct api paths for username/email availability checks
- use singleton userAdapter instead of creating new instance
- use getApiBaseUrl() for signup to include /api/v1 prefix
2025-12-13 22:15:31 -08:00
30128107fb cache user settings in cookie for faster modal loading
store granblueId and showCrewGamertag in cookie at login,
use as initial values so modal opens instantly
2025-12-13 22:14:49 -08:00
362db1238f fix input focus loss when error state changes
always wrap in fieldset to keep DOM structure stable
2025-12-13 22:14:32 -08:00
9787af9c42 fix party avatar to use shared image utilities 2025-12-13 21:50:25 -08:00
c57f84b1b4 fix avatar images to respect remote/local hosting config 2025-12-13 21:49:14 -08:00
586dd84a01 remove unused page test 2025-12-13 21:25:06 -08:00
da7299625c misc type and style fixes 2025-12-13 21:25:02 -08:00
4f1b8872c0 fix database edit page type errors 2025-12-13 21:24:47 -08:00
318db82ce7 fix storybook mock types 2025-12-13 21:24:39 -08:00
70df592890 fix svelecte event handling for svelte 5 2025-12-13 21:24:31 -08:00
0c973785d1 move favorites to separate route 2025-12-13 21:24:22 -08:00
aee62522e9 redesign profile header with gamertag + gbf profile link 2025-12-13 21:24:09 -08:00
14819f0b73 fix null check for layout data during error scenarios 2025-12-13 21:18:50 -08:00
e5dec76a84 fix image paths for production (use AWS URLs) 2025-12-13 20:58:34 -08:00
60cbc03edf select/multiselect: remove hover shadow, use elemental checkmarks 2025-12-13 20:58:30 -08:00
20dabc5aa1 collection page card styling + contained filters 2025-12-13 20:58:20 -08:00
c54c959522 rework ModalFooter to use action props
- onCancel callback with fixed "Nevermind" label
- optional primaryAction object (label, onclick, destructive, disabled)
- optional left snippet for custom content
2025-12-13 20:02:25 -08:00
7dae71965a extract DeleteTeamDialog component 2025-12-13 20:02:18 -08:00
492307530a fix nav highlight for profile sub-routes 2025-12-13 20:02:14 -08:00
82c3f3c471 add scout button and pending invitations to crew members
- wire scout button to open ScoutUserModal
- collapsible section showing sent invitations for officers
2025-12-13 18:07:15 -08:00
013c1b5eb2 add invite to crew action on user profiles
officers can invite users without a crew via context menu
2025-12-13 18:07:11 -08:00
d2c16d908d add invitation notifications to nav
badge on profile icon + dropdown item to open invitations modal
2025-12-13 18:07:06 -08:00
c9f31f9059 add crew invitation modals
- InvitationsModal: view/accept/decline pending invitations
- InviteUserModal: confirm invite from profile page
- ScoutUserModal: search users by username to invite
2025-12-13 18:07:02 -08:00
27a98274c1 add NotificationBadge component
reusable red dot/count badge for notifications
2025-12-13 18:06:56 -08:00
b3ec56648c fix mock file imports to use correct type modules 2025-12-13 14:55:56 -08:00
9e547d66df fix button variant and visibility enum usage 2025-12-13 14:55:51 -08:00
789494e773 migrate dialog consumers to ModalHeader/Body/Footer pattern 2025-12-13 14:55:46 -08:00
a3c5676c4c add missing type props: dates, wiki links, editKey, gw stats 2025-12-13 14:55:40 -08:00
6f16b41d35 misc: util tweaks, database page fixes, mock updates 2025-12-13 14:35:29 -08:00
46d48132bd sidebar: fix proficiency list spacing 2025-12-13 14:35:25 -08:00
b6fb3ec0a0 add new theme color variables 2025-12-13 14:35:11 -08:00
015650104e teams/new: reformat and restructure page 2025-12-13 14:35:03 -08:00
47563634b3 nav: add crew link and gw-events database link 2025-12-13 14:34:49 -08:00
b5d0b7c0e7 collection panes: add delete action, fix edit mode state
- add remove from collection with confirmation
- sidebar overflow menu for delete action
- better tracking of which item is selected to avoid state bugs
2025-12-13 14:34:40 -08:00
7558aef509 edit panes: remove footer buttons, export save() for header
parent components now call save() from sidebar header action
instead of embedded cancel/save buttons
2025-12-13 14:34:30 -08:00
4418157ca0 refactor modal components to use header/body/footer pattern
UserSettingsModal now uses ModalHeader, ModalBody, ModalFooter.
Dialog simplified. Button tweaks.
2025-12-13 14:34:20 -08:00
eaea344db4 add crew pages: dashboard, create, join, settings, gw events admin 2025-12-04 03:03:33 -08:00
aee0690b2d add crew UI components, store, queries, and mutations 2025-12-04 03:03:27 -08:00
32af6a7788 crew members page improvements
- edit join date dialog
- add phantom with join date
- dropdown menus for member actions
- disable scout when roster full (30)
- invalidate gw queries on join date change
2025-12-04 03:03:04 -08:00
f4d04a7073 gw event page improvements
- total honors instead of total score
- muted style for players with existing scores
- by-event score endpoints
2025-12-04 03:02:58 -08:00
e7dfca992a add muted and suffixSnippet props to Select component 2025-12-04 03:02:51 -08:00
0a2a3894bf Add sync from collection menu and highlight owned items in search
- Party.svelte: Add 'Sync from collection' to overflow menu for parties
  with linked collection items, with proper menu grouping
- SearchContent.svelte: Highlight items user owns in 'All Items' mode
  with subtle green background and checkmark indicator
2025-12-03 23:24:30 -08:00
f5d0bbe7da Add sync UI to Party and edit sidebars
- Party.svelte: Pass authUserId to openSearchSidebar, link collection
  items when adding to party via collectionId
- DetailsSidebar: Show sync banner for out-of-sync items, add sync
  functionality for characters, weapons, and summons
- EditCharacterSidebar/EditWeaponSidebar: Add sync banner and button
  for items linked to collection
- party.ts types: Add collectionId and outOfSync fields to grid types
2025-12-03 23:13:59 -08:00
bf2bf8663f add search mode toggle for collection items 2025-12-03 22:58:46 -08:00
43f9f37ccc add sync mutations for grid items 2025-12-03 22:52:31 -08:00
48121612fc add collection refs and sync methods to frontend types and adapters 2025-12-03 22:51:23 -08:00
4a89f43d05 use small select for artifact rarity filter 2025-12-03 21:28:15 -08:00
7c93cf8aab fix skill lookup for slots 3-4 by matching skill group 2025-12-03 21:10:22 -08:00
3f13f16998 add artifact header with wide image and relief background 2025-12-03 21:05:42 -08:00
2f0bb76531 add grid and list view toggle icons 2025-12-03 20:52:23 -08:00
ff4b63a542 show remaining chars counter only when near limit 2025-12-03 20:52:14 -08:00
edbfd14843 tweak DetailRow min-width, fix DisclosureRow label wrapping 2025-12-03 20:52:09 -08:00
8759afb83c fix infinite loop in sidebar action effects with untrack 2025-12-03 20:52:03 -08:00
eaae29f007 simplify artifact mutation, remove optimistic update 2025-12-03 20:51:58 -08:00
5bac8a0b53 add element-based styling to modifier selection 2025-12-03 20:51:52 -08:00
dc4c2c3117 move artifact image/name to header, use DetailRows for skills 2025-12-03 20:51:16 -08:00
ee2e51affd add image support to sidebar header 2025-12-03 20:51:10 -08:00
399480db9f put grade recommendation reason inline with action badge 2025-12-03 20:51:05 -08:00
91b2a61ac9 simplify skill display to value-only, highlight max rolls in element color 2025-12-03 20:50:59 -08:00
f55303039c auto-redistribute skill levels when artifact level changes 2025-12-03 20:50:53 -08:00
f34f2c4dc9 show calculated skill values in dropdown, add level constraints 2025-12-03 20:50:47 -08:00
4b2d1b7dc0 add calculateSkillDisplayValue helper for artifact skills 2025-12-03 20:50:42 -08:00
ea09f325a0 fix slider value handling and track width
- Use single value instead of array for type="single" slider
- Pass onValueChange directly without array wrapping
- Use flex-grow: 1 for track width instead of width: 100%
2025-12-03 18:50:11 -08:00
8ddfe58369 fix slider range width by adding track wrapper element
The bits-ui Slider.Range component needs to be inside a proper
track element for the range fill to display correctly. Added a
span wrapper with slider-track class and updated styles.
2025-12-03 18:45:53 -08:00
23b1d091f5 add Slider component with elemental styling for level selection 2025-12-03 18:41:04 -08:00
a1bc125521 add element-ghost button variant for sidebar header 2025-12-03 18:33:56 -08:00
9b59a22a43 stretch header buttons to fill height, add gap between accessories 2025-12-03 18:25:24 -08:00
f5f7743055 move delete to detail pane overflow, add disabled save button to edit 2025-12-03 18:20:13 -08:00
db71e6dc80 add overflow menu support to pane stack 2025-12-03 18:20:09 -08:00
100f506c44 move add artifact button to header as elemental button 2025-12-03 18:11:34 -08:00
99644c1730 use color dots instead of images for element dropdown 2025-12-03 18:08:15 -08:00
3527bc820f make Edit button elemental based on artifact element 2025-12-03 18:08:08 -08:00
abf7a36d8a remove translateY(1px) from button active state 2025-12-03 18:07:59 -08:00
b047552d7d fix infinite loop: use onMount instead of $effect for sidebar action 2025-12-03 17:57:50 -08:00
34821aa487 split artifact pane into detail and edit views
- CollectionArtifactDetailPane: read-only view with Edit button in header
- CollectionArtifactEditPane: editable form pushed onto pane stack
- ArtifactSkillDisplay: new read-only skill display component
2025-12-03 17:54:18 -08:00
190e2140b1 artifact images: add square/wide variants
use artifact-square for thumbnails, artifact-wide for grid display.
defaults to square for backwards compat.
2025-12-03 17:44:01 -08:00
f23779b664 pane stack: each pane is now its own card
move card styling (bg, radius, shadow, border) from sidebar
container to individual panes so they visually stack as
separate cards. behind pane peeks out from the left.
2025-12-03 17:38:53 -08:00
df045ecd2b add AddArtifactSidebar for collection artifacts
flow: proficiency -> element (color dots) -> artifact dropdown
(filtered by proficiency) -> level/nickname -> skills config
using pane stack for iOS-style navigation
2025-12-03 17:14:26 -08:00
ed32b7e924 add color dot support to Select component 2025-12-03 17:14:19 -08:00
e595196172 clean up debug logs from skill filtering investigation 2025-12-03 17:14:05 -08:00
9bdcc7818b remove polarity indicator from skill list 2025-12-03 17:14:01 -08:00
a29cdbb454 fix cache key to include query params
was generating same cache key for /artifact_skills and
/artifact_skills?group=group_i causing filtered requests
to return cached unfiltered results
2025-12-03 17:13:54 -08:00
644c596173 fix Icon import path in DisclosureRow 2025-12-03 16:33:47 -08:00
122b07e827 fix edit sidebars to use pane stack push/pop 2025-12-03 16:33:16 -08:00
a02db87988 fix @const placement in PaneStack 2025-12-03 16:28:26 -08:00
e502c8128d add artifact validation utilities 2025-12-03 16:23:58 -08:00
2b572d07a7 add artifact selection components for pane stack 2025-12-03 16:22:33 -08:00
e7354479f7 add artifact section to TeamView sidebar 2025-12-03 16:20:31 -08:00
ef22bcb6c1 add artifact indicator icon next to character name 2025-12-03 16:18:48 -08:00
52660f3fb1 add collection artifact feature (cards, rows, pane, route)
- CollectionArtifactCard for grid view
- CollectionArtifactRow for list view
- CollectionArtifactPane for sidebar details
- artifacts collection page with filters and infinite scroll
- getArtifactImage util
- update collection layout for artifacts tab
2025-12-03 16:17:15 -08:00
3a41adc4f2 add artifact UI components for phase 4
- DisclosureRow: iOS-style disclosure row for navigation
- ArtifactSkillRow: shows skill with modifiers and level/value controls
- ArtifactModifierList: selectable list of skills by polarity
- ArtifactGradeDisplay: shows letter grade, breakdown, recommendation
- ArtifactEditPane: main edit pane combining base props, skills, grade
2025-12-03 16:08:17 -08:00
ab1243190b add artifact queries and mutations
- artifactQueries: reference data (cached 1hr), collection infinite, skills by slot
- artifactKeys: cache invalidation helpers
- mutations: collection CRUD, grid CRUD, equip, and grading
2025-12-03 15:59:19 -08:00
1e708e1064 add artifact adapter for API communication
covers reference data, collection artifacts, grid artifacts,
and stateless grading endpoints.
2025-12-03 15:57:29 -08:00
d907e32d12 integrate pane stack into sidebar store
sidebar now uses PaneStackStore internally - openWithComponent
creates root pane, and child components can push/pop via context.
simplified Sidebar.svelte to render PaneStack when stack has items.
2025-12-03 15:55:47 -08:00
096214bc52 add artifact types and add artifact field to GridCharacter 2025-12-03 15:49:16 -08:00
84e1fb4a8a add pane stack store and component for ios-style navigation 2025-12-03 15:47:34 -08:00
e3cc2df45c fix missing promotions field in weapon edit data 2025-12-03 12:36:02 -08:00
b2a606554f simplify weapon series page to read-only list with styled table 2025-12-03 12:33:53 -08:00
108b662e33 make weapon series flags non-optional in type 2025-12-03 12:33:46 -08:00
ab4c8058f4 add ... dropdown to database nav with weapon series link 2025-12-03 12:33:42 -08:00
0259a8ad68 update test mocks to use WeaponSeriesRef 2025-12-03 11:59:40 -08:00
2e2574f749 add weapon series admin CRUD page 2025-12-03 11:59:36 -08:00
166ef8ff6f update conflict dialog and database pages for series objects 2025-12-03 11:59:31 -08:00
139e602808 fetch weapon series from API in collection filters 2025-12-03 11:59:26 -08:00
a251240331 complete handleSave for weapon modifiers, update key select to use slug 2025-12-03 11:59:16 -08:00
c5f6963ca7 update search and party schemas for weapon series objects 2025-12-03 11:59:12 -08:00
23a2481190 update entity adapter to use seriesSlug, add weapon series CRUD methods 2025-12-03 11:59:07 -08:00
745c162529 remove legacy integer series fallbacks from utils 2025-12-03 11:59:02 -08:00
a8d97479ff update Weapon.series to use WeaponSeriesRef, remove unused type files 2025-12-03 11:58:58 -08:00
58d8899075 add WeaponSeriesRef type definitions 2025-12-03 11:58:54 -08:00
a580f179e1 clean up error handling in add modal 2025-12-03 10:51:17 -08:00
a4572df406 refactor characters page to use card/row components
- use CollectionCharacterCard and CollectionCharacterRow
- add grid/list view toggle with viewMode store
2025-12-03 10:51:13 -08:00
5db9181afc left-align uncap indicators in cells 2025-12-03 10:50:41 -08:00
f54c5f012e improve collection row layouts
- wrap thumbnail + name in core-info container
- use layout tokens for border radius
- add proficiency column to weapon rows
- wider thumbnails, consistent sizing
2025-12-03 10:50:36 -08:00
6d8e1849eb add viewMode store for grid/list toggle persistence 2025-12-03 10:50:29 -08:00
b7fdde2025 add list cell background color tokens 2025-12-03 10:50:25 -08:00
e0a41102fd fix infinite scroll pagination in collection queries
use pageParam instead of response.page (which was undefined)
2025-12-03 09:03:52 -08:00
debf502a6c use batch endpoints for collection add operations
single request instead of one per item
2025-12-03 09:03:47 -08:00
c37c4f0101 fix request cancellation issue in batch add weapons/summons
The addWeapons/addSummons methods were using Promise.all with Array.fill()
which created arrays where all elements referenced the same object. This
caused the request deduplication logic in BaseAdapter to cancel previous
requests since they all had the same body/requestId.

Fix:
- Use Array.from() with spread to create unique object instances
- Execute requests sequentially to avoid deduplication conflicts
- Improve error handling in AddToCollectionModal to filter CancelledErrors
2025-12-03 07:37:03 -08:00
d9dd8f58ee fix Svelte 5 event modifier syntax in selectable components
Replace deprecated onclick|stopPropagation with onclick={(e) => e.stopPropagation()}
2025-12-03 07:31:32 -08:00
d11362ff57 add weapons and summons collection routes with layout updates
- Create weapons route with page, server load, and grid/list views
- Create summons route with page, server load, and grid/list views
- Enable weapons/summons tabs in collection layout (remove disabled)
- Add dynamic "Add" button text based on active entity type
- Pass entityType to AddToCollectionModal based on current route
2025-12-03 07:29:38 -08:00
60947a7911 add detail and edit panes for weapon/summon collections
- WeaponEditPane: edit component with uncap, transcendence, element,
  weapon keys, AX skills, and awakening support
- SummonEditPane: simple edit component with uncap and transcendence
- CollectionWeaponPane: full detail pane with Info/My Collection tabs
- CollectionSummonPane: full detail pane with Info/My Collection tabs
2025-12-03 07:26:53 -08:00
033bc1c8f7 add collection display components for weapons and summons
- CollectionWeaponCard: grid view with uncap indicator and transcendence
- CollectionWeaponRow: list view with element, uncap, and awakening/keys info
- CollectionSummonCard: grid view with uncap indicator
- CollectionSummonRow: list view with element and uncap info
2025-12-03 07:21:53 -08:00
957dd16e5e add quantity counter and selectable components for weapons/summons
- QuantityCounter: +/- buttons for multi-copy selection
- SelectableWeaponCard/Row: weapon selection with quantity
- SelectableSummonCard/Row: summon selection with quantity
- AddToCollectionModal: support entityType prop, Map for quantities
- CollectionFilters: entityType-aware filter visibility
2025-12-03 07:19:04 -08:00
13a3905776 add batch weapon/summon methods to collection adapter and mutations 2025-12-03 07:14:30 -08:00
a2e0015a85 minor cleanup: remove unused import, add font-tiny variable 2025-12-02 17:19:49 -08:00
5e5d9e93ec refactor CollectionCharacterPane: use DetailSections, fix reactivity on char switch 2025-12-02 17:19:45 -08:00
0f46960de6 add uncap level editing to CharacterEditPane 2025-12-02 17:19:41 -08:00
2a4789c72a add empty state support to DetailsSection 2025-12-02 17:19:38 -08:00
000cfd2332 add setAction/clearAction to sidebar store for dynamic header buttons 2025-12-02 17:19:34 -08:00
cc2b2c1f95 convert collection filters from buttons to dropdowns 2025-12-02 17:19:31 -08:00
9f18ff0a4d add small size variant to segmented control 2025-12-02 17:19:22 -08:00
6f21018bca add MultiSelect component, refactor Select for consistency 2025-12-02 17:19:19 -08:00
d053a9377e add race/proficiency/gender to CollectionFilters type 2025-12-02 15:32:11 -08:00
4bbe2ed188 simplify collection page to single code path
- use unified api for all users (no owner/viewer branching)
- remove client-side filtering (api handles it)
- pass userId to AddToCollectionModal
2025-12-02 15:31:58 -08:00
b8a48771dd update collection adapter/queries for unified api
- add userId param to list methods
- remove public collection methods (now unified)
- update query keys to include userId
2025-12-02 15:31:46 -08:00
35b0560749 add ProfileHeader component, add collection link to profile nav 2025-12-02 15:07:01 -08:00
9ed505623e fix collection page grid: use correct 280x160 aspect ratio for character images 2025-12-02 15:06:56 -08:00
a6a0a38d75 fix collection modal search: use query factory pattern, remove broken debounce 2025-12-02 15:06:47 -08:00
491026399f fix search api: wrap body in search key, use X-Per-Page header, 50 per page 2025-12-02 15:06:38 -08:00
7808c75452 fix cache key generation for POST requests with object bodies 2025-12-02 15:06:33 -08:00
3b071a1864 fix collection page width to match teams page
Remove explicit max-width: 1400px so the collection page uses the
default --main-max-width (820px) like the teams page.
2025-12-02 11:46:38 -08:00
a664d41e63 fix character card aspect ratio to match actual image dimensions
Character grid images are 280x160 (7:4 ratio, wider than tall).
The previous ratio was inverted. Now using 100px width with correct
aspect-ratio: 280/160.
2025-12-02 11:35:00 -08:00
408f729976 switch modal results grid to flexbox for better layout
Use flexbox with fixed-width cards (70px) instead of CSS Grid. This
prevents excessive vertical spacing when using tall aspect ratio items.
2025-12-02 11:32:04 -08:00
7de75ec8d0 fix character card aspect ratio and duplicate key error
- Use proper 16:33 aspect ratio for character cards instead of square
- Change object-fit from cover to contain to prevent cropping
- Deduplicate search results across pages to prevent duplicate key errors
2025-12-02 11:31:09 -08:00
d107d56f82 fix collection nav link to point to user's collection
The Collection nav link now points to /{username}/collection/characters
instead of /collection. Also updates isNavSelected to properly detect
when on any collection page.
2025-12-02 11:29:09 -08:00
2aa961b5e6 refactor EditCharacterSidebar to use shared CharacterEditPane
Reduces ~240 lines to ~85 lines by using the shared CharacterEditPane
component for edit controls. Both party grid and collection character
editing now use the same underlying UI component.
2025-12-02 11:26:23 -08:00
dea784780a add collection page route and character pane components
- Add collection route structure at [username]/collection/characters
- Create CharacterEditPane as shared component for character customizations
- Create CollectionCharacterPane with Info and My Collection tabs
- Add character grid with filters and infinite scroll
- Fix CollectionFilters a11y warnings
2025-12-02 09:43:31 -08:00
a9de4a60c0 add AddToCollectionModal and SelectableCharacterCard
Large modal for batch-selecting characters to add to collection.
Features server-side search, filtering, multi-select with visual
feedback, and "X selected" link to filter to selection only.
2025-12-02 09:32:28 -08:00
8f28ad8d8f add Dialog large size variant and CollectionFilters
Dialog now supports size='large' for 90vw/85vh modals.
CollectionFilters provides reusable filter controls for
element, rarity, season, series, race, proficiency, gender.
2025-12-02 09:30:31 -08:00
60ac5d4ab2 add collection API layer
Types, adapter, queries, and mutations for managing user collections
(characters, weapons, summons, job accessories). Supports both private
collection management and public collection viewing with privacy.
2025-12-02 09:28:22 -08:00
51db7f7604 remove redundant settings page 2025-12-02 08:52:08 -08:00
8912696a08 add element selector to user settings modal 2025-12-02 08:52:02 -08:00
be92eba4aa fix user settings API to match rails backend params 2025-12-02 08:51:57 -08:00
919eee8cde replace Goalking with AGrot font 2025-12-02 08:39:32 -08:00
13f78e4bf8 switch to dynamic font loading from env
loads fonts from AWS S3 when PUBLIC_SIERO_IMG_URL is set,
otherwise falls back to local /fonts directory
2025-12-02 08:39:28 -08:00
7471901fee fix userAdapter instantiation in auth endpoints 2025-12-02 08:11:16 -08:00
579691aeef fix secure cookie flag behind reverse proxy 2025-12-02 07:54:36 -08:00
513c7660f5 add svelte-sonner for toast notifications 2025-12-02 06:54:12 -08:00
1933f3d8e9 add new fields to batch import pages 2025-12-02 05:26:10 -08:00
23ae7f70ba add promotions to summon database views 2025-12-02 05:25:56 -08:00
8c45c21939 add promotions to weapon database views 2025-12-02 05:25:49 -08:00
cf694bb1ce add season, series, gacha_available, recruited_by to character database views 2025-12-02 05:25:43 -08:00
96f040a91b add CheckboxGroup component for multiselect fields 2025-12-02 05:25:35 -08:00
f26d3e3883 add season, series, promotions filters to search adapter 2025-12-02 05:25:29 -08:00
67b87c7d1b add season, series, promotions to entity types 2025-12-02 05:25:23 -08:00
b6db09bcc4 add formal promotion to enums 2025-12-02 05:25:10 -08:00
afb81e0f55 add nicknames, links sections to entity detail pages; show recruits in weapon metadata 2025-12-02 02:15:03 -08:00
4fdc859941 add scroll-triggered gradient to nav background 2025-12-02 01:45:16 -08:00
c8c076e707 add calendar icon for DatePicker 2025-12-02 01:37:38 -08:00
69395672af move dates section before skills/auras on detail pages 2025-12-02 01:28:23 -08:00
28aa547c89 fix: summon granblueId binding in edit mode 2025-12-02 01:28:16 -08:00
6683a9e53a import pages: add wiki_raw to payload, misc fixes 2025-12-02 01:25:28 -08:00
5edcf6473a cleanup: remove unused CharacterImagesSection, tweak metadata 2025-12-02 01:25:23 -08:00
38762c8946 add image download buttons to detail scaffold 2025-12-02 01:25:18 -08:00
2771e202cb add CopyableText component for raw data tab 2025-12-02 01:25:14 -08:00
dea02ef359 fix ougiRatio display - access nested object properties 2025-12-02 01:24:57 -08:00
1b8232ed5a show dates on entity detail pages 2025-12-02 01:24:53 -08:00
6f1f0c60a2 add date fields to entity edit pages 2025-12-02 01:24:48 -08:00
da26645df0 add DatePicker component with type='date' support 2025-12-02 01:24:36 -08:00
9ace2eb1e2 fix type errors in import pages 2025-12-02 00:08:55 -08:00
64e50e1b50 add batch import button to database index pages 2025-12-02 00:08:47 -08:00
2dd643e92e add batch import pages for characters/weapons/summons 2025-12-02 00:00:41 -08:00
1ea0eee86c add suggestion props to all database section components 2025-12-01 23:52:06 -08:00
bba78d5781 feat: add suggestion UI components for batch import
- SuggestionBadge: sparkle icon with tooltip for accept/dismiss actions
- SuggestionDetailItem: detail item wrapper with suggestion badge support
- TabbedEntitySelector: entity image grid for batch selection

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 23:43:56 -08:00
b28ba551de add batch preview adapter methods 2025-12-01 23:40:55 -08:00
c8c4693e08 Switch font from Goalking to AGrot
- Import fonts.css in app.html
- Update --font-family CSS variable to use AGrot
- Adjust $bold weight from 600 to 700 to match AGrot's available weights

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 13:52:55 -08:00
7a639effaa database: add entity edit page scaffolds 2025-12-01 09:57:53 -08:00
1cbcd91f94 entity adapter: add raw data fetch methods 2025-12-01 09:54:39 -08:00
be75fcbcbd database detail pages: add Info/Images/Raw tabs 2025-12-01 09:54:35 -08:00
395a5c166f SegmentedControl: add size prop (default/small) 2025-12-01 09:54:06 -08:00
7a57680ec1 use ElementLabel/ProficiencyLabel, show all fields in detail pages 2025-12-01 08:35:34 -08:00
371cb7d102 fix: use camelCase granblueId in view mode 2025-12-01 08:35:30 -08:00
20705cc3b2 SegmentedControl: only fire onValueChange on actual changes
Prevents onValueChange from firing during initialization, which
caused pushState errors before router was ready.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 05:02:56 -08:00
83b18645c8 fix: guard pushState until router is initialized 2025-12-01 04:59:16 -08:00
4fda863339 fix: use pushState + popstate for instant tab switching 2025-12-01 04:57:22 -08:00
21bda28910 fix: always use explicit tab path in URL 2025-12-01 04:36:17 -08:00
5063e8e73c fix: use goto() instead of pushState for tab URL sync 2025-12-01 04:33:28 -08:00
af27f0fbbc add URL-based tab routing with pushState sync 2025-12-01 04:29:21 -08:00
5b0d41a020 move teams/[id] route into [[tab=tab]] optional segment 2025-12-01 04:27:42 -08:00
6ab74b43b1 add tab param matcher for URL routing 2025-12-01 04:27:01 -08:00
a9dcbd18f8 DetailItem: adjust padding and remove hover styles 2025-12-01 04:11:22 -08:00
ef534164f0 database/[id]: add page wrapper styles 2025-12-01 04:11:11 -08:00
3df5564772 database/new: remove newSeries, use contained TagInput 2025-12-01 04:11:07 -08:00
068d9f0991 weapons: auto-update max level/skill based on uncap 2025-12-01 04:10:45 -08:00
dea8a3bc24 weapons: move extra/limit/ax to taxonomy, fix uncap stars 2025-12-01 04:10:41 -08:00
c2b2de9e96 TagInput: add contained prop with max-width 2025-12-01 04:10:36 -08:00
6409de0c29 feat(weapons): add edit mode to weapon detail page
- Add edit mode state management (editMode, editData, isSaving)
- Use DetailScaffold wrapper for consistent edit UI
- Import and integrate section components:
  - WeaponMetadataSection, WeaponUncapSection
  - WeaponTaxonomySection, WeaponStatsSection
- Add Nicknames, Dates, Links, Character (recruits) sections in edit mode
- Connect saveChanges to entityAdapter.updateWeapon()
- Invalidate TanStack Query cache after successful save

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 03:29:47 -08:00
fda2b3188f feat(summons): add edit mode to summon detail page
- Add edit mode state management (editMode, editData, isSaving)
- Use DetailScaffold wrapper for consistent edit UI
- Import and integrate section components:
  - SummonMetadataSection, SummonUncapSection
  - SummonTaxonomySection, SummonStatsSection
- Add Nicknames, Dates, Links sections in edit mode
- Connect saveChanges to entityAdapter.updateSummon()
- Invalidate TanStack Query cache after successful save

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 03:28:01 -08:00
3e23585ee7 characters: connect edit page to real API
Replace simulated save with actual API call to updateCharacter().
Invalidates TanStack Query cache on successful update.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 03:25:14 -08:00
179cc13725 adapters: add update methods for characters, weapons, and summons
Add updateCharacter(), updateSummon(), and updateWeapon() methods to
entity adapter. Each method uses PATCH and clears the entity cache
after successful update.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 03:24:15 -08:00
7a86790670 weapons: add recruits character search field
Add CharacterTypeahead component for async character search using Svelecte.
The component debounces input and queries the search API for matching
characters. Added recruits field to weapon creation page.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 03:17:17 -08:00
0d0163edec characters: add nicknames to creation page
Backfill nicknames support to character creation page:
- Add nicknamesEn and nicknamesJp fields to editData
- Import and use TagInput component for nickname entry
- Add nicknames section to form UI
- Update CreateCharacterPayload interface with nickname fields

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 03:10:31 -08:00
fdc50906dc weapons: add creation page and update section components
Create /database/weapons/new route with full weapon creation form:
- Granblue ID validation
- Basic info (name, rarity)
- Uncap settings with cascade logic (Transcendence → ULB → FLB)
- Taxonomy (element, proficiency, series, new_series)
- Stats (HP/ATK with FLB/ULB variants)
- Caps (max_level, max_skill_level, max_awakening_level)
- Nicknames via TagInput
- Dates and external links

Update section components:
- WeaponUncapSection: Add cascade logic, extra/limit/ax fields
- WeaponTaxonomySection: Add series dropdowns with options
- WeaponStatsSection: Add ULB stats, caps section

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 03:08:52 -08:00
d1c40ee38d use dynamic image path for auth background 2025-12-01 03:08:11 -08:00
901fd5a157 weapons: add frontend adapter methods and interfaces
Add weapon creation infrastructure to entity adapter:
- WeaponValidationResult interface for validation response
- CreateWeaponPayload interface for weapon creation
- WeaponDownloadStatus interface for download status
- validateWeaponGranblueId() method
- createWeapon() method
- downloadWeaponImages() method
- getWeaponDownloadStatus() method

Also add getWeaponSeriesOptions() utility function.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 03:06:04 -08:00
1fa6429749 summons: add creation page and section components
- /database/summons/new route with full form
- UncapSection with FLB/ULB/Transcendence cascade
- TaxonomySection with element and series
- StatsSection with HP/ATK at all uncap levels
- Nicknames via TagInput component
- getSummonMaxUncapLevel() utility function

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 03:00:58 -08:00
4973643ee6 entity adapter: add summon creation methods
- SummonValidationResult, CreateSummonPayload, SummonDownloadStatus types
- validateSummonGranblueId(), createSummon(), downloadSummonImages(), getSummonDownloadStatus()
- Matches character creation pattern

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 02:44:45 -08:00
fbe43490d7 ui: add TagInput component for nicknames
- Chip/tag style input for string arrays
- Add/remove tags with Enter or comma
- Backspace removes last tag when input empty
- Supports label, error, maxTags, disabled

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 02:43:44 -08:00
39b1ed9f64 nav: context-aware New button for database routes
- Show "New character/weapon/summon" pill button on database pages
- Keep existing circular + button for team creation elsewhere

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 02:27:47 -08:00
43c291327c components: use centralized image URL helpers 2025-12-01 02:26:29 -08:00
e9463ae5ba api config: add getImageBaseUrl, fix api path for prod/dev 2025-12-01 02:26:16 -08:00
19a2b9e77f utils: use getBasePath for image URLs 2025-12-01 02:26:08 -08:00
220432b40a entity adapter: expand CreateCharacterPayload with all fields 2025-12-01 02:25:52 -08:00
754d5a633c new character page: add all fields, uncap cascade logic, validation 2025-12-01 02:25:46 -08:00
28ad2fb37e DetailItem: add sublabel, width, onchange props; Input: add validation state 2025-12-01 02:25:41 -08:00
e9ba90d656 add image download section to character edit page
- new CharacterImagesSection component
- download button with progress polling
- force re-download option
- status display with progress bar
2025-12-01 00:57:03 -08:00
5f5b579ff0 add /database/characters/new page + API methods
- new page with granblue_id validation
- role check (>= 7) on server
- API methods: validate, create, download images
- permanent edit mode with create button
2025-12-01 00:55:53 -08:00
b58cbbe72f refactor character edit page to use section components
- use DetailScaffold wrapper
- extract metadata, uncap, taxonomy, stats sections
- standardize field naming (camelCase)
- add element-themed checkboxes
2025-12-01 00:52:12 -08:00
817084cee5 teams/new: fix css leak on prefetch, remove open search button 2025-12-01 00:22:52 -08:00
1024e155c3 fix button: no translate on circular, fix elemental hover colors 2025-12-01 00:22:52 -08:00
a262388fc7 fix api path for prod (/v1) vs dev (/api/v1) 2025-11-30 23:34:32 -08:00
e50ba8ffad Fix auth titles 2025-11-30 23:22:04 -08:00
07f57d20fb routes: redirect root to /teams/explore 2025-11-30 23:16:07 -08:00
d412e760ab nav: show register/login when logged out, move guides/collection to menu 2025-11-30 23:16:04 -08:00
7e02884941 input: add no1password prop, tweak counter styling 2025-11-30 23:16:00 -08:00
de616755f5 auth: use placeholders instead of labels, add username note 2025-11-30 23:15:56 -08:00
e3e9ccdd6c auth: add port-breeze background and back-to-home link 2025-11-30 23:15:52 -08:00
4b96633f69 simplify root layout for route group structure 2025-11-30 22:29:08 -08:00
f79e3f2a10 update auth store redirect to /auth/login 2025-11-30 22:29:08 -08:00
a1bcb0e523 update Navigation login link to /auth/login 2025-11-30 22:29:08 -08:00
0f50d9fd73 remove old login route (moved to /auth/login) 2025-11-30 22:28:59 -08:00
9ace6f0862 remove old routes (moved to app group) 2025-11-30 22:28:59 -08:00
b78ee7ca20 move routes to (app) route group 2025-11-30 22:28:17 -08:00
3498b7d966 add signup redirect to register 2025-11-30 22:28:13 -08:00
93efc9946a add registration page with validation 2025-11-30 22:26:32 -08:00
fd10dcfb15 add login page with contained inputs 2025-11-30 22:26:32 -08:00
762d5c0fc0 add auth layout with centered container 2025-11-30 22:26:32 -08:00