Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1273 commits
Select commit Hold shift + click to select a range
ae730ab
Add compatibility functions for enro-test
isaac-udy Aug 25, 2025
c34e637
Add compatibility functions for enro-test, and other minor updates
isaac-udy Aug 26, 2025
5b90d37
add isDirectOverlay extension for NavigationDestination, stop using r…
isaac-udy Sep 1, 2025
2418cad
Merge remote-tracking branch 'origin/3.x-compat-updates' into 3.x-com…
isaac-udy Sep 1, 2025
f7f30e8
Group CI tasks under new "continuousIntegration" task
isaac-udy Sep 1, 2025
d9f9d44
Update gradle version
isaac-udy Sep 1, 2025
e6c9a60
Renamed "frontendJs" to default "wasmJs", changed publishing to ignor…
isaac-udy Sep 1, 2025
20e5c55
Remove emulator-wtf from the main enro module, remove hilt-test from …
isaac-udy Sep 1, 2025
e7cd8ba
Merge pull request #198 from isaac-udy/3.x-compat-updates
isaac-udy Sep 1, 2025
68340f3
Released 3.0.0-alpha01
isaac-udy Sep 1, 2025
efdf0f7
add acceptNone filter to EmbeddedDestination to prevent instructions …
isaac-udy Sep 1, 2025
cdca8fa
Add better deprecation message for NavigationContainer.Key.FromName
isaac-udy Sep 1, 2025
1f10706
Update FlowResultScope and FlowStep creation for Enro 3.x, allowing r…
isaac-udy Sep 1, 2025
d58f2ee
Merge remote-tracking branch 'origin/main'
isaac-udy Sep 1, 2025
a3655a4
Add comment to instanceId for FlowStepResult
isaac-udy Sep 1, 2025
d3ecbd3
refactor: improve flow step id handling and documentation for better …
isaac-udy Sep 1, 2025
62f3394
Fix ResultFlowTest compilation issues
isaac-udy Sep 1, 2025
e44ca84
Released 3.0.0-alpha02
isaac-udy Sep 4, 2025
afb3fee
Add :enro-processor:publishMavenPublicationToMavenCentralRepository t…
isaac-udy Sep 4, 2025
3058b1c
Update NavigationModuleGenerator so that a module is always generated…
isaac-udy Sep 4, 2025
cb141c7
Add EnroPlatformWasmJs
isaac-udy Sep 4, 2025
67911e0
Add ResolverPlatform for the Enro Processor to get platform specific …
isaac-udy Sep 4, 2025
e9f599f
Start using ResolverPlatform in NavigationComponentGenerator for gett…
isaac-udy Sep 4, 2025
97bf97c
Released 3.0.0-alpha03
isaac-udy Sep 4, 2025
51f7588
Use ResolverPlatform as an input to NavigationComponentGenerator, pas…
isaac-udy Sep 4, 2025
44ebea8
Remove unused property of GeneratedModuleReference
isaac-udy Sep 4, 2025
6fd3c8a
remover "enro3" from package name references
isaac-udy Sep 4, 2025
0ae0c0c
refactor: update navigation binding and component generation to handl…
isaac-udy Sep 4, 2025
1e72b63
Merge remote-tracking branch 'origin/main'
isaac-udy Sep 4, 2025
2117503
Don't use @ConsistentCopyVisibility for GeneratedBindingReference, as…
isaac-udy Sep 4, 2025
8c71cb8
Released 3.0.0-alpha04
isaac-udy Sep 4, 2025
54bfff2
Add ComponentReference to replace KSDeclaration in componentsToProces…
isaac-udy Sep 4, 2025
6271e6c
Released 3.0.0-alpha05
isaac-udy Sep 4, 2025
0a579aa
Update agp
isaac-udy Oct 9, 2025
eb1196f
Renamed enro-core to enro-runtime, created enro-common to hold some c…
isaac-udy Oct 9, 2025
92dc043
Released 3.0.0-alpha06
isaac-udy Oct 9, 2025
519da02
Add missing wasmJs actual implementations (although these are still a…
isaac-udy Oct 13, 2025
e0c9d77
Enable incremental KSP
isaac-udy Oct 13, 2025
443890f
Add experimental functionality for adding NavigationPath bindings to …
isaac-udy Oct 16, 2025
f2d2f19
Merge remote-tracking branch 'origin/main'
isaac-udy Oct 16, 2025
8b33f92
Move NavigationContext.getNavigationKeyFromPath to enro-runtime
isaac-udy Oct 16, 2025
7f1e34b
Remove root project name setting from settings.gradle.kts (this was c…
isaac-udy Oct 18, 2025
7675a84
Update dependencies and remove kapt (except for auto-service in enro-…
isaac-udy Nov 4, 2025
bd26a25
Improve Compose stability
isaac-udy Nov 4, 2025
371a210
Update rememberNavigationContainer to take into account the changes t…
isaac-udy Nov 4, 2025
525c907
Update NavigationContainerTests to use backstackOf instead of listOf
isaac-udy Nov 5, 2025
7d7314c
Update dependency versions
isaac-udy Nov 10, 2025
39fb4cb
Update return types of findContext methods to be more usable when sea…
isaac-udy Nov 10, 2025
8c22ee9
Fix bug where some KSP aggregation would not work for iOS platforms w…
isaac-udy Dec 2, 2025
6711ea5
Released 3.0.0-alpha07
isaac-udy Dec 16, 2025
8eb14f1
Add "Other" platform type, remove debug logs
isaac-udy Dec 16, 2025
868320c
Released 3.0.0-alpha08
isaac-udy Dec 16, 2025
85c089d
Update to Compose 1.10-rc02, and update the NavigationBackHandler to …
isaac-udy Jan 7, 2026
6e0a87b
Get the test application running in the web again
isaac-udy Jan 7, 2026
7fecc93
Publish all library variants (including wasmJs)
isaac-udy Jan 7, 2026
1e8eb2d
Fix issues with NavigationEvent/BackHandler conflicts for desktop
isaac-udy Jan 7, 2026
8baa389
Add a fix for issues seen on wasm targets where a module with a navig…
isaac-udy Jan 7, 2026
0fe7dda
Don't publish enro-common, due to FQN issues
isaac-udy Jan 7, 2026
d5746ba
Released 3.0.0-alpha09
isaac-udy Jan 7, 2026
8cc808b
Add emoji support with noto to the sample wasm app
isaac-udy Jan 7, 2026
0bb7456
Merge remote-tracking branch 'origin/main'
isaac-udy Jan 7, 2026
8fcee5c
Added experimental web history controller
isaac-udy Jan 7, 2026
867b959
Minor tweaks to compat libraries to reduce number of import changes r…
isaac-udy Mar 17, 2026
89a2edc
Fix bug with predictive back navigation on iOS
isaac-udy Mar 22, 2026
83a2cf4
Merge remote-tracking branch 'origin/main'
isaac-udy Mar 22, 2026
e977d5e
Update AGP to 8.13.2
isaac-udy Mar 25, 2026
72d8b3d
Added recipes module for common Enro patterns
isaac-udy-ai Apr 14, 2026
ee8aa52
Merge branch 'main' into 261803-compat-updates
isaac-udy May 11, 2026
92f16dd
Update library versions
isaac-udy May 11, 2026
11ad9fc
Update library versions, drop iOS x64 support
isaac-udy May 11, 2026
d6b167a
Add LocalNavigationContainerOrNull for safe parentContainer access
isaac-udy May 11, 2026
635108c
Fix lint errors
isaac-udy May 11, 2026
aa67154
Update emulatorwtf to latest
isaac-udy May 11, 2026
4f3811d
Add functionality for destinations using DirectOverlay to set their o…
isaac-udy May 11, 2026
adc4b5d
Merge remote-tracking branch 'origin/main'
isaac-udy May 11, 2026
d17a943
Update emulatorwtf configuration to use ATD for devices with API >30 …
isaac-udy May 11, 2026
27df1cc
Add "NavigationAnimatedVisibility" and "Modifier.animateNavigationEnt…
isaac-udy May 11, 2026
365c01f
Merge pull request #204 from isaac-udy/261803-compat-updates
isaac-udy May 11, 2026
e8d1374
Add StaggeredAnimation recipe
isaac-udy May 11, 2026
029db7b
Docs phase 1: rewrite README, site landing, getting-started, migratio…
isaac-udy May 11, 2026
a689ab0
Docs phase 2: write the four core-concepts pages
isaac-udy May 11, 2026
04fd832
Update kotlin stdlib/reflect library reference syntax
isaac-udy May 11, 2026
5b2f780
Use scene.key for OverlaySceneRenderer invocations for stable animations
isaac-udy May 11, 2026
d88bb01
Merge remote-tracking branch 'origin/main'
isaac-udy May 11, 2026
3218b46
Docs phase 2 amendments + onCloseRequested cleanup
isaac-udy May 11, 2026
65b6ec6
Remove @file:OptIn(kotlin.time.ExperimentalTime::class), and optimise…
isaac-udy May 11, 2026
8045ca8
Make sure that the onOpenedPlugin executes BEFORE the destination is …
isaac-udy May 11, 2026
1a78b26
Docs phase 3: write the seven advanced-topics pages
isaac-udy May 11, 2026
71643a9
Shared-elements recipe + Animations recipe group + background decorator
isaac-udy May 11, 2026
c05f2e2
Docs phase 4: write the four platform pages
isaac-udy May 11, 2026
7bc7579
Docs phase 5: troubleshooting rewrite + cleanup of stale docs
isaac-udy May 11, 2026
0137aa9
Add compile-only fallbacks to continuousIntegration task
isaac-udy May 11, 2026
5fda6e0
Fix import error
isaac-udy May 11, 2026
a39609a
Fix import error
isaac-udy May 11, 2026
e5c1899
Add Jekyll section landing pages so sidebar shows nested navigation
isaac-udy May 11, 2026
53358d6
Add manual workflow to deploy docs/ghpages to the gh-pages branch
isaac-udy May 11, 2026
bd5e9a1
Add nullability support to NavigationAnimatedVisibility/Modifier.anim…
isaac-udy May 11, 2026
c88ec48
Merge remote-tracking branch 'origin/main'
isaac-udy May 11, 2026
2bc8e7d
Merge remote-tracking branch 'origin/main'
isaac-udy May 11, 2026
3891acf
Released 3.0.0-alpha10
isaac-udy May 11, 2026
a3cf97a
Reflow the list-detail recipe into a single animated layout
isaac-udy May 18, 2026
a3f42c4
Split ListDetail into scene-based and with-containers recipes; add Tw…
isaac-udy May 18, 2026
b1662f6
Auto-wire shared elements between scenes; stabilise scene identity
isaac-udy May 18, 2026
d73e2b6
Drop inner AnimatedContent and revert key to include detail id
isaac-udy May 18, 2026
ed9845c
Merge remote-tracking branch 'origin/main'
isaac-udy May 18, 2026
dbec1c1
Update button text to read "close" (more accurate)
isaac-udy May 19, 2026
1d5e06c
Batch 1: align decorator/scene names and shapes with Nav3
isaac-udy May 19, 2026
9056dd2
Batch 2: typed destination metadata via NavigationDestination.Metadat…
isaac-udy May 19, 2026
b307882
Batch 3: invert exclusion polarity to match Nav3
isaac-udy May 19, 2026
b74214b
Batch 4: hoistable NavigationSceneState
isaac-udy May 19, 2026
2776d09
Batch 5: Nav3-style scene flexibility additions
isaac-udy May 19, 2026
44a9639
Batch 6: PrepareBackStack pattern + optional sharedTransitionScope
isaac-udy May 19, 2026
0540e6f
docs: mark Batch 6 as landed in NAV3-COMPARISON.md
isaac-udy May 19, 2026
02d7be7
Move composition tracking to an innermost decorator (fixes onPop timing)
isaac-udy May 19, 2026
7eed3a7
docs(nav3): drop process language; write as a stable reference
isaac-udy May 19, 2026
67386c7
Make DestinationViewModelStoreOwner init idempotent per registry
isaac-udy May 19, 2026
9d741bb
Short-circuit rememberNavigationSceneState on empty destinations; dro…
isaac-udy May 19, 2026
f724d28
Merge pull request #206 from isaac-udy/nav3-alignment
isaac-udy May 19, 2026
dad3ab8
Add Scene Decoration recipe: sidebar / bottom-bar via SceneDecoratorS…
isaac-udy May 19, 2026
2591e96
Add Shell Scene recipe and split scenedecoration into simple/ + complex/
isaac-udy May 19, 2026
f318274
Expose backstack + contexts on navigationInterceptor DSL scopes
isaac-udy May 19, 2026
37c120a
Fix Shell Scene exit-animation jump from collapsing chrome slots
isaac-udy May 19, 2026
beed984
Remove dead code
isaac-udy May 19, 2026
108a796
Released 3.0.0-alpha11
isaac-udy May 19, 2026
62320d9
Create FUNDING.yml
isaac-udy May 20, 2026
32dbd9e
Drop misleading runCatching+TODO from EnroTest installNavigationContr…
isaac-udy May 20, 2026
ae8f075
Add interceptor builder and container correctness tests
isaac-udy May 20, 2026
aee8ee1
Add NavigationHandleConfiguration tests for requestClose semantics
isaac-udy May 20, 2026
ab1651e
Add EmptyInterceptor, interceptor chain, and reorder correctness tests
isaac-udy May 20, 2026
b34b756
Add MultiContainerRoutingTests for findContainerForOperation
isaac-udy May 20, 2026
f4608e2
Add backstack saved-state round-trip tests
isaac-udy May 20, 2026
77e8eff
Wire compose-ui-test into enro-runtime commonTest
isaac-udy May 20, 2026
658b758
Add SceneIntegrationTests for NavigationDisplay, strategy chain, and …
isaac-udy May 20, 2026
167768d
Add nested overlay and previousEntries scene tests
isaac-udy May 20, 2026
8b1fc6c
Add AnimatedVisibility and SharedTransition scope propagation test
isaac-udy May 21, 2026
ca25585
Add overlay onRemove suspension lifecycle test
isaac-udy May 21, 2026
cc67448
Add overlay onCloseRequested integration test and harness teardown fix
isaac-udy May 21, 2026
6b70821
Add ControllerInterceptorTests for built-in default interceptors
isaac-udy May 21, 2026
b3eec59
Add ResultChannelTests for registerResult and flow-completion stripping
isaac-udy May 21, 2026
5fcd6f9
Add SetBackstackDiffTests for diff and instance-identity preservation
isaac-udy May 21, 2026
55cb66a
Add ResultDelegationTests for CompleteFrom and closeAndCompleteFrom
isaac-udy May 21, 2026
9570cdc
Add NavigationPluginTests for plugin SPI lifecycle and metadata hook
isaac-udy May 21, 2026
a54740a
Add PathBindingIntegrationTests for getNavigationKeyFromPath lookup
isaac-udy May 21, 2026
b12b673
Add SyntheticDestinationTests for the redirect interceptor mechanism
isaac-udy May 21, 2026
defda33
Add EmptyBehaviorTests for the public empty-behavior builders
isaac-udy May 21, 2026
79e702d
Add closeAndReplaceWith test
isaac-udy May 22, 2026
82234d6
Fix OverlaySceneRenderer spurious initial onRemove invocation
isaac-udy May 22, 2026
b1e18cc
Make verifyMetadataSerialization gracefully no-op when no controller …
isaac-udy May 22, 2026
0dd5399
Refactor Result tests to avoid Complete's private constructor on K/Na…
isaac-udy May 22, 2026
16f1cab
Make SetBackstack's intermediate RootOperation lists explicitly typed
isaac-udy May 22, 2026
4c66b36
Delete .github/dependabot.yml
isaac-udy May 22, 2026
380ff65
Skip Android-framework-dependent tests on testDebugUnitTest
isaac-udy May 23, 2026
b1b5ffb
Reorder interceptor when-branches to work around K/Native is-check bug
isaac-udy May 23, 2026
40b2bde
Run all four KMP test targets in CI
isaac-udy May 23, 2026
8ce985c
Mark recipe MetadataKey objects internal for K/Native ObjC export
isaac-udy May 23, 2026
d5084ff
Merge pull request #207 from isaac-udy/enro-runtime-test-coverage
isaac-udy May 23, 2026
543e163
Add @NavigationPath.FromBinding and value class path parameter support
isaac-udy May 23, 2026
071351d
Prefer the most-specific binding on ambiguous path matches
isaac-udy May 23, 2026
3c86952
Move specificity-based path resolution into NavigationPathBinding
isaac-udy May 23, 2026
01374a5
Merge pull request #208 from isaac-udy/navigation-path-from-binding
isaac-udy May 23, 2026
d3a9b9d
Stop throwing from wasmJs root navigation handle
isaac-udy May 23, 2026
7bc09f6
Add rememberInitialBackstackFromUrl for cold-load deep links
isaac-udy May 23, 2026
6d2c8ad
Use path bindings for URLs in WebHistoryPlugin
isaac-udy May 23, 2026
9196955
Fall back to URL parsing when popstate state is missing
isaac-udy May 23, 2026
e7dc4c6
Add tests for web URL resolution
isaac-udy May 23, 2026
9342c1a
Wire test app to use URL-based initial backstack
isaac-udy May 23, 2026
76b0e6a
Document and wire web URL routing in recipes app
isaac-udy May 23, 2026
54a0c18
Annotate recipe entry and deep-link keys with @NavigationPath
isaac-udy May 23, 2026
38b7a66
Make WebHistoryPlugin always root-only
isaac-udy May 23, 2026
ba707bd
Keep @NavigationPath only on recipe entry keys, restore manual-bindin…
isaac-udy May 23, 2026
c5cc636
Document root-only URL routing model for beta
isaac-udy May 23, 2026
ac5ee21
Stop emitting #N fragments for unannotated destinations
isaac-udy May 23, 2026
59ea604
Merge pull request #209 from isaac-udy/web-url-routing
isaac-udy May 23, 2026
fc2c537
Replace Fragment registerForNavigationResult TODO() with clear error
isaac-udy May 23, 2026
22e5e6c
Strip debug printlns from WebHistoryPlugin and NavigationFlow
isaac-udy May 23, 2026
64e73be
Merge pull request #210 from isaac-udy/critical-fixes
isaac-udy May 23, 2026
1dff601
Add isDebug parameter to installNavigationController
isaac-udy May 23, 2026
992a38b
Real deprecation message for NavigationContainerState.Render
isaac-udy May 23, 2026
7b7da97
Throw-based outcomes for SyntheticDestinationScope
isaac-udy May 23, 2026
0e81770
Allow off-backstack Close/Complete in processOperations
isaac-udy May 23, 2026
75977e1
Tests for synthetic destination outcomes
isaac-udy May 23, 2026
7507569
Migrate compat sendResult/forwardResult to delegate to new outcomes
isaac-udy May 23, 2026
bbcb99f
Outcome state tracking, closeSilently, and visibility tightening
isaac-udy May 23, 2026
9de22c1
fix bad test names
isaac-udy May 23, 2026
f9c9d5c
Merge pull request #212 from isaac-udy/synthetic-destination-outcomes
isaac-udy May 23, 2026
83418b9
Add ExternalUrlSynthetic recipe
isaac-udy May 23, 2026
0f9c128
Add AuthGateSynthetic recipe
isaac-udy May 23, 2026
a3cb1c0
Add ProfileDeciderSynthetic recipe
isaac-udy May 23, 2026
a49cc50
Register synthetic recipes in SelectRecipe
isaac-udy May 23, 2026
1a79544
Document synthetic destinations across the docs site
isaac-udy May 23, 2026
a1265aa
Redesign synthetic dispatch as in-place rewrite with sideEffect outcome
isaac-udy May 24, 2026
29b35d9
Update ExternalUrlSynthetic recipe to use sideEffect
isaac-udy May 24, 2026
6ddd175
Document pure-vs-sideEffect outcome split for synthetics
isaac-udy May 24, 2026
1d7cc51
Restore deprecated navigationContext/instruction shims on synthetic s…
isaac-udy May 24, 2026
310593e
Merge pull request #213 from isaac-udy/synthetic-in-place-outcomes
isaac-udy May 24, 2026
9c56d4d
Expose SyntheticOutcome + peekSyntheticOutcome for test tooling
isaac-udy May 24, 2026
5726aee
Add testSyntheticDestination helpers + assertion DSL in enro-test
isaac-udy May 24, 2026
09d0a3e
Document the synthetic-destination testing API
isaac-udy May 24, 2026
0870a86
Ergonomic helpers for enro-test: backstack, paths, operation history
isaac-udy May 25, 2026
d6ae19f
Provide LocalNavigationContainer + LocalNavigationContext inside deco…
isaac-udy May 25, 2026
c4d106d
Rename SyntheticDestinationTester test names to avoid K-Native parens
isaac-udy May 25, 2026
c59d9d6
Merge pull request #214 from isaac-udy/synthetic-testing-api
isaac-udy May 25, 2026
78edac8
KDoc the NavigationHandle public surface
isaac-udy May 25, 2026
725932e
Add READMEs for enro-runtime, enro-test, enro-processor, enro-annotat…
isaac-udy May 25, 2026
329658b
Add Path Bindings advanced-topic docs page
isaac-udy May 25, 2026
9747010
Wire Dokka v2 across published modules + add multi-module API site
isaac-udy May 25, 2026
893eea2
Path-bindings docs: replace Twitter example with self-referential one
isaac-udy May 25, 2026
436aa2a
Path-bindings docs: use Bluesky profile tabs as the example
isaac-udy May 25, 2026
8952b4e
Suppress Escape→back in EnroBrowserContent by default
isaac-udy May 25, 2026
c342c0c
Merge pull request #216 from isaac-udy/suppress-escape-as-back
isaac-udy May 25, 2026
cf8a337
Merge pull request #215 from isaac-udy/tier3-dx-bundle
isaac-udy May 25, 2026
245b4e4
Changelog updates
isaac-udy May 25, 2026
e37f0b1
Merge pull request #217 from isaac-udy/changelog-beta01
isaac-udy May 25, 2026
7bccb27
Merge pull request #211 from isaac-udy/beta-hardening-cleanup
isaac-udy May 25, 2026
13832c6
Fix Kotlin/JS publish: expect/actual for MetadataKey identifier
isaac-udy May 25, 2026
f02a057
Merge pull request #218 from isaac-udy/fix-metadata-key-js
isaac-udy May 25, 2026
1f33836
Update version.properties
isaac-udy May 27, 2026
e61e778
Released 3.0.0-beta01
isaac-udy May 27, 2026
be2a365
Add "isDebug" parameter
isaac-udy Jun 2, 2026
18cc3c2
Add rememberRemappedBackProgress to provide smoother back navigation …
isaac-udy Jun 2, 2026
b725b5e
Start moving to new project structure
isaac-udy Jun 2, 2026
4147024
Progress on updates to project structure for AGP 9.2
isaac-udy Jun 2, 2026
518fc60
Drop back to AGP 9.0 for intellij support
isaac-udy Jun 2, 2026
78ea554
Fix errors with the test suite
isaac-udy Jun 3, 2026
e214e74
Clean up migration comments and fix docs recipe links
isaac-udy Jun 3, 2026
14b3269
Merge pull request #219 from isaac-udy/update-agp-9.2.0
isaac-udy Jun 3, 2026
c9d7212
Update CHANGELOG.md
isaac-udy Jun 3, 2026
f779740
Released 3.0.0-beta02
isaac-udy Jun 3, 2026
470d8ad
Support cross-module value classes as @NavigationPath path params
isaac-udy Jun 9, 2026
74e84c0
Fix web history sync: serialize updates, await traversals, replace-vs…
isaac-udy Jun 10, 2026
fb9dd67
WebHistoryPlugin: isolate per-event failures in the sync processor
isaac-udy Jun 11, 2026
635ffdd
WebHistoryPlugin: restore from URL when an entry's state can't decode
isaac-udy Jun 11, 2026
5a1eac2
Add BoxedValueClassSerializer for polymorphic value classes
isaac-udy Jun 11, 2026
d06969c
WebHistoryPlugin: verify serialized history state round-trips at writ…
isaac-udy Jun 11, 2026
3369461
WebHistoryPlugin: strip metadata from unverifiable history states + d…
isaac-udy Jun 11, 2026
b607ea8
Fix discriminator leak corrupting Instance.metadata in history state
isaac-udy Jun 11, 2026
5b321b5
Keep ALL_JSON_OBJECTS; route history serialization through the tree e…
isaac-udy Jun 11, 2026
ab66421
Pin savedstate round-trip for instances with value-class key fields
isaac-udy Jun 11, 2026
f4af4ef
Switch jsonConfiguration to POLYMORPHIC discriminator mode
isaac-udy Jun 11, 2026
0e50c9c
Changelog for web history sync rewrite + POLYMORPHIC discriminator mode
isaac-udy Jun 11, 2026
278fba5
Link upstream kotlinx issue #3022 from discriminator-mode comments
isaac-udy Jun 11, 2026
c66ee05
Move web-history/serialization changelog entries to 3.0.0-beta03
isaac-udy Jun 11, 2026
316002d
Move SavedStateSerializationTests to desktopTest
isaac-udy Jun 11, 2026
8636a02
Revert "Move SavedStateSerializationTests to desktopTest"
isaac-udy Jun 11, 2026
4a100be
Run framework-touching host tests under Robolectric
isaac-udy Jun 11, 2026
5214db3
CI: cancel superseded PR runs; release: changelog-driven release notes
isaac-udy Jun 11, 2026
6233e25
Changelog: standing Unreleased header for the release automation
isaac-udy Jun 11, 2026
3816144
Release: drop the optional notes input — the changelog is the single …
isaac-udy Jun 11, 2026
f1aee74
Merge pull request #220 from isaac-udy/fix/web-history-sync
isaac-udy Jun 11, 2026
6c24d22
Released 3.0.0-beta03
isaac-udy Jun 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 15 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# These are supported funding model platforms

github: [isaac-udy]
# patreon: # Replace with a single Patreon username
# open_collective: # Replace with a single Open Collective username
# ko_fi: # Replace with a single Ko-fi username
# tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
# community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
# liberapay: # Replace with a single Liberapay username
# issuehunt: # Replace with a single IssueHunt username
# lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
# polar: # Replace with a single Polar username
# buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
# thanks_dev: # Replace with a single thanks.dev username
# custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
7 changes: 0 additions & 7 deletions .github/dependabot.yml

This file was deleted.

110 changes: 75 additions & 35 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,45 +1,85 @@
name: CI
on:
push:
paths-ignore:
- '**.md'
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:

# Superseded PR runs are wasted compute: when a new push lands on a PR, cancel
# the in-flight run for the previous commit. Pushes to main are never
# cancelled — every main commit keeps its complete CI record for bisecting.
concurrency:
group: ci-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
run-ui-tests:
name: Run Tests
runs-on: macOS-latest
ci-linux:
name: CI / Linux (Android, Desktop, wasmJs)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Changes
uses: dorny/paths-filter@v3
id: changes
with:
filters: |
isCodeChange:
- '**/*.kt'
- '**/*.kts'
- '**/*.toml'

- name: Set up JDK 21
if: steps.changes.outputs.isCodeChange == 'true'
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 21

- name: Setup gradle
if: steps.changes.outputs.isCodeChange == 'true'
uses: gradle/actions/setup-gradle@v4

- name: Run continuous integration
if: steps.changes.outputs.isCodeChange == 'true'
env:
EW_API_TOKEN: ${{ secrets.EW_API_TOKEN }}
run: ./gradlew continuousIntegration --continue

ci-macos:
name: CI / macOS (iOS)
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v2

- name: Set up JDK 11
uses: actions/setup-java@v2.5.0
with:
distribution: 'zulu'
java-version: 11

- name: Run Enro UI Tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 29
script: ./gradlew :enro:connectedCheck

- name: Run Enro UI Tests (Hilt)
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 29
script: ./gradlew :enro:hilt-test:connectedCheck

- name: Run Enro Unit Tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 29
script: ./gradlew :enro:testDebugUnitTest

- name: Run Modularised Example Tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 29
script: ./gradlew :modularised-example:app:testDebugUnitTest
- name: Checkout
uses: actions/checkout@v4

- name: Changes
uses: dorny/paths-filter@v3
id: changes
with:
filters: |
isCodeChange:
- '**/*.kt'
- '**/*.kts'
- '**/*.toml'

- name: Set up JDK 21
if: steps.changes.outputs.isCodeChange == 'true'
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 21

- name: Setup gradle
if: steps.changes.outputs.isCodeChange == 'true'
uses: gradle/actions/setup-gradle@v4

- name: Run continuous integration (macOS)
if: steps.changes.outputs.isCodeChange == 'true'
run: ./gradlew continuousIntegrationMacOs --continue
65 changes: 65 additions & 0 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Deploy docs to gh-pages

# Manual deploy of docs/ghpages/ from main to the gh-pages branch.
#
# What it does:
# 1. Check out main.
# 2. Check out gh-pages alongside, as a git worktree.
# 3. On gh-pages: delete index.md, assets/, and docs/ at the root.
# (Anything else on gh-pages — CNAME, _config.yml, .nojekyll, etc. —
# is preserved.)
# 4. Copy main's docs/ghpages/{index.md, assets, docs} into the gh-pages
# worktree's root.
# 5. Commit and push if anything changed.
#
# Trigger this from the Actions tab → "Deploy docs to gh-pages" → Run
# workflow.

on:
workflow_dispatch:

jobs:
deploy:
name: Deploy docs/ghpages to the gh-pages branch
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout main
uses: actions/checkout@v4
with:
ref: main
fetch-depth: 0

- name: Configure git
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Add gh-pages as a worktree
run: |
git fetch origin gh-pages
git worktree add gh-pages-deploy gh-pages

- name: Replace docs content on gh-pages
run: |
cd gh-pages-deploy
# Remove only the three paths we manage. Other files on
# gh-pages (CNAME, _config.yml, .nojekyll, etc.) are preserved.
rm -f index.md
rm -rf assets docs
# Copy main's docs/ghpages/* into the worktree root. The
# `./.` syntax includes hidden files alongside the regular
# ones.
cp -r ../docs/ghpages/. .

- name: Commit and push
working-directory: gh-pages-deploy
run: |
git add -A index.md assets docs
if git diff --cached --quiet; then
echo "No changes to deploy."
exit 0
fi
git commit -m "Deploy docs from main (${GITHUB_SHA::7})"
git push origin gh-pages
72 changes: 25 additions & 47 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,47 +6,26 @@ on:
description: 'Version Name'
required: true
default: ''
changes:
description: 'Release notes'
required: true
default: ''
jobs:
release:
name: Release
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v2

- name: Set up JDK 11
uses: actions/setup-java@v2.5.0
with:
distribution: 'zulu'
java-version: 11

- name: Run Enro UI Tests
uses: reactivecircus/android-emulator-runner@v2
uses: actions/checkout@v4
with:
api-level: 29
script: ./gradlew :enro:connectedCheck
# add-and-commit pushes the release commit using the checkout
# credentials, so check out with the publish token.
token: ${{ secrets.PUBLISH_GITHUB_TOKEN }}

- name: Run Enro UI Tests (Hilt)
uses: reactivecircus/android-emulator-runner@v2
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
api-level: 29
script: ./gradlew :enro:hilt-test:connectedCheck

- name: Run Enro Unit Tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 29
script: ./gradlew :enro:testDebugUnitTest
distribution: 'zulu'
java-version: 21

- name: Run Modularised Example Tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 29
script: ./gradlew :modularised-example:app:testDebugUnitTest
- name: Setup gradle
uses: gradle/actions/setup-gradle@v4

- name: Install gpg secret key
run: cat <(echo -e "${{ secrets.PUBLISH_SIGNING_KEY_LITERAL }}") | gpg --batch --import
Expand All @@ -57,8 +36,13 @@ jobs:
- name: Export gpg secret key
run: sudo gpg --export-secret-keys --pinentry-mode loopback --passphrase=${{ secrets.PUBLISH_SIGNING_KEY_PASSWORD }} ${{ secrets.PUBLISH_SIGNING_KEY_ID }} > ${{ secrets.PUBLISH_SIGNING_KEY_LOCATION }}

- name: Update Version Name
run: ./gradlew updateVersion -PversionName=${{ github.event.inputs.versionname }}
# Stamps version.properties AND the changelog: the standing
# "## Unreleased" section becomes "## <version> (<date>)", a fresh empty
# "## Unreleased" is inserted above it, and the released section's body
# is written to build/release-notes.md for the Create Release step.
# Fails (before writing anything) if the Unreleased section is empty.
- name: Update Version Name + Changelog
run: ./gradlew updateVersion -PversionName=${{ inputs.versionname }}

- name: Publish Release
env:
Expand All @@ -69,24 +53,18 @@ jobs:
PUBLISH_SIGNING_KEY_ID: ${{ secrets.PUBLISH_SIGNING_KEY_ID }}
PUBLISH_SIGNING_KEY_PASSWORD: ${{ secrets.PUBLISH_SIGNING_KEY_PASSWORD }}
PUBLISH_SIGNING_KEY_LOCATION: ${{ secrets.PUBLISH_SIGNING_KEY_LOCATION }}
run: ./gradlew publishAllPublicationsToSonatypeRepository --no-parallel # publishAllPublicationsToGitHubPackagesRepository
run: ./gradlew publishAllPublicationsToMavenCentralRepository -PmavenCentralUsername="${{ secrets.PUBLISH_SONATYPE_USER }}" -PmavenCentralPassword="${{ secrets.PUBLISH_SONATYPE_PASSWORD }}" --no-parallel --stacktrace --continue --exclude-task :enro-common:publishJsPublicationToMavenCentralRepository

- name: Update Repo
uses: EndBug/add-and-commit@v5
env:
GITHUB_TOKEN: ${{ secrets.PUBLISH_GITHUB_TOKEN }}
uses: EndBug/add-and-commit@v9
with:
add: "./version.properties"
message: ${{ format('Released {0}', github.event.inputs.versionname) }}
add: |
version.properties
CHANGELOG.md
message: ${{ format('Released {0}', inputs.versionname) }}
push: true

- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.PUBLISH_GITHUB_TOKEN }}
with:
tag_name: ${{ github.event.inputs.versionname }}
release_name: Release ${{ github.event.inputs.versionname }}
body: ${{ github.event.inputs.changes }}
draft: false
prerelease: false
GH_TOKEN: ${{ secrets.PUBLISH_GITHUB_TOKEN }}
run: gh release create "${{ inputs.versionname }}" --title "Release ${{ inputs.versionname }}" --notes-file build/release-notes.md
24 changes: 24 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
.DS_Store
# Built application files
*.apk
*.aar
Expand Down Expand Up @@ -74,3 +75,26 @@ lint/outputs/
lint/tmp/
# lint/reports/
private.properties
/.kotlin/

/.codebuddy/

### Xcode ###
*.xcodeproj/*
!*.xcodeproj/project.pbxproj
!*.xcodeproj/xcshareddata/
!*.xcworkspace/contents.xcworkspacedata/
/*.gcno
**/xcshareddata/WorkspaceSettings.xcsettings
**/*.xcuserstate
*.xcscheme
*.xcworkspace
xcuserdata/

# CocoaPods
Pods/

## iOS App packaging
*.ipa
*.dSYM.zip
*.dSYM
26 changes: 26 additions & 0 deletions .run/Enro [_enro-core_desktopTest].run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Enro [:enro-runtime:desktopTest]" type="GradleRunConfiguration" factoryName="Gradle">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value=":enro-runtime:cleanDesktopTest" />
<option value=":enro-runtime:desktopTest" />
<option value="--rerun" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
<DebugAllEnabled>false</DebugAllEnabled>
<RunAsTest>false</RunAsTest>
<method v="2" />
</configuration>
</component>
Loading