Switch to astro

This commit is contained in:
Luke Street
2026-03-04 21:35:52 -07:00
parent e93667b7bc
commit fe8a500ba3
42 changed files with 4267 additions and 1271 deletions
+41
View File
@@ -0,0 +1,41 @@
name: Deploy to GitHub Pages
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v6
with:
node-version: 24
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm build
- uses: actions/upload-pages-artifact@v4
with:
path: dist
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
+4 -7
View File
@@ -1,7 +1,4 @@
_site/
.sass-cache/
.jekyll-cache/
.jekyll-metadata
# Ignore folders generated by Bundler
.bundle/
vendor/
node_modules/
dist/
.astro/
.pnpm-store/
-10
View File
@@ -1,10 +0,0 @@
---
layout: default
title: "404: Page not found"
permalink: 404.html
---
<div class="page">
<h1 class="page-title">404: Page not found</h1>
<p class="lead">Sorry, we've misplaced that URL or it's pointing to something that doesn't exist. <a href="{{ site.baseurl }}/">Head back home</a> to try finding it again.</p>
</div>
-5
View File
@@ -1,5 +0,0 @@
source "https://rubygems.org"
gem "jekyll"
gem "jekyll-gist"
gem "jekyll-seo-tag"
-110
View File
@@ -1,110 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.9)
public_suffix (>= 2.0.2, < 8.0)
base64 (0.3.0)
bigdecimal (4.0.1)
colorator (1.1.0)
concurrent-ruby (1.3.6)
csv (3.3.5)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
eventmachine (1.2.7)
faraday (2.14.1)
faraday-net_http (>= 2.0, < 3.5)
json
logger
faraday-net_http (3.4.2)
net-http (~> 0.5)
ffi (1.17.3-arm64-darwin)
ffi (1.17.3-x86_64-linux-gnu)
forwardable-extended (2.6.0)
google-protobuf (4.34.0-arm64-darwin)
bigdecimal
rake (~> 13.3)
google-protobuf (4.34.0-x86_64-linux-gnu)
bigdecimal
rake (~> 13.3)
http_parser.rb (0.8.1)
i18n (1.14.8)
concurrent-ruby (~> 1.0)
jekyll (4.4.1)
addressable (~> 2.4)
base64 (~> 0.2)
colorator (~> 1.0)
csv (~> 3.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (>= 2.0, < 4.0)
jekyll-watch (~> 2.0)
json (~> 2.6)
kramdown (~> 2.3, >= 2.3.1)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (~> 0.3, >= 0.3.6)
pathutil (~> 0.9)
rouge (>= 3.0, < 5.0)
safe_yaml (~> 1.0)
terminal-table (>= 1.8, < 4.0)
webrick (~> 1.7)
jekyll-gist (1.5.0)
octokit (~> 4.2)
jekyll-sass-converter (3.1.0)
sass-embedded (~> 1.75)
jekyll-seo-tag (2.8.0)
jekyll (>= 3.8, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
json (2.18.1)
kramdown (2.5.2)
rexml (>= 3.4.4)
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.4)
listen (3.10.0)
logger
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
logger (1.7.0)
mercenary (0.4.0)
net-http (0.9.1)
uri (>= 0.11.1)
octokit (4.25.1)
faraday (>= 1, < 3)
sawyer (~> 0.9)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (7.0.5)
rake (13.3.1)
rb-fsevent (0.11.2)
rb-inotify (0.11.1)
ffi (~> 1.0)
rexml (3.4.4)
rouge (4.7.0)
safe_yaml (1.0.5)
sass-embedded (1.97.3-arm64-darwin)
google-protobuf (~> 4.31)
sass-embedded (1.97.3-x86_64-linux-gnu)
google-protobuf (~> 4.31)
sawyer (0.9.3)
addressable (>= 2.3.5)
faraday (>= 0.17.3, < 3)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
unicode-display_width (2.6.0)
uri (1.1.1)
webrick (1.9.2)
PLATFORMS
arm64-darwin-23
x86_64-linux
DEPENDENCIES
jekyll
jekyll-gist
jekyll-seo-tag
BUNDLED WITH
2.4.22
-38
View File
@@ -1,38 +0,0 @@
# Setup
title: "@encounter"
tagline: Luke Street
url: https://encounter.github.io
baseurl: ""
permalink: pretty
# Gems
plugins:
- jekyll-gist
- jekyll-seo-tag
# Optimize Jekyll
exclude:
- .editorconfig
- .git
- .jekyll-cache
- Gemfile
- Gemfile.lock
- README.md
sass:
sass_dir: _sass
style: compressed
# Options
# Replace this value and uncomment to enable Google Analytics tracking
# ga_analytics: UA-000000-0
# Specify the author for blog posts
author:
name: Luke Street
url: https://github.com/encounter
email: luke@street.dev
# Custom vars
version: 3.0.0
-22
View File
@@ -1,22 +0,0 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
{% if page.title == "About" %}
{{ site.title }}{% if site.tagline %} &middot; {{ site.tagline }}{% endif %}
{% else %}
{{ page.title }} &middot; {{ site.title }}
{% endif %}
</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500;600&display=swap">
<link rel="stylesheet" href="{{ 'styles.css' | relative_url }}">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ '/assets/apple-touch-icon-precomposed.png' | relative_url }}">
<link rel="shortcut icon" href="{{ '/assets/favicon.ico' | relative_url }}">
<link rel="alternate" type="application/atom+xml" title="{{ site.title }}" href="{{ 'atom.xml' | relative_url }}">
<meta name="darkreader-lock">
{% seo title=false %}
</head>
-38
View File
@@ -1,38 +0,0 @@
<!doctype html>
<html lang="en">
{% include head.html %}
<body>
<div class="container content">
<header class="masthead">
<h3 class="masthead-title">
<a href="{{ site.baseurl }}/" title="Home"><span class="prompt">&gt;</span> {{ site.title }}</a>
<small>{{ site.tagline }}</small>
</h3>
</header>
<main>
{{ content }}
</main>
<footer class="footer">
<small>
&copy; <time datetime="{{ site.time | date_to_xmlschema }}">{{ site.time | date: '%Y' }}</time>
</small>
</footer>
</div>
{% if site.ga_analytics %}
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', '{{ site.ga_analytics }}', 'auto');
ga('send', 'pageview');
</script>
{% endif %}
</body>
</html>
-10
View File
@@ -1,10 +0,0 @@
---
layout: default
---
<article class="page">
{% unless page.title == "About" %}
<h1 class="page-title">{{ page.title }}</h1>
{% endunless %}
{{ content }}
</article>
-25
View File
@@ -1,25 +0,0 @@
---
layout: default
---
<article class="post">
<h1 class="post-title">{{ page.title }}</h1>
<time datetime="{{ page.date | date_to_xmlschema }}" class="post-date">{{ page.date | date_to_string }}</time>
{{ content }}
</article>
{% if site.related_posts != empty %}
<aside class="related">
<h3>Related posts</h3>
<ul class="related-posts">
{% for post in site.related_posts limit:3 %}
<li>
<a href="{{ site.baseurl }}{{ post.url }}">
{{ post.title }}
<small><time datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date_to_string }}</time></small>
</a>
</li>
{% endfor %}
</ul>
</aside>
{% endif %}
-76
View File
@@ -1,76 +0,0 @@
* {
box-sizing: border-box;
}
body {
margin: 0;
font-family: var(--body-font);
font-size: var(--body-font-size);
line-height: var(--body-line-height);
color: var(--body-color);
background-color: var(--body-bg);
-webkit-text-size-adjust: 100%;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
a {
color: var(--link-color);
text-decoration: none;
transition: color 0.15s ease;
&:hover,
&:focus {
color: var(--link-hover-color);
}
strong {
color: inherit;
}
}
img {
display: block;
max-width: 100%;
margin-bottom: var(--spacer);
border-radius: var(--border-radius);
&.inline {
display: inline-block;
margin-bottom: 0;
}
}
table {
margin-bottom: 1rem;
width: 100%;
border: 0 solid var(--border-color);
border-collapse: collapse;
}
td,
th {
padding: .25rem .5rem;
border-color: inherit;
border-style: solid;
border-width: 0;
border-bottom-width: 1px;
}
th {
text-align: left;
}
thead th {
border-bottom-color: currentColor;
}
mark {
padding: .15rem;
background-color: var(--yellow-100);
border-radius: .125rem;
}
::selection {
background-color: var(--accent-subtle);
}
-58
View File
@@ -1,58 +0,0 @@
// Code
//
// Inline and block-level code snippets. Includes tweaks to syntax highlighted
// snippets from Pygments/Rouge and Gist embeds.
code,
pre {
font-family: var(--code-font);
}
code {
font-size: 85%;
}
pre {
display: block;
margin-top: 0;
margin-bottom: var(--spacer-3);
overflow: auto;
}
.highlight {
padding: var(--spacer);
margin-bottom: var(--spacer);
background-color: var(--code-bg);
border-radius: var(--border-radius);
pre {
margin-bottom: 0;
}
// Triple backticks (code fencing) doubles the .highlight elements
.highlight {
padding: 0;
}
}
.rouge-table {
margin-bottom: 0;
font-size: 100%;
&,
td,
th {
border: 0;
}
.gutter {
vertical-align: top;
user-select: none;
opacity: .25;
}
}
// Gist via GitHub Pages
.gist .markdown-body {
padding: 15px !important;
}
-17
View File
@@ -1,17 +0,0 @@
.container {
max-width: 48rem;
padding-left: var(--spacer-2);
padding-right: var(--spacer-2);
margin-left: auto;
margin-right: auto;
}
footer {
margin-top: var(--spacer-3);
padding-top: var(--spacer-2);
padding-bottom: var(--spacer-3);
border-top: 1px solid var(--border-color);
font-family: var(--heading-font);
font-size: .75rem;
color: var(--gray-500);
}
-62
View File
@@ -1,62 +0,0 @@
.masthead {
padding-top: var(--spacer-3);
padding-bottom: var(--spacer-2);
margin-bottom: var(--spacer-2);
border-bottom: 1px solid var(--border-color);
}
.masthead-title {
margin-bottom: 0;
font-family: var(--heading-font);
a {
color: var(--heading-color);
text-decoration: none;
&:hover,
&:focus {
color: var(--accent);
text-decoration: none;
}
}
.prompt {
color: var(--green);
user-select: none;
}
small {
display: block;
margin-top: .25rem;
font-family: var(--body-font);
font-weight: 400;
font-size: .875rem;
color: var(--gray-500);
letter-spacing: 0.02em;
}
}
.masthead-nav {
margin-top: .75rem;
font-family: var(--heading-font);
font-size: .8125rem;
a {
color: var(--gray-500);
text-decoration: none;
padding: .25rem 0;
transition: color 0.15s ease;
&:hover,
&:focus {
color: var(--accent);
text-decoration: none;
}
}
.sep {
color: var(--gray-400);
margin: 0 .5rem;
user-select: none;
}
}
-12
View File
@@ -1,12 +0,0 @@
// Messages
//
// Show alert messages to users. You may add it to single elements like a `<p>`,
// or to a parent if there are multiple elements to show.
.message {
padding: var(--spacer);
margin-bottom: var(--spacer);
color: var(--gray-900);
background-color: var(--yellow-100);
border-radius: var(--border-radius);
}
-52
View File
@@ -1,52 +0,0 @@
// Pagination
//
// Super lightweight (HTML-wise) blog pagination. `span`s are provide for when
// there are no more previous or next posts to show.
.pagination {
display: flex;
margin: 0 -1.5rem var(--spacer);
color: var(--gray-500);
text-align: center;
}
// Pagination items can be `span`s or `a`s
.pagination-item {
display: block;
padding: var(--spacer);
text-decoration: none;
border: solid var(--border-color);
border-width: 1px 0;
&:first-child {
margin-bottom: -1px;
}
}
// Only provide a hover state for linked pagination items
a.pagination-item:hover {
background-color: var(--border-color);
}
@media (min-width: 30em) {
.pagination {
margin: var(--spacer-3) 0;
}
.pagination-item {
float: left;
width: 50%;
border-width: 1px;
&:first-child {
margin-bottom: 0;
border-top-left-radius: var(--border-radius);
border-bottom-left-radius: var(--border-radius);
}
&:last-child {
margin-left: -1px;
border-top-right-radius: var(--border-radius);
border-bottom-right-radius: var(--border-radius);
}
}
}
-67
View File
@@ -1,67 +0,0 @@
// Posts and pages
//
// Each post is wrapped in `.post` and is used on default and post layouts. Each
// page is wrapped in `.page` and is only used on the page layout.
.page,
.post {
margin-bottom: 4em;
li + li {
margin-top: .25rem;
}
}
// Blog post or page title
.page-title,
.post-title {
color: var(--heading-color);
}
.page-title,
.post-title {
margin-top: 0;
}
.post-title a {
color: inherit;
text-decoration: none;
&:hover,
&:focus {
text-decoration: underline;
}
}
// Meta data line below post title
.post-date {
display: block;
margin-top: -.5rem;
margin-bottom: var(--spacer);
color: var(--gray-600);
}
// Related posts
.related {
padding-top: var(--spacer-2);
padding-bottom: var(--spacer-2);
margin-bottom: var(--spacer-2);
border-top: 1px solid var(--border-color);
border-bottom: 1px solid var(--border-color);
}
.related-posts {
padding-left: 0;
list-style: none;
h3 {
margin-top: 0;
}
a {
text-decoration: none;
small {
color: var(--gray-600);
}
}
}
-65
View File
@@ -1,65 +0,0 @@
.highlight .hll { background-color: #ffc; }
.highlight .c { color: #999; } /* Comment */
.highlight .err { color: #a00; background-color: #faa } /* Error */
.highlight .k { color: #069; } /* Keyword */
.highlight .o { color: #555 } /* Operator */
.highlight .cm { color: #09f; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #099 } /* Comment.Preproc */
.highlight .c1 { color: #999; } /* Comment.Single */
.highlight .cs { color: #999; } /* Comment.Special */
.highlight .gd { background-color: #fcc; border: 1px solid #c00 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #f00 } /* Generic.Error */
.highlight .gh { color: #030; } /* Generic.Heading */
.highlight .gi { background-color: #cfc; border: 1px solid #0c0 } /* Generic.Inserted */
.highlight .go { color: #aaa } /* Generic.Output */
.highlight .gp { color: #009; } /* Generic.Prompt */
.highlight .gs { } /* Generic.Strong */
.highlight .gu { color: #030; } /* Generic.Subheading */
.highlight .gt { color: #9c6 } /* Generic.Traceback */
.highlight .kc { color: #069; } /* Keyword.Constant */
.highlight .kd { color: #069; } /* Keyword.Declaration */
.highlight .kn { color: #069; } /* Keyword.Namespace */
.highlight .kp { color: #069 } /* Keyword.Pseudo */
.highlight .kr { color: #069; } /* Keyword.Reserved */
.highlight .kt { color: #078; } /* Keyword.Type */
.highlight .m { color: #f60 } /* Literal.Number */
.highlight .s { color: #d44950 } /* Literal.String */
.highlight .na { color: #4f9fcf } /* Name.Attribute */
.highlight .nb { color: #366 } /* Name.Builtin */
.highlight .nc { color: #0a8; } /* Name.Class */
.highlight .no { color: #360 } /* Name.Constant */
.highlight .nd { color: #99f } /* Name.Decorator */
.highlight .ni { color: #999; } /* Name.Entity */
.highlight .ne { color: #c00; } /* Name.Exception */
.highlight .nf { color: #c0f } /* Name.Function */
.highlight .nl { color: #99f } /* Name.Label */
.highlight .nn { color: #0cf; } /* Name.Namespace */
.highlight .nt { color: #2f6f9f; } /* Name.Tag */
.highlight .nv { color: #033 } /* Name.Variable */
.highlight .ow { color: #000; } /* Operator.Word */
.highlight .w { color: #bbb } /* Text.Whitespace */
.highlight .mf { color: #f60 } /* Literal.Number.Float */
.highlight .mh { color: #f60 } /* Literal.Number.Hex */
.highlight .mi { color: #f60 } /* Literal.Number.Integer */
.highlight .mo { color: #f60 } /* Literal.Number.Oct */
.highlight .sb { color: #c30 } /* Literal.String.Backtick */
.highlight .sc { color: #c30 } /* Literal.String.Char */
.highlight .sd { color: #c30; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #c30 } /* Literal.String.Double */
.highlight .se { color: #c30; } /* Literal.String.Escape */
.highlight .sh { color: #c30 } /* Literal.String.Heredoc */
.highlight .si { color: #a00 } /* Literal.String.Interpol */
.highlight .sx { color: #c30 } /* Literal.String.Other */
.highlight .sr { color: #3aa } /* Literal.String.Regex */
.highlight .s1 { color: #c30 } /* Literal.String.Single */
.highlight .ss { color: #fc3 } /* Literal.String.Symbol */
.highlight .bp { color: #366 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #033 } /* Name.Variable.Class */
.highlight .vg { color: #033 } /* Name.Variable.Global */
.highlight .vi { color: #033 } /* Name.Variable.Instance */
.highlight .il { color: #f60 } /* Literal.Number.Integer.Long */
.css .o,
.css .o + .nt,
.css .nt + .nt { color: #999; }
-16
View File
@@ -1,16 +0,0 @@
// Table of Contents
#markdown-toc {
padding: var(--spacer-2) var(--spacer-3);
margin-bottom: var(--spacer-2);
border: solid var(--border-color);
border-width: 1px 0;
&::before {
display: block;
margin-left: calc(var(--spacer-3) * -1);
content: "Contents";
font-size: 85%;
font-weight: 500;
}
}
-107
View File
@@ -1,107 +0,0 @@
h1, h2, h3, h4, h5, h6 {
margin-bottom: .5rem;
font-family: var(--heading-font);
font-weight: 600;
line-height: 1.3;
color: var(--heading-color);
}
h1 {
font-size: 1.75rem;
letter-spacing: -0.01em;
}
h2 {
margin-top: 2.5rem;
font-size: 1.375rem;
}
h3 {
margin-top: 1.5rem;
font-size: 1.125rem;
}
h4, h5, h6 {
margin-top: 1rem;
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
ul, ol, dl {
margin-top: 0;
margin-bottom: 1rem;
}
dt {
font-weight: bold;
}
dd {
margin-bottom: .5rem;
}
hr {
position: relative;
margin: var(--spacer-2) 0;
border: 0;
border-top: 1px solid var(--border-color);
}
abbr {
font-size: 85%;
font-weight: bold;
color: var(--gray-600);
text-transform: uppercase;
&[title] {
cursor: help;
border-bottom: 1px dotted var(--border-color);
}
}
blockquote {
padding: .5rem 1rem;
margin: .8rem 0;
color: var(--gray-500);
border-left: .25rem solid var(--accent);
p:last-child {
margin-bottom: 0;
}
@media (min-width: 30em) {
padding-right: 5rem;
padding-left: 1.25rem;
}
}
figure {
margin: 0;
}
a[href^="#fn:"],
a[href^="#fnref:"] {
display: inline-block;
margin-left: .1rem;
font-weight: bold;
}
.footnotes {
margin-top: 2rem;
font-size: 85%;
}
.lead {
font-size: 1.125rem;
font-weight: 400;
color: var(--gray-600);
line-height: 1.6;
@media (prefers-color-scheme: dark) {
color: var(--gray-700);
}
}

Some files were not shown because too many files have changed in this diff Show More