From df80a5264c0de9932738b6c4a409c2dc2d04d1a3 Mon Sep 17 00:00:00 2001 From: Noah Pendleton <2538614+noahp@users.noreply.github.com> Date: Wed, 15 Apr 2026 17:00:28 -0400 Subject: [PATCH] chore: update jekyll + ruby This is finally so out of date it doesn't run on my ubuntu 25 workstation. Update everything. --- .github/workflows/detect-renamed-posts.yml | 6 +- .../detect-ruby-version-mismatch.yml | 2 +- .ruby-version | 2 +- Dockerfile | 3 +- Gemfile | 6 +- Gemfile.lock | 77 +++++++++++-------- _sass/_variables.scss | 21 ++++- _sass/base.scss | 29 +------ _sass/custom.scss | 9 ++- _sass/layout.scss | 33 ++++---- _sass/mixin.scss | 2 + _sass/modules/_newsletter.scss | 2 + _sass/modules/_submit_pr.scss | 2 + _sass/modules/_toc.scss | 2 + _sass/tag.scss | 2 + _sass/typography.scss | 5 +- css/main.scss | 17 ++-- readme.md | 2 +- requirements.txt | 2 +- 19 files changed, 130 insertions(+), 94 deletions(-) diff --git a/.github/workflows/detect-renamed-posts.yml b/.github/workflows/detect-renamed-posts.yml index 0fb72358..bcf2ce50 100644 --- a/.github/workflows/detect-renamed-posts.yml +++ b/.github/workflows/detect-renamed-posts.yml @@ -13,15 +13,15 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: # this enables doing git diff HEAD^ for the squashed PR commit fetch-depth: 2 - name: Set Up Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 22 - name: Run Renaming Script run: | diff --git a/.github/workflows/detect-ruby-version-mismatch.yml b/.github/workflows/detect-ruby-version-mismatch.yml index ee9fa3d2..eb2466c0 100644 --- a/.github/workflows/detect-ruby-version-mismatch.yml +++ b/.github/workflows/detect-ruby-version-mismatch.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Verify Ruby version in readme.md matches .ruby-version run: | RUBY_VERSION=$(cat .ruby-version) diff --git a/.ruby-version b/.ruby-version index be94e6f5..37d02a6e 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.2.2 +3.3.8 diff --git a/Dockerfile b/Dockerfile index 3e187ca2..9831f873 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.2.2-slim-bullseye +FROM ruby:3.3.8-slim-bookworm ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ @@ -14,6 +14,7 @@ WORKDIR /memfault/interrupt COPY Gemfile . COPY Gemfile.lock . RUN bundle config force_ruby_platform true +RUN gem install bundler -v 4.0.10 RUN bundle install COPY requirements.txt . diff --git a/Gemfile b/Gemfile index f645de66..3205278a 100644 --- a/Gemfile +++ b/Gemfile @@ -6,11 +6,11 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } # gem "rails" -gem "jekyll", "~> 4.2.1" +gem "jekyll", "~> 4.4" gem "jekyll-paginate", "~> 1.1" -gem "jekyll-feed", "~> 0.15.1" -gem 'jekyll-seo-tag', "~> 2.7.1" +gem "jekyll-feed", "~> 0.17" +gem 'jekyll-seo-tag', "~> 2.8" group :jekyll_plugins do gem 'jekyll-diagrams' diff --git a/Gemfile.lock b/Gemfile.lock index 7d7284ed..dcb8bc4d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,46 +1,56 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) + addressable (2.9.0) + public_suffix (>= 2.0.2, < 8.0) + base64 (0.3.0) + bigdecimal (4.1.1) colorator (1.1.0) - concurrent-ruby (1.3.4) + concurrent-ruby (1.3.6) + csv (3.3.5) deep_merge (1.2.2) em-websocket (0.5.3) eventmachine (>= 0.12.9) http_parser.rb (~> 0) eventmachine (1.2.7) - ffi (1.17.0) + ffi (1.17.4) forwardable-extended (2.6.0) - http_parser.rb (0.8.0) - i18n (1.14.6) + google-protobuf (4.34.1) + bigdecimal + rake (~> 13.3) + http_parser.rb (0.8.1) + i18n (1.14.8) concurrent-ruby (~> 1.0) - jekyll (4.2.2) + 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) + jekyll-sass-converter (>= 2.0, < 4.0) jekyll-watch (~> 2.0) - kramdown (~> 2.3) + json (~> 2.6) + kramdown (~> 2.3, >= 2.3.1) kramdown-parser-gfm (~> 1.0) liquid (~> 4.0) - mercenary (~> 0.4.0) + mercenary (~> 0.3, >= 0.3.6) pathutil (~> 0.9) - rouge (~> 3.0) + rouge (>= 3.0, < 5.0) safe_yaml (~> 1.0) - terminal-table (~> 2.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) jekyll-diagrams (0.10.0) jekyll (>= 3.8, < 5.0) - jekyll-feed (0.15.1) + jekyll-feed (0.17.0) jekyll (>= 3.7, < 5.0) jekyll-get-json (1.0.0) deep_merge (~> 1.2) jekyll (>= 3.0) jekyll-paginate (1.1.0) - jekyll-sass-converter (2.2.0) - sassc (> 2.0.1, < 3.0) - jekyll-seo-tag (2.7.1) + jekyll-sass-converter (3.1.0) + sass-embedded (~> 1.75) + jekyll-seo-tag (2.8.0) jekyll (>= 3.8, < 5.0) jekyll-sitemap (1.4.0) jekyll (>= 3.7, < 5.0) @@ -49,14 +59,17 @@ GEM nokogiri (~> 1.10) jekyll-watch (2.2.1) listen (~> 3.0) - kramdown (2.4.0) - rexml + json (2.19.3) + kramdown (2.5.2) + rexml (>= 3.4.4) kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) liquid (4.0.4) - listen (3.9.0) + 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) mini_portile2 (2.8.7) nokogiri (1.16.7) @@ -64,34 +77,36 @@ GEM racc (~> 1.4) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (6.0.1) + public_suffix (7.0.5) racc (1.8.1) + rake (13.4.1) rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) - rexml (3.3.9) - rouge (3.30.0) + rexml (3.4.4) + rouge (4.7.0) safe_yaml (1.0.5) - sassc (2.4.0) - ffi (~> 1.9) - terminal-table (2.0.0) - unicode-display_width (~> 1.1, >= 1.1.1) - unicode-display_width (1.8.0) + sass-embedded (1.99.0) + google-protobuf (~> 4.31) + rake (>= 13) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + unicode-display_width (2.6.0) webrick (1.8.2) PLATFORMS ruby DEPENDENCIES - jekyll (~> 4.2.1) + jekyll (~> 4.4) jekyll-diagrams - jekyll-feed (~> 0.15.1) + jekyll-feed (~> 0.17) jekyll-get-json (~> 1.0) jekyll-paginate (~> 1.1) - jekyll-seo-tag (~> 2.7.1) + jekyll-seo-tag (~> 2.8) jekyll-sitemap (~> 1.4) jekyll-target-blank (~> 2.0) webrick (~> 1.7) BUNDLED WITH - 2.2.29 + 4.0.10 diff --git a/_sass/_variables.scss b/_sass/_variables.scss index c20064f5..07ede65f 100644 --- a/_sass/_variables.scss +++ b/_sass/_variables.scss @@ -4,7 +4,26 @@ $github-color: #000000; $rss-color: $orange-color; $linkedin-color: #0077B5; - $blue: #141443; $gray: rgba(20, 24, 69, 0.15); $white: white; + +$baseline-height: 2rem; + +$main-color: #141845; +$background-color: #FDFDFD; +$text-color: #222222; + +$link-color: $main-color; +$theme-color: $main-color; + +// Dark theme +$main-color-dark: #FDFDFD; +$background-color-dark: #141845; +$text-color-dark: #FDFDFD; + +// Additional colors +$light-grey: #CBD6E2; +$disabled-color: rgba(103, 113, 144, 1.0); +$background-color2: #F5F8FA; +$dark-grey: #33475b; diff --git a/_sass/base.scss b/_sass/base.scss index e1827e94..e9d0441c 100644 --- a/_sass/base.scss +++ b/_sass/base.scss @@ -1,3 +1,6 @@ +@use "sass:color"; +@use "variables" as *; + /* * Emerald is a simple blog theme built for Jekyll. */ @@ -16,30 +19,6 @@ html, body, h1, h2, h3, h4, h5, h6, p, ul, ol, li, img { border: 0; } -$baseline-height: 2rem; - -/*- Base color -*/ - -$main-color: #141845; -$background-color: #FDFDFD; -$text-color: #222222; - -$link-color: $main-color; - -$theme-color: $main-color; - -// Dark theme (not used) -$main-color-dark: #FDFDFD; -$background-color-dark: #141845; -$text-color-dark: #FDFDFD; - - -// Addition colors -$light-grey: #CBD6E2; -$disabled-color: rgba(103, 113, 144, 1.0); -$background-color2: #F5F8FA; -$dark-grey: #33475b; - /*- Base settings -*/ html { @@ -58,7 +37,7 @@ a { font-weight: 700; &:hover, &:focus { - color: darken($link-color, 5%); + color: color.adjust($link-color, $lightness: -5%); } } diff --git a/_sass/custom.scss b/_sass/custom.scss index 4d6133a6..2ef11135 100644 --- a/_sass/custom.scss +++ b/_sass/custom.scss @@ -1,10 +1,11 @@ +@use "sass:color"; +@use "variables" as *; + /*- Custom style -*/ /*- colors -*/ -@import "variables"; - /*- formatting -*/ %colored-links { @@ -14,7 +15,7 @@ font-weight: 700; &:hover, &:focus { - color: darken($link-color, 5%); + color: color.adjust($link-color, $lightness: -5%); } } } @@ -28,7 +29,7 @@ width: 5rem; height: 1px; margin: 23px auto; - background-color: lighten($text-color, 70%); + background-color: color.adjust($text-color, $lightness: 70%); } ul, ol { diff --git a/_sass/layout.scss b/_sass/layout.scss index 80423588..e7886180 100644 --- a/_sass/layout.scss +++ b/_sass/layout.scss @@ -1,3 +1,7 @@ +@use "sass:color"; +@use "variables" as *; +@use "mixin" as *; + /* -- General Layout -- */ /* Required for footer to stick to the bottom */ @@ -18,7 +22,7 @@ html, body { font-size: 1em; } &:hover { - background-color: lighten($main-color, 5%); + background-color: color.adjust($main-color, $lightness: 5%); } } span { @@ -68,7 +72,7 @@ html, body { #menu { height: 4px; width: 1.5em; - background-color: lighten($text-color, 35%); + background-color: color.adjust($text-color, $lightness: 35%); margin-top: 8px; &:after, &:before { content: ""; @@ -76,7 +80,7 @@ html, body { position: relative; height: 4px; width: 1.5em; - background-color: lighten($text-color, 35%); + background-color: color.adjust($text-color, $lightness: 35%); transition: all 0.3s ease-in; } &:before { @@ -202,7 +206,7 @@ html, body { width: 5rem; height: 1px; margin: 23px auto; - background-color: lighten($text-color, 70%); + background-color: color.adjust($text-color, $lightness: 70%); } } @@ -233,13 +237,12 @@ html, body { width: 5rem; height: 1px; margin: 23px auto; - background-color: lighten($text-color, 70%); + background-color: color.adjust($text-color, $lightness: 70%); } .by-line { display: block; - color: lighten($text-color, 25%); - line-height: 1.5em; /* 24px/16px */ + color: color.adjust($text-color, $lightness: 25%); margin-bottom: 1.5em; /* 24px/16px */ font-weight: 200; @@ -265,7 +268,7 @@ img { } code { - color: lighten($text-color, 35%); + color: color.adjust($text-color, $lightness: 35%); } /* Pages */ @@ -280,15 +283,15 @@ code { text-align: center; margin: 2.666668em; span { - background-color: darken($background-color, 5%); + background-color: color.adjust($background-color, $lightness: -5%); color: $text-color; } a:hover, a:visited, a:focus, a:active { - background-color: lighten($main-color, 5%); - color: darken($background-color, 20%); + background-color: color.adjust($main-color, $lightness: 5%); + color: color.adjust($background-color, $lightness: -20%); } } .page-item { @@ -331,7 +334,7 @@ footer { font-weight: 500; &:hover, &:focus { - color: darken($background-color, 20%); + color: color.adjust($background-color, $lightness: -20%); } } } @@ -391,7 +394,7 @@ footer { width: 5rem; height: 1px; margin: 23px auto; - background-color: lighten($text-color, 70%); + background-color: color.adjust($text-color, $lightness: 70%); } } @@ -431,7 +434,7 @@ footer { width: 5rem; height: 1px; margin: 23px auto; - background-color: lighten($text-color, 70%); + background-color: color.adjust($text-color, $lightness: 70%); } h3 { @@ -454,7 +457,7 @@ footer { .hs_email { label { - color: lighten($text-color, 25%); + color: color.adjust($text-color, $lightness: 25%); line-height: 1.5em; font-weight: 200; } diff --git a/_sass/mixin.scss b/_sass/mixin.scss index 339cfdd6..63fb741a 100644 --- a/_sass/mixin.scss +++ b/_sass/mixin.scss @@ -1,3 +1,5 @@ +@use "variables" as *; + // -- Mixins -- // // Nav menu diff --git a/_sass/modules/_newsletter.scss b/_sass/modules/_newsletter.scss index 4d94515f..f6ab4ed0 100644 --- a/_sass/modules/_newsletter.scss +++ b/_sass/modules/_newsletter.scss @@ -1,3 +1,5 @@ +@use "../mixin" as *; + .newsletter { @include setFeatured(newsletter); } diff --git a/_sass/modules/_submit_pr.scss b/_sass/modules/_submit_pr.scss index 8a5bd20a..433b34fb 100644 --- a/_sass/modules/_submit_pr.scss +++ b/_sass/modules/_submit_pr.scss @@ -1,3 +1,5 @@ +@use "../mixin" as *; + .submit-pr { @include setFeatured(submit-pr); } diff --git a/_sass/modules/_toc.scss b/_sass/modules/_toc.scss index 045b8828..aa902b8a 100644 --- a/_sass/modules/_toc.scss +++ b/_sass/modules/_toc.scss @@ -1,3 +1,5 @@ +@use "../variables" as *; + #table-of-contents { padding-bottom: 0; margin: 0; diff --git a/_sass/tag.scss b/_sass/tag.scss index 50ab3c62..b2efe822 100644 --- a/_sass/tag.scss +++ b/_sass/tag.scss @@ -1,3 +1,5 @@ +@use "variables" as *; + .post-tag { display: inline-block; background: rgba($theme-color, 0.15); diff --git a/_sass/typography.scss b/_sass/typography.scss index bfbddaa7..3b27d211 100644 --- a/_sass/typography.scss +++ b/_sass/typography.scss @@ -1,3 +1,6 @@ +@use "sass:color"; +@use "variables" as *; + /*- Typography -*/ // // Based on the typographic scale: 12, 14, 16, 18, 21, 24, 36, 48, 60, 72. @@ -102,7 +105,7 @@ blockquote { -moz-border-radius: 4px; -ms-border-radius: 4px; border-radius: 4px; - background-color: darken($background-color, 5%); + background-color: color.adjust($background-color, $lightness: -5%); padding: 0 1.5em; /* 24px/18px */ p, ul, ol { padding: 1.5em 0; /* 24px/18px */ diff --git a/css/main.scss b/css/main.scss index 621c34f1..b33c5703 100644 --- a/css/main.scss +++ b/css/main.scss @@ -2,9 +2,14 @@ # Front matter comment to ensure Jekyll properly reads file. --- -//Import -@import "base", "mixin", "typography", "tag", "layout", "syntax.scss", "custom.scss"; -@import "modules/toc"; -@import "modules/newsletter"; -@import "modules/submit_pr"; -@import "modules/dark-mode"; +@use "base"; +@use "mixin"; +@use "typography"; +@use "tag"; +@use "layout"; +@use "syntax"; +@use "custom"; +@use "modules/toc"; +@use "modules/newsletter"; +@use "modules/submit_pr"; +@use "modules/dark-mode"; diff --git a/readme.md b/readme.md index ee26cc46..6a16081e 100644 --- a/readme.md +++ b/readme.md @@ -43,7 +43,7 @@ You can now access the server at [http://0.0.0.0:4000](http://0.0.0.0:4000) You'll need: - Python 3.8 or later -- Ruby 3.2.2 +- Ruby 3.3.8 Optionally, to run the linters, you'll need `yarn` (easy way is via [`volta`](https://volta.sh/)). diff --git a/requirements.txt b/requirements.txt index aec3ba91..f9f8b4c3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ # Install a newer version of blockdiag, that's compatible with modern pillow git+https://github.com/blockdiag/blockdiag.git@refs/pull/179/head -Pillow==10.3.0 +Pillow==12.2.0 funcparserlib==1.0.0a0