View Source Changelog
v3-3-1-2023-06-06
v3.3.1 (2023-06-06)
- Enhancements
- Default upstream database version is now
6.1.3
- Default upstream database version is now
v3-3-0-2023-05-19
v3.3.0 (2023-05-19)
- Enhancements
- Default upstream database version is now
6.1.2
- Upstream improvements to handle fake user agents ("Android" + "Apple" combination) have been integrated
- Default upstream database version is now
v3-2-1-2023-03-17
v3.2.1 (2023-03-17)
- Enhancements
- Default upstream database version is now
6.1.1
- Default upstream database version is now
v3-2-0-2023-03-04
v3.2.0 (2023-03-04)
- Enhancements
- Default upstream database version is now
6.1.0
- Upstream improvements to detect tablet devices have been integrated
- Using the mix download task with a default database will save the
:remote_release
configured during download. If the version differs from the current default upon application startup, aLogger.info/1
will be issued unlessstartup_silent = true
is configured
- Default upstream database version is now
v3-1-1-2023-02-20
v3.1.1 (2023-02-20)
- Bug fixes
- Devices containing
(lite) TV
in their agent are now properly identified as TV devices if more detailed information is not available
- Devices containing
v3-1-0-2023-02-12
v3.1.0 (2023-02-12)
- Enhancements
- Allow checking if a user agent is a known desktop device using
UAInspector.desktop?/1
- Allow checking if a user agent is a known mobile device using
UAInspector.mobile?/1
- Default upstream database version is now
6.0.6
- Parser results can be passed directly to
UAInspector.bot?/1
,UAInspector.hbbtv?/1
, andUAInspector.shelltv?/1
- Added support to use client hint headers for improved detection
- Upstream improvements to detect engine versions of "Blink" type browsers have been integrated
- Upstream improvements to detect ShellTV devices have been integrated
- Upstream improvements to detect x64 devices using Windows have been integrated
- Upstream improvements to detect generic TV devices have been integrated
- Allow checking if a user agent is a known desktop device using
v3-0-1-2022-03-08
v3.0.1 (2022-03-08)
- Enhancements
- Default upstream database version is now
5.0.5
- Default upstream database version is now
v3-0-0-2022-03-06
v3.0.0 (2022-03-06)
Enhancements
- Default upstream database version is now
5.0.4
- If a database or short code map contains no (zero) entries during startup/reload a
Logger.info/1
will be sent unlessstartup_silent = true
is configured
- Default upstream database version is now
Backwards incompatible changes
- Minimum required Elixir version is now
~> 1.9
- The (default)
:hackney
download adapter will now only accept responses with "200 OK". Depending on your environment it could be required to configure following redirects usinghttp_opts: [follow_redirect: true]
- Minimum required Elixir version is now
v2-2-0-2020-10-29
v2.2.0 (2020-10-29)
Default download database version has been pinned to "release 3.13.1" after major changes in the upstream sources (matomo-org/device-detector moving towards a new major release).
There will be a new major version of ua_inspector
with a rebuilt database support for matomo-org/device-detector@v4.x
and/or a separate database built upon these sources to simplify future upgrades.
Enhancements
- Upstream improvements to detect engine versions of "Gecko" type browsers have been integrated
Bug fixes
- Brand names are now always returned as strings (as expected), even if parsed as numbers from the YAML database
v2-1-0-2020-08-17
v2.1.0 (2020-08-17)
- Enhancements
- New "desktop notebook" devices are detected
- Upstream improvements to detect mobile apps using Chrome have been integrated
v2-0-0-2020-05-29
v2.0.0 (2020-05-29)
Enhancements
- Detection will now make use of "browser families" to match upstream improvements for Chrome based devices
- If detectable the "browser family" of a client is now available as
:browser_family
in the result struct - If detectable the "operating system family" of a client is now available as
:os_family
in the result struct
Bug fixes
- The mix download task should no longer start unnecessary applications (#19)
Backwards incompatible changes
- Minimum required Elixir version is now
~> 1.7
- Several deprecated functions have been removed completely:
UAInspector.Downloader.prepare_database_path/0
UAInspector.Downloader.read_remote/0
UAInspector.Downloader.README.path_local/0
UAInspector.Downloader.README.path_priv/0
- Startup is now done with a blocking database load by default
- Minimum required Elixir version is now
v1-2-0-2019-08-10
v1.2.0 (2019-08-10)
Enhancements
- Warnings when starting without a database available can be silenced
Bug fixes
- The mix download task now works properly with initializer modules (#18)
v1-1-0-2019-07-13
v1.1.0 (2019-07-13)
Enhancements
- Configuring
startup_sync: true
allows you to ensure a synchronous database load is attempted before allowing to parse user agents - Database entries are now stored in a single named table instead of using an intermediate reference table
- Output of mix task
ua_inspector.download
can be prevented by passing--quiet
upon invocation. This does NOT imply--force
and will still ask for confirmation - Passing
async: false
toUAInspector.reload/1
allows you to block your calling process until the reload has finished - The library used to download the database files can be changed by configuring a module implementing the
UAInspector.Downloader.Adapter
behaviour - The library used to read YAML files can be changed by using the
:yaml_file_reader
configuration
- Configuring
Bug fixes
- Matching the documentation the informational README file created by the downloader will now only be created when using the mix task
Deprecations
- Several functions are now declared internal and will result in a
Logger.info/1
message when called until they will be eventually removed:UAInspector.Downloader.prepare_database_path/0
UAInspector.Downloader.read_remote/0
UAInspector.Downloader.README.path_local/0
UAInspector.Downloader.README.path_priv/0
- Several functions are now declared internal and will result in a
v1-0-0-2019-04-20
v1.0.0 (2019-04-20)
Ownership has been transferred to the
elixir-inspector
organisationEnhancements
- Documentation is now available inline (
@moduledoc
, ...) with theREADME.md
file targeting the repository (development) instead of releases - The default database path has been set to
Application.app_dir(:ua_inspector, "priv")
- Documentation is now available inline (
Backwards incompatible changes
- Internal parser process pooling has been removed. If you require pooling you need to manually wrap
UAInspector.parse/1
(and related functions) - Minimum required Elixir version is now
~> 1.5
- Support for
{:system, var}
configuration has been removed - The deprecated mix tasks
ua_inspector.download.databases
andua_inspector.download.short_code_maps
have been removed
- Internal parser process pooling has been removed. If you require pooling you need to manually wrap
v0-20-0-2019-03-10
v0.20.0 (2019-03-10)
Enhancements
- Initializer modules can be defined with additional arguments by using
{mod, fun, args}
- When using the default database you can now set a
:remote_release
to be used for downloading. The default is"master"
but any valid commit from the upstream source is allowed
- Initializer modules can be defined with additional arguments by using
Deprecations
- Accessing the system environment by configuring
{:system, var}
or{:system, var, default}
will now result in aLogger.info/1
message and will stop working in a future release - The download tasks
ua_inspector.download.databases
andua_inspector.download.short_code_maps
are now deprecated and will be removed in a future release
- Accessing the system environment by configuring
v0-19-2-2019-02-12
v0.19.2 (2019-02-12)
- Bug fixes
- Short code maps are now stored in the correct file encoding (
UTF-8
) to allow parsing short code maps with characters like umlauts (#15)
- Short code maps are now stored in the correct file encoding (
v0-19-1-2019-01-05
v0.19.1 (2019-01-05)
- Enhancements
- The (soft) deprecated download tasks
ua_inspector.download.databases
andua_inspector.download.short_code_maps
are no longer displayed in the output ofmix help
- The (soft) deprecated download tasks
v0-19-0-2019-01-03
v0.19.0 (2019-01-03)
Enhancements
- All database files (parser databases and short code maps) can be downloaded using a single mix task
ua_inspector.download
- Downloading the databases ensures hackney is started to allow calling
mix run --no-start -e "UAInspector.Downloader.download()"
- Finding the data table is now done via a named lookup table instead of calling the database state server
- If you need to check if all databases are loaded (i.e. "no longer empty") you can use
UAInspector.ready?/0
- OS Families are no longer hardcoded inside
Util.OS
but read from the original source and stored in a short code map - OS Families used for desktop detection are no longer hardcoded inside
Util.OS
but read from the original source and stored in a short code map - Reloading will now issue a warning if no database path is configured while resuming operation with an empty database
- All database files (parser databases and short code maps) can be downloaded using a single mix task
Soft deprecations (no warnings)
- The individual download tasks for databases and short code maps have been removed from the documentation. They are still completely functional but will eventually be removed after a proper deprecation phase
v0-18-0-2018-08-15
v0.18.0 (2018-08-15)
Enhancements
- Configuration can be done on supervisor (re-) start or when running the mix download tasks by setting a
{mod, fun}
tuple for the config key:init
. This method will be called without arguments. - Old data tables are deleted with a configurable delay after reloading to avoid race conditions (and the resulting empty lookup responses)
- Configuration can be done on supervisor (re-) start or when running the mix download tasks by setting a
Bug fixes
- ETS tables of short code maps are now properly cleaned after reload
Soft deprecations (no warnings)
- Support for
{:system, "ENV_VARIABLE"}
configuration has been removed from the documentation. It will eventually be removed completely after a proper deprecation phase
- Support for
v0-17-0-2018-02-18
v0.17.0 (2018-02-18)
- Enhancements
- References to
piwik
(like database URLs) have been updated to reflect the rename tomatomo
- References to
v0-16-1-2018-01-17
v0.16.1 (2018-01-17)
- Bug fixes
- Broken module naming for the mix download tasks has been fixed (#12)
v0-16-0-2018-01-05
v0.16.0 (2018-01-05)
- Backwards incompatible changes
- Minimum required Elixir version is now
~> 1.3
- Minimum required Elixir version is now
v0-15-1-2018-01-17
v0.15.1 (2018-01-17)
- Bug fixes
- Broken module naming for the mix download tasks has been fixed (#12)
v0-15-0-2017-12-30
v0.15.0 (2017-12-30)
Enhancements
- All databases can be reloaded (asynchronously) using
UAInspector.reload/0
- Supervision can now be done without starting the application (#8)
- The database downloader has been promoted to a directly usable module
- All databases can be reloaded (asynchronously) using
Bug fixes
- If a device has no type configured in the database previously
nil
was returned instead of the expected:unknown
- If a device has no type configured in the database previously
v0-14-0-2017-05-31
v0.14.0 (2017-05-31)
Enhancements
- Empty user agents (
""
ornil
) now return a result without performing an actual lookup. By definition an empty user agent is never detected as a bot - System environment configuration can set an optional default value to be used if the environment variable is unset
- Empty user agents (
Bug fixes
- Properly handles
nil
values passed to the lookup functions (#7)
- Properly handles
v0-13-0-2016-09-08
v0.13.0 (2016-09-08)
- Enhancements
- Engine versions are extracted
- Remote url of database files is now configurable. Due to naming changes a complete re-download is necessary
- Remote url of short code map files is now configurable
v0-12-0-2016-08-18
v0.12.0 (2016-08-18)
Enhancements
- Database downloads are done using hackney in order to prepare an upcoming auto-update feature
- If the initial load of a database (during process initialisation) fails a message will be sent through
Logger.info/1
- If the initial load of a short code map (during process initialisation) fails a message will be sent through
Logger.info/1
Backwards incompatible changes
- Completely unknown devices now yield
:unknown
instead of a struct with all values set to:unknown
- Downloads are now done using
:hackney
instead ofmix
. This may force you to manually reconfigure the client - Minimum required Elixir version is now
~> 1.2
- Minimum required Erlang version is now
~> 18.0
- Completely unknown devices now yield
v0-11-1-2016-04-02
v0.11.1 (2016-04-02)
- Bug fixes
- Properly handles short code map files after upstream changes
v0-11-0-2016-03-28
v0.11.0 (2016-03-28)
- Enhancements
- Databases are reloaded if a storage process gets restarted
- HbbTV version can be fetched using
hbbtv?/1
- Path can be configured by accessing the system environment (#5)
- Short code mappings are reloaded if a storage process gets restarted
v0-10-0-2015-11-10
v0.10.0 (2015-11-10)
- Bug fixes
- Fixes problems with mix tasks under case insensitive file systems
v0-9-0-2015-10-17
v0.9.0 (2015-10-17)
- Enhancements
- Convenience method to check if user agent belongs to a bot (
bot?/1
) - Convenience method to parse without checking for bots (
parse_client/1
) - Operating system platform included in result
- Convenience method to check if user agent belongs to a bot (
v0-8-0-2015-07-09
v0.8.0 (2015-07-09)
Enhancements
- Bots are included in the detection
- Short code mappings are fetched and parsed on demand
Backwards incompatible changes
- Short code maps are no longer included in the repository
- Renamed mix task
databases.download
todownload.databases
v0-7-0-2015-05-31
v0.7.0 (2015-05-31)
Enhancements
- Dependencies not used in production builds are marked as optional
- Displays expanded download path for
mix ua_inspector.databases.download
- Verification script now automatically downloads database files
- Worker pool options are no longer defined at compile time
Backwards incompatible changes
- Pool configuration is now expected to be a
Keyword.t
- Pool configuration is now expected to be a
v0-6-0-2015-04-06
v0.6.0 (2015-04-06)
- Initial Release