Ilia Mashkov
ca382fd43d
refactor(features): rename GetFonts to FilterAndSortFonts
...
The feature does not fetch fonts — that lives in \$entities/Font's
fontStore. It owns the user's filter selections, sort preference, and
search-by-name query that drive the listing. The new name describes what
it actually does.
Directory + every \$features/GetFonts import path updated; no symbol
renames in this commit.
2026-05-24 18:16:16 +03:00
Ilia Mashkov
e0d39d861f
refactor(GetFonts): rename filters/filterManager to available/appliedFilterStore
...
The 'filters' + 'filterManager' pair didn't reveal the schema-vs-selection
split. Rename to reflect the actual roles:
- FiltersStore / filtersStore → AvailableFilterStore / availableFilterStore
- createFilterManager / FilterManager → createAppliedFilterStore / AppliedFilterStore
- filterManager singleton → appliedFilterStore
- mapManagerToParams → mapAppliedFiltersToParams
Directories and file basenames follow the new singleton names. Public
barrel signature updated; all consumers (Search, FontSearch, Filters,
FilterControls) point at the new identifiers.
2026-05-24 18:08:05 +03:00
Ilia Mashkov
b6494a8cb5
test(GetFonts): cover filters and sortStore + nest each in its own dir
...
Export createSortStore and FiltersStore so per-test instances can be
constructed without sharing singleton state. Add unit tests covering:
- sortStore: default + custom init, display→API value mapping, set()
idempotency, singleton shape
- filters: empty initial state, fetch population, single-call dedup,
error path, cached-fetch reuse across observers
Group each store with its tests under its own directory to match the
filterManager layout.
2026-05-24 17:49:26 +03:00
Ilia Mashkov
cc218934f4
fix(ComparisonView): update batchFontStore import path in test
...
Dynamic import inside the vi.mock('$entities/Font') factory was missed
when batchFontStore was relocated into its own subdirectory in 1573950 .
Restores the previously-failing comparisonStore test suite (9 tests) and
clears the lingering TS error in svelte-check.
2026-05-24 16:05:59 +03:00
Ilia Mashkov
3a327e2d92
refactor(GetFonts): tighten mapManagerToParams + add coverage
...
Collapse the three duplicated getGroup/map/length-guard chains into a
single selectedIn helper. Drop the unnecessary `as string[]` casts —
Property<TValue extends string>.value already yields string at the call
site.
Add unit tests covering empty query, populated query, missing group,
empty group, single + multi selection, unknown group ids, and the
combined param shape.
2026-05-24 15:45:07 +03:00
Ilia Mashkov
30621c33df
refactor(GetFonts): consolidate model/state into model/store
...
Align the slice with the project-wide convention (entities/Font,
entities/Breadcrumb, features/ChangeAppTheme all use model/store/;
CLAUDE.md spec calls for store/). Move bindings, filters, and the
filterManager subdir out of the now-removed model/state/ directory.
2026-05-24 15:33:26 +03:00
Ilia Mashkov
cb8f6ffc97
refactor(GetFonts): unify filterManager factory + singleton under model/state
...
Merge the factory previously in lib/filterManager/ with the singleton
previously in model/state/manager.svelte.ts into a single
model/state/filterManager/ slice. The factory builds stateful runes-backed
objects, so it belongs alongside the singleton in model/, not in lib/.
lib/ now contains only the pure mapManagerToParams transform.
Public barrel signature unchanged.
2026-05-24 15:23:25 +03:00
Ilia Mashkov
33d3429060
refactor(GetFonts): consolidate filtersStore wiring into bindings
...
Move the filtersStore → filterManager.setGroups $effect.root out of
manager.svelte.ts into bindings.svelte.ts so all cross-store reactive
wiring for the feature lives in one place. manager.svelte.ts now only
constructs and exports the singleton.
2026-05-24 15:08:54 +03:00
Ilia Mashkov
e60309af78
refactor(GetFonts): centralize filterManager/sortStore → fontStore bridge
...
Move the duplicated $effect blocks that mapped filterManager and sortStore
into fontStore params out of Search, FontSearch and FilterControls into a
single $effect.root in features/GetFonts/model/state/bindings.svelte.ts.
Consumers now bind to the manager/store directly; the bridge is installed
once via a side-effect import from the feature barrel.
2026-05-24 15:05:28 +03:00
Ilia Mashkov
1573950605
chore(Font): move batchFontStore to separate directory
2026-05-24 13:54:15 +03:00
Ilia Mashkov
67e02e4e75
feat: tag every build with the immutable commit SHA
Workflow / publish (pull_request) Has been skipped
Workflow / build (pull_request) Successful in 38s
2026-05-23 21:20:37 +03:00
Ilia Mashkov
5ca7a433ff
fix: use dvh units to prevent ComparisonView from being covered with address bar on mobile
2026-05-23 21:19:51 +03:00
Ilia Mashkov
f762a09c23
fix(SliderArea): temporarily replace pretext measurements with canvas
Workflow / build (pull_request) Successful in 1m53s
Workflow / publish (pull_request) Has been skipped
2026-05-23 20:07:39 +03:00
Ilia Mashkov
95ae72719e
chore: move getPretextFontString into separate directory
2026-05-23 20:03:13 +03:00
Ilia Mashkov
f41c4aab9c
feat: move class prop to wrapper
Workflow / build (pull_request) Successful in 3m55s
Workflow / publish (pull_request) Has been skipped
2026-05-23 17:00:29 +03:00
Ilia Mashkov
d1eb83fa90
fix: wire the search to the store
2026-05-23 16:59:59 +03:00
Ilia Mashkov
c01fc79a3e
fix: add scrollMargin property since the IntersectionObserver has it
2026-05-05 17:04:23 +03:00
Ilia Mashkov
6bfa7ca777
chore: add .css files declaration
2026-05-05 17:03:43 +03:00
Ilia Mashkov
0d4356b8f1
chore: remove @ts-expect-error since scheduler was added in new TS release
2026-05-05 17:03:18 +03:00
Ilia Mashkov
c18574d4c3
fix: remove deprecated tsconfig property
2026-05-05 17:02:25 +03:00
Ilia Mashkov
1c9a7f9fe1
chore: add .vscode to .gitignore
2026-05-05 16:49:56 +03:00
Ilia Mashkov
fae6694479
chore(dprint): update markup_fmt plugin version, fix @render indentation and add couple of new rules
2026-05-05 16:49:27 +03:00
Ilia Mashkov
a105c94176
chore: upgrade svelte-language-server to 0.18.0
2026-05-05 15:34:38 +03:00
Ilia Mashkov
77c2b27f8b
chore: update remaining outdated packages (@chenglou/pretext 0.0.6, svelte-check 4.4.8)
2026-05-05 15:34:38 +03:00
Ilia Mashkov
1ce0d6c66f
chore: upgrade tooling and ecosystem (jsdom 29, playwright 1.59.1, storybook 10.3.6)
2026-05-05 15:34:33 +03:00
Ilia Mashkov
6c20a68e19
chore: upgrade core build tooling (vite 8, svelte plugin 7, typescript 6)
2026-05-05 15:34:27 +03:00
Ilia Mashkov
3894912a22
feat(FontList): add a small gap for elements of ComparisonView sidebar font list
2026-05-05 12:05:19 +03:00
Ilia Mashkov
e8d3727c6a
feat: upgrade lucide icons to 1.14
2026-05-05 10:10:11 +03:00
Ilia Mashkov
5fbf090b24
fix(Footer): minor layout change
2026-05-05 10:06:30 +03:00
Ilia Mashkov
f8ba2d7eb0
chore(Footer): move components to separate directories
Workflow / build (pull_request) Successful in 1m42s
Workflow / publish (pull_request) Has been skipped
2026-04-23 14:59:33 +03:00
Ilia Mashkov
3594033bcb
feat(FooterLink): move FooterLink to the Footer widget layer, delete the one in shared/ui
2026-04-23 14:59:33 +03:00
Ilia Mashkov
2ae24912f7
feat(Footer): tweak the footer position
2026-04-23 14:59:32 +03:00
Ilia Mashkov
877719f106
feat(Link): create reusable Link ui component
2026-04-23 14:59:32 +03:00
Ilia Mashkov
4eafb96d35
feat(ComparisonView): replace window resize listener with ResiseObserver on the container to catch the container size change on sidebar open/close
2026-04-23 14:59:32 +03:00
Ilia Mashkov
652dfa5c90
feat: brand colored text selection
2026-04-23 14:59:32 +03:00
Ilia Mashkov
54087b7b2a
feat: replace clsx with cn util
2026-04-23 14:59:32 +03:00
Ilia Mashkov
cffebf05e3
feat(SliderArea): tweak the styles
2026-04-23 14:59:32 +03:00
Ilia Mashkov
ada484e2e0
feat(FooterLink): tweak the styles
2026-04-23 14:59:32 +03:00
Ilia Mashkov
dbcc1caeb0
feat(Footer): change the footer styles and layout to avoid overlapping with the TypographyMenu
2026-04-23 14:59:32 +03:00
Ilia Mashkov
2c579a3336
feat(shared): add cn utility for tailwind-aware class merging
2026-04-23 14:59:32 +03:00
Ilia Mashkov
fe0d4e7daa
fix: workflow
Workflow / build (push) Successful in 1m40s
Workflow / publish (push) Successful in 46s
2026-04-23 14:52:11 +03:00
Ilia Mashkov
108df323f9
test: add timeout to fail the test instead of OOM
2026-04-23 14:16:06 +03:00
Ilia Mashkov
2803bcd22c
fix(createVirtualizer): add window check to resolve the ReferenceError
2026-04-23 14:16:06 +03:00
Ilia Mashkov
1d5af5ea70
feat(Layout): add footer to layout
2026-04-22 13:01:46 +03:00
Ilia Mashkov
2221ecad4c
feat(Footer): create Footer widget with project name and portfolio link
2026-04-22 13:01:16 +03:00
Ilia Mashkov
cd8599d5b5
feat(Layout): add new favicon
2026-04-22 13:00:29 +03:00
Ilia Mashkov
6c91d570ec
chore: remove usused code
2026-04-22 12:31:35 +03:00
Ilia Mashkov
91b80a5ada
feat(ui): add FooterLink component
2026-04-22 12:31:02 +03:00
Ilia Mashkov
84ac886c33
chore: fix TS alias resolution and SVG mocking for test setup
2026-04-22 09:45:51 +03:00
Ilia Mashkov
a60dbcfa51
test: track missing component test configuration
2026-04-22 09:42:59 +03:00
Ilia Mashkov
8fc8a7ee6f
test: fix component tests by adding localStorage mock and resolving store interference
2026-04-22 09:42:00 +03:00
Ilia Mashkov
cbc978df6d
chore(ci): add unit and component tests to lefthook and gitea workflow
2026-04-22 09:09:21 +03:00
Ilia Mashkov
6664beec25
feat(FontList): unified skeleton — rows stay skeletal until font file loaded
2026-04-22 09:02:32 +03:00
Ilia Mashkov
a801903fd3
feat(FontList): use getSkeletonWidth utility for skeleton row widths
2026-04-22 09:02:32 +03:00
Ilia Mashkov
ecdb1e016d
feat(FontApplicator): add skeleton snippet prop to replace blur loading state
2026-04-22 09:02:32 +03:00
Ilia Mashkov
092b58e651
feat(FontVirtualList): suppress font loading during jump scroll catch-up
2026-04-22 09:02:32 +03:00
Ilia Mashkov
d6914f8179
feat(FontStore): add fetchAllPagesTo for parallel batch page loading
2026-04-22 09:01:45 +03:00
Ilia Mashkov
b831861662
feat(VirtualList): add onJump callback for scroll-beyond-loaded detection
2026-04-22 09:01:45 +03:00
Ilia Mashkov
67fc9dee72
fix(FontList): address the bug with selected font transition animations
2026-04-20 13:36:05 +03:00
Ilia Mashkov
a73bd75947
refactor(ComparisonView): unify pretext font string generation with a utility function
2026-04-20 11:13:54 +03:00
Ilia Mashkov
836b83f75d
style: apply new dprint rules to CharacterComparisonEngine
2026-04-20 11:06:54 +03:00
Ilia Mashkov
07e4a0b9d9
chore: forbid one-line and braceless cycles in dprint config
2026-04-20 11:06:45 +03:00
Ilia Mashkov
141126530d
fix(ComparisonView): fix character morphing thresholds and add tracking support
2026-04-20 10:52:28 +03:00
Ilia Mashkov
f9f96e2797
fix(ComparisonView): add correct line-height calculation
2026-04-20 10:51:41 +03:00
Ilia Mashkov
3e11821814
feat: add meta description
2026-04-19 19:15:46 +03:00
Ilia Mashkov
ee3f773ca5
chore: replace section with main tag
2026-04-19 19:15:03 +03:00
Ilia Mashkov
2a51f031cc
chore: add missing aria labels
2026-04-19 19:14:49 +03:00
Ilia Mashkov
b792dde7cb
fix(FontList): overwrite css rule
2026-04-19 19:14:15 +03:00
Ilia Mashkov
66dcffa448
chore(storybook): replace viewport with defaultViewport
2026-04-18 11:04:10 +03:00
Ilia Mashkov
cca00fccaa
chore(storybook): remove mobile stories and initialWidth prop from stories. The mobile view available throught viewport selector in the header
2026-04-18 11:03:43 +03:00
Ilia Mashkov
af05443763
chore(storybook): purge unused Providers props
2026-04-18 11:02:34 +03:00
Ilia Mashkov
99d92d487f
feat(storybook): replace width with maxWidth for StoryStage
2026-04-18 11:01:36 +03:00
Ilia Mashkov
4a907619cc
chore(storybook): purge custom viewports from storybook preview
2026-04-18 11:00:32 +03:00
Ilia Mashkov
6c69d7a5b3
test(ComparisonView): cover parts of the widget with tests
2026-04-18 01:19:01 +03:00
Ilia Mashkov
993812de0a
test(GetFonts): add tests for Filters component behavior
2026-04-18 01:18:02 +03:00
Ilia Mashkov
67c16530af
test(ChangeAppTheme): cover theme switcher component with tests
2026-04-18 01:17:25 +03:00
Ilia Mashkov
fbbb439023
test(Breadcrumb): add test for BreadcrumbHeader component
2026-04-18 01:16:45 +03:00
Ilia Mashkov
c2046770ef
test(SampleList): add test coverage for LayoutSwitch component
2026-04-18 01:16:09 +03:00
Ilia Mashkov
adfba38063
test: exclude lucide from dependency optimization
2026-04-18 01:15:25 +03:00
Ilia Mashkov
dfb304d436
test: remove legacy tests and add new ones
2026-04-17 22:16:44 +03:00
Ilia Mashkov
f55043a1e7
test(Badge): cover Baddge with tests
2026-04-17 20:26:46 +03:00
Ilia Mashkov
409dd1b229
test(Divider): cover Divider with tests
2026-04-17 20:26:46 +03:00
Ilia Mashkov
9fbce095b2
test(Footnote): cover Footnote with tests
2026-04-17 20:26:46 +03:00
Ilia Mashkov
171627e0ea
test(Input): cover Input with tests
2026-04-17 20:26:46 +03:00
Ilia Mashkov
d07fb1a3af
test(Label): cover Label with tests
2026-04-17 20:26:46 +03:00
Ilia Mashkov
6f84644ecb
test(Loader): cover Loader with tests
2026-04-17 20:26:46 +03:00
Ilia Mashkov
5ab5cda611
test(SearchBar): cover SearchBar with tests
2026-04-17 20:26:46 +03:00
Ilia Mashkov
7975d9aeee
test(Skeleton): cover Skeleton with tests
2026-04-17 20:26:46 +03:00
Ilia Mashkov
2ba5fc0e3e
test(Slider): cover Slider with tests
2026-04-17 20:24:09 +03:00
Ilia Mashkov
1947d7731e
test(Stat): cover Stat with tests
2026-04-17 20:09:59 +03:00
Ilia Mashkov
38bfc4ba4b
test(TechTech): cover TextTech with tests
2026-04-17 20:09:41 +03:00
Ilia Mashkov
6cf3047b74
test(Button): cover Button with tests
2026-04-17 19:20:13 +03:00
Ilia Mashkov
81363156d7
feat: set up vitest browser config for svelte components tests
2026-04-17 18:52:37 +03:00
Ilia Mashkov
bb65f1c8d6
feat: add missing storybook files and type template arguments properly
2026-04-17 18:01:24 +03:00
Ilia Mashkov
5eb9584797
feat(TypographyMenu): add bindable "open" prop to close popover from outside
2026-04-17 16:30:41 +03:00
Ilia Mashkov
bb5c3667b4
feat(SliderArea): utilize responsive breakpoints for TypographyMenu positioning
2026-04-17 14:39:25 +03:00
Ilia Mashkov
3711616a91
feat(TypograpyMenu): change custom button for existed Button component
2026-04-17 14:31:57 +03:00
Ilia Mashkov
6905c54040
chore: edit comments
2026-04-17 14:30:30 +03:00
Ilia Mashkov
1e8e22e2eb
fix: edit tailwind variable name
2026-04-17 13:56:43 +03:00
Ilia Mashkov
8a93c7b545
chore: purge shadcn from codebase. Replace with bits-ui components and other tools
2026-04-17 13:37:44 +03:00