When users start Alertmanager with `--cluster.listen-address=`, the cluster will not be initialized, hence api.peer will be `nil`. So far this would result in a nil pointer dereference by the API v2 accessing the api.peer field. With this patch, api v2 skips populating the peers array, sets the name to an empty string and the status to "disabled" in case `api.peer` is nil. Signed-off-by: Max Leonard Inden <IndenML@gmail.com>
22 KiB
Next release
- [BUGFIX] Do not populate cluster info if clustering is disabled in API v2 (#1726)
0.16.0 / 2019-01-17
This release introduces a new API v2, fully generated via the OpenAPI project [1]. At the same time with this release the previous API v1 is being deprecated. API v1 will be removed with Alertmanager release v0.18.0.
- [CHANGE] Deprecate API v1
- [CHANGE] Remove
api/v1/alerts/groups
GET endpoint (#1508 & #1525) - [CHANGE] Revert Alertmanager working directory changes in Docker image back to
/alertmanager
(#1435) - [CHANGE] Using the recommended label syntax for maintainer in Dockerfile (#1533)
- [CHANGE] Change
alertmanager_notifications_total
to count attempted notifications, not only successful ones (#1578) - [CHANGE] Run as nobody inside container (#1586)
- [CHANGE] Support
w
for weeks when creating silences, removey
for year (#1620) - [FEATURE] Introduce OpenAPI generated API v2 (#1352)
- [FEATURE] Lookup parts in strings using regexp.MatchString in templates (#1452)
- [FEATURE] Support image/thumb url in attachment in Slack notifier (#1506)
- [FEATURE] Support custom TLS certificates for the email notifier (#1528)
- [FEATURE] Add support for images and links in the PagerDuty notification config (#1559)
- [FEATURE] Add support for grouping by all labels (#1588)
- [FEATURE] [amtool] Add timeout support to amtool commands (#1471)
- [FEATURE] [amtool] Added
config routes
tools for vizualization and testing routes (#1511) - [FEATURE] [amtool] Support adding alerts using amtool (#1461)
- [ENHANCEMENT] Add support for --log.format (#1658)
- [ENHANCEMENT] Add CORS support to API v2 (#1667)
- [ENHANCEMENT] Support HTML, URL title and custom sounds for Pushover (#1634)
- [ENHANCEMENT] Update Alert compact view (#1698)
- [ENHANCEMENT] Support adding custom fields to VictorOps notifications (#1420)
- [ENHANCEMENT] Add help link in UI to Alertmanager documentation (#1522)
- [ENHANCEMENT] Enforce HTTP or HTTPS URLs in Alertmanager config (#1567)
- [ENHANCEMENT] Make OpsGenie API Key a templated string (#1594)
- [ENHANCEMENT] Add name, value and SlackConfirmationField to action in Slack notifier (#1557)
- [ENHANCEMENT] Show more alert information on silence form and silence view pages (#1601)
- [ENHANCEMENT] Add cluster peers DNS refresh job (#1428)
- [BUGFIX] Fix unmarshalling of secret URLs in config (#1663)
- [BUGFIX] Do not write groupbyall and groupby when marshaling config (#1665)
- [BUGFIX] Make a copy of firing alerts with EndsAt=0 when flushing (#1686)
- [BUGFIX] Respect regex matchers when recreating silences in UI (#1697)
- [BUGFIX] Change DefaultGlobalConfig to a function in Alertmanager configuration (#1656)
- [BUGFIX] Fix email template typo in alert-warning style (#1421)
- [BUGFIX] Fix silence redirect on silence creation UI page (#1548)
- [BUGFIX] Add missing
callback_id
parameter in Slack notifier (#1592) - [BUGFIX] Throw error if no auth mechanism matches in email notifier (#1608)
- [BUGFIX] Use quoted-printable transfer encoding for the email notifier (#1609)
- [BUGFIX] Do not merge expired gossip messages (#1631)
- [BUGFIX] Fix "PLAIN" auth during notification via smtp-over-tls on port 465 (#1591)
- [BUGFIX] [amtool] Support for assuming first label is alertname in silence add and query (#1693)
- [BUGFIX] [amtool] Support assuming first label is alertname in alert query with matchers (#1575)
- [BUGFIX] [amtool] Fix config path check in amtool (#1538)
- [BUGFIX] [amtool] Fix rfc3339 example texts (#1526)
- [BUGFIX] [amtool] Fixed issue with loading path of a default configs (#1529)
[1] https://github.com/prometheus/alertmanager#api
0.15.3 / 2018-11-09
- [BUGFIX] Fix alert merging supporting both empty and set EndsAt property for firing alerts send by Prometheus (#1611)
0.15.2 / 2018-08-14
- [ENHANCEMENT] [amtool] Add support for stdin to check-config (#1431)
- [ENHANCEMENT] Log PagerDuty v1 response on BadRequest (#1481)
- [BUGFIX] Correctly encode query strings in notifiers (#1516)
- [BUGFIX] Add cache control headers to the API responses to avoid IE caching (#1500)
- [BUGFIX] Avoid listener blocking on unsubscribe (#1482)
- [BUGFIX] Fix a bunch of unhandled errors (#1501)
- [BUGFIX] Update PagerDuty API V2 to send full details on resolve (#1483)
- [BUGFIX] Validate URLs at config load time (#1468)
- [BUGFIX] Fix Settle() interval (#1478)
- [BUGFIX] Fix email to be green if only none firing (#1475)
- [BUGFIX] Handle errors in notify (#1474)
- [BUGFIX] Fix templating of hipchat room id (#1463)
0.15.1 / 2018-07-10
- [BUGFIX] Fix email template typo in alert-warning style (#1421)
- [BUGFIX] Fix regression in Pager Duty config (#1455)
- [BUGFIX] Catch templating errors in Wechat Notify (#1436)
- [BUGFIX] Fail when no private address can be found for cluster (#1437)
- [BUGFIX] Make sure we don't miss the first pushPull when joining cluster (#1456)
- [BUGFIX] Fix concurrent read and write group error in dispatch (#1447)
0.15.0 / 2018-06-22
- [CHANGE] [amtool] Update silence add and update flags (#1298)
- [CHANGE] Replace deprecated InstrumentHandler() (#1302)
- [CHANGE] Validate Slack field config and only allow the necessary input (#1334)
- [CHANGE] Remove legacy alert ingest endpoint (#1362)
- [CHANGE] Move to memberlist as underlying gossip protocol including cluster flag changes from --mesh.xxx to --cluster.xxx (#1232)
- [CHANGE] Move Alertmanager working directory in Docker image to /etc/alertmanager (#1313)
- [BUGFIX/CHANGE] The default group by is no labels. (#1287)
- [FEATURE] [amtool] Filter alerts by receiver (#1402)
- [FEATURE] Wait for mesh to settle before sending alerts (#1209)
- [FEATURE] [amtool] Support basic auth in alertmanager url (#1279)
- [FEATURE] Make HTTP clients used for integrations configurable
- [ENHANCEMENT] Support receiving alerts with end time and zero start time
- [ENHANCEMENT] Sort dispatched alerts by job+instance (#1234)
- [ENHANCEMENT] Support alert query filters
active
andunprocessed
(#1366) - [ENHANCEMENT] [amtool] Expose alert query flags --active and --unprocessed (#1370)
- [ENHANCEMENT] Add Slack actions to notifications (#1355)
- [BUGFIX] Register nflog snapShotSize metric
- [BUGFIX] Sort alerts in correct order before flushing to notifiers (#1349)
- [BUGFIX] Don't reset initial wait timer if flush is in-progress (#1301)
- [BUGFIX] Fix resolved alerts still inhibiting (#1331)
- [BUGFIX] Template wechat config fields (#1356)
- [BUGFIX] Notify resolved alerts properly (#1408)
- [BUGFIX] Fix parsing for label values with commas (#1395)
- [BUGFIX] Hide sensitive Wechat configuration (#1253)
- [BUGFIX] Prepopulate matchers when recreating a silence (#1270)
- [BUGFIX] Fix wechat panic (#1293)
- [BUGFIX] Allow empty matchers in silences/filtering (#1289)
- [BUGFIX] Properly configure HTTP client for Wechat integration
0.14.0 / 2018-02-12
- [ENHANCEMENT] [amtool] Silence update support dwy suffixes to expire flag (#1197)
- [ENHANCEMENT] Allow templating PagerDuty receiver severity (#1214)
- [ENHANCEMENT] Include receiver name in failed notifications log messages (#1207)
- [ENHANCEMENT] Allow global opsgenie api key (#1208)
- [ENHANCEMENT] Add mesh metrics (#1225)
- [ENHANCEMENT] Add Class field to PagerDuty; add templating to PagerDuty-CEF fields (#1231)
- [BUGFIX] Don't notify of resolved alerts if none were reported firing (#1198)
- [BUGFIX] Notify only when new firing alerts are added (#1205)
- [BUGFIX] [mesh] Fix pending connections never set to established (#1204)
- [BUGFIX] Allow OpsGenie notifier to have empty team fields (#1224)
- [BUGFIX] Don't count alerts with EndTime in the future as resolved (#1233)
- [BUGFIX] Speed up re-rendering of Silence UI (#1235)
- [BUGFIX] Forbid 0 value for group_interval and repeat_interval (#1230)
- [BUGFIX] Fix WeChat agentid issue (#1229)
0.13.0 / 2018-01-12
- [CHANGE] Switch cmd/alertmanager to kingpin (#974)
- [CHANGE] [amtool] Switch amtool to kingpin (#976)
- [CHANGE] [amtool] silence query: --expired flag only shows expired silences (#1190)
- [CHANGE] Return config reload result from reload endpoint (#1180)
- [FEATURE] UI silence form is populated from location bar (#1148)
- [FEATURE] Add /-/healthy endpoint (#1159)
- [ENHANCEMENT] Instrument and log snapshot sizes on maintenance (#1155)
- [ENHANCEMENT] Make alertGC interval configurable (#1151)
- [ENHANCEMENT] Display mesh connections in the Status page (#1164)
- [BUGFIX] Template service keys for pagerduty notifier (#1182)
- [BUGFIX] Fix expire buttons on the silences page (#1171)
- [BUGFIX] Fix JavaScript error in MSIE due to endswith() usage (#1172)
- [BUGFIX] Correctly format UI error output (#1167)
0.12.0 / 2017-12-15
- [FEATURE] package amtool in docker container (#1127)
- [FEATURE] Add notify support for Chinese User wechat (#1059)
- [FEATURE] [amtool] Add a new
silence import
command (#1082) - [FEATURE] [amtool] Add new command to update silence (#1123)
- [FEATURE] [amtool] Add ability to query for silences that will expire soon (#1120)
- [ENHANCEMENT] Template source field in PagerDuty alert payload (#1117)
- [ENHANCEMENT] Add footer field for slack messages (#1141)
- [ENHANCEMENT] Add Slack additional "fields" to notifications (#1135)
- [ENHANCEMENT] Adding check for webhook's URL formatting (#1129)
- [ENHANCEMENT] Let the browser remember the creator of a silence (#1112)
- [BUGFIX] Fix race in stopping inhibitor (#1118)
- [BUGFIX] Fix browser UI when entering negative duration (#1132)
0.11.0 / 2017-11-16
- [CHANGE] Make silence negative filtering consistent with alert filtering (#1095)
- [CHANGE] Change HipChat and OpsGenie api config names (#1087)
- [ENHANCEMENT] amtool: Allow 'd', 'w', 'y' time suffixes when creating silence (#1091)
- [ENHANCEMENT] Support OpsGenie Priority field (#1094)
- [BUGFIX] Fix UI when no silences are present (#1090)
- [BUGFIX] Fix OpsGenie Teams field (#1101)
- [BUGFIX] Fix OpsGenie Tags field (#1108)
0.10.0 / 2017-11-09
- [CHANGE] Prevent inhibiting alerts in the source of the inhibition (#1017)
- [ENHANCEMENT] Improve amtool check-config use and description text (#1016)
- [ENHANCEMENT] Add metrics about current silences and alerts (#998)
- [ENHANCEMENT] Sorted silences based on current status (#1015)
- [ENHANCEMENT] Add metric of alertmanager position in mesh (#1024)
- [ENHANCEMENT] Initialise notifications_total and notifications_failed_total (#1011)
- [ENHANCEMENT] Allow selectable matchers on silence view (#1030)
- [ENHANCEMENT] Allow template in victorops message_type field (#1038)
- [ENHANCEMENT] Optionally hide inhibited alerts in API response (#1039)
- [ENHANCEMENT] Toggle silenced and inhibited alerts in UI (#1049)
- [ENHANCEMENT] Fix pushover limits (title, message, url) (#1055)
- [ENHANCEMENT] Add limit to OpsGenie message (#1045)
- [ENHANCEMENT] Upgrade OpsGenie notifier to v2 API. (#1061)
- [ENHANCEMENT] Allow template in victorops routing_key field (#1083)
- [ENHANCEMENT] Add support for PagerDuty API v2 (#1054)
- [BUGFIX] Fix inhibit race (#1032)
- [BUGFIX] Fix segfault on amtool (#1031)
- [BUGFIX] Remove .WasInhibited and .WasSilenced fields of Alert type (#1026)
- [BUGFIX] nflog: Fix Log() crash when gossip is nil (#1064)
- [BUGFIX] Fix notifications for flapping alerts (#1071)
- [BUGFIX] Fix shutdown crash with nil mesh router (#1077)
- [BUGFIX] Fix negative matchers filtering (#1077)
0.9.1 / 2017-09-29
- [BUGFIX] Fix -web.external-url regression in ui (#1008)
- [BUGFIX] Fix multipart email implementation (#1009)
0.9.0 / 2017-09-28
- [ENHANCEMENT] Add current time to webhook message (#909)
- [ENHANCEMENT] Add link_names to slack notifier (#912)
- [ENHANCEMENT] Make ui labels selectable/highlightable (#932)
- [ENHANCEMENT] Make links in ui annotations selectable (#946)
- [ENHANCEMENT] Expose the alert's "fingerprint" (unique identifier) through API (#786)
- [ENHANCEMENT] Add README information for amtool (#939)
- [ENHANCEMENT] Use user-set logging option consistently throughout alertmanager (#968)
- [ENHANCEMENT] Sort alerts returned from API by their fingerprint (#969)
- [ENHANCEMENT] Add edit/delete silence buttons on silence page view (#970)
- [ENHANCEMENT] Add check-config subcommand to amtool (#978)
- [ENHANCEMENT] Add email notification text content support (#934)
- [ENHANCEMENT] Support passing binary name to make build target (#990)
- [ENHANCEMENT] Show total no. of silenced alerts in preview (#994)
- [ENHANCEMENT] Added confirmation dialog when expiring silences (#993)
- [BUGFIX] Fix crash when no mesh router is configured (#919)
- [BUGFIX] Render status page without mesh (#920)
- [BUGFIX] Exit amtool subcommands with non-zero error code (#938)
- [BUGFIX] Change mktemp invocation in makefile to work for macOS (#971)
- [BUGFIX] Add a mutex to silences.go:gossipData (#984)
- [BUGFIX] silences: avoid deadlock (#995)
- [BUGFIX] Ignore expired silences OnGossip (#999)
0.8.0 / 2017-07-20
- [FEATURE] Add ability to filter alerts by receiver in the UI (#890)
- [FEATURE] Add User-Agent for webhook requests (#893)
- [ENHANCEMENT] Add possibility to have a global victorops api_key (#897)
- [ENHANCEMENT] Add EntityDisplayName and improve StateMessage for Victorops (#769)
- [ENHANCEMENT] Omit empty config fields and show regex upon re-marshalling to elide secrets (#864)
- [ENHANCEMENT] Parse API error messages in UI (#866)
- [ENHANCEMENT] Enable sending mail via smtp port 465 (#704)
- [BUGFIX] Prevent duplicate notifications by sorting matchers (#882)
- [BUGFIX] Remove timeout for UI requests (#890)
- [BUGFIX] Update config file location of CLI in flag usage text (#895)
0.7.1 / 2017-06-09
- [BUGFIX] Fix filtering by label on Alert list and Silence list page
0.7.0 / 2017-06-08
- [CHANGE] Rewrite UI from scratch improving UX
- [CHANGE] Rename
config
toconfigYAML
onapi/v1/status
- [FEATURE] Add ability to update a silence on
api/v1/silences
POST endpoint (See #765) - [FEATURE] Return alert status on
api/v1/alerts
GET endpoint - [FEATURE] Serve silence state on
api/v1/silences
GET endpoint - [FEATURE] Add ability to specify a route prefix
- [FEATURE] Add option to disable AM listening on mesh port
- [ENHANCEMENT] Add ability to specify
filter
string andsilenced
flag onapi/v1/alerts
GET endpoint - [ENHANCEMENT] Update
cache-control
to prevent caching for web assets in general. - [ENHANCEMENT] Serve web assets by alertmanager instead of external CDN (See #846)
- [ENHANCEMENT] Elide secrets in alertmanager config (See #840)
- [ENHANCEMENT] AMTool: Move config file to a more consistent location (See #843)
- [BUGFIX] Enable builds for Solaris/Illumos
- [BUGFIX] Load web assets based on url path (See #323)
0.6.2 / 2017-05-09
- [BUGFIX] Correctly link to silences from alert again
- [BUGFIX] Correctly hide silenced/show active alerts in UI again
- [BUGFIX] Fix regression of alerts not being displayed until first processing
- [BUGFIX] Fix internal usage of wrong lock for silence markers
- [BUGFIX] Adapt amtool's API parsing to recent API changes
- [BUGFIX] Correctly marshal regexes in config JSON response
- [CHANGE] Anchor silence regex matchers to be consistent with Prometheus
- [ENHANCEMENT] Error if root route is using
continue
keyword
0.6.1 / 2017-04-28
- [BUGFIX] Fix incorrectly serialized hash for notification providers.
- [ENHANCEMENT] Add processing status field to alerts.
- [FEATURE] Add config hash metric.
0.6.0 / 2017-04-25
- [BUGFIX] Add
groupKey
toalerts/groups
endpoint https://github.com/prometheus/alertmanager/pull/576 - [BUGFIX] Only notify on firing alerts https://github.com/prometheus/alertmanager/pull/595
- [BUGFIX] Correctly marshal regex's in config for routing tree https://github.com/prometheus/alertmanager/pull/602
- [BUGFIX] Prevent panic when failing to load config https://github.com/prometheus/alertmanager/pull/607
- [BUGFIX] Prevent panic when alertmanager is started with an empty
-mesh.peer
https://github.com/prometheus/alertmanager/pull/726 - [CHANGE] Rename VictorOps config variables https://github.com/prometheus/alertmanager/pull/667
- [CHANGE] No longer generate releases for openbsd/arm https://github.com/prometheus/alertmanager/pull/732
- [ENHANCEMENT] Add
DELETE
as accepted CORS method0ecc59076c
- [ENHANCEMENT] Switch to using
gogoproto
for protobuf https://github.com/prometheus/alertmanager/pull/715 - [ENHANCEMENT] Include notifier type in logs and errors https://github.com/prometheus/alertmanager/pull/702
- [FEATURE] Expose mesh peers on status page https://github.com/prometheus/alertmanager/pull/644
- [FEATURE] Add
reReplaceAll
template function https://github.com/prometheus/alertmanager/pull/639 - [FEATURE] Allow label-based filtering alerts/silences through API https://github.com/prometheus/alertmanager/pull/633
- [FEATURE] Add commandline tool for interacting with alertmanager https://github.com/prometheus/alertmanager/pull/636
0.5.1 / 2016-11-24
- [BUGFIX] Fix crash caused by race condition in silencing
- [ENHANCEMENT] Improve logging of API errors
- [ENHANCEMENT] Add metrics for the notification log
0.5.0 / 2016-11-01
This release requires a storage wipe. It contains fundamental internal changes that came with implementing the high availability mode.
- [FEATURE] Alertmanager clustering for high availability
- [FEATURE] Garbage collection of old silences and notification logs
- [CHANGE] New storage format
- [CHANGE] Stricter silence semantics for consistent historical view
0.4.2 / 2016-09-02
- [BUGFIX] Fix broken regex checkbox in silence form
- [BUGFIX] Simplify inconsistent silence update behavior
0.4.1 / 2016-08-31
- [BUGFIX] Wait for silence query to finish instead of showing error
- [BUGFIX] Fix sorting of silences
- [BUGFIX] Provide visual feedback after creating a silence
- [BUGFIX] Fix styling of silences
- [ENHANCEMENT] Provide cleaner API silence interface
0.4.0 / 2016-08-23
- [FEATURE] Silences are now paginated in the web ui
- [CHANGE] Failure to start on unparsed flags
0.3.0 / 2016-07-07
- [CHANGE] Alerts are purely in memory and no longer persistent across restarts
- [FEATURE] Add SMTP LOGIN authentication mechanism
0.2.1 / 2016-06-23
- [ENHANCEMENT] Allow inheritance of route receiver
- [ENHANCEMENT] Add silence cache to silence provider
- [BUGFIX] Fix HipChat room number in integration URL
0.2.0 / 2016-06-17
This release uses a new storage backend based on BoltDB. You have to backup and wipe your former storage path to run it.
- [CHANGE] Use BoltDB as data store.
- [CHANGE] Move SMTP authentification to configuration file
- [FEATURE] add /-/reload HTTP endpoint
- [FEATURE] Filter silenced alerts in web UI
- [ENHANCEMENT] reduce inhibition computation complexity
- [ENHANCEMENT] Add support for teams and tags in OpsGenie integration
- [BUGFIX] Handle OpsGenie responses correctly
- [BUGFIX] Fix Pushover queue length issue
- [BUGFIX] STARTTLS before querying auth mechanism in email integration
0.1.1 / 2016-03-15
- [BUGFIX] Fix global database lock issue
- [ENHANCEMENT] Improve SQLite alerts index
- [ENHANCEMENT] Enable debug endpoint
0.1.0 / 2016-02-23
This version is a full rewrite of the Alertmanager with a very different feature set. Thus, there is no meaningful changelog.
Changes with respect to 0.1.0-beta2:
- [CHANGE] Expose same data structure to templates and webhook
- [ENHANCEMENT] Show generator URL in default templates and web UI
- [ENHANCEMENT] Support for Slack icon_emoji field
- [ENHANCEMENT] Expose incident key to templates and webhook data
- [ENHANCEMENT] Allow markdown in Slack 'text' field
- [BUGFIX] Fixed database locking issue
0.1.0-beta2 / 2016-02-03
- [BUGFIX] Properly set timeout for incoming alerts with fixed start time
- [ENHANCEMENT] Send source field in OpsGenie integration
- [ENHANCEMENT] Improved routing configuration validation
- [FEATURE] Basic instrumentation added
0.1.0-beta1 / 2016-01-08
- [BUGFIX] Send full alert group state on each update. Fixes erroneous resolved notifications.
- [FEATURE] HipChat integration
- [CHANGE] Slack integration no longer sends resolved notifications by default
0.1.0-beta0 / 2015-12-23
This version is a full rewrite of the Alertmanager with a very different feature set. Thus, there is no meaningful changelog.
0.0.4 / 2015-09-09
- [BUGFIX] Fix version info string in startup message.
- [BUGFIX] Fix Pushover notifications by setting the right priority level, as well as required retry and expiry intervals.
- [FEATURE] Make it possible to link to individual alerts in the UI.
- [FEATURE] Rearrange alert columns in UI and allow expanding more alert details.
- [FEATURE] Add Amazon SNS notifications.
- [FEATURE] Add OpsGenie Webhook notifications.
- [FEATURE] Add
-web.external-url
flag to control the externally visible Alertmanager URL. - [FEATURE] Add runbook and alertmanager URLs to PagerDuty and email notifications.
- [FEATURE] Add a GET API to /api/alerts which pulls JSON formatted AlertAggregates.
- [ENHANCEMENT] Sort alerts consistently in web UI.
- [ENHANCEMENT] Suggest to use email address as silence creator.
- [ENHANCEMENT] Make Slack timeout configurable.
- [ENHANCEMENT] Add channel name to error logging about Slack notifications.
- [ENHANCEMENT] Refactoring and tests for Flowdock notifications.
- [ENHANCEMENT] New Dockerfile using alpine-golang-make-onbuild base image.
- [CLEANUP] Add Docker instructions and other cleanups in README.md.
- [CLEANUP] Update Makefile.COMMON from prometheus/utils.
0.0.3 / 2015-06-10
- [BUGFIX] Fix email template body writer being called with parameters in wrong order.
0.0.2 / 2015-06-09
- [BUGFIX] Fixed silences.json permissions in Docker image.
- [CHANGE] Changed case of API JSON properties to initial lower letter.
- [CHANGE] Migrated logging to use http://github.com/prometheus/log.
- [FEATURE] Flowdock notification support.
- [FEATURE] Slack notification support.
- [FEATURE] Generic webhook notification support.
- [FEATURE] Support for "@"-mentions in HipChat notifications.
- [FEATURE] Path prefix option to support reverse proxies.
- [ENHANCEMENT] Improved web redirection and 404 behavior.
- [CLEANUP] Updated compiled web assets from source.
- [CLEANUP] Updated fsnotify package to its new source location.
- [CLEANUP] Updates to README.md and AUTHORS.md.
- [CLEANUP] Various smaller cleanups and improvements.