Skip to content

Phase 1 foundations - #2939

Closed
ShashiDao wants to merge 73 commits into
Acode-Foundation:mainfrom
ShashiDao:phase-1-foundations
Closed

ShashiDao wants to merge 73 commits into
Acode-Foundation:mainfrom
ShashiDao:phase-1-foundations

Conversation

@ShashiDao

Copy link
Copy Markdown

No description provided.

docs: sub-phase the roadmap, easy to tough
ShashiDao and others added 22 commits September 25, 2026 14:04
…affold (workflow-scope blocked, see staged file header)
This workflow scaffolds the Android platform by checking out the repository, setting up dependencies, generating the Android platform, and applying necessary overrides and configurations. It also commits changes and opens a pull request for review.
Updated the intent-filter format for better readability and maintainability in the AndroidManifest.xml.
…its the acronym+plural into "PN"+"Gs" and flags "PN" as a misspelling of "ON", failing CI spell-check
Verified locally: config.js -> rspack -> `npx cap sync android` all run
clean against the merged android/ scaffold (20 Cordova plugins bridged
automatically, boot.js lands in assets/public). Only `cordova build`
itself was still wired to the removed Cordova platform model.

fdroid proot/iap `cordova plugin add/remove` calls left as-is for now —
they're currently no-ops under Capacitor (it reads plugins from
package.json/node_modules, not the `plugins/` cache dir cordova CLI
still writes to). Flagging as a follow-up, not fixing here.
chore: verify android-build CI (throwaway)
Added CI badge to README for build status visibility.
* Fix permission issue for gradlew in CI workflow

* fix(android): resolve FileProvider manifest merge conflict with ported Cordova plugin

capacitor-cordova-android-plugins (generated by `cap sync` from the 20
bridged plugins) brings in a second FileProvider declaration under the
old Acode identity (authorities=com.foxdebug.provider,
resource=@xml/file_provider) that collides with Bract's own
(${applicationId}.fileprovider, @xml/file_paths). Manifest merger
can't auto-resolve two different values for the same attribute, so
add the tools:replace overrides Gradle itself suggests in the error
log, keeping Bract's own FileProvider identity (ADR-011) authoritative.
…e Maverick/BouncyCastle classes compile under Capacitor.
@greptile-apps

greptile-apps Bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 2/5

[High risk] Replaces build system and CI infrastructure.

The PR is not ready to merge because the Android build may fail resource linking, and CI does not package the generated web entry point.

Findings

  1. P1 Theme colors are undefined ▶
  2. P1 APK lacks its web entry ▶
  3. P1 Bundle option changes artifact type ▶
  4. P2 Instrumented test expects wrong package ▶

Summary

The PR establishes Bract’s Capacitor Android scaffold, switches CI and build scripts toward Bun and Gradle, and records the migration plan. The Android build still needs defined theme colors and a web-build step in CI; the bundle option also changes artifact type.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A[CI checkout] --> B[Bun install]
  B --> C[Capacitor sync]
  C --> D[Gradle assembleDebug]
  E[Rspack generates boot.js] -. missing CI step .-> C
  D --> F[APK loads index.html]
  F --> G[Requests build/boot.js]
Loading

Reviews (1) · Last reviewed commit: "Complete Phase 0.2 documentation and Bra..."

Comment on lines +7 to +9
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>

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.

P1 Theme colors are undefined

The new theme references colorPrimary, colorPrimaryDark, and colorAccent, but the checked-in Android resources define none of them. If no dependency supplies all three colors, Android resource linking will fail and the Gradle build cannot produce an APK. Define these colors in the app’s resources.

Comment thread .github/workflows/ci.yml
Comment on lines +121 to +123
- name: Sync Capacitor
if: steps.android-check.outputs.exists == 'true'
run: npx cap sync android

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.

P1 APK lacks its web entry

On a clean CI checkout, www/build/boot.js is absent because it is generated by Rspack and ignored by Git. This job syncs www without building it first, so Gradle can produce an APK whose index.html requests a missing script. The app then cannot start. Build the web assets before syncing them.

Comment thread utils/scripts/build.sh
Comment on lines +96 to +100
if [ "$packageType" = "bundle" ]; then
gradleTask="bundle"
else
gradleTask="assemble"
fi

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.

P1 Bundle option changes artifact type

When someone selects bundle, this script now runs an app-bundle task on an Android application module. That produces an AAB instead of the AAR library the option still promises, so callers expecting a library will not receive one. Preserve the AAR build path or rename and document this option as an app bundle.

// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();

assertEquals("com.getcapacitor.app", appContext.getPackageName());

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.

P2 Instrumented test expects wrong package

This test expects com.getcapacitor.app, but the app’s application ID is io.github.shashidao.bract. Running the Android instrumented tests will fail this assertion even when the installed app is correct, making the test unusable until the expectation is updated.

Suggested change
assertEquals("com.getcapacitor.app", appContext.getPackageName());
assertEquals("io.github.shashidao.bract", appContext.getPackageName());

@UnschooledGamer UnschooledGamer left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Rejected, Discuss before opening a Pull Request for such things, Especially when it's AI-Generated PRs wasting the Maintainers time with low quality PRs and the time that can be used for the Community.

This will be your second warning, if the third one happens to be similar to these 2 PRs, You'll be restricted from the Organization.

@ShashiDao

Copy link
Copy Markdown
Author

Oh my god it was actually a mistake i was planned to open pr on my repo branch where I'm forking and due to I'm working inside phone it happened to miss clicked. Sorry mate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants