From 23c2207a2f66ad628879ff36a73a76757dcf96cd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 18 Feb 2026 19:21:24 +0000 Subject: [PATCH 1/5] Initial plan From b22c3792e50e635624d9cc7e5b8de99d9700c395 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 18 Feb 2026 19:25:17 +0000 Subject: [PATCH 2/5] Replace broken Vercel app with client-side GitHub API solution Co-authored-by: zonca <383090+zonca@users.noreply.github.com> --- _includes/repository/repo_card.html | 90 +++++++++++++++++++++++++++++ _pages/repositories.md | 8 ++- _plugins/github_repos.rb | 68 ++++++++++++++++++++++ _sass/_base.scss | 81 ++++++++++++++++++++++++++ 4 files changed, 245 insertions(+), 2 deletions(-) create mode 100644 _includes/repository/repo_card.html create mode 100644 _plugins/github_repos.rb diff --git a/_includes/repository/repo_card.html b/_includes/repository/repo_card.html new file mode 100644 index 0000000000000..784b20b4cf62b --- /dev/null +++ b/_includes/repository/repo_card.html @@ -0,0 +1,90 @@ +
+ +
+
+ + + +
+
+

{{ include.name }}

+

Loading...

+
+
+
+ + + + + + - + + + + + + - + +
+
+
+ + diff --git a/_pages/repositories.md b/_pages/repositories.md index 297735afd2e0b..69abe3994c521 100644 --- a/_pages/repositories.md +++ b/_pages/repositories.md @@ -17,9 +17,13 @@ nav_order: 3 ## GitHub Repositories {% if site.data.repositories.github_repos %} -
+
{% for repo in site.data.repositories.github_repos %} - {% include repository/repo.html repository=repo %} + {% assign repo_parts = repo | split: '/' %} + {% assign repo_owner = repo_parts[0] %} + {% assign repo_name = repo_parts[1] %} + {% include repository/repo_card.html repo=repo owner=repo_owner name=repo_name %} {% endfor %}
{% endif %} + diff --git a/_plugins/github_repos.rb b/_plugins/github_repos.rb new file mode 100644 index 0000000000000..c02cf334d9061 --- /dev/null +++ b/_plugins/github_repos.rb @@ -0,0 +1,68 @@ +require 'httparty' +require 'jekyll' + +module GithubRepos + class GithubReposGenerator < Jekyll::Generator + safe true + priority :high + + def generate(site) + if site.data['repositories'] && site.data['repositories']['github_repos'] + site.data['repositories']['github_repos_data'] = [] + + site.data['repositories']['github_repos'].each do |repo| + owner, name = repo.split('/') + + begin + # Fetch repository data from GitHub API + url = "https://api.github.com/repos/#{owner}/#{name}" + response = HTTParty.get(url, headers: { + 'User-Agent' => 'Jekyll-Site' + }) + + if response.code == 200 + repo_data = response.parsed_response + site.data['repositories']['github_repos_data'] << { + 'name' => repo_data['name'], + 'full_name' => repo_data['full_name'], + 'description' => repo_data['description'], + 'html_url' => repo_data['html_url'], + 'stars' => repo_data['stargazers_count'], + 'forks' => repo_data['forks_count'], + 'language' => repo_data['language'], + 'owner' => repo_data['owner']['login'] + } + puts "✓ Fetched data for #{repo}" + else + puts "✗ Failed to fetch #{repo}: HTTP #{response.code}" + # Add placeholder data if API fails + site.data['repositories']['github_repos_data'] << { + 'name' => name, + 'full_name' => repo, + 'description' => '', + 'html_url' => "https://github.com/#{repo}", + 'stars' => 0, + 'forks' => 0, + 'language' => '', + 'owner' => owner + } + end + rescue => e + puts "✗ Error fetching #{repo}: #{e.message}" + # Add placeholder data if fetch fails + site.data['repositories']['github_repos_data'] << { + 'name' => name, + 'full_name' => repo, + 'description' => '', + 'html_url' => "https://github.com/#{repo}", + 'stars' => 0, + 'forks' => 0, + 'language' => '', + 'owner' => owner + } + end + end + end + end + end +end diff --git a/_sass/_base.scss b/_sass/_base.scss index a755d599c7bbc..56768f2d91a78 100644 --- a/_sass/_base.scss +++ b/_sass/_base.scss @@ -320,6 +320,87 @@ footer.sticky-bottom { } } +// New repository cards +.repositories-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 1rem; + margin-top: 1rem; +} + +.repo-card { + border: 1px solid var(--global-divider-color); + border-radius: 6px; + transition: transform 0.2s ease, box-shadow 0.2s ease; + background-color: var(--global-card-bg-color); + + &:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + } +} + +.repo-link { + text-decoration: none !important; + color: inherit; + display: block; + + &:hover { + text-decoration: none !important; + } +} + +.repo-header { + .repo-icon { + color: var(--global-text-color); + opacity: 0.6; + margin-top: 2px; + } +} + +.repo-name { + font-size: 1.1rem; + font-weight: 600; + color: var(--global-theme-color); + margin: 0; +} + +.repo-description { + font-size: 0.875rem; + color: var(--global-text-color); + opacity: 0.8; + margin: 0; + line-height: 1.4; +} + +.repo-stats { + font-size: 0.75rem; + color: var(--global-text-color); + opacity: 0.7; + + svg { + vertical-align: text-bottom; + } +} + +.repo-language { + display: inline-flex; + align-items: center; + + .language-color { + display: inline-block; + width: 12px; + height: 12px; + border-radius: 50%; + margin-right: 4px; + } +} + +.repo-stars, .repo-forks { + display: inline-flex; + align-items: center; +} + // Blog .header-bar { From acde5d4683e9e9ce94b58843a4b93527d4316111 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 18 Feb 2026 19:27:02 +0000 Subject: [PATCH 3/5] Remove unused server-side plugin (using client-side fetch instead) Co-authored-by: zonca <383090+zonca@users.noreply.github.com> --- _plugins/github_repos.rb | 68 ---------------------------------------- 1 file changed, 68 deletions(-) delete mode 100644 _plugins/github_repos.rb diff --git a/_plugins/github_repos.rb b/_plugins/github_repos.rb deleted file mode 100644 index c02cf334d9061..0000000000000 --- a/_plugins/github_repos.rb +++ /dev/null @@ -1,68 +0,0 @@ -require 'httparty' -require 'jekyll' - -module GithubRepos - class GithubReposGenerator < Jekyll::Generator - safe true - priority :high - - def generate(site) - if site.data['repositories'] && site.data['repositories']['github_repos'] - site.data['repositories']['github_repos_data'] = [] - - site.data['repositories']['github_repos'].each do |repo| - owner, name = repo.split('/') - - begin - # Fetch repository data from GitHub API - url = "https://api.github.com/repos/#{owner}/#{name}" - response = HTTParty.get(url, headers: { - 'User-Agent' => 'Jekyll-Site' - }) - - if response.code == 200 - repo_data = response.parsed_response - site.data['repositories']['github_repos_data'] << { - 'name' => repo_data['name'], - 'full_name' => repo_data['full_name'], - 'description' => repo_data['description'], - 'html_url' => repo_data['html_url'], - 'stars' => repo_data['stargazers_count'], - 'forks' => repo_data['forks_count'], - 'language' => repo_data['language'], - 'owner' => repo_data['owner']['login'] - } - puts "✓ Fetched data for #{repo}" - else - puts "✗ Failed to fetch #{repo}: HTTP #{response.code}" - # Add placeholder data if API fails - site.data['repositories']['github_repos_data'] << { - 'name' => name, - 'full_name' => repo, - 'description' => '', - 'html_url' => "https://github.com/#{repo}", - 'stars' => 0, - 'forks' => 0, - 'language' => '', - 'owner' => owner - } - end - rescue => e - puts "✗ Error fetching #{repo}: #{e.message}" - # Add placeholder data if fetch fails - site.data['repositories']['github_repos_data'] << { - 'name' => name, - 'full_name' => repo, - 'description' => '', - 'html_url' => "https://github.com/#{repo}", - 'stars' => 0, - 'forks' => 0, - 'language' => '', - 'owner' => owner - } - end - end - end - end - end -end From 9e220e4cce68654d4d99bfabffb34741573c62d9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 18 Feb 2026 19:28:34 +0000 Subject: [PATCH 4/5] Address code review feedback: improve error handling and memory efficiency Co-authored-by: zonca <383090+zonca@users.noreply.github.com> --- _includes/repository/repo_card.html | 49 ++++++++++++++++++----------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/_includes/repository/repo_card.html b/_includes/repository/repo_card.html index 784b20b4cf62b..53abbc8d04e34 100644 --- a/_includes/repository/repo_card.html +++ b/_includes/repository/repo_card.html @@ -34,11 +34,36 @@

{{ include.name }}