Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),

### Changed

- Finalized the Android namespace and application ID as `fr.zefut.grammalecte` before public distribution; development installs using `fr.grammalecteandroid.unofficial` are treated as a separate Android application.
- Reviewed and normalized user-facing French wording, typography and pluralization across the application, correction IME, setup screens and diagnostics.
- Improved Android UI accessibility with semantic headings, TalkBack live-region announcements, minimum IME touch targets and a large-text IME layout that avoids truncated actions.
- Grammalecte engine initialization now loads conjugation, phonetic and morphology data required by the full grammar engine.
Expand Down
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ vendor:
./tools/vendor-grammalecte.sh

check:
./tools/check-android-package-id.sh
./tools/check-no-network-permission.sh
shellcheck tools/*.sh
./tools/run-actionlint.sh
Expand Down
4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ plugins {
}

android {
namespace = "fr.grammalecteandroid.unofficial"
namespace = "fr.zefut.grammalecte"
compileSdk = 36

androidResources {
Expand All @@ -25,7 +25,7 @@ android {
}

defaultConfig {
applicationId = "fr.grammalecteandroid.unofficial"
applicationId = "fr.zefut.grammalecte"
minSdk = 26
targetSdk = 36
versionCode = 1
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.app.Activity
import android.content.Context
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.content.ComponentName
import android.content.Context
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.content.Context
import androidx.test.core.app.ApplicationProvider
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.accessibilityservice.AccessibilityServiceInfo
import android.content.ComponentName
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.Manifest
import android.content.Context
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.content.Context
import android.content.Intent
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.content.ComponentName
import android.content.Context
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.app.Activity
import android.content.Context
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.content.ComponentName
import android.content.Context
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.content.Intent
import android.content.pm.PackageManager
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.content.ComponentName
import android.content.Context
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.content.ComponentName
import android.content.Context
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.app.Activity
import android.os.Bundle
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.app.Activity
import android.os.Bundle
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.os.Build
import android.view.View
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.content.ComponentName
import android.content.Context
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.app.Activity
import android.content.ComponentName
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.graphics.drawable.GradientDrawable
import android.inputmethodservice.InputMethodService
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.annotation.SuppressLint
import android.app.PendingIntent
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.app.Activity
import android.os.Bundle
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.app.Activity
import android.app.StatusBarManager
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.app.Activity
import android.graphics.Typeface
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.app.Activity
import android.content.ClipData
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.app.Activity
import android.app.AlertDialog
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.app.Activity
import android.content.ComponentName
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fr.grammalecteandroid.unofficial
package fr.zefut.grammalecte

import android.content.Context

Expand Down
29 changes: 16 additions & 13 deletions docs/fdroid.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,18 +68,22 @@ metadata and the source repository.

## F-Droid build recipe

The final F-Droid build recipe is intentionally deferred until the Android
application ID has been reviewed and finalized.
The Android namespace and application ID are finalized as:

The current development application ID is:
fr.zefut.grammalecte

This identifier is considered stable and must not change after the first
public release.

The previous development identifier:

fr.grammalecteandroid.unofficial

Changing an Android application ID after public distribution would create a
different application from Android's point of view, so this decision must be
made before the first stable release.
was used only by pre-release development builds. Android treats the new
application ID as a different application, so development installations using
the previous identifier do not upgrade in place.

Once the namespace is final, the F-Droid recipe can define:
The final F-Droid recipe can now define:

- the final application ID;
- the public Git repository;
Expand All @@ -96,9 +100,8 @@ verifies it against the independently rebuilt APK.

Before an F-Droid submission:

1. finalize the Android package namespace;
2. finalize the first stable version name and version code;
3. publish a versioned upstream APK;
4. add release screenshots and changelog metadata;
5. prepare and validate the final F-Droid build recipe;
6. complete the third-party license review.
1. finalize the first stable version name and version code;
2. publish a versioned upstream APK;
3. add release screenshots and changelog metadata;
4. prepare and validate the final F-Droid build recipe;
5. complete the third-party license review.
34 changes: 34 additions & 0 deletions tools/check-android-package-id.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/usr/bin/env bash
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
BUILD_FILE="$ROOT/app/build.gradle.kts"
EXPECTED="fr.zefut.grammalecte"

NAMESPACE="$(
sed -nE \
's/^[[:space:]]*namespace = "([^"]+)".*/\1/p' \
"$BUILD_FILE" |
head -n 1
)"

APPLICATION_ID="$(
sed -nE \
's/^[[:space:]]*applicationId = "([^"]+)".*/\1/p' \
"$BUILD_FILE" |
head -n 1
)"

if [[ "$NAMESPACE" != "$EXPECTED" ]]; then
echo "Unexpected Android namespace: ${NAMESPACE:-missing}" >&2
echo "Expected: $EXPECTED" >&2
exit 1
fi

if [[ "$APPLICATION_ID" != "$EXPECTED" ]]; then
echo "Unexpected Android applicationId: ${APPLICATION_ID:-missing}" >&2
echo "Expected: $EXPECTED" >&2
exit 1
fi

echo "Android package identity OK: $EXPECTED"
2 changes: 1 addition & 1 deletion tools/run-android.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"

APK="app/build/outputs/apk/debug/app-debug.apk"
PACKAGE="fr.grammalecteandroid.unofficial"
PACKAGE="fr.zefut.grammalecte"
ACTIVITY=".MainActivity"

# Android SDK
Expand Down
Loading