Add /render interface to directly render a template as output content.
Add find as a template function.
Add filtering out token as a template variable.
Fix exporting broken configuration file in some occasions.
Fix directly treating not-exist ruleset file as URL.
Fix group fallback not working on Quantumult X configurations.
Fix typo in example profile.
Add specifying default external configuration file to use when none is provided.
Optimize codes.
Fix support for parsing some Surge configurations.
Fix adding extra blank line to section end when exporting some configurations.
Fix adding real internal link as MANAGED-CONFIG URL when using profile.
Fix not filtering load-balance group in Surfboard configurations. (Issue [#128](https://github.com/tindy2013/subconverter/issues/128)).
Fix rule type filter not working properly.
Add support for using template in external configurations.
Add relay group support for Clash configurations.
Optimize codes.
Fix error when parsing some Surge configurations.
Fix not filtering USER-AGENT and URL-REGEX rules for Surfboard configurations. (Issue [#127](https://github.com/tindy2013/subconverter/issues/127)).
Add support for specifying tolerance and timeout for some proxy groups. (Issue [#121](https://github.com/tindy2013/subconverter/issues/121)).
Add keeping comments and blank lines for more sections in Quantumult X configurations.
Add rule type match to filter rules.
Optimize codes.
Fix trying to fetch a ruleset when adding it as a RULE-SET rule to configuration files.
Add URL Decode to username and password field in Telegram-link-style HTTP/Socks 5 links.
Add more function callbacks to template renderer.
Add basic Jinja2Cpp template library support.
INIReader: Add keeping comments and blank lines in direct-save sections.
Fix inconsistent argument name in HTTP and Socks 5 single link.
Fix support for some non-standard ShadowsocksD subscription.
Fix include/exclude option in URL argument not overriding former settings.
Fix template system interpreting some comments in YAML files as line statement.
inja: re-implement variable accessing to catch exceptions on using not-exist variable and return an empty value.
Optimize codes.
Fix broken /sub2clashr and /surge2clash interface.
Add template support for base configurations.
Add support for exporting HTTP/Socks 5 nodes to Quantumult configurations.
Add support for VMess HTTP nodes in Clash configurations.
Optimize codes.
Fix TLS settings missing when parsing Clash configurations.
Add support for adding route settings to Shadowsocks Android subscriptions.
Add serve_cache_on_fetch_fail option to determine whether to serve cached content when failed to download a file.
Optimize codes.
Fix compiler warnings.
Add group type fallback when only one node is found for an auto group in Quantumult(X) configuration.
Tweak default Emoji rules.
Optimize codes.
Fix failed to load external configuration when enable_rule_generator or overwrite_original_rules is missing in YAML format configuration.
Optimize codes.
Fix not processing quotes in ws-headers in Surge VMess configurations.
Fix when default_url is set and insert_url is not set in YAML configuration and access /sub without url argument, the nodes in default_url will be added twice.
Add /version interface to compatible with some front-end.
Fix when importing rulesets, some invisible characters are also added to the result.
Fix proxy group/ruleset settings not working properly with YAML format external configurations.
Fix stream/time node matcher not working with YAML configuration.
Add PCRE2 JIT optimization for filtering nodes.
Add space after adding proxy type to node remarks.
Add displaying Subscription User Info when generating artifacts in generator mode.
Add support for another type of time node.
Optimize codes.
Fix compatibility with some broken Shadowrocket links.
Add direct option to generator to download subscriptions or use local files directly.
Add return code to report generator error.
Add output code page restore.
Fix filename option in web interface.
Fix when failed to download any files, the program still treat it as succeeded.
Add --artifact startup option to specify which artifact(s) should be generated.
Tweak Emoji matching rules.
Update local rulesets and configurations.
Fix logical error in generating Quantumult X configurations.
Fix overwrite_original_rules option not working in pref configuration.
Add range support for group ID match condition.
Fix some Shadowsocks nodes are missing in Loon configurations.
Fix Quantumult X nodes not handling duplicated remarks.
Force expand all local rules instead of generating /getruleset urls for generator mode.
Fix a bug that Clash may interpret pure number password as float64 type (Issue [#58](https://github.com/tindy2013/subconverter/issues/58)).
Fix support for parsing some non-standard Clash configurations.
Add generator-only mode to save configurations to files or upload to Gists.
Optimize codes.
Fix typo.
Force fileGet to use binary mode to prevent some problem.
Make cache system serve the existing cache when download failed.
Replace some if-statements with switch-statements.
Clean up codes.
Fix potential crash related to the new file reader.
Fix loading local subscriptions requires token when API mode is disabled.
Add support for parsing Clash Proxy Provider.
Update READMEs.
Fix potential segmentation fault error due to some incorrect copy assignments.
Fix potential crash due to incorrect usage of cURL library.
Fix potential memory leak causing memory usage to be too high.
Add /qx-rewrite and /qx-script interface to add device ID to scripts for some version of Quantumult X.
Add policy-path parsing support for /surge2clash interface.
Add interval/strict options support for managed config.
Add filename option for setting file name when downloading exported subscriptions.
Optimize codes.