Hydejack 9
Major
-
Added Built-In Search Functionality
Hydejack now has its own built-in search solution, that integrates well with the existing page style and the new navbar.
The solution is entirely browser-based which means it even works while offline and doesn't depend on an 3rd party.
This works, because Hydejack is designed for personal sites that generally have less than 1000 pages.
In my testing, Jekyll build times have been a problem long before search query times.The results of the search are surprisingly good, but have only been tested in English and (somewhat) German.
For better language support, I might build an integration with Algolia at some point, which has the best results,
but requires stable internet connection and an API key.
I'd be interested to hear about problems with search in other languages to determine if this is necessary. -
Added Table of Contents that is prettier, sticky, and dynamic.
Adding a table of contents is part of kramdown and can be done in all versions of Hydejack.
However, v9 adds a dynamic version that will stick to the 3rd column on large screens and highlight the current section.Note that this will reduce the amount of space freed up by the
no_break_layout: false
setting (otherwise the ToC would overlap with code blocks, math blocks, etc). -
Added a scroll-linked navbar that disappears when scrolling down and re-appears when scrolling up.
-
Math support has been revamped because the old solution stopped working with Jekyll 4. Hydejack now supports both KaTeX and MathJax.
The MathJax implementation is more similar to the old solution. It comes with a client-side runtime (MathJax in this case)
and works on GitHub Pages. It is the more heavy-weight of the two and doesn't work without JavaScript enabled.
Due to the size of the complete MathJax package, it only works partially with offline support enabled.The KaTeX implementation has been changed to pre-render the KaTeX output during site building.
It does not ship a client-side runtime, which is more lightweight and works without JavaScript.
In my opinion, it is the more elegant solution, but it requires a JavaScript runtime on the machine that builds the site.
This means that this solution doesn't work on GitHub Pages.You can switch between the two implementations by changing the
kramdown.math_engine
key to eitherkatex
ormathjax
in your config file.
The KaTeX implementation also requires thekramdown-math-katex
gem in yourGemfile
. -
Drastically improved build times through the use of
jekyll-include-cache
.
Most of the previous tips on improving page build speed should now be obsolete. -
Added
grid
layout in PRO version that mirrors theprojects
layout, but for posts.
If you've setimage
s for your posts, it will give your blog a more modern look.
Minor
- CSS variables are now configurable via
_data/variables.yml
. While there are other ways to change them, this has the broadest reach across HTML (img[sizes]
attribute!), CSS and JS. - Many JS content features (such as
#
heading links) now work even whenhydejack.no_push_state
is enabled. - Linking to posts in the
home
andpost
layout now accept either paths or URLs. Read more. - The star icons in the resume layout can now be disabled via
no_skill_icons
andno_language_icons
. - Resume layout now supports the following keys:
born
,citizenship
, andmaritalStatus
. - PRO only: Added
hide_dates
option to disable showing blog post dates. - The
blog
layout now works without pagination, simply showing all posts on a single page when thejekyll-pagination
plugin is not found. - The
projects
,resume
, andgrid
layout now make better use of large screens, by letting content expand to the right of the screen. Restore the previous , setno_break_columns
in front matter. - Removed smooth scroll polyfill for Safari/Webkit as it has caused problems with sticky content.
- Figure captions can now be added to code blocks, math blocks, and tables in addition to just images using the
.figcaption
CSS class. - The order of the comment section relative to the about and related posts sections can now be customized via the
hydejack.post_addons
andhydejack.project_addons
keys. See the example_config.yml
for more. - Clicking the image in the
blog
layout will now navigate to the blog post. In the PRO version it will do so with the classic "move image in place" animation. - Grouping projects by year can now be disabled. Use
no_groups: true
in the front matter. This also applies to the newgrid
layout and the oldlist
layout. - hy-img has been removed and replaced with browser's native
loading=lazy
attribute - Now serving separate JavaScript files for old and new browsers, allowing it to take advantage of many new language features.
- JavaScript files are now chunked, so that only what is needed is loaded on demand.
- hy-drawer and hy-push-state have been rewritten in TypeScript and LitHTML, fixing many bugs in the process.
- Updated to Jekyll 4.1
- Hydejack now has a dedicated offline page that will be shown when the client is offline and tries to open a page that hasn't been cached.
The content of the page can be customized by creatingoffline.md
file in the root withlayout: offline
, similar to404.md
. - The code font can now be customized in the config file via the
font_code
key.
Design
- Many layouts (
projects
,resume
,home
) will now use more space on large screens (disable viahydejack.no_third_column
) - Headings now appear "oversized" on larger screens and extend to the right end of the screen (disable via
hydejack.no_large_headings
) - The base font size is now smaller across screen sizes (can be configured in
_sass/_variables.scss
) - The content width is now larger across screen sizes (can be configured in
_sass/_variables.scss
) - The link style has been changed to make picking accent colors easier for dark mode. It's also possible to link images now without worrying about underlines.
- The amount of whitespace has been reduced. Previously it had been increased but it felt too much.
- Added a
note
class that succeeds themessage
for adding auxillary content. Themessage
class still exists. - The navbar buttons made to look more like buttons
- Dark mode colors have been toned down a bit
- Improved dark mode text rendering on macOS
- The permalink style has been changed to use "#" instead of an icon.
- Definition list now have a double colon after the definition term.
- Changed the style of footnote links on small screens to make them easier to click.
Fixes
- Horizontal scrolling on a code block, math black, or table can no longer accidentally open the drawer.
- The client-side scripts are now more robust to missing HTML elements. This should ease theme customization.
- Setting
sitemap: false
will now also add anoindex
meta tag to prevent accidental search engine indexation. - Fixed back button not showing when opening in standalone mode for the first time.
- The menu icon is now hidden when the drawer is disabled.
- Using
no_drawer: true
is now working properly on cover pages whenno_push_state: false
is set. - Reduced the amount of pixels cached by the
will-change
optimization and fixed the corresponding warning in Firefox.