Skip to content

Commit 65e9d80

Browse files
authored
4.0.6 Feat: The Android update: working builds, smarter dependencies, and a build system that finally stays out of your way.
# Xed-Editor PRO — Release Notes ## Version 4.0.6 (versionCode 105) This release consolidates the complete evolution of the background build system, Android project support, dependency management, and editor UX into a single cohesive update. --- ## Background Build System ### Builds now run in the background Previously, tapping Run launched the full terminal screen. Builds now run headlessly inside the sandbox; the editor stays in front with the floating build view as the primary interface. - `RunService` — a foreground service that executes the project via headless sandbox, streams stdout and stderr live into `RunOutputState`, and posts a progress notification with a Stop action. The build continues running if you leave the app. - `ProjectRunner` — when the sandbox is installed, runs via `RunService` (no terminal UI). Only falls back to opening the terminal when the sandbox has not been set up yet, since that flow requires the terminal to download and extract the rootfs. - Single-build rule preserved: `RunOutputState.begin()` is the atomic gate. The Run button turns into a Stop button while a build is active, and the floating view reflects only the Run button's build — never other terminal sessions. ### RunOutputState refactored `RunOutputState` is no longer coupled to a terminal session. It exposes `begin(label)` (atomic gate), `onOutput(fullText)`, `onFinished(exitCode)`, `stop()` (via a pluggable stopper the service injects), `exitCode`, and an `expanded` UI flag. Output is ANSI-stripped so status lines and color sequences render cleanly instead of showing raw escape codes. --- ## Floating Build View The build output panel has been substantially redesigned. - Frosted, translucent glass container with rounded corners and margins normally; docks flush above the IME while the keyboard is open. - All ANSI escape codes stripped from output. - Spring/bounce open animation (dampingRatio 0.85 / StiffnessMedium) — snappier and more consistent opening and closing. - Drag handle at the top with swipe gestures: swipe up to expand, swipe down to collapse. Tapping the bar or chevron still toggles. - Compact monospace output (12sp, 16sp line height, 0 letter spacing) with tight padding so log lines read as a cohesive block rather than widely spaced entries. - Horizontal scrolling in the expanded view: each log line stays on one line with no soft wrapping. - Collapsed bar latest line slides up as new output arrives (stream-style), replacing the previous plain cross-fade. - **Auto-scroll toggle** in the output footer: auto-scrolls to the newest line by default; a toggle button turns it on or off and stays highlighted when active. - Status glyph reflects success or failure (green/red) once the build finishes. Stop while running; Dismiss once finished; Copy copies the full output. - The editor background blur introduced in an earlier pass has been removed — it imposed a scroll performance cost with no meaningful runtime benefit. - Animation retuned to a smooth, symmetrically bouncy feel (dampingRatio 0.82 / StiffnessMediumLow): consistent speed opening and closing, no more laggy minimise. --- ## Run Button Behavior - **Project-aware execution:** when no file is open (or on a non-editor tab), the toolbar shows Run/Stop driven by the project selected in the drawer. The Run button reflects the directory/project you are working in, even with nothing open. - **With a file open:** the editor's own Run button handles execution as before — no duplicate buttons. - Run/Stop, the single-build gate, and background execution are preserved across all flows. --- ## Android Project Support Android projects are now fully buildable end to end. The flow mirrors Android Studio's behaviour: 1. Create or open an Android project. 2. Open the Dependencies dialog and install the Android SDK, NDK (pick a version or Latest), CMake, and a JDK. 3. Tap **Sync** (beside Run) and wait for `BUILD SUCCESSFUL`. 4. Tap **Run** — builds `assembleDebug` and triggers the system install prompt. ### Critical template fix The Android template previously emitted `includeGroupByRegex("com\.android.*")` in `settings.gradle.kts`. The `\.` sequence is an illegal escape in Kotlin DSL, causing a Gradle failure on every first build. Fixed to `com\\.android.*` / `com\\.google.*` (valid escaped dots), matching Android Studio output. The rest of the template was audited; no other illegal Kotlin escapes were found. (`gradle-wrapper.properties` uses `https\://`, which is correct for a `.properties` file.) ### Minimal template The Android (Compose) template now generates a single `MainActivity.kt` file, self-contained and using `MaterialTheme` directly. The `ui/theme/{Color,Theme,Type}.kt` package and the example unit/instrumented test files have been removed. A new empty project has exactly one `.kt` file. ### Sync-before-Run gate Android projects must complete a successful Gradle Sync once per session before Run will proceed. Pressing Run first shows a clear, detailed warning to Sync first (and to install the SDK/NDK from the Dependencies dialog if Sync fails). A successful Sync or build marks the project as synced for the session and unblocks Run. ### Gradle Sync button A dedicated **Sync** command is shown beside Run for Android projects. Runs `./gradlew --refresh-dependencies tasks` in the background (the equivalent of Android Studio's sync step). Also shown in the global toolbar when no file is open, for the currently selected Android project. ### APK installation After a successful Android build, `RunService` locates the newest debug APK under the project and launches the system installer via the app's `FileProvider` (copying the APK into the external files directory, which `file_paths` covers). `REQUEST_INSTALL_PACKAGES` is declared in the manifest. You confirm the install — the editor handles everything up to that prompt. --- ## Bug Fixes ### Fix: Run/Sync failed with "utils: No such file or directory" **Root cause:** the background run path (`RunService` via `ubuntuProcess`) bypasses `MkSession`, which is what normally installs the terminal helper scripts. The `project_runner` script sourced `$LOCAL/bin/utils` (which provides `info`/`warn`/`error`/`command_exists`) but that file was never written — every helper call failed with "command not found", breaking all builds. **Fix:** `ProjectRunner.run()` and `sync()` now call `setupTerminalFiles()` (idempotent) before launching, ensuring `utils` and the other helper scripts are present before execution begins. ### Fix: build output not shown when no file is open The floating build view was nested inside the "files open" branch, so running from the no-file toolbar button produced no visible output. The content is now wrapped in a `Box` and the build view is an always-on overlay, shown whenever a build is active regardless of whether any file is open. --- ## Dependencies Dialog The Dependencies dialog has been significantly expanded for Android development. - **Android SDK:** installs `cmdline-tools`, `platform-tools`, `platforms android-35` and `android-34`, and `build-tools 35` and `34`. Also resolves and installs the latest available platform and build-tools live from `sdkmanager` at install time, so the installation does not go stale. - **Android NDK:** new entry with a version dropdown. Includes a **Latest** option (default) that resolves the newest NDK at install time, plus pinned versions (27 / 26 / 25 / 23) if a specific version is required. - **CMake:** new entry for native builds, resolving the latest available version as well as a pinned baseline (`cmake;3.22.1`). - **Real-time output:** installs now stream output line-by-line into the dialog via `ubuntuProcess` instead of buffering the full result. Displays a per-item Installed / Failed status and an overall progress bar. --- ## Editor UX ### Create Project dialog For templates with a package field (Android, Minecraft), the dialog now shows a live **Application ID** preview of the resolved package name. A warning is shown when both the package and author fields are empty, so the user understands the ID is being auto-generated from the project name (e.g. `com.example.app`). ### Settings in the drawer A Settings item now sits in the drawer's navigation rail alongside Directory and Git, opening `SettingsActivity` directly. No longer buried in the editor's overflow menu. ### Extra keys toggle The bottom `< ^ >` extra-keys bar now defaults to **off**. A new **Extra keys** toggle command is available in the editor toolbar overflow (3-dot) menu, highlighted when active. Existing users receive the toggle via a one-time toolbar migration; new installs start with it off. ### Open-directory warning Before the system folder picker, a caution dialog explains that Android 11+ manually-opened directories can encounter terminal permission errors and that such issues are not supported. The OK button is locked for 30 seconds with a live countdown. Includes a Cancel button and a **Never show this again** toggle (`Settings.open_dir_warning_dismissed`). --- ## Auto Setup The sandbox consent and setup flow has been upgraded to full-screen. - **Consent screen:** full-screen dialog with a large title, message, live storage/data/time estimate, and Agree / Not now actions. Replaces the previous small dialog. - **Progress screen:** now opaque and full-screen; the terminal runs silently behind it while live progress is displayed in front. - **Full toolchain:** the setup script now installs and verifies each of: `apt update/upgrade`, `curl` / `git` / `wget` / `tar` / `unzip` / `zip` / `nano`, `build-essential` + `pkg-config`, `python3` + `pip` + `venv`, `Node.js` + `npm`, and `OpenJDK 17`. Errors still route to a prefilled GitHub issue. --- ## Dependency Downloader — Notes The in-app dependency downloader installs tools **globally** inside the single shared Ubuntu sandbox (`apt-get install`), so `python3`, `node`, JDK, `cargo`, `go`, and the Android SDK are available to every project once installed. The dialog filters the shown catalog by the currently open project's detected type. Genuinely per-project pieces (`requirements.txt`, `node_modules`) are handled by the run script inside each project's folder. --- ## Version | Field | Previous | Current | |---|---|---| | `versionName` | 4.0.5 | **4.0.6** | | `versionCode` | 104 | **105** |
2 parents 20dbd83 + b40e87f commit 65e9d80

68 files changed

Lines changed: 10558 additions & 2876 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/android.yml‎

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,40 +38,37 @@ jobs:
3838
restore-keys: |
3939
${{ runner.os }}-gradle-
4040
41-
- name: Decode and create secrets
42-
run: |
43-
echo "${{ secrets.KEYSTORE }}" | base64 -d > /tmp/xed.keystore
44-
echo "${{ secrets.PROP }}" | base64 -d > /tmp/signing.properties
45-
4641
- name: Grant execute permission for gradlew
4742
run: chmod +x gradlew
4843

4944
- name: Set Commit Hash
5045
id: commit_hash
5146
run: echo "COMMIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
5247

48+
- name: Set Commit Message
49+
run: |
50+
{
51+
echo "COMMIT_MSG<<XEDEOF"
52+
git log -1 --pretty=%B
53+
echo "XEDEOF"
54+
} >> "$GITHUB_ENV"
55+
5356
- name: Clone submodules
5457
run: git submodule update --init --recursive
5558

5659
- name: Accept Android SDK licenses
5760
run: yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses || true
5861

5962
- name: Build with Gradle
60-
run: ./gradlew assembleRelease --no-daemon && mv app/build/outputs/apk/release/*.apk app/xed-editor-${{ env.COMMIT_HASH }}.apk
61-
env:
62-
KEYSTORE_FILE: /tmp/xed.keystore
63-
SIGNING_PROPERTIES_FILE: /tmp/signing.properties
63+
run: ./gradlew assembleDebug --no-daemon && mv app/build/outputs/apk/debug/*.apk app/xed-editor-${{ env.COMMIT_HASH }}.apk
6464
continue-on-error: false
6565

6666
- name: Archive APK
6767
uses: actions/upload-artifact@v7
6868
with:
69-
name: Xed-Editor-Release
69+
name: Xed-Editor-Debug
7070
path: app/xed-editor-${{ env.COMMIT_HASH }}.apk
7171

72-
- name: Delete secrets
73-
run: rm /tmp/xed.keystore /tmp/signing.properties
74-
7572
- name: Send APK to Telegram
7673
if: ${{ success() && github.event.head_commit.message != '' }}
7774
env:
@@ -83,11 +80,25 @@ jobs:
8380
-F document=@"app/xed-editor-${{ env.COMMIT_HASH }}.apk" \
8481
--form-string "caption=$COMMIT_MSG"
8582
83+
- name: Publish Debug APK Release
84+
if: ${{ github.event_name == 'workflow_dispatch' }}
85+
uses: ncipollo/release-action@v1
86+
with:
87+
artifacts: "app/xed-editor-${{ env.COMMIT_HASH }}.apk"
88+
tag: "debug-latest"
89+
allowUpdates: true
90+
replacesArtifacts: true
91+
makeLatest: true
92+
name: "Latest Debug Build"
93+
body: ${{ env.COMMIT_MSG }}
94+
token: ${{ secrets.GITHUB_TOKEN }}
95+
8696
- name: Generate Plugin Sdk
8797
run: |
8898
bash plugin-sdk/build-auto.sh
8999
90100
- name: Update Release
101+
if: ${{ github.event_name == 'workflow_dispatch' }}
91102
uses: ncipollo/release-action@v1
92103
with:
93104
artifacts: "plugin-sdk/output/sdk.jar"

‎Changelogs.txt‎

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
# Changelogs
2+
3+
Direct record of changes made in this session.
4+
5+
## 1. Project-aware Run button
6+
7+
Replaced the single-file "run" behavior with project-level detection and execution.
8+
9+
- `core/main/src/main/java/com/rk/runner/ProjectRunner.kt` (new)
10+
- Detects project type via `ProjectTypeDetector` (cached ~4s).
11+
- `isRunnable`: true for PYTHON, NODE, WEB, FABRIC_MOD, FORGE_MOD, GRADLE, RUST, GO; false for ANDROID and UNKNOWN (button hidden).
12+
- WEB → opens existing in-app `HtmlRunner` preview.
13+
- All other runnable types → launches the terminal with `project_runner.sh`, working directory = project root.
14+
- `toSandboxPath()`: maps `/storage/emulated/0/...` and `/storage/self/primary/...` to `/sdcard/...` (the path the proot sandbox binds reliably). Applied to working dir and file args.
15+
- `resolveProjectRootPath()`: uses `EditorTab.projectRoot` (the project root the file was opened from); falls back to the file's parent. Returns null for non-filesystem (SAF/network) files.
16+
- `core/main/src/main/java/com/rk/commands/editor/RunCommand.kt` (rewritten)
17+
- `isSupported()` → `ProjectRunner.canRun(projectRoot)` (hides for Android/Unknown).
18+
- `action()` → `ProjectRunner.run(...)`. Removed old `RunnerManager`/multi-runner sheet usage.
19+
- `core/main/src/main/assets/terminal/project_runner.sh` (new)
20+
- Args: project type, project dir, entry file.
21+
- `enter_dir()`: `cd` into project dir with a `/sdcard` fallback before failing (fixes "Cannot enter project directory").
22+
- PYTHON: runs open `.py` or `main.py`/`app.py`/`run.py`/`manage.py`; `pip install -r requirements.txt` if present.
23+
- NODE: `npm install` if needed, then `npm start` or `node index.js`.
24+
- FABRIC_MOD/FORGE_MOD/GRADLE: checks JDK, `chmod +x ./gradlew`, runs `./gradlew build` (with `bash ./gradlew build` fallback if exec bit can't be set); errors shown in terminal.
25+
- RUST: `cargo run`. GO: `go run .`.
26+
- Missing tools print a message pointing to the Dependencies dialog. No `set -e`; prints DONE/FAILED banner with exit code.
27+
28+
## 2. Editor cursor follows the on-screen keyboard
29+
30+
- `soraX/editor/src/main/java/io/github/rosemoe/sora/widget/EditorInputConnection.java`
31+
- `setSelection(start, end)` now calls `setSelectionRegion(..., true, CAUSE_IME)` so IME-driven cursor moves (Gboard space-bar swipe / cursor control) scroll the view to keep the caret visible. `ensurePositionVisible` is a no-op when the caret is already on screen, so it only scrolls when off-view. (Previous attempt used `!isComposing()`, which failed because Gboard keeps the word composing during a space-swipe.)
32+
33+
## 3. Project storage moved to terminal home; Documents/XED removed
34+
35+
- `core/main/src/main/java/com/rk/projects/CreateProjectDialog.kt`
36+
- Signature: `CreateProjectDialog(projectsDir, onDismiss, onCreate)` (removed `documentsDir`/`sandboxDir`).
37+
- `parentDir = projectsDir` always (the sandbox home).
38+
- Removed the "build in sandbox" toggle and the `useSandbox`/`recommendsSandbox` location logic.
39+
- `core/main/src/main/java/com/rk/drawer/Drawer.kt`
40+
- Create dialog now passes `projectsDir = sandboxHomeDir()`.
41+
- Removed unused `android.os.Environment` import.
42+
43+
## 4. Clone repo goes straight into the terminal home
44+
45+
- `core/main/src/main/java/com/rk/drawer/Drawer.kt`
46+
- Removed the `OpenDocumentTree` (SAF) folder picker for cloning.
47+
- New `cloneIntoSandbox()`: clones into `sandboxHomeDir()/<repoName>`, unique-suffixed (`-1`, `-2`, ...) if the name exists, so multiple clones don't collide. On success, adds the file-tree tab (`save = true`).
48+
- Clone dialog `onConfirm` now calls `cloneIntoSandbox()`.
49+
50+
## 5. "Show all files" toggle (IDE-style tab scoping)
51+
52+
Default OFF: open editor tabs are scoped to the project/directory selected in the drawer. ON: all open files shown together.
53+
54+
- `core/main/src/main/java/com/rk/settings/Settings.kt`
55+
- Added `show_all_files` (default false) and `migrated_show_all_files_toolbar` (one-time migration flag).
56+
- `core/main/src/main/java/com/rk/commands/editor/ToggleShowAllFilesCommand.kt` (new)
57+
- `EditorCommand` + `ToggleableCommand`, id `editor.show_all_files`, toggles `Settings.show_all_files`, icon `drawables.filter`, label `strings.show_all_files`.
58+
- `core/main/src/main/java/com/rk/commands/CommandProvider.kt`
59+
- Import, `lateinit var`, and `registerBuiltin(...)` for the new command.
60+
- `core/main/src/main/java/com/rk/commands/ToolbarConfiguration.kt`
61+
- Added `editor.show_all_files` to `DEFAULT_EDITOR_TOOLBAR_COMMANDS`.
62+
- `core/main/src/main/java/com/rk/App.kt`
63+
- One-time migration: appends `editor.show_all_files` to `action_items` for existing users; added `ToolbarConfiguration` import.
64+
- `core/resources/src/main/res/values/strings.xml`
65+
- Added `<string name="show_all_files">Show all files</string>`.
66+
- `core/main/src/main/java/com/rk/activities/main/MainContent.kt`
67+
- New `visibleTabsFor(mainViewModel, drawerViewModel)`: when `show_all_files` is off and a `FileTreeTab` is selected, filters editor tabs to those whose `EditorTab.projectRoot` matches the selected project root; non-editor tabs always shown.
68+
- Tab row and pager now render `visibleTabs`; `selectedVisibleIndex` drives selection and pager sync.
69+
- `LaunchedEffect` auto-switches the active tab to a visible one when the project selection changes.
70+
- Empty state shown when no tabs are visible. Imported `FileTreeTab`.
71+
72+
## 6. Markdown preview rewritten for GitHub accuracy (offline)
73+
74+
Replaced the TextView/Spanned preview with an offline WebView renderer. The shared `SimpleMarkdownRenderer` (LSP hovers / extension READMEs / its tests) was left untouched.
75+
76+
- `core/main/src/main/java/com/rk/tabs/markdown/MarkdownToHtml.kt` (new)
77+
- Dependency-free Markdown → HTML converter: ATX headings with anchor ids, paragraphs with soft/hard line breaks, bold/italic/bold-italic/strikethrough/inline code, fenced code blocks (escaped, language class), nestable blockquotes, ordered/unordered nested lists, task lists (`- [ ]` / `- [x]`), GFM tables with column alignment, horizontal rules, links, autolinks (`<url>`), images.
78+
- HTML-escaped throughout; `javascript:` / `data:text/html` URLs neutralized.
79+
- `core/main/src/main/java/com/rk/tabs/markdown/GithubMarkdownStyle.kt` (new)
80+
- Inline GitHub-flavored CSS (light + dark via `data-theme`) and `document()` builder that wraps the body HTML.
81+
- `core/main/src/main/java/com/rk/tabs/markdown/MarkdownPreviewTab.kt` (rewritten)
82+
- Renders via `AndroidView` + `WebView` with JavaScript disabled (no code execution), `loadDataWithBaseURL(baseUrl = file's parent dir)` so relative images/links resolve.
83+
- `WebViewClient` opens http/https/mailto links externally (`FLAG_ACTIVITY_NEW_TASK`); other schemes ignored.
84+
- Dark/light from `isDarkTheme(context)`. Crossfade loading/error/ready states retained.
85+
86+
## 7. Existing storage exposure (no change needed)
87+
88+
- Note only: the SAF `DocumentsProvider` (`core/main/src/main/java/com/rk/DocumentProvider.kt`) already exposes the sandbox home to external apps. Enable it via Settings → Terminal → "Expose home directory" (`Settings.expose_home_dir`). No code changed for this item in this session.
89+
90+
## 8. Documentation
91+
92+
- `changelog.md` updated with the above (Run button, editor input, storage/clone, tab scoping, Markdown preview).
93+
- `Changelogs.txt` (this file) added.
94+
95+
## Verification done in-session
96+
97+
- Brace/paren balance checks on all edited Kotlin files.
98+
- `bash -n` on `project_runner.sh`.
99+
- `strings.xml` validated as well-formed XML.
100+
- Full Gradle build not run locally (repo on `/sdcard` is `noexec`, system gradle broken, no full Android SDK). Build via GitHub Actions.
101+
102+
## Files changed/added this session
103+
104+
New:
105+
- core/main/src/main/java/com/rk/runner/ProjectRunner.kt
106+
- core/main/src/main/assets/terminal/project_runner.sh
107+
- core/main/src/main/java/com/rk/commands/editor/ToggleShowAllFilesCommand.kt
108+
- core/main/src/main/java/com/rk/tabs/markdown/MarkdownToHtml.kt
109+
- core/main/src/main/java/com/rk/tabs/markdown/GithubMarkdownStyle.kt
110+
- Changelogs.txt
111+
112+
Modified:
113+
- core/main/src/main/java/com/rk/commands/editor/RunCommand.kt
114+
- core/main/src/main/java/com/rk/tabs/markdown/MarkdownPreviewTab.kt
115+
- soraX/editor/src/main/java/io/github/rosemoe/sora/widget/EditorInputConnection.java
116+
- core/main/src/main/java/com/rk/projects/CreateProjectDialog.kt
117+
- core/main/src/main/java/com/rk/drawer/Drawer.kt
118+
- core/main/src/main/java/com/rk/settings/Settings.kt
119+
- core/main/src/main/java/com/rk/commands/CommandProvider.kt
120+
- core/main/src/main/java/com/rk/commands/ToolbarConfiguration.kt
121+
- core/main/src/main/java/com/rk/App.kt
122+
- core/main/src/main/java/com/rk/activities/main/MainContent.kt
123+
- core/resources/src/main/res/values/strings.xml
124+
- changelog.md

‎README.md‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
LSP-powered code intelligence, a built-in terminal, extensions, and fast project-wide tools for
77
efficient editing.
88

9-
![Android CI](https://github.com/Rohitkushvaha01/Xed-Editor/actions/workflows/android.yml/badge.svg?event=push&style=for-the-badge)
10-
![Download count](https://img.shields.io/github/downloads/Xed-Editor/Xed-Editor/total?label=Downloads)
9+
![Android CI](https://github.com/GoyDevv/Xed-EditorPRO/actions/workflows/android.yml/badge.svg?event=push&style=for-the-badge)
10+
![Download count](https://img.shields.io/github/downloads/GoyDevv/Xed-EditorPRO/total?label=Downloads)
1111

1212
---
1313

@@ -32,13 +32,13 @@ documentation: https://xed-editor.github.io/Xed-Docs/
3232
</a>
3333
</div>
3434

35-
- **Latest Alpha Build**: Download from [Actions](https://github.com/Xed-Editor/Xed-Editor/actions/)
35+
- **Latest Alpha Build**: Download from [Actions](https://github.com/GoyDevv/Xed-EditorPRO/actions/)
3636
- **Latest Stable Build**: Download
37-
from [Releases](https://github.com/Xed-Editor/Xed-Editor/releases)
37+
from [Releases](https://github.com/GoyDevv/Xed-EditorPRO/releases)
3838

3939
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" alt="Get it on F-Droid" height="80">](https://f-droid.org/packages/com.rk.xededitor)
4040
[<img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png?ref_type=heads" alt="Get it on IzzyOnDroid" height="80">](https://apt.izzysoft.de/fdroid/index/apk/com.rk.xededitor)
41-
[<img src="https://raw.githubusercontent.com/Kunzisoft/Github-badge/main/get-it-on-github.png" alt="Get it on GitHub" height="80">](https://github.com/Xed-Editor/Xed-Editor/releases/latest)
41+
[<img src="https://raw.githubusercontent.com/Kunzisoft/Github-badge/main/get-it-on-github.png" alt="Get it on GitHub" height="80">](https://github.com/GoyDevv/Xed-EditorPRO/releases/latest)
4242

4343
---
4444

@@ -99,6 +99,6 @@ started:
9999

100100
## Contributors
101101

102-
<a href="https://github.com/Xed-Editor/Xed-Editor/graphs/contributors">
103-
<img src="https://contrib.rocks/image?repo=Xed-Editor/Xed-Editor" />
102+
<a href="https://github.com/GoyDevv/Xed-EditorPRO/graphs/contributors">
103+
<img src="https://contrib.rocks/image?repo=GoyDevv/Xed-EditorPRO" />
104104
</a>

‎app/build.gradle.kts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ android {
1818
targetSdk = 37
1919

2020
// versioning
21-
versionCode = 97
22-
versionName = "3.3.3"
21+
versionCode = 105
22+
versionName = "4.0.6"
2323
vectorDrawables { useSupportLibrary = true }
2424
}
2525

‎app/src/main/AndroidManifest.xml‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
1212
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
1313
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
14+
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
1415
<uses-permission android:name="android.permission.WAKE_LOCK" />
1516
<uses-permission
1617
android:name="android.permission.READ_PHONE_STATE"
@@ -49,6 +50,14 @@
4950
android:name="com.rk.terminal.SessionService"
5051
android:foregroundServiceType="specialUse" />
5152

53+
<service
54+
android:name="com.rk.projects.DependencyInstallService"
55+
android:foregroundServiceType="specialUse" />
56+
57+
<service
58+
android:name="com.rk.runner.RunService"
59+
android:foregroundServiceType="specialUse" />
60+
5261
<activity
5362
android:name="com.rk.activities.main.MainActivity"
5463
android:alwaysRetainTaskState="true"

0 commit comments

Comments
 (0)