Skip to content

chore: clean up post-upgrade warnings - #226

Merged
Nek-12 merged 4 commits into
masterfrom
chore/assemble-article-cleanup
May 24, 2026
Merged

chore: clean up post-upgrade warnings#226
Nek-12 merged 4 commits into
masterfrom
chore/assemble-article-cleanup

Conversation

@Nek-12

@Nek-12 Nek-12 commented May 23, 2026

Copy link
Copy Markdown
Member

Summary

  • clean up post-upgrade build warnings and Kotlin 2.4 warning fallout on top of merged master
  • include the Junie cleanup in this branch and ignore /.builder/plans/
  • fix the remaining project-owned metrics warning with a regression test for timeToFirstState reset semantics

Accepted Warning Buckets

  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/StoreDsl.kt INVISIBLE_REFERENCE suppression warnings
  • savedstate/src/androidMain/kotlin/pro/respawn/flowmvi/savedstate/plugins/ParcelizeStatePlugin.kt bounded-type suppression warnings, intentionally kept to preserve the public API shape for this release
  • Kotlin 2.4.0-RC with AGP 8.13.1 R8 metadata warnings
  • baseline webpack/node warnings, including url.parse() and wasm webpack warnings

Verification

  • ./gradlew detektFormat
  • ./gradlew :metrics:jvmTest --tests "pro.respawn.flowmvi.metrics.StateMetricsCollectorTest"
  • ./gradlew allTests
  • ./gradlew clean assemble --info --stacktrace --no-configuration-cache --no-build-cache > /tmp/flowmvi_assemble_raw3.log 2>&1

Summary by CodeRabbit

  • Refactor

    • Removed a DSL marker and several builder-inference annotations across public APIs to simplify usage and compiler behavior; updated previews, templates, and helpers.
  • Chores

    • Adjusted devcontainer setup and CI properties; removed an obsolete workflow; updated git/IDE ignore rules and live templates.
  • Bug Fixes

    • Time-travel reset now also clears lifecycle counters; metrics reset behavior tightened.
  • Tests

    • Added a test verifying metrics reset clears recorded timings.

Review Change Stack

@coderabbitai

coderabbitai Bot commented May 23, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: ea4beaf1-4d84-4cd1-866a-572f1341b3da

📥 Commits

Reviewing files that changed from the base of the PR and between fe9576f and 26c8877.

📒 Files selected for processing (1)
  • .devcontainer/devcontainer.json
💤 Files with no reviewable changes (1)
  • .devcontainer/devcontainer.json

📝 Walkthrough

Walkthrough

Removes FlowMVIDSL/@BuilderInference across modules, constrains FlowMVIDSL @Target, changes MetricsCollector to sentinel nanoseconds, switches debugger server map writes to putting(), and updates CI/devcontainer/IDE configs.

Changes

Core DSL and plugins modernization

Layer / File(s) Summary
API marker target update
core/.../api/FlowMVIDSL.kt
Adds @Target to limit FlowMVIDSL usage.
Store & configuration
core/.../dsl/*, core/.../api/*
Removes @FlowMVIDSL/@BuilderInference from StoreConfigurationBuilder, StoreBuilder, StoreDsl and related config properties.
DSL helpers: subscribe/state/pipeline/type ext
core/.../dsl/*, core/.../util/TypeExt.kt
Removes @FlowMVIDSL/@BuilderInference from subscribe, state, pipeline helpers and TypeExt.withType.
StorePluginBuilder & DecoratorBuilder
core/.../dsl/StorePluginBuilder.kt, core/.../decorator/DecoratorBuilder.kt
Removes method-level @FlowMVIDSL annotations from plugin/decorator builders.

Plugins, decorators and utilities

Layer / File(s) Summary
Plugin factories and installers
core/.../plugins/*
Drops @FlowMVIDSL/@BuilderInference across many public plugin factories and StoreBuilder installers; keeps behavior unchanged.
Decorators and helpers
core/.../decorator/*, core/.../decorators/*
Removes @FlowMVIDSL from decorator DSL and specific decorators; minor helper annotation additions (e.g., @IgnorableReturnValue).

Compose, Essenty, and SavedState updates

Layer / File(s) Summary
Compose subscribe & lifecycle
compose/.../dsl/*, compose/.../preview/*
Removes @FlowMVIDSL, makes one subscribe overload @Composable, deletes DefaultLifecycle, and changes requireLifecycle() to non-@Composable.
Essenty retained & subscribe
essenty/.../dsl/*, essenty/.../compose/*
Removes @FlowMVIDSL/@BuilderInference from retained-store factories and compose subscribe helpers; adds @JvmName entries where needed.
SavedState plugins & TypedSaver
savedstate/.../*
Removes @FlowMVIDSL/@BuilderInference; replaces some function annotations with @IgnorableReturnValue.

Debugger and tooling updates

Layer / File(s) Summary
Debugger client & plugin
debugger/debugger-client/..., debugger/debugger-plugin/...
Removes @FlowMVIDSL from debugger client/plugin APIs and adjusts constant formatting.
Server, DI composables & UI preview
debugger/server/...
Switches client map writes to clients.putting(...), removes @FlowMVIDSL from DI composables, and normalizes @Preview.
IDE LiveTemplates, sample DI, tests
debugger/ideplugin/..., sample/..., test/...
Removes @FlowMVIDSL from generated templates, sample DI composables, and test DSL helper.

Metrics tracking refactor and DSL cleanup

Layer / File(s) Summary
Collector sentinel nanos and tests
metrics/.../MetricsCollector.kt, metrics/.../StateMetricsCollectorTest.kt
Tracks time-to-first-state via atomic nanoseconds sentinel; snapshot/reset updated; adds test verifying reset clears the metric.
Metrics DSL: annotation removals
metrics/.../dsl/*
Removes @FlowMVIDSL from metrics decorator and reporter plugin DSL entry points.

Dev/CI/Gradle housekeeping

Layer / File(s) Summary
Gradle and CI properties
.github/ci-gradle.properties, gradle.properties
Adds suppression flags, removes kotlin.mpp.androidSourceSetLayoutVersion, and adds kotlin.native.ignoreDisabledTargets.
Devcontainer and git files
.devcontainer/devcontainer.json, .gitattributes, .gitignore
Simplifies postCreateCommand and updates gitattributes/gitignore entries.
buildSrc compiler flag cleanup
buildSrc/src/main/kotlin/Config.kt
Removes several -X* compiler flags from compiler/jvm args.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested labels

autorelease

Poem

I nibbled at DSLs with a careful hop,
Pulled BuilderInference crumbs till they drop.
Metrics tick in nanos, tidy and small,
Debugger maps now put clients in all.
Configs groomed, templates neat—rabbit clap! 🐇

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/assemble-article-cleanup

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 17dfc67292

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread core/src/commonMain/kotlin/pro/respawn/flowmvi/api/FlowMVIDSL.kt

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.devcontainer/devcontainer.json:
- Line 10: The postCreateCommand currently applies a blanket chmod -R 775 which
makes all files executable; update the postCreateCommand to first chown as
before (postCreateCommand), then set permissions by type: use find to set
directories to 775 (find . -type d -exec chmod 775 {} \;), files to 664 (find .
-type f -exec chmod 664 {} \;), and selectively make known script files
executable (e.g. find . -type f -name "*.sh" -or -name "scripts/*" -exec chmod
775 {} \;); replace the single chmod -R 775 invocation with these targeted
commands to avoid marking non-executables as executable while preserving
directory execute bits.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 7a09e777-9373-4609-a7b7-63c158dcffa5

📥 Commits

Reviewing files that changed from the base of the PR and between dbfc12c and 17dfc67.

📒 Files selected for processing (82)
  • .devcontainer/devcontainer.json
  • .gitattributes
  • .github/ci-gradle.properties
  • .github/workflows/junie.yml
  • .gitignore
  • .idea/junie.xml
  • .junie/.onboarding_migrated
  • .junie/memory/errors.md
  • .junie/memory/feedback.md
  • .junie/memory/tasks.md
  • android/src/androidMain/kotlin/pro/respawn/flowmvi/android/view/SubscribeDsl.kt
  • android/src/commonMain/kotlin/pro/respawn/flowmvi/android/SubscribeDsl.kt
  • buildSrc/src/main/kotlin/Config.kt
  • compose/src/commonMain/kotlin/pro/respawn/flowmvi/compose/dsl/ComposeDsl.kt
  • compose/src/commonMain/kotlin/pro/respawn/flowmvi/compose/dsl/LocalSubscriberLifecycle.kt
  • compose/src/commonMain/kotlin/pro/respawn/flowmvi/compose/dsl/SubscribeDsl.kt
  • compose/src/commonMain/kotlin/pro/respawn/flowmvi/compose/preview/EmptyReceiver.kt
  • core/src/androidMain/kotlin/pro/respawn/flowmvi/dsl/AndroidDsl.kt
  • core/src/androidMain/kotlin/pro/respawn/flowmvi/plugins/Deprecated.android.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/api/FlowMVIDSL.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/api/StateReceiver.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/decorator/DecoratorBuilder.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/decorator/DecoratorDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/decorators/BatchIntentsDecorator.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/decorators/ConflateDecorator.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/decorators/DebounceIntentsDecorator.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/decorators/IntentTimeoutDecorator.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/decorators/RetryDecorator.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/ContainerDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/LambdaIntent.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/PipelineDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/PluginDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/StateDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/StoreBuilder.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/StoreConfigurationBuilder.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/StoreDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/StorePluginBuilder.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/SubscribeDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/impl/plugin/ComposePlugins.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/AsyncCachePlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/AwaitSubscribersPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/CachePlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/ChildStorePlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/CompositePlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/ConsumeIntentsPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/DeinitPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/DisallowRestartPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/InitPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/JobManagerPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/LoggingPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/RecoverPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/ReducePlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/TimeTravelPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/UndoRedoPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/WhileSubscribedPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/delegate/StoreDelegatePlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/util/TypeExt.kt
  • core/src/jvmMain/kotlin/pro/respawn/flowmvi/dsl/JvmDsl.kt
  • core/src/nativeMain/kotlin/pro/respawn/flowmvi/plugins/Deprecated.native.kt
  • debugger/debugger-client/src/commonMain/kotlin/pro/respawn/flowmvi/debugger/client/DebuggerPlugin.kt
  • debugger/debugger-plugin/src/commonMain/kotlin/pro/respawn/flowmvi/debugger/plugin/DebuggerPlugin.kt
  • debugger/ideplugin/src/main/resources/LiveTemplates.xml
  • debugger/server/src/commonMain/kotlin/pro/respawn/flowmvi/debugger/server/DebugServerStore.kt
  • debugger/server/src/commonMain/kotlin/pro/respawn/flowmvi/debugger/server/di/InjectDsl.kt
  • debugger/server/src/commonMain/kotlin/pro/respawn/flowmvi/debugger/server/ui/screens/storemetrics/StoreMetricsPage.kt
  • essenty/essenty-compose/src/commonMain/kotlin/pro/respawn/flowmvi/essenty/compose/ContainerDsl.kt
  • essenty/essenty-compose/src/commonMain/kotlin/pro/respawn/flowmvi/essenty/compose/SubscribeDsl.kt
  • essenty/src/commonMain/kotlin/pro/respawn/flowmvi/essenty/dsl/RetainedContainerFactory.kt
  • essenty/src/commonMain/kotlin/pro/respawn/flowmvi/essenty/dsl/RetainedStoreBuilder.kt
  • essenty/src/commonMain/kotlin/pro/respawn/flowmvi/essenty/dsl/RetainedStoreFactory.kt
  • essenty/src/commonMain/kotlin/pro/respawn/flowmvi/essenty/plugins/KeepStatePlugin.kt
  • gradle.properties
  • metrics/src/commonMain/kotlin/pro/respawn/flowmvi/metrics/MetricsCollector.kt
  • metrics/src/commonMain/kotlin/pro/respawn/flowmvi/metrics/dsl/MetricsDecorator.kt
  • metrics/src/commonMain/kotlin/pro/respawn/flowmvi/metrics/dsl/MetricsReporterPlugin.kt
  • metrics/src/jvmTest/kotlin/pro/respawn/flowmvi/metrics/StateMetricsCollectorTest.kt
  • sample/src/commonMain/kotlin/pro/respawn/flowmvi/sample/arch/di/InjectDsl.kt
  • savedstate/src/androidMain/kotlin/pro/respawn/flowmvi/savedstate/plugins/ParcelizeStatePlugin.kt
  • savedstate/src/commonMain/kotlin/pro/respawn/flowmvi/savedstate/dsl/TypedSaver.kt
  • savedstate/src/commonMain/kotlin/pro/respawn/flowmvi/savedstate/plugins/SavedStatePlugin.kt
  • savedstate/src/commonMain/kotlin/pro/respawn/flowmvi/savedstate/plugins/SerializeStatePlugin.kt
  • test/src/commonMain/kotlin/pro/respawn/flowmvi/test/plugin/PluginTestDsl.kt
💤 Files with no reviewable changes (46)
  • .idea/junie.xml
  • .gitattributes
  • .github/workflows/junie.yml
  • test/src/commonMain/kotlin/pro/respawn/flowmvi/test/plugin/PluginTestDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/api/StateReceiver.kt
  • essenty/essenty-compose/src/commonMain/kotlin/pro/respawn/flowmvi/essenty/compose/ContainerDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/delegate/StoreDelegatePlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/ConsumeIntentsPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/CompositePlugin.kt
  • essenty/src/commonMain/kotlin/pro/respawn/flowmvi/essenty/plugins/KeepStatePlugin.kt
  • essenty/essenty-compose/src/commonMain/kotlin/pro/respawn/flowmvi/essenty/compose/SubscribeDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/AsyncCachePlugin.kt
  • sample/src/commonMain/kotlin/pro/respawn/flowmvi/sample/arch/di/InjectDsl.kt
  • debugger/debugger-plugin/src/commonMain/kotlin/pro/respawn/flowmvi/debugger/plugin/DebuggerPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/decorators/IntentTimeoutDecorator.kt
  • savedstate/src/commonMain/kotlin/pro/respawn/flowmvi/savedstate/plugins/SerializeStatePlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/decorators/ConflateDecorator.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/ChildStorePlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/decorators/BatchIntentsDecorator.kt
  • core/src/androidMain/kotlin/pro/respawn/flowmvi/plugins/Deprecated.android.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/decorators/RetryDecorator.kt
  • debugger/server/src/commonMain/kotlin/pro/respawn/flowmvi/debugger/server/di/InjectDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/AwaitSubscribersPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/DeinitPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/PipelineDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/LoggingPlugin.kt
  • buildSrc/src/main/kotlin/Config.kt
  • compose/src/commonMain/kotlin/pro/respawn/flowmvi/compose/dsl/SubscribeDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/decorators/DebounceIntentsDecorator.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/decorator/DecoratorBuilder.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/decorator/DecoratorDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/UndoRedoPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/StorePluginBuilder.kt
  • android/src/commonMain/kotlin/pro/respawn/flowmvi/android/SubscribeDsl.kt
  • compose/src/commonMain/kotlin/pro/respawn/flowmvi/compose/dsl/ComposeDsl.kt
  • core/src/nativeMain/kotlin/pro/respawn/flowmvi/plugins/Deprecated.native.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/JobManagerPlugin.kt
  • android/src/androidMain/kotlin/pro/respawn/flowmvi/android/view/SubscribeDsl.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/TimeTravelPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/StoreConfigurationBuilder.kt
  • metrics/src/commonMain/kotlin/pro/respawn/flowmvi/metrics/dsl/MetricsDecorator.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/plugins/DisallowRestartPlugin.kt
  • metrics/src/commonMain/kotlin/pro/respawn/flowmvi/metrics/dsl/MetricsReporterPlugin.kt
  • debugger/debugger-client/src/commonMain/kotlin/pro/respawn/flowmvi/debugger/client/DebuggerPlugin.kt
  • core/src/commonMain/kotlin/pro/respawn/flowmvi/dsl/StoreBuilder.kt
  • savedstate/src/commonMain/kotlin/pro/respawn/flowmvi/savedstate/plugins/SavedStatePlugin.kt

Comment thread .devcontainer/devcontainer.json Outdated
coderabbitai[bot]
coderabbitai Bot previously approved these changes May 23, 2026
@Nek-12
Nek-12 merged commit d6160da into master May 24, 2026
3 checks passed
@Nek-12
Nek-12 deleted the chore/assemble-article-cleanup branch May 24, 2026 11:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant