2024-02-21 23:17:19 +01:00
|
|
|
<meta charset="UTF-8">
|
|
|
|
|
|
|
|
<title>{{#if (ne page.title config.user.title)}}{{ page.title }} · {{/if}}{{ config.user.title }}</title>
|
|
|
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
|
|
|
|
<link rel="preload" href="{{ config.site }}/static/font/Recursive_VF_1.085.woff2" as="font" type="font/woff2"
|
|
|
|
crossorigin="anonymous">
|
|
|
|
<link rel="stylesheet" href="{{ config.site }}/static/css/main.css">
|
|
|
|
<link rel="stylesheet" href="{{ config.site }}/static/css/tree.css">
|
|
|
|
|
2024-03-02 20:53:44 +01:00
|
|
|
<script type="importmap">{
|
|
|
|
"imports": {
|
|
|
|
"treehouse/": "{{ config.site }}/static/js/"
|
|
|
|
}
|
|
|
|
}</script>
|
|
|
|
|
2024-02-21 23:17:19 +01:00
|
|
|
<script>
|
|
|
|
const TREEHOUSE_SITE = `{{ config.site }}`;
|
|
|
|
const TREEHOUSE_NEWS_COUNT = {{ len feeds.news.branches }};
|
|
|
|
</script>
|
|
|
|
<script type="module" src="{{ config.site }}/navmap.js"></script>
|
2024-03-03 21:23:37 +01:00
|
|
|
<script type="module" src="{{ config.site }}/static/js/spells.js"></script>
|
2024-02-21 23:17:19 +01:00
|
|
|
<script type="module" src="{{ config.site }}/static/js/ulid.js"></script>
|
|
|
|
<script type="module" src="{{ config.site }}/static/js/usability.js"></script>
|
|
|
|
<script type="module" src="{{ config.site }}/static/js/settings.js"></script>
|
|
|
|
<script type="module" src="{{ config.site }}/static/js/tree.js"></script>
|
|
|
|
<script type="module" src="{{ config.site }}/static/js/emoji.js"></script>
|
|
|
|
<script type="module" src="{{ config.site }}/static/js/news.js"></script>
|
|
|
|
|
|
|
|
<meta property="og:site_name" content="{{ config.user.title }}">
|
|
|
|
<meta property="og:title" content="{{ page.title }}">
|
|
|
|
{{!--
|
|
|
|
This is a bit of a hack to quickly insert metadata into generated pages without going through Handlebars, which
|
|
|
|
would involve registering, parsing, and generating a page from a template.
|
|
|
|
Yes it would be more flexible that way, but it doesn't need to be.
|
|
|
|
It just needs to be a string replacement.
|
|
|
|
--}}
|
|
|
|
<!-- treehouse-ca37057a-cff5-45b3-8415-3b02dbf6c799-per-branch-metadata -->
|
|
|
|
{{#if page.thumbnail}}
|
|
|
|
<meta property="og:image" content="{{ page.thumbnail.url }}">
|
|
|
|
<meta property="og:image:alt" content="{{ page.thumbnail.alt }}">
|
|
|
|
{{/if}}
|
2024-03-08 22:40:19 +01:00
|
|
|
|
|
|
|
<link rel="icon" sizes="16x16" href="{{ config.site }}/static/favicon/{{ season }}@1x.png">
|
|
|
|
<link rel="icon" sizes="32x32" href="{{ config.site }}/static/favicon/{{ season }}@2x.png">
|
|
|
|
<link rel="icon" sizes="64x64" href="{{ config.site }}/static/favicon/{{ season }}@4x.png">
|
|
|
|
<link rel="icon" sizes="128x128" href="{{ config.site }}/static/favicon/{{ season }}@8x.png">
|
|
|
|
<link rel="icon" sizes="256x256" href="{{ config.site }}/static/favicon/{{ season }}@16x.png">
|
|
|
|
<link rel="icon" sizes="512x512" href="{{ config.site }}/static/favicon/{{ season }}@32x.png">
|
|
|
|
<link rel="apple-touch-icon" sizes="16x16" href="{{ config.site }}/static/favicon/{{ season }}@1x.png">
|
|
|
|
<link rel="apple-touch-icon" sizes="32x32" href="{{ config.site }}/static/favicon/{{ season }}@2x.png">
|
|
|
|
<link rel="apple-touch-icon" sizes="64x64" href="{{ config.site }}/static/favicon/{{ season }}@4x.png">
|
|
|
|
<link rel="apple-touch-icon" sizes="128x128" href="{{ config.site }}/static/favicon/{{ season }}@8x.png">
|
|
|
|
<link rel="apple-touch-icon" sizes="256x256" href="{{ config.site }}/static/favicon/{{ season }}@16x.png">
|
|
|
|
<link rel="apple-touch-icon" sizes="512x512" href="{{ config.site }}/static/favicon/{{ season }}@32x.png">
|