Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,14 @@ Private repositories work too. GitHub Free gives 2,000 Actions minutes/month (th

## Themes

Three built-in themes, each with light/dark mode and responsive design.
Four built-in themes, each with light/dark mode and responsive design.

| Theme | Screenshot | Description |
|---|---|---|
| **brutalist** (default) | <img src="scripts/screenshots/brutalist-dark.png" width="400" /> | Bold, high-contrast dark theme with monospace typography. [Example](https://deariary.github.io/github-weekly-reporter/brutalist/en/2026/W14/) |
| **minimal** | <img src="scripts/screenshots/minimal-light.png" width="400" /> | Clean lines, generous whitespace, understated elegance. [Example](https://deariary.github.io/github-weekly-reporter/minimal/en/2026/W14/) |
| **editorial** | <img src="scripts/screenshots/editorial-light.png" width="400" /> | Horizontal-scroll magazine with serif typography and column layout. [Example](https://deariary.github.io/github-weekly-reporter/editorial/en/2026/W14/) |
| **swiss** | <img src="scripts/screenshots/swiss-light.png" width="400" /> | International Typographic Style with asymmetric grid, Space Grotesk, and geometric motifs. [Example](https://deariary.github.io/github-weekly-reporter/swiss/en/2026/W14/) |

Set the theme in your workflow or during `setup`:

Expand Down
2 changes: 1 addition & 1 deletion action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ inputs:
required: false
default: ''
theme:
description: 'Report theme: brutalist, minimal, editorial'
description: 'Report theme: brutalist, minimal, editorial, swiss'
required: false
default: 'brutalist'
date:
Expand Down
3 changes: 2 additions & 1 deletion docs/customization.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,13 +135,14 @@ Pin the action to a commit SHA and the CLI to a specific version for better secu

## Theme

Three built-in themes are available, each with light/dark mode:
Four built-in themes are available, each with light/dark mode:

| Theme | Description |
|---|---|
| `brutalist` | Bold, high-contrast dark theme with monospace typography (default) |
| `minimal` | Clean lines, generous whitespace, understated elegance |
| `editorial` | Horizontal-scroll magazine with serif typography and column layout |
| `swiss` | International Typographic Style with asymmetric grid, Space Grotesk, and geometric motifs |

Edit `weekly-report.yml`:

Expand Down
5 changes: 4 additions & 1 deletion scripts/generate-preview-index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ const themeData = {
editorial: {
desc: "Horizontal-scroll magazine layout inspired by print editorial design. Serif typography (Playfair Display + Newsreader), column-based content flow, and data visualizations woven into the narrative.",
},
swiss: {
desc: "International Typographic Style (Swiss Design) with asymmetric grid, Space Grotesk neo-grotesque typography, numbered sections, and geometric motifs inspired by Max Bill and Muller-Brockmann.",
},
};

const html = `<!DOCTYPE html>
Expand Down Expand Up @@ -272,7 +275,7 @@ const html = `<!DOCTYPE html>

<section class="fade-in">
<h2>Themes</h2>
<p class="lead">Three built-in themes, each with light/dark mode and responsive layout.</p>
<p class="lead">Four built-in themes, each with light/dark mode and responsive layout.</p>
<ul class="theme-list">
${themes
.map(
Expand Down
2 changes: 1 addition & 1 deletion scripts/generate-preview.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Generate preview site: theme x lang combinations from example/ data
set -euo pipefail

THEMES="brutalist minimal editorial"
THEMES="brutalist minimal editorial swiss"
LANGS="en ja"
BASE_URL="${BASE_URL:-https://deariary.github.io/github-weekly-reporter}"
OUT_DIR="${OUT_DIR:-preview-site}"
Expand Down
Binary file added scripts/screenshots/swiss-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added scripts/screenshots/swiss-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/cli/commands/setup/workflows.ts
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ Edit \`.github/workflows/weekly-report.yml\` to change:
| \`username\` | \`${opts.username}\` | GitHub user to report on |
| \`language\` | \`${opts.language}\` | Report language (en, ja, zh-CN, zh-TW, ko, es, fr, de, pt, ru) |
| \`timezone\` | \`${opts.timezone}\` | IANA timezone for date calculations |
| \`theme\` | \`${opts.theme}\` | Report theme (brutalist, minimal, editorial) |
| \`theme\` | \`${opts.theme}\` | Report theme (brutalist, minimal, editorial, swiss) |
| \`SITE_TITLE\` | \`${displayTitle}\` | Site title in the header and hero |
${opts.llmProvider ? `| \`llm-provider\` | \`${opts.llmProvider}\` | LLM provider for AI narrative |\n| \`llm-model\` | \`${opts.llmModel}\` | Model name |\n` : ""}
## Base URL
Expand Down
14 changes: 14 additions & 0 deletions src/renderer/themes/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,13 @@ import {
THEME_INIT_SCRIPT as editorialInitScript,
THEME_TOGGLE_SCRIPT as editorialToggleScript,
} from "./editorial/index.js";
import {
buildCSS as swissBuildCSS,
buildIndexCSS as swissBuildIndexCSS,
colors as swissColors,
THEME_INIT_SCRIPT as swissInitScript,
THEME_TOGGLE_SCRIPT as swissToggleScript,
} from "./swiss/index.js";

export type ThemeColors = {
bg: string;
Expand Down Expand Up @@ -72,6 +79,13 @@ const themeModules: Record<Theme, Omit<ThemeModule, "templatesDir">> = {
themeInitScript: editorialInitScript,
themeToggleScript: editorialToggleScript,
},
swiss: {
buildCSS: swissBuildCSS,
buildIndexCSS: swissBuildIndexCSS,
colors: swissColors,
themeInitScript: swissInitScript,
themeToggleScript: swissToggleScript,
},
};

export const AVAILABLE_THEMES: Theme[] = Object.keys(themeModules) as Theme[];
Expand Down
3 changes: 3 additions & 0 deletions src/renderer/themes/swiss/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// Swiss theme: International Typographic Style, mathematical precision, pure grid

export { buildCSS, buildIndexCSS, colors, THEME_INIT_SCRIPT, THEME_TOGGLE_SCRIPT } from "./styles.js";
Loading