Release Announcement Thread [release:983] (19/04/2018)

Status
Not open for further replies.
Search This thread

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
HS3E6Vb.png


welcome all current and prospective Layers themers!

Recently our team's efforts have been announced on XDA Portal regarding the official deprecation of Layers, in progress to be overridden by our new project, Substratum.

Read more here: http://www.xda-developers.com/layers-manager-is-being-deprecated-in-favor-of-substratum/

Today, I have started this thread to get our project organized and officially recorded down on a publicly visible location, with all our changes and feature set to clarify what our project is about.

What is Substratum?
Substratum is an application, downloadable from the Play Store, that utilizes all of Sony's Overlay Manager Service (OMS), found on the official AOSP code review. This is similar to Layers in terms of stability and customization as it runs off an upgraded version of the Resource Runtime Overlay system, with the added benefit of running up-to-date Sony code on a customized ROM.

What is Interfacer?
Theme Interfacer is, simply, a helper app, that gets prebuilt by Substratum supported ROMs, allowing Substratum to alleviate OMS tasks in the background without refreshing any assets. In technical terms, Interfacer is a service that loads OMS commands into the system directly, and while OMS itself refreshes resources and assets on runtime, it will refresh the caller's window, asking it to refresh resources and assets each time an overlay is loaded/unloaded from the system.

What about CMTE?
I would like to say here, that we aren't trying to compete with the CyanogenMod Theme Engine at all. Think of the Substratum project as a community-driven project where a chunk of the open-source community coming together to create something we wanted in the start.

We want to start from ground zero, without basing any code off of a huge chunk of code made by a corporation, but creating what we call "tweaks" as a built-in within our system (such as prebuilt accent choosing, theme customization based on user selection, infinite possibilities based on themers, etc.).

Substratum was built by and with themers in mind. OMS was created by Sony and is planned to be merged into the source, meaning that we are running what Android should be running, rather than completely modifying a framework from the base with many changes that can't be understood by the average ROM developer.

CMTE runs on the RRO2 system, which is the base of what Layers was running on. RRO2 is deprecated, and superseded by the OverlayManagerService (OMS) within Sony's code in the AOSP code review.

Final thing, instead of competing against CMTE, we sincerely thank them for providing CMTE as an open sourced project. We were able to filter out everything needed by understanding the Theme Engine completely from a low level standpoint.

Why is this better than Layers?
  • No longer require soft or hard reboots when applying themes
  • We can apply fonts without rebooting
  • We can apply System sounds from a theme, such as lock/unlock/effect_tick sounds, to make your unlock sounds match your theme
  • Does not use the vendor/overlays partition/folder anymore, to limit down possible security vulnerabilities and reflashing vendors constantly
  • Active and consistent development based on upstream Sony code, as well as team code. Relying on the old system meant bringing up legacy code to newer versions of Android, even when we know the RRO2 system is being superseded already.

How is this different from Layers?
  • Overlays are loaded at runtime (truly) when you launch an application. You may briefly see an original resources screen flicker when you open an app, and that is being worked on by the team. However, due to the nature of how OMS works, it truly brings runtime theming when you start applications, rather that bloating the system down trying to extend resources of applications you aren't currently using.

Would you like to contribute to the project?
If you would like to contribute to the project, you are free to do so by pushing commits directly to our Gerrit Code Server. Please do not push to our GitHub organizations directly as a pull request, as those will be ignored due to having all code run through a code reviewing system. For more info regarding contributions, please check out our contributing page from our documentation.

Download: https://play.google.com/store/apps/details?id=projekt.substratum

Source code: https://github.com/substratum/substratum


Team Substratum Developers:
@nicholaschum: Lead Substratum Developer
@sykopompos: Team Architect
@iskandar1023: Theme/App/Backend Engine Developer
@KreAch3R: Lead Experimental Developer
@Surge1223: Binary and Algorithm Developer
@MSF Jarvis: Platform and Feature Developer
@The Flash: Documentation, community and developer relations lead
@Char_G: Social media community organizer

Special thanks to:.
Mårten Kongstad (Sony Mobile)
Zoran Jovanovic (Sony Mobile)
Alan Viverette (Google)
Clark Scheff (CyanogenMod)
Andy Mast (CyanogenMod)

XDA:DevDB Information
[projekt.] substratum, Device Specific App for the XDA Community Apps

Contributors
nicholaschum, Sykopompos, iskandar1023, The Flash, KreAch3R, Surge1223, Char_G
Source Code: https://github.com/substratum


Version Information
Status: Stable
Current Stable Version: 983
Stable Release Date: 2018-04-19

Created 2017-04-09
Last Updated 2018-04-19
 

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
OFFICIAL THEME TEMPLATE
nEZf9r4.gif


https://github.com/substratum/template

There are two types of Substratum as of this date (27/7/16)
  • Substratum OMS
  • Substratum Legacy (RRO)

To get started, first of all, FORK this project on GitHub and open it up with Android Studio (I use Android Studio 2.1.2 and Android Studio 2.2 Preview Canary, although these versions don't matter, you should keep yourself up to date with the latest Google has to offer)

Step 1: Package Naming
The FIRST thing you need to change is the package identifier (the name the app identifies as) to something more meaningful to you:

https://github.com/substratum/template/blob/master/app/build.gradle
Code:
applicationId "substratum.theme.template"
Change this to:
Code:
applicationId "com.yourname.themename"

Change Package Name in the project structure: (optional)
Code:
  * Look at the "project panel" in android studio (the one on the left). 
  * In the top right corner you will see a little "gear icon". 
  * Click on it.
  * in the dialog which opens click on "Compact Empty Middle Packages".
  * Select the "substratum folder" (in JAVA/com/ and rightclick it. 
  * Choose "refactor" and then "rename".
  * A warning window will pop up. Just click on "Rename package".
  * Enter the desired first part of your package name(should be same as that in applicationId of bild.gradle) and click refactor.
  * At the bottom of the screen a refactoring preview will appear. Just click on "DO REFACTOR" at the left corner. <br/> <br/>
  * Do the same with the theme and template folders, name it same as the name in applicationId of build.gradle.

Step 2: AndroidManifest Metadatas
Now you have to pick whether your theme supports OMS or RRO, or both.

Open this file: https://github.com/substratum/template/blob/master/app/src/main/AndroidManifest.xml

Now configure it to your liking:
Code:
<meta-data
    android:name="Substratum_Legacy"
    android:value="true"/>
<meta-data
    android:name="Substratum_Theme"
    android:value="@string/ThemeName"/>
<meta-data
    android:name="Substratum_Author"
    android:value="@string/ThemeAuthor"/>
These files link back to the strings.xml inside the res/values folder, here:
https://github.com/substratum/template/blob/master/app/src/main/res/values/strings.xml
Code:
<string name="ThemeName">My New Theme</string>
<string name="ThemeAuthor">Nicholas Chum</string>

If you want to keep the Play Store shortcut turned off (to disable the launcher icon by default), open this file: https://github.com/substratum/template/blob/master/app/src/main/AndroidManifest.xml
and delete line 15.
Code:
<category android:name="android.intent.category.LAUNCHER"/>

Step 3: Start theming!

Audio
To install system sound effects, you will need to have an audio folder, just like it's listed here: https://github.com/substratum/template/tree/master/app/src/main/assets/audio

You are allowed to add multiple bootanimations and name them differently so they show up differently on the spinner dropdown in the app.

Example:
Code:
assets/audio/StarWarsLockUnlock.zip
Audio ZIP root structure:
Code:
StarWarsLockUnlock.zip/ui/Lock.ogg(or mp3)
StarWarsLockUnlock.zip/ui/Unlock.ogg(or mp3)
StarWarsLockUnlock.zip/ui/effect_tick.ogg(or mp3)
StarWarsLockUnlock.zip/alarms/alarm.ogg(or mp3)
StarWarsLockUnlock.zip/ringtones/ringtone.ogg(or mp3)
StarWarsLockUnlock.zip/notifications/notification.ogg(or mp3)

Boot Animations
To install boot animations, you will need to have a bootanimations folder, just like it's listed here: https://github.com/substratum/template/tree/master/app/src/main/assets/bootanimation

You are allowed to add multiple bootanimations and name them differently so they show up differently on the spinner dropdown in the app.

Example:
Code:
assets/bootanimation/Sakura.zip
assets/bootanimation/MarvelDC.zip

Fonts
To install fonts, you will need to have a fonts folder, just like it's listed here: https://github.com/substratum/template/tree/master/app/src/main/assets/fonts

You are allowed to add multiple fonts and name them differently so they show up differently on the spinner dropdown in the app.

If you are looking to load up DOWNLOADED fonts from the internet, then download the ZIP from your source, extract it and navigate INTO the folder, until you find the folder "fonts" in "/system/fonts", and ZIP the whole contents of the folder up to form your new fonts pack.

This also supports fonts.xml within the font's ZIP file, so if you have any knowledge of this, you can add it in.

Example:
Code:
assets/fonts/SegoeUIWP8.zip
assets/fonts/ohds5.zip
Font ZIP root structure:
Code:
SegoeUIWP8.zip/font1.ttf
SegoeUIWP8.zip/font2.ttf
SegoeUIWP8.zip/font3.ttf

Overlays
If you had any experience with overlays on CMTE, it is rather the same format, except we added our own twists for enhanced theming capabilities for Substratum users.

If you would like to theme an application, first you need their package identifier. Let's say you wanted to theme Substratum (projekt.substratum), you will create a folder within "assets/overlays" and name it the package name and start following the app's resource structure, e.g.
Code:
assets/overlays/projekt.substratum/res/values/colors.xml

wXNQjc0.jpg


Type 1 Overlays
type1 can be a/b/c, as type1(a/b/c).xml at the ROOT of your overlay, and it does the Arcus way of moving it to res/values/type1(a/b/c).xml to replace Colors, Styles, Dimensions, Bools, Integers, Strings, etc...

An example of how to set up a Type 1 overlay:
https://github.com/substratum/templ.../main/assets/overlays/android/type1a_PINK.xml

Type 2 Overlays
type2 is a FOLDER, and they must start with /assets/overlays/overlay_name/type2_FOLDERNAME/ and this is a base extension (means it is NOT dependent on framework). You can have nav bars here, headers, special icons, etc. Type2's show up as the FOURTH SPINNER, if all type1 spinners have been used.

An example of how to set up a Type 2 overlay:
https://github.com/substratum/templ...main/assets/overlays/android/type2_Gryffindor

Type 3 Overlays
type3 is also a FOLDER, but these only show up BASED ON FRAMEWORK. So if you wanted to have a clear theme bundled in with your dark theme, just create a assets/overlays/android/type3_FOLDERNAME which houses ANYTHING a type2 can house, except you can add special files like ^attrs_private.xml. If done correctly, a base spinner will show up at the top of the overlay manager (in theme information and compiling it will cause ANY overlay with a type3_FOLDERNAME spinner inside the overlay to be built automatically.

An example of how to set up a Type 3 overlay from Framework, then another app
https://github.com/substratum/templ...sets/overlays/android/type3_Translucent Theme
https://github.com/substratum/templ...s/com.android.settings/type3_TranslucentTheme

Renaming Type Spinners
If you would like to rename the spinner names, you just need to create a file with NO EXTENSION on the root of the overlay folder:

For example, if I wanted to change the type1a spinner's name for a specific overlay, I would put it like this:
https://github.com/substratum/template/blob/master/app/src/main/assets/overlays/android/type1a

Step 4: Finalize your theme!
To get your theme to show up on Substratum, all you need to ensure that your hero image relates to your theme. The hero image DETERMINES the color of the automatic actionbar and nav bar colors based on the (0,0)'th pixel on your image.

https://github.com/substratum/template/blob/master/app/src/main/res/drawable-xxhdpi/heroimage.png

If you have a completely white image, your actionbar and nav bar will change to that color, and the text colors will determine whether the black text is more visible on that color, or a white color.

Step 5: Safeguard your theme! Don't let the pirates win!

DURING THEME DEBUGGING ON YOUR OWN PHONE
While debugging your application, you should be setting this to false so that it doesn't keep triggering antipiracy when you are working: https://github.com/substratum/templ...um/theme/template/SubstratumLauncher.java#L34

If you don't want to activate AntiPiracy
Set this value to false and the antipiracy check will report back true to Substratum every time:
https://github.com/substratum/templ...um/theme/template/SubstratumLauncher.java#L34

Getting started with AntiPiracy

If you are ready to get AntiPiracy set up, you must first compile your theme as a SIGNED production APK from Android Studio (Build -> Compile Signed APK). Then launch the signed apk on your device and your log will spit out an error log under the name "SubstratumAntiPiracyLog", and you want to copy and paste that into Line 76: https://github.com/substratum/templ...um/theme/template/SubstratumLauncher.java#L76

Then you would need to go to Play Developer Console. Then access to your app -> Services and APIs, generate a new API key for your app and then paste it in BASE_64_LICENSE_KEY on line 77: https://github.com/substratum/templ...um/theme/template/SubstratumLauncher.java#L77

Finally, if you would like to change where it checks for piracy, you should just comment out the .enable lines such as if you would not like to have Amazon App Store piracy checking, just disable it below this line: https://github.com/substratum/templ...um/theme/template/SubstratumLauncher.java#L76

DO NOT SHARE YOUR SUBSTRATUMLAUNCHER.JAVA FILE IF YOU OPEN SOURCE YOUR THEME AND WANT TO KEEP PIRACY!

For more information regarding type overlays and how to use them, please contact @setiawanjimmy and @jerbeck24 from the Substratum theme team!
 
Last edited by a moderator:

nathanchance

Senior Recognized Developer / Recognized Contribut
Jul 22, 2015
13,750
49,964
26
Mesa, AZ
nathanchance.dev
I have just finished rebasing all of our repos to 7.1.2. The primary branch has been renamed from n-mr1-rootless to n-mr2. I have updated all of our documentation to reflect this. If you were having issues picking our commits into 7.1.2, it should be much better now. I will update the LineageOMS organization when they update to 7.1.2.
 

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Substratum Release 670

Full Android O theming enabled (RRO2): You can now theme on API level 26 resources/Android O Developer Previews. Themers will have to stress test this and users MAY need to wait for themers to update.

Full Binderfacer Support: This is what we call the Interfacer module with Binder implementations. This is still under testing but if you're interested, you can pick the open commits on Gerrit to test! The commits are stable but we may want to add a bit more functionality very soon! Full credits to +Ivan Iskandar, +Surge Raval and +George G.!

Dynamic Refresh Mode: When installing a theme, it will automatically refresh the list of themes installed without triggering a refresh by swiping down. The code has been completely rewritten to detect new theme installations! To add on to this, there are many small things that normal people won't notice, but UI tweaks, animations and bugs have been fixed too!

Theme Authorization Fix: Themers theming using the latest template 7.0.4+, you may have noticed that using the substratum filter was erroring out. Please update to 7.0.5 and to the latest Substratum release 670+ to have full fixes ahead!

Note: You may need to manually restart SystemUI when fiddling with fonts depending on the version of Interfacer you are running. We will have a hotfix up very soon but for now, this is the only bug we know of!

Full changelog
Full translation import
Public release 670
Clean up and reformat
DynamicRefresh: Do not invoke toast on uninstall theme
DynamicRefresh: Send refresh message on theme uninstall
DynamicRefresh: Add support for IA to detect uninstalls
ThemeFragment: Auto-dynamic Refresh of newly installed themes
AdvancedManagerFragment: After removing lingering overlay, update index
ThemeInterfacerService: Blame Ivan's OCD
ThemeInterfacerService: SystemUI should be restarted on priority switch
InformationActivity: Properly locate parent/root node for fab shift
Internal testing release ALL HELL BREAKS LOOSE!
References: Fix certification check on notification
Internal testing release 665
Overlays: Adjust marginTop for text to select all overlays
Dynamic Gapps > Beans Gapps
Overlays: Add a bit of margin on top of toggle
Refactor and format after fast-forward
Arrays: Update Slovak Translation Title
ThemeFragment: Launch Showcase on No Theme Installed
Register receivers on app update too
Move profile related methods to separate class
Internal testing release 663
BootCompletedDetector: IntentFilters should be launched with app context
Internal testing release 662
Add app update receiver
BootCompletedDetector: Prepare for API26 changes to BroadcastReceivers
Internal testing release 661
AdvancedManagerFragment: Binderfacer should also be able to refresh!
PriorityListFragment: Fix broken animation when showing fab
Internal testing release 660
BinderService: Make the service sticky
Overlays: When mixAndMatch enabled, don't check cached global variable
Internal testing build 659
AdvancedManagerFragment: Toast does not go here...
Internal testing release 658
SoundUtils: Optimize
Overlays: Fix connection loss to list of enabled overlays from IA
Overlays: When updating a framework overlay, restart SystemUI as well!
ThemeManager: Restart SystemUI on framework change
SoundUtils: Don't wait when binderfacer on duty
Backend: Utilize OMS library's OverlayInfo states instead of specifying
ScheduledProfileService: Optimize things a bit
ScheduledProfileService: It's supposed to run with interfacer only
ScheduledProfileService: TODO done
Internal testing build 657
AdvancedManagerFragment: Change here and there
ScheduledProfile: Make it precise down to the seconds
Internal testing build 656
Overlays: InformationActivity.class > this.getClass()
References: Suppress a few warnings by generalizing the try/catch block
References: Null check for offensive check
FloatUiTile: Guard against NPEs on tile state
Overlays: Enforce adapter not being null before running actions
InformationActivity: If the position goes beyond or under, do not crash!
ProfileFragment: Guard against NPE when list() is null
LaunchTheme: Check if launch intent is null before adding extras
InformationActivity: Null checks for odd window refreshes
InformationActivity: Fix potential errors with Palette
ShowcaseTab: Do not call getContext() so many times
AdvancedManagerFragment: Effective NPE handling!!!
Overlays: Suppress warning when type1 default XML not found
ScheduledProfileService: Expose "Day" and "Night" strings
Binder: Add comments to the AIDL interface for each void
Binder internal testing release 655
Overlays: MixAndMatch mode should not be present for disable mode
Binder internal testing release 654
Update interface stub
BroadcastReceiver can't register another receiver
Overlays: No need to wait if binderfacer on duty
Only start BinderService if binderfacer installed
ScheduledProfile: Make sure binder service is started
Merge remote-tracking branch 'refs/remotes/origin/dev'
Binder internal testing release 653
ThemeUninstallDetector: Rewrite the SharedPref after theme uninstalled
ThemeUninstallDetector: Rewrite the SharedPref after theme uninstalled
References: Revive functionality of removing uninstalled theme resources
References: Revive functionality of removing uninstalled theme resources
Internal testing release 635
Overlays: Fix MixAndMatch mode not properly activating
Overlays: Fix MixAndMatch mode not properly activating
Binder internal testing release 652
Move screen off receiver methods to References
BinderService: Clean up
BinderService: Change some static objects
Binder internal testing release 651
References: Update Binder Interfacer version to start at 60
Binder internal testing release 650
BinderService: Migrate the old binder code from Application to Service
PackageModificationDetector: When there's no metadata, reject intent
PackageModificationDetector: When there's no metadata, reject intent
ScheduledProfile: IntentService > JobService
Initial commit for binderfacer implementation
References: Check if device is on O preview, if yes, disable soft reboot
Legacy: Fix up OMS check with a null check
CommitValidator: Disable on legacy devices
CommitValidator: Fix issues where all entries opened framework
Themers, let's start getting on deck with Android O! Shall we?
PackageModificationDetector: Fix check for legacy
restartService > forceStopService
Internal testing release 633
SettingsFragment: Adjust delay of cache a bit longer
PackageModificationDetector: Completely revamp the detection module
SettingsFragment: Adjust tap times to 7 for caching mode
Merge remote-tracking branch 'origin/dev' into dev
References: Update hash passthrough
Merge pull request #92 from rbaumert/patch-1
 

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Substratum Release 700

Overlay UI overhaul:
With this new update, we have added new manifest metadatas into each overlay package. This allows us to identify the overlays with a more concise and descriptive manner, shown in the screenshots below.
This means if you have the old UI, you must recompile the overlay so it updates - Substratum will handle the rest!

Binderfacer Integration Ironing Out:
With this release, we are also ready with our Binderfacer implementation! To use our release-ready commit, merge this into your TI repo while building your ROM: https://substratum.review/#/c/406/

ROM build.prop checker: We have revived our ROM build.prop checker originally written by @Mazda​. To get supported, please head over to our database and PR your build prop, including applying to be on the supported list if you are not already! NOTE: You must be on our supported list to be on our BuildProp list!

BuildProp: https://github.com/substratum/database/blob/master/supported_roms.xml
Supported List: https://docs.google.com/forms/d/e/1FAIpQLSdazHsGs084963mmFOM4ceAkJv0TaYUvcySxljw9SnFE7kNfg/viewform

Migration of Telegram Groups: We have moved our ontopic Substratum group to @substratumSupport!

Full App Rewrite/Rebase: These past few weeks, we have had many consistent rebases/rewrites of the app code, including a full refactoring (thanks @MSF Jarvis) of a bunch of Java files and XML resources. If your app crashes at start, please use the Rescue Me! option or flash a recovery ZIP!

Last but not least, Android O bug fixes: I also have been stress testing a bunch of functions on legacy and Android O. The experience is more ironed out than before and substratum automatically clears out the system idmapping caches now, including a proper removal of all symlinked files and folders and an invoke of Restore Theme would leave your device fully untouched!

Full changelog:
Full translation import
Public release 700
ShowcaseEntryCard: Make some changes for high DPI devices
References: Re-disable the fonts apply/reset dialogs
FontUtils: Move FontHandlerAsync to WeakReference
RecoveryFragment: Move FontsClearer to WeakReference
Fonts: Move FontsClearer to WeakReference
Deprecate the old Telegram @substratum link, use @substratumSupport
References: Type Annotation to @Nonnull for checkOMS()
InformationActivity: Simplify resource pulling
InformationActivity: Fix Harsh's derp
PackageAnalytics: Add a low memory device checker (<=130mb RAM)
Fonts: Disable the loading dialog as a whole
FloatUI: Dynamically change color of the overlay when disabled/enabled
FloatUI: Revamp the UI based on ManagerFragment
Overlays: Modernize the list row
Merge pull request #100 from Mazda/dev
If something is not supported is......unsupported
ManagerFragment: Add a delay when loading fragment to avoid stutters
PrioritiesAdapter: Optimize onBindViewHolder and reduce as much lag
ManagerAdapter: Optimize onBindViewHolder and reduce as much lag
LauncherActivity: Bring it back out to the root substratum folder
Substratum: Rename resource files to something easier to understand
Clean up after merge
Merge branch 'MSF-Jarvis-clean-up' into dev
Merge branch 'clean-up' of https://github.com/MSF-Jarvis/substratum into MSF-Jarvis-clean-up
ManagerFragment: Modernize the layout
PrioritiesFragments: Revamp UI of Priorities with more information
SubstratumCleanup : Massive resource cleanup
SubstratumCleanup: Cleanup translations for removed strings and unused drawables
ManagerAdapter: Distinguish between old and newly compiled overlays
ManagerFragment: Introduce a more advanced UI for overlays
SettingsFragment: Clean up
SettingsFragment: Allow custom names for build prop checks
Internal testing release 699
PackageAnalytics: Move to a centralized callable location
ManagerFragment: Always delete overlays.list on legacy devices
SRS: Update Legacy archive
ThemeAdapter: Allow for more package information in logs
Wallpapers: Asciibetically sort the list of wallpapers excluding spaces
Update Russian Translators
SettingsFragment: Clean up if statement block
ROMChecker: Default String should be null to trigger false
Legacy: Delete /data/resource-cache on removal command execution
ManagerFragment: The dialog is for legacy device only
Fix a typo and adjust case sensitivity
SettingsFragment: Debug users will open commits rather than repo
RecoveryFragment: Allow Legacy devices to have a proper Restore Theme
ManagerFragment: Refreshing the list will not lose the legacy overlays
OverlaysItem: Do not always trigger enabled on non-OMS devices
ManagerFragment: Fix up default text when the title cannot be loaded
FileOperations: Always create new vendor/overlay/* folder on compile
ManagerFragment: Add References bruteforceDelete to delete symlinks
ManagerFragment: This is not where view reacting calls should be
OverlaysAdapter: Check both Pixel and Nexus Legacy folders for overlays
OverlaysAdapter: Remove Legacy exclusions from package install state
ManagerFragment: Do not reload enabled status on legacy
SettingsFragment: Add a clause for props to be shown properly
SettingsFragment: Clean up ROM supported list
SettingsFragment: Do not ever check the whole build prop
Fonts: Remove TODO
SettingsFragment: Re-enable ROM check support
Overlays: Clean up cache extraction (Phase2) method
ManagerFragment: Remember to update the enabled overlays list
ManagerFragment: Use our newest algorithm to refresh the list
ManagerFragment: Dynamically refresh the list when uninstalling
MainActivity: Completely remove dirty flash dialog
Revert "Overlays: Re-enable listener for binderfacer"
MainActivity: Formulate a git hash version on debug builds in drawer
TeamFragment: Add Turkish translators
SettingsFragment: On debug builds, issue a warning before disabling TS
OverlayCleaner: Move functionality over to MainActivity class
SubstratumRebase: Refactor and format
SubstratumRebase: Untangle the fragments folder and clean up
Refactor and clean up after cherry-pick merge conflict
Overlays: Change toast to lunchbar
MainActivity: Remove dirty flash dialog and do it automatically
References: Suppress exception to grab app icon
SubstratumRebase: Move a bit more to it's corresponding folders
ManagerFragment: This is not where a toast goes!
Overlays: Re-enable listener for binderfacer
MainActivity: Immediately ask for outdated themes rather than a delay
SubstratumRebase: Clean up
SubstratumRebase: Completely rebase all Java files in the app (~127)
 

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Substratum Release 711 (May Update)

Migration to Manage Space Integration: What this means is that you can no longer clear data of substratum, but you will get a better view to see what to clear specifically. This place will be developed more in the upcoming updates. Huge thanks to +Ivan Iskandar again for working with me on this new implementation - one might call it a Telegram design layout!

This means that to clear your data you have two options:

- Settings -> Apps -> Substratum -> Storage -> Manage Space -> *
- Substratum -> Settings -> Manage Storage Usage -> *

Migration to Weak Referencing: This is more of a backend thing within the inner workings of how Substratum works, but when a configuration change occurs, with our WeakReference fusion of AsyncTasks, we are able to achieve fewer FCs and more stability throughout the app.

No, Icon Packs aren't coming, just yet: The security patch brings a TI62 update which contains all our necessary fixes to enable Icon Packs, however since it's still under heavy experimental testing, we are not officially endorsing the feature at all yet.

Resource Cleanup: To all Substratum OSS contributors, we have cleaned up a bunch of resources in the /res folder, ditching the idea of low-level API folders to separate specific layouts or drawables. We also cleaned out a few References to call a centralized function with different parameters rather than our previous implementation. Developers can easily workaround these new updates.

Showcase fixes: Previously on an orientation configuration change, the adapter view will not align properly after switching planes. This has been rectified by refreshing the activity (not consuming the configuration change) and the layouts are all working.

Full Changelog
Public release 711
Full translation import and add Dutch (with translators)
AOPTCheck: Properly check String Resource
Public release 710
Revert "SettingsFragment: Hide System Configuration title on Release builds"
Public release 708
FloatUI: Hide icon overlays
Public release 707
References: Reorganize the structure and calls to metadata sniffing
References: Clean up
References: We don't need to call ourselves, we are References
SubstratumUI: Call I/O complex tasks at start rather than on demand
StudioSelectorActivity: Do not allow direct activity launching
ShowcaseActivity: Remove land layout
Properly adjust manifest for configuration changes in Showcase
SubstratumRebase: Remove the low-API folder organization scheme
Strings: Adjust manage space dialog content
Reformat and optimize after fast forward
ManageSpaceActivity: Warn user for app closing before proceeding
ManageSpaceActivity: Close app on reset configuration
MainActivity: Always try to show the old themes option
References: We're resetting app configuration, not clearing data
References: Delete this particular prefs
ManageSpaceActivity: Move all operation to AsyncTask
SettingsFragment: Add a button to launch Storage Usage
ManageSpaceActivity: Finish the activity on configuration clear
ManageSpaceActivity: Add loading text
RecoveryFragment: Classify things
ManageSpaceActivity: Delete all unimportant prefs
SubstratumUI: Revamp the Storage Usage UI
References: Also reset display old themes option
Add Manage Space activity
FirebaseAnalytics: Just pull from the cloud once a day
Overlays: Show progress bar when enable and disabling
Beta release 706
Refactor and format after fast forward and pull request
SettingsFragment: Hide System Configuration title on Release builds
Merge pull request #101 from MSF-Jarvis/dev
SettingsFragment: Make sure to catch network errors properly
StudioPreviewActivity: Use WeakReference for all AsyncTasks
IconStudio: Move restore system icon option to Recovery fragment
ThemeInterfacerService: Use main looper for handler
Don't touch icon overlays for app overlays related options
ThemeUninstallDetector: Remove overlays on icon pack dashboard removal
ThemeUninstallDetector: Send refresh message if not ending with .icon
MainActivity: Properly allow OverlayCleaner to filter icon overlays
CompilerCommands: Use Substratum_IconPack for identifying icon overlays
StudioPreviewActivity: Respect the Activity Lifecycle for AsyncTasks
StudioPreviewActivity: Remove excess logging
StudioPreviewActivity: Check if intent valid before continuing
Add interfacer as blacklisted package to theme
Prevent CTS Verifier app from getting themed
Update interfacer AIDL for configuration shim
RecoveryFragment: Try to dismiss progress dialog on destroy
Overlays: Add another condition to mix and match
StudioPreviewActivity: Optimize the checks for overlays
IconStudio: Enable full support on TI61 and authorized users
IconStudio: Revive functionality to compile and install icon overlays
IconStudio: Fix up broken aopt call for application icon name pull
IconStudio: Bring it back permanently for authorized testers
Resources: Clean up
Beta release 705
SubstratumBackend: Enable 2017 Pixel devices
Refactor and format after fast forward
Beta release 704
Remove useless parents
PriorityAdapter: Change deprecated method
ManagerAdapter: Change deprecated method
MainActivity: Use WeakReference for now-static-AsyncTasks
RecoveryFragment: Use WeakReference for now-static-AsyncTasks
RecoveryFragment: Generalize restore function task
Overlays: Error report adjustments
 

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Substratum Release 730

Auto Overlay Upgrade:
Substratum will now automatically upgrade the overlays for a theme that is updated. If a theme is updated and this option is enabled, the overlays installed from this theme will also be upgraded. This means you must recompile your pre-existing overlays to update the metadata! (Optional)

Auto Target Overlay Upgrade:
Substratum will now automatically upgrade the overlays for a target package that is updated. If an app like Youtube is updated and this option is enabled, the overlays installed for Youtube will also be upgraded. This means you must recompile your pre-existing overlays to update the metadata! (Optional)

Auto Overlay Found Notification:
Substratum will also notify you if you installed a new application, it will notify the user if a theme has that overlay themed. (Optional)

Substratum UI Changes: To iron a few things out, we have disabled Split-screen mode on the application so that a forced configuration change will not affect compilations.

Profile Compilation: Substratum will now automatically compile the overlays for a profile. This means you must recompile your pre-existing overlays to update the metadata before creating a new profile!

8.0.0 Profile Support: The template is not fully ready yet but for daring testers, you can give it a shot!

Full Changelog
Full translation import
Merge pull request #105 from sirmordred/dev
Substratum: Some more nitpicks
Revert "Substratum: Handle ThemeInterfacerService operation failures"
Substratum: Fixup build
Substratum: Handle ThemeInterfacerService operation failures * Make more solid
Substratum: FileOperations: Reduce the chance of File operation failures
Substratum: nitpicks
OverlayUpdater: Take account for errored builds
ManagerFragment: BypassRestart boolean for disabled Android/SysUI APKs
ManagerFragment: Sort overlays and clean up detection logic on legacy
ThemeManager: Also take account for checking legacy overlays
Reformat and clean up after pull request
Merge pull request #104 from sirmordred/dev
AndroidManifest: Lock the app from splitscreen mode
Substratum: Some improvements
Internal beta release 724
MainActivity: Do not hide showcase icon in action bar by fragment
String consistency after pull request
SubstratumUI: BlurView styles should show underlying actionbar
ManagerFragment: Refreshing the list and no overlays found = blob!
ThemeEntryCard: Fix advanced information alignment
Strings: Touch up on grammar caught on last night on G+
Merge remote-tracking branch 'origin/dev' into dev
Merge pull request #103 from DumF0rGaming/patch-1
Improvement
ProfileFragment: Properly hide progressbar on complete restore
ProfileFragment: Set dialog cancellable and wakelock
ProfileFragment: Fix newly compiled overlays doesn't get enabled
FloatUITile: Only enable it if the user has clicked on the icon once
OverlayUpdater: Add theme updating overlay capabilities
ProfileFragment: Fix proper string
ProfileFragment: Move the strings for compiling overlays to /res
OverlayUpdater: Fix after overlay metadata rebase
Merge pull request #99 from beanstown106/dev
Uncapitalize the branding in preparation for pull request
OverlayUpdater: Add more descriptive titles
Automatically compile missing overlays when restoring profile
ScheduledProfileService: Use new profile state methods
PriorityAdapter: Adapt with new overlay metadata
ProfileFragment: Use new overlay state structure
ManagerAdapter: Adapt with new overlay metadata
ProfileManager: Add basic method of new profile state file structure
Use proper variant names for overlays manifest
ProfileFragment: Change backup location info
OverlayFound: Use a different icon to distinguish
Internal beta release 722
OverlayAlert: Remove unnecessary layout
Overlays: Try to cancel compile notification on destroy
Optimize and reformat everything!
OverlayAlert: Introduce a checker to see newly installed packages
OverlayUpdater: Allow user to toggle OverlayUpdater (default=false)
OverlayUpdater: Async + Notification
OverlayUpdater: Introduce functional method of automatically rebuilding
OverlayUpdater: Introduce an initial check for updated target packages
Internal beta release 721
ThemeLaunchActivity: Add missing theme extras not passed through intent
Internal beta release 720
ThemeLaunchActivity: Fix theme extras not passed through the intent
Resources: Allow Telegram Build Bot to build Icon Studio-ready builds
Internal beta release 719
SettingsFragment: All exceptions will return network error string
Internal beta release 718
ManagerAdapter: Take account for cache directory and stop FCing
ManagerFragment: Uncheck everything on action completion
Overlays: Consume an activity disconnect
Internal beta release 717
References: Just log it.
References: Do not log by boolean, just do debug builds
References: Set the default theme log to debug builds
AndroidManifest: Change the default style again
References: Call the PreferenceManager rather than calling an instance
References: Do not injectAOPT every single time, only once!
SubstratumBuilder: Don't forget the variants
References: Clean up
References: Remove unnecessary logging
Internal beta release 715
ThemeLaunchActivity: Change default theme
 

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Substratum Release 801
Substratum Template 10.0.0 release


Samsung SeX/TW Rootless Integration: I'd like to thank a bunch of friends who helped me test this out vigorously. We added this support as a small paid addon so you can treat it as a gesture to help us :) At the current moment, only Nougat based Touchwiz/Substratum Experience ROMs are supported (including custom ported ROMs for older devices)

Addon download: https://play.google.com/store/apps/details?id=projekt.sungstratum (may take a few hours to show up)

- NOTE 1: Android System, SystemUI + elements and Settings overlays are disabled from being shown by default, you can enable this in the app's settings at your own discretion!
- NOTE 2: We have our own XDA thread for this: https://forum.xda-developers.com/apps/substratum/7-0-substratum-sex-tw-beta-t3620796
- NOTE 3: We also have a public Samsung Substratum chat: https://t.me/SeXstratum

Android O DP3 OMS Support (rooted): Thanks a lot to +Ivan Iskandar, we have OMS overlay support on O DP3 meaning that you don't have to reboot for overlays, but you will need root!

Substratum Template 10.0.0 Full Support with Encryption and official partnership with SlimRoms: It is with great pleasure to announce that our 10.0.0 template allows adding support for Slim Theme Engine. We are unable to provide support for their theme engine itself and the bugs it might get/have with themes, but please join their SlimRoms community here to request support: https://plus.google.com/communities/104509876514579429216 (As far as I know, they only support overlays and bootanimations). We would like to thank +Anthony King and +Griffin Millender for enabling encrypted assets on the template!

Template 10.0.0 - Themers: What does this mean for you? This means you can enable Slim support (default disabled) if you are ready to theme for Slim ROM.

Template 10.0.0 - Encrypted Assets: This is the beginning of a new theming standard where we encrypt all our assets on-the-fly during compilation. What this means is that all the files built using this template will be encrypted within the APK rather than overriding your original files in /assets, so you don't have to worry about data loss. You should however keep your theme backed up or under a GitLab/BitBucket private repo as this is good practice in version control. All the files are encrypted into .enc format with a 128bit AES algorithm security so at least we can also try to keep kanging to a minimum!

This also means that if you LOSE your original source you cannot decompile your own theme and copy your assets, as the assets are encrypted with a randomly generated key every time you compile per APK (you don't need this backed up, you don't even need to worry about it if you're not stealing your theme!) This also prevents the recompilation of themes by copying the generated .enc files into a new template.

Template 10.0.0 - Kotlin Integration: With the introduction of final APIs for Android O, we have migrated the template to Kotlin (kt-n branch) and thus deprecated our Java branch (java-n). It is HIGHLY RECOMMENDED to completely wipe your old template in favor of this new system (obviously, keeping assets folder backed up).

This also means that if you were running a third-party modified template with dialogs/dashboard apps built in, this will BREAK it.

Template 6.0.3/10.0.0 - Samsung Integration: There's a new flag to ensure that your theme is supporting the Samsung framework. Give it a go! This will toggle whether to show Android System, SystemUI, Settings and the small side elements by default!

Full changelog (chronological from 731)
Public release 801
InformationActivity: Bring out clean installed overlays for OMS
Full translation import
Public release 800
We're nearly there...796
Update dependencies
Final touches to Samsung Integration
Overlays: Allow Samsung users to batch install/uninstall
ThemeAdapter: Allow Samsung users to uninstall themes too
MainActivity: Adjust the legacy dialog for Samsung users
Internal beta release 795
Merge remote-tracking branch 'origin/dev' into dev
References: Do not show the icon pack beta to release builds
ThemeManager: Ignore pre-installed overlays
ProguardRules: Retain OverlayManager classes
Internal testing build 794
References: Consolidate complexion call and clean up
SettingsFragment: Fix FC on OMS ROMs
Internal testing build 793
InformationActivity: Speed, speed, speed!
Internal testing build 792
Refactor and format all files
SamsungIntegration: When addon is installed, always finish the activity
BootCompletedDetector: Relocate app heavy load on app start
SamsungIntegration: Allow the user to toggle hidden overlays
SamsungIntegration: Move normal telegram link to Samsung
RootRejectedLoader: Add support for Samsung detection
SamsungIntegration: Prepare for public release
AOPTCheck: remove the memory overhead caused by the unnecessary check
Adjust notification channel
Enable Proguard
Use AOSP apksig library to sign overlays
Update gitignore
Add basic sungstratung addon checker
Add calling package name extra to get keys intent
Merge pull request #111 from Thecrazyskull/dev
References: check whether activity instance has been destroyed before accessing preference manager
References: Remove package data schemes from app crash receiver
Update gradle wrapper and plugin
Overlays: Check for encrypted themes by the manifest value
Overlays: Instantiate ActivityManager on fragment thanks @Thecrazyskull
Internal testing release 791
SamsungIntegration: Only show the overlay hiding lunchbar once
SamsungIntegration: Fix the installation status checker on OverlaysTab
SamsungIntegration: When overlays are installed, auto close processes
SamsungIntegration: Try to kill background processes on receiver pickup
LeakCanary: Temporarily disable LC on Samsung builds (REVERT THIS!!!!!!)
SubstratumIntegration: Do not allow Settings Icons
SamsungIntegration: Add a null checker just in case
SamsungIntegration: Do not crash on LogChar error
SamsungIntegration: Add an overlay filter for Samsung theming
SamsungIntegration: Ensure the error message doesn't show up on OMS
SamsungIntegration: Ensure the implementation is self contained
SettingsFragment: Do not add newline by default
SamsungIntegration: Remove newline on platform summary
SamsungIntegration: Disable cache mode
SamsungIntegration: Hide switch and fab menu divider
SamsungIntegration: Disable all overlays when receiver is triggered
Private Samsung testing build 790
SamsungIntegration: When uninstalling any app, update the Overlay tab
SamsungIntegration: Hide the overlay disabling card, we can only do 1by1
SamsungIntegration: Enable manager fragment to uninstall & list overlays
SamsungIntegration: Hide root functions from overflow menu
SamsungIntegration: Hide unused entries, change toolbar name, settings..
SamsungIntegration: Root dialog should not be shown!
MainActivity: Hide Samsung unsupported options from drawer
Overlays: Show toast when overlay is installed on Samsung
SamsungIntegration: Ensure that late install flag only installs on OMS
Overlays: Automatically refresh list when a new package gets installed
OverlaysAdapter: Properly show installed Samsung overlays
SamsungIntegration: Failcases for the user when they do stupid ****
SamsungIntegration: Enable uninstalling of overlays as well
References: Add another debug key variant
SamsungIntegration: Initial commit to get overlays freshly installed
Support caching mode for new template
Substratum: Update API level checker for notification channel creation
ProfileFragment: Support new template for restoring missing overlays
ThemeManager-disableOverlay: Fix crash when overlay list is empty
References: Implement Samsung device checker based on permissions
References: Add a function to enable developers to run bash commands
SoundUtils: Dismiss dialog once applied
FontUtils: Fix mContext null crash during forced configuration change
EncryptedAssets: Handshake should not launch substratum
EncryptedAssets: Disable encryption detection for extras
FileOperations: Remove excess separator
Public beta release 782
Public beta release 781
EncryptedAssets: Properly assign encryption value as null checks
Update travis.yml with changes for Android API 26
Merge pull request #110 from MSF-Jarvis/dev
Internal housekeeping build 780
EncryptedAssets: Suppress warnings for non encrypted themes
OverlayUpdater: Staticize and Reorganize
EncryptedAssets: Perform handshake with theme package to update overlays
Internal housekeeping build 770
EncryptedAssets: Disable for BootAnimations, Fonts and Sounds
Add adaptive icon support
Break free from hardcoded checker
References: Change how we detect OMS
only use checkOreo method and update for odp3
build: Update dependencies
build: Update build tools and SDK version
Full project refactor/optimize
EncryptedAssets: Key retrieval from template initial commit
References: Adapt to the newer template action detection algorithm
EncryptedAssets: Fix application of bootanimation on decrypted devices
OverlaysItem: Fix missing icon
EncryptedAssets: Invoke fragmentalized static objects after fast forward
EncryptedAssets: Add decryption method for fonts
EncryptedAssets: Add decryption method for sounds
EncryptedAssets: Add decryption method for boot animations
EncryptedAssets: Decrypt the bootanimation too
EncryptedAssets: Copy all the types as well
EncryptedAssets: Initial parsing and compilation support
EncryptedAssets: Add initial checking for encrypted assets
Reformat after fast forward
Center all TextViews on the previously simplified layout
MainActivity: Remove Library fragment animation for now
MainActivity: Change deprecated MenuItemCompat method
MainActivity: Remove all leaky statics
MainActivity: Move interfacer authorization receiver with another receiver
MainActivity: Don't hardcode fragment classes name
build: Rename odp flavor
Simplify TextView with images
Go castaway
Remove unused imports
Remove deprecated notification methods
build: update gradle plugin
build: Fix google-services plugin not detected
Use the new complicated notification channel
Properly register receivers for packages change
Use latest preview build tools and add odp flavor
Register broadcast receivers on application class instead
Fix string concatenation in loop lint warning
SubstratumUpdateReceiver: Check for intent action
Hopefully fix the type2 persistence on cache mode
Overlays: Make JobReceiver class non-static
Fix progress indicator position
Overlays: Fix lint warnings
Overlays: Dramatically reduce scrolling lag on first launch
build: Update dependencies and adjust
Fix compile error with Android Studio Canary 2
build: Update build tools
SubstratumRescue: Do not wipe /sdcard/substratum
SettingsFragment: Fix show template version default value
PackageModificationDetector: Use theme icon for notification
Beta release 760
Full translation import
Clean up and format
Recovery -> Restore
TeamFragment: Completely revamp the UI
SettingsFragment: Hide CrashReceiver on Stock OMS
ThemeManager: Check for package when listing overlay using shell method
Gradle: Allow for bots to start building substratum on canary sources
Upgrade the Image Cropper Library
gitignore: Add release folder
build: update dependencies
build: buh-bye Jack
SettingsFragment: Do not show support status at all for stock OMS
SettingsFragment: Hide About Interfacer on Stock OMS
ThemeManager: Allow stock OMS to disable all overlays
Overlays: Revive ability to enable/disable overlays in the manager
RecoveryFragment: Hide fonts if not supported
BootAnimationManager: Clean up the bootanimation clearing function
FileOperations: Just move everything on any exception
BootAnimationUtils: Restore functionality for stock OMS
FileOperations: Root commands don't check source
AppShortcuts: Only v25+ and remove FloatUI shortcut
MainActivity: Remove unnecessary MenuItem and method output types
Clean up and reformat
BootAnimationUtil: Rewrite to be static and O DP2 aware
Upgrade to Gradle 3.5
SoundUtils: No TI, then do not try to dismiss an uninvoked dialog
Clean up and reformat after cherrypick
References: Centralize the fonts checker
SettingsFragment: Set a proper flag for support check
SettingsFragment: Certified even without Interfacer
Hello, O's OMS
Merge pull request #108 from nathanchance/access-service
AndroidManifest: Add ACCESS_SERVICE permission
Merge pull request #106 from sirmordred/dev
 

Attachments

  • Screenshot_20170625-163548.jpg
    Screenshot_20170625-163548.jpg
    218.2 KB · Views: 1,535
  • Screenshot_20170625-163558.jpg
    Screenshot_20170625-163558.jpg
    194 KB · Views: 1,525
  • Screenshot_20170625-163542.jpg
    Screenshot_20170625-163542.jpg
    183.8 KB · Views: 1,555

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Substratum Release 805

Visual Transition between Floating Action Menu and Snackbar exit transition: This one was more of me nitpicking, where I kept noticing small visual bugs when a user starts to go faster than the app during a snackbar's visibility on the view. Now it will dynamically show visibility depending on its state without disrupting the APIs involved.

A Youtube Video to help demonstrate:


Type 2 Spinner Default Texts: Apologies for the previous rollout where certain users found out their themes were showing "type2 variant..." instead of the default text. This was remedied and now unencrypted, encrypted and missing type2 default files now show proper texts.

LogChar Changes: With the 805 rollout, we have committed to a less intrusive way to alert the user when they experience an erroneous compilation issue by showing a snackbar with a nice message and an option to open up the LogChar.

LogChars also save by default now on your internal SD so if a configuration change was forcing Substratum to refresh while the dialog is opened, you can now browse in /storage/emulated/0/substratum/LogChar Reports/ folder to obtain the log and send it to your themer.

Full Changelog
Strings didn't want to be cleaned up earlier
Public release 805
Full translation import
SettingsFragment: Allow the user to toggle automatic LogChar saving
ManageSpaceActivity: Allow the user to clear logs
Overlays: Autosave LogChar files; don't show LogChar by default
InformationActivity: Revamp Fab Click to Lunchbar Dismiss Transition
ThemeAdapter: Do not allow theme to be uninstalled if system app
Overlays: Adapt to no-type2, type2 decrypt and type2 encrypt
Overlays: Nick said the fix needs a fix
Overlays: Fix default type2 name not showing
 

Attachments

  • Screenshot_20170714-032007.png
    Screenshot_20170714-032007.png
    232.4 KB · Views: 877
  • Screenshot_20170714-032030.png
    Screenshot_20170714-032030.png
    246.7 KB · Views: 855
  • Screenshot_20170714-032128.png
    Screenshot_20170714-032128.png
    192.9 KB · Views: 847
  • Screenshot_20170714-032418.png
    Screenshot_20170714-032418.png
    123.7 KB · Views: 817
Last edited:

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Substratum Release 812

SystemUI and Android System Crash Detection: A HUGE thanks to +Harsh Shandilya for implementing this feature upstream! This means that 3 crashes of SystemUI or Android System, now causes Substratum to automatically disable the overlay, just like a normal overlay crash. Back then SystemUI and Android System will crash with the overlay enabled indefinitely. This doesn't need any new commits on platform for this to work!

Background Services Fix: We temporarily disabled one of the features where background services were killed no matter what theme service you were on (OMS/Legacy) to try and prevent a noticeable asset refresh the next time you launched an app. This will still take effect on Samsung devices, but we will look into what kind of workaround we can lock this feature down for OMS devices too, so that we can ensure apps like apps with services that keep an app open (which prevents assets redraw) will be themed without a reboot, such as Google Search! Thanks a lot to +Faiyaz Sheth for finding the section of code that was causing the background service to die and +Harsh Shandilya for ensuring the code worked!

Legacy Theme Overlay Uninstall: A bug was fixed where when you tried to uninstall an overlay from inside the theme, it would not uninstall properly. Thanks to +Ivan Iskandar for finding the source of the issue!

Full Masquerade Deprecation: Masquerade is fully EOL from this version onwards. Please move to a Theme Interfacer build to continue using substratum.

Themers: We ensure that people on Xposed N now shows up on logs. Whether you provide support is on you! :)

Full changelog
Public release 812
SettingsFragment: Hide Samsung Dangerous overlay option on legacy
Clean up all of the XML files
MainActivity: Fix String build after translation refresh
ProfileFragment: Fix String build after translation refresh
Clean up and reformat after fast forward
ProfileFragment: Fix missing String pointer from consolidation commit
Update Gradle dependency for Android Studio Canary 8
Full translation import
Overlays: Only kill background packages on Samsung devices
ShowcaseActivity: Change search URL to samsung themes on samsung devices.
MainActivity: Hide the button to sungstratum play store by default
Overlays: Fix overlays with type3 isn't removed properly
AppCrashReceiver: Simplify switch logic a bit more
AppCrashReceiver: Remove the SystemUI crash count pref earlier
AppCrashReceiver: Change the if-elif-else ladder to switch
AppCrashReceiver: Handle SystemUI crashes properly
TeamFragment: Add LunchBar to all exception catch branches
AppCrashReceiver: Fix Harsh's derp - variable not declared before usage
Refactor and format after cherry pick
References: Slightly tweak LogChar file names
AppCrashReciever: Only log overlays to be disabled if there are any.
References: Slightly change up how checkPackageSupport works
Substratum: Sync down blacklisted packages at boot time
ManagerFragment: Add dismiss button on reboot dialog
OverlayFunctions: Don't restart SystemUI on legacy
BootCompletedReciever: Fix lint warning for clearSubstratumCompileFolder
RescueActivity: Also disable SystemUI overlays
AppCrashReciever: Improve logging
MainActivity: Don't create CountdownTimer object
Substratum: Cleanup LunchBar classes
Long live masquerade
ThemeManager: Don't restart SystemUI on framework overlay change
SamsungIntegration: Allow for devs to toggle whether to hide overlay
MainActivity: Show a toast when LogChar reports are cleared
References: Clear the logchar auto cleanup prefs on reset
Substratum: Add preference to auto clean saved LogChar reports
OverlaysItem: Remove unused method
References: Fix logspam in isAuthorizedDebugger
SubstratumRebase: Rebase on lint from Android Studio Canary 7
Substratum: Add a few null asserts
References: Clean up lint again
References: Surround dynamic shortcuts assignation with null checks
References: It is no longer a safe, peaceful world...
SplashScreenActivity: Apply the SharedPrefs following completion
Update gradle
References: Lint cleanup
References: Clear the restore warning pref on configuration reset
ManageSpaceActivity: Remove unused Context variable
RecoveryFragment: Make sure the restore info dialog gets seen
Substratum: De-duplicate dialog okay/cancel strings
MainActivity: Change FloatUI permissions toasts to AlertDialogs
 

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Substratum Release 818

This is a rather huge update, thanks to all the testers, and would like to welcome @MSF Jarvis to the development force!

To everyone, our Telegram chats are now consolidated to one public chat holding the links to every other chat. We found out that the links being reposted in each supergroup description was a bit too much, so we instead replaced it with a link portal. We have on-topic chats (strict, subs only) and off-topic chats (that are full of current generation spicy memes!), to join, click here! https://t.me/substratum

Substratum Overlay Signature Change: Thanks to simordred, we now use a precompiled signature, meaning that we eliminate the possibility that if someone wipes the app, the signature that was generated would not be wiped and would fail to install over a current overlay that isn't the same signature. What this means is that we have added a dialog to alert the users when a pre-815 overlay was found, so we kindly ask you to clean out your current overlays so that you can freely update to new overlays in the future.

Substratum App Cleanup: We have removed a bunch of redundant code recently relating to things that aren't released as well as done a bunch of extra null checks all around. We removed a few tweaks that weren't too popular in Settings under the theming section (Dynamic Nav/ActionBar) and we also removed the sheet that pops up asking if you would like to show outdated themes (it is still toggle-able in settings).

I would also like to thank @MSF Jarvis and @Surge1223 for checking a whole ton of the files for redundancies and cleaning out everything, you guys were awesome! Finally, we'd like to thank @maxwen for the tip on app icons and drawable casts!

Beta features now ironed out with newest Encrypted Assets: Previously our beta features of automatically recompiling installed overlays were not automatically compiling but instead, force closing Substratum. We have remedied this issue, thanks a lot to +Harsh Shandilya!

Substratum Rescue Updates: Thanks a lot to @Surge1223, we now ensure that all rescue archives are fully up to date at all times! This means that you will never be flashing an old rescue archive again!

Legacy/RRO/Samsung: We have added a new Setting for you to manually adjust overlay priority! This allows you to control how prioritized your overlay is before compiling. We have options for you to have priority counts 1-999! (255 is default)

Themers: By popular request, we have updated the LogChar share format so that it also includes the Theme Name in the file!

Full Changelog
References: Give a more descriptive log to detection of OMS
Public Release 818
References: isOMSRunning fallback to cmd overlay root check for O DP4
Strings: Change SystemUI restart button for enable/disable
Public Release 817
ShowcaseTab: Change Android O cast derp
Public Release 816: It's time!
Substratum: Add all missing casts
It's not that great to uninstall all overlays
ThemeManager: Allow bypassing SystemUI restarts
MainActivity: If user's overlays are outdated, alert them to uninstall
Reroute Telegram links to Link Portal
BootAnimationManager: Fix bootanimation application
References: Correct OMS detection logic
SplashScreenActivity: Do you even english bro
Substratum: Nuke incompatible firmware warning
Substratum: Nuke the dynamic_{actionbar,navbar} prefs
AppIntro: Don't let it to be seen again after clearing data
References: Properly initialize values on succession of AppIntro
Build.gradle: 3.0.0beta1 -> beta2
References: Default to 6.0.0+ template
MainActivity: Do not create a CountDownTimer object
MainActivity: Nuke the Pre-6.0.0 template chooser
Substratum: Fix ThemeUninstallDetector fail
AOPTCheck: Correct FileOperations#copyFromAsset call
WeakReferences: Prepare null check garbage collection per async phase
FirebaseAnalytics: Remove unused method
FileOperations: Fix Oghuzan's derp
Subs: Remove unneeded dependency
Subs: Use pre-generated keystore * And fix some nitpicks
SubstratumBuild: Update support libraries to 26.0.1
TravisCI: Update build tools to 26.0.1
Proguard: Don't warn about the new OMS jar classes and methods
ManagerFragment: Clear out icon overlay filtering logic
Refactor and format after cherry-picks
Proguard: Fix up the new OMS library for release builds
LogChar: Remove the space in the folders name. This is not Windows
Gradle: Update to 3.0.0-beta1 and build-tools 26.0.1
OMS API update test part2: Include new jar for testing next interfacer This new jar has the updated stubs and api updates for current testing
References: Change EXTERNAL_STORAGE_CACHE variable to be full path
API 26 Compatibility: Allow building for target and min api 26
Overlays: Refactoring of the overlay tabs
References: Use ActivityManager to detect OMS
SubstratumRescue: Make sure substratum dirs exist and force copy rescue zips
AOPT: update to new binaries after several commits worth of change
ManagerFragment: Correct legacy warning dialog logic.
ElevatedCommands: Remove unused methods
SettingsFragment: Test maximum value in priorities
InformationActivity: Debug the hero image
Strings: Update our homepage
Overlays: Send the theme name in LogChar attachement
Profiles: Mark it as a beta function for now
RRO: Max out priorities as default
References: Re-ensure further checks for null before comparison
ManagerFragment: Add warning for legacy users
SettingsFragment: Allow user to change the RRO priority for overlays
EncryptedAssets: If the theme target is not encrypted, do not unload LBM
References: Add getBitmapFromDrawable
PackageModificationDetector: Handle cases where app icon is not BitmapDrawable
References: Guard against possible null build date prop
References: Clean up color checker comment and upgrade gradle
Revert "References: Fix ugly method"
References: Fix ugly method
SubstratumCleanup: Icon pack support leftover cleanup
TeamFragment: I'm team now :D
PriorityAdapter: Address lint
SamsungIntegration: Unify fingerprints to prevent mischecks
SamsungIntegration: Clean up Firebase calls
SubstratumActivity: Supress useless lint warning
Fix future derp
Tiles: Use startActivityAndCollapse for launching intent
BootCompletedReceiver: Don't fetch packages from firebase
Substratum: Remove icon pack tooling
RIP IconStudio
gradle: update to alpha9
Move build script to its own repo
Fix gradle.build for signing configuration
makeapk: Use APK_OUT more and fix APK_NAME
makeapk: Fix fails
makeapk: Improve help text for version flag
Initial automated build script
travis: Cache ANDROID_HOME
Try to withdraw package list on every app launch
Add encrypted travis to Slack integration
There's still a little bit of freedom
InformationActivity: Dismiss dialog before running any actions
Overlays: Fix up background app killing logic
Remove System Independece Mode option
No need for this fix anymore
Update apksig to 2.5.0-alpha-preview-2
Revert "Revert "debug builds: show git HASH on filename & in Settings""
SamsungIntegration: Allow silent installs to show progress bar
SamsungIntegration: Allow for users with root to do things silently
InformationActivity: Dramatically speed up hero image loading
InformationActivity: Attempt to cancel AsyncTask onDestroy
Overlays: When encrypt mode fails, show a Lunchbar alerting the user
Provide a more descriptive error message for TI exception
Upgrade build.gradle dependencies
 
Last edited:

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Substratum Release 820

Substratum Crash Handler: We now have a way to catch force closes and an easy way to send them to us! If you face a crash, please use our new UI and click stack trace, then send it to us through our JIRA!

Type4 Introduction: This allows themers to add support for assets theming, such as Telegram Emojis or SwiftKey Themes! Possibly even Gboard assets! Check out +Harsh Shandilya, +OhayouBaka!, +Sai Prasanna, +Andrew Traynham and +Bryan Owens' themes to get a taste of Type4s!

ZipAligning Overlays: All compiled overlays with newer versions of Substratum will now be ZipAligned for overall system performance, HUGE thanks to @arter97! This should solve many system performance issues if you faced any in the past! This will also set a standard for overlays compiled from now on! No new platform commits needed, all will be handled by our substratum in-app compiler!

A bunch of cleanup: Thanks a lot to @iskandar1023 and @MSF Jarvis, we have cleaned even more of the underlying code including the splash screen codes and overlay manifest code! Also thanks a lot to everyone in our CI-feedback channel on Telegram for reporting bugs immediately to us, including @Mazda, @r1l_Alex, @mosimchah, @fhem and many more! The latest build has been serving us greatly the past few days, including many of the force closes being resolved!

UI Changes: We have made the LogChar dialog more like the Crash Activity's dialog, more materialized and streamlined. We also moved the toggle all overlays button in the Overlay List fragment, out of the floating action menu, so people know it's there!

Full changelog:
SubstratumCrash: Allow the crash log to be selectable
ProfileManager: Take account for the other crasher
ProfileManager: Ensure null checks are put in place if overlay outdated
ManagerFragment: Bring out the toggle from the floating menu
Substratum: Start fixing lint warnings
AppCrashReceiver: If no overlays are enabled, bail out early
FloatUI: Update the FloatUI button
Type4: Allow FloatUI to show proper type4s
Introducing Type4 assets overlaying template
Overlays: Suppress exception print when /res is empty
Overlays: Drop the progress wheel lower
Update contributor list
InformationActivity: All toasts to lunchbars, omnomnom...
InformationActivity: Glide; do not use any cache
SubstratumBuilder: Fix late install for special overlay
CompilerCommands: Remove log printing entire manifest
SubstratumCrash: Filter out the list of exceptions to Resources.java
EncryptedAssets: Update the snackbar with proper instructions
RecoveryFragment: Safeguard the context while uninstalling overlays
Revert "GarbageCollection: Call GC on reloads of fragments/activities"
References: Null check when it detects what device is being used
OverlayFunctions: More crash fixes
MainActivity: Do not show outdated dialog when the user is too fast
Refactor and clean up
GarbageCollection: Call GC on reloads of fragments/activities
LogChar: It's no longer a figure of speech, it's a noun
LogChar: Completely materialize the UI
SubstratumCrash: When the app crashes randomly, catch it
Overlays: OnResume should refresh the fragment list
CompilerCommands: Append missing Substratum_Target metadata
Substratum: Fix tinting for Jira navdrawer icon
CompilerCommands: Completely rewrite how we generate overlay manifests
ThemeManager: Simplify the shouldRestartUi methods
gradle: Update dependencies
gradle: Add option to use D8 preview
Substratum: Change Jira link to service desk
MainActivity: Add Jira to the substratum resources section
ThemeManager: We changed the method name
ThemeManager: Only restart systemui once on overlay uninstall
OverlayFunctions: Fix various crash when switching overlays
i don't know what to say about this tbh
SplashScreenActivity: Add timeout for each wait loop
SplashScreenActivity: Always show loading spinner
Disable Firebase crash collection on debug build
OverlayFunctions: Do not hardcode sysui reboot
Merge pull request #126 from arter97/dev
ZipAlign APKs
AOPTCheck: avoid unnecessary object creation
 

Attachments

  • Screenshot_20170818-155930.png
    Screenshot_20170818-155930.png
    86.4 KB · Views: 1,586
  • Screenshot_20170816-185937.png
    Screenshot_20170816-185937.png
    78.9 KB · Views: 1,594
  • Screenshot_20170816-185940.jpg
    Screenshot_20170816-185940.jpg
    244.1 KB · Views: 1,586
  • Screenshot_20170817-171558.png
    Screenshot_20170817-171558.png
    111.5 KB · Views: 1,580

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Substratum Release 822

Substratum Crash Handler: We now have a way to catch force closes and an easy way to send them to us! If you face a crash, please use our new UI and click stack trace, then send it to us through our JIRA!

Type4 Introduction: This allows themers to add support for assets theming, such as Telegram Emojis or SwiftKey Themes! Possibly even Gboard assets! Check out +Harsh Shandilya, +OhayouBaka!, +Sai Prasanna, +Andrew Traynham and +Bryan Owens' themes to get a taste of Type4s!

ZipAligning Overlays: All compiled overlays with newer versions of Substratum will now be ZipAligned for overall system performance, HUGE thanks to @arter97! This should solve many system performance issues if you faced any in the past! This will also set a standard for overlays compiled from now on! No new platform commits needed, all will be handled by our substratum in-app compiler!

A bunch of cleanup: Thanks a lot to @iskandar1023 and @MSF Jarvis, we have cleaned even more of the underlying code including the splash screen codes and overlay manifest code! Also thanks a lot to everyone in our CI-feedback channel on Telegram for reporting bugs immediately to us, including @Mazda, @r1l_Alex, @mosimchah, @fhem and many more! The latest build has been serving us greatly the past few days, including many of the force closes being resolved!

UI Changes: We have made the LogChar dialog more like the Crash Activity's dialog, more materialized and streamlined. We also moved the toggle all overlays button in the Overlay List fragment, out of the floating action menu, so people know it's there!

Full changelog:
Public Release 822
InformationActivity: Fix wallpaper not loaded
Public Release 821
ManagerFragment: Hide the toggle when RecyclerView doesn't exist
SubstratumCrash: Allow the crash log to be selectable
ProfileManager: Take account for the other crasher
ProfileManager: Ensure null checks are put in place if overlay outdated
ManagerFragment: Bring out the toggle from the floating menu
Substratum: Start fixing lint warnings
AppCrashReceiver: If no overlays are enabled, bail out early
FloatUI: Update the FloatUI button
Type4: Allow FloatUI to show proper type4s
Introducing Type4 assets overlaying template
Overlays: Suppress exception print when /res is empty
Overlays: Drop the progress wheel lower
Update contributor list
InformationActivity: All toasts to lunchbars, omnomnom...
InformationActivity: Glide; do not use any cache
SubstratumBuilder: Fix late install for special overlay
CompilerCommands: Remove log printing entire manifest
SubstratumCrash: Filter out the list of exceptions to Resources.java
EncryptedAssets: Update the snackbar with proper instructions
RecoveryFragment: Safeguard the context while uninstalling overlays
Revert "GarbageCollection: Call GC on reloads of fragments/activities"
References: Null check when it detects what device is being used
OverlayFunctions: More crash fixes
MainActivity: Do not show outdated dialog when the user is too fast
Refactor and clean up
GarbageCollection: Call GC on reloads of fragments/activities
LogChar: It's no longer a figure of speech, it's a noun
LogChar: Completely materialize the UI
SubstratumCrash: When the app crashes randomly, catch it
Overlays: OnResume should refresh the fragment list
CompilerCommands: Append missing Substratum_Target metadata
Substratum: Fix tinting for Jira navdrawer icon
CompilerCommands: Completely rewrite how we generate overlay manifests
ThemeManager: Simplify the shouldRestartUi methods
gradle: Update dependencies
gradle: Add option to use D8 preview
Substratum: Change Jira link to service desk
MainActivity: Add Jira to the substratum resources section
ThemeManager: We changed the method name
ThemeManager: Only restart systemui once on overlay uninstall
OverlayFunctions: Fix various crash when switching overlays
i don't know what to say about this tbh
SplashScreenActivity: Add timeout for each wait loop
SplashScreenActivity: Always show loading spinner
Disable Firebase crash collection on debug build
OverlayFunctions: Do not hardcode sysui reboot
Merge pull request #126 from arter97/dev
ZipAlign APKs
AOPTCheck: avoid unnecessary object creation
 
Last edited:

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Public Release 841

Following the official XDA article, we will be rolling out the Andromeda app that is current sitting on our alpha testers page for what felt like weeks! The desktop companion is available to download NOW with instructions on our thread here: https://forum.xda-developers.com/apps/substratum/andromeda-desktop-clients-release-notes-t3668682

Android Oreo Andromeda Integration: We are ready, but won't be releasing Andromeda's plugin just yet until the XDA portal goes live :)

Manager Fragment Changes: Thanks to +Yechiam Weiss, we have a swapping button that swaps the current state of each of the overlays. We retained the disable all button just in case you don't want to swap overlay states.

Android Oreo Rooted Tweaks: We added extra features like a silent SystemUI restart mode, so that if you don't want to restart your SystemUI in a destructive behaviour, you can disable it in Settings and it will clear all non-ongoing notifications to refresh the notification color cache.

Android Oreo Integration: We have full support for most of the new APIs for third party developers now too, meaning that our code is fully streamlined for Oreo's Adaptive Icons from external apps as well as our app fully adaptive icon'd!

Random image glitch fixes: We have migrated off Glide for both Priority Switcher and Hero Image loading. Some people may have noticed that you may get some incorrect images when you move too fast or just completely random. This remedies that issue and no longer causes sporadic incorrect images from being shown. We have tried multiple levels of caching and removal of caching as a whole with no avail. Our new implementation works for our usage case.

FloatUI Oreo Fixes: A severe crash has been found and fixed due to API-level changes. Thanks to +Ivan Iskandar!

Deprecation of Libraries and overall clean up: Thanks to +Harsh Shandilya, we have reduced a significant amount of dependencies that Substratum uses. He also fixed up many small, but destructive bugs (that happened rarely). Also fixes to the BinderService as well as cleaning up the commit validator. Not only that, but many dynamic context fixes to reduce re-calls causing null pointers.

Substratum exclusivity sandbox: If an overlay was NOT installed and created by Substratum, it will no longer remove it. Allowing users on Android Oreo to create their own overlays that they want to use with the built in Android Oreo Framework theme picker. This does not mean you can use overlays from other devices/recompiled as Substratum will no longer detect them as a whole. Thanks to +Ivan Iskandar!


Full Changelog:

Public Release 841
Overlays: Adjust when to hide/show the progress bar
Move FinishReceiver to application class
Fix compile enable special overlays on Oreo
Wait for package to properly installed before continue on andromeda
Upgrade gradle dependencies
Revert "Substratum: Change notification to IMPORTANCE_LOW for Andromeda"
InformationActivity: Do not show Restart SystemUI for Andromeda users
RecoveryFragment: Remove the poorly setView'd dialog
AndromedaBinderService: Unique notification id for bad notification
InformationActivity: Add icons to EnableDisable sheet fab entry
IA/Overlays: Replicate enable/disable button functionality from ManagerFragment.
Andromeda: Mitigate
Substratum: Change notification to IMPORTANCE_LOW for Andromeda
Beta release 840
AndromedaBinderService: Don't keep launching InfoActivity
Beta release 839
MainActivity: Do not just finish, restart the app
Beta release 838
MainActivity: Harsh forgot to update LogChar SharedPreference
Internal release 837
Substratum: Fix crash when clicking Featured content
Internal release 836
AndromedaBinderService: Introduce a simple service keep-alive mechanism
OverlayFound: If Andromeda was installed, relaunch Substratum
MainActivity: Modularize the root requester
Release 835
Clean up and reformat
Manifest: Remove unused permission
Release 832
ManagerFragment: Something went wrong crashing Samsung devices
ManagerFragment: Add back enable overlay function
Release 831
Subs: better workaround to get Current User Id
Release 830
Strings: Andromeda timed out string should be more friendly
Release 829
MainActivity: Add missing break in nav drawer
Release 828
TeamFragment: Update Nick and Syko's pics
Strings: Troubleshooting -> FAQs
MainActivity: Officially endorse our Reddit community /r/Substratum
SubstratumFloatInterface: Android System overlays will now show state
RecoveryFragment: Do not show the dialog on Samsung devices
Release 827
ManagerFragment: Repair the logic in sorting overlays
CrashActivity: Enforce textColorPrimary on buttons
SettingsFragment: Adjust the Restart SystemUI toggle
Release 826
SettingsFragment: When clicking About Samsung, launch Theme Killer
SettingsFragment: Add about sungstratum section
ManagerFragment: Pick off where Harsh started
Revert "ManagerFragment: Fix FAB glitch when switching sorting modes"
MainActivity: Initialize context earlier
Release 824
SettingsFragment: Add about andromeda section
References: Ivan, whatchu doing...
Strings: Be more descriptive with the warning
SettingsFragment (O): Warn the user when they disable auto restart sysui
Adjust adaptive icon and add back round icon
MainActivity: Get ready for Andromeda users
ManagerFragment: Clean up redundant casts after variable reassignment
ManagerFragment: Re-add some functionality for OMS
ManagerFragment: When an overlay is not selected, show toast
ThemeManager: Do not fallback on any state
Clean up after commit fast forward
build: use new dependency configuration
Upgrade Glide to version 4.1.1
Castaway Season 2
SubstratumFloatInterface: Disaster mitigation
Add andromeda fingerprint check
Upgrade gradle plugin and dependencies
Deprecate the OMS library
PriorityAdapter: Directly use drawable for icons
ThemeManager: Don't list overlay not built by substratum
MainActivity: Don't clean up overlay not built by substratum
Change adaptive icon background
Reduce bloat size a little bit
Revert "SplashScreenActivity: Do not withdraw blacklisted packages"
Refactor and format after fast forward
ManagerFragment: Fix derp on logic for OMS users in previous commit
ManagerFragment: Replaced "Enable Selected" and "Disable Selected" with "Enable/Disable Selected" which is only visible for OMS, while for RRO only "Disable Selected" is visible.
ManagerFragment: Added a simple check for non-OMS that hides the "Enable Selected" button in the FAB, can now safely remove OMS checks in that button.
Substratum: Add Yechiam to contributors
Substratum: Remove "hide disable overlays" toggle
ManagerFragment: Fix FAB glitch when switching sorting modes
Overlays: Don't always unselect everything
SubstratumFloatInterface: Simplify loading of framework overlays
InformationActivity: Clean-up variable usages
MainActivity: Reduce the getApplicationContext() calls
SplashScreenActivity: Do not withdraw blacklisted packages
Refactor and format after cherry pick
Showcase: Add Samsung Tab
Showcase: Add new section for wallpapers
Libraries: Remove numberprogressbar
Substratum: Remove the automatic LogChar cleanup toggle
SettingsFragment: Use a StringBuilder to set title
ValidatorDialog: Add some padding around the progressbar
Overlays: Always set progressBar to View.GONE when start{Enable,Disable} exit
CommitValidator: Nuke the progress bar
AndromedaBinderService: Do not fire notifications multiple times
AndromedaBinderService: If Andromeda Server not running, launch the app
AndromedaBinderService: Various changes
ThemeManager: Blacklist all SystemUI derivates for Samsung
SettingsFragment: Don't silently consume exception
ThemeManager: Don't crash out if cmd overlay list returns null
MainActivity: Remove link to thecyberfibre and fix-up XDA link
Substratum: Remove libraries we don't use any more
Revert "Overlays: Force-start BinderService when processing events"
Move andromeda notification to its own channel
Overlays: Force-start BinderService when processing events
OverlayList: Add sorting options
Substratum: Deprecate the Lemniscate library
SubstratumFloatInterface: Clean up how we populate the overlays list
AndromedaBinderService: Do not attempt bind if bind not available
BinderService: Only show notification if Oreo
BinderService: Andromeda calls shouldn't have been placed here
Substratum: Ensure andromeda checks only on API26 and Andromeda Mode
AndromedaIntegration: When the service dies, alert the user.
ThemeManager: Use hidden Andromeda folder
ThemeAdapter: Allow users to uninstall themes on Andromeda Mode
SettingsFragment: Do not show commit validator on Andromeda mode
ValidatorAdapter: Fix the missing package name
SubstratumFloatInterface: Use TYPE_APPLICATION_OVERLAY to show dialog
MainActivity: Andromeda does not support SystemUI restarts
InformationTabsAdapter: Allow for tabs to be disabled easily
WallpaperAdapter: Remove unused code
InformationActivity: Do not use Glide when loading hero images
PriorityAdapter: Do not use Glide to load priority app icons
ThemeManager: Fix checking of overlays for priorities
ThemeManager: Change how we refresh SystemUI
AndromedaIntegration: Allow for a more securely bridged connection
MainActivity: Try to fix the start of Samsung
References: Allow the grabAppIcon function to support Adaptive Icons
RecoveryFragment: Do not show sounds on Andromeda
MainActivity: Clean up root check conditions
MainActivity: Fix root check
ThemeManager: add null check before splitting
AndromedaIntegration: Priority switching is instant now
AndromedaIntegration: Introduce the stock Android O Backend "Interfacer"
SplashScreenActivity: Always show progress spinner
ThemeManager: If on Oreo, you get an option to skip restarting SysUI
References: Bring back checkOreo for SDK checks
 

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Substratum Release 851

Completely new default grid layout UI: As of this version onwards, we will now ship the application with a completely new UI that allows you to see more theme cards at once on a single screen. This is always revertable in Settings, where you can adjust how many columns are visible at a given time. This also comes with the new animation after the theme loads.

New theme advanced information sheet UI: We have added a sheet dialog with more information when long pressing a theme in the main screen. You can now Favorite, create launcher icon, uninstall, and see theme ready status all from that screen now!

Android Oreo Interfacer Support: Slowly does it, our test bench devices with the new Interfacer on Oreo will now support Shutdown Animations. More information regarding this later.

Speed improvements: Through our testing, we have sped up loading theme packages from max 1 sec to 16ms, enjoy! This also means that I was using my Nexus 5 to be the tester, and it was flying overall!

Deprecation of Theme Caching Mode: As of this version onwards, we will no longer allow themes to be decompiled in the substratum's cache (remember those days when your app data had like a few gigabytes? people still used it for theming locally). We no longer support this function and have completely removed it from the app, clearing up a LOT of code in the process.

Hero image customizations: Thanks to @MSF Jarvis, themers now have the option to supply a new hero image type, namely heroimage_banner.png (or whatever extension) to force the hero image to change to a specific image. There is also a way to change the style of the grid hero image, by creating a file called heroimage_grid.png (or whatever extension) in the same folder of your current hero image!

Andromeda updates and Oreo changes: All the credit goes to @iskandar1023, where he created many new features to incorporate with the Android Oreo notification channel system, allowing users to adjust notifications on the fly without adverse effects. You can also now click on the Andromeda version to launch Andromeda's status screen! When your server gets disconnected, the app will NO LONGER close, as we have deemed that as bad UX, so instead, we close all opened activities except MainActivity, and showed a dialog telling the user to rerun the desktop client!

Source code changes: We have completely rebased the application once again and the structure of the References class has been split up to more suitable named classes. We also removed a bunch of redundant code in the process, where duplicate classes were found in other fragments/activities, where we could have just slimmed it down to one. A bunch of methods have been consolidated and thus allowing us to ship a cleaner, more streamlined product!

Hold on to overlay to show target application version: Thanks to @MSF Jarvis, a long awaited feature for themers is to hold on to the overlay inside the Overlay Manager, to show a snack bar or the version of the main app, able to be copied to the clipboard!

Search in Overlay List fragment: Huge thanks to @YechiamTK for implementing both the search bar commits and the sorting commits. We have found the root cause for issues that were on certain devices (no overlays found) and have remedied this issue!

Settings clean up: We have went for an approach to simplify and streamline the experience for more users. Repetitive words were eliminated and overall a more engaging experience.

Attention: We have adjusted some wording due to the sheer amount of users asking the reasoning in the theme systems section of Settings. "Rootless mode" is now called "Native mode" and "OMS7" is now "[projekt.] OMS", so we have a more specific set of systems, easily understandable.

Full Changelog
Public release 851
ThemeFragment: If Nougat style cards selected, don't touch padding
Full translation import
Public release 850
OverlaysAdapter: Convert version toast to version lunchbar
References: Add RecyclerView animation setter to a centralized zone
OverlaysAdapter: When long pressing a card, consume the touch event
ThemeFragment: Dynamically adjust RecyclerView if Grid mode selected
PreferenceFragment: Unify the texts to AOSP style
Final resource clean up
It's not 2015, we no longer need to use the caching system after DA
TroubleshootingFragment: Remove the redundant question of theme errors
Clean up and remove unused resources
ShowcaseTile: The tile icon goes too
ShowcaseTile: Deprecate the tile
Theming: WeakReference the context in SubstratumThemeUpdate
Substratum: Allow supplying custom heroimage for KenBurnsView
Substratum: Update translators array
MainActivity: Allow themers to supply a separate heroimage for gridview
Overlays: Use FileProvider to access logchar file
SettingsFragment: On Oreo, manage notifications menu should go to notification settings instead
ThemeManager: Add state for listing overlays with missing target
ManagerFragment: If the target application is not installed, ignore!
ManagerAdapter: Set the label name earlier for correct sorting
InformationActivity: Allow themers to force colors of the toolbar icons
SubstratumWallpapers: If you didn't provide a link, hide the tabs
ThemeAdapter: I missed this one to staticize
InformationActivity: If you're only shipping overlays, don't show fab
Systems: Supported ROMs downloader migration to FileDownloader
Wallpapers: Migrate to the FileDownloader class
WallpaperAdapter: Migrate to the FileDownloader class
Deprecate AutoTextResizer and use TextViewCompat with granularity
SubstratumRebase: Sort out References.java and major code cleanup
WallpaperAdapter: Rebase the whole setting wallpaper options
ThemeFragment: Your phone must be old and messed up to reach this case
ThemeFragment: Add another null check
ThemeFragment: Set to default references value instead
ThemeFragment: Enforce null check on substratum_packages
ThemeFragment: Enforce final AsyncTask to static
SettingsFragment: It's Close, not Cancel
Strings: Plurals for notification channel management
SettingsFragment: Do not show soft keyboard, there are only 4 options...
Strings: Update to auto updater to non-beta status
SettingsFragment: Allow launching Andromeda status from Settings
Clean up and reformat
ManagerFragment: Fix all the bugs with the searchView
ManagerItem: Do not privatize callable getLabelName()
ManagerFragment: Fixed search bar commit.
ManagerFragment: Added search bar. Overlays_list_menu.xml: Updated item to work properly with search bar.
Rename "Rootless mode" to "Native mode"
References: Enforce null check on checkThemeSystemModule()
WallpaperAdapter: Add a fade_in animation for wallpapers
Legacy: Speed up legacy by ignoring overlays_legacy
InformationActivity: Fix weird tab behavior
Full translation import
SubstratumRebase: Here we go again...
MainActivity: Fragment Transaction local variable instead of global
MainActivity: Slim down
Convert everything that is a PNG (except team icons) to WEBP
Revert "Make notification channel preference item open the channel list in settings"
Revert "SettingsFragment: Fix Manage Notification Channels button"
Finally fix build
Compile the support annotations
Merge remote-tracking branch 'origin/dev' into dev
ManagerFragment: Fixed sorting algorithm. ManagerItem: Added compareTo's for name and theme, in use for sorting.
InformationTabsAdapter: Use fragment name values from References
MainActivity: Add shutdown animation to drawer
BootAnimationTab: Add shutdown animation bits
BootAnimationManager: Add method to apply shutdown animation
InformationActivity: Use reflection to check theme shutdown animation support
ThemeAdapter: Included a Null check for themes that don't include themeready variable.
AndromedaBinderService: Only show binded message when verified binded
ThemeAdapter: Do a null check for packages installed by Studio/ADB
InformationActivity: Only show shutdownAnimations on Interfacer builds
Ensure the build is fixed
Clean up after cherry-picking
ManagerFragment: Got rid of Comparator ****show and implemented the quicksort algorithm myself instead.
Revert "Revert "ManagerFragment: Fix derp on logic for OMS users in previous commit""
Revert "Revert "OverlayList: Add sorting options""
Make sure to check before starting binder services
ShutdownAnimations: Initial commit to prepare for shutdownAnimations
onDestroy: Only kill Andromeda receiver on Andromeda based devices
ThemeAdapter: Set animation on each individual card
ThemeAdapter: Add simple fade animation for RecyclerView
AndromedaIntegration: When the server kills, show a dialog instead
AndromedaBinderService: Do not kill when Andromeda is not connected
SettingsFragment: Hide detailed information option when above 1
ThemeFragment: Simplify the Settings adjustment
Remove some FAQs that aren't relevant in the 21st century anymore
SettingsFragment: Move notification management up
References: Don't log package info in the logcat anymore
SettingsFragment: Hide Restart SystemUI on Andromeda devices
SettingsFragment: Fix Manage Notification Channels button
ThemeAdapter: Move Rate theme out of IA
ThemeAdapter: Use dismiss instead of hide for sheet dialog
ThemeAdapter: Show version code in sheet dialog
ThemeAdapter: Hide sheet dialog when uninstall is clicked
References: Let's just keep the default as carded layout in grid
ThemeAdapter: Redesign the About theme section
Update translator contributor array
ThemeAdapter: Show theme ready status
Resources: Clean up unused signature keys
ThemeAdapter: Adapt to AdaptiveIconDrawables and new Oreo launcher APIs
ThemeAdapter: Adapt to Oreo
SettingsFragment: Clean up
SettingsFragment: Harsh, y u no fex
ManagerAdapter: Show overlay's substratum compiled version
ThemeFragment: If detailed info enabled, hide it automagically on new UI
ThemeFragment: Completely revamp the long press on theme sheet dialog
ThemeFragment: Don't allow "Theme packs" to be selfish anymore
Clean up and reformat after cherrypick
ThemeFragment: Speed up gathering the theme packages from 1.6s to ~15ms
OverlaysAdapter: Add longpress to show package version
SubstratumUI: Set a new grid based user interface as the default UI
Deprecate the MaterialProgressBar library
PriorityLoaderFragment: Center the emoji to the center of the screen
Priorities: Remove all the instructions and move them to a dialog
I don't like the RootRequester image anymore, change it!
MainActivity: Remove unnecessary countdown timer and string changes
ManagerFragment: Remove excessive null check
Clean up external overriden classes from AOSP
Clean up Service classes from cherry picks
Revert "OverlayList: Add sorting options"
Revert "ManagerFragment: Fix derp on logic for OMS users in previous commit"
ThemeManager: On Oreo, use interfacer to get installed overlays
InterfacerBinderService: Run as foreground service on Oreo
MainActivity: Don't ask for andromeda if interfacer present
Merge pull request #132 from boswelja/dev
Only create intentAppCrashed when needed * getAndromedaPackage can be private
Only create notification builder if there isn't already a notification showing
Push "bad" notifications to andromeda status channel * Previously, if andromeda was disconnected and you launched substratum, you would get a notification in the default channel. Now, the notification is sent to the andromeda status channel * Also move notification builder creation to the method
Substratum: Reorganize
Substratum: Clean up some Binder functions
Full import for translations
Clean up unnecessary styles and make the compile dialog darker
Add missing file to be committed
Deprecate the BlurView library
Update gradle version
Clean up and optimize after fast forward
 

Attachments

  • Screenshot_20170923-013754.jpg
    Screenshot_20170923-013754.jpg
    237.2 KB · Views: 3,219
  • Screenshot_20170923-054837.png
    Screenshot_20170923-054837.png
    208.3 KB · Views: 3,169
  • Screenshot_20170923-054753.jpg
    Screenshot_20170923-054753.jpg
    143.9 KB · Views: 3,211
  • Screenshot_20170923-005419.png
    Screenshot_20170923-005419.png
    254.1 KB · Views: 3,283
  • Screenshot_20170923-054848.png
    Screenshot_20170923-054848.png
    217.5 KB · Views: 3,131
  • Screenshot_20170923-055012.png
    Screenshot_20170923-055012.png
    186.6 KB · Views: 3,103
  • Screenshot_20170923-055128.jpg
    Screenshot_20170923-055128.jpg
    158.9 KB · Views: 3,087
  • Screenshot_20170923-055222.jpg
    Screenshot_20170923-055222.jpg
    172.2 KB · Views: 3,051
  • Screenshot_20170923-055235.png
    Screenshot_20170923-055235.png
    165.1 KB · Views: 3,005
  • Screenshot_20170923-055243.jpg
    Screenshot_20170923-055243.jpg
    224.2 KB · Views: 2,927
  • Screenshot_20170923-055254.png
    Screenshot_20170923-055254.png
    209 KB · Views: 2,909

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Substratum Release 912

It's been a while, eh? We've noted down a ton of bug reports from the many prior builds as well as gotten help from a bunch of new and old contributors!

This is a MAJOR upgrade, and has been tested by many people in our feedback channel, but with the sporadic nature of RRO and OMS, there can never be 100% no bugs, but we are trying our hardest! :)

Andromeda users: We have added specific commits to ensure smooth delivery on 8.1 devices with this new update. We will soon have some new features to Andromeda from +Surge Raval​, hopefully something called "untethered mode".

Custom ROM users and devs: This new upgrade adds support for Android Oreo custom ROMs and our new "Substratum Service" by our very own +Ivan Iskandar​ and huge thanks to +Harsh Shandilya​, which fully deprecates Interfacer (never finished and will not be updated to Oreo as-is).

To those who build ROMs, and are interested in WIP beta commits, please check our gerrit at https://substratum.review/#/q/topic:sysserv

We're now working on platform side features and have enabled something called "Shutdown animations", of which is still a WIP. Look forward for the many commits after to add more support for custom Oreo ROMs!

Themers: Thanks to @iskandar1023, we have added something called "type3-common" to the template, which allows for a dynamic base to build off the type3's when there exists no default res folder. If a 'type3-common' dir is detected inside an app overlay directory, it will be used as the base instead, and the user-chosen type3_[variant name] will be copied over the base.

Brand new app intro: A huge thanks to @pierx​, we now have an AMAZING app intro which also slims down the app by shifting over to vectors!

Completely rebasing the source code: With the latest update, we have changed the layout of our source code so that we added a bunch of Javadocs and explanations to code, making contributions easier, which has proven much better seeing many new and old contributors are hitting us up in private with optimizations and feature additions!

Speed, speed, SPEED!: We've been seeing a bunch of issues on the matter of loading overlays and such, and we have optimized the code and cleaned up sorting so that we would not have to reload as often and cause a more drastic issue.

Optimizations +/- Samsung: We have optimized our app to better suit the rootless overlays. If you're running a legacy Samsung device, aka. anything below an S8, then we have added a ton of performance improvements and optimizations! NOTE: If you are experiencing EXTREME app lag or it showing legacy mode, ENSURE your system time is correct, and you have the latest v36 Samsung addon!

We have focused a lot on legacy Samsung improvements lately, which overall improved the coding style of the app. I can't stress this enough, but a huge thank you goes to a contributor named +Tetsuo Osaka​, even though all he does is nag us and all we do is yell at each other in our chats, where every single hour he bugs us to fix something, at the end he proved to be a priceless tester and an amazing new contributor to the team! Thank you!

Samsung and Legacy users: We have added a maximum priority of 9999 if you need to try for non-sticking overlays!

Custom ROM forced AOPT: We know security is of utmost care for many developers, so with this release, we have added a flag to check in the system, if there is a "ro.substratum.aopt" build.prop entry, Substratum will be forced into using AOPT rather than AAPT, which significantly increases speed and security! HOWEVER, we would like to extend our explanation of this by saying that having a secure system is great, AAPT has also been used in CM for years, and the only "dangerous" thing would be if someone yanked out the AAPT from /data/data (private userspace partition) and used those to compile apps with Java code inside, whereas CM had it in a global, system callable location while ours is privatized.

We do not do any of that and ensure that both implementations of AAPT and AOPT are safe to be used in the current location. The downside of the AOPT implementation is that many devices such as Sony, Motorola and several non 64bit devices may result in some compilation issues, of which if AOPT is enforced, the supplier will have to take charge of it (which is why we named AOPT as experimental in Settings since we added the option to switch between them).

Bug Fixes: We have indeed fixed many force closes and hiccups of the app recently since the previous build - but they are never 100% when dealing with a native theme system on stock, especially if you are rooted (that's the reason we deprecated masquerade rooted!), so if you have any bugs, and they are not theme compilation bugs (wrong/failed configuration errors go to themers, unless it's an issue with AAPT/AOPT(it tells you)) send them our way!

Full changelog (chronological - newest first):
Public release 912
Full translation import
Clean up and reformat
Overlays: Don't reload list during compilation
Overlays: Fix excruciating lag on certain devices
Systems: Deprecate Interfacer on Oreo
Public release 911
MainActivity: Do it for both of these blocks
Public release 910
MainActivity: Also add in a check for System Service for the dialog
Public release 909
MainActivity: Rooted Oreo OMS now has a warning at the start of the app
ManagerFragment: Also do the same with uninstalling overlays
Public release 908
ManagerFragment: Fix Substratum being too fast for Andromeda
MainActivity: Restart AndromedaBinderService when first loaded
Public release 907
SplashScreenActivity: Enforce null check on Andromeda's installation dir
OverlaysManager: BottomSheetDialog should dynamically set height
InformationActivity: If the hero image does not work, then catch error
Public release 906
ManagerFragment: Fix possible FC during dialog invoke
Upgrade gradle
losslessly recompress all png and jpg images
fix repository order missed aee2126e1d9fe16fe8d245efc37b70ba2a56394d
Update gradle to 4.3 stable
Public release 905
ManageSpaceActivity: Enforce null check on filer.list()
Public release 904
ManagerFragment: Fix possible FC on legacy devices
Public release 902
Full translation import
PackageModificationDetector: Strictly enforce themes not for Samsung
OverlaysManager: Fix overlay compilation on legacy
Substratum: Enforce locale choices in Showcase and ManageSpace activities
References: Make sure all settings are reset
Add a new uninstall icon for fab menu
Public release 901
Overlays: Stability check, do not refresh while compiling
OverlaysManager: Fix type2 application
Public release 900
MainActivity: On Oreo, priorities are still beta
ManagerFragment: Overlay list -> Manager
InformationActivity: Overlay Manager -> Overlays
TroubleshootingFragment: Deprecate the fragment
Refactor and optimize imports of all Java files
Clean up and remove unused resources in res/
Remove all translated library strings
MainActivity: Set BootAnim, ShutdownAnim and Fonts as beta for SS
PackageModificationDetector: If SST was installed/updated, kill activity
BinaryInstaller: Allow ROMs to force AOPT using "ro.substratum.aopt"
OverlaysManager: Properly fire the success notification
Overlays: Fix sorting logic
Optimize images
AndroidManifest: Only allow single tasks of MainActivity and IA
SettingsFragment: Hide Interfacer if not available
Overlays: Optimize and speed up
Substratum: Fix splashscreen layout for subsequent launches
Substratum: Use svg animation instead of animation list.
Overlays: Re-sort the untraceable functions, singleton initiation
Overlays: Do not rely on firstBoot to refresh list
SubstratumUI: Stabilize the app and do not use DiffUtils for RVs
Add exception handling to getInstallerId
SettingsFragment: Legacy does not have the notification channel preference
Merge pull request #153 from tetsuo55/hejeggw
Remove unused notification channel from legacy
Packages: Fix formatting and try a different logic
Packages: Change structure of checker
Packages: Enforce isSamsungTheme check
SettingsFragment: Remove unused auto disable target option for legacy
SamsungIntegration: If on rooted device, uninstall silently
Substratum: Reorganize what is supported on SS
SamsungPackageService: Do != rather than <
MainActivity: Properly pop the stack when going back home
ManagerFragment: Terminate early if a call of layoutReloader was pushed
MainActivity: Modernize and document onKeyDown
MainActivity: Some devices don't register back button presses well
ThemeFragment: Avoid the OOB issue as well just in case
Overlays/ManagerFragment: Enforce null check on notifyDataSetChanged
SubstratumCrash: Fix incorrectly named system service log
Packages: Heavily enforce getOverlayMetadata
ThemeAdapter: Don't silently uninstall themes on long click, alert user
Overlays: Don't crash when configurationChange causes a fuss
Packages: You can't check for a bool if you enforced it to strings
Change order of the toolbar menu icons
SubstratumService: Iron our some quirks for Android Oreo custom ROMs
ManagerFragment: Also do the same for Overlay Manager
Overlays: Fix issue where configurationChange will cause an invisible RV
Internal release 858
Resources: Revive SystemUI Statusbars
Packages: Use substratum service for uninstalling package
SubstratumService: Add supporting codes and update lib
SubstratumService: Add service check method and update binary
Add initial version substratum service lib
Packages: Extend getOverlayMetadata for boolean metadata
SettingsFragment: Go back to getContext() for now
SubstratumRebase: Fix a typo thanks to @YechiamTK
SubstratumRebase: Full cleanup, ButterKnife, JavaDocs
Clean up and reformat all files
ManagerFragment: Restore non-crashing workspace by fixing RV assignment
MainActivity: Clean up formatting
Substratum: Fixes for OverlayList
Update travis.yml for API 27 SDK
Update to SDK27
update gradle to 4.3
Fix compatibility with gradle 4.3+
ProfileFragment: Fix #141
ManagerFragment: Add notifyDataSetChange to fix scroll to position in RecycleView.
PackageModificationDetector: Restore to the original state
InformationActivity: Add missing import
Internal release 856
Revert "SamsungPackageService: On repeated IA start, prevent DeadSystemException"
Revert "SamsungPackageService: Deprecate this ongoing service"
ManagerFragment: Do not uninstall all packages
Partially revert "OverlayFunctions: Slim down a bunch of functions"
ThemeFragment: Optimize RecyclerView loading using DiffUtils
ManagerFragment: Optimize RecyclerView loading using DiffUtils
Overlays: Optimize RecyclerView loading using DiffUtils
OverlayFunctions: Slim down a bunch of functions
Just updating some comments
Substratum: Update fab_menu_enable_disable icon to match other sheet fab icons
Packages: Restore InputStream cloning in getOverlayResource
Systems: Do not discriminate against Android 8.1.0
MainActivity: Fix blank activity on overlay operations
Add Tetsuo Osaka to contributors list
SubstratumRebase: More clean up
SubstratumRebase: Clean up lint warnings as of AS 3.0 RC 1
Remove unused logging
fix lint warning condition result=0 is always true
fix lint warning string equals empty
fix lint warning single character string concatenation
fix lint warning single character argument in string.indexof
fix lint warning method may be static
fix lint warning iteration over keyset may be replaced with entryset iteration
fix lint warning field may be static
fix lint warning concatenation with empty string
fix lint warning Collection.addAll can be replaced with parametrized constructor
fix lint warning call to simple getter from within class
fix lint warning non reproducible call to java.lang.math
fix lint warning implicit numeric conversion
fix lint warning double literal cast to float could be float literal
fix lint warning inner class may be static
fix lint warning multiply or device by power of two
fix lint warning redundant suppresion
fix lint warning doverly broad throws clause
fix lint warning decleration can have final modifier
fix lint warning decleration access can be weaker
fix lint warning scope of variable is too broad
fix lint warning redunant local variable
fix lint warning boolean expression could be replaced by conditional expression
fix lint warning unclear expression
fix lint warning size == 0 replacable with isEmpty
fix lint warning redundant field intialization
fix lint warning redundant new expression in constant array creation
fix lint warning missorted modifiers
flip some constants to the right to match code style
suppress false positive can be final on builder and dialogueClickListener
fix lint warning local variable or parameter can be final
fix lint warning instant method call not qualified with this
fix lint warning instant field access not qualified with this
silence lint by marking these as implictly used
fix lint warning implicit call to super
fix lint warning field may be final
Clean up and refactor after cherry pick
fix lint error by flipping equals Reports calls to .equals() whose arguments are String literals. Some coding standards specify that String literals should be the target of .equals(), rather than argument, thus minimizing NullPointerExceptions.
fix utility class can be enum
fix lint warning class should only be marked final if all variables are final too
fix lint warning field can be local
fix lint warning classes with only private should be declared final
fix lint warning assignment operations which can be replaced by operator-assignment
fix lint warning Ellipsis string can be replaced with ellipsis character
fix lint warning Type can be weakened
Fix lint warning weaken arraylist to list
ManagerFragment: Fix 3dot menu showing up, search not working properly.
PackageModificationDetector: Clean up
PackageModificationDetector: Samsung trips the refresher on install only
PackageModificationDetector: If Samsung, just refresh
Overlays: We should just keep this list refresher onResume
Revert "Revert "Overlays: Don't refresh the list of overlays on resume""
AndroidManifest: Allow all activities to be resizable
Overlays: Introduce a brand new UI for compiling overlays
PackageModificationDetector: Always refresh after package uninstall
MainActivity: Add the corresponding onActivityResult
Clean up and reformat
InformationActivity: Properly assign end boolean
Revert "Overlays: Don't refresh the list of overlays on resume"
SubstratumUX: If a theme was upgraded in the background, relaunch IA
ManagerFragment: Move the uninstaller to the activity
Overlays: Don't refresh the list of overlays on resume
ManagerFragment: Change the request code value
Update translator array
ManagerFragment: Try a queuing method for uninstalling on Samsung
InformationActivity: Small code cleanup
InformationActivity: Migrate boolean array to a HashMap
Substratum: Destroy LeakCanary
Substratum: Disable LeakCanary
PackageModificationDetector: Use existing method to launch themes
Samsung/LGIntegration: Allow "fwk" and "common" to be seperate packages
SamsungIntegration: Set maximum priority to 9999
Prevent text from overlapping with the checkbox
Fix various lint warnings in gradle files
SamsungPackageService: Deprecate this ongoing service
Remove non contributors from arrays.xml
Instead of hiding context leak, let's fix it
Overlays: Fix detection of enabled overlays
Substratum: Address miscellaneous lint warnings
ThemeManager: When running automatic disable, adapt to current system
Don't unnecessarily perform the same check in settings fragment
Allow optionally disabling all other overlays for a selected target on enable * Basically, when enabling an overlay for a package, this option will disable all other overlays for that package
Update Gradle version
Remove useless parent layouts as reported by android studio
NotificationButtonReceiver: Deprecate the Dismiss button
OverlayFunctions: Cancel the notifications earlier
Revert "ManagerItem: Try to use AAPT to grab problematic labels and packages"
Substratum: Enhance check for interfacer
InformationActivity: On app kill, kill compiling notification too
SamsungPackageService: On repeated IA start, prevent DeadSystemException
ManagerItem: Try to use AAPT to grab problematic labels and packages
ManagerItem: If label name is null, return the generic text
ManagerItem: If theme name is null, return the generic text
Update http://README.md banner image
InformationActivity: Null check for appbar layout
ManagerFragment: Unify the search designs with ThemeFragment
ManagerFragment: Set icon to be consistent with the rest of the app
ManagerFragment: Do the same to retain scrolled position
Overlays: Don't reset position as we already reset it
Overlays: Retain recyclerView position when OMS configuration changed
Full translation import
Overlays: Remove unnecessary refreshList() as we can sniff PACKAGE_ADDED
OverlaysItem: Update the check for Samsung users
OverlaysItem: Also check if Samsung overlays are installed too
OverlaysAdapter: Remove Packages duplicate and clean state checks
Overlays: Properly remove the errorLog by creating a deep copy of errors
OverlaysFunction: Dereference never-assigned all_installed_overlays
LOGCHAR_DIR: LogChar is used enough to be reference constant worthy
ManagerFragment: On invalid entry, do not keep progress bar moving
Center text in no overlays message
Overlays: Remove redundant handling for icon pack overlays
Overlays: Additional check before invoking logchar lunchbar
ManagerFragment: Reload layout when Overlay handling tasks exit
ManagerFragment: Refresh adapter when RunEnableDisable finishes executing
SubstratumCrash: Use our own report template
Overlays: Retain instances instead of saving them
Substratum: Remove all the orphan handling and just run DoCleanUp
ThemeUninstallDetector: Add handling for orphanedOverlays
RescueActivity: Remove runOnUiThread, thanks to @Thecrazyskull!
Overlays: Don't forget LogChar on configuration change
Update Travis CI SDK
Clean up!
RescueActivity: When Samsung users click Rescue Me, open Settings
App Shortcuts: Do not force App Shortcuts only on Android 7.1.1+
OverlayManagerActivity: Move the Settings option to an app shortcut
MainActivity: Fix what Harsh started
Strings: substratum samsung -> sungstratum
Substratum: Add ability to launch Overlay List directly
SettingsFragment: Sungstratum addon is not part of Theme Killer anymore
Fix weird behavior on overlay install with root
OverlayFunctions: Install special overlays no matter what
build: update build tools and dependencies
SubstratumBuilder: Switch the error bool on APK compilation failure
Adjust things and fix some bugs on RootRequester
Add type3 common dir support for themes
ManagerFragment: Remove those overlays from overlaysList
ManagerFragment: Try fixing @jereksel commit by uninstalling instead of just removing said overlays
Make comparition same as in compareTo methods
(Hopefully) Fix ManagerItem sorting once and for all
Overlays: Twice as strong vibrations if overlays fail to compile
Internal release 855
Revert "Remove unnecessary WeakReference"
Overlays: Fix incorrect base_spinner check
ProfileFragment: Remove redudant duplicate font checker
ThemeFragment: Cut it close, make the first load faster
Overlays: Prevent spinner load event to count as an item click event
Overlays: Enforce a few null checks and list refresh locations
References: Clear base variant on data clear
Overlays: Retain type3 spinner position when leaving themes
Overlays: Add a fastscroller to the RecyclerView
InformationActivity: Update the FAB icon to apply, no more Layers icon
ThemeFragment: Initialize the recyclerview with an empty adapter at boot
ThemeFragment: Do not hang UI thread as well
Clean up after pull request
Merge pull request #139 from jereksel/cleaning_wr
Update translator array
ManagerFragment/Overlays: Improve UX for swipe refresh layout
OverlayUpdater: Remove redundant code
ManagerFragment: Fixed where I left off
ManagerFragment: Disable the switch instead on layout reloading
ManagerFragment: Reset state of switch when swiping down
ManagerFragment: Shift the system to the swipeRefreshLayout UI
Overlays: Swipe down to refresh should not hang UI thread
Lunchbar: Clean up class
OverlayUpdater: Upgrade to support Type4s
ManagerFragment: quickSort -> use switch instead
ManagerFragment: Camel case
InformationActivity: Fix logic for showing certain tabs
ManagerFragment: Fix wrong logic for detecting disable mode capability
Build.gradle: No need a preview flavor, we are targeting 26 already
OVERLAY AWAITING REBOOT -> ERROR READING OVERLAY
SplashScreenActivity: Invisiblize the launch for the addon verification
OverlayUpdater: Clean up
ManagerFragment: Do not have Samsung specific refreshList() code anymore
ThemeManager: Improve the uninstall process
Revert "Substratum: Lower our support libraries footprint"
Support Samsung Galaxy S8 and LG G6's 18:9 screen ratio by default
ManagerFragment: Log the refreshList to see if this is really Samsung issue
OverlayUpdater: I really don't like intents
OverlayUpdater: Continue fixing this ****, me nub and need to sleep
InformationActivity: Traverse all views and set drawable only where we should
Substratum: Lower our support libraries footprint
 
Last edited:

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Public Full Rollout Release 950

Hey guys, it's about time this month to release the actual, follow up release to our previous UI overhaul. This WILL be at 100% rollout, and we will update the app slowly the next few days to ensure that our users are happy :)

PLEASE READ THE SHORT CHANGELOG, WE ARE SURE WE COVERED A LOT OF BUG REPORTS REPORTED TO US IN THE PAST WEEKS!

The reason it took this long is because we have been doing serious debugging with many users, themers and developers - under many different device architectures and versions.

Fixed compilations on legacy devices: Not to be confused with Substratum "Legacy" but rather, actually old devices, where they had a "new_alloc_size" during compilation. Huge thanks to +Surge Raval!

Configuration change safety guard: If by any chance the app was reloaded by RRO/OMS/DO, the app will relaunch itself and tell you that the resources have been updated. This is to do with our UX improvement goal.

Sony OMS Bypass: Substratum now functions on Android 7.x on Sony devices under legacy mode. This means themers can now theme on Sony devices, for Sony users! Huge thanks to Matt (appleknight) for debugging!

Showcase Rewrite: In this update, we have deprecated the current showcase format, under the guidance of +Nathan Chancellor and +Harsh Shandilya, we have a new way of applying to have your App, Theme, Mod or Plugin featured in our showcase! The showcase now updates on demand, and will no longer cache the database on the device so it's pretty much a live place for us to promote our wonderful community and what everyone's been doing!

New showcase tabs: Below will be the new showcase tabs that will be updated by the team to promote new apps/themes amongst our community!
- Featured Themes: For new themes and upcoming stars!
- Featured Apps: For amazing apps that our contributors would like shown
- Themers Collective: The community collection of themes hosted on our Play Store account
- Team Themes: Themes created by team members!
- Clear/Dark/Light: Category based themes
- Google Apps: Collection of theme ready apps
- Samsung: Collection of Samsung-ready/compatible themes
- SystemUI Tweaks: Previously called Plugins, but now more categorized
- Other Tweaks: Also from Plugins, more categorization
- Wallpapers: Wallpaper packs

Samsung UX Experience Improvements: With a plethora of memory leaks and bugs now resolved, we have ironed out the experience to (nearly) match what AOSP has to offer!
- If you installed an OMS-only theme on Samsung/Legacy, a notification will alert you to uninstall it (meaning if you're a user and you accidentally bought an OMS theme, you would be able to immediately refund it).
- For sungstratum users, the boot up of the app has been significantly improved!

UI Improvements: As usual, naming all of these are a pain, so I'll list them:
- Splashscreen now fades into the main theme screen
- Wallpapers, showcase and themes now stagger their loading animations one by one, and will fade from grayscale to color.
- Removed the Pull down layout as well as shared element transition to completely speed everything up
- Snackbars on the main UI will move on top of the bottom bar
- On OOS, ensure that the navbar is properly colored (thanks to +Ivan Iskandar for finding this out)

Bug fixes, performance and optimizations: Huge thanks to our contributors, we have cleaned up a lot of possible memory leaks, as well as ensured that many things are patched up. Overall, the app has been cleaned up drastically thanks to +Harsh Shandilya, +George G. and +Jack Boswell!

Full changelog (chronologically):
Public release 950
Revert "PriorityListFragment: Change how we show the list"
SubstratumUI: Various UI tweaks
BottomBar: Set selected bottom bar icon and text to accent
PMD/Packages: Notification on retention of unsupported theme
PackageModificationDetector: Action click should remove notification
AAPT: fix new_alloc_size overflow for ancient armeabi devices
UnsupportedThemeReceiver: Autoclose the notification
UnsupportedThemeReceiver: Close system dialogs on button click
UnsupportedThemeReceiver: Rejection notification button
FragmentTransaction: Replace commit() with commitAllowingStateLoss()
ShowcaseActivity: When back is pressed, close drawer first
ShowcaseActivity: Open the drawer automatically when launching Showcase
Showcase: Change names of a few things
ShowcaseActivity: Properly assign all the tabs to non-sort mode
Showcase: Add new entries for new showcase themes/apps
Showcase: Tabs will now sort based on actual cloud tab order
Showcase: Completely revamp and clean up all the code
OverlaysManager: If an overlay is about to be recompiled, disable first
SamsungIntegration: Refresh the list on resume on Samsung too
MainActivity: Remove unnecessary static variable
SplashScreenActivity: Halve the time it takes to load splash
SubstratumRebase: Clean up and refactor
SamsungIntegration: Turbocharge Sungstratum bootup
SamsungIntegration: Attempt to speed up boot
SubstratumUX: Simplify the start up code of the app
Systems: Clean up unused whitespace
Remove some blacklisted packages
Systems: Add a speedier way of checking for packages
InformationActivity: If hero image starts transparent, use colorPrimary
UnitTests: Suspend
Systems: Sony check should be permission check, not prop
Lunchbar: No longer extend Snackbar, just use it as a constructor
Systems: Sony check may return empty string
InformationActivity: When theme is empty, kill automatically
SubstratumUI: Lunchbar should go above the bottom bar
Systems: Sony Mobile should try and take on rooted legacy mode
ManagerFragment: Optimize some calls to userInput.get()
Resources: Suppress and remove some warnings
ThemeAdapter: Remove some unused imports
Packages: Factor out API 21-23 handling
SoundUtils: Remove unused variable
ShowcaseActivity: Remove unused method
ThemeManager: Simplify listOverlay methods
AndroidManifest: Fix some warnings
Packages: Suppress some warnings
Sounds: Don't call wordList.get() repeatedly
Expose navigation bar color on API 27
PriorityListFragment: Change how we show the list
ThemeManager: Fix listTargetWithMultipleOverlaysEnabled on andromeda
SplashScreenActivity: Remove the app logo color animation thingy
Systems: Andromeda mode only if the package is enabled
SettingsFragment: Disable exposures check if not running interfacer or sysserv
Clean up and refactor
OverlaysAttention: Wrap to full size of text
Overlays: Do not refresh the list on type3 selection twice
OverlaysAdapter: Allow for newlines in attention
SplashScreenActivity: Hide progress bar until certain time
Clean up and reformat
SamsungIntegration: Fix regression with multi refreshes
SubstratumUI: Revert back to grey accents
IA: Fix inconsistent capitalisation in strings
InformationActivity: Terminate all tab's asynchronous tasks onDestroy
Update gradle
RecoveryFragment: Fix inconsistent tests for card visibility
InformationActivity: Remove PullBackLayout
Substratum: Completely remove shared element transitions.
SubstratumUI: Revert back to Pink accents
MainActivity: Drop redundant samsung check
Substratum: Set theme system module during early init
RecoveryFragment: Trim duplicate code
ThemeAdapter: Remove the greyscale animator
ManagerFragment: Improve UX for refresh
ThemeFragment: Stagger the recyclerView objects
SubstratumUI: Introduce a new color scheme!
SplashScreenActivity: Fade out to the MainActivity
ThemeBadge: Remove the residual files
PriorityListFragment: Add an AVD for fab click
PriorityListFragment: Adapt for Oreo
SubstratumUI: Update the blobs to N blobs
AndroidManifest: Turns out we needed one more
StringUtils: Place in a better directory
Clean up and reformat
NotificationCreator: Deprecate this class
ThemeFragment: Remove the bottombar badge
Substratum: Fix various mistakes on reassignment
AndroidManifest: Clean out unused permissions
FloatUi: Show overlay versions
ManagerAdapter: Generify and account for FloatUi
Substratum: Drop hungarian notation contexts
RecoveryFragment: Fix incorrect test for sound
Internal release 932
Substratum: Deprecate Sounds for legacy systems
RecoveryFragment: Substratum Service does not need permission
ManagerAdapter: Fix theme entry formatting
SettingsFragment: Instantly post restartSubstratum call
ThemeAdapter/InformationActivity Tabs: Optimize lifecycle
ManagerAdapter: Fix inconsistent labels
SettingsFragment: Make substratum restarts less jarring
ManagerFragment: Deprecate onPrepareOptionsMenu
ManagerFragment: Show all the icons on the actionbar
ThemeAdapter: Enforce package name check for receiver
ManagerAdapter: Add the overlay's theme version
ThemeAdapter: Do not allow multiple theme launches
PullBackLayout: Adjust pull back threshold
BottomBar: Adjust color for inactive state
ManagerAdapter: Fix incorrectly styled Theme Name entry
Subtratum: Adjust manager fragment strings
Adapters: Introduce a utility method to format items
MainActivity: BottomBar should reset on config change
Adapters: Remove usages of Html#fromHtml
ThemeLaunchActivity: Remove plugin_version extra from launch intent
InformationActivity: Use dominance again
InformationActivity: Adjust the color vibrance algorithm
ThemeAdaptor: Ditch HTML hack and use setTypeface for bold
OverlaysManager: Ditch redundant code
Clean up and optimize
OverlaysAdapter: Use a more traditionally used version code
Wallpapers: Reassign append of load complete
KeyExchangeActivity: Pass a Serializable object of SecurityItem
SamsungIntegration: Speed up samsung device check
Overlays: onResume should have proper list refreshes
PullBackLayout: Adjust sensitivity and add higher threshold
InformationActivity: Adjust looks
InformationActivity: Tabs should finish loading before SET
ThemeAdapter: Fix potential FC on weak devices
SubstratumUI: Fix a few quirks with the new shared elements
SubstratumUI: Shared Element Transitions!
MainActivity: Hide the bottom bar shadow if we don't use it
PriorityListFragment: Make use of activity's toolbar
InformationActivity: Fix crash when launching theme shortcut
InformationActivity: Use completely transparent status bar
MainActivity: Set white navbar icons when sheet dialog opened
MainActivity: Add shadow workaround to bottom bar
OverlaysManager: Properly close compilingProgress
Revert "PackageModificationDetector: Don't refresh IA on theme update"
Overlays: Catch potential IndexOutOfBounds
SubstratumCrash: If the ROM/builder f'ed up, explain the issue
SubstratumCrash: If system crashed substratum, relaunch
Clean up and reformat
SubstratumUI: Deprecate Roughike bar in favor of AOSP
InformationActivity: Stuff for transparent themes
build: Fix derps
Fix travis
 

Attachments

  • Screenshot_20180122-231655.jpg
    Screenshot_20180122-231655.jpg
    144.3 KB · Views: 4,950
  • Screenshot_20180122-231700.jpg
    Screenshot_20180122-231700.jpg
    193.1 KB · Views: 4,982

nicholaschum

Substratum Development Leader / Inactive Recognize
Feb 3, 2011
6,079
13,838
University of Toronto
plus.google.com
Public release 983

With this release, we have listened and heard to many people about the March security update and have worked around it by providing users with more information about how to properly load up overlays perfectly on ROMs with this security patch.

For Samsung Oreo users, your compilation of overlays WILL be faster than normal. That's because we've decided to tap into Samsung's overlay permission and thus, you will not have your overlays reverted after a reboot (e.g. SystemUI). But doing so means we can no longer measure the time that overlays take to install as overlays are now offloaded to the Samsung Theme Package Processor and thus, all intent receivers are rendered useless.

If your overlays appear PINK -> They mean it needs a reboot to take effect!
If your overlays appear BLUE -> They mean ANOTHER theme has an Enabled + Installed overlay. For example if you installed Chrome from Swift Black and you open up Quetzal, it will show up in Blue in Quetzal, but Green in Swift Black.

We also introduced the ActionBar Scroll Up feature in places including:
- Main Theme Screen (MainActivity -> ThemeFragment)
- Overlay Manager Screen (MainActivity -> ManagerFragment)
- Settings (MainActivity -> SettingsFragment)
- Theme Overlay Manager (InformationActivity -> Overlays)
- Theme Wallpapers (InformationActivity -> Wallpapers)

LiteMode: If you are not fond of the hero image taking up like 30% of your screen when opening a theme, enabling Lite Mode in Settings will open themes without that image, as well as reducing some animations for slower devices.

SysServ Crashes? If you experience any crashes on Substratum Service mode, your ROM commits needs to be updated/repicked! We merged all our SysServ patches already and thus, some ROMs may have missed one patchset. Not to fret, we have informed teams that have outdated sources but here's the most up to date link that needs changing: https://substratum.review/c/SubstratumResources/platform_frameworks_base/+/448

Translators and contributors now show up when clicking Substratum version in Settings! Translators are now parsing CrowdIn's CSV file and will rank based on your contribution on CrowdIn! If you were before the CrowdIn transition, don't worry, we still love you guys! Just verify and translate more words and we'll update the file from time to time!

News about Android P? We have news, good and bad. But that comes later. Hopefully you just remember you're still on Android Oreo!

Full changelog (chronologically):
Public release 983
InformationActivity: In Lite Mode, adjust the title text accordingly
Samsung performance update 982
Hotfix release 981
Systems: Adjust for Samsung devices > API24 (aka. 25)
Public release 980
OverlaysAdapter: Cache the state color to speed up scrolling
ShowcaseActivity: Add the toolbar scroll feature here as well
SubstratumUX: Introduce "tap actionbar to scroll up" feature
OverlaysAdapter: Add support of blue state for Samsung users
LiteMode: Affect the fade-from-grayscale animation on LiteMode
SettingsFragment: Change launchActivityUrl method for team links
InformationActivity: In Lite Mode, completely lock toolbar expansion
OverlaysAdapter: Introduce a new blue state
SettingsFragment: Add Lite Mode and rewrite the Settings fragment
Update dependencies
Internal release 970
AndromedaBinderService/Substratum: End binder services gracefully
SettingsFragment: Update App Theme text on selection
Fix up strings for menu state and app theme
SettingsFragment: Add OK button to all contributor dialogs
ManagerFragment: Show toast on overlay state change
TeamFragment: Deprecate fragment and move to About Substratum
TranslationDialog: Add some padding
ManagerFragment: Reorganize and assign a systematic format for sheet fab
SettingsFragment: Brand new way of showing translators!
ThemeManager: Add back listOverlay method using direct interface on nougat
MainActivity: Expose and assign the background of bottom tab to drawable
ManagerFragment: Dynamically change text of sorting overlay state
Substratum: Samsung checker should exclude Nougat from listThemes
OverlaysManager: Only show the pink state dialog on Oreo!
Merge pull request #173 from folgore95/patch-2
Update strings.xml
Better explanation about new samsung overlays compiling
Update strings for Samsung Oreo refreshing of list manually
Substratum: Samsung checker can also fallback to listThemes(context)
Resources: Add Samsung software update to permission blacklist
OverlaysManager: Reorganize pink title explanation dialog
ManagerFragment: Allow user to sort by overlay enabled/disabled state
SamsungIntegration: Change Samsung package check code
OverlaysManager: Adapt the previous commit for Samsung users too
OverlaysManager: Alert if user is installing overlay on stock March
Resources: Add Samsung Voice Recorder to permission blacklist
CompilerCommands: Samsung permission must be assigned statically
OverlaysManager: Clean up and refactor logic
OverlaysAdapter: Refresh and allow non-Samsung users with pink state
Readme: Remove interfacer from readme
SettingsFragment: Don't create indefinitely open snackbars
Packages: Clean up isPackageInstalled function
OverlaysAdapter/Item: Sanitize and clean up the logic used
VariantAdapter: You must cast full class for view binding
OverlaysAdapter: Complete rewrite
MainActivity: Adjust layouts for Andromeda button
AndromedaBinderService: Do not show the disconnected notification
Andromeda: Fix crashes on andromeda update, also terminate subs
SamsungIntegration: Also allow fwk overlays to be invoked for uninstall
SamsungIntegration: Add transition helper from Nougat to Oreo
MainActivity: On error dialog, show a more descriptive result
Full translation import
Fix build for Android Studio 3.2 Canary 10
AndromedaRebase: Update the strings to say something else for debug
AndromedaRebase: Prepare for Andromeda rebase
build: Update dependencies
ThemeManager: Don't use cached list on andromeda listOverlay
MainActivity: Add new activity name for launching andromeda
SoundUtils: Don't restart ui after applying sounds on substratum service
Full translation import
OverlaysManager: If Oreo and Samsung, do not wait for intent response
Clean up, refactor and optimize imports
InformationActivity: Enable Samsung Package Checker on Oreo
SamsungIntegration: Re-add overlay component permission for 7.1.1+
Merge pull request #167 from alamo18/dev
MainActivity: bottomBar duplicate reference Viewbinding already did the job
util: helpers: FileDownloader: Fit overall code style Don't declare a variable just to store the return
Gradle && firebase update
ManagerItem: Use overlay's version instead of live version
CompilerCommands: isStatic is an Oreo OMS quirk
CompilerCommands: Add isStatic false flag to manifest
SettingsFragment: Speed up loading for Andromeda
Systems: Optimize Samsung device checkers
XiaomiIntegration: Show warning to enable extra permissions
ManagerFragment: Restart SystemUI should not show on Andromeda
Some boolean logic fixes from previous commits
MainActivity: Dialog layout changes
LocaleHelper: Deprecate old locale changer style
Full translation import
Packages: getPackageName(): If Samsung has an uninstalled overlay, spit packageName
Clean up and reformat all res/ files
AndromedaOffline: Introduce a way to uninstall overlays offline
ShowcaseActivity: Remove custom animations as well
ThemesListMenu: Recovery menu item should take precedence
References: Disable Samsung overlay permission
CompilerCommands: Reorganize permission for Samsung
References: Debug substratum APKs should distribute Samsung overlay perm
ValidatorDialog: Re-enable for custom ROM devs
MainActivity: Remove FragmentTransaction animation
References: Fix boolean logic in isServiceRunning
Clean up and reformat
ThemeItem: Introduce a dynamic image resizer to prevent OOMs
De-localize the animation files for fragments
Broadcasts: Samsung should get OverlayFound as well
MainActivity: On fragment switch, unload fragment AsyncTasks
OverlaysManager: Insert delay when installing snowflake overlays
SubstratumCleanup: Fix relevant lint issues and remove unused resources
SubstratumCleanup: Do ma thang
SubstratumFloatInterface: Correctly deal with potential NPE
Systems: Remove NonNull annotation from checkOMS method
Clean-up and reformat
Internal release 960
Merge branch 'databinding' into dev
SamsungOreoIntegration: New overlay pink state for being "stuck"
ThemeManager: This is needed here too
SubstratumCleanup: Remove unused resources
Substratum: Deprecate Butterknife
ProfileFragment: Migrate to Databinding
SettingsFragment: Don't unnecessarily create Handler objects
ThemeAdapter: Migrate sheet dialog to viewBinding
ThemeAdapter: Migrate to databinding and deprecate gapps config
VariantAdapter: Cleanup and migrate to Databinding
Internal release 955
 
Status
Not open for further replies.

Top Liked Posts

  • There are no posts matching your filters.
  • 40
    HS3E6Vb.png


    welcome all current and prospective Layers themers!

    Recently our team's efforts have been announced on XDA Portal regarding the official deprecation of Layers, in progress to be overridden by our new project, Substratum.

    Read more here: http://www.xda-developers.com/layers-manager-is-being-deprecated-in-favor-of-substratum/

    Today, I have started this thread to get our project organized and officially recorded down on a publicly visible location, with all our changes and feature set to clarify what our project is about.

    What is Substratum?
    Substratum is an application, downloadable from the Play Store, that utilizes all of Sony's Overlay Manager Service (OMS), found on the official AOSP code review. This is similar to Layers in terms of stability and customization as it runs off an upgraded version of the Resource Runtime Overlay system, with the added benefit of running up-to-date Sony code on a customized ROM.

    What is Interfacer?
    Theme Interfacer is, simply, a helper app, that gets prebuilt by Substratum supported ROMs, allowing Substratum to alleviate OMS tasks in the background without refreshing any assets. In technical terms, Interfacer is a service that loads OMS commands into the system directly, and while OMS itself refreshes resources and assets on runtime, it will refresh the caller's window, asking it to refresh resources and assets each time an overlay is loaded/unloaded from the system.

    What about CMTE?
    I would like to say here, that we aren't trying to compete with the CyanogenMod Theme Engine at all. Think of the Substratum project as a community-driven project where a chunk of the open-source community coming together to create something we wanted in the start.

    We want to start from ground zero, without basing any code off of a huge chunk of code made by a corporation, but creating what we call "tweaks" as a built-in within our system (such as prebuilt accent choosing, theme customization based on user selection, infinite possibilities based on themers, etc.).

    Substratum was built by and with themers in mind. OMS was created by Sony and is planned to be merged into the source, meaning that we are running what Android should be running, rather than completely modifying a framework from the base with many changes that can't be understood by the average ROM developer.

    CMTE runs on the RRO2 system, which is the base of what Layers was running on. RRO2 is deprecated, and superseded by the OverlayManagerService (OMS) within Sony's code in the AOSP code review.

    Final thing, instead of competing against CMTE, we sincerely thank them for providing CMTE as an open sourced project. We were able to filter out everything needed by understanding the Theme Engine completely from a low level standpoint.

    Why is this better than Layers?
    • No longer require soft or hard reboots when applying themes
    • We can apply fonts without rebooting
    • We can apply System sounds from a theme, such as lock/unlock/effect_tick sounds, to make your unlock sounds match your theme
    • Does not use the vendor/overlays partition/folder anymore, to limit down possible security vulnerabilities and reflashing vendors constantly
    • Active and consistent development based on upstream Sony code, as well as team code. Relying on the old system meant bringing up legacy code to newer versions of Android, even when we know the RRO2 system is being superseded already.

    How is this different from Layers?
    • Overlays are loaded at runtime (truly) when you launch an application. You may briefly see an original resources screen flicker when you open an app, and that is being worked on by the team. However, due to the nature of how OMS works, it truly brings runtime theming when you start applications, rather that bloating the system down trying to extend resources of applications you aren't currently using.

    Would you like to contribute to the project?
    If you would like to contribute to the project, you are free to do so by pushing commits directly to our Gerrit Code Server. Please do not push to our GitHub organizations directly as a pull request, as those will be ignored due to having all code run through a code reviewing system. For more info regarding contributions, please check out our contributing page from our documentation.

    Download: https://play.google.com/store/apps/details?id=projekt.substratum

    Source code: https://github.com/substratum/substratum


    Team Substratum Developers:
    @nicholaschum: Lead Substratum Developer
    @sykopompos: Team Architect
    @iskandar1023: Theme/App/Backend Engine Developer
    @KreAch3R: Lead Experimental Developer
    @Surge1223: Binary and Algorithm Developer
    @MSF Jarvis: Platform and Feature Developer
    @The Flash: Documentation, community and developer relations lead
    @Char_G: Social media community organizer

    Special thanks to:.
    Mårten Kongstad (Sony Mobile)
    Zoran Jovanovic (Sony Mobile)
    Alan Viverette (Google)
    Clark Scheff (CyanogenMod)
    Andy Mast (CyanogenMod)

    XDA:DevDB Information
    [projekt.] substratum, Device Specific App for the XDA Community Apps

    Contributors
    nicholaschum, Sykopompos, iskandar1023, The Flash, KreAch3R, Surge1223, Char_G
    Source Code: https://github.com/substratum


    Version Information
    Status: Stable
    Current Stable Version: 983
    Stable Release Date: 2018-04-19

    Created 2017-04-09
    Last Updated 2018-04-19
    29
    Public release 983

    With this release, we have listened and heard to many people about the March security update and have worked around it by providing users with more information about how to properly load up overlays perfectly on ROMs with this security patch.

    For Samsung Oreo users, your compilation of overlays WILL be faster than normal. That's because we've decided to tap into Samsung's overlay permission and thus, you will not have your overlays reverted after a reboot (e.g. SystemUI). But doing so means we can no longer measure the time that overlays take to install as overlays are now offloaded to the Samsung Theme Package Processor and thus, all intent receivers are rendered useless.

    If your overlays appear PINK -> They mean it needs a reboot to take effect!
    If your overlays appear BLUE -> They mean ANOTHER theme has an Enabled + Installed overlay. For example if you installed Chrome from Swift Black and you open up Quetzal, it will show up in Blue in Quetzal, but Green in Swift Black.

    We also introduced the ActionBar Scroll Up feature in places including:
    - Main Theme Screen (MainActivity -> ThemeFragment)
    - Overlay Manager Screen (MainActivity -> ManagerFragment)
    - Settings (MainActivity -> SettingsFragment)
    - Theme Overlay Manager (InformationActivity -> Overlays)
    - Theme Wallpapers (InformationActivity -> Wallpapers)

    LiteMode: If you are not fond of the hero image taking up like 30% of your screen when opening a theme, enabling Lite Mode in Settings will open themes without that image, as well as reducing some animations for slower devices.

    SysServ Crashes? If you experience any crashes on Substratum Service mode, your ROM commits needs to be updated/repicked! We merged all our SysServ patches already and thus, some ROMs may have missed one patchset. Not to fret, we have informed teams that have outdated sources but here's the most up to date link that needs changing: https://substratum.review/c/SubstratumResources/platform_frameworks_base/+/448

    Translators and contributors now show up when clicking Substratum version in Settings! Translators are now parsing CrowdIn's CSV file and will rank based on your contribution on CrowdIn! If you were before the CrowdIn transition, don't worry, we still love you guys! Just verify and translate more words and we'll update the file from time to time!

    News about Android P? We have news, good and bad. But that comes later. Hopefully you just remember you're still on Android Oreo!

    Full changelog (chronologically):
    Public release 983
    InformationActivity: In Lite Mode, adjust the title text accordingly
    Samsung performance update 982
    Hotfix release 981
    Systems: Adjust for Samsung devices > API24 (aka. 25)
    Public release 980
    OverlaysAdapter: Cache the state color to speed up scrolling
    ShowcaseActivity: Add the toolbar scroll feature here as well
    SubstratumUX: Introduce "tap actionbar to scroll up" feature
    OverlaysAdapter: Add support of blue state for Samsung users
    LiteMode: Affect the fade-from-grayscale animation on LiteMode
    SettingsFragment: Change launchActivityUrl method for team links
    InformationActivity: In Lite Mode, completely lock toolbar expansion
    OverlaysAdapter: Introduce a new blue state
    SettingsFragment: Add Lite Mode and rewrite the Settings fragment
    Update dependencies
    Internal release 970
    AndromedaBinderService/Substratum: End binder services gracefully
    SettingsFragment: Update App Theme text on selection
    Fix up strings for menu state and app theme
    SettingsFragment: Add OK button to all contributor dialogs
    ManagerFragment: Show toast on overlay state change
    TeamFragment: Deprecate fragment and move to About Substratum
    TranslationDialog: Add some padding
    ManagerFragment: Reorganize and assign a systematic format for sheet fab
    SettingsFragment: Brand new way of showing translators!
    ThemeManager: Add back listOverlay method using direct interface on nougat
    MainActivity: Expose and assign the background of bottom tab to drawable
    ManagerFragment: Dynamically change text of sorting overlay state
    Substratum: Samsung checker should exclude Nougat from listThemes
    OverlaysManager: Only show the pink state dialog on Oreo!
    Merge pull request #173 from folgore95/patch-2
    Update strings.xml
    Better explanation about new samsung overlays compiling
    Update strings for Samsung Oreo refreshing of list manually
    Substratum: Samsung checker can also fallback to listThemes(context)
    Resources: Add Samsung software update to permission blacklist
    OverlaysManager: Reorganize pink title explanation dialog
    ManagerFragment: Allow user to sort by overlay enabled/disabled state
    SamsungIntegration: Change Samsung package check code
    OverlaysManager: Adapt the previous commit for Samsung users too
    OverlaysManager: Alert if user is installing overlay on stock March
    Resources: Add Samsung Voice Recorder to permission blacklist
    CompilerCommands: Samsung permission must be assigned statically
    OverlaysManager: Clean up and refactor logic
    OverlaysAdapter: Refresh and allow non-Samsung users with pink state
    Readme: Remove interfacer from readme
    SettingsFragment: Don't create indefinitely open snackbars
    Packages: Clean up isPackageInstalled function
    OverlaysAdapter/Item: Sanitize and clean up the logic used
    VariantAdapter: You must cast full class for view binding
    OverlaysAdapter: Complete rewrite
    MainActivity: Adjust layouts for Andromeda button
    AndromedaBinderService: Do not show the disconnected notification
    Andromeda: Fix crashes on andromeda update, also terminate subs
    SamsungIntegration: Also allow fwk overlays to be invoked for uninstall
    SamsungIntegration: Add transition helper from Nougat to Oreo
    MainActivity: On error dialog, show a more descriptive result
    Full translation import
    Fix build for Android Studio 3.2 Canary 10
    AndromedaRebase: Update the strings to say something else for debug
    AndromedaRebase: Prepare for Andromeda rebase
    build: Update dependencies
    ThemeManager: Don't use cached list on andromeda listOverlay
    MainActivity: Add new activity name for launching andromeda
    SoundUtils: Don't restart ui after applying sounds on substratum service
    Full translation import
    OverlaysManager: If Oreo and Samsung, do not wait for intent response
    Clean up, refactor and optimize imports
    InformationActivity: Enable Samsung Package Checker on Oreo
    SamsungIntegration: Re-add overlay component permission for 7.1.1+
    Merge pull request #167 from alamo18/dev
    MainActivity: bottomBar duplicate reference Viewbinding already did the job
    util: helpers: FileDownloader: Fit overall code style Don't declare a variable just to store the return
    Gradle && firebase update
    ManagerItem: Use overlay's version instead of live version
    CompilerCommands: isStatic is an Oreo OMS quirk
    CompilerCommands: Add isStatic false flag to manifest
    SettingsFragment: Speed up loading for Andromeda
    Systems: Optimize Samsung device checkers
    XiaomiIntegration: Show warning to enable extra permissions
    ManagerFragment: Restart SystemUI should not show on Andromeda
    Some boolean logic fixes from previous commits
    MainActivity: Dialog layout changes
    LocaleHelper: Deprecate old locale changer style
    Full translation import
    Packages: getPackageName(): If Samsung has an uninstalled overlay, spit packageName
    Clean up and reformat all res/ files
    AndromedaOffline: Introduce a way to uninstall overlays offline
    ShowcaseActivity: Remove custom animations as well
    ThemesListMenu: Recovery menu item should take precedence
    References: Disable Samsung overlay permission
    CompilerCommands: Reorganize permission for Samsung
    References: Debug substratum APKs should distribute Samsung overlay perm
    ValidatorDialog: Re-enable for custom ROM devs
    MainActivity: Remove FragmentTransaction animation
    References: Fix boolean logic in isServiceRunning
    Clean up and reformat
    ThemeItem: Introduce a dynamic image resizer to prevent OOMs
    De-localize the animation files for fragments
    Broadcasts: Samsung should get OverlayFound as well
    MainActivity: On fragment switch, unload fragment AsyncTasks
    OverlaysManager: Insert delay when installing snowflake overlays
    SubstratumCleanup: Fix relevant lint issues and remove unused resources
    SubstratumCleanup: Do ma thang
    SubstratumFloatInterface: Correctly deal with potential NPE
    Systems: Remove NonNull annotation from checkOMS method
    Clean-up and reformat
    Internal release 960
    Merge branch 'databinding' into dev
    SamsungOreoIntegration: New overlay pink state for being "stuck"
    ThemeManager: This is needed here too
    SubstratumCleanup: Remove unused resources
    Substratum: Deprecate Butterknife
    ProfileFragment: Migrate to Databinding
    SettingsFragment: Don't unnecessarily create Handler objects
    ThemeAdapter: Migrate sheet dialog to viewBinding
    ThemeAdapter: Migrate to databinding and deprecate gapps config
    VariantAdapter: Cleanup and migrate to Databinding
    Internal release 955
    26
    Public Full Rollout Release 950

    Hey guys, it's about time this month to release the actual, follow up release to our previous UI overhaul. This WILL be at 100% rollout, and we will update the app slowly the next few days to ensure that our users are happy :)

    PLEASE READ THE SHORT CHANGELOG, WE ARE SURE WE COVERED A LOT OF BUG REPORTS REPORTED TO US IN THE PAST WEEKS!

    The reason it took this long is because we have been doing serious debugging with many users, themers and developers - under many different device architectures and versions.

    Fixed compilations on legacy devices: Not to be confused with Substratum "Legacy" but rather, actually old devices, where they had a "new_alloc_size" during compilation. Huge thanks to +Surge Raval!

    Configuration change safety guard: If by any chance the app was reloaded by RRO/OMS/DO, the app will relaunch itself and tell you that the resources have been updated. This is to do with our UX improvement goal.

    Sony OMS Bypass: Substratum now functions on Android 7.x on Sony devices under legacy mode. This means themers can now theme on Sony devices, for Sony users! Huge thanks to Matt (appleknight) for debugging!

    Showcase Rewrite: In this update, we have deprecated the current showcase format, under the guidance of +Nathan Chancellor and +Harsh Shandilya, we have a new way of applying to have your App, Theme, Mod or Plugin featured in our showcase! The showcase now updates on demand, and will no longer cache the database on the device so it's pretty much a live place for us to promote our wonderful community and what everyone's been doing!

    New showcase tabs: Below will be the new showcase tabs that will be updated by the team to promote new apps/themes amongst our community!
    - Featured Themes: For new themes and upcoming stars!
    - Featured Apps: For amazing apps that our contributors would like shown
    - Themers Collective: The community collection of themes hosted on our Play Store account
    - Team Themes: Themes created by team members!
    - Clear/Dark/Light: Category based themes
    - Google Apps: Collection of theme ready apps
    - Samsung: Collection of Samsung-ready/compatible themes
    - SystemUI Tweaks: Previously called Plugins, but now more categorized
    - Other Tweaks: Also from Plugins, more categorization
    - Wallpapers: Wallpaper packs

    Samsung UX Experience Improvements: With a plethora of memory leaks and bugs now resolved, we have ironed out the experience to (nearly) match what AOSP has to offer!
    - If you installed an OMS-only theme on Samsung/Legacy, a notification will alert you to uninstall it (meaning if you're a user and you accidentally bought an OMS theme, you would be able to immediately refund it).
    - For sungstratum users, the boot up of the app has been significantly improved!

    UI Improvements: As usual, naming all of these are a pain, so I'll list them:
    - Splashscreen now fades into the main theme screen
    - Wallpapers, showcase and themes now stagger their loading animations one by one, and will fade from grayscale to color.
    - Removed the Pull down layout as well as shared element transition to completely speed everything up
    - Snackbars on the main UI will move on top of the bottom bar
    - On OOS, ensure that the navbar is properly colored (thanks to +Ivan Iskandar for finding this out)

    Bug fixes, performance and optimizations: Huge thanks to our contributors, we have cleaned up a lot of possible memory leaks, as well as ensured that many things are patched up. Overall, the app has been cleaned up drastically thanks to +Harsh Shandilya, +George G. and +Jack Boswell!

    Full changelog (chronologically):
    Public release 950
    Revert "PriorityListFragment: Change how we show the list"
    SubstratumUI: Various UI tweaks
    BottomBar: Set selected bottom bar icon and text to accent
    PMD/Packages: Notification on retention of unsupported theme
    PackageModificationDetector: Action click should remove notification
    AAPT: fix new_alloc_size overflow for ancient armeabi devices
    UnsupportedThemeReceiver: Autoclose the notification
    UnsupportedThemeReceiver: Close system dialogs on button click
    UnsupportedThemeReceiver: Rejection notification button
    FragmentTransaction: Replace commit() with commitAllowingStateLoss()
    ShowcaseActivity: When back is pressed, close drawer first
    ShowcaseActivity: Open the drawer automatically when launching Showcase
    Showcase: Change names of a few things
    ShowcaseActivity: Properly assign all the tabs to non-sort mode
    Showcase: Add new entries for new showcase themes/apps
    Showcase: Tabs will now sort based on actual cloud tab order
    Showcase: Completely revamp and clean up all the code
    OverlaysManager: If an overlay is about to be recompiled, disable first
    SamsungIntegration: Refresh the list on resume on Samsung too
    MainActivity: Remove unnecessary static variable
    SplashScreenActivity: Halve the time it takes to load splash
    SubstratumRebase: Clean up and refactor
    SamsungIntegration: Turbocharge Sungstratum bootup
    SamsungIntegration: Attempt to speed up boot
    SubstratumUX: Simplify the start up code of the app
    Systems: Clean up unused whitespace
    Remove some blacklisted packages
    Systems: Add a speedier way of checking for packages
    InformationActivity: If hero image starts transparent, use colorPrimary
    UnitTests: Suspend
    Systems: Sony check should be permission check, not prop
    Lunchbar: No longer extend Snackbar, just use it as a constructor
    Systems: Sony check may return empty string
    InformationActivity: When theme is empty, kill automatically
    SubstratumUI: Lunchbar should go above the bottom bar
    Systems: Sony Mobile should try and take on rooted legacy mode
    ManagerFragment: Optimize some calls to userInput.get()
    Resources: Suppress and remove some warnings
    ThemeAdapter: Remove some unused imports
    Packages: Factor out API 21-23 handling
    SoundUtils: Remove unused variable
    ShowcaseActivity: Remove unused method
    ThemeManager: Simplify listOverlay methods
    AndroidManifest: Fix some warnings
    Packages: Suppress some warnings
    Sounds: Don't call wordList.get() repeatedly
    Expose navigation bar color on API 27
    PriorityListFragment: Change how we show the list
    ThemeManager: Fix listTargetWithMultipleOverlaysEnabled on andromeda
    SplashScreenActivity: Remove the app logo color animation thingy
    Systems: Andromeda mode only if the package is enabled
    SettingsFragment: Disable exposures check if not running interfacer or sysserv
    Clean up and refactor
    OverlaysAttention: Wrap to full size of text
    Overlays: Do not refresh the list on type3 selection twice
    OverlaysAdapter: Allow for newlines in attention
    SplashScreenActivity: Hide progress bar until certain time
    Clean up and reformat
    SamsungIntegration: Fix regression with multi refreshes
    SubstratumUI: Revert back to grey accents
    IA: Fix inconsistent capitalisation in strings
    InformationActivity: Terminate all tab's asynchronous tasks onDestroy
    Update gradle
    RecoveryFragment: Fix inconsistent tests for card visibility
    InformationActivity: Remove PullBackLayout
    Substratum: Completely remove shared element transitions.
    SubstratumUI: Revert back to Pink accents
    MainActivity: Drop redundant samsung check
    Substratum: Set theme system module during early init
    RecoveryFragment: Trim duplicate code
    ThemeAdapter: Remove the greyscale animator
    ManagerFragment: Improve UX for refresh
    ThemeFragment: Stagger the recyclerView objects
    SubstratumUI: Introduce a new color scheme!
    SplashScreenActivity: Fade out to the MainActivity
    ThemeBadge: Remove the residual files
    PriorityListFragment: Add an AVD for fab click
    PriorityListFragment: Adapt for Oreo
    SubstratumUI: Update the blobs to N blobs
    AndroidManifest: Turns out we needed one more
    StringUtils: Place in a better directory
    Clean up and reformat
    NotificationCreator: Deprecate this class
    ThemeFragment: Remove the bottombar badge
    Substratum: Fix various mistakes on reassignment
    AndroidManifest: Clean out unused permissions
    FloatUi: Show overlay versions
    ManagerAdapter: Generify and account for FloatUi
    Substratum: Drop hungarian notation contexts
    RecoveryFragment: Fix incorrect test for sound
    Internal release 932
    Substratum: Deprecate Sounds for legacy systems
    RecoveryFragment: Substratum Service does not need permission
    ManagerAdapter: Fix theme entry formatting
    SettingsFragment: Instantly post restartSubstratum call
    ThemeAdapter/InformationActivity Tabs: Optimize lifecycle
    ManagerAdapter: Fix inconsistent labels
    SettingsFragment: Make substratum restarts less jarring
    ManagerFragment: Deprecate onPrepareOptionsMenu
    ManagerFragment: Show all the icons on the actionbar
    ThemeAdapter: Enforce package name check for receiver
    ManagerAdapter: Add the overlay's theme version
    ThemeAdapter: Do not allow multiple theme launches
    PullBackLayout: Adjust pull back threshold
    BottomBar: Adjust color for inactive state
    ManagerAdapter: Fix incorrectly styled Theme Name entry
    Subtratum: Adjust manager fragment strings
    Adapters: Introduce a utility method to format items
    MainActivity: BottomBar should reset on config change
    Adapters: Remove usages of Html#fromHtml
    ThemeLaunchActivity: Remove plugin_version extra from launch intent
    InformationActivity: Use dominance again
    InformationActivity: Adjust the color vibrance algorithm
    ThemeAdaptor: Ditch HTML hack and use setTypeface for bold
    OverlaysManager: Ditch redundant code
    Clean up and optimize
    OverlaysAdapter: Use a more traditionally used version code
    Wallpapers: Reassign append of load complete
    KeyExchangeActivity: Pass a Serializable object of SecurityItem
    SamsungIntegration: Speed up samsung device check
    Overlays: onResume should have proper list refreshes
    PullBackLayout: Adjust sensitivity and add higher threshold
    InformationActivity: Adjust looks
    InformationActivity: Tabs should finish loading before SET
    ThemeAdapter: Fix potential FC on weak devices
    SubstratumUI: Fix a few quirks with the new shared elements
    SubstratumUI: Shared Element Transitions!
    MainActivity: Hide the bottom bar shadow if we don't use it
    PriorityListFragment: Make use of activity's toolbar
    InformationActivity: Fix crash when launching theme shortcut
    InformationActivity: Use completely transparent status bar
    MainActivity: Set white navbar icons when sheet dialog opened
    MainActivity: Add shadow workaround to bottom bar
    OverlaysManager: Properly close compilingProgress
    Revert "PackageModificationDetector: Don't refresh IA on theme update"
    Overlays: Catch potential IndexOutOfBounds
    SubstratumCrash: If the ROM/builder f'ed up, explain the issue
    SubstratumCrash: If system crashed substratum, relaunch
    Clean up and reformat
    SubstratumUI: Deprecate Roughike bar in favor of AOSP
    InformationActivity: Stuff for transparent themes
    build: Fix derps
    Fix travis
    22
    Substratum Release 730

    Auto Overlay Upgrade:
    Substratum will now automatically upgrade the overlays for a theme that is updated. If a theme is updated and this option is enabled, the overlays installed from this theme will also be upgraded. This means you must recompile your pre-existing overlays to update the metadata! (Optional)

    Auto Target Overlay Upgrade:
    Substratum will now automatically upgrade the overlays for a target package that is updated. If an app like Youtube is updated and this option is enabled, the overlays installed for Youtube will also be upgraded. This means you must recompile your pre-existing overlays to update the metadata! (Optional)

    Auto Overlay Found Notification:
    Substratum will also notify you if you installed a new application, it will notify the user if a theme has that overlay themed. (Optional)

    Substratum UI Changes: To iron a few things out, we have disabled Split-screen mode on the application so that a forced configuration change will not affect compilations.

    Profile Compilation: Substratum will now automatically compile the overlays for a profile. This means you must recompile your pre-existing overlays to update the metadata before creating a new profile!

    8.0.0 Profile Support: The template is not fully ready yet but for daring testers, you can give it a shot!

    Full Changelog
    Full translation import
    Merge pull request #105 from sirmordred/dev
    Substratum: Some more nitpicks
    Revert "Substratum: Handle ThemeInterfacerService operation failures"
    Substratum: Fixup build
    Substratum: Handle ThemeInterfacerService operation failures * Make more solid
    Substratum: FileOperations: Reduce the chance of File operation failures
    Substratum: nitpicks
    OverlayUpdater: Take account for errored builds
    ManagerFragment: BypassRestart boolean for disabled Android/SysUI APKs
    ManagerFragment: Sort overlays and clean up detection logic on legacy
    ThemeManager: Also take account for checking legacy overlays
    Reformat and clean up after pull request
    Merge pull request #104 from sirmordred/dev
    AndroidManifest: Lock the app from splitscreen mode
    Substratum: Some improvements
    Internal beta release 724
    MainActivity: Do not hide showcase icon in action bar by fragment
    String consistency after pull request
    SubstratumUI: BlurView styles should show underlying actionbar
    ManagerFragment: Refreshing the list and no overlays found = blob!
    ThemeEntryCard: Fix advanced information alignment
    Strings: Touch up on grammar caught on last night on G+
    Merge remote-tracking branch 'origin/dev' into dev
    Merge pull request #103 from DumF0rGaming/patch-1
    Improvement
    ProfileFragment: Properly hide progressbar on complete restore
    ProfileFragment: Set dialog cancellable and wakelock
    ProfileFragment: Fix newly compiled overlays doesn't get enabled
    FloatUITile: Only enable it if the user has clicked on the icon once
    OverlayUpdater: Add theme updating overlay capabilities
    ProfileFragment: Fix proper string
    ProfileFragment: Move the strings for compiling overlays to /res
    OverlayUpdater: Fix after overlay metadata rebase
    Merge pull request #99 from beanstown106/dev
    Uncapitalize the branding in preparation for pull request
    OverlayUpdater: Add more descriptive titles
    Automatically compile missing overlays when restoring profile
    ScheduledProfileService: Use new profile state methods
    PriorityAdapter: Adapt with new overlay metadata
    ProfileFragment: Use new overlay state structure
    ManagerAdapter: Adapt with new overlay metadata
    ProfileManager: Add basic method of new profile state file structure
    Use proper variant names for overlays manifest
    ProfileFragment: Change backup location info
    OverlayFound: Use a different icon to distinguish
    Internal beta release 722
    OverlayAlert: Remove unnecessary layout
    Overlays: Try to cancel compile notification on destroy
    Optimize and reformat everything!
    OverlayAlert: Introduce a checker to see newly installed packages
    OverlayUpdater: Allow user to toggle OverlayUpdater (default=false)
    OverlayUpdater: Async + Notification
    OverlayUpdater: Introduce functional method of automatically rebuilding
    OverlayUpdater: Introduce an initial check for updated target packages
    Internal beta release 721
    ThemeLaunchActivity: Add missing theme extras not passed through intent
    Internal beta release 720
    ThemeLaunchActivity: Fix theme extras not passed through the intent
    Resources: Allow Telegram Build Bot to build Icon Studio-ready builds
    Internal beta release 719
    SettingsFragment: All exceptions will return network error string
    Internal beta release 718
    ManagerAdapter: Take account for cache directory and stop FCing
    ManagerFragment: Uncheck everything on action completion
    Overlays: Consume an activity disconnect
    Internal beta release 717
    References: Just log it.
    References: Do not log by boolean, just do debug builds
    References: Set the default theme log to debug builds
    AndroidManifest: Change the default style again
    References: Call the PreferenceManager rather than calling an instance
    References: Do not injectAOPT every single time, only once!
    SubstratumBuilder: Don't forget the variants
    References: Clean up
    References: Remove unnecessary logging
    Internal beta release 715
    ThemeLaunchActivity: Change default theme
    20
    Substratum Release 812

    SystemUI and Android System Crash Detection: A HUGE thanks to +Harsh Shandilya for implementing this feature upstream! This means that 3 crashes of SystemUI or Android System, now causes Substratum to automatically disable the overlay, just like a normal overlay crash. Back then SystemUI and Android System will crash with the overlay enabled indefinitely. This doesn't need any new commits on platform for this to work!

    Background Services Fix: We temporarily disabled one of the features where background services were killed no matter what theme service you were on (OMS/Legacy) to try and prevent a noticeable asset refresh the next time you launched an app. This will still take effect on Samsung devices, but we will look into what kind of workaround we can lock this feature down for OMS devices too, so that we can ensure apps like apps with services that keep an app open (which prevents assets redraw) will be themed without a reboot, such as Google Search! Thanks a lot to +Faiyaz Sheth for finding the section of code that was causing the background service to die and +Harsh Shandilya for ensuring the code worked!

    Legacy Theme Overlay Uninstall: A bug was fixed where when you tried to uninstall an overlay from inside the theme, it would not uninstall properly. Thanks to +Ivan Iskandar for finding the source of the issue!

    Full Masquerade Deprecation: Masquerade is fully EOL from this version onwards. Please move to a Theme Interfacer build to continue using substratum.

    Themers: We ensure that people on Xposed N now shows up on logs. Whether you provide support is on you! :)

    Full changelog
    Public release 812
    SettingsFragment: Hide Samsung Dangerous overlay option on legacy
    Clean up all of the XML files
    MainActivity: Fix String build after translation refresh
    ProfileFragment: Fix String build after translation refresh
    Clean up and reformat after fast forward
    ProfileFragment: Fix missing String pointer from consolidation commit
    Update Gradle dependency for Android Studio Canary 8
    Full translation import
    Overlays: Only kill background packages on Samsung devices
    ShowcaseActivity: Change search URL to samsung themes on samsung devices.
    MainActivity: Hide the button to sungstratum play store by default
    Overlays: Fix overlays with type3 isn't removed properly
    AppCrashReceiver: Simplify switch logic a bit more
    AppCrashReceiver: Remove the SystemUI crash count pref earlier
    AppCrashReceiver: Change the if-elif-else ladder to switch
    AppCrashReceiver: Handle SystemUI crashes properly
    TeamFragment: Add LunchBar to all exception catch branches
    AppCrashReceiver: Fix Harsh's derp - variable not declared before usage
    Refactor and format after cherry pick
    References: Slightly tweak LogChar file names
    AppCrashReciever: Only log overlays to be disabled if there are any.
    References: Slightly change up how checkPackageSupport works
    Substratum: Sync down blacklisted packages at boot time
    ManagerFragment: Add dismiss button on reboot dialog
    OverlayFunctions: Don't restart SystemUI on legacy
    BootCompletedReciever: Fix lint warning for clearSubstratumCompileFolder
    RescueActivity: Also disable SystemUI overlays
    AppCrashReciever: Improve logging
    MainActivity: Don't create CountdownTimer object
    Substratum: Cleanup LunchBar classes
    Long live masquerade
    ThemeManager: Don't restart SystemUI on framework overlay change
    SamsungIntegration: Allow for devs to toggle whether to hide overlay
    MainActivity: Show a toast when LogChar reports are cleared
    References: Clear the logchar auto cleanup prefs on reset
    Substratum: Add preference to auto clean saved LogChar reports
    OverlaysItem: Remove unused method
    References: Fix logspam in isAuthorizedDebugger
    SubstratumRebase: Rebase on lint from Android Studio Canary 7
    Substratum: Add a few null asserts
    References: Clean up lint again
    References: Surround dynamic shortcuts assignation with null checks
    References: It is no longer a safe, peaceful world...
    SplashScreenActivity: Apply the SharedPrefs following completion
    Update gradle
    References: Lint cleanup
    References: Clear the restore warning pref on configuration reset
    ManageSpaceActivity: Remove unused Context variable
    RecoveryFragment: Make sure the restore info dialog gets seen
    Substratum: De-duplicate dialog okay/cancel strings
    MainActivity: Change FloatUI permissions toasts to AlertDialogs
Our Apps
Get our official app!
The best way to access XDA on your phone
Nav Gestures
Add swipe gestures to any Android
One Handed Mode
Eases uses one hand with your phone