Skip to content

Release v4.0.0 (3/4): Android, iOS and web shells - #72

Merged
nixrajput merged 10 commits into
feat/v4-toolingfrom
feat/v4-example
Sep 29, 2026
Merged

nixrajput merged 10 commits into
feat/v4-toolingfrom
feat/v4-example

Conversation

@nixrajput

@nixrajput nixrajput commented Sep 28, 2026 •

Copy link
Copy Markdown
Owner

Stacked PR 3 of 4. Targets feat/v4-tooling (#71), so this diff shows only the example's Android, iOS and web shells. As part of the stack, master's CI runs here too.
Merging: this is GitHub stack #74; merge it from its top PR, #73, never a lower layer alone.

Summary

The example's Android, iOS and web platforms, regenerated with flutter create --org com.nixrajput on Flutter 3.47.5, replacing the 3.x shells.

  • Icons: app icons from assets/logo.svg, rendered at 1024 px through flutter_launcher_icons (a full-bleed square for iOS and legacy Android, an adaptive foreground inside Android's 66/108 safe zone).
  • iOS: restores ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES, which flutter_launcher_icons overwrites with AppIcon.
  • Web: the SVG logo as favicon, PNG fallbacks and PWA icons, and the title, description and colours in index.html and manifest.json. The Pages demo deploys from web.yml after merge.

Type of change

  • Bug fix
  • New feature
  • Refactor / code cleanup
  • Documentation
  • CI / tooling
  • Dependency update

Related issues

Part of the 4.0.0 release in #70.

How to test

  1. cd example && flutter build apk --debug, flutter build ios --debug --no-codesign, flutter build web and flutter build web --wasm.
  2. flutter run -d chrome.

Verification checklist

Run locally on this branch, in a clean worktree, with this branch's CI steps:

  • dart format --output=none --set-exit-if-changed . - clean
  • flutter analyze - 0 issues
  • flutter test - all tests pass (202)
  • (cd example && flutter test) - layout tests pass (14)
  • Android, iOS, web and Wasm debug builds succeed (on the finished tree)
  • No com.example left in any platform file
  • No unrelated changes included in this PR

🤖 Generated with Claude Code

- Android, iOS and web recreated under com.nixrajput on Flutter
  3.47.5, with app icons, favicon and manifest from the logo.
- Restore the Boolean asset-symbol setting flutter_launcher_icons
  overwrites in the iOS project.
@nixrajput nixrajput self-assigned this Sep 28, 2026
@coderabbitai

coderabbitai Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 59 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Repository: nixrajput/flutter_carousel_widget/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: a545ffa9-caa0-41f6-b474-d53970440a4c

📥 Commits

Reviewing files that changed from the base of the PR and between 15ddb03 and da94f08.

⛔ Files ignored due to path filters (43)
  • example/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png is excluded by !**/*.png, !example/**/*.png
  • example/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png is excluded by !**/*.png, !example/**/*.png
  • example/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png is excluded by !**/*.png, !example/**/*.png
  • example/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png is excluded by !**/*.png, !example/**/*.png
  • example/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png is excluded by !**/*.png, !example/**/*.png
  • example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png is excluded by !**/*.png, !example/**/*.png
  • example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png is excluded by !**/*.png, !example/**/*.png
  • example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png is excluded by !**/*.png, !example/**/*.png
  • example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png is excluded by !**/*.png, !example/**/*.png
  • example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png is excluded by !**/*.png, !example/**/*.png
  • example/assets/icon/icon.png is excluded by !**/*.png, !example/**/*.png
  • example/assets/icon/icon_foreground.png is excluded by !**/*.png, !example/**/*.png
  • example/assets/icon/icon_macos.png is excluded by !**/*.png, !example/**/*.png
  • example/assets/icon/icon_rounded.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata is excluded by !**/*.xcworkspace/contents.xcworkspacedata
  • example/ios/Runner.xcworkspace/contents.xcworkspacedata is excluded by !**/*.xcworkspace/contents.xcworkspacedata
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png is excluded by !**/*.png, !example/**/*.png
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png is excluded by !**/*.png, !example/**/*.png
  • example/web/favicon.png is excluded by !**/*.png, !example/**/*.png
  • example/web/favicon.svg is excluded by !**/*.svg
  • example/web/icons/Icon-192.png is excluded by !**/*.png, !example/**/*.png
  • example/web/icons/Icon-512.png is excluded by !**/*.png, !example/**/*.png
  • example/web/icons/Icon-maskable-192.png is excluded by !**/*.png, !example/**/*.png
  • example/web/icons/Icon-maskable-512.png is excluded by !**/*.png, !example/**/*.png
📒 Files selected for processing (43)
  • example/android/.gitignore
  • example/android/app/build.gradle
  • example/android/app/build.gradle.kts
  • example/android/app/src/debug/AndroidManifest.xml
  • example/android/app/src/main/AndroidManifest.xml
  • example/android/app/src/main/kotlin/com/example/example/MainActivity.kt
  • example/android/app/src/main/kotlin/com/nixrajput/flutter_carousel_widget_example/MainActivity.kt
  • example/android/app/src/main/res/drawable-v21/launch_background.xml
  • example/android/app/src/main/res/drawable/launch_background.xml
  • example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
  • example/android/app/src/main/res/values-night/styles.xml
  • example/android/app/src/main/res/values/colors.xml
  • example/android/app/src/main/res/values/styles.xml
  • example/android/app/src/profile/AndroidManifest.xml
  • example/android/build.gradle
  • example/android/build.gradle.kts
  • example/android/gradle.properties
  • example/android/gradle/wrapper/gradle-wrapper.properties
  • example/android/settings.gradle
  • example/android/settings.gradle.kts
  • example/flutter_launcher_icons.yaml
  • example/ios/.gitignore
  • example/ios/Flutter/AppFrameworkInfo.plist
  • example/ios/Flutter/Debug.xcconfig
  • example/ios/Flutter/Release.xcconfig
  • example/ios/Runner.xcodeproj/project.pbxproj
  • example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  • example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  • example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
  • example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  • example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  • example/ios/Runner/AppDelegate.swift
  • example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
  • example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
  • example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
  • example/ios/Runner/Base.lproj/LaunchScreen.storyboard
  • example/ios/Runner/Base.lproj/Main.storyboard
  • example/ios/Runner/Info.plist
  • example/ios/Runner/Runner-Bridging-Header.h
  • example/ios/Runner/SceneDelegate.swift
  • example/ios/RunnerTests/RunnerTests.swift
  • example/web/index.html
  • example/web/manifest.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@nixrajput

Copy link
Copy Markdown
Owner Author

CodeRabbit's PR review limit refused the auto reviews on this layer, so it was reviewed with the CodeRabbit CLI instead (coderabbit review --agent --committed --base-commit 4bde7c3, the tip of #71, so the diff is this layer's own files at 5c3ff65).

Result: 1 finding, declined.

  • Critical, example/android/app/build.gradle.kts lines 41-43: apply org.jetbrains.kotlin.android in this module before the kotlin { compilerOptions } block. Not reproduced. This file, settings.gradle.kts and gradle.properties are byte-identical to what flutter create --platforms android generates on Flutter 3.47.5, the version CI uses. The example (android) job on Release v4.0.0 (4/4): desktop shells and all-platform CI #73 builds the APK from them (✓ Built build/app/outputs/flutter-apk/app-debug.apk, job 108876052694). Adding the plugin would make the app diverge from the Flutter template it is kept in step with, to fix a build that already works.

@nixrajput
nixrajput merged commit 8159cee into master Sep 29, 2026
6 checks passed
@nixrajput
nixrajput deleted the feat/v4-example branch September 29, 2026 16:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant