diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index d997bde1..3ba13e0c 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1 @@ blank_issues_enabled: false -contact_links: - - name: ๐Ÿ’ฌ Discussions - url: https://github.com/javaevolved/javaevolved.github.io/discussions - about: Ask questions, share ideas, or discuss patterns. diff --git a/.github/workflows/build-generator.yml b/.github/workflows/build-generator.yml index abf0e5ae..6a085544 100644 --- a/.github/workflows/build-generator.yml +++ b/.github/workflows/build-generator.yml @@ -7,6 +7,7 @@ on: - '.github/workflows/build-generator.yml' - 'html-generators/generate.java' - 'html-generators/generateog.java' + - 'html-generators/og/**' - 'agent-plugins/modern-java-development/skills/modern-java/scripts/DetectJavaVersion.java' schedule: - cron: '0 6 * * 1' # every Monday at 06:00 UTC @@ -67,7 +68,7 @@ jobs: path: | html-generators/generateog.jar html-generators/generateog.aot - key: generateog-${{ hashFiles('html-generators/generateog.java') }} + key: generateog-${{ hashFiles('html-generators/generateog.java', 'html-generators/og/**') }} build-detect-java-version: runs-on: ubuntu-latest diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index bb0a7aa1..3bebe16a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -82,7 +82,7 @@ jobs: path: | html-generators/generateog.jar html-generators/generateog.aot - key: generateog-${{ hashFiles('html-generators/generateog.java') }} + key: generateog-${{ hashFiles('html-generators/generateog.java', 'html-generators/og/**') }} - name: Generate OG cards with cached JAR + AOT if: steps.changes.outputs.og == 'true' && steps.cache-restore-og.outputs.cache-hit == 'true' diff --git a/README.md b/README.md index ce8fb7ec..ba2be5f2 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ A collection of side-by-side code comparisons showing old Java patterns next to ๐Ÿ”— **[javaevolved.dev](https://javaevolved.dev)** -[![GitHub Pages](https://img.shields.io/badge/GitHub%20Pages-live-brightgreen)](https://javaevolved.github.io) +[![GitHub Pages](https://img.shields.io/badge/GitHub%20Pages-live-brightgreen)](https://javaevolved.dev) [![Snippets](https://img.shields.io/badge/snippets-112-blue)](#categories) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange)](#contributing) diff --git a/agent-plugins/modern-java-development/README.md b/agent-plugins/modern-java-development/README.md index ae45eae2..361bf375 100644 --- a/agent-plugins/modern-java-development/README.md +++ b/agent-plugins/modern-java-development/README.md @@ -31,7 +31,7 @@ modern-java-development/ ## Install Versioned `.tar.gz` packages and SHA-256 checksums are available from the -[GitHub Releases](https://github.com/javaevolved/javaevolved.github.io/releases). +[GitHub Releases](https://github.com/brunoborges/javaevolved/releases). Each archive contains the `modern-java-development` package directory. ### GitHub Copilot CLI @@ -40,7 +40,7 @@ GitHub Copilot CLI supports the Agent Plugins specification. Add the java.evolved marketplace once: ```bash -copilot plugin marketplace add javaevolved/javaevolved.github.io +copilot plugin marketplace add brunoborges/javaevolved ``` Then install the plugin: @@ -59,9 +59,9 @@ Claude Code supports the Agent Skills format used by the `modern-java` skill. Clone this repository and copy the skill to your personal skills directory: ```bash -git clone --depth 1 https://github.com/javaevolved/javaevolved.github.io.git +git clone --depth 1 https://github.com/brunoborges/javaevolved.git mkdir -p ~/.claude/skills -cp -R javaevolved.github.io/agent-plugins/modern-java-development/skills/modern-java \ +cp -R javaevolved/agent-plugins/modern-java-development/skills/modern-java \ ~/.claude/skills/ ``` @@ -75,9 +75,9 @@ Codex CLI also supports Agent Skills. Clone this repository and copy the skill to your personal skills directory: ```bash -git clone --depth 1 https://github.com/javaevolved/javaevolved.github.io.git +git clone --depth 1 https://github.com/brunoborges/javaevolved.git mkdir -p ~/.agents/skills -cp -R javaevolved.github.io/agent-plugins/modern-java-development/skills/modern-java \ +cp -R javaevolved/agent-plugins/modern-java-development/skills/modern-java \ ~/.agents/skills/ ``` diff --git a/agent-plugins/modern-java-development/plugin.json b/agent-plugins/modern-java-development/plugin.json index b0cf3d9f..b834d21d 100644 --- a/agent-plugins/modern-java-development/plugin.json +++ b/agent-plugins/modern-java-development/plugin.json @@ -5,10 +5,10 @@ "description": "Version-aware guidance for writing, reviewing, and modernizing Java projects.", "author": { "name": "java.evolved", - "url": "https://javaevolved.github.io" + "url": "https://javaevolved.dev" }, - "homepage": "https://javaevolved.github.io", - "repository": "https://github.com/javaevolved/javaevolved.github.io", + "homepage": "https://javaevolved.dev", + "repository": "https://github.com/brunoborges/javaevolved", "license": "MIT", "keywords": [ "java", diff --git a/blogs/replacing-batik-with-graphics2d.md b/blogs/replacing-batik-with-graphics2d.md index 0058ad49..579cb415 100644 --- a/blogs/replacing-batik-with-graphics2d.md +++ b/blogs/replacing-batik-with-graphics2d.md @@ -1,10 +1,10 @@ # Replacing Apache Batik with Graphics2D: How We Made Our Java OG Card Generator Faster Than Python -*March 2026 ยท [javaevolved.github.io](https://javaevolved.github.io)* +*March 2026 ยท [javaevolved.dev](https://javaevolved.dev)* --- -[Java Evolved](https://javaevolved.github.io) is a static site showcasing 112 modern Java patterns across 11 categories โ€” each with a side-by-side "old vs modern" code comparison. For every pattern, we generate an Open Graph card: a 1200ร—630 PNG image used when links are shared on social media. +[Java Evolved](https://javaevolved.dev) is a static site showcasing 112 modern Java patterns across 11 categories โ€” each with a side-by-side "old vs modern" code comparison. For every pattern, we generate an Open Graph card: a 1200ร—630 PNG image used when links are shared on social media. This is the story of how we replaced Apache Batik with plain `Graphics2D`, split a monolithic script into modules using JBang, and tuned the JVM to squeeze out every last bit of performance โ€” ending up faster than Python. @@ -236,6 +236,6 @@ java -XX:AOTCacheOutput=html-generators/generateog.aot -jar html-generators/gene java -XX:Tier4CompileThreshold=100 -XX:AOTCache=html-generators/generateog.aot -jar html-generators/generateog.jar ``` -The full source is at [github.com/javaevolved/javaevolved.github.io](https://github.com/javaevolved/javaevolved.github.io) under `html-generators/`. +The full source is at [github.com/brunoborges/javaevolved](https://github.com/brunoborges/javaevolved) under `html-generators/`. -CI benchmark results: [Actions run #22563953466](https://github.com/javaevolved/javaevolved.github.io/actions/runs/22563953466). +CI benchmark results: [Actions run #22563953466](https://github.com/brunoborges/javaevolved/actions/runs/22563953466). diff --git a/html-generators/README.md b/html-generators/README.md index 406d82e0..19929483 100644 --- a/html-generators/README.md +++ b/html-generators/README.md @@ -54,8 +54,8 @@ This produces a self-contained ~2.2 MB JAR with all dependencies (Jackson) bundl Two GitHub Actions workflows automate the build and deploy pipeline: -1. **`build-generator.yml`** โ€” Triggered when `generate.java` changes on `main`. Uses JBang to rebuild the fat JAR and commits the updated `generate.jar` back to the repository. +1. **`build-generator.yml`** โ€” Triggered when generator sources change on `main`, including `generate.java`, `generateog.java`, and `og/**`. Uses JBang to rebuild the fat JARs and saves them with their AOT caches in GitHub Actions caches. The OG cache key includes the renderer sources so branding and rendering changes invalidate stale builds. -2. **`deploy.yml`** โ€” Triggered when content, templates, the JAR, or site assets change on `main`. Runs `java -jar html-generators/generate.jar` to regenerate all HTML pages, `snippets.json`, and `index.html`, then deploys the `site/` folder to GitHub Pages. +2. **`deploy.yml`** โ€” Triggered when content, templates, site assets, or OG sources change on `main`, or after a successful generator build. Restores matching JARs and AOT caches, falling back to JBang on a cache miss, to regenerate the HTML, `snippets.json`, and OG cards. It then deploys the `site/` folder to GitHub Pages at `https://javaevolved.dev/`. -This means the deploy workflow always uses the pre-built fat JAR (no JBang required at deploy time), and the JAR stays in sync with the source automatically. +Both workflows use matching source-based cache keys, keeping deployed output in sync with the generator sources. diff --git a/html-generators/generate.java b/html-generators/generate.java index ab4ed543..47846a52 100644 --- a/html-generators/generate.java +++ b/html-generators/generate.java @@ -13,7 +13,7 @@ * Generate HTML detail pages from JSON snippet files and slug-template.html. * Generates the static site from the content and translation sources. */ -static final String BASE_URL = "https://javaevolved.github.io"; +static final String BASE_URL = "https://javaevolved.dev"; static final String CONTENT_DIR = "content"; static final String SITE_DIR = "site"; static final String TRANSLATIONS_DIR = "translations"; @@ -506,7 +506,7 @@ String renderProofSection(Snippet s, Map strings) { var pascal = slugToPascalCase(s.slug()); var proofFile = Path.of("proof", s.category(), pascal + ".java"); if (!Files.exists(proofFile)) return ""; - var proofUrl = "https://github.com/javaevolved/javaevolved.github.io/blob/main/proof/%s/%s.java" + var proofUrl = "https://github.com/brunoborges/javaevolved/blob/main/proof/%s/%s.java" .formatted(s.category(), pascal); var label = strings.getOrDefault("sections.proof", "Proof"); var linkText = strings.getOrDefault("sections.proofLink", "View proof source"); @@ -607,7 +607,7 @@ void generateTopicPages(Templates templates, SequencedMap allSn IO.println("Generated %d topic pages".formatted(tagSnippets.size())); } -static final String GITHUB_ISSUES_URL = "https://github.com/javaevolved/javaevolved.github.io/issues/new"; +static final String GITHUB_ISSUES_URL = "https://github.com/brunoborges/javaevolved/issues/new"; Map buildContributeUrls(Snippet s, String locale, String localeName) { var codeUrl = "%s?template=code-issue.yml&title=%s&category=%s&slug=%s".formatted( diff --git a/html-generators/og/PngRenderer.java b/html-generators/og/PngRenderer.java index 0cb164f2..421f2a76 100644 --- a/html-generators/og/PngRenderer.java +++ b/html-generators/og/PngRenderer.java @@ -155,7 +155,7 @@ static void drawFooter(Graphics2D g, Snippet s) { // Brand (right-aligned) g.setFont(brandFont); g.setColor(Palette.color(ACCENT)); - var brand = "javaevolved.github.io"; + var brand = "javaevolved.dev"; var fm = g.getFontMetrics(brandFont); g.drawString(brand, W - PAD - fm.stringWidth(brand), H - 22); } diff --git a/html-generators/og/SvgRenderer.java b/html-generators/og/SvgRenderer.java index 24e07019..6313eff5 100644 --- a/html-generators/og/SvgRenderer.java +++ b/html-generators/og/SvgRenderer.java @@ -79,7 +79,7 @@ public static String generate(Snippet s) { JDK %s+ - javaevolved.github.io + javaevolved.dev """.formatted( // viewBox diff --git a/specs/i18n/i18n-spec.md b/specs/i18n/i18n-spec.md index f5192079..599fa6da 100644 --- a/specs/i18n/i18n-spec.md +++ b/specs/i18n/i18n-spec.md @@ -359,9 +359,9 @@ The `` opening tag becomes ``. `hreflang` alternate links are generated for every supported locale: ```html - - - + + + ``` --- diff --git a/specs/social-posts-spec.md b/specs/social-posts-spec.md index 63dbe11d..865ab65d 100644 --- a/specs/social-posts-spec.md +++ b/specs/social-posts-spec.md @@ -26,7 +26,7 @@ Each tweet is stored in `social/tweets/{category}/{slug}.yaml` so pattern pull r {oldLabel} โ†’ {modernLabel} (JDK {jdkVersion}+) -๐Ÿ”— https://javaevolved.github.io/{category}/{slug}.html +๐Ÿ”— https://javaevolved.dev/{category}/{slug}.html #Java #JavaEvolved ``` diff --git a/templates/agent-plugin.html b/templates/agent-plugin.html index 724f796d..0efca6b2 100644 --- a/templates/agent-plugin.html +++ b/templates/agent-plugin.html @@ -13,7 +13,7 @@ Modern Java Agent Plugin | java.evolved - + @@ -22,9 +22,9 @@ - + - +