Merge branch 'jiongxuan-feat/platform-android-offline'

* jiongxuan-feat/platform-android-offline: (33 commits)
  feat: add hover button to unhide projects #3522
  refactor: fix lint
  fix: improve document by changing some wordings
  fix: avoid nginx error when webdav is missing
  feat: webdav integration
  fix: follow setting when quick scheduling next week (#3373)
  fix: adding tooltip to edit task in planner
  fix: adding tooltip to task drawer icon in planner
  feat: Added Ukrainian language support.
  chore(release): update README for introducing Connectivity-Free Mode
  chore: update android submodule for some fix
  feat(android): add scripts to install APKs to device
  fix(android): preserve '; wv' in User-Agent to Ensure Service Worker Functionality
  docs: split README into offline and online configuration docs
  chore: update android submodule for bug fix
  chore: add buildFrontend:stageWeb:unminified (to prevent Debug obfuscation) and used it in dist:android for easier debugging. No impact on production environment
  chore: update android submodule for launch mode
  chore: update gradle/java indent_size to 4
  chore: update npm run dist:android/dist:android:prod
  chore: update package-lock for capacitor (minimal changes)
  ...
This commit is contained in:
Johannes Millan 2024-10-11 12:02:14 +02:00
commit bb0bee968d
9 changed files with 632 additions and 65 deletions

View file

@ -11,3 +11,12 @@ trim_trailing_whitespace = true
[*.md]
max_line_length = off
trim_trailing_whitespace = false
[*.kt]
indent_size = 4
[*.java]
indent_size = 4
[*.gradle]
indent_size = 4

4
.gitmodules vendored Normal file
View file

@ -0,0 +1,4 @@
[submodule "android"]
path = android
url = https://github.com/jiongxuan/super-productivity-android.git
branch = feat/platform-android-offline

3
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,3 @@
{
"java.configuration.updateBuildConfiguration": "automatic"
}

View file

@ -222,7 +222,13 @@ brew install --cask superproductivity
### Android
There is a [very early(!) Android version available](https://play.google.com/store/apps/details?id=com.superproductivity.superproductivity&hl=gsw). The sources can be [found here](https://github.com/johannesjo/super-productivity-android).
A new version of the Android app is now available with **Connectivity-Free Mode**, allowing you to use the app without an internet connection.
This update offers more flexibility, supporting both fully offline usage and integration with services like WebDAV and Dropbox for syncing. Enjoy a smoother, more reliable experience whether you're online or offline.
Stay tuned for even more exciting updates!
You can find the Android app here:
<a href='//play.google.com/store/apps/details?id=com.superproductivity.superproductivity' target="_blank">
<img src='./screens/google-play-badge.png'
@ -237,6 +243,8 @@ There is a [very early(!) Android version available](https://play.google.com/sto
height="50" />
</a>
The sources can be [found here](https://github.com/johannesjo/super-productivity-android).
## :hearts: Contributing
Please check out the [CONTRIBUTING.md](CONTRIBUTING.md)
@ -305,6 +313,15 @@ npm start
Packaging the app is done via [electron-builder](https://github.com/electron-userland/electron-builder). To start packaging run `npm run dist`. If you want to add new platforms and experiment with the build options the easiest way to do so is manipulating the `build` property in the [package.json](https://github.com/johannesjo/super-productivity/blob/develop/package.json), but you can also use the [command line interface of electron builder](https://www.electron.build/cli).
### Building for Android
*This feature was added on October 7, 2024. See [Pull Request #57](https://github.com/johannesjo/super-productivity-android/pull/57).*
To build the Android version of Super Productivity, please refer to the [Android Build Documentation](./android/offline.md), which includes instructions on configuring **Connectivity-Free Mode** and **Online-Only Mode (Compatibility Mode)**.
Ensure you follow the setup steps properly to configure the environment for building the app.
## Run as Docker Container
```bash

1
android Submodule

@ -0,0 +1 @@
Subproject commit 85f0f5a2a46b113123da76f90e2b75d178d81fc3

6
capacitor.config.json Normal file
View file

@ -0,0 +1,6 @@
{
"webDir": "dist/browser",
"android": {
"path": "android"
}
}

9
capacitor.config.ts Normal file
View file

@ -0,0 +1,9 @@
import type { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.superproductivity.superproductivity',
appName: 'super-productivity',
webDir: 'dist/browser',
};
export default config;

635
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -44,11 +44,15 @@
"buildFrontend:prodWeb": "npm run prebuild && node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --configuration productionWeb",
"buildFrontend:stage:es6": "npm run prebuild && cross-env BROWSERSLIST_ENV='modern' ng build --configuration stage && npm run removeWOFF1",
"buildFrontend:stageWeb": "npm run prebuild && ng build --configuration stageWeb",
"buildFrontend:stageWeb:unminified": "npm run prebuild && ng build --configuration stageWeb --optimization=false --aot=false",
"buildFrontend:prod:watch": "npm run prebuild && ng build --configuration production --watch",
"buildAllElectron:prod": "npm run preCheck && npm run buildFrontend:prod:es6 && npm run electron:build",
"buildAllElectron:stage": "npm run preCheck && npm run buildFrontend:stage:es6 && npm run electron:build",
"buildAllElectron:noTests:prod": "npm run lint && npm run buildFrontend:prod:es6 && npm run electron:build",
"build": "npm run buildAllElectron:noTests:prod",
"sync:android": "npx cap sync android",
"assemble:android:prod": "cd android && ./gradlew assembleRelease && cd ..",
"assemble:android:stage": "cd android && ./gradlew assembleDebug && cd ..",
"test": "cross-env TZ='Europe/Berlin' ng test --watch=false",
"test:watch": "cross-env TZ='Europe/Berlin' ng test --browsers ChromeHeadless",
"lint": "ng lint",
@ -79,6 +83,10 @@
"dist:mac:mas:buildOnly": "electron-builder --config=build/electron-builder.mas.yaml",
"dist:mac:mas:dev": "cp tools/mac-profiles/mas-dev.provisionprofile embedded.provisionprofile; electron-builder --mac mas-dev --config=build/electron-builder.mas-dev.yaml",
"dist:mac:mas:x64": "cp tools/mac-profiles/mas.provisionprofile embedded.provisionprofile; electron-builder --mac mas --config=build/electron-builder.mas.yaml --x64",
"dist:android": "npm run buildFrontend:stageWeb:unminified && npm run sync:android && npm run assemble:android:stage && echo 'Staging Android APK generated at android/app/build/outputs/apk/debug/'",
"dist:android:prod": "npm run buildFrontend:prodWeb && npm run sync:android && npm run assemble:android:prod && echo 'Production Android APK generated at android/app/build/outputs/apk/release/'",
"install:android": "adb install -r android/app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk && echo 'Staging APK installed successfully.'",
"install:android:prod": "adb install -r android/app/build/outputs/apk/fdroid/release/app-fdroid-release.apk && echo 'Production APK installed successfully.'",
"release": "npm run release.changelog && npm run dist",
"release.changelog": "conventional-changelog -i CHANGELOG.md -s -p angular",
"version": "npm run prebuild && npm run release.changelog && git add -A",
@ -97,6 +105,9 @@
}
],
"dependencies": {
"@capacitor/android": "^6.1.2",
"@capacitor/cli": "^6.1.2",
"@capacitor/core": "^6.1.2",
"electron-dl": "^3.5.2",
"electron-localshortcut": "^3.2.1",
"electron-log": "^5.1.2",