Revision history for Perl extension HTTP::BrowserDetect.

3.45      2025-10-31 22:41:58Z
    - Fix browser_version returning robot version for Chrome-based Googlebot
      (GH#224) (Copilot)

3.44      2025-10-31 20:51:55Z
    - Add Python-urllib robot detection (GH#223) (Copilot)

3.43      2025-10-31 19:56:37Z
    - Fix webview detection false positives for Chrome 30+ on Android (GH#222)
      (Copilot)

3.42      2025-10-29 03:27:34Z
    - Add Blink engine detection for Chrome 38+ (GH#219) (Copilot)

3.41      2024-10-02 14:13:45Z
    - add amazonbot (GH#212) (mla)

3.40      2023-10-19 16:23:54Z
    - Remove Hash::Merge (GH#205) (Olaf Alders)

3.39      2023-09-08 13:07:26Z
    - Match iOS by `iPod|iPhone|iPad` with word boundary (GH#203) (sakakibear)

3.38      2023-03-03 21:37:52Z
    - Detect Yandex Browser (GH#201) (altblue)
    - Detect some "Meta" apps (GH#199) (altblue)
    - Detect Instagram (GH#200) (altblue)

3.37      2022-09-15 16:39:38Z
    - Add Chromecast detection (GH#195) (Yasuharu Iida)

3.36      2022-08-31 22:36:10Z
    - Detect Firefox for iOS (GH#194) (altblue)

3.35      2021-10-19 15:53:52Z
    - Add Samsung as a detected browser (GH#192) (Olaf Alders)

3.34      2021-08-03 20:09:33Z
    - Fix modern UCBrowser detection (GH#189) (konstantin-pustovalov-qs)
    - Switch from Test::FailWarnings to Test::Warnings (GH#190) (Olaf Alders)

3.33      2021-07-21 14:38:49Z
    - Yahoo iOS App as not a robot (GH#188) (Yasuharu Iida)

3.32      2021-07-20 21:13:13Z
    - add headlesschrome as robot (GH#187) (Ilya Rassadin)
    - Tidy imports (GH#184) (Olaf Alders)

3.31      2020-07-29 14:29:55Z
    - Replace last use of "vars" with "our" (GH#182) (James Raspass)

3.30      2020-07-20 15:45:22Z
    - Fix MS Edge browser_beta capturing (GH#181) (moti)

3.29      2020-07-14 15:36:33Z
    - Fix MS Edge detections (GH#180) (moti)

3.28      2020-07-10 14:59:08Z
    - Fix typo for 'wv' (GH#178) (Jon Jensen)

3.27      2020-04-15 16:18:20Z
    - Improve detection for MS Edge (GH#177) (Zak B. Elep)

3.26      2020-03-16 21:54:21Z
    - Fix Microsoft Edge detection (GH#176) (Mahdi Zarei)

3.25      2019-11-20 14:11:51Z
    - Remove a near duplicate regex (GH#171) (Gregory Oschwald)

3.24      2019-10-31 17:48:35Z
    - Bump JSON::PP to 4.04. Fixes #169 (GH#170) (Olaf Alders)
    - Remove links to AnnoCPAN (GH#168) (Petr)
    - Fixed pod error as reported by CPANTS. (GH#166) (Mohammad S Anwar)
    - Fix bad syntax in SYNOPSIS (reported by John Blumel) (GH#163) (Olaf Alders)

3.23      2019-04-04 19:26:18Z
    - Add BingPreview to bot checker (GH#162) (James Waters)

3.22      2019-03-07 15:11:01Z
    - Add a u2f() method (GH#161) (Patrick Cronin and Olaf Alders)
    - Don't warn on fake UA strings. (GH#160) (Olaf Alders)

3.21      2019-02-05 01:50:40Z
    - Faster edge test (GH#158) (Marco Fontani)

3.20      2018-12-04 18:37:08Z
    - Fix minor version warning (GH#152) (Olaf Alders)
    - Fix a typo in the POD. (GH#149) (gregor herrmann)

3.19      2018-10-11 16:04:00Z
    - Detect ltx71 bot (GH#147) (Olaf Alders)
    - test for "ltx71" robot (GH#113) (Alexandr Ciornii)
    - Stop clobbering useragent tests (GH#146) (Olaf Alders)
    - Removed +x bit from package and test script. (GH#145) (Mohammad S Anwar)
    - Fixed minor typo in the pod. (GH#144) (Mohammad S Anwar)

3.18      2018-10-10 15:01:41Z
    - Define exceptions for ROBOT_FRAGMENTS (fix for #136) (GH#140) (Renee)
    - Add another test for SeznamBot. UA string was provided in #131. (GH#142) (Renee)
    - Fix (GH#119): add researchscan.comsys.rwth-aachen.de as a robot (GH#141) (Renee)

3.17      2018-10-03 02:02:53Z
    - Fix of 'wv' is not language + the new webview property (GH#139) (Perlover)
    - Patch for tests (GH#138) (Perlover)

3.16      2017-12-14 17:38:34Z
    - Fixes detection for bots added in 3.15
    - Adds all_robot_ids() method

3.15      2017-12-13 03:25:42Z
    - Adds browserdetect.org to documentation
    - Adds more bots to robot detection
    - Adds robot_id(), which is currently in beta

3.14 2016-05-25 11:44:10 America/Toronto
    - Slightly refactor the detection of several browsers that
      identify as Mozilla initially (andrewmoise)
    - Start detecting UCBrowser much more accurately (device, version,
      and detect some cases which were misidentified as something else
      previously) (andrewmoise)
    - Detect more possibilities for Kindle Fire in Android model
      ("Kindle Fire in addition to "KF.*") (andrewmoise)
    - Detect more possibilities for Kindle Fire, and try to set tests
      appropriate to whatever the device is configured to be
      (andrewmoise)

3.13 2016-05-09 11:10:44 America/Toronto
    - Start detecting Brew OS (andrewmoise)
    - Fix detecting Netfront as Netscape in some cases (andrewmoise)
    - Start recognizing Teleca as an alias for Obigo (andrewmoise)
    - Start detecting versions of Teleca / Obigo (andrewmoise)
    - Note in documentation that 'wap' doesn't mean WAP only
      (andrewmoise)
    - Start detecting Polaris mobile browser (andrewmoise)

3.12 2016-05-05 08:59:46 America/Toronto
    - Start detecting a few robots we weren't detecting before
      ('verify' or 'analyze' in the name, or +https: beginning
      the URL) (andrewmoise)
    - Stop including the version in robot_string() in some
      cases (andrewmoise)
    - Start returning undef instead of 0 for robot() if there's
      no robot (andrewmoise)
    - Fix _version() documentation for robot, os, and version not
      to make formatting garbage in the output, and to be
      consistent (andrewmoise)

3.11 2016-05-04 20:32:47 America/Toronto
    - Add a test for Kindle Fire (andrewmoise)

3.10 2016-03-29 22:15:35 America/Toronto
    - Big change: Add robot version detection, distinct from browser
      version (first cut) (andrewmoise)
    - Add browsers: Pubsub (Safari RSS reader), ADM (Android Download
      Manager), ImageSearcherPro (iOS app) (andrewmoise)
    - Add robots: Google favicon, malware/shellcode, phplib,
      Verisign IPS agent, Nutch, thumbtack-thunderdome (andrewmoise)
    - Distinguish Bingbot from MSNbot (andrewmoise)
    - Only detect wget based on the beginning of the user-agent
      (andrewmoise)
    - Misc fixes to test support scripts (andrewmoise)
    - Add Kindle Fire (andrewmoise)
    - Detect curl by matching /^curl/ as well as /libcurl/
      (andrewmoise)
    - Remove webcrawler robot test (it triggers on too many distinct
      robots which all include "webcrawler") (andrewmoise)

3.00 2016-02-29 22:57:45 America/Toronto
    - Make "mobile" false when "tablet" is true.  This is a breaking change and
      has triggered a major version bump. (andrewmoise)

2.08 2016-01-29 21:56:29 America/Toronto
    - Brave browser detection added (Nicolas Doye)

2.07 2015-11-18 23:52:07 America/Toronto
    - Strip off anything Google Translate adds to UserAgent before parsing
      (Marco Fontani)

2.06 2015-11-15 10:59:30 America/Toronto
    - Detect more Edge versions (Marco Fontani)

2.05 2015-07-29 12:36:01 America/Toronto
    - Add Microsoft Windowns 10/Windows Phone 10 Edge Browser (Atsushi Kato)

2.04 2015-06-24 23:26:28 America/Toronto
    - Fix test failures on Perl 5.8

2.03 2015-06-19 09:59:45 America/Toronto
    - Add win8_1 method (Daniel Stadie)

2.02 2015-06-17 18:18:17 America/Toronto
    - Default to using an empty string if an undef UA is provided (ben hengst)

2.01 2015-04-24 23:05:13 America/Toronto
    - Handle "CriOS" entries correctly (andrewmoise)
    - Only detect java when no browser is detected, and make UCBrowser a
      detected browser (andrewmoise)
    - Detect "tablet" on Kindle Fire (and Chrome on Android tablets in general)
      (andrewmoise)
    - Distinguish Android tablets in device_string (andrewmoise)
    - Handle CriOS, rubylib, golib, and Dalvik (andrewmoise)
    - Detect "Mobilesafari/" as Mobile Safari (andrewmoise)
    - Detect "Windows 2000" as Win2k (andrewmoise)
    - Only detect NCR Unix on word boundary (andrewmoise)
    - Try tighter detection of robot names based on fragments (andrewmoise)
    - Fix java detection to be more strict (andrewmoise)
    - Fix up Android tablet detection (andrewmoise)
    - Add proper detection for old Windows versions in Opera (andrewmoise)
    - Add apache http client detection (andrewmoise)
    - Fix detection of SCO Unix to trigger fewer false positives (andrewmoise)
    - Correct detection of (most) robots based on "+http://blah" (andrewmoise)

2.00 2015-03-30 21:46:25 America/Toronto
    - Standardize interface:
        browser         ()
        device     X    _string()
        engine          _version(), _major(), _minor(), _beta()
        os
        robot
      (andrewmoise)
    - Add Galeon, Seamonkey, and Epiphany as specifically detected
      browsers (andrewmoise)
    - Some internal changes that make things simpler and faster
      (andrewmoise)
    - Remove the $check argument (e.g. $ua->beta('.45') to check
      whether the beta version is ".45") (andrewmoise)
    - Update and reorganize documentation (andrewmoise)
    - Breaking Change: remove deprecated user_agent($arg) usage.
      This is the reason for the major version bump.

1.78 2015-03-17 22:43:27 America/Toronto
    - Reorganize documentation (andrewmoise)
    - Make java a robot with the other libs and tools (andrewmoise)
    - Add a "lib" test to detect libs and tools (andrewmoise)
    - Add AppleCoreMedia (andrewmoise)
    - Make Blackberry stop setting Safari tests (andrewmoise)
    - Make Android stop setting Linux tests (andrewmoise)
    - Implement much more engine detection and engine version
      detection (andrewmoise)

1.77 2015-03-08 12:06:17 America/Toronto
    - Switch to using strings for version numbers (andrewmoise)
    - Adds BrowseX and Silk detection (andrewmoise)
    - Makes detection of Obigo more consistent (andrewmoise)

1.76 2015-03-03 22:56:25 America/Toronto
    - Encourage use of public_* and engine_* over version(), major() and
      minor().
    - Speed optimizations (andrewmoise)
    - Fix warnings on "Safari/12x.x (andrewmoise)

1.75 2014-08-27 17:55:01 America/Toronto
    - Adds detection for Chrome OS (Douglas Christopher Wilson)

1.74 2014-08-27 10:32:16 America/Toronto
    -  Adds detection for Majestic-12 bot (Douglas Christopher Wilson)

1.73 2014-08-15 23:50:42 America/Toronto
    - Adds minimum Perl version
    - dzil tweaks to make CPANTS happier

1.72 2014-06-18 23:34:27 America/Toronto
    - Remove File::Slurp from tests in favour of Path::Tiny

1.71 2014-05-19 22:38:52 America/Toronto
    - Fixes warnings on "frakenagent" (Douglas Christopher Wilson)

1.70 2014-03-27 12:16:12 America/Toronto
    - Add new UA tests & avoid false positive Sun match on Samsung (Jon Jensen)

1.69 2014-02-05 21:56:27 America/Toronto
    - Adds detection for BlackBerry 10 devices (Douglas Christopher Wilson)

1.68 2014-01-26 23:05:14 America/Toronto
    - Adds Yandex & Ahrefs bots (Perlover)

1.67 2014-01-22 16:18:36 America/Toronto
    - Adds detection for tablet Firefox OS (Douglas Christopher Wilson)

1.66 2013-12-17 11:37:20 America/Toronto
    - Adds detection for IE Compatibility View (Douglas Christopher Wilson)

1.65 2013-12-10 21:08:07 America/Toronto
    - Adds os_version for FireFox in OS X (Hao Wu)

1.64 2013-11-25 10:10:23 America/Toronto
    - Adds detection for Opera 15+ (Douglas Christopher Wilson)

1.63 2013-11-21 21:39:46 America/Toronto
    - Adds detection for Internet Explorer 11 (Douglas Christopher Wilson)
    - Adds detection for Windows 8.1 (Douglas Christopher Wilson)

1.62 2013-10-25 14:40:57 America/Toronto
    - Returns explicit undef more consistently (David Ihnen)

1.61 2013-09-06 15:47:57 America/Toronto
    - Reverts a commit that was causing a test to fail when a warning about
      File::Slurp was detected

1.60 2013-08-29 23:02:13 America/Toronto
    - Fixes bug where "Linux" rather than "Android" was returned as os_string
      for Android devices.

1.59 2013-08-18 00:38:21 America/Toronto
    - Revert 1.57's behaviour of returning a robot name in browser_string.
    - Fix bug where OS X identied as just Mac in os_string.
    - Add linkchecker, YandexImages and archive.org_bot bots.
    - Add undocumented os_version() for OS X, winPhone, Android, iOS, Firefox
      OS.

1.58 2013-08-16 23:37:23 America/Toronto
    - Break up parsing into smaller chunks.
    - Return better names for Googlebot News, Images and Video.
    - Fix bug where Yahoo! Slurp reported as Firefox.

1.57 2013-08-16 01:21:35 America/Toronto
    - Make internals a little less quirky.
    - Stop returning explicit undef for browser_string and os_string.  (Why
      would you ever call these in list context?)
    - Return name of robot for browser_string when browser is, in fact, a bot.
      Previous behaviour was to return undef or something just really wrong.

1.56 2013-08-15 01:02:32 America/Toronto
    - Adds experimental and undocumented robot_name method.

1.55 2013-07-22 23:06:40 America/Toronto
    - Add all current Google robot user agents (Douglas Christopher Wilson)

1.54 2013-07-21
    - Fix generic version parsing not to cross whitespace (Douglas Christopher
      Wilson)
    - Compare Safari build numbers by parts instead of floats (Douglas
      Christopher Wilson)
    - Removes Exporter

1.53 2013-07-19
    - Detect IE on ARM as tablet (Douglas Christopher Wilson)
    - Add BlackBerry PlayBook detection (Douglas Christopher Wilson)
    - Split version parsing into two expressions (Douglas Christopher Wilson)

1.52 2013-05-03
    - Fixes warning when MSIE does not have a minor version
    - Simplifies MSIE version regex logic
    - Removes a test for AskJeeves browser

1.51 2013-04-25
    - Adds Android tablet detection (yeahoffline <frank.gasser@gmail.com>)

1.50 2013-03-01
    - Adds Firefox OS detection (Douglas Christopher Wilson)

1.49 2013-02-27
    - Fixes language/country detectio for Safari (Douglas Christopher Wilson)

1.48 2013-02-26
    - Adds Obigo browser detection (Douglas Christopher Wilson)

1.47 2012-12-10
    - Distinguishes version of Windows Phone (Douglas Christopher Wilson)
    - Enables warnings and traps warnings in tests (Douglas Christopher Wilson)

1.46 2012-12-05
    - Add Windows 8 detection (Douglas Christopher Wilson)

1.45 2012-12-02
    - Removes Data::Dump from deps
    - Supports Windows Phone 8.0 devices (Douglas Christopher Wilson)
    - Fixes mistaken WAP detection for Nokia Windows Phones
    - Fixes warnings on browser version when running under -w (Aran Deltac)

1.44 2012-05-03
    - Fixes "sort (...) interpreted as function" introduced in 1.43, which was
      causing tests to fail

1.43 2012-05-02
    - Sorts keys when iterating for consistency across Perl implementations (Thom Blake)

1.42 2012-03-01
    - Adds bot detection for askjeeves, baidu and googleadsbot (Bill Rhodes)

1.41 2012-01-19
    - Exposes test categorization via our (Olivier Bilodeau)

1.40 2012-01-05
    - Fixes false positive results for RealPlayer browser (John Oatis)

1.39 2011-12-01
    - Adds logical groupings of test cases BrowserDetect.pm (Olivier Bilodeau)
    - Fixes win-based device names (Olivier Bilodeau)

1.38 2011-11-30
    - Ensures that all methods return undef where advertised (Ronald J. Kimball)

1.37 2011-11-29
    - Adds nintendo mobile browsers (Nintendo DSi, Nintendo 3DS) (cho45)
    - Adds kindle, dsi, n3ds to device and device_name methods

1.36 2011-11-07
    - Tweaks detection of Yahoo robot (Atsushi Kato)

1.35 2011-11-02
    - Fixes false positive for bot() with Puffin browser (Atsushi Kato)

1.34 2011-10-24
    - Adds BlackBerry to the list of possible return values of browser_string()
      (John Oatis)

1.33 2011-10-15
    - Adds detections for the Trident engine (Douglas Christopher Wilson)

1.32 2011-10-12
    - Fixes RealPlayer false positives (John Oatis)

1.31 2011-10-12
    - Adds detection and device name for Windows Phone (Douglas Christopher Wilson)

1.30 2011-09-15
    - Tweaks language regexes to reduce false positives

1.29 2011-09-01
    - Adds ios method for ipod, ipad and iphone (os_string returns "iOS")

1.28 2011-08-31
    - Adds ie9 and ie10 methods (Douglas Christopher Wilson)

1.27 2011-08-30
    - Google and MSN mobile bots are now detected as mobile agents (Uwe Voelker)

1.26 2011-07-12
    - Fixes Pod typo

1.25 2011-07-12
    - Fix warnings about iceweasel test being defined twice (Paul Findlay)
    - Adds Opera Tablet to mobile devices (Jacob Rask)

1.24 2011-05-13
    - Removes dependency on Modern::Perl, which was accidentally introduced
      (Yoshiki Kurihara)

1.23 2011-05-02
    - Adds a browser_properties() call that exposes all the browser
      "properties" (Olivier Bilodeau)
    - Fixes issues where a Chrome string would return 1 to a ->nav45up check
      (Olivier Bilodeau)
    - Fixes issue where some WebKit/KHTML browsers returned 1 on ->gecko
      (Olivier Bilodeau)
    - Adds wince method (Windows CE) (Olivier Bilodeau)
    - Now detects Java UserAgent as a robot (Graham Barr)
    - Now detects Jakarta Commons-HttpClient as a Java client (Graham Barr)
    - UserAgent tests moved from YAML to JSON
    - Moves issue tracking to Github
    - Dist now includes META.json rather than META.yaml

1.22 2011-03-10
    - Adds Namoroka to list of Firefox browsers (Viacheslav Tykhanovskyi)

1.21 2010-12-23
    - Test suite now uses YAML rather than YAML::Tiny as YAML::Tiny 1.46
      refuses to load useragents.yaml
    - Alphabetically re-ordered some of the documentation

1.20 2010-11-23
    - Be a little more selective in marking ua as robot when contains search
      or seek (Graham Barr)
    - Add facebook crawler as a robot (Graham Barr) (Enrico Sorcinelli)

1.19 2010-09-24
    - Added support for WebOS (Jesse Thompson) RT #61437

1.18 2010-09-06
    - Added support for Netfront and Safari on Kindle

1.17 2010-08-28
    - Added support for Mobile Safari, Links and Elinks (Jon Jensen)
    - Added more UserAgents to test suite (Jon Jensen)

1.16 2010-08-19
    - Added support for the < 3.0 Safari public versions (Jon Jensen)
    - Added new UserAgents to useragents.yaml (Jon Jensen)

1.15 2010-08-18
    - Re-releasing after some folders unintentionally included in build

1.14 2010-08-18
    - Fixed uninitialized value warnings for Safari (Heiko Weber) RT #60440

1.13 2010-08-10
    - Firefox Mobile (Fennec) is now detected as mobile RT #60186 (Jacob Rask)
    - Double digit Opera version #s now detected correctly RT #50717, #59817

1.12 2010-08-01
    - Added msn and msnmobile (Luke Saunders: f5c87a17b8fa2b09e294)
    - Added googlemobile (Luke Saunders: ec28d49d7218b43788b9)
    - SymbOS and Opera Mobi added to mobile detection RT #59817 (Jacob Rask)
    - Distribution is now managed with Dist::Zilla

1.11 2010-06-03
    - Added ps3 and psp (commit 85a619c9a977c0a8e403) (Alexey Surikov)

1.10 2010-05-05
    - Google toolbar no longer triggers false positive for Googlebot (Jay
      Rifkin)

1.09 2010-04-04
    - Better language detection (commit
      68025ca1a58afa1db9b4eeffe8c246d129825cc0) (Maroš Kollár)

1.08 2010-03-19
    - Added ipad(), device() and device_name() methods

1.07 2010-02-10
    - Added realplayer() and _realplayer_version() methods RT #52355 (Marc
      Sebastian Pelzer)
    - Added engine_string(), engine_version(), engine_major(), engine_minor()
      methods
    - Added Windows 7 detection (commit
      73795d8189faded8b07717e55488f128eaa00752) (Alexey Surikov)
    - Added public_version(), public_major() and public_minor() methods

1.06 2009-11-24
    - Added missing file t/useragents.yaml to MANIFEST

1.05 2009-11-23
    - Fixed RT #31847 (Mike Clarke) SCO/Unix false positives

1.04 2009-11-23
    - Moved test config to a YAML file
    - Added language() method
    - Added iphone() method
    - Added ipod() method
    - Added android() method
    - Fixed RT #12259 (guest) Netscape 6 version detection
    - Fixed RT #52007 (Josh Ritter) Chrome browser false positives
    - Added country() method

1.03 2009-10-24
    - Added mobile() method with support for various handsets (Richard Noble)
    - perltidied source

1.02 2009-10-21
    - Fixed RT #48727 (Robin Smidsrod)
        - Made "KHTML, like Gecko" not match gecko
        - Properly detect Safari version >4.0

1.01 2009-10-20
    - Switched to Module::Build from ExtUtils::MakeMaker
    - Re-organized file structure
    - Re-organized tests and expanded coverage to check major and minor
      methods
    - Manually added patch for Iceweasel from RT #41263 (merlynkline)
    - Added test for RT #41541 and RT #41263 (merlynkline)
    - curl added back to list of supported browsers RT #27878 (RT #Toni
      Cebrián)
    - Added test for RT #8547 (Steve Purkis)
    - Added test for RT #30705 (david.hilton.p)
    - Applied patch and added test for RT #7443

1.00 2009-10-19
    - Applied patch from RT #47271 (Denis F. Latypoff), which adds support for
      Chrome
    - Have moved repository to GitHub

0.99 2007-02-22
    - Modifications by Peter Walsham
    - Added support for Windows Server 2003 and Windows Vista

0.98 2004-06-21
    - Added more browsers including Mozilla, Firefox, Safari
    - added Mac OS X, WinXP, Win2k detection
    - added more test cases

0.962 2001-01-31
    - changed how minor() method to return minor version as a floating point
    - added additional browsers
    - added additional 'up' methods
    - added detection for mobile devices: wap, avantgo, audrey, etc.
    - added netscape 6 detection and gecko
    - added Windows ME detection
    - updated url to javascript browser sniffer page

0.95 2000-08-04
    - added additional browsers

0.94 2000-03-19
    - changed copyright notice
    - changed object's internal structure
    - added Windows 2000 detection
    - eliminated AUTOLOAD subroutine

0.92 2000-02-07
    - fixed version numbering problem, would return '.' instead of undef if
      useragent's version couldn't be found
    - added more detection for AOL

0.9 1999-02-17
    - original version; created by h2xs 1.18
