Merge pull request #2696 from nunocoracao/dev

🔖 v2.96.0
This commit is contained in:
Nuno C.
2026-01-02 16:59:10 +00:00
committed by GitHub
11 changed files with 1644 additions and 10 deletions

View File

@@ -1063,9 +1063,6 @@
.table-cell {
display: table-cell;
}
.aspect-\[\.\.\.\] {
aspect-ratio: ...;
}
.aspect-\[4\/3\] {
aspect-ratio: 4/3;
}
@@ -4658,8 +4655,8 @@ body:has(#mobile-menu-toggle:checked) {
overflow: hidden;
}
@media (min-width: 853px) {
body {
position: static !important;
body:has(#mobile-menu-toggle:checked) {
overflow: visible;
}
}
#bmc-wbtn {

View File

@@ -276,8 +276,8 @@ body:has(#mobile-menu-toggle:checked) {
/* Reset body position for desktop after it was modified on mobile */
@media (min-width: 853px) {
body {
position: static !important;
body:has(#mobile-menu-toggle:checked) {
overflow: visible;
}
}

View File

@@ -2,4 +2,4 @@
[module.hugoVersion]
extended = true
min = "0.141.0"
max = "0.154.0"
max = "0.154.1"

1442
data/contributors.json Normal file

File diff suppressed because it is too large Load Diff

1
data/sponsors.json Normal file
View File

@@ -0,0 +1 @@
[{"avatar_url":"https://avatars.githubusercontent.com/u/928965?u=f5d781ca0eb5cb5c7ce9e5ee5d3b24dae3d6e987\u0026v=4\u0026s=128","profile_url":"https://github.com/nazar-pc","username":"nazar-pc"},{"avatar_url":"https://avatars.githubusercontent.com/u/17061177?v=4\u0026s=128","profile_url":"https://github.com/ytocquet","username":"ytocquet"},{"avatar_url":"https://avatars.githubusercontent.com/u/49299328?v=4\u0026s=128","profile_url":"https://github.com/LITUATUI","username":"LITUATUI"}]

View File

@@ -14,6 +14,14 @@
<div id="page" style="display:none">
{{ partial "home/page.html" . }}
</div>
<section class="max-w-7xl mx-auto px-4">
{{ partial "sponsors.html" . }}
</section>
<section class="max-w-7xl mx-auto px-4">
{{ partial "contributors.html" . }}
</section>
<section>
{{ partial "recent-articles-demo.html" . }}
</section>

View File

@@ -0,0 +1,47 @@
{{ with site.Data.contributors }}
<section class="contributors-section mt-12 mb-16">
<div class="flex flex-col items-center mb-6">
<div class="flex items-center gap-2 mb-2">
<span class="text-2xl text-neutral-600 dark:text-neutral-400">
{{ partial "icon.html" "github" }}
</span>
<h2 class="text-2xl font-extrabold text-neutral-800 dark:text-neutral-200">
{{ i18n "contributors.title" | default "Contributors" }}
</h2>
</div>
<p class="text-neutral-600 dark:text-neutral-400 text-center">
{{ i18n "contributors.description" | default (printf "%d amazing people have contributed to Blowfish" (len .)) }}
</p>
</div>
<div class="flex flex-wrap justify-center gap-3">
{{ range . }}
<a
href="{{ .profile_url }}"
target="_blank"
rel="noopener noreferrer"
class="group"
title="{{ .username }} ({{ .contributions }} contributions)"
aria-label="Contributor: {{ .username }}">
<img
class="nozoom h-10 w-10 rounded-full opacity-80 transition-all group-hover:opacity-100 group-hover:scale-110 group-hover:ring-2 group-hover:ring-primary-500"
src="{{ .avatar_url }}"
alt="{{ .username }}"
width="40"
height="40"
loading="lazy">
</a>
{{ end }}
</div>
<div class="mt-6 flex justify-center">
<a
href="https://github.com/nunocoracao/blowfish/graphs/contributors"
target="_blank"
rel="noopener noreferrer"
class="text-sm text-neutral-600 dark:text-neutral-400 hover:text-primary-500 transition-colors">
{{ i18n "contributors.viewAll" | default "View all contributors on GitHub" }} &rarr;
</a>
</div>
</section>
{{ end }}

View File

@@ -0,0 +1,51 @@
{{ with site.Data.sponsors }}
<section class="sponsors-section mt-16 mb-8">
<div class="flex flex-col items-center mb-6">
<div class="flex items-center gap-2 mb-2">
<span class="text-2xl text-primary-500">
{{ partial "icon.html" "heart" }}
</span>
<h2 class="text-2xl font-extrabold text-neutral-800 dark:text-neutral-200">
{{ i18n "sponsors.title" | default "Sponsors" }}
</h2>
</div>
<p class="text-neutral-600 dark:text-neutral-400 text-center max-w-md">
{{ i18n "sponsors.description" | default "Special thanks to our sponsors who help make Blowfish possible." }}
</p>
</div>
<div class="flex flex-wrap justify-center gap-4">
{{ range . }}
<a
href="{{ .profile_url }}"
target="_blank"
rel="noopener noreferrer"
class="group flex flex-col items-center"
title="{{ .username }}"
aria-label="Sponsor: {{ .username }}">
<img
class="nozoom h-16 w-16 rounded-full ring-2 ring-primary-500 transition-transform group-hover:scale-110"
src="{{ .avatar_url }}"
alt="{{ .username }}"
width="64"
height="64"
loading="lazy">
<span class="mt-2 text-sm text-neutral-600 dark:text-neutral-400 group-hover:text-primary-500 transition-colors">
@{{ .username }}
</span>
</a>
{{ end }}
</div>
<div class="mt-8 flex justify-center">
<a
href="https://github.com/sponsors/nunocoracao"
target="_blank"
rel="noopener noreferrer"
class="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-primary-600 text-white hover:bg-primary-500 transition-colors">
<span>{{ partial "icon.html" "heart" }}</span>
<span>{{ i18n "sponsors.cta" | default "Become a Sponsor" }}</span>
</a>
</div>
</section>
{{ end }}

View File

@@ -1,6 +1,6 @@
{
"name": "hugo-blowfish-theme",
"version": "2.95.0",
"version": "2.96.0",
"description": "Blowfish theme for Hugo.",
"scripts": {
"postinstall": "vendor-copy",

View File

@@ -1 +1 @@
v0.154.0
v0.154.1

88
update-github-data.sh Executable file
View File

@@ -0,0 +1,88 @@
#!/bin/bash
# Script to fetch sponsors and contributors data from GitHub using gh CLI
# Usage: ./update-github-data.sh
set -e
REPO_OWNER="nunocoracao"
REPO_NAME="blowfish"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DATA_DIR="$SCRIPT_DIR/data"
# Ensure data directory exists
mkdir -p "$DATA_DIR"
echo "Fetching sponsors..."
# Fetch sponsors via GraphQL API
# Note: This requires the user to have GitHub Sponsors enabled
gh api graphql -f query='
query {
user(login: "'"$REPO_OWNER"'") {
sponsorshipsAsMaintainer(first: 100, activeOnly: true) {
nodes {
sponsorEntity {
... on User {
login
avatarUrl
url
}
... on Organization {
login
avatarUrl
url
}
}
}
}
}
}
' --jq '[.data.user.sponsorshipsAsMaintainer.nodes[] | {
username: .sponsorEntity.login,
avatar_url: (.sponsorEntity.avatarUrl + "&s=128"),
profile_url: .sponsorEntity.url
}]' > "$DATA_DIR/sponsors.json" 2>/dev/null || echo "[]" > "$DATA_DIR/sponsors.json"
sponsor_count=$(jq length "$DATA_DIR/sponsors.json")
echo "Found $sponsor_count sponsors"
echo "Fetching contributors..."
# Fetch all contributors via REST API (paginated)
all_contributors="[]"
page=1
while true; do
response=$(gh api "repos/$REPO_OWNER/$REPO_NAME/contributors?per_page=100&page=$page" \
--jq '[.[] | {
username: .login,
avatar_url: (.avatar_url + "&s=80"),
profile_url: .html_url,
contributions: .contributions
}]' 2>/dev/null || echo "[]")
if [ "$response" = "[]" ] || [ -z "$response" ]; then
break
fi
all_contributors=$(echo "$all_contributors" "$response" | jq -s 'add')
page=$((page + 1))
# Progress indicator
current_count=$(echo "$all_contributors" | jq length)
echo " Fetched $current_count contributors so far..."
done
# Sort by contributions (descending) and save
echo "$all_contributors" | jq 'sort_by(-.contributions)' > "$DATA_DIR/contributors.json"
contributor_count=$(jq length "$DATA_DIR/contributors.json")
echo "Found $contributor_count contributors"
echo ""
echo "Data saved to:"
echo " - $DATA_DIR/sponsors.json ($sponsor_count sponsors)"
echo " - $DATA_DIR/contributors.json ($contributor_count contributors)"
echo ""
echo "Done!"