Ilia Mashkov
86adec01a0
doc(createVirtualizer): add JSDoc for createVirtualizer
2026-01-16 12:27:14 +03:00
Ilia Mashkov
b0812ff606
chore: delete unused code
2026-01-16 12:24:30 +03:00
Ilia Mashkov
56e6e450e8
fix(createVirtualizer): add correct type to offset array
Workflow / build (pull_request) Successful in 49s
2026-01-15 20:10:44 +03:00
Ilia Mashkov
824581551f
fix(createVirtualizer): change the way array is created
2026-01-15 20:07:58 +03:00
Ilia Mashkov
f97904f165
fix: minor changes
2026-01-15 20:06:51 +03:00
Ilia Mashkov
429a9a0877
feature(VirtualList): remove tanstack virtual list solution, add self written one
2026-01-15 13:33:59 +03:00
Ilia Mashkov
c6b18f6dd3
fix: svelte check
Build / build (push) Failing after 37s
Deploy Pipeline / pipeline (push) Failing after 34s
Lint / Lint Code (push) Failing after 28s
Test / Svelte Checks (push) Failing after 35s
2026-01-14 15:27:41 +03:00
Ilia Mashkov
7678ab271d
fix: lint warnings
Build / build (pull_request) Failing after 49s
Lint / Lint Code (pull_request) Failing after 38s
Test / Svelte Checks (pull_request) Failing after 44s
2026-01-14 15:14:58 +03:00
Ilia Mashkov
76172aaa6b
fix: minor changes
2026-01-13 20:09:30 +03:00
Ilia Mashkov
52ecb9e304
fix: remove searchQuery from FilterModel
2026-01-13 20:07:42 +03:00
Ilia Mashkov
170c8546d3
chore: import/export changes due to code move
2026-01-13 20:04:02 +03:00
Ilia Mashkov
2f15148cdb
feat(VirtualList): add overscan support
2026-01-13 20:02:50 +03:00
Ilia Mashkov
91451f7886
chore: import/export fixes due to code move
2026-01-13 20:00:36 +03:00
Ilia Mashkov
4810c2b228
chore: delete unused code
2026-01-13 19:56:20 +03:00
Ilia Mashkov
1a76e9387a
feat(createDebouncedState): create helper for managing state with debounce
2026-01-13 19:51:41 +03:00
Ilia Mashkov
0f1eb489ed
feat: add query provider for Tanstack
2026-01-13 19:49:51 +03:00
Ilia Mashkov
d81af0a77b
feat: implement P0/P1 performance and code quality optimizations
...
P0 Performance Optimizations:
- Add debounced search (300ms) to reduce re-renders during typing
- Implement single-pass filter function for O(n) complexity
- Add TanStack Query cancellation before new requests
P1 Code Quality Optimizations:
- Add runtime type guards for filter validation
- Implement two derived values (filteredFonts + sortedFilteredFonts)
- Remove all 'as any[]' casts from filter bridge
- Add fast-path for default sorting (skip unnecessary operations)
New Utilities:
- debounce utility with 4 tests (all pass)
- filterUtils with 15 tests (all pass)
- typeGuards with 20 tests (all pass)
- Total: 39 new tests
Modified Files:
- unifiedFontStore.svelte.ts: Add debouncing, use filter/sort utilities
- filterBridge.svelte.ts: Type-safe validation with type guards
- unifiedFontStore.test.ts: Fix pre-existing bugs (missing async, duplicate imports)
Code Quality:
- 0 linting warnings/errors (oxlint)
- FSD compliant architecture (entity lib layer)
- Backward compatible store API
2026-01-11 14:49:21 +03:00
Ilia Mashkov
9598d8c3e4
feat(SearchBar): create SearchBar component with input and popover that contains search results
2026-01-09 16:19:22 +03:00
Ilia Mashkov
13509a4145
chore: add comments for types and constants
2026-01-09 16:13:47 +03:00
Ilia Mashkov
1990860717
feat: add generic type for property value
2026-01-09 16:11:35 +03:00
Ilia Mashkov
1ebab2d77b
feat: add data-testid attribute
Lint / Lint Code (push) Failing after 7m16s
Test / Svelte Checks (push) Failing after 7m8s
2026-01-08 13:15:02 +03:00
Ilia Mashkov
fc00717359
feat: test coverage of ComboControl and CheckboxFilter
2026-01-08 13:14:04 +03:00
Ilia Mashkov
36a326817d
feat: test coverage for utils
Lint / Lint Code (push) Failing after 7m20s
Test / Svelte Checks (push) Failing after 7m20s
2026-01-07 17:26:59 +03:00
Ilia Mashkov
f4c2a38873
fix: imports path
2026-01-07 16:54:19 +03:00
Ilia Mashkov
614d6b0673
fix: imports path
2026-01-07 16:54:12 +03:00
Ilia Mashkov
f26f56ddef
chore: move createVirtualizer
2026-01-07 16:53:44 +03:00
Ilia Mashkov
76f27a64b2
refactor(createTypographyControl): createControlStore rewrote to runes
2026-01-07 16:53:17 +03:00
Ilia Mashkov
baff3b9e27
refactor(createFilter): createFilterStore rewrote to runes
2026-01-07 16:52:17 +03:00
Ilia Mashkov
d15b90cfcb
feat: move buildQueryString to separate directory
2026-01-07 16:49:37 +03:00
Ilia Mashkov
893bb02459
feat: move buildQueryString to separate directory
2026-01-07 16:49:18 +03:00
Ilia Mashkov
f7b19bd97f
feat: move functions to separate files
2026-01-07 16:48:49 +03:00
Ilia Mashkov
2c4bfaba41
fix: rename file from .ts to .svelte.ts to support svelte runes
2026-01-07 14:27:25 +03:00
Ilia Mashkov
9fd98aca5d
refactor(createFilterStore): move from store pattern to svelte 5 runes usage
2026-01-07 14:26:37 +03:00
Ilia Mashkov
0692711726
fix: import/export paths
Lint / Lint Code (push) Failing after 7m18s
Test / Svelte Checks (push) Failing after 7m16s
2026-01-06 21:40:28 +03:00
Ilia Mashkov
86898bf83c
chore: move utils directory into shared/lib
2026-01-06 21:39:17 +03:00
Ilia Mashkov
1950cd4095
refactor(VirtualList): refactor VirtualList with modern svelte 5 patterns
2026-01-06 21:38:53 +03:00
Ilia Mashkov
7a9f7e238c
refactor(createVirtualizer): refactor createVirtualizerStore with modern svelte 5 patterns
2026-01-06 21:38:18 +03:00
Ilia Mashkov
1f19e964ca
fix: import/export paths
2026-01-06 21:36:29 +03:00
Ilia Mashkov
eb10d58128
chore: move store creators to separate directories
2026-01-06 21:35:49 +03:00
Ilia Mashkov
c78ab826a2
chore: move fetch directory into shared/lib
2026-01-06 21:35:16 +03:00
Ilia Mashkov
931a2df1ee
feat: test coverage for store creators
2026-01-06 21:34:05 +03:00
Ilia Mashkov
bea3f7ae7f
chore: move store creators to separate directories
2026-01-06 21:33:30 +03:00
Ilia Mashkov
c0ccf4baff
refactor(virtual): use store pattern instead of hook, fix styling
...
Store Pattern Migration:
- Created createVirtualizerStore using Svelte stores (writable/derived)
- Replaced useVirtualList hook with createVirtualizerStore
- Matches existing store patterns (createFilterStore, createControlStore)
- More Svelte-idiomatic than React-inspired hook pattern
Component Refactoring:
- Renamed FontVirtualList.svelte → VirtualList.svelte
- Moved component from shared/virtual/ → shared/ui/
- Updated to use store pattern instead of hook
- Removed pixel values from style tags (uses Tailwind CSS)
- Height now configurable via Tailwind classes (e.g., 'h-96', 'h-[500px]')
- Props changed from shorthand {fonts} to explicit items prop
File Changes:
- Deleted: useVirtualList.ts (replaced by store pattern)
- Deleted: FontVirtualList.svelte (renamed and moved)
- Deleted: useVirtualList.test.ts (updated to test store pattern)
- Updated: README.md with store pattern usage examples
- Updated: index.ts with migration guide
- Created: createVirtualizerStore.ts in shared/store/
- Created: VirtualList.svelte in shared/ui/
- Created: createVirtualizerStore.test.ts
- Created: barrel exports (shared/store/index.ts, shared/ui/index.ts)
Styling Improvements:
- All pixel values removed from <style> tags
- Uses Tailwind CSS for all styling
- Responsive height via Tailwind classes or props
- Only inline styles for dynamic positioning (required for virtualization)
TypeScript & Testing:
- Full TypeScript support with generics
- All 33 tests passing
- Type checking passes
- Linting passes (minor warnings only)
Breaking Changes:
- Component name: FontVirtualList → VirtualList
- Component location: $shared/virtual → $shared/ui
- Hook removed: useVirtualList → createVirtualizerStore
- Props change: {fonts} shorthand → items prop
- Import changes: $shared/virtual → $shared/ui and $shared/store
Documentation:
- Updated README.md with store pattern examples
- Added migration guide in virtual/index.ts
- Documented breaking changes and migration steps
2026-01-06 18:56:30 +03:00
Ilia Mashkov
10b7457f21
refactor(virtual): use store pattern instead of hook, fix styling
...
Store Pattern Migration:
- Created createVirtualizerStore using Svelte stores (writable/derived)
- Replaced useVirtualList hook with createVirtualizerStore
- Matches existing store patterns (createFilterStore, createControlStore)
- More Svelte-idiomatic than React-inspired hook pattern
Component Refactoring:
- Renamed FontVirtualList.svelte → VirtualList.svelte
- Moved component from shared/virtual/ → shared/ui/
- Updated to use store pattern instead of hook
- Removed pixel values from style tags (uses Tailwind CSS)
- Height now configurable via Tailwind classes (e.g., 'h-96', 'h-[500px]')
- Props changed from shorthand {fonts} to explicit items prop
File Changes:
- Deleted: useVirtualList.ts (replaced by store pattern)
- Deleted: FontVirtualList.svelte (renamed and moved)
- Deleted: useVirtualList.test.ts (updated to test store pattern)
- Updated: README.md with store pattern usage examples
- Updated: index.ts with migration guide
- Created: createVirtualizerStore.ts in shared/store/
- Created: VirtualList.svelte in shared/ui/
- Created: createVirtualizerStore.test.ts
- Created: barrel exports (shared/store/index.ts, shared/ui/index.ts)
Styling Improvements:
- All pixel values removed from <style> tags
- Uses Tailwind CSS for all styling
- Responsive height via Tailwind classes or props
- Only inline styles for dynamic positioning (required for virtualization)
TypeScript & Testing:
- Full TypeScript support with generics
- All 33 tests passing
- Type checking passes
- Linting passes (minor warnings only)
Breaking Changes:
- Component name: FontVirtualList → VirtualList
- Component location: $shared/virtual → $shared/ui
- Hook removed: useVirtualList → createVirtualizerStore
- Props change: {fonts} shorthand → items prop
- Import changes: $shared/virtual → $shared/ui and $shared/store
Documentation:
- Updated README.md with store pattern examples
- Added migration guide in virtual/index.ts
- Documented breaking changes and migration steps
2026-01-06 18:55:07 +03:00
Ilia Mashkov
9abec4210c
feat(utils): add generic buildQueryString utility
...
- Add type-safe buildQueryString function to /utils
- Support primitives, arrays, and optional values
- Proper URL encoding for special characters
- Add comprehensive tests (25 test cases, all passing)
- Update Google Fonts API client to use shared utility
- Update Fontshare API client to use shared utility
- Export utility from /utils/index.ts
Benefits:
- DRY - Single source of truth for query string logic
- Type-safe - Proper TypeScript support with QueryParams type
- Tested - Comprehensive test coverage
- Maintainable - One place to fix bugs
2026-01-06 15:00:31 +03:00
Ilia Mashkov
29d1cc0cdc
refactor(shared): rename fontCache to collectionCache
...
- Rename fontCache.ts to collectionCache.ts
- Rename FontCacheManager interface to CollectionCacheManager
- Make implementation fully generic (already was, just renamed interface)
- Update exports in shared/fetch/index.ts
- Fix getStats() to return derived store value for accurate statistics
- Add comprehensive test coverage for collection cache manager
- 41 test cases covering all functionality
- Tests for caching, deduplication, state tracking
- Tests for statistics, reactivity, and edge cases
Closes task-1 of Phase 1 refactoring
2026-01-06 14:38:55 +03:00
Ilia Mashkov
943e6e77d3
feat: create tests for shared/ui components
2026-01-06 12:22:38 +03:00
Ilia Mashkov
809611cb10
feat: create tests for stores
2026-01-06 12:22:05 +03:00
Ilia Mashkov
73419799ae
feat(ComboControl): create stories for ComboControl component
Lint / Lint Code (push) Failing after 7m10s
Test / Svelte Checks (push) Failing after 7m17s
Build / build (pull_request) Failing after 7m20s
Lint / Lint Code (pull_request) Failing after 7m16s
Test / Svelte Checks (pull_request) Failing after 7m14s
2026-01-06 09:16:21 +03:00
Ilia Mashkov
3d35f1901d
feature(ComboControl):
...
Lint / Lint Code (push) Failing after 7m14s
Test / Svelte Checks (push) Failing after 7m20s
Build / build (pull_request) Failing after 7m6s
Lint / Lint Code (pull_request) Failing after 7m14s
Test / Svelte Checks (pull_request) Failing after 7m16s
- create ComboControl component for typography settings (font size, font
weight, line height)
- integrate it to TypographyMenu and integrate it to Layout
2026-01-05 09:03:31 +03:00