I didn't touch the actual man page pages yet, but they seem to have
mostly survived my CSS changes. There's a LOT of general UI improvements
to be done, while this commit is really just a different style of paint.
This removes the navigation menu on the right, leaving more space for
the actual contents. Instead, there are now a few links/tabs at the top
of the page. There's also a 'permalink' now.
The previous navigation combined the selection of man page versions,
translations and sections in a single menu. While handy in some cases,
in most cases it was just slow and messy. It also didn't scale very
well, some man pages have so many versions that it significantly
affected the page load time.
The 'locations' table has now also been moved into tab and is loaded
asynchronously as well, for the same performance reasons.
I had hoped that this new navigation would be much easier and more
convenient, but honestly, it's still a mess. At least the new code is
more maintainable, so perhaps I'll be able to make some incremental
improvements in the future.
This splits the 'package' table into 'packages' and 'package_versions',
which should improve performance in some cases and simplify some future
queries.
Previously it wasn't very well defined whether packages were uniquely
identified by (system, name) or by (system, category, name). This is now
normalized to the latter form. This required changes to the package URLs
to include the category.
This allows for a more dynamic nav bar without inserting insanely huge
HTML code in the page (as the previous version did in some cases) and
without having to contact the server again.
The 'intro' man page has around 1500 versions, and only generates a page
of ~52KiB (~9.5KiB after compression). The previous HTML version was
106KiB (~10.3KiB after compression). Page generation times have been
improved on the server side (by 50ms for the intro man page), but I've
no idea how significant the effect is of JS is. Feels fast enough,
though.