* high contrast theme
* improve '/explore' error messages when site is invalid
* change aria-expanded when search suggestions are displayed
* wrap search suggestions in <ul> and <li> items to ensure screen reader knows how many suggestions there are
* move focus to modal when it opens. trap focus until modal is closed again
* add aria-expanded to each result that is true iff. the modal is expanded for that result
* entire navigation bar inside <nav> element
* add skip link to navbar to jump to main content of page
* improve focus indicators for selected /explore sites
* more descriptive titles for explore page interactive elements
* group settings in fieldsets and use title+description as legend
* add language to setting input fields to ensure required fields error is read in correct language on screenreaders
* add headings to serp
* add title to hamburger menu on mobile
* fix firefox accessibility errors
* only show button outline on tab focus
merging the segments right now takes a write lock for the entirety of the operation. this causes all searches to time out whenever the live index compacts its segments. we should actually be able to split up the merge operation to create the merged segment on a read lock and only take a write lock when switching and cleaning the old segments for the new one. increasing the compaction interval is only a temporary fix
to make sure the edges are returned in sorted order, we implement a new FlatSortedBy struct that takes a vec of iters and outputs the sorted order of the iter items. it assumes that each iter is already sorted so it doesn't have to traverse the entire result set
* re-open index after it has been downloaded from replica
* remove writer directory lock
* update meta file with segment changes
* flatten live index directory structure a bit for better overview
* additional live index tests
if a node restarted quickly after it shut down, it might see its old ghost in the cluster and try to download the index from itself, which would of course fail
* find links to feeds from pages and add them to site statistics (statistics is probably an incorrect name now)
* robust url parse
* shard download_db by the first two characters of the md5 hash of the host
* count number of occurrences for each feed in site stats so we can filter '/comment' etc
* filter feeds that only has a count of 1 from site stats
* webgraph granularity as trait to ensure each struct gets a connection with the granularity they expect
* remove cluster_id as it wasn't used for anything in practice
* assign budgets to each site based on their category, host centrality and total daily budgets
* entrypoint for live index crawler
* implement feeds checker
* sitemap checker
* frontpage checker
* remove unused imports + fix clippy warnings
* remove redundant closure
* fix deadlock when starting crawl of a site. the drip thread already had the lock so creating the guard would halt indefinitely
* also seed crawled_db with urls from live index
* [WIP] join live-index node in setup mode before searches can be performed
the node needs to check if there are other replicas already online and download the index from one of them. inserts should also still be inserted into setup node's wal
* once a server receives an indexing request with a consistency threshold, replicate that request to the other replicas (servers with same shard as the server that received the request). only if the consistency threshold is met should the original request succeed
* write to temp wal during setup
* remote copy of files/directories to download the index from an existing replica
* download index from existing replicas during setup
* clippy fix
* cleanup large test files in remote copy tests
* [wip] live index tests
* tests
* [WIP] live index code structure with a ton of todos
* update meta file with segment changes
* add endpoint to index webpages into live index
* compact segments by date
* cleanup old segments
* fix clippy warnings
* fix clippy warnings