Release 0.1.1#40
Merged
Merged
Conversation
Establish the two-trunk flow: dev is the development integration branch, main stays the release/stable trunk. The build+test gate already runs on every PR (so PRs into dev are gated); add dev to the push trigger so direct pushes to the trunk are built too. Pages deploy (pages.yml) and the tag-driven Maven Central publish stay pinned to main — releases cut from main. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The development trunk was renamed dev → develop (now the GitHub default branch). The earlier commit wired the build+test push trigger to a now-dead `dev` ref; correct it to `develop` so direct pushes to the trunk are gated. Pages deploy and the tag-driven publish stay on main. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ci: point the push gate at develop after dev → develop rename
SharinganExport.countsLine() hardcoded three `count { it is X }` calls and a
literal "HTTP h · MQTT m · BLE b" template, so a fourth protocol would be
silently omitted from the session export header — while NotificationContent
already iterated Protocol.entries. Extract one internal protocolCountsLine()
helper next to the Protocol registry (EventFilter.kt) and route both callers
through it. Output is byte-for-byte identical for the three current protocols
(SharinganExportTest / NotificationContentTest stay green); a new protocol now
appears in the export header automatically.
TDD: EventFilterTest pins the format and asserts one segment per
Protocol.entries (red -> green).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…iptor Completes the descriptor as the single home for per-protocol knowledge. The tab-bar icon and the search-field placeholder were the last two per-protocol facts resolved by `when (protocol)` blocks inside HomeScreen; lift them to abstract tabIcon / searchPlaceholder members on ProtocolDescriptor, implemented by each descriptor, and collapse the two HomeScreen `when`s to descriptorOf(protocol).tabIcon / .searchPlaceholder. Adding a protocol now touches one place and the compiler forces both members to be supplied. Internal-only; no public API or noop change. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ptor Complete the Protocol Descriptor as the single home for per-protocol knowledge
Opening the Sharingan logger from a host that uses per-app locales (e.g. AppCompat set to Arabic/RTL) rendered the logger in an RTL frame and, worse, permanently corrupted the host: after closing the logger the host was stuck in English text with RTL layout (issue #38). Root cause: SharinganActivity is a plain ComponentActivity that neither pins its own locale nor guards the process-global one. On API 33+ the framework applied the host's per-app locale (ar -> RTL) to the logger, and the logger's config handling flipped the process-global Locale/LocaleList default to English, which leaked back to the host. The logger is a locale-neutral surface: always English + LTR, and it must never read or mutate the host's locale. Two-layer fix: - Activity: attachBaseContext pins an en/LTR Configuration via the non-mutating createConfigurationContext (never resources.updateConfiguration). - Compose: the stateless SharinganScreenContent forces LocalLayoutDirection = Ltr around its whole body, so the frame is LTR on every platform (including iOS) and in Studio previews. The global-locale guard was needed: an instrumented test proved that createConfigurationContext(en) resets LocaleList.getDefault() to English. SharinganActivity now snapshots the host's LocaleList in attachBaseContext and restores it (right after, and again in onDestroy), leaving the host's locale untouched. Verified red->green on an API 34 emulator with a new instrumented test that pins the process to Arabic, opens/closes the logger, and asserts the logger is LTR while open and every process-global JVM locale default is still Arabic after. The test is @SdkSuppress(minSdkVersion = 33) since it drives the API 33+ LocaleManager. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The locale-leak regression (LoggerLocaleLeakTest) and the other connected suites (:sharingan UI tests, CaptureNotificationE2eTest) previously never ran in CI — build.yml only covered JVM and iOS unit tests, so the issue-#38 fix was only verified by manual emulator runs. Add an `android` job (reactivecircus/android-emulator-runner, API 34, KVM-accelerated ubuntu) that runs both modules' connectedDebugAndroidTest and uploads reports on failure, and correct the LoggerLocaleLeakTest KDoc that wrongly claimed CI already ran emulators. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
fix(android): isolate logger locale so it can't corrupt the host app
Maintainer call: this release is framed as the locale-leak fix release, so it takes the next patch number rather than a minor bump. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Promotes develop to main for the 0.1.1 release.
What ships
Versioned as a patch by maintainer decision — this is framed as the locale-leak fix release.
After merge: tag
v0.1.1on main to stage to Maven Central per docs/RELEASING.md.🤖 Generated with Claude Code