senke
|
718bf074f0
|
refactor(auth): extract RegisterPage into register-page module
- Add register-page/ with useRegisterPage, RegisterPageForm,
RegisterPageVerificationNotice, RegisterPageSkeleton
- Layout primitives (min-h-layout-page-sm), tokens (success, destructive)
- Stories: Default, Loading, WithError; re-export from pages/RegisterPage
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:50:17 +01:00 |
|
senke
|
a2852d8eca
|
docs(audit): record FileManagerView refactor in FRONTEND_DEEP_DIVE_AUDIT
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:45:27 +01:00 |
|
senke
|
f359714441
|
refactor(views): extract FileManagerView into file-manager-view module
- Add file-manager-view/ with useFileManagerView, Header, Toolbar, Table, Grid,
Empty, Skeleton; types and mockFiles
- Layout primitives (min-h-layout-page-sm), no arbitrary values
- Stories: Default, Loading, Empty
- Re-export from FileManagerView.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:45:01 +01:00 |
|
senke
|
31ea14fd66
|
docs(audit): record SearchPage refactor in FRONTEND_DEEP_DIVE_AUDIT
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:39:51 +01:00 |
|
senke
|
7496c3c8d3
|
refactor(search): extract SearchPage into feature module
- Add features/search/components/search-page/ with useSearchPage, Header,
Discovery, Empty, Error, Results, Skeleton
- Layout primitives only (min-h-layout-page, max-w-6xl)
- Stories: Default, Loading, Empty, Error; MSW handler for SearchResults shape
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:39:31 +01:00 |
|
senke
|
a7d356d20f
|
docs(audit): record NotificationsPage refactor in FRONTEND_DEEP_DIVE_AUDIT
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:34:54 +01:00 |
|
senke
|
78e318f390
|
fix(views): use layout primitive in NotificationsView loading state
Replace arbitrary h-[50vh] with min-h-layout-page-sm per .cursorrules
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:32:33 +01:00 |
|
senke
|
9b4011cee2
|
refactor(notifications): extract NotificationsPage into feature module
- Add features/notifications/components/notifications-page/ with:
- useNotificationsPage (query + mark read / mark all read mutations)
- NotificationsPageHeader, NotificationsPageFilters, NotificationsPageItem
- NotificationsPageEmpty, NotificationsPageError, NotificationsPageSkeleton
- types (FilterType, NotificationTypeFilter, NOTIFICATION_TYPE_LABELS)
- Page re-exports from module; stories moved to component (Default, Loading, Error, Empty)
- MSW handler: notifications response shape aligned with notificationService (data.notifications)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:32:19 +01:00 |
|
senke
|
bfdf7e5f6c
|
chore(studio): remove legacy CloudFileBrowser from components/studio
CloudFileBrowser lives in features/studio/components/cloud-file-browser/.
StudioView already imports from there.
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:20:36 +01:00 |
|
senke
|
3c4ea43863
|
docs(audit): mark CloudFileBrowser as module in features/studio, update problemes identifies
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:19:58 +01:00 |
|
senke
|
7ce323a520
|
docs(audit): mark Select as refactored in FRONTEND_DEEP_DIVE_AUDIT
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:16:43 +01:00 |
|
senke
|
41e36d72ce
|
test(ui): add Select stories (Default, Empty, Disabled, Grouped, MultiSelect), fix tests for listbox/option
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:16:30 +01:00 |
|
senke
|
11af9d9aad
|
refactor(ui): decompose Select into select module
- Add select/ with useSelect, types, SelectTrigger, SelectDropdownContent,
SelectOptionItem; min-w-48 max-h-72 (no arbitrary values)
- Remove monolithic select.tsx; entry point is select/index.ts
- Backward compatible: imports from './select' resolve to module
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:16:19 +01:00 |
|
senke
|
87072f432d
|
docs(audit): mark file-upload as refactored in FRONTEND_DEEP_DIVE_AUDIT
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:09:32 +01:00 |
|
senke
|
d37ff52b4a
|
test(ui): add FileUpload stories (Default, Empty, Error, Disabled, etc.)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:09:21 +01:00 |
|
senke
|
abc18e2fc6
|
refactor(ui): decompose FileUpload into file-upload module
- Add file-upload/ with useFileUpload, types, utils, and presentational
components: FileUploadDropzone, FileUploadErrorList, FileUploadFileList
- Remove monolithic file-upload.tsx; entry point is file-upload/index.ts
- Backward compatible: imports from './file-upload' resolve to module
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:09:08 +01:00 |
|
senke
|
113b860a5e
|
docs(audit): mark UploadModal as refactored in FRONTEND_DEEP_DIVE_AUDIT
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:03:23 +01:00 |
|
senke
|
01ee3e2ff9
|
test(upload): add UploadModal stories (Default, Open)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:03:15 +01:00 |
|
senke
|
ecfde9255d
|
refactor(upload): decompose UploadModal into upload-modal module
- Add upload-modal/ with useUploadModal, constants, and presentational
components: Dropzone, FileDisplay, Progress, ErrorAlert, MetadataForm
- Re-export from UploadModal.tsx for backward compatibility
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 21:03:07 +01:00 |
|
senke
|
9ba5198cf8
|
docs(ui): update audit report and mark LazyComponent as refactored in FRONTEND_DEEP_DIVE_AUDIT
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:49:46 +01:00 |
|
senke
|
0d1a426efa
|
test(ui): add LazyErrorFallback and LazyComponent stories; fix LazyComponent tests for fallback text
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:49:17 +01:00 |
|
senke
|
8bfabe79ad
|
refactor(ui): decompose LazyComponent into lazy-component module with LazyErrorFallback, LazyErrorBoundary, createLazyComponent
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:48:36 +01:00 |
|
senke
|
38a0ee82a0
|
docs(views): update audit report and mark GearView as refactored in FRONTEND_DEEP_DIVE_AUDIT
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:40:12 +01:00 |
|
senke
|
048861b7b6
|
test(views): add GearView stories Default, Loading, Empty, Error and GearViewSkeleton
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:38:59 +01:00 |
|
senke
|
3b4e322c37
|
refactor(views): decompose GearView into gear-view module with useGearView and sub-components
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:38:45 +01:00 |
|
senke
|
2512864d19
|
docs(views): update audit report and mark ProfileView as refactored in FRONTEND_DEEP_DIVE_AUDIT
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:31:26 +01:00 |
|
senke
|
97103ae957
|
test(views): add ProfileView stories Default, Loading, Error and ProfileViewSkeleton
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:30:50 +01:00 |
|
senke
|
a3e24bd14a
|
refactor(views): decompose ProfileView into profile-view module with hook and sub-components
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:30:36 +01:00 |
|
senke
|
e35c7e9422
|
docs(user): update audit report and mark ProfileForm as refactored in FRONTEND_DEEP_DIVE_AUDIT
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:21:28 +01:00 |
|
senke
|
8de10347fc
|
test(user): add ProfileForm stories (Default, Loading, Error) and Skeleton; fix tests and MSW completion handler
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:21:05 +01:00 |
|
senke
|
f4185b7776
|
refactor(user): decompose ProfileForm into profile-form module with hook and sub-components
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:20:49 +01:00 |
|
senke
|
a416e79f89
|
docs(audit): mark ChatSidebar as refactored in FRONTEND_DEEP_DIVE_AUDIT
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:07:56 +01:00 |
|
senke
|
dd01585fbd
|
test(chat): add stories and mocks for ChatSidebar
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:07:20 +01:00 |
|
senke
|
e0f28a0e16
|
refactor(chat): decompose ChatSidebar into sub-components
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 20:07:09 +01:00 |
|
senke
|
4d31877da9
|
docs(search): update audit report for Search refactor
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 19:46:03 +01:00 |
|
senke
|
92b8a5678b
|
test(search): add stories Loading/Empty/Error and fix Search tests
- Stories: Loading, Empty, Error; decorator max-w-2xl min-h-layout-story
- SearchSkeleton.stories; fix tests: waitFor, Enter for history, keyboard nav query
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 19:45:52 +01:00 |
|
senke
|
76360fa736
|
refactor(search): decompose Search into sub-components
- Add features/search/components/search: types, useSearchSuggestions,
SearchInput, SearchDropdown, SearchSkeleton
- Search.tsx orchestrator; re-export from components/search for GlobalSearchBar
- No console.log; logger only; layout primitives in stories
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 19:45:41 +01:00 |
|
senke
|
be660c6269
|
fix(storybook): ignore net::ERR_ABORTED on iframe in audit (navigation false positive)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 19:32:39 +01:00 |
|
senke
|
54e6b7cb19
|
docs(tracks): update audit report for CommentThread refactor
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 19:21:09 +01:00 |
|
senke
|
cfecaf5e7f
|
test(tracks): add stories and mocks for CommentThread
- Stories: EmptyReplies, LoadingReplies, ReplyError; decorator uses max-w-2xl, min-h-layout-story
- CommentThreadSkeleton.stories.tsx
- MSW: PUT */api/v1/comments/:id for update; useUser mock in CommentThread.test
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 19:20:58 +01:00 |
|
senke
|
39c1ee7308
|
refactor(tracks): decompose CommentThread into sub-components
- Add comment-thread module: types, useCommentReplies, useCommentActions
- Presentational components: CommentThreadHeader, CommentThreadContent,
CommentThreadActions, CommentReplyForm, CommentRepliesList
- CommentThreadSkeleton for Loading state
- CommentThread.tsx becomes orchestrator (~170 lines); re-export from module
- FE-COMP-012 preserved; no breaking change for CommentSection
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-05 19:20:47 +01:00 |
|
senke
|
df8c094454
|
feat(ui): implement skeleton-first loading and grid/list orchestration for CloudFileBrowser
|
2026-02-05 19:04:03 +01:00 |
|
senke
|
0b3428e261
|
refactor(studio): modularize CloudFileBrowser with FileTable, FileGrid and FileToolbar
|
2026-02-05 19:04:00 +01:00 |
|
senke
|
7e9f7a298e
|
test(msw): add inventory gear handlers for deterministic story testing
|
2026-02-05 18:18:17 +01:00 |
|
senke
|
25fce07e3d
|
feat(ui): implement grid/list view orchestration with synchronized skeletons for GearView
|
2026-02-05 18:18:13 +01:00 |
|
senke
|
7a28d1fd69
|
refactor(ui): create atomic gear module with Header, Filters, Grid, and Modal
|
2026-02-05 18:18:09 +01:00 |
|
senke
|
f3e6b11eef
|
refactor(ui): modularize ProfileView into Header, Stats, and Tabs components
|
2026-02-05 14:32:20 +01:00 |
|
senke
|
eb87ad07b3
|
chore(dx): add .cursorrules and design system audit documentation
|
2026-02-05 14:20:06 +01:00 |
|
senke
|
48d860c53e
|
chore(dx): add .cursorrules and design system audit documentation
|
2026-02-05 14:18:17 +01:00 |
|
senke
|
1ed1caaa56
|
refactor(ui): decompose ProfileForm into atomic sub-components (Avatar, Identity, Social, Actions, Security)
|
2026-02-05 14:16:01 +01:00 |
|