Finicky is a macOS application that acts as a user-configurable default browser router. When the OS hands an http/https/finicky URL to Finicky, the Go core captures the originating app (name, bundle ID, path, window title), expands known short URLs via redirect following, and evaluates a user-provided JavaScript or TypeScript configuration inside an embedded goja runtime. The configuration supports wildcard, regex, and function matchers, URL rewrites, per-browser profiles, and custom launch arguments. The resolved target browser is then opened via the macOS `open` command with appropriate profile flags for Chromium and Firefox. The app also includes a WKWebView-based configuration and troubleshooting window built with Svelte, a JSON rules fallback mode for users who don't want to write JS, and a browser extension for alt-click or context-menu opening through Finicky.
The hyperlink library is a pure-Python implementation of immutable URLs, designed for correctness and compliance with RFC 3986 and RFC 3987. It provides two main classes: the low-level `URL` class, which requires explicit handling of encoding and decoding, and the high-level `DecodedURL` class, which automatically handles encoding and decoding for ease of use. The library supports parsing, manipulating, and unparsing URLs, including operations on query strings, path segments, and internationalized domain names (IDNA). It is designed to be a drop-in replacement for Twisted's URL type and is tested across a wide range of Python versions (2.6 to 3.9 and PyPy). The architecture centers around the `_url.py` module, which contains the core parsing logic, the `URL` and `DecodedURL` classes, and helper functions for encoding and decoding. The library also includes a compatibility module (`_socket.py`) that provides a cross-platform implementation of `inet_pton` for older Python versions, particularly on Windows. Testing is facilitated by hypothesis strategies in `hypothesis.py` for generating valid URL components. The library has minimal external dependencies, relying only on the `idna` package for IDNA support and conditionally on `typing` for older Python versions. It is well-maintained with a comprehensive test suite and continuous integration setup, though it continues to support legacy Python versions, which introduces some maintenance overhead.