You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[2.0.2] feat: Add BibTeX syntax highlighting and polish mobile UX
Before: BibTeX citations were monochrome text blobs in both the
article cite panel and the footer. Switching formats hard-swapped
with no transition. The nav search button did nothing on mobile.
The floating filter FAB covered the footer citation block on
short scrolls.
After: BibTeX entries get colored syntax — types, keys, delimiters
each get their own class — shared through a single formatBibtexHtml
function so article and footer rendering never drift. Format
switching crossfades. Copy tooltip confirms which format was grabbed
("BibTeX copied" / "APA copied").
On mobile, the nav search button closes the hamburger menu (if open)
and opens the filter bottom sheet with the search input focused.
Keyboard shortcut / does the same via open-mobile-search custom
event. The filter FAB fades out when the footer enters the viewport
via IntersectionObserver. Engagement bar groups Share + Cite in a
centered row instead of stacking everything vertically with full-
width separators. Share dropdown centers itself within viewport
bounds instead of overflowing off-screen.
Also:
- Fix article content overflow on narrow viewports (min-width: 0)
- CatalogHero trust badge: text-wrap balance, span wrapper to
prevent icon reflowing into wrapped text
- BrowseNav wraps on small screens, dots hidden
- Footer copyright name links to author profile
- Feedback follow-up animates with opacity instead of display toggle
- Extract shared E2E helpers to tests/e2e/helpers.ts
- Fix webkit test failures in 404 suggestion link navigation
- Fix analytics-consent race condition: await astro:page-load
- Mark axe-core a11y tests as test.slow() to stop CI flakes
- Add CHANGELOG entry for 2.0.2
Copy file name to clipboardExpand all lines: docs/CHANGELOG.md
+42-10Lines changed: 42 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,38 +6,69 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
7
7
---
8
8
9
-
## [`2.0.1`] - 2026-03-29
9
+
## [`2.0.2`] - 2026-03-30
10
+
11
+
**Citations look like they belong in a paper now, and mobile stopped pretending it's desktop.** BibTeX gets syntax highlighting everywhere it appears, the search button actually works on phones, and a handful of layout rough edges got sanded down.
12
+
13
+
### Added
14
+
15
+
-**BibTeX syntax highlighting** - entry types, field names, and delimiters get distinct colors in both the article cite panel and footer citation block. Shared via `formatBibtexHtml` in `src/lib/citation.ts` so the two never drift.
16
+
-**Citation format crossfade** - switching between BibTeX / APA / Markdown fades the content out and back in instead of hard-swapping. Copy button tooltip confirms which format was copied.
17
+
-**Mobile search integration** - the nav search button now opens the filter bottom sheet with the search input focused (dispatches `open-mobile-search` event). Keyboard shortcut `/` does the same. Closes the mobile nav first if it's open.
18
+
-**Mobile FAB auto-hide** - the floating "Filters" button fades out when the footer scrolls into view, so it stops covering the citation block on short pages
19
+
-**E2E test helpers module** - `isMobileProject`, `waitForNextAstroPageLoad`, `setTheme`, `trackConsoleErrors` extracted to `tests/e2e/helpers.ts` and shared across specs
20
+
21
+
### Changed
22
+
23
+
- Engagement bar stacks cleanly on mobile: Share + Cite stay grouped in a row, feedback sits above, separators hidden
24
+
- Share dropdown centers itself on mobile viewports instead of overflowing off-screen
25
+
- Feedback follow-up text animates in with opacity transition instead of a `display: none` toggle
26
+
- CatalogHero trust badge uses `text-wrap: balance` and wraps the text in a `<span>` so the book icon doesn't reflow into the second line
27
+
- BrowseNav wraps gracefully on small screens (dots hidden)
28
+
- Footer copyright name now links to author profile
29
+
- Accessibility axe-core tests marked `test.slow()` to stop flaking under load
30
+
31
+
### Fixed
32
+
33
+
- Article content overflowing its container on narrow viewports (`min-width: 0` on the content column)
34
+
- 404 suggestion link navigation failing in webkit - uses `force: true` click with parallel `waitForURL`
35
+
- Analytics consent test race condition on Astro navigation - now awaits `astro:page-load` event before asserting page view count
36
+
- Console error filtering in 404 tests - expected 404 resource errors no longer pollute the error list
37
+
38
+
---
39
+
40
+
## [`2.0.1`] - 2026-03-30
10
41
11
42
**Users can now quiet animations without touching their OS settings.** A sparkles toggle in the nav gives per-site control, persisted across sessions.
12
43
13
44
### Added
14
45
15
-
-**Animation toggle**— sparkles button in the nav lets users reduce motion on this site alone. Bounces when sparkles come back to life; goes instantly quiet when they don't.
16
-
-**Tooltip system** for nav icon buttons — CSS-only `data-tooltip` with arrow, hover delay, and keyboard focus support, replacing native `title` attributes
17
-
-**Motion contract** (`motion-contract.ts`) — shared constants and types mirroring the theme system architecture
18
-
-**Motion preference blocking script**— resolves `html[data-motion]` before first paint (localStorage first, OS `prefers-reduced-motion` as fallback), stamps new documents on view transitions
46
+
-**Animation toggle**- sparkles button in the nav lets users reduce motion on this site alone. Bounces when sparkles come back to life; goes instantly quiet when they don't.
47
+
-**Tooltip system** for nav icon buttons - CSS-only `data-tooltip` with arrow, hover delay, and keyboard focus support, replacing native `title` attributes
48
+
-**Motion contract** (`motion-contract.ts`) - shared constants and types mirroring the theme system architecture
49
+
-**Motion preference blocking script**- resolves `html[data-motion]` before first paint (localStorage first, OS `prefers-reduced-motion` as fallback), stamps new documents on view transitions
19
50
20
51
### Changed
21
52
22
-
- Motion system rewired from fifteen independent `@media (prefers-reduced-motion)` blocks to one `html[data-motion]` attribute driving a global CSS kill switch — near-zero durations on all transitions, animations, and view transitions when reduced
53
+
- Motion system rewired from fifteen independent `@media (prefers-reduced-motion)` blocks to one `html[data-motion]` attribute driving a global CSS kill switch - near-zero durations on all transitions, animations, and view transitions when reduced
23
54
- Mobile nav hardened against view-transition DOM replacement: lazy element lookups, re-bound listeners on `astro:page-load`, duplicate-event guards via data attributes
24
55
- E2E test helpers extracted for consent flow, catalog filter scoping, and stable click-with-scroll patterns; clipboard tests skip non-Chromium; force-click fallbacks for mobile viewports
25
56
26
57
### Fixed
27
58
28
-
- Horizontal overflow from `left: -100vw; right: -100vw` on full-bleed decorative backgrounds in CatalogHero and ArticleLayout — replaced with `translateX(-50%)` centering
29
-
- ThemeToggle spin animation clipping tooltip pseudo-elements — now targets inner icons instead of the button, `overflow: hidden` dropped
59
+
- Horizontal overflow from `left: -100vw; right: -100vw` on full-bleed decorative backgrounds in CatalogHero and ArticleLayout - replaced with `translateX(-50%)` centering
60
+
- ThemeToggle spin animation clipping tooltip pseudo-elements - now targets inner icons instead of the button, `overflow: hidden` dropped
30
61
31
62
---
32
63
33
64
## [`2.0.0`] - 2026-03-23
34
65
35
-
**Complete rewrite — Gatsby → Astro 5.** New architecture, new design, same 56 smells.
66
+
**Complete rewrite - Gatsby → Astro 5.** New architecture, new design, same 56 smells.
36
67
37
68
### Architecture
38
69
39
70
- Migrated from Gatsby (React, Material UI) to **Astro 5** with static output
40
-
- Adopted **Preact islands** for interactive components (FilterSidebar, CodeExample) — most pages ship zero framework JS
71
+
- Adopted **Preact islands** for interactive components (FilterSidebar, CodeExample) - most pages ship zero framework JS
41
72
- Replaced client-side state with **Nano Stores** (shared between islands and vanilla scripts)
42
73
- Switched styling from Material UI to **Tailwind CSS v4** (via `@tailwindcss/vite`)
43
74
- Self-hosted fonts via **Fontsource** (Fraunces, Plus Jakarta Sans, JetBrains Mono)
@@ -351,6 +382,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
0 commit comments