Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
steps:
- uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
- name: Set up Ruby
uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0
uses: ruby/setup-ruby@09a7688d3b55cf0e976497ff046b70949eeaccfd # v1.288.0
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: Run tests
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/schedule-doc-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
steps:
- uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
- name: Set up Ruby
uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0
uses: ruby/setup-ruby@09a7688d3b55cf0e976497ff046b70949eeaccfd # v1.288.0
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: Generate report
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: Set up Ruby
uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0
uses: ruby/setup-ruby@09a7688d3b55cf0e976497ff046b70949eeaccfd # v1.288.0
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: Run tests
Expand Down
2 changes: 1 addition & 1 deletion .ruby-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.4.7
3.4.8
2 changes: 1 addition & 1 deletion .tool-versions
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ruby 3.4.7
ruby 3.4.8
2 changes: 1 addition & 1 deletion COPYRIGHT
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright 2013-2025 Thibaut Courouble and other contributors
Copyright 2013-2026 Thibaut Courouble and other contributors

This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
Expand Down
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
source 'https://rubygems.org'
ruby '3.4.7'
ruby '3.4.8'

gem 'activesupport', require: false
gem 'html-pipeline'
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ DEPENDENCIES
yajl-ruby

RUBY VERSION
ruby 3.4.7p58
ruby 3.4.8p72

BUNDLED WITH
2.4.6
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ Made something cool? Feel free to open a PR to add a new row to this table! You

## Copyright / License

Copyright 2013–2025 Thibaut Courouble and [other contributors](https://github.com/freeCodeCamp/devdocs/graphs/contributors)
Copyright 2013–2026 Thibaut Courouble and [other contributors](https://github.com/freeCodeCamp/devdocs/graphs/contributors)

This software is licensed under the terms of the Mozilla Public License v2.0. See the [COPYRIGHT](./COPYRIGHT) and [LICENSE](./LICENSE) files.

Expand Down
2 changes: 1 addition & 1 deletion assets/javascripts/lib/license.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2013-2025 Thibaut Courouble and other contributors
* Copyright 2013-2026 Thibaut Courouble and other contributors
*
* This source code is licensed under the terms of the Mozilla
* Public License, v. 2.0, a copy of which may be obtained at:
Expand Down
4 changes: 4 additions & 0 deletions assets/javascripts/news.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
[
[
"2026-02-14",
"New documentation: <a href=\"/couchdb/\">CouchDB</a>"
],
[
"2025-10-19",
"New documentations: <a href=\"/lit/\">Lit</a>, <a href=\"/graphviz/\">Graphviz</a>, <a href=\"/bun/\">Bun</a>"
Expand Down
2 changes: 1 addition & 1 deletion assets/javascripts/templates/pages/about_tmpl.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ app.templates.aboutPage = function () {

<h2 class="_block-heading" id="copyright">Copyright and License</h2>
<p class="_note">
<strong>Copyright 2013&ndash;2025 Thibaut Courouble and <a href="https://github.com/freeCodeCamp/devdocs/graphs/contributors">other contributors</a></strong><br>
<strong>Copyright 2013–2026 Thibaut Courouble and <a href="https://github.com/freeCodeCamp/devdocs/graphs/contributors">other contributors</a></strong><br>
This software is licensed under the terms of the Mozilla Public License v2.0.<br>
You may obtain a copy of the source code at <a href="https://github.com/freeCodeCamp/devdocs">github.com/freeCodeCamp/devdocs</a>.<br>
For more information, see the <a href="https://github.com/freeCodeCamp/devdocs/blob/main/COPYRIGHT">COPYRIGHT</a>
Expand Down
2 changes: 1 addition & 1 deletion assets/stylesheets/application.css.scss
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
//= depend_on sprites/docs.json

/*!
* Copyright 2013-2025 Thibaut Courouble and other contributors
* Copyright 2013-2026 Thibaut Courouble and other contributors
*
* This source code is licensed under the terms of the Mozilla
* Public License, v. 2.0, a copy of which may be obtained at:
Expand Down
3 changes: 3 additions & 0 deletions assets/stylesheets/components/_environment.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
._hide-in-development {

}
32 changes: 32 additions & 0 deletions assets/stylesheets/global/_icons.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@


%svg-icon {
display: inline-block;
vertical-align: top;
width: 1rem;
height: 1rem;
pointer-events: none;
fill: currentColor;
}

%doc-icon {
content: '';
display: block;
width: 1rem;
height: 1rem;
background-image: image-url('sprites/docs.png');
background-size: 15rem 15rem;
}

@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) {
%doc-icon { background-image: image-url('sprites/docs@2x.png'); }
}

html._theme-dark {
%darkIconFix {
filter: invert(100%) grayscale(100%);
-webkit-filter: invert(100%) grayscale(100%);
}
}

._icon-angular:before { background-position: -0rem -0rem; }._icon-angularjs:before { background-position: -1rem -0rem; }._icon-ansible:before { background-position: -2rem -0rem; }._icon-apache_http_server:before { background-position: -3rem -0rem; @extend %darkIconFix !optional; }._icon-apache_pig:before { background-position: -4rem -0rem; }._icon-astro:before { background-position: -5rem -0rem; @extend %darkIconFix !optional; }._icon-async:before { background-position: -6rem -0rem; }._icon-axios:before { background-position: -7rem -0rem; }._icon-babel:before { background-position: -8rem -0rem; }._icon-backbone:before { background-position: -9rem -0rem; @extend %darkIconFix !optional; }._icon-bash:before { background-position: -10rem -0rem; }._icon-bazel:before { background-position: -11rem -0rem; }._icon-bluebird:before { background-position: -12rem -0rem; }._icon-bootstrap:before { background-position: -13rem -0rem; }._icon-bottle:before { background-position: -14rem -0rem; }._icon-bower:before { background-position: -0rem -1rem; }._icon-bun:before { background-position: -1rem -1rem; }._icon-c:before { background-position: -2rem -1rem; }._icon-cpp:before { background-position: -3rem -1rem; }._icon-cakephp:before { background-position: -4rem -1rem; }._icon-chai:before { background-position: -5rem -1rem; }._icon-chef:before { background-position: -6rem -1rem; }._icon-click:before { background-position: -7rem -1rem; @extend %darkIconFix !optional; }._icon-clojure:before { background-position: -8rem -1rem; }._icon-cmake:before { background-position: -9rem -1rem; }._icon-codeception:before { background-position: -10rem -1rem; }._icon-codeceptjs:before { background-position: -11rem -1rem; }._icon-codeigniter:before { background-position: -12rem -1rem; }._icon-coffeescript:before { background-position: -13rem -1rem; @extend %darkIconFix !optional; }._icon-composer:before { background-position: -14rem -1rem; }._icon-cordova:before { background-position: -0rem -2rem; }._icon-crystal:before { background-position: -1rem -2rem; @extend %darkIconFix !optional; }._icon-css:before { background-position: -2rem -2rem; }._icon-cypress:before { background-position: -3rem -2rem; }._icon-d:before { background-position: -4rem -2rem; }._icon-d3:before { background-position: -5rem -2rem; }._icon-dart:before { background-position: -6rem -2rem; }._icon-date_fns:before { background-position: -7rem -2rem; @extend %darkIconFix !optional; }._icon-deno:before { background-position: -8rem -2rem; }._icon-django:before { background-position: -9rem -2rem; }._icon-django_rest_framework:before { background-position: -10rem -2rem; @extend %darkIconFix !optional; }._icon-docker:before { background-position: -11rem -2rem; }._icon-dojo:before { background-position: -12rem -2rem; }._icon-drupal:before { background-position: -13rem -2rem; }._icon-duckdb:before { background-position: -14rem -2rem; }._icon-eigen3:before { background-position: -0rem -3rem; @extend %darkIconFix !optional; }._icon-electron:before { background-position: -1rem -3rem; }._icon-elisp:before { background-position: -2rem -3rem; }._icon-elixir:before { background-position: -3rem -3rem; }._icon-ember:before { background-position: -4rem -3rem; }._icon-enzyme:before { background-position: -0rem -8rem; }._icon-erlang:before { background-position: -5rem -3rem; }._icon-es_toolkit:before { background-position: -6rem -3rem; }._icon-esbuild:before { background-position: -7rem -3rem; }._icon-eslint:before { background-position: -8rem -3rem; }._icon-express:before { background-position: -9rem -3rem; }._icon-falcon:before { background-position: -10rem -3rem; }._icon-fastapi:before { background-position: -11rem -3rem; @extend %darkIconFix !optional; }._icon-fish:before { background-position: -12rem -3rem; }._icon-flask:before { background-position: -13rem -3rem; }._icon-flow:before { background-position: -14rem -3rem; }._icon-fluture:before { background-position: -0rem -4rem; }._icon-gcc:before { background-position: -1rem -4rem; }._icon-git:before { background-position: -2rem -4rem; }._icon-gnu_fortran:before { background-position: -3rem -4rem; }._icon-gnu_make:before { background-position: -4rem -4rem; @extend %darkIconFix !optional; }._icon-gnu_cobol:before { background-position: -5rem -4rem; @extend %darkIconFix !optional; }._icon-gnuplot:before { background-position: -6rem -4rem; }._icon-go:before { background-position: -7rem -4rem; }._icon-godot:before { background-position: -8rem -4rem; }._icon-graphite:before { background-position: -0rem -8rem; }._icon-graphviz:before { background-position: -9rem -4rem; @extend %darkIconFix !optional; }._icon-groovy:before { background-position: -10rem -4rem; }._icon-grunt:before { background-position: -11rem -4rem; }._icon-gtk:before { background-position: -12rem -4rem; }._icon-hammerspoon:before { background-position: -13rem -4rem; }._icon-handlebars:before { background-position: -14rem -4rem; @extend %darkIconFix !optional; }._icon-hapi:before { background-position: -0rem -5rem; }._icon-haproxy:before { background-position: -1rem -5rem; }._icon-haskell:before { background-position: -2rem -5rem; @extend %darkIconFix !optional; }._icon-haxe:before { background-position: -3rem -5rem; }._icon-homebrew:before { background-position: -4rem -5rem; }._icon-html:before { background-position: -5rem -5rem; }._icon-htmx:before { background-position: -6rem -5rem; @extend %darkIconFix !optional; }._icon-http:before { background-position: -7rem -5rem; }._icon-i3:before { background-position: -8rem -5rem; }._icon-immutable:before { background-position: -9rem -5rem; @extend %darkIconFix !optional; }._icon-influxdata:before { background-position: -10rem -5rem; @extend %darkIconFix !optional; }._icon-jasmine:before { background-position: -11rem -5rem; }._icon-javascript:before { background-position: -12rem -5rem; }._icon-jekyll:before { background-position: -13rem -5rem; }._icon-jest:before { background-position: -14rem -5rem; }._icon-jinja:before { background-position: -0rem -6rem; @extend %darkIconFix !optional; }._icon-joi:before { background-position: -1rem -6rem; @extend %darkIconFix !optional; }._icon-jq:before { background-position: -2rem -6rem; @extend %darkIconFix !optional; }._icon-jquery:before { background-position: -3rem -6rem; }._icon-jquerymobile:before { background-position: -4rem -6rem; }._icon-jqueryui:before { background-position: -5rem -6rem; }._icon-jsdoc:before { background-position: -0rem -8rem; }._icon-julia:before { background-position: -6rem -6rem; @extend %darkIconFix !optional; }._icon-knockout:before { background-position: -7rem -6rem; }._icon-koa:before { background-position: -0rem -8rem; }._icon-kotlin:before { background-position: -8rem -6rem; }._icon-kubectl:before { background-position: -9rem -6rem; @extend %darkIconFix !optional; }._icon-kubernetes:before { background-position: -10rem -6rem; }._icon-laravel:before { background-position: -11rem -6rem; }._icon-latex:before { background-position: -12rem -6rem; @extend %darkIconFix !optional; }._icon-leaflet:before { background-position: -13rem -6rem; }._icon-less:before { background-position: -14rem -6rem; }._icon-man:before { background-position: -0rem -7rem; }._icon-liquid:before { background-position: -1rem -7rem; }._icon-lit:before { background-position: -2rem -7rem; }._icon-lodash:before { background-position: -3rem -7rem; }._icon-lua:before { background-position: -4rem -7rem; @extend %darkIconFix !optional; }._icon-love:before { background-position: -5rem -7rem; }._icon-mariadb:before { background-position: -6rem -7rem; }._icon-marionette:before { background-position: -7rem -7rem; }._icon-markdown:before { background-position: -8rem -7rem; @extend %darkIconFix !optional; }._icon-matplotlib:before { background-position: -9rem -7rem; }._icon-meteor:before { background-position: -10rem -7rem; @extend %darkIconFix !optional; }._icon-mocha:before { background-position: -11rem -7rem; }._icon-modernizr:before { background-position: -12rem -7rem; }._icon-moment:before { background-position: -13rem -7rem; @extend %darkIconFix !optional; }._icon-moment_timezone:before { background-position: -14rem -7rem; }._icon-mongoose:before { background-position: -0rem -8rem; }._icon-nextjs:before { background-position: -1rem -8rem; @extend %darkIconFix !optional; }._icon-nginx:before { background-position: -2rem -8rem; }._icon-nginx_lua_module:before { background-position: -0rem -8rem; }._icon-nim:before { background-position: -3rem -8rem; @extend %darkIconFix !optional; }._icon-nix:before { background-position: -4rem -8rem; }._icon-node:before { background-position: -5rem -8rem; }._icon-nokogiri:before { background-position: -6rem -8rem; @extend %darkIconFix !optional; }._icon-npm:before { background-position: -7rem -8rem; }._icon-numpy:before { background-position: -8rem -8rem; }._icon-nushell:before { background-position: -9rem -8rem; }._icon-ocaml:before { background-position: -10rem -8rem; }._icon-octave:before { background-position: -11rem -8rem; }._icon-opengl:before { background-position: -12rem -8rem; }._icon-openjdk:before { background-position: -13rem -8rem; }._icon-openlayers:before { background-position: -14rem -8rem; }._icon-opentsdb:before { background-position: -0rem -9rem; }._icon-padrino:before { background-position: -1rem -9rem; }._icon-pandas:before { background-position: -2rem -9rem; @extend %darkIconFix !optional; }._icon-perl:before { background-position: -3rem -9rem; }._icon-phalcon:before { background-position: -4rem -9rem; }._icon-phaser:before { background-position: -5rem -9rem; }._icon-phoenix:before { background-position: -6rem -9rem; }._icon-php:before { background-position: -7rem -9rem; }._icon-phpunit:before { background-position: -8rem -9rem; }._icon-playwright:before { background-position: -9rem -9rem; }._icon-point_cloud_library:before { background-position: -10rem -9rem; }._icon-pony:before { background-position: -11rem -9rem; }._icon-postgresql:before { background-position: -12rem -9rem; }._icon-prettier:before { background-position: -13rem -9rem; @extend %darkIconFix !optional; }._icon-pug:before { background-position: -14rem -9rem; }._icon-puppeteer:before { background-position: -0rem -10rem; }._icon-pygame:before { background-position: -1rem -10rem; }._icon-python:before { background-position: -2rem -10rem; }._icon-pytorch:before { background-position: -3rem -10rem; }._icon-q:before { background-position: -4rem -10rem; }._icon-qt:before { background-position: -5rem -10rem; }._icon-qunit:before { background-position: -6rem -10rem; }._icon-r:before { background-position: -7rem -10rem; }._icon-ramda:before { background-position: -8rem -10rem; @extend %darkIconFix !optional; }._icon-react:before { background-position: -9rem -10rem; }._icon-react_bootstrap:before { background-position: -10rem -10rem; }._icon-react_native:before { background-position: -11rem -10rem; }._icon-react_router:before { background-position: -12rem -10rem; @extend %darkIconFix !optional; }._icon-reactivex:before { background-position: -13rem -10rem; }._icon-redis:before { background-position: -14rem -10rem; }._icon-redux:before { background-position: -0rem -11rem; @extend %darkIconFix !optional; }._icon-relay:before { background-position: -1rem -11rem; }._icon-requests:before { background-position: -2rem -11rem; }._icon-requirejs:before { background-position: -3rem -11rem; }._icon-rethinkdb:before { background-position: -4rem -11rem; }._icon-ruby:before { background-position: -5rem -11rem; }._icon-minitest:before { background-position: -0rem -8rem; }._icon-rails:before { background-position: -6rem -11rem; }._icon-rust:before { background-position: -7rem -11rem; @extend %darkIconFix !optional; }._icon-rxjs:before { background-position: -8rem -11rem; }._icon-saltstack:before { background-position: -9rem -11rem; @extend %darkIconFix !optional; }._icon-sanctuary:before { background-position: -10rem -11rem; }._icon-sanctuary_def:before { background-position: -11rem -11rem; }._icon-sanctuary_type_classes:before { background-position: -12rem -11rem; }._icon-sass:before { background-position: -13rem -11rem; }._icon-scala:before { background-position: -14rem -11rem; }._icon-scikit_image:before { background-position: -0rem -12rem; }._icon-scikit_learn:before { background-position: -1rem -12rem; }._icon-sequelize:before { background-position: -2rem -12rem; }._icon-sinon:before { background-position: -3rem -12rem; }._icon-socketio:before { background-position: -4rem -12rem; }._icon-spring_boot:before { background-position: -5rem -12rem; }._icon-sqlite:before { background-position: -6rem -12rem; }._icon-statsmodels:before { background-position: -7rem -12rem; }._icon-browser_support_tables:before { background-position: -0rem -8rem; }._icon-svelte:before { background-position: -8rem -12rem; }._icon-svg:before { background-position: -9rem -12rem; }._icon-symfony:before { background-position: -10rem -12rem; }._icon-tailwindcss:before { background-position: -11rem -12rem; }._icon-tcl_tk:before { background-position: -12rem -12rem; }._icon-tcllib:before { background-position: -13rem -12rem; }._icon-tensorflow:before { background-position: -14rem -12rem; }._icon-tensorflow_cpp:before { background-position: -0rem -13rem; }._icon-terraform:before { background-position: -1rem -13rem; @extend %darkIconFix !optional; }._icon-threejs:before { background-position: -2rem -13rem; @extend %darkIconFix !optional; }._icon-trio:before { background-position: -3rem -13rem; }._icon-twig:before { background-position: -4rem -13rem; }._icon-typescript:before { background-position: -5rem -13rem; }._icon-underscore:before { background-position: -6rem -13rem; @extend %darkIconFix !optional; }._icon-vagrant:before { background-position: -7rem -13rem; }._icon-varnish:before { background-position: -8rem -13rem; }._icon-vertx:before { background-position: -9rem -13rem; }._icon-vite:before { background-position: -10rem -13rem; }._icon-vitest:before { background-position: -11rem -13rem; }._icon-vue:before { background-position: -12rem -13rem; }._icon-vue_router:before { background-position: -13rem -13rem; }._icon-vueuse:before { background-position: -14rem -13rem; }._icon-vuex:before { background-position: -0rem -14rem; }._icon-vulkan:before { background-position: -1rem -14rem; @extend %darkIconFix !optional; }._icon-wagtail:before { background-position: -2rem -14rem; @extend %darkIconFix !optional; }._icon-dom:before { background-position: -3rem -14rem; }._icon-web_extensions:before { background-position: -0rem -8rem; }._icon-webpack:before { background-position: -4rem -14rem; }._icon-werkzeug:before { background-position: -5rem -14rem; }._icon-wordpress:before { background-position: -6rem -14rem; @extend %darkIconFix !optional; }._icon-xslt_xpath:before { background-position: -0rem -8rem; }._icon-yarn:before { background-position: -7rem -14rem; }._icon-yii:before { background-position: -8rem -14rem; }._icon-zig:before { background-position: -9rem -14rem; }._icon-zsh:before { background-position: -10rem -14rem; }
1 change: 1 addition & 0 deletions lib/docs/filters/axios/clean_html.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ def call
end
@doc = at_css('main > .body')
css('.links').remove
css('.sponsors_container').remove
css('pre').each do |node|
node.content = node.content
node['data-language'] = node['class'][/lang-(\w+)/, 1]
Expand Down
Loading