Ilia Mashkov
aa1379c15b
chore: remove unused code
2026-04-16 15:59:58 +03:00
Ilia Mashkov
33e589f041
feat: remove widgets from page
2026-04-16 15:58:33 +03:00
Ilia Mashkov
b12dc6257d
feat(ComparisonView): add wrapper for search bar
2026-04-16 15:58:10 +03:00
Ilia Mashkov
35e0f06a77
feat(ComparisonView): add color transition for each character
2026-04-16 15:55:57 +03:00
Ilia Mashkov
dde187e0b2
chore: move ControlId type to the entities/Font layer
2026-04-16 11:19:17 +03:00
Ilia Mashkov
5a7c61ade7
feat(FontVirtualList): re-touch on weight change and pin visible fonts
2026-04-16 11:05:09 +03:00
Ilia Mashkov
d2bce85f9c
feat(ComparisonStore): pin fontA/fontB to prevent eviction while on-screen
2026-04-16 10:55:41 +03:00
Ilia Mashkov
e509463911
chore: remove unused
2026-04-16 09:07:46 +03:00
Ilia Mashkov
db08f523f6
chore: move typography constants to the entity/Font layer
2026-04-16 09:05:34 +03:00
Ilia Mashkov
c5fa159c14
fix(FontList): remove weight prop, use default weight for FontList
2026-04-16 08:51:18 +03:00
Ilia Mashkov
8645c7dcc8
feat: use typographySettingsStore everywhere for the typography settings
2026-04-16 08:44:49 +03:00
Ilia Mashkov
fbeb84270b
feat(Layout): remove breadcrumbs
2026-04-16 08:40:16 +03:00
Ilia Mashkov
c1ac9b5bc4
chore(SetupFont): rename controlManager to typographySettingsStore for better semantic
2026-04-16 08:22:08 +03:00
Ilia Mashkov
0a489a8adc
fix(BaseQueryStore): use QueryObserverOptions instead of QueryOptions
...
Workflow / build (pull_request) Successful in 58s
Workflow / publish (pull_request) Has been skipped
QueryOptions has queryKey as optional; QueryObserverOptions requires it,
matching what QueryObserver.constructor and setOptions actually expect.
2026-04-15 22:37:30 +03:00
Ilia Mashkov
cd349aec92
fix: imports
2026-04-15 22:32:45 +03:00
Ilia Mashkov
adaa6d7648
feat: refactor ComparisonStore to use BatchFontStore
...
Replace hand-rolled async fetching (fetchFontsByIds + isRestoring flag)
with BatchFontStore backed by TanStack Query. Three reactive effects
handle batch sync, CSS font loading, and default-font fallback.
isLoading now derives from batchStore.isLoading + fontsReady.
2026-04-15 22:25:34 +03:00
Ilia Mashkov
10f4781a67
test: enrich coverage for queryKeys, BaseQueryStore, and BatchFontStore
...
- queryKeys: add mutation-safety test for batch(), key hierarchy tests
(list/batch/detail keys rooted in their parent base keys), and
unique-key test for different detail IDs
- BaseQueryStore: add initial-state test (data undefined, isError false
before any fetch resolves)
- BatchFontStore: add FontResponseError type assertion on malformed
response, null error assertion on success, and setIds([]) disables
query and returns empty fonts without triggering a fetch
2026-04-15 15:59:01 +03:00
Ilia Mashkov
f4a568832a
feat: implement reactive BatchFontStore
2026-04-15 12:29:16 +03:00
Ilia Mashkov
4e9670118a
feat: add seedFontCache utility
2026-04-15 12:21:04 +03:00
Ilia Mashkov
8e88d1b7cf
feat: add BaseQueryStore for reactive query observers
2026-04-15 12:19:25 +03:00
Ilia Mashkov
1cbc262af7
feat: add stable query key factory
2026-04-15 12:06:32 +03:00
Ilia Mashkov
bfa99cde20
fix(comparisonStore): add missing batch request and effect for initial font loading
Workflow / build (pull_request) Successful in 3m8s
Workflow / publish (pull_request) Has been skipped
2026-04-15 11:35:37 +03:00
Ilia Mashkov
75b62265be
fix: add missing export
2026-04-15 09:13:22 +03:00
Ilia Mashkov
a74abbb0b3
feat: wire createFontRowSizeResolver into SampleList for pretext-backed row heights
Workflow / build (pull_request) Failing after 49s
Workflow / publish (pull_request) Has been skipped
2026-04-13 13:23:03 +03:00
Ilia Mashkov
20accb9c93
feat: implement createFontRowSizeResolver with canvas-measured heights and reactive status check
2026-04-13 08:54:19 +03:00
Ilia Mashkov
46b9db1db3
feat: export ItemSizeResolver type and document reactive estimateSize contract
2026-04-12 19:43:44 +03:00
Ilia Mashkov
4b017a83bb
fix: add missing JSDoc, return types, and as-any comments to layout engines
2026-04-12 09:51:36 +03:00
Ilia Mashkov
49822f8af7
feat: install pretext library
2026-04-12 09:08:01 +03:00
Ilia Mashkov
338ca9b4fd
feat: export TextLayoutEngine and CharacterComparisonEngine from shared helpers index
...
Remove deleted createCharacterComparison exports and benchmark.
2026-04-11 16:44:49 +03:00
Ilia Mashkov
99f662e2d5
fix: iterate pre-computed chars array in Line.svelte to fix unicode grapheme splitting bug
2026-04-11 16:26:41 +03:00
Ilia Mashkov
5977e0a0dc
fix: correct advances null-check in CharacterComparisonEngine and remove unused TextLayoutEngine dep
2026-04-11 16:14:28 +03:00
Ilia Mashkov
2b0d8470e5
test: fix CharacterComparisonEngine tests — correct env directive, canvas mock, and full spec coverage
2026-04-11 16:14:24 +03:00
Ilia Mashkov
351ee9fd52
docs: add inline documentation to TextLayoutEngine
2026-04-11 16:10:01 +03:00
Ilia Mashkov
a526a51af8
test: fix TextLayoutEngine tests — correct jsdom directive placement and canvas mock setup
...
fix: correct grapheme-width fallback in TextLayoutEngine for null breakableFitAdvances
2026-04-11 15:48:52 +03:00
Ilia Mashkov
fcde78abad
test: add canvas mock helper for pretext-based engine tests
2026-04-11 15:48:47 +03:00
Ilia Mashkov
d9fa2bc501
refactor: consolidate font domain and model types into font.ts
Workflow / build (pull_request) Successful in 59s
Workflow / publish (pull_request) Has been skipped
2026-04-10 17:29:15 +03:00
Ilia Mashkov
5f38996665
chore: purge legacy font provider types and normalization logic
2026-04-10 16:05:57 +03:00
Ilia Mashkov
14dbd374ec
refactor: replace unifiedFontStore with fontStore in comparisonStore tests
Workflow / build (pull_request) Successful in 1m1s
Workflow / publish (pull_request) Has been skipped
2026-04-10 08:06:51 +03:00
Ilia Mashkov
dc6e15492a
test: mock fontStore and update FontStore type signatures
2026-04-09 19:40:31 +03:00
Ilia Mashkov
45eac0c396
refactor: delete BaseFontStore and UnifiedFontStore — FontStore is the single implementation
2026-04-08 10:07:36 +03:00
Ilia Mashkov
ed7d31bf5c
refactor: migrate all callers from unifiedFontStore to fontStore
2026-04-08 10:00:30 +03:00
Ilia Mashkov
468d2e7f8c
feat(FontStore): export through entity barrel files
2026-04-08 09:55:40 +03:00
Ilia Mashkov
2a761b9d47
feat(FontStore): implement lifecycle, param management, async methods, shortcuts, pagination, category getters, singleton — all tests green
2026-04-08 09:54:27 +03:00
Ilia Mashkov
a9e4633b64
feat(FontStore): implement fetchPage with error wrapping
2026-04-08 09:50:16 +03:00
Ilia Mashkov
778988977f
feat(FontStore): implement state getters, pagination, buildQueryKey, buildOptions
2026-04-08 09:47:25 +03:00
Ilia Mashkov
9a9ff95bf3
test(FontStore): write full TDD spec and empty shell (InfiniteQueryObserver)
2026-04-08 09:43:29 +03:00
Ilia Mashkov
7517678e87
chore: add .worktrees to .gitignore for isolated development
2026-04-08 09:37:47 +03:00
Ilia Mashkov
752e38adf9
test: full test coverage of baseFontStore and unifiedFontStore
Workflow / build (pull_request) Successful in 55s
Workflow / publish (pull_request) Has been skipped
2026-04-08 09:33:04 +03:00
Ilia Mashkov
9c538069e4
test(UnifiedFontStore): add isEmpty and destroy tests
2026-04-06 12:26:08 +03:00
Ilia Mashkov
71fed58af9
test(UnifiedFontStore): add category getter tests
2026-04-06 12:24:23 +03:00
Ilia Mashkov
fee3355a65
test(UnifiedFontStore): add filter change reset tests
2026-04-06 12:19:49 +03:00
Ilia Mashkov
2ff7f1a13d
test(UnifiedFontStore): add filter setter tests
2026-04-06 11:35:56 +03:00
Ilia Mashkov
6bf1b1ea87
test(UnifiedFontStore): add pagination navigation tests
2026-04-06 11:34:53 +03:00
Ilia Mashkov
3ef012eb43
test(UnifiedFontStore): add pagination state tests
2026-04-06 11:34:03 +03:00
Ilia Mashkov
5df60b236c
test(UnifiedFontStore): cover fetchFn typed error paths and error getter
2026-04-05 15:20:15 +03:00
Ilia Mashkov
df3c694909
feat(UnifiedFontStore): throw FontNetworkError and FontResponseError in fetchFn
2026-04-05 14:07:26 +03:00
Ilia Mashkov
a1a1fcf39d
feat(BaseFontStore): expose error getter
2026-04-05 11:03:00 +03:00
Ilia Mashkov
b40e651be4
refactor(Font/model): move baseFontStore and unifiedFontStore to subdirectories, rename errors/index to errors/errors
2026-04-05 11:02:42 +03:00
Ilia Mashkov
9427f4e50f
feat(Font): re-export FontNetworkError and FontResponseError from entity barrel
2026-04-05 09:33:58 +03:00
Ilia Mashkov
ed9791c176
feat(Font/lib): add FontNetworkError and FontResponseError
2026-04-05 09:04:47 +03:00
Ilia Mashkov
c6dabafd93
chore(appliedFontsStore): move FontBufferCache, FontEvicionPolicy and FontLoadQueue to appliedFontsStore/utils
2026-04-05 08:25:05 +03:00
Ilia Mashkov
e88cca9289
test(FontBufferCache): change mock fetcher type
2026-04-04 16:43:54 +03:00
Ilia Mashkov
d4cf6764b4
test(appliedFontsStore): rewrite tests with describe grouping and full coverage
2026-04-04 10:38:20 +03:00
Ilia Mashkov
5a065ae5a1
refactor: extract #fetchChunk, replace Promise.allSettled with self-describing results
2026-04-04 09:58:41 +03:00
Ilia Mashkov
20110168f2
refactor: extract #processFont and #scheduleProcessing from touch and #processQueue
2026-04-04 09:52:45 +03:00
Ilia Mashkov
f88729cc77
fix: guard AbortError from retry counting; eviction policy removes stale keys
2026-04-04 09:40:21 +03:00
Ilia Mashkov
d21de1bf78
chore(appliedFontsStore): use created collaborators classes
2026-04-03 16:09:10 +03:00
Ilia Mashkov
bc4ab58644
fix(buildQueryString): change the way the searchParams built
2026-04-03 16:08:15 +03:00
Ilia Mashkov
37e0c29788
refactor: loadFont throws FontParseError instead of re-throwing raw error
2026-04-03 15:42:08 +03:00
Ilia Mashkov
46ce0f7aab
feat: extract FontBufferCache with injectable fetcher
2026-04-03 15:24:14 +03:00
Ilia Mashkov
128f341399
feat: extract FontEvictionPolicy with TTL and pin/unpin
2026-04-03 15:06:01 +03:00
Ilia Mashkov
64b97794a6
feat: extract FontLoadQueue with retry tracking
2026-04-03 15:01:36 +03:00
Ilia Mashkov
d6eb02bb28
feat: add FontFetchError and FontParseError typed errors
2026-04-03 14:44:06 +03:00
Ilia Mashkov
a711e4e12a
chore(appliedFontsStore): move generateFontKey into separate function and cover it with tests
2026-04-03 12:50:50 +03:00
Ilia Mashkov
05e4c082ed
feat(appliedFontsStore): move font loading logic into loadFont function and cover it with tests
2026-04-03 12:29:48 +03:00
Ilia Mashkov
b602b5022b
chore(appliedFontsStore): move the FontLoadRequestConfig type and other types from appliedFontsStore into types directory
2026-04-03 12:25:38 +03:00
Ilia Mashkov
5249d88df7
feat(appliedFontsStore): create separate yieldToMainThread function with proper tests
2026-04-03 11:05:29 +03:00
Ilia Mashkov
e553cf1f10
feat(appliedFontsStore): create separate getEffectiveConcurrency function with proper tests
2026-04-03 11:03:48 +03:00
Ilia Mashkov
0fdded79d7
test: change globals to true to use vitest tools without importing them
2026-04-03 11:02:17 +03:00
Ilia Mashkov
a6c8b50cea
fix(appliedFontsStore): solve ttl based fonts purge by adding cache for on-screen fonts
Workflow / build (pull_request) Successful in 3m45s
Workflow / publish (pull_request) Has been skipped
2026-04-03 09:35:16 +03:00
Ilia Mashkov
11c4750d0e
chore: update gitignore
Workflow / build (push) Successful in 51s
Workflow / publish (push) Successful in 26s
2026-03-04 16:53:53 +03:00
Ilia Mashkov
9b90080c57
chore: change hex colors to tailwind bariables
Workflow / build (pull_request) Successful in 3m29s
Workflow / publish (pull_request) Has been skipped
2026-03-04 16:51:49 +03:00
Ilia Mashkov
6f65aa207e
fix: stories errors
Workflow / build (pull_request) Successful in 3m22s
Workflow / publish (pull_request) Has been skipped
2026-03-02 22:45:29 +03:00
Ilia Mashkov
87bba388dc
chore(app): update config, dependencies, storybook, and app shell
2026-03-02 22:21:19 +03:00
Ilia Mashkov
55e2efc222
refactor(features, widgets): update ThemeManager, FontSampler, FontSearch, and SampleList
2026-03-02 22:20:48 +03:00
Ilia Mashkov
0fa3437661
refactor(SetupFont): reorganize TypographyMenu and add control tests
2026-03-02 22:20:29 +03:00
Ilia Mashkov
efe1b4f9df
refactor(GetFonts): restructure filter API and add sort store
2026-03-02 22:19:59 +03:00
Ilia Mashkov
0dd08874bc
refactor(ui): update shared components and add ControlGroup, SidebarContainer
2026-03-02 22:19:35 +03:00
Ilia Mashkov
13818d5844
refactor(shared): update utilities, API layer, and types
2026-03-02 22:19:13 +03:00
Ilia Mashkov
ac73fd5044
refactor(helpers): modernize reactive helpers and add tests
2026-03-02 22:18:59 +03:00
Ilia Mashkov
594af924c7
refactor(Breadcrumb): simplify entity structure and add tests
2026-03-02 22:18:41 +03:00
Ilia Mashkov
af4137f47f
refactor(Font): consolidate API layer and update type structure
2026-03-02 22:18:21 +03:00
Ilia Mashkov
ba186d00a1
feat(ComparisonView): add redesigned font comparison widget
2026-03-02 22:18:05 +03:00
Ilia Mashkov
6cd325ce38
chore(ComparisonSlider): remove widget in favor of ComparisonView
2026-03-02 22:17:46 +03:00
Ilia Mashkov
0c3dcc243a
chore(ui): remove obsolete UI components
2026-03-02 22:16:48 +03:00
Ilia Mashkov
e7225a6009
chore(shadcn): remove deprecated shadcn-svelte components
2026-03-02 22:16:18 +03:00
Ilia Mashkov
0d38a2dc9b
fix(filters): remove unused import
2026-03-02 15:06:43 +03:00
Ilia Mashkov
ba20d6d264
fix(filters): use proxy fetch function
2026-03-02 15:06:06 +03:00
Ilia Mashkov
6d06f9f877
fix(filters): remove hardcoded fallback
2026-03-02 14:53:54 +03:00
Ilia Mashkov
db7ffd3246
feat(filters): support multiple values
2026-03-02 14:12:55 +03:00