diff --git a/.ruby-version b/.ruby-version
index 2714f5313a..2aa5131992 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-2.6.4
+3.4.7
diff --git a/.travis.yml b/.travis.yml
index 575d6102bf..729a2c7fe0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,7 @@
-dist: xenial
+dist: jammy
language: ruby
rvm:
- - "2.6.4"
+ - "3.4"
cache: bundler
@@ -14,4 +14,5 @@ env:
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer
before_install:
- - sudo apt install optipng
+ - sudo apt-get update
+ - sudo apt-get install -y optipng
diff --git a/Dockerfile b/Dockerfile
index 044a771cf5..796298add9 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
# Use an official Ruby runtime as a parent image
-FROM ruby:2.6.4
+FROM ruby:3.4.7
# Install program to configure locales
RUN apt-get update && \
diff --git a/Gemfile b/Gemfile
index de133667b9..c7076c5540 100644
--- a/Gemfile
+++ b/Gemfile
@@ -3,11 +3,12 @@ source 'https://rubygems.org'
## If you update the version here, also update it in .travis.yml, .ruby-version,
## and README.md. Then push your branch and make sure Travis supports that
## version.
-ruby '2.6.4'
+ruby '~> 3.4.0'
## If you add a new Gem below, run `bundle install` to install it.
group :development do
gem 'jekyll'
+ gem 'logger' # Required by Jekyll, will be removed from default gems in Ruby 3.5
gem "minima", "~> 2.0" ## Default Jekyll theme
gem 'jekyll-redirect-from'
end
diff --git a/Gemfile.lock b/Gemfile.lock
index c501d4adea..1789e765ba 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,98 +1,158 @@
GEM
remote: https://rubygems.org/
specs:
- addressable (2.7.0)
- public_suffix (>= 2.0.2, < 5.0)
+ Ascii85 (2.0.1)
+ addressable (2.8.8)
+ public_suffix (>= 2.0.2, < 8.0)
+ afm (1.0.0)
+ async (2.35.0)
+ console (~> 1.29)
+ fiber-annotation
+ io-event (~> 1.11)
+ metrics (~> 0.12)
+ traces (~> 0.18)
+ base64 (0.3.0)
+ benchmark (0.5.0)
+ bigdecimal (3.3.1)
+ chef-utils (18.8.54)
+ concurrent-ruby
colorator (1.1.0)
- concurrent-ruby (1.1.5)
- em-websocket (0.5.1)
+ concurrent-ruby (1.3.5)
+ console (1.34.2)
+ fiber-annotation
+ fiber-local (~> 1.1)
+ json
+ csv (3.3.5)
+ em-websocket (0.5.3)
eventmachine (>= 0.12.9)
- http_parser.rb (~> 0.6.0)
- ethon (0.12.0)
- ffi (>= 1.3.0)
+ http_parser.rb (~> 0)
+ ethon (0.15.0)
+ ffi (>= 1.15.0)
eventmachine (1.2.7)
- ffi (1.11.3)
+ ffi (1.17.2)
+ fiber-annotation (0.2.0)
+ fiber-local (1.1.0)
+ fiber-storage
+ fiber-storage (1.0.1)
forwardable-extended (2.6.0)
- html-proofer (3.15.0)
+ google-protobuf (4.33.1)
+ bigdecimal
+ rake (>= 13)
+ hashery (2.1.2)
+ html-proofer (5.1.1)
addressable (~> 2.3)
- mercenary (~> 0.3)
- nokogumbo (~> 2.0)
- parallel (~> 1.3)
+ async (~> 2.1)
+ benchmark (~> 0.5)
+ nokogiri (~> 1.13)
+ pdf-reader (~> 2.11)
rainbow (~> 3.0)
typhoeus (~> 1.3)
yell (~> 2.0)
- http_parser.rb (0.6.0)
- i18n (0.9.5)
+ zeitwerk (~> 2.5)
+ http_parser.rb (0.8.0)
+ i18n (1.14.7)
concurrent-ruby (~> 1.0)
- jekyll (3.8.3)
+ io-event (1.14.2)
+ jekyll (4.4.1)
addressable (~> 2.4)
+ base64 (~> 0.2)
colorator (~> 1.0)
+ csv (~> 3.0)
em-websocket (~> 0.5)
- i18n (~> 0.7)
- jekyll-sass-converter (~> 1.0)
+ i18n (~> 1.0)
+ jekyll-sass-converter (>= 2.0, < 4.0)
jekyll-watch (~> 2.0)
- kramdown (~> 1.14)
+ json (~> 2.6)
+ kramdown (~> 2.3, >= 2.3.1)
+ kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
- mercenary (~> 0.3.3)
+ mercenary (~> 0.3, >= 0.3.6)
pathutil (~> 0.9)
- rouge (>= 1.7, < 4)
+ rouge (>= 3.0, < 5.0)
safe_yaml (~> 1.0)
- jekyll-feed (0.10.0)
- jekyll (~> 3.3)
+ terminal-table (>= 1.8, < 4.0)
+ webrick (~> 1.7)
+ jekyll-feed (0.17.0)
+ jekyll (>= 3.7, < 5.0)
jekyll-redirect-from (0.16.0)
jekyll (>= 3.3, < 5.0)
- jekyll-sass-converter (1.5.2)
- sass (~> 3.4)
- jekyll-seo-tag (2.4.0)
- jekyll (~> 3.3)
- jekyll-watch (2.0.0)
+ 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-schema (2.8.1)
- addressable (>= 2.4)
- kramdown (1.17.0)
- liquid (4.0.0)
- listen (3.1.1)
- rb-fsevent (>= 0.9.3)
- rb-inotify (>= 0.9.7)
- mdl (0.6.0)
- kramdown (~> 1.12, >= 1.12.0)
- mixlib-cli (~> 2.1, >= 2.1.1)
- mixlib-config (~> 2.2, >= 2.2.1)
- mercenary (0.3.6)
- mini_portile2 (2.4.0)
- minima (2.5.0)
- jekyll (~> 3.5)
+ json (2.16.0)
+ json-schema (6.0.0)
+ addressable (~> 2.8)
+ bigdecimal (~> 3.1)
+ kramdown (2.5.1)
+ rexml (>= 3.3.9)
+ kramdown-parser-gfm (1.1.0)
+ kramdown (~> 2.0)
+ liquid (4.0.4)
+ listen (3.9.0)
+ rb-fsevent (~> 0.10, >= 0.10.3)
+ rb-inotify (~> 0.9, >= 0.9.10)
+ logger (1.7.0)
+ mdl (0.15.0)
+ kramdown (~> 2.3)
+ kramdown-parser-gfm (~> 1.1)
+ mixlib-cli
+ mixlib-config
+ mixlib-shellout
+ mercenary (0.4.0)
+ metrics (0.15.0)
+ mini_portile2 (2.8.9)
+ minima (2.5.2)
+ jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
- mixlib-cli (2.1.1)
- mixlib-config (2.2.18)
+ mixlib-cli (2.1.8)
+ mixlib-config (3.0.27)
tomlrb
- nokogiri (1.10.7)
- mini_portile2 (~> 2.4.0)
- nokogumbo (2.0.2)
- nokogiri (~> 1.8, >= 1.8.4)
- parallel (1.19.1)
- parslet (1.8.2)
- pathutil (0.16.1)
+ mixlib-shellout (3.3.9)
+ chef-utils
+ nokogiri (1.18.10)
+ mini_portile2 (~> 2.8.2)
+ racc (~> 1.4)
+ parslet (2.0.0)
+ pathutil (0.16.2)
forwardable-extended (~> 2.6)
- public_suffix (4.0.1)
- rainbow (3.0.0)
- rb-fsevent (0.10.3)
- rb-inotify (0.9.10)
- ffi (>= 0.5.0, < 2)
- rouge (3.1.1)
- safe_yaml (1.0.4)
- sass (3.5.6)
- sass-listen (~> 4.0.0)
- sass-listen (4.0.0)
- rb-fsevent (~> 0.9, >= 0.9.4)
- rb-inotify (~> 0.9, >= 0.9.7)
- toml (0.2.0)
- parslet (~> 1.8.0)
- tomlrb (1.2.9)
- typhoeus (1.3.1)
- ethon (>= 0.9.0)
- yell (2.2.0)
+ pdf-reader (2.15.0)
+ Ascii85 (>= 1.0, < 3.0, != 2.0.0)
+ afm (>= 0.2.1, < 2)
+ hashery (~> 2.0)
+ ruby-rc4
+ ttfunk
+ public_suffix (7.0.0)
+ racc (1.8.1)
+ rainbow (3.1.1)
+ rake (13.3.1)
+ rb-fsevent (0.11.2)
+ rb-inotify (0.11.1)
+ ffi (~> 1.0)
+ rexml (3.4.4)
+ rouge (4.6.1)
+ ruby-rc4 (0.1.5)
+ safe_yaml (1.0.5)
+ sass-embedded (1.94.2)
+ google-protobuf (~> 4.31)
+ rake (>= 13)
+ terminal-table (3.0.2)
+ unicode-display_width (>= 1.1.1, < 3)
+ toml (0.3.0)
+ parslet (>= 1.8.0, < 3.0.0)
+ tomlrb (2.0.3)
+ traces (0.18.2)
+ ttfunk (1.8.0)
+ bigdecimal (~> 3.1)
+ typhoeus (1.5.0)
+ ethon (>= 0.9.0, < 0.16.0)
+ unicode-display_width (2.6.0)
+ webrick (1.9.2)
+ yell (2.2.2)
+ zeitwerk (2.7.3)
PLATFORMS
ruby
@@ -102,9 +162,10 @@ DEPENDENCIES
jekyll
jekyll-redirect-from
json-schema
+ logger
mdl
minima (~> 2.0)
toml
RUBY VERSION
- ruby 2.6.4p104
+ ruby 3.4.7p58
diff --git a/Makefile b/Makefile
index 90bbbb48d8..06d0922c71 100644
--- a/Makefile
+++ b/Makefile
@@ -25,7 +25,9 @@ preview:
_site/*/topics/categories/index.html \
_site/*/topics/dates/index.html \
_site/*/topics/index.html
- bundle exec jekyll serve --host 0.0.0.0 $(JEKYLL_FLAGS)
+ ## Build with dev config (for correct redirect URLs), then serve
+ bundle exec jekyll build --config _config.yml,_config_dev.yml $(JEKYLL_FLAGS) && \
+ bundle exec jekyll serve --host 0.0.0.0 --skip-initial-build $(JEKYLL_FLAGS)
build:
@# Tiny sleep for when running concurrently to ensure output
@@ -109,7 +111,7 @@ test-after-build: build
done | grep .
## Check for broken links
- bundle exec htmlproofer --check-html --disable-external --url-ignore '/^\/bin/.*/' ./_site
+ bundle exec htmlproofer --disable-external --no-enforce-https --ignore-urls '/^\/bin/.*/' ./_site
## Tests to run last because they identify problems that may not be fixable during initial commit review.
## However, these should not be still failing when the site goes to production
diff --git a/README.md b/README.md
index e83bb61863..5b0dd32aae 100644
--- a/README.md
+++ b/README.md
@@ -61,17 +61,17 @@ following command:
**Install Ruby**
-To install Ruby 2.6.4, simply run this command:
+To install Ruby 3.4, simply run this command:
- rvm install 2.6.4
+ rvm install 3.4
Sometimes this will find a pre-compiled Ruby package for your Linux
distribution, but sometimes it will need to compile Ruby from scratch
(which takes about 15 minutes).
-After Ruby 2.6.4 is installed, make it your default Ruby:
+After Ruby 3.4 is installed, make it your default Ruby:
- rvm alias create default ruby-2.6.4
+ rvm alias create default ruby-3.4
And tell your system to use it:
diff --git a/_config.yml b/_config.yml
index 3ce8a22284..b4bd14c953 100644
--- a/_config.yml
+++ b/_config.yml
@@ -33,6 +33,13 @@ author: "Bitcoin Optech" ## Default author name for blog posts
# Build settings
markdown: kramdown
theme: minima
+sass:
+ # quiet_deps silences warnings from dependencies loaded via sass_dir
+ quiet_deps: true
+ # Silence @import deprecation warnings - migration to @use/@forward requires
+ # significant refactoring of minima theme. Track: https://sass-lang.com/d/import
+ silence_deprecations:
+ - import
plugins:
- jekyll-feed
- jekyll-redirect-from
diff --git a/_config_dev.yml b/_config_dev.yml
new file mode 100644
index 0000000000..445c2a2509
--- /dev/null
+++ b/_config_dev.yml
@@ -0,0 +1,3 @@
+# Development overrides - used by `make preview`
+# Ensures redirects work correctly when serving via Docker
+url: "http://localhost:4000"
diff --git a/_contrib/schema-validator.rb b/_contrib/schema-validator.rb
index 51a6bbbf54..91b1344844 100755
--- a/_contrib/schema-validator.rb
+++ b/_contrib/schema-validator.rb
@@ -19,12 +19,12 @@
to_validate = ARGV[1]
file = File.open(schema_file, 'r')
-schema = YAML.load(file)
+schema = YAML.load(file, aliases: true, permitted_classes: [Date])
file.close()
file = File.open(to_validate, 'r')
if to_validate.end_with?(".yaml") or to_validate.end_with?(".md")
- document = YAML.load(file)
+ document = YAML.load(file, aliases: true, permitted_classes: [Date])
elsif to_validate.end_with?(".toml")
document = TOML.load_file(file)
else
diff --git a/_includes/functions/podcast-note.md b/_includes/functions/podcast-note.md
index 47e1e5d6eb..29c2714ccc 100644
--- a/_includes/functions/podcast-note.md
+++ b/_includes/functions/podcast-note.md
@@ -1,4 +1,4 @@
-({{include.timestamp}})
+({{include.timestamp}})
{% if include.reference %}
{% endif %}
diff --git a/_posts/en/newsletters/2018-11-06-newsletter.md b/_posts/en/newsletters/2018-11-06-newsletter.md
index cdeaa65018..c2063271f2 100644
--- a/_posts/en/newsletters/2018-11-06-newsletter.md
+++ b/_posts/en/newsletters/2018-11-06-newsletter.md
@@ -154,7 +154,7 @@ repo].*
[bech32 patch]: https://github.com/sipa/bech32/commit/2b0aac650ce560fb2b2a2bebeacaa5c87d7e5938
[Bitcoin Core 0.17.0.1]: https://bitcoincore.org/en/releases/0.17.0.1/
[bech32 overflow blog]: https://blog.trezor.io/details-about-the-security-updates-in-trezor-one-firmware-1-7-1-5c34278425d8
-[bech32 refs]: //github.com/sipa/bech32/tree/master/ref/
+[bech32 refs]: https://github.com/sipa/bech32/tree/master/ref/
[trezor-crypto]: https://github.com/trezor/trezor-crypto/
[cashaddr patch]: https://github.com/trezor/trezor-crypto/commit/2bbbc3e15573294c6dd0273d2a8542ba42507eb0
[ln bolt11 ss]: https://gnusha.org/url/https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-November/001489.html
diff --git a/_posts/en/newsletters/2020-04-08-newsletter.md b/_posts/en/newsletters/2020-04-08-newsletter.md
index 6f051dcfa8..d55da7b06f 100644
--- a/_posts/en/newsletters/2020-04-08-newsletter.md
+++ b/_posts/en/newsletters/2020-04-08-newsletter.md
@@ -257,7 +257,7 @@ hidden service if enabled at [the command line][watchtower tor].
[uSEkaCIO email]: https://gnusha.org/url/https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-November/002316.html
[jonasnick otves]: https://github.com/jonasnick/secp256k1/pull/14/
[nkohen otves]: https://github.com/bitcoin-s/bitcoin-s/pull/1302
-[lnd psbt]: //github.com/lightningnetwork/lnd/blob/master/docs/psbt.md
+[lnd psbt]: https://github.com/lightningnetwork/lnd/blob/master/docs/psbt.md
[review club 18238]: https://bitcoincore.reviews/18238.html
[wtxid transaction relay]: https://bitcoincore.reviews/18044
[watchtower tor]: https://github.com/lightningnetwork/lnd/blob/master/docs/watchtower.md#tor-hidden-services
diff --git a/_posts/zh/newsletters/2018-11-06-newsletter.md b/_posts/zh/newsletters/2018-11-06-newsletter.md
index 9252733493..0675a40e7c 100644
--- a/_posts/zh/newsletters/2018-11-06-newsletter.md
+++ b/_posts/zh/newsletters/2018-11-06-newsletter.md
@@ -75,7 +75,7 @@ lang: zh
[bech32 patch]: https://github.com/sipa/bech32/commit/2b0aac650ce560fb2b2a2bebeacaa5c87d7e5938
[Bitcoin Core 0.17.0.1]: https://bitcoincore.org/en/releases/0.17.0.1/
[bech32 overflow blog]: https://blog.trezor.io/details-about-the-security-updates-in-trezor-one-firmware-1-7-1-5c34278425d8
-[bech32 refs]: //github.com/sipa/bech32/tree/master/ref/
+[bech32 refs]: https://github.com/sipa/bech32/tree/master/ref/
[trezor-crypto]: https://github.com/trezor/trezor-crypto/
[cashaddr patch]: https://github.com/trezor/trezor-crypto/commit/2bbbc3e15573294c6dd0273d2a8542ba42507eb0
[ln bolt11 ss]: https://gnusha.org/url/https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-November/001489.html
\ No newline at end of file
diff --git a/_posts/zh/newsletters/2020-04-08-newsletter.md b/_posts/zh/newsletters/2020-04-08-newsletter.md
index 933957fba7..fb5a289556 100644
--- a/_posts/zh/newsletters/2020-04-08-newsletter.md
+++ b/_posts/zh/newsletters/2020-04-08-newsletter.md
@@ -121,7 +121,7 @@ _在本节中,我们总结了一次最近的 Bitcoin Core PR 审查俱乐部
[uSEkaCIO email]: https://gnusha.org/url/https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-November/002316.html
[jonasnick otves]: https://github.com/jonasnick/secp256k1/pull/14/
[nkohen otves]: https://github.com/bitcoin-s/bitcoin-s/pull/1302
-[lnd psbt]: //github.com/lightningnetwork/lnd/blob/master/docs/psbt.md
+[lnd psbt]: https://github.com/lightningnetwork/lnd/blob/master/docs/psbt.md
[review club 18238]: https://bitcoincore.reviews/18238.html
[wtxid transaction relay]: https://bitcoincore.reviews/18044
[watchtower tor]: https://github.com/lightningnetwork/lnd/blob/master/docs/watchtower.md#tor-hidden-services
diff --git a/_sass/vendor/font-awesome/_fixed-width.scss b/_sass/vendor/font-awesome/_fixed-width.scss
index b221c98133..7102bbac0c 100644
--- a/_sass/vendor/font-awesome/_fixed-width.scss
+++ b/_sass/vendor/font-awesome/_fixed-width.scss
@@ -1,6 +1,6 @@
// Fixed Width Icons
// -------------------------
.#{$fa-css-prefix}-fw {
- width: (18em / 14);
+ width: calc(18em / 14);
text-align: center;
}
diff --git a/_sass/vendor/font-awesome/_larger.scss b/_sass/vendor/font-awesome/_larger.scss
index 41e9a8184a..d76b24067a 100644
--- a/_sass/vendor/font-awesome/_larger.scss
+++ b/_sass/vendor/font-awesome/_larger.scss
@@ -3,8 +3,8 @@
/* makes the font 33% larger relative to the icon container */
.#{$fa-css-prefix}-lg {
- font-size: (4em / 3);
- line-height: (3em / 4);
+ font-size: calc(4em / 3);
+ line-height: calc(3em / 4);
vertical-align: -15%;
}
.#{$fa-css-prefix}-2x { font-size: 2em; }
diff --git a/_sass/vendor/font-awesome/_list.scss b/_sass/vendor/font-awesome/_list.scss
index 7d1e4d54d6..fc17f7d76d 100644
--- a/_sass/vendor/font-awesome/_list.scss
+++ b/_sass/vendor/font-awesome/_list.scss
@@ -11,9 +11,9 @@
position: absolute;
left: -$fa-li-width;
width: $fa-li-width;
- top: (2em / 14);
+ top: calc(2em / 14);
text-align: center;
&.#{$fa-css-prefix}-lg {
- left: -$fa-li-width + (4em / 14);
+ left: calc(-1 * $fa-li-width + calc(4em / 14));
}
}
diff --git a/_sass/vendor/font-awesome/_variables.scss b/_sass/vendor/font-awesome/_variables.scss
index 0a471102c4..13245adb2d 100644
--- a/_sass/vendor/font-awesome/_variables.scss
+++ b/_sass/vendor/font-awesome/_variables.scss
@@ -9,7 +9,7 @@ $fa-css-prefix: fa !default;
$fa-version: "4.5.0" !default;
$fa-border-color: #eee !default;
$fa-inverse: #fff !default;
-$fa-li-width: (30em / 14) !default;
+$fa-li-width: calc(30em / 14) !default;
$fa-var-500px: "\f26e";
$fa-var-adjust: "\f042";
diff --git a/docker-compose.yml b/docker-compose.yml
index 78ed73bf57..9b44a1f15a 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,5 +1,3 @@
-version: '3'
-
services:
bitcoinops:
build: .