ADFA-4192 | Remove built-in CV module and add external plugin screen support#1352
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughRelease NotesFeatures
Changes
|
| Layer / File(s) | Summary |
|---|---|
Plugin screen API contract and constants plugin-api/src/main/kotlin/com/itsaky/androidide/plugins/services/IdeServices.kt |
IdeUIService adds openPluginScreen(pluginId, fragmentClassName, title?) and intent/action extra constants. |
Plugin service implementation plugin-manager/src/main/kotlin/com/itsaky/androidide/plugins/manager/services/IdeUIServiceImpl.kt |
Implements openPluginScreen() by constructing an Intent with plugin id/fragment class/title extras and attempting to start the host activity. |
Plugin screen host activity and fragment loading app/src/main/java/com/itsaky/androidide/activities/PluginScreenActivity.kt |
Adds PluginScreenActivity that validates intent extras, resolves plugin class loader, registers PluginFragmentFactory, instantiates the plugin fragment into a FrameLayout container, and unregisters mappings on destroy. |
Manifest and permission registration app/src/main/AndroidManifest.xml |
Adds android.permission.CAMERA and registers non-exported PluginScreenActivity with an intent-filter for com.itsaky.androidide.plugins.OPEN_PLUGIN_SCREEN. |
Menu item dynamic visibility and enablement plugin-api/src/main/kotlin/com/itsaky/androidide/plugins/extensions/UIExtension.kt, app/src/main/java/com/itsaky/androidide/actions/PluginActionItem.kt |
MenuItem gains isEnabledProvider/isVisibleProvider lambdas; PluginActionItem.prepare() uses these providers when present. |
Removal of Built-in CV Module
| Layer / File(s) | Summary |
|---|---|
Build system cleanup app/build.gradle.kts, settings.gradle.kts |
Removes projects.cvImageToXml from app dependencies and drops :cv-image-to-xml from the project include list. |
App DI and action registration cleanup app/src/main/java/com/itsaky/androidide/app/IDEApplication.kt, app/src/main/java/com/itsaky/androidide/utils/EditorActivityActions.kt |
Removes computerVisionModule from Koin startup and unregisters GenerateXMLAction from editor action registration; updates imports accordingly. |
Resource and module deletions app/src/main/res/values/ids.xml, cv-image-to-xml/src/main/... |
Adds plugin_screen_container id; deletes many cv-image-to-xml internals and resources (utilities like XmlContext, ValueCleaner, PlaceholderUtils, and numerous CV module source and resource files) as part of module removal. |
Sequence Diagram
sequenceDiagram
participant Caller
participant IdeUIServiceImpl
participant PluginScreenActivity
participant FragmentFactory
Caller->>IdeUIServiceImpl: openPluginScreen(pluginId, fragmentClassName, title?)
IdeUIServiceImpl->>PluginScreenActivity: startActivity(Intent ACTION_OPEN_PLUGIN_SCREEN + extras)
PluginScreenActivity->>IdeUIServiceImpl: resolve plugin class loader (IDEApplication.getPluginManager())
PluginScreenActivity->>FragmentFactory: register PluginFragmentFactory with plugin class loader
PluginScreenActivity->>FragmentFactory: fragmentClass.instantiate(classLoader)
FragmentFactory->>PluginScreenActivity: Fragment instance
PluginScreenActivity->>PluginScreenActivity: replace fragment in `@id/plugin_screen_container`
Estimated code review effort
🎯 4 (Complex) | ⏱️ ~45 minutes
Possibly related PRs
- appdevforall/CodeOnTheGo#678: Overlaps on adding/removing
cvImageToXmlwiring andGenerateXMLActionflow. - appdevforall/CodeOnTheGo#936: Related to ML Kit OCR metadata and
cv-image-to-xmlmanifest entries removed by this PR. - appdevforall/CodeOnTheGo#1280: Touches
MenuItem/plugin API changes also modified in this PR.
Suggested reviewers
- itsaky-adfa
- dara-abijo-adfa
- avestaadfa
- Daniel-ADFA
"A rabbit hopped in code tonight,
Plugins bloom in fullscreen light.
CV's module took a gentle rest,
New fragment hosts load up the best.
Hooray — the plugin dance feels right!" 🐇✨
🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Docstring Coverage | Docstring coverage is 15.38% which is insufficient. The required threshold is 80.00%. | Write docstrings for the functions missing them to satisfy the coverage threshold. |
✅ Passed checks (4 passed)
| Check name | Status | Explanation |
|---|---|---|
| Title check | ✅ Passed | The title accurately summarizes the main change: removing the built-in CV module and adding external plugin screen support. |
| Description check | ✅ Passed | The description is well-related to the changeset, providing detailed context about removing the cv-image-to-xml module and adding PluginScreenActivity support. |
| Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
| Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
✏️ Tip: You can configure your own custom pre-merge checks in the settings.
✨ Finishing Touches
📝 Generate docstrings
- Create stacked PR
- Commit on current branch
🧪 Generate unit tests (beta)
- Create PR with unit tests
- Commit unit tests in branch
feat/ADFA-4192-plugin-api-cv-support-experimental
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 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 `@app/src/main/AndroidManifest.xml`:
- Line 28: The core AndroidManifest currently declares android.permission.CAMERA
unconditionally; remove that <uses-permission> from
app/src/main/AndroidManifest.xml and instead add the CAMERA permission
declaration to the CV/plugin module's manifest (or the specific feature
manifest) so the permission is only requested when the feature is included; if
the camera is actually required by the core app, add a short justification to
the repo docs and keep the permission in the core manifest. Reference
PluginScreenActivity (and any CV/plugin module entry points) to locate the
appropriate feature manifest to receive the CAMERA permission.
In `@app/src/main/java/com/itsaky/androidide/activities/PluginScreenActivity.kt`:
- Around line 78-90: Wrap the call to
supportFragmentManager.fragmentFactory.instantiate(...) inside a try/catch that
catches Fragment.InstantiationException (and optionally Exception for safety) in
loadPluginFragment; if instantiation fails, log the error (including
fragmentClassName) and call finish() to gracefully close the activity instead of
proceeding, and skip the beginTransaction/.replace/.commit sequence (use
TAG_PLUGIN_SCREEN for logging/context).
- Around line 52-61: bindLayout() is creating a volatile container id with
View.generateViewId() which prevents restored fragments from re-attaching;
change it to inflate or create a FrameLayout with a stable resource id (e.g.,
use R.id.plugin_screen_container or inflate a layout containing that id) instead
of generating a new id, and update any references to containerId. Also harden
loadPluginFragment() by wrapping the call to
PluginFragmentFactory.instantiate(...) in a try/catch to handle and log
instantiation failures (class not found/classloader issues) and provide a safe
fallback (show an error UI, skip loading, or finish the activity) rather than
allowing the exception to crash the app.
🪄 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: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: faf534d1-832c-4f70-94ec-0d72915076b1
📒 Files selected for processing (100)
app/build.gradle.ktsapp/src/main/AndroidManifest.xmlapp/src/main/java/com/itsaky/androidide/actions/PluginActionItem.ktapp/src/main/java/com/itsaky/androidide/actions/etc/GenerateXMLAction.ktapp/src/main/java/com/itsaky/androidide/activities/PluginScreenActivity.ktapp/src/main/java/com/itsaky/androidide/app/IDEApplication.ktapp/src/main/java/com/itsaky/androidide/utils/EditorActivityActions.ktcv-image-to-xml/build.gradle.ktscv-image-to-xml/src/androidTest/java/com/example/images/ExampleInstrumentedTest.ktcv-image-to-xml/src/main/AndroidManifest.xmlcv-image-to-xml/src/main/assets/best_float32.tflitecv-image-to-xml/src/main/assets/labels.txtcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/DrawableImportHelper.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/VisionRepository.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/VisionRepositoryImpl.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/source/OcrSource.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/source/YoloModelSource.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/di/ComputerVisionModule.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/DetectionMerger.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/DetectionScaler.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/GenericBoxResolver.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/LayoutTreeBuilder.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/MarginAnnotationParser.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/RegionOcrProcessor.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/TextAssociator.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/WidgetAnnotationMatcher.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/WidgetTagParser.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/YoloToXmlConverter.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/grammar/AttributeValidator.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/grammar/UiGrammarValidator.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/grammar/WidgetGrammar.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/model/DetectionResult.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/model/LayoutItem.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/model/ScaledBox.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/AttributeModels.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/FuzzyAttributeParser.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/ValueCleaner.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/ValueCleanersImpl.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/sanitizer/CompositeOcrSanitizer.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/sanitizer/OcrSanitizer.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/sanitizer/OcrSanitizerFactory.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/sanitizer/OcrSanitizerRules.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/GenerateXmlUC.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/ImportPlaceholderImageUC.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/PrepareImageUC.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/RemovePlaceholderImageUC.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/RunVisionUC.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/AndroidConstants.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/AndroidWidget.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/AndroidXmlGenerator.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/LayoutRenderer.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/WidgetFactory.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/XmlContext.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/ComputerVisionActivity.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/ComputerVisionEvent.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/ComputerVisionUiState.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/GuidelinesView.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/ZoomableImageView.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/viewmodel/ComputerVisionViewModel.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/BitmapUtils.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/CvAnalyticsUtils.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/DetectionVisualizer.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/MetadataDetector.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/OcrExtensions.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/OcrTextAssembler.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/PlaceholderUtils.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/SmartBoundaryDetector.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/TextCleaner.ktcv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/XmlFileManager.ktcv-image-to-xml/src/main/res/drawable/ic_launcher_background.xmlcv-image-to-xml/src/main/res/drawable/ic_placeholder_delete.xmlcv-image-to-xml/src/main/res/drawable/ic_placeholder_upload.xmlcv-image-to-xml/src/main/res/layout/activity_computer_vision.xmlcv-image-to-xml/src/main/res/layout/testing_result.xmlcv-image-to-xml/src/main/res/mipmap-anydpi-v26/ic_launcher.xmlcv-image-to-xml/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xmlcv-image-to-xml/src/main/res/mipmap-hdpi/ic_launcher.webpcv-image-to-xml/src/main/res/mipmap-hdpi/ic_launcher_round.webpcv-image-to-xml/src/main/res/mipmap-mdpi/ic_launcher.webpcv-image-to-xml/src/main/res/mipmap-mdpi/ic_launcher_round.webpcv-image-to-xml/src/main/res/mipmap-xhdpi/ic_launcher.webpcv-image-to-xml/src/main/res/mipmap-xhdpi/ic_launcher_round.webpcv-image-to-xml/src/main/res/mipmap-xxhdpi/ic_launcher.webpcv-image-to-xml/src/main/res/mipmap-xxhdpi/ic_launcher_round.webpcv-image-to-xml/src/main/res/mipmap-xxxhdpi/ic_launcher.webpcv-image-to-xml/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webpcv-image-to-xml/src/main/res/values-night/themes.xmlcv-image-to-xml/src/main/res/values/colors.xmlcv-image-to-xml/src/main/res/values/strings.xmlcv-image-to-xml/src/main/res/values/themes.xmlcv-image-to-xml/src/main/res/xml/backup_rules.xmlcv-image-to-xml/src/main/res/xml/data_extraction_rules.xmlcv-image-to-xml/src/test/java/com/example/images/ExampleUnitTest.ktcv-image-to-xml/src/test/java/org/appdevforall/codeonthego/computervision/domain/FuzzyAttributeParserTest.ktcv-image-to-xml/src/test/java/org/appdevforall/codeonthego/computervision/domain/parser/sanitizer/OcrSanitizerRulesTest.ktcv-image-to-xml/src/test/java/org/appdevforall/codeonthego/computervision/domain/xml/LayoutRendererTest.ktplugin-api/src/main/kotlin/com/itsaky/androidide/plugins/extensions/UIExtension.ktplugin-api/src/main/kotlin/com/itsaky/androidide/plugins/services/IdeServices.ktplugin-manager/src/main/kotlin/com/itsaky/androidide/plugins/manager/services/IdeUIServiceImpl.ktsettings.gradle.kts
💤 Files with no reviewable changes (82)
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/model/ScaledBox.kt
- cv-image-to-xml/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
- cv-image-to-xml/src/main/res/drawable/ic_launcher_background.xml
- cv-image-to-xml/src/main/res/xml/backup_rules.xml
- cv-image-to-xml/src/main/res/drawable/ic_placeholder_upload.xml
- cv-image-to-xml/src/androidTest/java/com/example/images/ExampleInstrumentedTest.kt
- cv-image-to-xml/src/main/res/layout/testing_result.xml
- cv-image-to-xml/src/main/res/values/strings.xml
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/ImportPlaceholderImageUC.kt
- cv-image-to-xml/src/main/res/xml/data_extraction_rules.xml
- cv-image-to-xml/src/main/res/values/themes.xml
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/DetectionMerger.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/TextCleaner.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/YoloToXmlConverter.kt
- cv-image-to-xml/src/main/AndroidManifest.xml
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/ComputerVisionEvent.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/ValueCleaner.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/ComputerVisionActivity.kt
- cv-image-to-xml/src/main/assets/labels.txt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/source/OcrSource.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/VisionRepositoryImpl.kt
- cv-image-to-xml/src/test/java/com/example/images/ExampleUnitTest.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/sanitizer/OcrSanitizerFactory.kt
- cv-image-to-xml/src/test/java/org/appdevforall/codeonthego/computervision/domain/xml/LayoutRendererTest.kt
- cv-image-to-xml/src/test/java/org/appdevforall/codeonthego/computervision/domain/FuzzyAttributeParserTest.kt
- cv-image-to-xml/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/MarginAnnotationParser.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/CvAnalyticsUtils.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/LayoutRenderer.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/VisionRepository.kt
- cv-image-to-xml/src/main/res/layout/activity_computer_vision.xml
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/LayoutTreeBuilder.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/PrepareImageUC.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/PlaceholderUtils.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/grammar/UiGrammarValidator.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/BitmapUtils.kt
- cv-image-to-xml/src/main/res/drawable/ic_placeholder_delete.xml
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/AttributeModels.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/GenericBoxResolver.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/DetectionScaler.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/grammar/AttributeValidator.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/AndroidConstants.kt
- app/src/main/java/com/itsaky/androidide/actions/etc/GenerateXMLAction.kt
- cv-image-to-xml/src/main/res/values-night/themes.xml
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/DrawableImportHelper.kt
- cv-image-to-xml/src/main/res/values/colors.xml
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/GenerateXmlUC.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/WidgetTagParser.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/XmlFileManager.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/RegionOcrProcessor.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/RemovePlaceholderImageUC.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/sanitizer/OcrSanitizerRules.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/ComputerVisionUiState.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/ValueCleanersImpl.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/RunVisionUC.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/SmartBoundaryDetector.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/GuidelinesView.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/sanitizer/CompositeOcrSanitizer.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/model/LayoutItem.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/model/DetectionResult.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/OcrExtensions.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/WidgetFactory.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/OcrTextAssembler.kt
- settings.gradle.kts
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/TextAssociator.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/viewmodel/ComputerVisionViewModel.kt
- cv-image-to-xml/src/test/java/org/appdevforall/codeonthego/computervision/domain/parser/sanitizer/OcrSanitizerRulesTest.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/XmlContext.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/DetectionVisualizer.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/utils/MetadataDetector.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/di/ComputerVisionModule.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/ZoomableImageView.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/grammar/WidgetGrammar.kt
- cv-image-to-xml/build.gradle.kts
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/FuzzyAttributeParser.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/source/YoloModelSource.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/AndroidXmlGenerator.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/sanitizer/OcrSanitizer.kt
- app/build.gradle.kts
- app/src/main/java/com/itsaky/androidide/utils/EditorActivityActions.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/AndroidWidget.kt
- cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/WidgetAnnotationMatcher.kt
bbe9040 to
ef13604
Compare
Description
This PR decouples the computer vision feature from the core application by completely removing the hardcoded
cv-image-to-xmlmodule. To support this and future features as standalone plugins, it introduces a genericPluginScreenActivityand extendsIdeUIService. This allows the IDE to host full-screen, plugin-owned fragments dynamically.Details
cv-image-to-xmlmodule and removed its dependencies fromsettings.gradle.ktsandapp/build.gradle.kts.GenerateXMLAction.PluginScreenActivityto handle dynamic instantiation of plugin fragments viaPluginFragmentFactory.openPluginScreeninIdeServicesand implemented it inIdeUIServiceImpl.PluginActionItemto supportisEnabledProviderandisVisibleProviderfor dynamic UI states.CAMERApermission to the baseAndroidManifest.xmlto support the upcoming external CV plugin.Screen.Recording.2026-05-29.at.3.18.53.PM.mov
Ticket
ADFA-4192
Observation
The CV image-to-XML functionality will be temporarily unavailable in the core app until the new standalone plugin is compiled and installed. Testing should focus on verifying that plugin screens can be launched successfully via the new
openPluginScreenAPI method.