diff --git a/.changeset/cuddly-rabbits-fly.md b/.changeset/cuddly-rabbits-fly.md
new file mode 100644
index 0000000..cf1c5f3
--- /dev/null
+++ b/.changeset/cuddly-rabbits-fly.md
@@ -0,0 +1,5 @@
+---
+"neogrok": patch
+---
+
+Expand and enhance documentation on /about and /syntax
diff --git a/src/lib/doc-section-heading.svelte b/src/lib/doc-section-heading.svelte
new file mode 100644
index 0000000..90a697c
--- /dev/null
+++ b/src/lib/doc-section-heading.svelte
@@ -0,0 +1,15 @@
+
+
+
- As an added bonus, neogrok can serve as a replacement for existing - deployments of - OpenGrok, a much older, - more intricate, slower, and generally jankier code search engine than zoekt. - Neogrok strives to provide URL compatibility with OpenGrok by redirecting - OpenGrok URLs to their neogrok equivalents: simply deploy neogrok at the - same origin previously hosting your OpenGrok instance, and everything will - Just Work™. (Perfect compatibility is not possible as the feature sets of - each search engine do not map one-to-one.) -
-- To see the source code and more detailed documentation, check out the - project on GitHub. + This page describes the functionality of this neogrok site. To see the + source code and more detailed documentation on configuring and deploying + neogrok, check out the project on GitHub.
+ ++ The main/home page of the site is the code search page. + Here you can enter a search query in the zoekt syntax, which is a complicated + enough topic that it gets its own page. +
++ One of the selling points of neogrok and zoekt is speed. So, by default, + search is live: every character you type into the search inputs + will execute a new query. If you prefer to not have live search, there + is a button in the search form that toggles between live and + manual + search. When manual search is enabled, the search query can instead be executed + by pressing the enter/return key, and any search inputs that have pending + changes are highlighted in yellow. +
++ Search results consist of N matches for the query across M + files, where N ≥ M. Matches can occur not only in file contents, + but in file paths as well. As a search engine, zoekt attempts to rank + results by a relevancy score: it will return the highest scoring file + first. The scoring mechanisms of zoekt are opaque and unspecified. +
++ Unlike some other search engines, zoekt does not paginate search + results. To prevent both neogrok and your browser from being + overwhelmed, the number of results returned from zoekt to neogrok are + limited by the files and matches inputs. Zoekt collects + the top N matches across the top M files, stopping whenever + it meets either of these two limits, and sends the truncated results to neogrok. +
++ The search results header thus describes how many files and matches for + the query zoekt found, and how many it sent to neogrok. It will show + which of the files and matches inputs are the current limiting + factor on the truncated results by highlighting the relevant count in the + header. You can get more results by increasing the relevant limit in its + input. +
++ Finally, there are a few more inputs in the search form that control + how search results are displayed: +
++ The repositories list page tabulates all of + the repositories indexed in the backing zoekt instance, including a variety + of data about them. +
+
+ Note that the search input on this page has the same semantics as the
+ search input on the main search page: you are writing a full zoekt query, but instead of getting normal search results, you get repositories that
+ contain any results matching the query. So,
+ The preferences page allows you to persistently + configure some aspects of the neogrok UI. Preferences configured here are stored + in browser cookies and are updated instantly upon interacting with any of the + inputs. +
+