feat: migrate to Nucleus 2.0, Compose 1.11, Jewel 0.37#443
Open
kdroidFilter wants to merge 15 commits into
Open
feat: migrate to Nucleus 2.0, Compose 1.11, Jewel 0.37#443kdroidFilter wants to merge 15 commits into
kdroidFilter wants to merge 15 commits into
Conversation
- Rename all nucleus deps from io.github.kdroidfilter → dev.nucleusframework
- Replace application{} + SingleInstanceManager + AotRuntime with nucleusApplication { aotTraining() }
- Replace manual deep-link single-instance bridge with onDeepLink {}
- Split nucleus-decorated-window into core + tao + jewel artifacts
- Add LocalTextContextMenu workaround for Jewel 0.37 / Compose 1.11 NoSuchMethodError
- Move window minimumSize from LaunchedEffect to JewelDecoratedWindow param
- Fix Key.Home → Key.MoveHome for Alt+Home shortcut
- Bump Compose 1.10.3 → 1.11.0, Jewel 0.35 → 0.37, IntelliJ icons 253 → 262
Remove sortedBy calls in source panels that were overriding SQL ORDER BY ranking. Ensure sources appear in declared-base priority order: Tanakh → Mishnah → Bavli → Yerushalmi. Dedup source lines in TOC heading selections. Update to SeforimLibrary with improved source ranking and density-based link chaining.
Replace large pre-computed maps in cataloggen with hybrid approach: - Slim down generated CatalogPresets.kt from 41 KB to 6 KB (IDs and dropdown specs only) - Introduce CatalogAccess for lazy-loaded catalog access with display transformations - Apply Talmud prefixing for Bavli/Yerushalmi, book filtering, and ancestor label stripping - Embed TocQuickLink data directly in TocQuickLinksSpec instead of separate maps - Reduce memory footprint and eliminate drift risk from stable DB IDs Benefits: JAR -35 KB, -1-3 MB RAM, centralized display logic, fully testable transformations. Performance: ~30-80ms one-shot build on first catalog access.
- Revert Compose 1.11.0 → 1.10.3 (restores compatibility with Jewel 0.35 API) - Remove LocalTextContextMenu workaround added for Jewel 0.37/Compose 1.11 NoSuchMethodError - Restore Key.Home for Alt+Home shortcut (reverts Key.MoveHome change) - Revert ContextMenuItem constructor to pre-1.11 signature (label, action) - Ship systemTheme.svg locally since IntelliJ icons 262 dropped it; use PathIconKey - Keep Nucleus 2.0, Jewel 0.37, minimumSize on JewelDecoratedWindow (Nucleus API)
The java.awt.Cursor was a temporary constraint during the Compose 1.11 migration attempt. Revert to skiko.Cursor which is the proper import.
The scroll position saving logic used Flow.sample(200) to periodically
persist position during active scrolling. However, fixedPeriodTicker (used
internally by sample) ticks continuously even when the flow doesn't emit,
causing 5 Hz wakeups of the FlushCoroutineDispatcher on every tab's
BookContentView composable. Each wakeup triggered a frame redraw, leading
to 10-15 redraws/sec at idle (confirmed by JFR profiling).
Gate the sample ticker behind isScrollInProgress so the ticker only exists
during active scroll, terminating with emptyFlow when idle. This eliminates
the continuous frame invalidation.
Also:
- Add .catch {} to all flow.collect chains to prevent unhandled exceptions
from killing LaunchedEffect scopes
- Auto-format via ktlint
- Pass 1: explicit corpus anchors (על התלמוד, על התנ״ך) have top priority - Pass 2: hard-coded families (חברותא, מילונים, מחברי זמננו) - Pass 3: מפרשים detection with upstream ראשונים resolution to corpus - Pass 4: bare ראשונים/אחרונים with corpus ancestor lookup and ה-prefixing - Add integration test verifying cross-corpus commentators excluded from Talmud - Fix: rif/rosh sub-commentaries now correctly roll up to ראשונים על התלמוד - Fix: ensure proper corpus labels (התלמוד, התנ״ך) instead of bare corpus names
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.
Summary
io.github.kdroidfilter→dev.nucleusframework(v1.14.2 → 2.0.0-alpha)application {}+ manualSingleInstanceManager+AotRuntimewithnucleusApplication { aotTraining(duration) }; deep-link single-instance bridge replaced withonDeepLink {}nucleus-decorated-windowinto three artifacts:core,tao,jewelLocalTextContextMenucapture workaround for Jewel 0.37 / Compose 1.11NoSuchMethodErroronTextManager.getCut()minimumSizefromLaunchedEffecttoJewelDecoratedWindowdeclarative paramKey.Home→Key.MoveHomefor Alt+Home navigation shortcutSettingsWindowinsideJewelDecoratedWindowscope to satisfy Nucleus 2.0NucleusApplicationScopereceiverTest plan