Skip to content

RFC: Complete redesign of mruby.org — new visual identity, Jekyll 4, automated data pipeline, and CI-driven deployment#262

Open
pusewicz wants to merge 39 commits intomruby:masterfrom
pusewicz:redesign
Open

RFC: Complete redesign of mruby.org — new visual identity, Jekyll 4, automated data pipeline, and CI-driven deployment#262
pusewicz wants to merge 39 commits intomruby:masterfrom
pusewicz:redesign

Conversation

@pusewicz
Copy link

@pusewicz pusewicz commented Mar 5, 2026

@matz This PR is a ground-up redesign and modernization of mruby.org. Every page has been visually overhauled with a custom design system (no Bootstrap), the build toolchain has been upgraded from Jekyll 3 to Jekyll 4.4.1, the github-pages gem has been dropped in favor of direct dependencies, the entire generated API documentation has been removed from the repository and is now produced at build time, and two new automated data pipelines keep release and contributor data current. Deployment has moved to an explicit GitHub Actions workflow, giving us full control over the build environment.

I know this comes out of the blue, but as a long fan of the mruby project, and someone who likes nice looking websites, I thought I could help out with mruby's pages.


Visual and Design Changes

Design System

  • Bootstrap removed. The site previously depended on Bootstrap for layout and components. It has been replaced with a purpose-built SCSS design system organized into partial files.
  • CSS custom properties are used throughout for colors, spacing, and typography, making theme-level changes a single-file edit.
  • Warm color palette built around the mruby red accent (#c0392b) on off-white and near-black neutrals.
  • Typography: Space Grotesk (headings/display) and Inter (body/UI) loaded via Google Fonts.

Pages Redesigned

Page Notable changes
Home (/) New hero with tagline, feature grid, latest news strip
Downloads (/downloads/) Dynamically driven by _data/releases.yml; always shows current stable release
Docs (/docs/) Cleaned article index; API docs linked out rather than inlined
Libraries (/libraries/) Refreshed card layout over the same mgems.yml data
About (/about/) Simplified prose layout
Team (/team/) Redesigned contributor grid; data now sourced from _data/contributors.yml

Responsive Breakpoints

Three explicit breakpoints: 1024 px (tablet landscape), 768 px (tablet portrait), 480 px (mobile). All layouts collapse gracefully at each breakpoint.


Technical Changes

Jekyll Upgrade: 3 → 4.4.1

Jekyll 4 brings faster incremental builds, improved Sass handling, and drops several long-deprecated Liquid behaviors. See the Jekyll 4 upgrade guide for breaking changes; none of them affected this site's content.

Dependency Cleanup: Dropping github-pages

The github-pages meta-gem pins every Jekyll plugin to GitHub's own deployment environment, pulling in roughly 30 transitive dependencies and freezing Jekyll at version 3. By switching to explicit, direct dependencies we:

  • Unlock Jekyll 4 and current plugin versions.
  • Reduce Gemfile.lock by ~30 gems.
  • Remove the constraint that forced us to use GitHub's legacy Pages build system.

All plugins previously provided through github-pages that we actually use (jekyll-feed, jekyll-sitemap) are now declared directly.

Bundler and Ruby

  • Bundler upgraded from 2.4 to 4.0.
  • Ruby pinned to 4.0.1 via .ruby-version. This aligns with mruby's own development focus on current Ruby.

Build and Deployment

GitHub Actions Workflow

A new workflow at .github/workflows/pages.yml replaces the legacy GitHub Pages automatic build. It:

  1. Checks out the repo with full history (fetch-depth: 0) so git log is available during generation tasks.
  2. Sets up the pinned Ruby version.
  3. Runs bundle exec rake build, which executes all gen:* tasks before jekyll build.
  4. Deploys the _site/ artifact using the official actions/deploy-pages action.

Unified Rakefile

Rakefile is the single entry point for all build automation:

Task Description
rake build Runs all gen:* tasks, then jekyll build
rake serve Runs all gen:* tasks, then jekyll serve
rake gen:mgemdata Regenerates _data/mgems.yml from mrbgems registry
rake gen:mrbdoc Clones mruby, generates YARD API docs into docs/api/
rake gen:releasedata Regenerates _data/releases.yml from GitHub API
rake gen:contributors Regenerates _data/contributors.yml from mruby AUTHORS file

Previously, several of these were standalone scripts. They are now unified tasks with consistent error handling and dependency ordering.

API Docs Removed from Git

docs/api/ contained approximately 130,000 lines of generated YARD HTML committed directly to the repository. It is now:

  • Listed in .gitignore.
  • Regenerated during rake build (and therefore during CI deployment) by the gen:mrbdoc task.

This makes the diff of every future commit dramatically smaller and ensures API docs always reflect the current mruby release rather than whatever was last manually committed.


Data Automation

_data/releases.yml — Auto-generated

Generated by rake gen:releasedata. Queries the GitHub API for mruby releases and writes structured YAML. The Downloads page consumes this data so it always reflects the latest stable release without manual updates.

_data/contributors.yml — Auto-generated

Generated by rake gen:contributors. Parses the AUTHORS file from the mruby repository. The Team page now sources its contributor list from this file instead of being manually maintained (beyond _data/team.yml for core team members with additional metadata).


Accessibility

  • Skip-to-content link added to _includes/nav.html for keyboard users.
  • ARIA landmark roles (main, nav, banner, contentinfo) applied throughout layouts.
  • :focus-visible CSS used instead of removing focus outlines, maintaining keyboard navigability without visual noise for mouse users.
  • prefers-reduced-motion media query wraps all CSS transitions and animations.

FAQ for Reviewers

Why drop the github-pages gem?

github-pages pins Jekyll to version 3 and prevents upgrading any plugin it includes. GitHub's own documentation notes that using a custom GitHub Actions workflow is the recommended modern approach and removes the gem requirement entirely. Our new pages.yml workflow gives us the same deployment target with full control over versions.

What about the API docs — will they still be available at /docs/api/?

Yes. The gen:mrbdoc rake task clones mruby, runs YARD, and writes HTML to docs/api/ before jekyll build runs. The CI workflow runs this task, so docs/api/ will be present in every deployment. The only change is that the generated files are no longer committed to git.

Why Ruby 4.0.1?

Using 4.0.1 ensures our tooling stays aligned with the project's own requirements and lets us use current gem versions without compatibility shims. The .ruby-version file pins this explicitly so all contributors and CI use the same version.

Will existing URLs break?

No. All page paths are preserved:

  • / — home
  • /downloads/ — downloads
  • /docs/ — documentation index
  • /docs/api/ — API reference (generated at build time)
  • /libraries/ — mrbgems browser
  • /about/ — about page
  • /team/ — team page
  • Blog posts at /YYYY/MM/DD/... — unchanged

What repository settings need to change after merging?

Note

This needs to be changed in order for the GitHub Action to work.

In Settings → Pages, change the source from "Deploy from a branch" to "GitHub Actions". The new workflow handles everything from there. No other settings changes are required.

How do I test locally?

See the section below.


Testing Locally

# 1. Install dependencies (requires Ruby 4.0.1 and Bundler 4.0)
bundle install

# 2. Generate data files (releases, contributors, mrbgems)
bundle exec rake gen:releasedata
bundle exec rake gen:contributors
bundle exec rake gen:mgemdata

# 3. Generate API docs (clones mruby; takes a minute on first run)
bundle exec rake gen:mrbdoc

# 4. Serve with live reload
bundle exec rake serve
# Site available at http://localhost:4000

# Or build once:
bundle exec rake build
# Output in _site/

To skip API doc generation (faster iteration):

bundle exec jekyll serve --livereload

Files Changed — High-Level Summary

Category Change
_sass/ New — 14 SCSS partials replacing Bootstrap
_layouts/ Rewritten — default.html, post.html
_includes/ Rewritten — header.html, footer.html, navigation.html
*.html / *.md pages Redesigned markup for all top-level pages
Gemfile / Gemfile.lock Jekyll 4.4.1, dropped github-pages, added direct deps
.ruby-version Pinned to 4.0.1
Rakefile Unified build/gen task runner
.github/workflows/pages.yml New CI/CD deployment workflow
_data/releases.yml Now auto-generated
_data/contributors.yml New — auto-generated from mruby AUTHORS
docs/api/ Removed from git (~130K lines); generated at build time
.gitignore Updated to exclude docs/api/ and build artifacts

Screenshots

Home Page

screenshot-home

Downloads

screenshot-downloads

Documentation

screenshot-docs

Libraries

screenshot-libraries-top

About

screenshot-about

Team

screenshot-team

Articles

screenshot-article-top
screenshot-post-3 4 0-top

PS. Claude Code was very helpful getting this done quickly.

@pusewicz pusewicz requested a review from matz as a code owner March 5, 2026 22:23
Copilot AI review requested due to automatic review settings March 5, 2026 22:23
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR modernizes mruby.org with a full visual redesign, a new SCSS-based design system, and an automated build/deploy pipeline that generates site data (releases, contributors, mgems, API docs) at build time and deploys via GitHub Actions.

Changes:

  • Replaced Bootstrap-era markup/styles with a new SCSS design system and updated layouts/includes.
  • Removed committed generated API docs and introduced Rake tasks to regenerate docs + data during builds.
  • Added GitHub Actions Pages workflow and updated Ruby/Jekyll-related project plumbing (Gemfile, .ruby-version, README).

Reviewed changes

Copilot reviewed 50 out of 173 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
docs/api/FileTest.html Removes committed generated YARD API HTML (now generated at build time).
docs/api/File/Constants.html Removes committed generated YARD API HTML (now generated at build time).
docs/api/Fiber.html Removes committed generated YARD API HTML (now generated at build time).
docs/api/FalseClass.html Removes committed generated YARD API HTML (now generated at build time).
docs/api/Exception.html Removes committed generated YARD API HTML (now generated at build time).
docs/api/Enumerator/Yielder.html Removes committed generated YARD API HTML (now generated at build time).
docs/api/Enumerator/Generator.html Removes committed generated YARD API HTML (now generated at build time).
docs/api/Enumerator/Chain.html Removes committed generated YARD API HTML (now generated at build time).
docs/api/EOFError.html Removes committed generated YARD API HTML (now generated at build time).
docs/api/Comparable.html Removes committed generated YARD API HTML (now generated at build time).
docs/api/ArgumentError.html Removes committed generated YARD API HTML (now generated at build time).
assets/css/main.scss Adds the new SCSS entrypoint using @use partials.
assets/css/main.css Removes old committed CSS (now built from SCSS).
about/index.html Rewrites About page markup to match new design system and new content sections.
_sass/_variables.scss Introduces CSS custom properties (colors, spacing, typography) and responsive tokens.
_sass/_team.scss Adds styles for redesigned Team page components.
_sass/_reset.scss Adds a baseline reset and reduced-motion handling for the new UI.
_sass/_page-header.scss Adds a unified page header component with responsive variants.
_sass/_navigation.scss Adds redesigned nav + skip link + mobile menu styles.
_sass/_libraries.scss Adds redesigned Libraries page layout and searchable card styles.
_sass/_latest-news.scss Adds redesigned “Latest News” strip styles.
_sass/_inline-code.scss Adds inline-code styling used across pages.
_sass/_footer.scss Adds redesigned footer styles.
_sass/_downloads.scss Adds redesigned Downloads page layout/styles.
_sass/_documentation.scss Adds redesigned Docs index layout/styles.
_sass/_buttons.scss Adds new button component styles.
_sass/_article.scss Adds new article layout styles including TOC styling.
_sass/_about.scss Adds About page section/layout styles.
_layouts/post.html Replaces legacy post layout with new header/article/TOC + mobile nav JS.
_layouts/default.html Replaces legacy default layout with new includes + mobile nav JS.
_includes/navigation.html Removes old Bootstrap-based navigation include.
_includes/nav.html Adds new accessible navigation with skip link and mobile menu markup.
_includes/header.html Removes old header include that pulled Bootstrap/CDN JS and legacy CSS.
_includes/head.html Adds new head include (fonts, main stylesheet, feeds, meta).
_includes/footer.html Replaces legacy footer markup with new footer component.
_includes/_latest_news.html Removes legacy latest-news include (new section/styles elsewhere).
_data/releases.yml Adds auto-generated releases data consumed by the site.
_data/mgems.yml Updates mgems data set (generated) used by Libraries page.
_data/contributors.yml Adds auto-generated contributors data used by Team page.
Rakefile Adds unified generation tasks + build entrypoint for CI and local builds.
README.md Updates local dev/build/deploy documentation to match the new pipeline.
Gemfile Drops github-pages and declares direct dependencies for Jekyll/plugins + generators.
.ruby-version Pins Ruby version for consistent local/CI builds.
.github/workflows/pages.yml Adds explicit GitHub Actions workflow to build and deploy Pages.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +11 to +15
{% assign first_cat = page.categories | first %}
{% if first_cat.size > 1 %}
{% assign display_cat = first_cat | capitalize %}
{% elsif page.categories %}
{% assign display_cat = page.categories | capitalize %}
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

first_catcan benilwhenpage.categoriesis empty, which can makefirst_cat.sizethrow during Liquid rendering. Also,page.categories | capitalizeappliescapitalizeto an array (likely producing unintended output). Consider using a nil-safe approach like: only computedisplay_catwhenpage.categoriesis present and non-empty, and thenassign display_cat = page.categories | first | capitalize` (or join categories explicitly if you intend to show more than one).

Suggested change
{% assign first_cat = page.categories | first %}
{% if first_cat.size > 1 %}
{% assign display_cat = first_cat | capitalize %}
{% elsif page.categories %}
{% assign display_cat = page.categories | capitalize %}
{% assign display_cat = nil %}
{% if page.categories and page.categories.size > 0 %}
{% assign first_cat = page.categories | first %}
{% if first_cat %}
{% assign display_cat = first_cat | capitalize %}
{% endif %}

Copilot uses AI. Check for mistakes.
end

desc 'Serve the Jekyll site locally with live reload'
task :serve do
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR description/README indicate rake serve runs the gen:* tasks before serving, but the current :serve task does not. This can lead to confusing local behavior (stale/missing _data/*.yml and missing docs/api/). Either make :serve depend on the appropriate gen:* tasks (optionally gating the expensive gen:mrbdoc behind an env flag), or update the documentation to reflect that users must run generation tasks separately.

Suggested change
task :serve do
task :serve do
Rake::Task['gen:mgemdata'].invoke
Rake::Task['gen:contributors'].invoke
Rake::Task['gen:releasedata'].invoke
Rake::Task['gen:mrbdoc'].invoke unless ENV['SKIP_MRBDOC']

Copilot uses AI. Check for mistakes.
end

# Copy generated docs into our docs/api/ directory
dest = File.join(__dir__, 'docs', 'api')
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copying into an existing docs/api/ directory without clearing it can leave stale files behind on repeated local builds (files removed upstream won’t be removed locally). Consider removing dest before copying, or replacing the copy step with a “sync” approach so the output directory always exactly matches the newly generated docs.

Suggested change
dest = File.join(__dir__, 'docs', 'api')
dest = File.join(__dir__, 'docs', 'api')
FileUtils.rm_rf(dest)

Copilot uses AI. Check for mistakes.
Comment on lines +12 to +23
<script>
(function () {
var btn = document.querySelector('.site-nav__hamburger');
var links = document.getElementById('site-nav-links');
if (!btn || !links) return;
btn.addEventListener('click', function () {
var expanded = btn.getAttribute('aria-expanded') === 'true';
btn.setAttribute('aria-expanded', String(!expanded));
links.classList.toggle('is-open', !expanded);
});
})();
</script>
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This mobile-nav script is duplicated (a very similar block also exists in _layouts/post.html). To reduce drift and make future changes safer, consider moving it into a shared include (or a single asset JS file) and referencing it from both layouts.

Copilot uses AI. Check for mistakes.
@gemini-code-assist
Copy link

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request delivers a comprehensive modernization of the mruby.org website, focusing on a refreshed visual identity and a streamlined technical foundation. The changes aim to improve user experience through a modern design system and enhanced accessibility, while also boosting developer efficiency with an updated build pipeline, automated data generation, and a cleaner repository by removing generated content from version control.

Highlights

  • Visual and Design Overhaul: The entire mruby.org website has been visually redesigned, replacing Bootstrap with a custom SCSS design system utilizing CSS custom properties, a warm color palette, and new typography (Space Grotesk and Inter). All major pages have been refreshed, and responsive breakpoints for various devices have been implemented.
  • Jekyll and Dependency Modernization: The site's build toolchain was upgraded from Jekyll 3 to Jekyll 4.4.1. The github-pages meta-gem was removed in favor of explicit, direct dependencies, significantly reducing the Gemfile.lock size and allowing for current plugin versions. Bundler was upgraded to 4.0, and Ruby is now pinned to 4.0.1.
  • Automated Build and Deployment with GitHub Actions: A new GitHub Actions workflow (.github/workflows/pages.yml) now handles the entire build and deployment process, replacing the legacy GitHub Pages automatic build. This workflow sets up the correct Ruby version, runs unified Rake tasks for site generation, and deploys the _site/ artifact.
  • Unified Rake Tasks for Data Generation: The Rakefile has been centralized to manage all build automation, including new tasks for regenerating _data/mgems.yml, cloning mruby and generating YARD API documentation (gen:mrbdoc), regenerating _data/releases.yml from the GitHub API, and regenerating _data/contributors.yml from the mruby AUTHORS file.
  • API Documentation Removed from Git Repository: Generated YARD API documentation (approximately 130,000 lines) has been removed from the Git repository and is now dynamically generated at build time by the gen:mrbdoc Rake task. This significantly reduces repository size and ensures API docs are always up-to-date with the current mruby release.
  • Enhanced Accessibility Features: New accessibility features include a skip-to-content link, ARIA landmark roles, :focus-visible CSS for improved keyboard navigation, and a prefers-reduced-motion media query for animations.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • .gitignore
    • Updated to exclude generated API documentation and build artifacts.
  • .ruby-version
    • Added to pin the Ruby version to 4.0.1 for consistent development and CI environments.
  • Gemfile
    • Refactored dependencies by removing the github-pages gem and explicitly listing individual Jekyll plugins.
    • Updated Bundler to version 4.0.
  • Gemfile.lock
    • Updated to reflect the changes in Gemfile, including Jekyll 4.4.1 and new direct dependencies.
  • README.md
    • Updated local development instructions, prerequisites, build commands, data generation tasks, deployment details, and CI information.
  • Rakefile
    • Added new Rake tasks for automated data generation, including gen:mgemdata, gen:mrbdoc, gen:contributors, and gen:releasedata.
    • Unified build and serve tasks to include data generation steps.
  • _data/contributors.yml
    • Added as a new file to store auto-generated contributor data from the mruby AUTHORS file.
  • _data/mgems.yml
    • Modified to reflect updates from the automated gen:mgemdata task.
  • _data/releases.yml
    • Added as a new file to store auto-generated release data from the GitHub API.
  • _includes/_latest_news.html
    • Removed as part of the site redesign.
  • _includes/footer.html
    • Refactored to align with the new design system, including updated attribution and feed links.
  • _includes/head.html
    • Added as a new file to centralize meta tags, font imports, stylesheet links, and feed autodiscovery.
  • _includes/header.html
    • Removed as part of the site redesign, replaced by head.html and nav.html.
  • _includes/nav.html
    • Added as a new file to implement the main navigation bar with accessibility features and mobile responsiveness.
  • _includes/navigation.html
    • Removed as part of the site redesign, replaced by nav.html.
  • _layouts/default.html
    • Updated to integrate the new head.html and nav.html includes.
    • Added JavaScript for mobile navigation functionality.
  • _layouts/post.html
    • Updated to integrate the new head.html and nav.html includes.
    • Introduced an article-specific header, dynamic table of contents (TOC) generation, and scrollspy functionality for improved readability.
  • _sass/_about.scss
    • Added as a new SCSS partial for styling the 'About' page sections and components.
  • _sass/_article.scss
    • Added as a new SCSS partial for styling article content, headings, lists, code blocks, and the table of contents.
  • _sass/_buttons.scss
    • Added as a new SCSS partial for defining button styles and states.
  • _sass/_documentation.scss
    • Added as a new SCSS partial for styling documentation pages, including article rows and component cards.
  • _sass/_footer.scss
    • Added as a new SCSS partial for styling the site footer.
  • _sass/_inline-code.scss
    • Added as a new SCSS partial for styling inline code snippets.
  • _sass/_latest-news.scss
    • Added as a new SCSS partial for styling the 'Latest News' section and news cards.
  • _sass/_libraries.scss
    • Added as a new SCSS partial for styling the 'Libraries' page, including search functionality and library cards.
  • _sass/_navigation.scss
    • Added as a new SCSS partial for styling the main site navigation, including responsive behavior and accessibility features.
  • _sass/_page-header.scss
    • Added as a new SCSS partial for styling various page headers with different variants.
  • _sass/_reset.scss
    • Added as a new SCSS partial for CSS reset, base body styles, and prefers-reduced-motion media query.
  • _sass/_team.scss
    • Added as a new SCSS partial for styling the 'Team' page, including member grids and developer lists.
  • _sass/_variables.scss
    • Added as a new SCSS partial to define global CSS variables for colors, fonts, and spacing.
  • assets/css/main.css
    • Removed, replaced by the new SCSS compilation process.
  • assets/css/main.scss
    • Added as a new SCSS entry point to import all design system partials.
  • docs/api/Addrinfo.html
    • Removed as generated API documentation is no longer committed to the repository.
  • docs/api/ArgumentError.html
    • Removed as generated API documentation is no longer committed to the repository.
  • docs/api/BasicSocket.html
    • Removed as generated API documentation is no longer committed to the repository.
  • docs/api/Comparable.html
    • Removed as generated API documentation is no longer committed to the repository.
  • docs/api/Complex.html
    • Removed as generated API documentation is no longer committed to the repository.
  • docs/api/EOFError.html
    • Removed as generated API documentation is no longer committed to the repository.
  • docs/api/Enumerator.html
    • Removed as generated API documentation is no longer committed to the repository.
  • docs/api/Enumerator/Chain.html
    • Removed as generated API documentation is no longer committed to the repository.
  • docs/api/Enumerator/Generator.html
    • Removed as generated API documentation is no longer committed to the repository.
  • docs/api/Enumerator/Lazy.html
    • Removed as generated API documentation is no longer committed to the repository.
  • docs/api/Enumerator/Yielder.html
    • Removed as generated API documentation is no longer committed to the repository.
  • docs/api/Exception.html
    • Removed as generated API documentation is no longer committed to the repository.
  • docs/api/FalseClass.html
    • Removed as generated API documentation is no longer committed to the repository.
  • docs/api/Fiber.html
    • Removed as generated API documentation is no longer committed to the repository.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/pages.yml
Activity
  • The pull request was created by pusewicz, proposing a complete redesign and modernization of mruby.org.
  • The author provided a detailed description outlining visual, technical, build, deployment, data automation, and accessibility changes, along with an FAQ for reviewers and local testing instructions.
  • No human activity (comments, reviews) has been recorded on this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This is a massive and impressive undertaking that completely modernizes the mruby.org website. The move to a custom design system, Jekyll 4, and a fully automated data and deployment pipeline are all excellent improvements. The new design is clean and modern, and the technical changes will significantly improve the maintainability and development experience. I've found a few areas for improvement, mostly around code duplication and a configuration detail, but overall this is a fantastic contribution.

Note: Security Review did not run due to the size of the PR.

@@ -0,0 +1 @@
4.0.1

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

The Ruby version 4.0.1 specified here does not appear to be a valid or existing Ruby version. This will likely cause setup issues for contributors using version managers like rbenv or rvm. It seems this might be a typo. I recommend changing this to a recent stable Ruby version, for example 3.3.0.

3.3.0

Comment on lines +44 to +52
tags = []
page = 1
loop do
batch = JSON.parse(`gh api "repos/mruby/mruby/tags?per_page=100&page=#{page}"`)
break if batch.empty?
tags.concat(batch)
break if batch.size < 100
page += 1
end

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This block of code for fetching all tags from the GitHub API is very similar to the one in the gen:releasedata task (lines 122-130). To improve maintainability and reduce duplication, you could extract this logic into a shared helper method that both tasks can call.

Comment on lines +43 to +53
(function () {
// Mobile nav
var btn = document.querySelector('.site-nav__hamburger');
var links = document.getElementById('site-nav-links');
if (btn && links) {
btn.addEventListener('click', function () {
var expanded = btn.getAttribute('aria-expanded') === 'true';
btn.setAttribute('aria-expanded', String(!expanded));
links.classList.toggle('is-open', !expanded);
});
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This JavaScript snippet for handling the mobile navigation hamburger menu is also present in _layouts/default.html. To avoid code duplication and improve maintainability, it would be better to extract this script into its own file (e.g., assets/js/nav.js) and include it in the layouts where it's needed.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 67a35bbedd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


on:
push:
branches: [master]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Run Pages deployment on main branch pushes

The push trigger is restricted to master, so when changes are merged to main (the active default branch in this repo) this workflow will never auto-run and Pages won’t be rebuilt/deployed unless someone manually dispatches it. Update the branch filter to include the branch that actually receives production merges.

Useful? React with 👍 / 👎.

@matz
Copy link
Member

matz commented Mar 6, 2026

I'd talk with the design person, behind the current site.

@pusewicz
Copy link
Author

pusewicz commented Mar 6, 2026

Who is that person?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants