Skip to content

Commit 99a7d23

Browse files
committed
docs: rewrite README and add privacy policy, changelog, and release workflow
New README with a download button, honest intro, scannable feature list, and screenshots. Adds PRIVACY.md, CHANGELOG.md, and a GitHub Actions workflow that builds and publishes the signed APK on a version tag.
1 parent 7982803 commit 99a7d23

8 files changed

Lines changed: 262 additions & 89 deletions

File tree

.github/workflows/release.yml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Build and publish APK
2+
3+
# Runs when you push a version tag like v1.0.0-beta, or when triggered by hand.
4+
# It builds the release APK, signs it (if signing secrets are set), and attaches
5+
# it to the matching GitHub Release so people can download and sideload it.
6+
on:
7+
push:
8+
tags:
9+
- 'v*'
10+
workflow_dispatch:
11+
12+
permissions:
13+
contents: write
14+
15+
jobs:
16+
build:
17+
runs-on: ubuntu-latest
18+
steps:
19+
- name: Checkout
20+
uses: actions/checkout@v4
21+
22+
- name: Set up JDK 17
23+
uses: actions/setup-java@v4
24+
with:
25+
distribution: temurin
26+
java-version: '17'
27+
28+
- name: Set up Gradle
29+
uses: gradle/actions/setup-gradle@v4
30+
31+
- name: Build release APK
32+
run: ./gradlew :app:assembleRelease --no-daemon
33+
34+
# Signs the unsigned release APK when the four signing secrets are present.
35+
# Set them under Settings > Secrets and variables > Actions. See the README /
36+
# docs for how to generate the keystore. Without them this step is skipped and
37+
# the unsigned APK is published instead (fine for a first internal test).
38+
- name: Sign APK
39+
id: sign
40+
if: ${{ env.SIGNING_KEY != '' }}
41+
uses: r0adkll/sign-android-release@v1
42+
env:
43+
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
44+
with:
45+
releaseDirectory: app/build/outputs/apk/release
46+
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
47+
alias: ${{ secrets.KEY_ALIAS }}
48+
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
49+
keyPassword: ${{ secrets.KEY_PASSWORD }}
50+
51+
- name: Collect APK
52+
run: |
53+
mkdir -p out
54+
if [ -n "${{ steps.sign.outputs.signedReleaseFile }}" ]; then
55+
cp "${{ steps.sign.outputs.signedReleaseFile }}" out/FocusForcePlus-${{ github.ref_name }}.apk
56+
else
57+
cp app/build/outputs/apk/release/app-release-unsigned.apk out/FocusForcePlus-${{ github.ref_name }}-unsigned.apk
58+
fi
59+
60+
- name: Publish to release
61+
uses: softprops/action-gh-release@v2
62+
with:
63+
files: out/*.apk
64+
draft: false
65+
prerelease: true
66+
generate_release_notes: true

CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Changelog
2+
3+
All notable changes to FocusForce+ are recorded here. Dates are ISO (YYYY-MM-DD).
4+
5+
## [0.9.0-beta] - 2026-07-06
6+
7+
First public beta. The whole app is built and has been tested on a real device. Distributed as a downloadable APK; no Play Store yet.
8+
9+
### Added
10+
- Routines with multi-step timers, alarm-style start, snooze and reschedule limits, and per-routine Invincible Mode
11+
- To-do planner with priority-based reminders, a daily digest, recurring items, and checklists
12+
- App blocker via an accessibility service, with daily limits, time windows (including overnight), and per-rule Invincible Mode
13+
- App groups with one shared daily limit, plus quick-fill templates for Social Media, Games, and Entertainment
14+
- Focus mode with Do Not Disturb, notification silencing, app or group blocking, presets per session type, and scheduling
15+
- Home dashboard, weekly statistics, onboarding with a permission walkthrough, and an expanded settings screen
16+
- Tamper Protection: an optional daily change window that guards your lock settings
17+
- JSON export and import for all your data
18+
- A quick-settings tile for starting a focus session
19+
20+
[0.9.0-beta]: https://github.com/karOs555/FocusForcePlus/releases/tag/v0.9.0-beta

PRIVACY.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Privacy Policy
2+
3+
_Last updated: 2026-07-06_
4+
5+
FocusForce+ is built to keep your data on your device. This policy explains what that means in plain terms.
6+
7+
## The short version
8+
9+
FocusForce+ collects nothing, sends nothing, and shares nothing. Everything you put into the app stays on your phone. The app has no internet permission, so it has no technical way to transmit your data anywhere. There are no accounts, no cloud sync, no analytics, no crash reporting, and no advertising.
10+
11+
## What the app stores, and where
12+
13+
All of it lives locally in the app's own storage on your device:
14+
15+
- Your routines, to-dos, focus sessions, and app-blocking rules
16+
- App usage time, used only for the daily limits and the stats shown to you
17+
- Your settings and preferences
18+
- A local history of completed routines and focus sessions, for the statistics screen
19+
20+
If you uninstall the app, this data is removed with it (unless you exported a backup yourself).
21+
22+
## Permissions and why they exist
23+
24+
Each permission powers one feature and nothing else. You can skip any of them, and the related feature simply stays off.
25+
26+
- **Notifications**: to show routine alarms and to-do reminders.
27+
- **Alarms and reminders (exact alarms)**: so reminders fire on time.
28+
- **Display over other apps**: so an alarm screen can appear over whatever you're doing.
29+
- **Accessibility service**: to detect which app you just opened, so a blocked app can be covered. It cannot and does not read your screen content. This is switched off in the service configuration.
30+
- **Usage access**: to measure how long you used an app, for daily time limits and the screen-time numbers you see.
31+
- **Do Not Disturb access**: so a focus session can silence interruptions and turn that back off when it ends.
32+
- **Battery (unrestricted)**: optional, so reminders stay reliable on aggressive battery savers.
33+
34+
None of this information leaves your device.
35+
36+
## Backups
37+
38+
Android may include the app in a device backup you have enabled in your system settings. That backup is handled by Google and your device, not by FocusForce+, and follows your own backup settings. The app's setup state is excluded from backup on purpose, so a fresh install always walks you through setup again.
39+
40+
You can also export all your data to a plain JSON file yourself, from Settings. That file goes wherever you choose to save it, and it's your responsibility from that point on.
41+
42+
## Children
43+
44+
FocusForce+ is not directed at children and collects no data from anyone.
45+
46+
## Changes
47+
48+
If this policy ever changes, the updated version will be posted here with a new date at the top.
49+
50+
## Contact
51+
52+
Questions or concerns: open an issue at https://github.com/karOs555/FocusForcePlus/issues

0 commit comments

Comments
 (0)