From da9038a77c1235004cf0d321ce5cc9cc219ef68c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Feb 2026 14:48:43 +0000 Subject: [PATCH 1/4] Initial plan From 7cd0d51fa226942e14c32b8135cc743b6feac623 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Feb 2026 14:53:03 +0000 Subject: [PATCH 2/4] Add semantic titles from README.md to repository cards Co-authored-by: danielmeppiel <51440732+danielmeppiel@users.noreply.github.com> --- .github/workflows/refresh-data.yml | 23 ++++++++++++++++++++--- src/components/RepoCard.astro | 15 +++++++++++---- src/data/repositories.json | 15 ++++++++++----- src/utils/categorize.ts | 1 + 4 files changed, 42 insertions(+), 12 deletions(-) diff --git a/.github/workflows/refresh-data.yml b/.github/workflows/refresh-data.yml index 90a3627..ff41cff 100644 --- a/.github/workflows/refresh-data.yml +++ b/.github/workflows/refresh-data.yml @@ -73,6 +73,23 @@ jobs: fi fi + # Fetch README title (first H1 heading) + readme_title="null" + if readme_content=$(gh api "repos/DevExpGbb/${repo_name}/readme" --jq '.content' 2>/dev/null); then + if [ -n "$readme_content" ] && [ "$readme_content" != "null" ]; then + # Decode base64 content and extract first H1 heading + decoded_readme=$(echo "$readme_content" | base64 --decode 2>/dev/null || echo "") + if [ -n "$decoded_readme" ]; then + # Extract first # heading (supports # Title or #Title formats) + title=$(echo "$decoded_readme" | grep -m 1 -E '^#[[:space:]]+' | sed -E 's/^#+[[:space:]]+//' | sed 's/[[:space:]]*$//' || echo "") + if [ -n "$title" ]; then + # Escape the title for JSON + readme_title=$(echo "$title" | jq -Rs '.') + fi + fi + fi + fi + # Add comma separator for all but first if [ "$first" = true ]; then first=false @@ -80,9 +97,9 @@ jobs: echo "," >> /tmp/repos_with_contributors.json fi - # Add repo with contributor - echo "$repo_json" | jq --argjson tc "$top_contributor" --argjson topics "$topics_data" ' - . + { topContributor: $tc, topics: $topics } + # Add repo with contributor and readme title + echo "$repo_json" | jq --argjson tc "$top_contributor" --argjson topics "$topics_data" --argjson rt "$readme_title" ' + . + { topContributor: $tc, topics: $topics, readmeTitle: $rt } ' >> /tmp/repos_with_contributors.json done diff --git a/src/components/RepoCard.astro b/src/components/RepoCard.astro index df252cd..45f09d2 100644 --- a/src/components/RepoCard.astro +++ b/src/components/RepoCard.astro @@ -66,10 +66,17 @@ const isRecentlyUpdated = (new Date().getTime() - new Date(repo.updatedAt).getTi )} - {/* Title */} -

- {repo.name} -

+ {/* Title - Shows README title if available, with repo name as subtitle */} +
+

+ {repo.readmeTitle || repo.name} +

+ {repo.readmeTitle && ( +

+ {repo.name} +

+ )} +
{/* Description */}

diff --git a/src/data/repositories.json b/src/data/repositories.json index 6cf2ec5..958a2ac 100644 --- a/src/data/repositories.json +++ b/src/data/repositories.json @@ -68,7 +68,8 @@ "topics": [ "github-platform", "code" - ] + ], + "readmeTitle": "IP Atlas - Repository Catalog" }, { "createdAt": "2026-02-05T12:55:35Z", @@ -100,7 +101,8 @@ "topics": [ "ghas", "code" - ] + ], + "readmeTitle": "Security Check Agent" }, { "createdAt": "2026-01-26T17:40:23Z", @@ -173,7 +175,8 @@ "shell", "github-platform", "demo-deployable" - ] + ], + "readmeTitle": "Automated Bot for Developer Workflows" }, { "createdAt": "2026-02-05T14:27:46Z", @@ -204,7 +207,8 @@ "avatarUrl": "https://avatars.githubusercontent.com/u/18750956?v=4", "login": "Frank802" }, - "topics": [] + "topics": [], + "readmeTitle": "Azure DevCenter Demos" }, { "createdAt": "2026-01-29T15:13:57Z", @@ -281,7 +285,8 @@ "topics": [ "github-copilot", "demo-deployable" - ] + ], + "readmeTitle": "Common Terraform Modules" }, { "createdAt": "2024-11-12T20:09:00Z", diff --git a/src/utils/categorize.ts b/src/utils/categorize.ts index b6e4126..c8cab5e 100644 --- a/src/utils/categorize.ts +++ b/src/utils/categorize.ts @@ -166,6 +166,7 @@ export interface Repository { updatedAt: string; stargazerCount: number; topContributor: { login: string; avatarUrl: string } | null; + readmeTitle?: string | null; } export interface CategorizedRepository extends Repository { From 304768cc080e68bcd10dcaa180b4b2898dbcede6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Feb 2026 14:54:35 +0000 Subject: [PATCH 3/4] Fix regex pattern to support headings without spaces after # Co-authored-by: danielmeppiel <51440732+danielmeppiel@users.noreply.github.com> --- .github/workflows/refresh-data.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/refresh-data.yml b/.github/workflows/refresh-data.yml index ff41cff..fed5c60 100644 --- a/.github/workflows/refresh-data.yml +++ b/.github/workflows/refresh-data.yml @@ -81,7 +81,7 @@ jobs: decoded_readme=$(echo "$readme_content" | base64 --decode 2>/dev/null || echo "") if [ -n "$decoded_readme" ]; then # Extract first # heading (supports # Title or #Title formats) - title=$(echo "$decoded_readme" | grep -m 1 -E '^#[[:space:]]+' | sed -E 's/^#+[[:space:]]+//' | sed 's/[[:space:]]*$//' || echo "") + title=$(echo "$decoded_readme" | grep -m 1 -E '^#[[:space:]]*' | sed -E 's/^#+[[:space:]]*//' | sed 's/[[:space:]]*$//' || echo "") if [ -n "$title" ]; then # Escape the title for JSON readme_title=$(echo "$title" | jq -Rs '.') From 6cc5bcf425c2bfcc4c479f4ddf1113ffabbfcaae Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Feb 2026 14:56:38 +0000 Subject: [PATCH 4/4] Remove test data from repositories.json Co-authored-by: danielmeppiel <51440732+danielmeppiel@users.noreply.github.com> --- src/data/repositories.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/data/repositories.json b/src/data/repositories.json index 958a2ac..72c9534 100644 --- a/src/data/repositories.json +++ b/src/data/repositories.json @@ -69,7 +69,7 @@ "github-platform", "code" ], - "readmeTitle": "IP Atlas - Repository Catalog" + "readmeTitle": null }, { "createdAt": "2026-02-05T12:55:35Z", @@ -102,7 +102,7 @@ "ghas", "code" ], - "readmeTitle": "Security Check Agent" + "readmeTitle": null }, { "createdAt": "2026-01-26T17:40:23Z", @@ -176,7 +176,7 @@ "github-platform", "demo-deployable" ], - "readmeTitle": "Automated Bot for Developer Workflows" + "readmeTitle": null }, { "createdAt": "2026-02-05T14:27:46Z", @@ -208,7 +208,7 @@ "login": "Frank802" }, "topics": [], - "readmeTitle": "Azure DevCenter Demos" + "readmeTitle": null }, { "createdAt": "2026-01-29T15:13:57Z", @@ -286,7 +286,7 @@ "github-copilot", "demo-deployable" ], - "readmeTitle": "Common Terraform Modules" + "readmeTitle": null }, { "createdAt": "2024-11-12T20:09:00Z",