- submit.yml: rewrite with release:[released] trigger, upgrade to BPP v3
(no Puppeteer/Chrome setup needed), chrome-only, environment: production gate
- submit-beta.yml: new workflow, release:[prereleased] trigger, submits to
Chrome trustedTesters channel, environment: beta gate
- both keep workflow_dispatch as manual fallback for re-runs
- hotfix releases automatically trigger submit.yml via the [released] event
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- switch from workflow_dispatch to PR-closed trigger (aligns with main's automation approach)
- fix sed -i '' (macOS syntax) → sed -i (GNU/Linux compatible for Ubuntu runners)
- add stable_version output to strip pre-release suffix before writing to manifests
(Chrome/Firefox/Safari extension manifests reject semver pre-release strings)
- keep token in checkout step for push permissions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- fix version-bump.yml: IS_PRERELEASE was never defined, breaking iterative beta versioning (7.x.x-beta.1 → 7.x.x-beta.2)
- fix hotfix-release.yml: move changelog generation before merge so git log captures commits correctly
- fix dependabot.yml: was empty; now targets dev branch to keep Dependabot PRs in the normal dev→beta→main flow
- fix automerge.yml: remove continue-on-error from lint step so lint failures block Dependabot auto-merge; pin bun-version to 1.3.1
- fix production-release.yml: add automated back-merge of main→beta and main→dev after each production release
- fix manifest/chrome.json and manifest/firefox.json: version was 7.6.0, mismatched package.json 7.6.1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace all querySelector('.reminder-info') calls with EventBus.emit('showReminder')
across 14 files — prevents crashes when the element is not mounted
- Move ReminderInfo from inside the sidebar to the top of the right content column
so it no longer obscures sidebar navigation
- Fix reminder not showing for non-hot-reload settings (Slider hook violation where
useT() was called inside a requestAnimationFrame callback)
- Skip reminder for LocationSearch since it already emits a hot-reload refresh event
- Suppress reminder for settings with hot-reload (no page refresh needed)
- Fix modal content overflowing right edge: replace width:100%!important on
.modalTabContent with flex:1 + min-width:0 + overflow-x:hidden
- Fix ReminderInfo refresh button being too small
- Fix sidebar collapse animation using max-width transition instead of width:0
- Fix PhotoInformation showing 0x0 resolution and Unknown Location before image loads
- Fix Wikipedia disambiguation links for quote authors by returning null from
getAuthorLink (Wikidata links used when available)
- Bail early in useSuggestedPacks when offline mode is enabled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Added react-router for improved routing and navigation.
- Replaced hash-based navigation with React Router's navigate function.
- Introduced RouterBridge to manage deep linking and legacy navigation.
- Updated components to utilize useNavigate and useLocation hooks.
- Refactored modal handling to integrate with React Router.
- Removed updateHash utility to prevent conflicts with React Router's history management.
- Created routes configuration for application structure and lazy loading.
- Ensured backward compatibility with existing deep link data structure.
- Introduced new SuggestedPacks component to display trending quote and photo packs.
- Implemented useSuggestedPacks hook for fetching and caching suggested packs from the marketplace.
- Updated localization files for multiple languages to include new strings for suggested packs.
- Added explore all button to navigate to the marketplace category page.