What's New
Design System & Theme Tokenization
- Centralized all 80+ hardcoded hex colors and font strings into
app/src/theme/index.ts - New theme tokens:
fontSize.micro/xxs,colors.primaryDark/accentBg/codeBlock/highlight/tooltipLight - Shared style constants:
headingStyle,subheadingStyle,textStyle,codeBlockStyle,tableStyle LIB_ABBREVmap centralized in constants
WCAG AA Accessibility
- Fixed 15+ contrast violations where
gray.400(#9ca3af, 2.9:1 ratio) was used for text - All text now meets 4.5:1 minimum contrast ratio
- Added keyboard accessibility to zoom container (role, tabIndex, Enter/Space, focus-visible)
- Added aria-labels to interactive elements
Plot of the Day Redesign
- Terminal-style frame with
$ python plots/…prompt (links to GitHub source) - Split layout: image left, info panel right
- Fade-in animation on load
- Real library and Python versions from API
>>> plot.png saved │ Library · Python 3.x.xstatus bar
Responsive Improvements
- Breadcrumb abbreviations on mobile:
pyplots.ai→pp,matplotlib→mpl - RelatedSpecs grid: smoother column progression (2→3→4→6)
- Better icon spacing in mobile breadcrumb
Code Quality
- Fixed 3 pre-existing lint errors (setState in useEffect → render-time ref pattern)
- Fixed useCallback missing dependency warning
- Added AbortController for fetch cleanup on unmount
- Added setTimeout cleanup via ref on unmount
- Removed unused ImageLightbox component
- Updated test suite for new API fields and endpoints
- Complete style guide documentation (
docs/reference/style-guide.md)
Full Changelog: v1.0.0...v1.1.0