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

6,079 posts
Thanks Meter: 13,927
By nicholaschum, Substratum Development Leader / Inactive Recognized Themer on 9th April 2017, 10:03 AM
Thread Closed Email Thread

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:

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.


Source code:

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

nicholaschum, Sykopompos, iskandar1023, The Flash, KreAch3R, Surge1223, Char_G
Source Code:

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

Created 2017-04-09
Last Updated 2018-04-19
The Following 40 Users Say Thank You to nicholaschum For This Useful Post: [ View ]
9th April 2017, 10:04 AM |#2  
nicholaschum's Avatar
OP Substratum Development Leader / Inactive Recognized Themer
Flag University of Toronto
Thanks Meter: 13,927
Donate to Me

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:
applicationId "substratum.theme.template"
Change this to:
applicationId "com.yourname.themename"
Change Package Name in the project structure: (optional)
  * 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:

Now configure it to your liking:
These files link back to the strings.xml inside the res/values folder, here:
<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:
and delete line 15.
<category android:name="android.intent.category.LAUNCHER"/>
Step 3: Start theming!

To install system sound effects, you will need to have an audio folder, just like it's listed here:

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

Audio ZIP root structure:
Code: mp3) mp3) mp3) mp3) mp3) mp3)
Boot Animations
To install boot animations, you will need to have a bootanimations folder, just like it's listed here:

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

To install fonts, you will need to have a fonts folder, just like it's listed here:

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.

Font ZIP root structure:
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.

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:

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:

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

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:

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.

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!

While debugging your application, you should be setting this to false so that it doesn't keep triggering antipiracy when you are working:

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:

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:

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:

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:


For more information regarding type overlays and how to use them, please contact @setiawanjimmy and @jerbeck24 from the Substratum theme team!
The Following 11 Users Say Thank You to nicholaschum For This Useful Post: [ View ]
9th April 2017, 10:05 AM |#3  
nathanchance's Avatar
Recognized Developer / Recognized Contributor
Flag Mesa, AZ
Thanks Meter: 50,824
All of our important info is kept in our official documentation repo! This includes info regarding:
  • Frequently asked questions
  • Adding support to your custom ROM
  • A list of officially supported ROMs
  • A guide on how to contribute
The Following 5 Users Say Thank You to nathanchance For This Useful Post: [ View ]
11th April 2017, 08:55 AM |#4  
nathanchance's Avatar
Recognized Developer / Recognized Contributor
Flag Mesa, AZ
Thanks Meter: 50,824
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.
The Following 4 Users Say Thank You to nathanchance For This Useful Post: [ View ]
17th April 2017, 11:23 AM |#5  
nicholaschum's Avatar
OP Substratum Development Leader / Inactive Recognized Themer
Flag University of Toronto
Thanks Meter: 13,927
Donate to Me
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
The Following 13 Users Say Thank You to nicholaschum For This Useful Post: [ View ]
25th April 2017, 03:35 AM |#6  
nicholaschum's Avatar
OP Substratum Development Leader / Inactive Recognized Themer
Flag University of Toronto
Thanks Meter: 13,927
Donate to Me
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:

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!

Supported List:

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 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)
Attached Thumbnails
Click image for larger version

Name:	2017 - 1 (1).jpg
Views:	2534
Size:	130.8 KB
ID:	4125421   Click image for larger version

Name:	2017 - 1 (2).jpg
Views:	2510
Size:	136.2 KB
ID:	4125422   Click image for larger version

Name:	2017 - 1.jpg
Views:	2490
Size:	97.2 KB
ID:	4125423  
The Following 12 Users Say Thank You to nicholaschum For This Useful Post: [ View ]
3rd May 2017, 11:27 PM |#7  
nicholaschum's Avatar
OP Substratum Development Leader / Inactive Recognized Themer
Flag University of Toronto
Thanks Meter: 13,927
Donate to Me
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
The Following 11 Users Say Thank You to nicholaschum For This Useful Post: [ View ]
16th May 2017, 04:19 AM |#8  
nicholaschum's Avatar
OP Substratum Development Leader / Inactive Recognized Themer
Flag University of Toronto
Thanks Meter: 13,927
Donate to Me
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
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
The Following 22 Users Say Thank You to nicholaschum For This Useful Post: [ View ]
25th June 2017, 10:00 PM |#9  
nicholaschum's Avatar
OP Substratum Development Leader / Inactive Recognized Themer
Flag University of Toronto
Thanks Meter: 13,927
Donate to Me
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: (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:
- NOTE 3: We also have a public Samsung Substratum chat:

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: (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
Attached Thumbnails
Click image for larger version

Name:	Screenshot_20170625-163542.jpg
Views:	1546
Size:	183.8 KB
ID:	4193325   Click image for larger version

Name:	Screenshot_20170625-163548.jpg
Views:	1526
Size:	218.2 KB
ID:	4193326   Click image for larger version

Name:	Screenshot_20170625-163558.jpg
Views:	1516
Size:	194.0 KB
ID:	4193327  
The Following 18 Users Say Thank You to nicholaschum For This Useful Post: [ View ]
14th July 2017, 08:53 AM |#10  
nicholaschum's Avatar
OP Substratum Development Leader / Inactive Recognized Themer
Flag University of Toronto
Thanks Meter: 13,927
Donate to Me
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
Attached Thumbnails
Click image for larger version

Name:	Screenshot_20170714-032007.png
Views:	872
Size:	232.4 KB
ID:	4211253   Click image for larger version

Name:	Screenshot_20170714-032030.png
Views:	850
Size:	246.7 KB
ID:	4211254   Click image for larger version

Name:	Screenshot_20170714-032128.png
Views:	842
Size:	192.9 KB
ID:	4211255   Click image for larger version

Name:	Screenshot_20170714-032418.png
Views:	812
Size:	123.7 KB
ID:	4211256  
The Following 8 Users Say Thank You to nicholaschum For This Useful Post: [ View ]
26th July 2017, 09:05 AM |#11  
nicholaschum's Avatar
OP Substratum Development Leader / Inactive Recognized Themer
Flag University of Toronto
Thanks Meter: 13,927
Donate to Me
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
The Following 20 Users Say Thank You to nicholaschum For This Useful Post: [ View ]
Thread Closed Subscribe to Thread
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes