diff --git a/README.md b/README.md index 5093965..61de508 100644 --- a/README.md +++ b/README.md @@ -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
One UI 8 / Android 16 | AOSP API 34
Android 14 | AOSP API 35
Android 15 | AOSP API 36
Android 16 | Google APIs API 35
Android 15 | Google APIs API 36
Android 16 | LineageOS 22
Android 15 | LineageOS 23
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.