# Features — ear_android_app

Evidence date: 2026-10-16.

Source: `git@bitbucket.org:overdrive/ear_android_app.git`, `master` at `5c15b03` (2023-03-10, "eAr app POC").

No features document existed in the source repository or in Silicon Ark. Status words below follow the implementation, not a roadmap. There is no in-development branch.

## Current (present on `master`)

| Feature | What it does | Evidence | Status |
|---|---|---|---|
| Launcher app named eAr | Icon label `eAr`, theme `Theme.EAr`, one exported activity | `strings.xml`, `AndroidManifest.xml`, `themes.xml` | **Implemented** |
| Full-screen WebView | Layout is only `R.id.webview` | `activity_main.xml` | **Implemented** |
| Ear Academy login URL | `loadUrl("https://www.ear-academy.com/home/login")` on every `onCreate` | `MainActivity.java` | **Implemented** |
| In-WebView navigation | Stock `WebViewClient` | `MainActivity.java` | **Implemented** |
| JavaScript | `setJavaScriptEnabled(true)` after `loadUrl` | `MainActivity.java` | **Implemented** |
| DOM storage | `setDomStorageEnabled(true)` after `loadUrl` | `MainActivity.java` | **Implemented** |
| Day/night Material theme | `Theme.MaterialComponents.DayNight.DarkActionBar`, template purple/teal | `values/themes.xml`, `values-night/themes.xml`, `colors.xml` | **Implemented** |
| Adaptive launcher icon | API 26 adaptive icon, API 33 monochrome entry, density `webp` files | `mipmap-anydpi-v26`, `mipmap-anydpi-v33`, `drawable/ic_launcher_background.xml`, `drawable-v24/ic_launcher_foreground.xml` | **Implemented**. Artwork matches the Android Studio template vectors (same path data and default palette). Provenance: **Inferred** that it was not a custom brand icon |
| Backup flags | `allowBackup` true, sample backup XML with rules commented out | Manifest, `xml/backup_rules.xml`, `xml/data_extraction_rules.xml` | **Implemented** as the project wizard defaults |
| RTL support flag | `android:supportsRtl="true"` | Manifest | **Implemented** as a flag. No dedicated RTL layout |
| Debug identity test | Instrumented test expects package `com.example.ear` | `ExampleInstrumentedTest.java` | **Implemented** |
| Arithmetic sample test | `assertEquals(4, 2 + 2)` | `ExampleUnitTest.java` | **Implemented** |
| Release build type without shrink | `minifyEnabled false`, template ProGuard file | `app/build.gradle`, `proguard-rules.pro` | **Implemented** |

## Completed

The POC commit is the whole application. Relative to the initial commit, which contained only `.gitignore`, the completed change is the Android Studio project in `5c15b03`.

There is no later "done" milestone, tag, or release branch.

## Planned

No planned-feature list, ticket, or `TODO` tied to product behaviour exists.

The only TODO text is inside `data_extraction_rules.xml` and is the Android Studio sample comment about include/exclude backup rules. Provenance: **Planned** is too strong. It is unread sample text. Treat backup customisation as **Unknown / Requires Confirmation**, not as a committed plan.

## In development

None. `master` is the only branch. Last commit 2023-03-10. No uncommitted product work is part of this Git revision.

## Recently changed

"Recently" relative to the repository's own history. Both commits are the same calendar day.

| Change | Commit | Date |
|---|---|---|
| Android `.gitignore` added | `d82966c` | 2023-03-10 |
| `.gitignore` replaced with a shorter Android Studio ignore list, and the app module added | `5c15b03` | 2023-03-10 |

The ignore-file rewrite dropped the longer initial ignore rules and kept the standard Android Studio set (IDE caches, `/build`, `local.properties`, `.gradle`). `local.properties` is not in Git, so the SDK path used on the author's machine is **Unknown**.

## Deprecated or removed

No feature was added and later removed. The initial `.gitignore` body was replaced in `5c15b03`. That is a tooling file, not a user-facing feature.

The commented ProGuard keep rule for a JavaScript interface was never enabled. It is not a removed feature.

## Not present

These are absent from the source. They are not implied backlog.

| Absent item | Evidence |
|---|---|
| Native login, registration, or profile UI | Only `MainActivity.java` |
| Host allow-list for the WebView | No URL check |
| WebView history back | No `goBack` |
| Pull-to-refresh, progress bar, or error screen | Layout has only the WebView |
| File upload, camera, geolocation, notifications | No `WebChromeClient`, no permissions |
| JavaScript bridge into Java | No `addJavascriptInterface` |
| Offline cache policy | No `setCacheMode` / service worker setup |
| Deep links or app links | No `VIEW` / `BROWSABLE` intent filter |
| Product flavors, signing, or version catalogs | `app/build.gradle` has one `defaultConfig` and no `signingConfigs` |
| CI, Sonar project file, scan batch file | Not in Git at `5c15b03`. Scan-host listing **disagrees**; see project plan |
| README or changelog | No such files |

## Source map

```text
app/src/main/java/com/example/ear/MainActivity.java
app/src/main/AndroidManifest.xml
app/src/main/res/layout/activity_main.xml
app/src/main/res/values/strings.xml
app/build.gradle
```

Those five files are the product. Everything else in the commit is theme, icons, tests, Gradle wrapper, or IDE metadata.
