# CHANGES

* 1.3.4:
  * Optional new metadata `com.github.shadowsocks.plugin.id.aliases` for plugin ID aliases;

    (see doc for `PluginContract.METADATA_KEY_ID_ALIASES` and main documentation "Plugin ID Aliasing" for more information)
  * Please use `android:path` instead of `android:pathPrefix`, sample code in documentations have been updated to reflect this recommendation.
  * Added missing documentation regarding direct boot support.

    Please add `android:directBootAware="true"` with proper support for your `provider` if possible.
  * You can now use `android:resources` on `meta-data` tags. (main/host app update required, however, you should never use dynamic resources)
  * Fix occasional crash in `AlertDialogFragment`.
  * Translation updates.
  * Dependency updates:
    * `androidx.core:core-ktx:1.2.0`;
    * `com.google.android.material:material:1.1.0`.
* 1.3.3:
  * Fix a build script issue.
* 1.3.2:
  * Fix first key-value pair disappearing with null value. (#2391)
  * Dependency updates:
    * `androidx.core:core-ktx:1.1.0`;
    * `com.google.android.material:material:1.1.0-rc01`;
    * `org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.61`.
* 1.3.1:
  * New theme resource `Theme.Shadowsocks.Immersive` for better Android Q-esque translucent navigation bars.

    This is an opt-in feature.

    Please add `android:theme="@style/Theme.Shadowsocks.Immersive"` to your `<activity>` to enable this theme.
  * New color resources `light_*` and `dark_*` for passing to custom tabs;
  * Dependency updates:
    * `androidx.core:core-ktx:1.1.0-rc03`;
    * `androidx.drawerlayout:drawerlayout:1.1.0-alpha03`;
    * `com.google.android.material:material:1.1.0-alpha09`;
    * `org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.41`.
* 1.3.0:
  * Optional new metadata `com.github.shadowsocks.plugin.executable_path` for even faster initialization;

    (see doc for `PluginContract.METADATA_KEY_EXECUTABLE_PATH` for more information)
  * Breaking API change: `val AlertDialogFragment.ret: Ret?` => `fun AlertDialogFragment.ret(which: Int): Ret?`;

    (nothing needs to be done if you are not using this API)
  * Dependency updates:
    * Now targeting API 29;
    * `androidx.core:core-ktx:1.1.0-rc01`;
    * `com.google.android.material:material:1.1.0-alpha07`;
    * `org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.40`.
* 1.2.0:
  * New helper class `AlertDialogFragment` for creating `AlertDialog` that persists through configuration changes;
  * Dependency update: `com.google.android.material:material:1.1.0-alpha03`.
* 1.1.0:
  * Having control characters in plugin options is no longer allowed.

    If this breaks your plugin, you are doing it wrong.
  * New helper method: `PluginOptions.putWithDefault`.
* 1.0.0:
  * BREAKING CHANGE: Plugins developed using this version and forward require shadowsocks-android 4.6.5 or higher.
  * `PathProvider` now takes `Int` instead of `String` for file modes;
  * Refactor to AndroidX;
  * No longer depends on preference libraries.
* 0.1.1:
  * Rewritten in Kotlin;
  * Fix assert not working;
  * Min API 21;
  * Update support library version to 27.1.1.
* 0.0.4:
  * Enlarge text size of number pickers;
  * Update support library version to 26.0.0.
* 0.0.3:
  * Update support library version to 25.2.0.
* 0.0.2:
  * Add `getOrDefault` to `PluginOptions`;
  * Update support library version to 25.1.1.
* 0.0.1: Initial release.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://fanqiang.gitbook.io/fanqiang/fqnews/plugin/changes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
