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 |
|
Ilia Mashkov
|
37a528f0aa
|
feat(filters): add dynamic filters store
|
2026-03-02 14:12:47 +03:00 |
|
Ilia Mashkov
|
85b14cd89b
|
feat(SampleListSection): add LayoutSwitch to the header
|
2026-02-27 19:08:34 +03:00 |
|
Ilia Mashkov
|
8fbd6f5935
|
feat(SampleList): remove unused code
|
2026-02-27 19:07:53 +03:00 |
|
Ilia Mashkov
|
80a9802c42
|
fix(VirtualList): don't render top spacer if topPad is bellow 0
|
2026-02-27 19:07:13 +03:00 |
|
Ilia Mashkov
|
fe5940adbf
|
chore: add exports
|
2026-02-27 18:44:07 +03:00 |
|
Ilia Mashkov
|
f7fe71f8e3
|
feat(Badge): rewrite Badge component to new design
|
2026-02-27 18:43:56 +03:00 |
|
Ilia Mashkov
|
db518a6469
|
feat(Divider): adjust colors
|
2026-02-27 18:42:54 +03:00 |
|
Ilia Mashkov
|
5946f66e69
|
chore(FontSamler): rewrite component to use existed shared ui label wrappers
|
2026-02-27 18:42:20 +03:00 |
|
Ilia Mashkov
|
2046394906
|
chore: add exports
|
2026-02-27 18:41:20 +03:00 |
|
Ilia Mashkov
|
887ca6e5e1
|
feat(LayoutSwitch): create a ui component to switch SampleList layout
|
2026-02-27 18:40:46 +03:00 |
|
Ilia Mashkov
|
c86b5f5db8
|
feat(LayoutManager): create layout manager with persistent store support to manage SampleList items layout
|
2026-02-27 18:40:08 +03:00 |
|
Ilia Mashkov
|
f0aa89097e
|
feat(TypographyMenu): rewrite from hidden class to if based rendering
|
2026-02-27 18:39:09 +03:00 |
|
Ilia Mashkov
|
80feda41a3
|
feat(createResponsiveManager): rewrote ifs to switch case
|
2026-02-27 18:35:40 +03:00 |
|
Ilia Mashkov
|
3a813b019b
|
chore: rename
|
2026-02-27 13:00:58 +03:00 |
|
Ilia Mashkov
|
fb6cd495d3
|
feat(VirtualList): add different layout support
|
2026-02-27 13:00:03 +03:00 |
|
Ilia Mashkov
|
44bbac4695
|
feat(Section) add headerContent snippet
|
2026-02-27 12:50:16 +03:00 |
|
Ilia Mashkov
|
8fa376ef94
|
feat(handleTitleStatusChanged): create reusable handler for sections title status management
|
2026-02-27 12:49:13 +03:00 |
|
Ilia Mashkov
|
9f84769fba
|
chore: add/delete imports/exports
|
2026-02-27 12:48:14 +03:00 |
|
Ilia Mashkov
|
1b0451faff
|
chore: delete unused code
|
2026-02-27 12:46:52 +03:00 |
|
Ilia Mashkov
|
338f4e106c
|
feat(FontSearch): create a component that wraps SampleList with Section
|
2026-02-27 12:45:07 +03:00 |
|
Ilia Mashkov
|
fbf6f3dcb4
|
feat(SampleList): create a component that wraps SampleList with Section
|
2026-02-27 12:44:57 +03:00 |
|
Ilia Mashkov
|
d516a383e1
|
chore(IconButon): delete unusual code
|
2026-02-27 12:43:21 +03:00 |
|
Ilia Mashkov
|
12718593e3
|
feat(FontSampler): refactor component to align it with new design
|
2026-02-27 12:42:18 +03:00 |
|
Ilia Mashkov
|
9983be650a
|
feat(TypographyMenu): refactor component to align it with new design
|
2026-02-27 12:41:58 +03:00 |
|
Ilia Mashkov
|
e85f6639ff
|
feat(FilterControls): refactor component to align it with new design
|
2026-02-27 12:41:05 +03:00 |
|
Ilia Mashkov
|
3a9bd0c465
|
chore: fix imports
|
2026-02-27 12:40:37 +03:00 |
|
Ilia Mashkov
|
9af81c3f17
|
feat(FontSearch): refactor component to align it with new design
|
2026-02-27 12:40:09 +03:00 |
|