Conversation
- Updates the media query for .chapter-comp-selectors to stack selectors vertically on screens under 768px for better readability and tap area.
- Added \SearchControllerTest\ to reach 100% coverage on new search logic. - Fixed premature script exit in \ResponseTrait\ by throwing an exception when run in PHPUnit. - Added \public_html/sw.js\ to \sonar-project.properties\ exclusions.
… navigation & tests - Add floating action buttons (note + compare) on verse hover - Replace note icon with consistent fill='none' SVG - Update app link format to bib://bookChapter:verse - Reduce note preview threshold to 80 chars - Refactor app.scss into 13 logical partials - Replace chevron-right/down icons for translation groups - Smaller comparison title font on mobile - Add swipe gesture navigation in comparison view - Unify translation selector across comparison grid - Add verse.test.js and comparisonGrid.test.js
…ble fix
- fix: mobile header selector spacing - add padding-top to first row
on viewports < 575px so TranslationSelector matches verse row margin
- feat: swap Search and Chapter Comparison on mobile
* Navigator (header): Search icon replaces Chapter Comparison button
* BottomNavigation: Chapter Comparison replaces Search button
CSS Grid (5 equal columns) replaces flex layout for perfect centering
- feat: show full translation name instead of ID in notes
* NotesPanel badge now resolves translationId -> full name via
translations[] prop passed from Bible -> NotesPanel
* Verse note-preview label also shows full name via Reader -> Verse chain
* New prop translationName in Reader.js and Verse.js
- fix: hide More/Less toggle when note text is short enough
Previous logic joined global+translation note with \n separator
causing the separator itself to trigger expandable=true.
Now each note (global, translation) is checked individually.
- ux: bottom nav center button shows book sigla + chapter (e.g. Rdz 4)
Uses existing getSigla() with intl.locale for correct language abbreviation
instead of full book name which caused layout shift
- i18n: add chapterComparisonShort key (PL: Porownaj, EN: Compare, DE: Vergleich)
Used in BottomNavigation label to keep button text concise
- test: update verse.test.js testNotePreviewThreshold to match new
two-argument isNoteExpandable logic with additional edge cases
- ChapterComparison component improvements (ComparisonGrid.js) - SelectionGrid minor updates - useScrollDirection, useSwipeNavigation, useVersesCache refinements - _notes.scss style updates - tests: navigation.test.js and notes.test.js updated test coverage
- Replace <div> with <button> in SelectionGrid and TranslationSelector for reliable mobile taps - Replace <div> group labels with <button> in TranslationSelector (accessibility) - Add full PropTypes validation to TranslationSelector - Fix header spacing on Firefox/Brave (padding-bottom: 0.35rem instead of 0) - Fix verse-actions hidden on Brave desktop (add max-width to media query) - Reorganize bottom nav grid: compact arrows (44px), flexible center - Add Zen Mode setting (disable hide-on-scroll navigation) - Pin comparison header + primary translation (sticky on mobile) - Fix ComparisonGrid PropTypes for bookId/chapterId (accept string|number) - Add button CSS resets for .tile, .translation-item, .translation-group-label
This commit improves performance significantly on mobile platforms. - Add React.memo to Reader and Navigator to prevent full re-renders on scroll - Extract inline functions inside Bible render to useCallback - Change 'isNextChapterAvailable' functions to boolean values for Navigator - Extract inline styles in Verse.js to SCSS classes to reduce GC pressure - Change handlePopState to avoid stale closures with changeSelectedChapter ref - Add safety upper limit to LCS diff in ComparisonGrid to avoid freezing on very long verses
This commit updates React related packages to the latest stable version and adapts the mounting method to use the concurrent createRoot API.
…vices - Prevent JS main thread blockage by terminating handleTouchMove loops in Verse early when long press is canceled. - Stop evaluating touchEndX/Y on global touchmove in useSwipeNavigation if touchStartX is null (prevents running JS on every scroll pixel natively). - Add will-change: transform to animated UI layout parts (bottom-nav, headers) moving their animations directly to the compositor layer to prevent huge repaints on scroll.
… clicks dropdowns
- Removed Backdrop-filter: blur(16px) on screens max-width: 991.98px for .comparison-overlay and .chapter-comp-overlay to massively reduce GPU load. - Added has-fullscreen-overlay class to Body when opening SelectionGrid, ComparisonGrid, or ChapterComparison to hide <main>, header and .bottom-nav using content-visibility: hidden and opacity: 0. - Applied content-visibility: auto to .tile, .comparison-box-secondary, .chapter-comp-row, and .chapter-comp-mobile-verse to improve scrolling and rendering performance of large lists. - Set will-change: transform and replaced Box-shadow with Border-bottom for .comparison-pinned-area to reduce paint time during scroll on mobile devices.
… editor positioning
- Replace content-visibility:hidden with visibility:hidden + transition-delay
for body.has-fullscreen-overlay to prevent blank screens when opening
chapter selector or verse comparator on slower mobile devices
- Use faster fadeIn animation (0.15s) instead of slideUpFade (0.4s) on mobile
for selection-overlay to reduce the gap between background hiding and
overlay appearing
- Add missing dark mode text colors for chapter comparison title and
translation selectors
- Fix note editor modal being clipped/shifted on mobile by:
- Replacing left:50%/transform:translate(-50%,-50%) centering with
inset:0/margin:auto (more reliable across mobile browsers)
- Removing container padding from premium-modal mixin (children manage
their own padding)
- Adding box-sizing:border-box to note-editor-textarea
- Removing duplicate .note-editor-modal definition from
_translation-selector.scss that was overriding fixes
- disable already selected translations in comparison dropdowns - collapse translation groups by default (except favorites) - dynamic unpinning of primary verse box on mobile when too tall - reduce comparison modal font sizes for mobile - remove bottom nav labels for notes and comparison buttons - narrow notes and comparison nav buttons - increase notes form spacing - soften dark mode text color for readability - shorten back-to-books label to 'Wróć'
… positioning - Add safeStorage module wrapping localStorage calls with try/catch to prevent SecurityError crashes in restricted environments - Replace all direct localStorage access across components with safeLocalStorage wrappers (Bible, ChapterComparison, ComparisonGrid, FontSizeControl, Notes, SearchPanel, SideMenu, WelcomePopup, migrateOldNotes) - Remove redundant try/catch blocks around safeLocalStorage calls in ComparisonGrid and SideMenu - Service Worker: bump cache to v3, implement network-first strategy for JS/CSS assets to prevent stale bundles after deployment, add ignoreSearch fallback for cache matching - Fix verse-actions tooltip clipping under sticky header for first verse: CSS :first-child rule with correct specificity forces actions below; JS updateActionsPlacement uses direct DOM classList manipulation (synchronous) instead of React setState (async) - Wrap chapter index computation in useMemo (ChapterComparison) - Add null check for #root container and try/catch for migrateOldNotes in app.js startup - Bypass HTTPS redirect for 192.168.* in .htaccess (local dev) - Remove outdated mobile-performance-review doc - Add error.log to .gitignore
- Fixed ARIA roles and prop-types in UI components - Refactored useFocusTrap and useKeyboardNavigation for stability - Resolved test duplication logic and undefined checks - Standardized duplicate selector suppression on generated CSS
…s and fix Prettier formatting on dialog
- Add AboutModal.js component and assets/docs/about.txt content - Add About button to SideMenu with i18n support (pl/en/de) - Remove bookSigla.js (sigla logic moved to /books API endpoint) - Add sigla.test.js unit tests - Fix _notes.scss contrast for WCAG compliance - Minor a11y and linting fixes in Reader, SearchPanel, SelectionGrid, TranslationSelector, WelcomePopup, and Bible
…les, fix Prettier formatting in Bible.js
… results - BookSelector.js, ChapterSelector.js: add missing PropTypes validation - ChapterSelector.js: use optional chaining (chapters?.length) - useVersesCache.js: use optional chaining (structure?.[book]) - WelcomePopup.js: suppress jsx-a11y warning on backdrop overlay div - TranslationSelector.js: suppress jsx-a11y warnings on hover wrapper div - Reader.js: suppress jsx-a11y warning on event-delegated main element - Notes.js: suppress jsx-a11y warnings (role=button/dialog on li/div) - SearchPanel.js: fix ghost click on mobile - tap on search result no longer triggers verse selection in Reader behind the panel
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




No description provided.