apply Clippy recommendations
show spaces in code tags This makes it clear why you get no results when there is a trailing space.
allow cross-origin requests I'm not sure this is right because I still don't understand CORS.
allow lookup by language name
ensure top level of JSON is an object
normalize term and transliteration in query These are always NFC in the database, so non-NFC input has to be normalized. The other fields of the various queries don't need to be normalized because they can only be ASCII.
add format parameter that returns JSON
refactor to use a make_table function Put most methods in Args trait. Couldn't do so with write_headers because it requires looking at the names of the Row fields. This should make it easier to provide row data in JSON format (and cache it).
let index page adapt to width on mobile device
don't word-wrap language codes
add long word search, make more mobile-friendly Uses a function that iterates over words as defined by Unicode, counts their lengths in graphemes, and returns the longest length found. Removed limit on width of body. Added new width to index page. Added meta viewport tag to make the website more mobile-friendly.
use database with more fields in translation table Much faster, particularly in the transliteration page.
fix parameters to transliteration query Also link languages in entry name and transliteration pages.
search transliteration without language and entry name Added a search page for entry names. This is only for terms without embedded wikilinks because the database excludes terms with `[[` from the entry name generation. The by-transliteration page accepted an empty language code, but gave no results. An empty language is invalid, so it makes more sense to treat empty as nothing. Had to rewrite the query to get it to return when no language is provided.
add language names to captions and rows Added a hash map to `State` and supplied it as an argument to `TableResponse::write_table_row` and `Args::write_caption`. The language name displays in the caption of most pages and the rows of the leaderboard.
add automated transliteration by-transliteration searches by both automated and manual transliteration.
open database as read-only Separated intra-crate imports from external dependencies.
add download URL for database /translations.sqlite
retrieve by-language from cache when an ID isn't given The ID in `ByLanguageArgs` is `None` when it's not in the query, but the response is inserted under `RowId::StartId(1)`, so the website wasn't managing to retrieve it even though it was there. Changed `<ByLanguageArgs as Args>::cache_key` so that the website doesn't have to keep reloading the same data from the database.
language-tag term in by-term-and-language