Skip to content

Changelog (Old)

Der_Googler edited this page Sep 29, 2024 · 1 revision

3.24.32

see 2.24.31

3.24.31

  • Added new SuFile methods
  • Improved install script handler
  • ModConf should now handle relative links correctly
  • Fixed path

3.24.30

  • Fixed Shell.getRootManager()

3.24.29

  • Added missin methods to SuFile
  • Performance improvements (I tried)

If MMRL starts lagging for you, create a file name /data/adb/mmrl/settings/disableHardwareAccelerated

3.24.28

  • Introduce Installer API V3
  • Fixed drawer not closing when back event is pressed
  • Updated Japanese by [@reindex-ot]
  • Updated ModFS to 1.4.2

3.24.27

Note

This was a Play Store only update

  • Fixed content:// paths

3.24.26

  • Improved installer
  • Reverted "Installed" tag to it's former form
  • Reverted verified tag and added back verified icon
  • Added "features" tag to explore cards
  • Added multi-module install — for Explore and Local (beta)
  • Added a feature where you can open *.zip in MMRL to install them (beta)

3.23.26

  • Updated Japanese by [@reindex-ot]
  • Improved landing page
  • Improved Magisk install command
  • Improved installer and Terminal
  • Fixed root detection where the detection was triggered when modules included Magisk, APD, APatch, KSU or KernelSU

3.23.25

In this update the settings system has been reworked. Some settings require a app restart.

  • Added a landing page for browsers
  • Added Japanese by [@reindex-ot]
  • Added more robust logging
  • Added Telegram channel to the side menu
  • Side menu has now proper width for devices
  • SuFile's restricted paths can now be extended
  • Fixed startup background color
  • Fix some typos
  • Fix startup crashes (hopefully)
  • Fixed a React safety issue
  • Fixed changelog
  • include(...) is now deprecated. Please use require(...)
  • usehooks-ts is now available in ModConf (except for useScript, useLocalStorage, useSessionStorage, useDarkMode and useDocumentTitle)
  • Installer terminal now keeps the screen on
  • Explore modules show now from where the modules comes
  • MMRL's Anti-Features a now fetch based for more security
  • Improved search

3.22.24

  • Fix ModFS typo

3.22.23

With this update we introducing ModConf Standalone and also... DROPPING... the module requirement to install other modules! Also includes security, privacy and general improvements.

This update introduces ModConf Standalone where developers can build third-party ModConf's for other modules.

  • Introduce ModConf Standalone
  • Updated dependencies
  • Fixed that volume slider is visible while choosing options inside the terminal
  • Improved installer
  • Improved repo addition
  • ModFS is now available in ModConf
  • ModFS system improvements
  • Performance improvements
  • Module developers can now print images in their install scripts (beta)
  • Shell has been migrated to Shell v2. Read more here
  • new Terminal(...) does not require Terminal.onExit any more
  • SuZip has been added to ModConf, a class to read zip files
  • Improved the way repo urls are getting added
  • Improved search
  • Added module notes where module developers can add a note above the module description to inform the users about install instructions or something else
  • Fixed some text typos
  • Fixed the issue with the keyboard are overdraw elements
  • Dropping the requirement of an external module like MMRL-CLI or MMRL Install Tools. MMRL can now download the modules itself
  • SuFile doesn't have access to apk specific anymore. Paths like /data/data/com.whatsapp. We want to ensure that the app and ModConf is used in the right way.
  • Unfortunately the multi module option get removed in this update. The multi module was handled by MMRL-CLI.

2.20.21

  • Added a error handle for actions outside activities. Does not affects modules and their configs. Does not catches theme errors.
  • Updated languages
  • Added Azerbaijani by @RashadGasimli. When selecting this language you may encounter that other languages have no names
  • Fixed 'value' is not a string (#202)
  • Fixed that images having white background
  • window.open has been updated please read the docs to prevent unexpected error.

2.20.19

  • Handle old format better
  • Magisk Modules Alt Repo has been added to a default repo
  • Fixed local install icon color
  • Fixed repo enable/disable switches
  • Fixed flatlist-react for a not correct export
// Workaround for older versions
const FlatList = BuildConfig.VERSION_CODE > 22020 ? require("flatlist-react") : require("flatlist-react").default;
  • Added back minApi and maxApi
  • Added module file size
  • Added partial GFM Alert support
  • Improved search

2.19.18

  • Add support for new repo format
  • Made DOMParser and XMLSerializer accessible

Read more 🔗

2.19.17

  • Improved ModConf (require)
  • Added XMLSerializer to ModConf
  • Initial release to F-Droid
  • Added a search bar to ModFS
  • Added path to ModConf
  • Fixed a bug where screenshots were incorrectly visible

Read more 🔗

2.18.17

This update comes with a brand new installer terminal and the release of the internal terminal API

Read more about Installer V2 here

Also ModConf received a breaking change this affects Terminal. This function has neen migrated to a Native-class extend. You can now implant the Chooser class to let user choose files like pif.json to import a new spoof.

This update will break MMRL Install Tools and will no longer receive updates.

What's new?

  • New installer terminal
  • Added word wrap to the terminal
  • Added line numbers to the terminal
  • Fixed a problem where the screenshots aren't scrollable
  • Download and install button has been combined together to save space

2.17.16

  • Fixed Anti-Features always displaying
  • Fixed installer not opens when picked a single file

2.17.15

  • Removed $ZIPFILE, $ZIPFILES, $URL and $URLS from installer environment
  • Removed new version popup
  • Fixed Anti-Features not showing in module pages
  • Improved PicturePreviewActivity
  • Added Brazil as language by Vaz15k
  • Added support for multiple module install (local only)
  • Added favicons
  • Updated blacklist

2.16.13

Starting with this release you'll require MMRL-CLI to use the installer or you use our provided workarounds

  • Moved installer elements to top in ModFS
  • Removed app splitting
  • Updated error code
  • Updated dependencies
  • Fixed Useless regular-expression character escape (#171)
  • Fixed Incorrect suffix check (#172)
  • Fixed links that have forced font-face
  • Fixed blur having soft corners
  • Added option to view the changelog from an version item
  • Improved terminal error handling
  • Introducing hardcoded antifeatures (even for local modules)
  • Blacklisted <iframe/>

2.15.12

  • Fixed Magisk detection
  • Updated dependencies

2.15.11

  • Added Logcat activity
  • Added update icon to updated local module cards
  • Fixed install error where the installer returns exit code 500
  • Fixed installer wrong bottom window insets

2.15.10

Note

Google Play as reported that a native library named libGLESv2_adreno.so causes the app to crash. Unfortunately we can't do anything to fix this issue. To prevent this you'll need enough memory to prevent memory allocations. Sometimes they abort() if they fail required memory allocations.

  • Updated dependencies
  • Updated GMR submission link
  • The new badge will be available under https://mmrl.dergoogler.com/assets/MMRL-Badge.svg
  • Added a form to create a track.json. You can submit it to any repo that uses the MRepo or GR Fork repo format
  • Added donation button in module pages
  • Fixed a bug where "No connection" shows in local modules
  • Fixed the bug of latest version in module pages
  • ModConf has now blacklisted functions
  • ModConf handles now better errors
  • # now your local modules can have covers too
    cover=<CONFCWD>/assets/logcat.png

ModConf

  • Added High Order Components (HOC)
  • SuFile supports now .getPath()
  • <CodeBlock/> has been added, so you can renader easily your code samples
  • default-composer is now available as an import
  • // image can now load small images
    <Image src="<ADB>/mmrl/assets/img.png" />

2.14.10

  • Improved design
  • Installer handles better the error code
  • ModConf improvements
  • ModConf fully supports now SuFile, Shell, BuildConfig and more
  • ModConf Playground paths can be more customized
  • Fixed BottomToolbar that was drawing behind the navbar

ModConf

There are many new things for ModConf ;)

Breaking changes

This update may break some modules..

Removed globals
  • List
  • ListItem
  • ListItemButton
  • ListItemText
  • ListSubheader
  • ListItemDialogEditText
  • Switch
  • Divider
Removed libraries
  • @mmrl/buildconfig (now a global)
  • @mmrl/sufile (now a global)
  • @mmrl/os (now a global)
  • @mmrl/shell (now a global)

ConfigProvider

Store your configurations easily with ConfigProvider and access the stored config with useConfig

Expand sample
import React from "react";
import { Page, Toolbar } from "@mmrl/ui";
import { useConfig } from "@mmrl/hooks";

import { ConfigProvider } from "@mmrl/providers";

function App() {
  const [config, setConfig, overrideConfig] = useConfig()

  const getCurl = () => {
    return config.curl
  }

  const setCurl = () => {
    return setConfig("curl", "path")
  }

  const override = () => {
    overrideConfig({
      // ...
    })
  }

  const renderToolbar = () => {
    return (
      <Toolbar modifier="noshadow">
        <Toolbar.Center>Sample</Toolbar.Center>
      </Toolbar>
    );
  };

  return (
    <ConfigProvider loadFromFile={modpath("config.json")} initialConfig={{
      node: "Empty"
    }} loader="json">
      <Page renderToolbar={renderToolbar}>
        {config.node}
      </Page>
    </ConfigProvider>
  );
}

export default App;

Natives

More native methods are available!

Expand list
  • Shell
  • SuFile
  • os
  • view
  • Build
  • BuildConfig
  • DOMParser
  • Document
  • Event
  • FileReader
  • Blob
  • Element
  • Reponse
  • NamedNodeMap

New hooks

This update also brings new hooks

Expand list

2.13.9

  • Testing new repo format
  • Due to the lack of usage of the FoxMMM properties we'll stop supporting these properties
  • Discontinuing mmrl.json
  • Added versions
  • Added install confirm
  • All modules can now sorted by date
  • Added terminal ext
  • Better module update handling
  • Added chinese support by @2926295173
  • Re-worked module cards
  • Improved search
  • Added Module Configure docs
  • Removed selectable themes
  • Improved design
  • ModConf is now ModFS and Module Configure is now ModConf
    • ModFS will be saved in /data/adb/mmrl/modfs.<version>.json
  • Added window insets, status bar and navigation bar won't cut them off anymore
  • Possible splash screen crash fixed

Another important notes

  • You may encounter lags while loading IzzySoft's repo

ModConf breaking changes

Page component

In the page component the backgroundStyle attr has been changed

// before
<Page backgroundStyle="#000">
{/* after */}
<Page backgroundStyle={{ backgroundColor: "#000" }}>

1.13.9

  • Removed clear text traffic

1.13.8

  • Added APatch support (beta)
  • Logo in ModConf are now PNGs
  • Fixed fab is shown when MMRL Install Tools isn't installed
  • Some other bug fixes

1.12.8

  • Added many new imports to Module Configure
    • @mmrl/os
    • @mmrl/terminal
    • @mmrl/buildconfig
    • @mmrl/os
  • Profile page shows now followers
  • You can now configure the toolbar yourself in Module Configure (#93)
  • Other improvements

1.11.8

  • Added option to view images in a activity
  • ModConf may more affect the installer
  • ModConf has been resetted due new version
  • Improved feature to share your device information's (device specs, configured ModConf, app infos and installed modules)
  • Besides minKernelSU has been added
  • Added developer notes (read more)

1.10.7

  • Improved Magisk detection
  • Updated API access point
  • Removed "Enable local install" from settings

1.10.6

  • Added new functions to Module Configure (YAML and INI, use like JSON)
  • Reworked AboutActivity (shows now user- and group id)
  • Added accounts back. Read more at our module page config.
  • Updated LibSU
  • Some parts from the Shell class can now used
  • Supporting now user change via KernelSU
  • Supporting now repoless update json

1.9.6

Module Configure don't work or you get an error? Use resetprop to remove configured system properties, like restprop --delete persist.mmrlini.curl

  • Fixed monet theme (#56)
  • Fixed Module Configure (#55)
  • Some other improvements

1.9.5

Breaking changes

Due to the nativeProperties system change you'll require a new way to gather properties.
Use the following snippet to get your props

function getconf {
  /system/bin/getprop "$1" "$2" | sed 's/^"\(.*\)"$/\1/'
}

Main

  • Design improvements

  • Screenshots are now bigger

  • Screenshots can now viewed in full screen

  • Added support for verified modules

  • Added support for modules to use their update.json

  • The module language are now displayed in the About tab

  • Modules display now their require of other modules

  • Low quality modules are now more hovered

  • Added many new categories
    • Magisk
    • KernelSU
    • Zygisk
    • LSPosed
    • Xposed
    • Performance Optimization
    • Battery Life
    • Customization
    • Audio Enhancements
    • Security
    • Camera Enhancements
    • SystemUI Mods
    • Tweaks and Hacks
    • Modifications for Root Apps
    • System Fonts and Emojis
    • Miscellaneous
    • ROM-Specific Modules
    • Gamepad and Controller Support
    • App Additions and Features
    • Adblocking and Hosts Files
    • Navigation Bar and Gesture Customization
    • Advanced Audio Mods
    • Custom Kernels
    • Boot Animation
    • Privacy Enhancements
  • The verified and hidden system are back

  • Updated strings

  • File choosing has been fixed

  • Couldn't exit Terminal has been fixed

  • Added two new filter

  • Some filter may not available in certain pages

Configure

  • Cleaned up the source code
  • useActivity can now imported or required from @mmrl/hooks
  • SuFile is now available import { read, write } from "@mmrl/sufile"
    • SuFile has also support for browsers
  • Some other removal of unused things

Full API changes

1.8.5

  • Design changes
  • ModConf changes/addings
  • Fixed 5 limit repos
  • Fixed addings duplicate repos
  • Added a share feature
  • Reworked filter system, also added new filters
  • Modules are listed as a full list now
  • Installed modules show now a update button if the explore version is higher
  • MMRL Install Tools are now required to install modules from explore and local
  • Fixed incorrect target API
  • Syntax highlighting has been re-enabled, but with dark background

Highlights of 1.8.5

This version introduces a new way to develop config pages for your modules. The config pages using now JSX (React) as engine, which make more easier to manage states and much more.

Here is a quick example how the config page of MMRL Install Tools looks like

To create a page you should follow MMRL Install Tools as example.

import React from "react"
import { Markdown, Page, Tabbar } from "@mmrl/ui"
import { useNativeProperties, useNativeStorage } from "@mmrl/hooks"

function GeneralTab(props) {
  const [curl, setCurl] = useNativeProperties("persist.mmrlini.curl", "/system/usr/share/mmrl/bin/curl");
  const [zip, setZip] = useNativeProperties("persist.mmrlini.zip", "/system/usr/share/mmrl/bin/zip");
  const [unzip, setUnzip] = useNativeProperties("persist.mmrlini.unzip", "/system/bin/unzip");
  const [installFolder, setInstallFolder] = useNativeProperties("persist.mmrlini.install_folder", "/data/local/tmp/<NAME>-<BRANCH>-moduled.zip");

  return (
    <Page sx={{ p: 0 }}>
      <List subheader={<ListSubheader>Settings</ListSubheader>}>
        <ListItemDialogEditText
          onSuccess={(val) => {
            if (val) setCurl(val);
          }}
          inputLabel="Path"
          type="text"
          title="Change curl bin path"
          initialValue={curl}
        >
          <ListItemText primary="Change curl bin path" secondary={curl} />
        </ListItemDialogEditText>
        <ListItemDialogEditText
          onSuccess={(val) => {
            if (val) setZip(val);
          }}
          inputLabel="Path"
          type="text"
          title="Change zip bin path"
          initialValue={zip}
        >
          <ListItemText primary="Change zip bin path" secondary={zip} />
        </ListItemDialogEditText>
        <ListItemDialogEditText
          onSuccess={(val) => {
            if (val) setUnzip(val);
          }}
          inputLabel="Path"
          type="text"
          title="Change unzip bin path"
          initialValue={unzip}
        >
          <ListItemText primary="Change unzip bin path" secondary={unzip} />
        </ListItemDialogEditText>
        <ListItemDialogEditText
          onSuccess={(val) => {
            if (val) setInstallFolder(val);
          }}
          inputLabel="Path"
          type="text"
          title="Change install path"
          description="Edit with care!"
          initialValue={installFolder}
        >
          <ListItemText primary="Install folder/file" secondary={installFolder} />
        </ListItemDialogEditText>
      </List>

      <List subheader={<ListSubheader>Config</ListSubheader>}>
        <ListItem>
          <ListItemText primary="Swipeable tabs" secondary="Enables swipe between tabs" />
          <Switch checked={props.swipeable} onChange={(e) => props.setSwipeable(e.target.checked)} />
        </ListItem>
      </List>

      <Divider />

      <List subheader={<ListSubheader>Project</ListSubheader>}>
        <ListItemButton onClick={() => window.open("https://github.com/DerGoogler/MMRL/issues")}>
          <ListItemText primary="Report a issue" />
        </ListItemButton>
      </List>
    </Page>
  );
}

function TippsTab() {
  const data = `# Enable Extended JSX Support

Create this file in your module folder

\`\`\`shell
touch $MODID/system/usr/share/mmrl/config/$MODID/index.jsx
\`\`\`

## Simple counter

\`\`\`jsx
import React from 'react'
 
function Counter() {
  const [counter, setCounter] = React.useState(0);
 
  //increase counter
  const increase = () => {
    setCounter(count => count + 1);
  };
 
  //decrease counter
  const decrease = () => {
    setCounter(count => count - 1);
  };
 
  //reset counter 
  const reset = () =>{
    setCounter(0)
  }
 
  return (
    <div className="counter">
      <h1>React Counter</h1>
      <span className="counter__output">{counter}</span>
      <div className="btn__container">
        <button className="control__btn" onClick={increase}>+</button>
        <button className="control__btn" onClick={decrease}>-</button>
        <button className="reset" onClick={reset}>Reset</button>
      </div>
    </div>
  );
}

export default Counter
\`\`\`

`;

  return (
    <Page sx={{ p: 1 }}>
      <Markdown children={data} />
    </Page>
  );
}

function InstallToolsConfig() {
  const [index, setIndex] = React.useState(0)
  const [swipeable, setSwipeable] = useNativeStorage("mmrlini_swipeable", false)

  const handlePreChange = (event) => {
    if (event.index != this.state.index) {
      setIndex(event.index)
    }
  };

  const renderTabs = () => {
    return [
      {
        content: <GeneralTab swipeable={swipeable} setSwipeable={setSwipeable} />,
        tab: <Tabbar.Tab label='General' />
      },
      {
        content: <TippsTab />,
        tab: <Tabbar.Tab label='JSX Support' />
      }
    ];
  }

  return (
    <Page>
      <Tabbar
        swipeable={swipeable}
        position='auto'
        index={index}
        onPreChange={handlePreChange}
        renderTabs={renderTabs}
      />
    </Page>
  );
}

export default InstallToolsConfig;

1.7.5

  • Fixed a bug were the app is trying to grain monet colors on non-Android 12 roms
  • Some terminal improvements

1.7.4

IF YOU FACE A "We're it a brick", PLEASE OPEN SETTINGS AND DELETE YOUR LOCAL REPOS.

  • Initial explore installer (MMRL Install Tools required)
  • Added more filters to explore
  • Migrated to new Repo API, also dropping support for FoxMMM (AMM)
  • The installer should not deadlock anymore
  • Added a playground for configure page in modules

Notes

  • Filters for installed modules will come in future update.
  • The explore installer may be unstable and varies by device or rom
  • Avoid installing big modules such as GCC and code-server, it may crashes the app

1.7.3

Nothing provided

1.7.1

  • ModConf improvements
  • Added a About activity
  • Added a build date
  • "Last update" includes now hour and minutes

1.7.0

Introduce ModConf the tool which can change MMRLs module system, allowing users with the know-how to change specific paths.

  • Introduced ModConf
  • Performance fixes
  • Splitting MMRL app into their architecture's
  • Others

1.6.5

Allowing installation with Magisk and KernelSU CLI and a new way to detect Magisk and KernelSU with the same logic. We've avoided the Shell method to prevent performance issues, creating subprocesses etc.

  • Performance improvements
  • Fixed #33. MMRL can handle now it's disable system
  • Fixed #32. MMRL doesn't detects the root manager via regex anymore instead it uses native call to determine which root solution is installed.
  • Started using new API (https://api.mmrl.dergoogler.com/mmar.json), other will result in a crash
  • KernelSU can now use the experimental local installer
  • Reworked filter dialog
  • Others

Notes

If you get an crash while opening your local repositories, don't worry. Simply open settings from there and clear your local repositories.

1.6.4

  • Added filters in explore tab
  • Fixed DAPI preview crash
  • Other minor fixes

1.6.3

  • Users are now able to copy the content of code boxes
  • Improved the updating date of modules
  • Fixed the module covers
  • Access MMRL in browser hides now the tabs
  • Repos getting validated before going added
  • Added account creation for creator
    • Added profiles
  • UI design changes and improvements
  • Reworked the way you view modules
  • Removed ability to disable module covers
  • Added KernelSU support
  • Modules can now configured

Note

  • The update removes the option to disable the cover from any module
  • There maybe dark mode bugs, it hard to manage multiple themes
  • Comments on modules may be unavailable
  • Module install has been disabled due to the new KernelSU support
    • Only for KernelSU users

1.6.2

  • Fixed Description API overflow
  • Added a check for low quality modules
  • Some D-API improvements

1.6.1

  • Added comments to modules (can also disabled via your module.prop file)
  • Added an Activity to view the module specs
  • Update NoRootActivity
  • Updated translations
  • Modules can now shared
  • Better support for large screens
  • Added Eruda console

Note

With the 1.6.1 update we're removing the option to download modules from the card. You'll have to open the module's readme to download the module.

Why?

There is a reason why module developers providing a readme for their module, you should read it and then download it.

Highlights

New Description API editor

Allows you preview description before you release it to MMRL!

Shows the new "No icon trick"

1.6.0 (Beta)

  • Complete redesign
  • Intoduce custom repos
  • Using an pagination tp handle larger lists
  • Description API has been changed. Some components may be removed or not available.
  • Some settings has been removed
  • Added options to change the accent color
  • Improved dark mode
  • Improved search

1.4.1

  • Fix white statusbar
  • Design improvements
  • Added option to move the navigation bar to the bottom (only Android)
  • Added component to make the view better on large screens
  • Markdown <checkicon> and <dangericon> are now <checkmark> and <dangermark>
  • Some parts has been migrated to react-onsenuix
  • App gets rendered over googlers-tools dom.render(...args)
  • New translations added
  • Added Repo Generator
  • Added support for large screens