Fixes#21544.
The network prefix (e.g. 64) identifies the network portion
which determines which bucket should that IPv6 belong to.
Implemented as a generic approach, so we have the option
to use different prefix sizes (leading to different buckets)
in the future.
Add comprehensive assertions for which IPv6s
are expected to belong to the same bucket and which are not.
Previously, we were using the ".home-page-input" selector to check for
any focused input elements in the home page view of the Zulip Web UI.
Since all of these inputs, other than the navbar search input have now
been converted to filter inputs, we can simplify the logic to check for
any focused input elements with the ".input-element" selector.
The navbar search input has a different selector, "#search_query",
which is already accounted for in the views_util.is_in_focus() method.
Now, ".input-element" class will potentially be used for several other
inputs in the UI other than the home page view, but the is_in_focus()
method already accounts for other focused elements like compose,
overlays, popovers, etc, and thus the logic remains unaffected.
Fixes part of #35135.
Sidebar links were adding a trailing slash to each of the pages. Our
canonical URLs don't have a trailing slash. This will probably also stop
starlight from adding trailing slash at other unexpected places.
When running the astro dev server, if a page has a trailing slash, we
will get a page from astro asking to remove that slash. That will not
happen in static build mode or production since we don't use astro's
serving mechanisms there.
Pagefind files with the extensions `pf_fragment`, `pf_mindex` and
`pf_meta` are hashed in pagefind and thus we can cache it agressively.
Other files in pagefind are not hashed, although they only change
between different versions, we can think about a caching strategy for it
later.
Having a separate block was redundant since moving /help/_astro/ inside
location /help means that it can inherit its alias and we don't have to
re-declare it.
Default installs will re-examine every stream, since the process is
relatively fast. Large installs have the option to only examine
streams which have the potential to have changed subscriber counts.
The DjangoIntegration is explicitly disabled, because it attempts to
hook into the request handling in a way which is not compatible with
Tornado, and leaks event handlers.
It was being automatically forced off by dint of being run with a TTY
still attached to STDIN. `./manage.py rundjangoserver` was
unaffected, as it does not descend from ZulipBaseCommand.