Document compatibility test matrix

This commit is contained in:
ajp_anton
2026-07-01 11:29:04 +00:00
parent 75861e2480
commit 861ffd52d5
+50 -20
View File
@@ -7,6 +7,11 @@ still keeping Samsung's own icons and visual style where possible.
The project is currently tested only on a Samsung Galaxy Z Fold5 running One UI
8.0 / Android 16. Expect device- and One UI-version-specific behaviour.
## AI Assistance
This project was developed with help from AI-assisted coding tools. The design
decisions, physical device testing, and final behaviour are still manually reviewed.
## What It Does
- Custom status bar layout for the unlocked screen, lockscreen, and AOD.
@@ -41,31 +46,62 @@ It also supports lightweight markup:
- Pipe alignment with `|`, useful for aligning split clock rows around a camera
cutout.
- Colour variants and reverse Polish notation colour math for light/dark status
bar states, for example `color(#batterybar 1.2 * ; invRGB 0.5 *RGB)`.
bar states, for example `color(#batterybar 1.2 *RGB ; #batterybar 0.5 *RGB)`, which uses the batterybar's dynamic colour as its base. For the bright tint, it brightens it up some more, while for the dark tint, it is darkened.
The in-app clock page has the full syntax help and examples.
## Requirements
- A rooted Samsung device.
- A modern Xposed implementation such as LSPosed.
- A rooted Android device or emulator.
- A modern Xposed implementation such as LSPosed or another libxposed-compatible runtime.
- Xposed API 101 or newer.
- A Samsung/One UI version close to One UI 8.0 / Android 16.
- SystemUI access for the module scope.
This module hooks Samsung SystemUI internals. It is not expected to work on
non-Samsung SystemUI, and updates to One UI may require fixes.
The module is currently developed and manually tested on a Samsung Galaxy Z
Fold5 running One UI 8.0 / Android 16. Other Android versions and non-Samsung
SystemUI builds are being investigated, but should be treated as experimental
until the compatibility matrix says otherwise.
## Device Compatibility
StatusBarTweak is Samsung-specific in its current form. Some lower-level ideas,
such as drawing a custom battery bar or parsing custom clock text, could be
ported elsewhere. The layout engine itself depends on Samsung's SystemUI,
lockscreen, AOD service, notification display modes, status icons, and status
chip implementation.
Some behavior cannot be fully verified on emulators. In particular, smooth
transitions between AOD, lockscreen, unlocked mode, and fullscreen apps may need
physical-device testing. Emulator testing can still verify whether hooks load,
whether SystemUI stays stable, whether settings apply, whether excessive
background work appears in logs, and whether the steady state looks the way it
should.
Plain Android or other OEM skins would need separate hooks and probably a
different source-collection layer. They should be treated as unsupported rather
than untested-compatible.
| Feature | Galaxy Z Fold5<br>One UI 8 / Android 16 | AOSP API 34<br>Android 14 | AOSP API 35<br>Android 15 | AOSP API 36<br>Android 16 | Google APIs API 35<br>Android 15 | Google APIs API 36<br>Android 16 | LineageOS 22<br>Android 15 | LineageOS 23<br>Android 16 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Module loads in SystemUI | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Settings app opens and writes settings | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Custom unlocked statusbar layout | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Custom lockscreen statusbar layout | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Custom AOD statusbar layout | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Notification icons mode | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Notification cards mode | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Notification dot mode and read-state behavior | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Hide notification icons by app | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Hide status icons | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Dual-SIM status icon handling | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Samsung status chips: media/navigation/call | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Samsung charging chip handling | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Privacy indicator stability | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Custom statusbar clock text | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Custom drawer clock/date text | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Stored clock pattern previews | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Battery bar: base statusbar modes | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Battery bar: fullscreen and transparent statusbar modes | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Battery bar: curved top-edge geometry | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Battery bar threshold colours and colour math | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Camera cutout and under-display-camera handling | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Rotation and fold/unfold handling | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Drawer scrolling and background-work performance | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
| Debug visualizers and debug notifications | ✅ | Untested | Untested | Untested | Untested | Untested | Untested | Untested |
Current emulator targets use rooted LSPosed snapshots in a local test lab. They
are useful for compatibility work, but the matrix above is intentionally not
optimistic: until a target has been tested, it remains `Untested`.
## Build
@@ -80,9 +116,3 @@ Release builds require local signing configuration:
```bash
./gradlew assembleRelease
```
## Development Note
This project has been coded with the help of AI as an implementation aid. The
design decisions, device testing, and final behaviour are still manually
reviewed.