From ebac9b9c7b8d28c97b2e4b09e8dee374361c8392 Mon Sep 17 00:00:00 2001 From: widal001 Date: Wed, 25 Mar 2026 01:31:58 -0400 Subject: [PATCH 1/6] ci: Removes cleanup Not necessary with PR previews --- .github/workflows/preview-cleanup.yml | 28 --------------------------- 1 file changed, 28 deletions(-) delete mode 100644 .github/workflows/preview-cleanup.yml diff --git a/.github/workflows/preview-cleanup.yml b/.github/workflows/preview-cleanup.yml deleted file mode 100644 index 6c84822..0000000 --- a/.github/workflows/preview-cleanup.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Preview Cleanup - -on: - pull_request: - types: [closed] - -jobs: - cleanup: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - - - uses: pnpm/action-setup@v5 - with: - version: 10 - - - uses: actions/setup-node@v6 - with: - node-version: 22 - cache: pnpm - - - run: pnpm install --frozen-lockfile - - - name: Delete preview alias - run: pnpm exec wrangler versions delete-alias pr-${{ github.event.pull_request.number }} - env: - CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} - CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} From 8d76f6263cd9889cd342dd5ee369a3730649daed Mon Sep 17 00:00:00 2001 From: widal001 Date: Wed, 25 Mar 2026 01:32:09 -0400 Subject: [PATCH 2/6] fix: Repo filter --- src/lib/utils/filters.spec.ts | 6 ++++++ src/lib/utils/filters.ts | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib/utils/filters.spec.ts b/src/lib/utils/filters.spec.ts index 2405a67..13b4c0e 100644 --- a/src/lib/utils/filters.spec.ts +++ b/src/lib/utils/filters.spec.ts @@ -79,6 +79,12 @@ describe('filterByRepos', () => { it('returns empty for no match', () => { expect(filterByRepos(items, ['org/missing'])).toHaveLength(0); }); + + it('matches case-insensitively', () => { + const result = filterByRepos(items, ['Org/Alpha']); + expect(result).toHaveLength(1); + expect(result[0].id).toBe('1'); + }); }); describe('filterByLabels', () => { diff --git a/src/lib/utils/filters.ts b/src/lib/utils/filters.ts index 6c38d5e..c6fcfc5 100644 --- a/src/lib/utils/filters.ts +++ b/src/lib/utils/filters.ts @@ -21,7 +21,8 @@ export function filterByDateRange( export function filterByRepos(items: ActivityItem[], repos: string[]): ActivityItem[] { if (repos.length === 0) return items; - return items.filter((i) => repos.includes(i.repo)); + const lower = repos.map((r) => r.toLowerCase()); + return items.filter((i) => lower.includes(i.repo.toLowerCase())); } export function filterByLabels(items: ActivityItem[], labels: string[]): ActivityItem[] { From 3c4f22a1ab90f3a46f243e419e429007c9e49885 Mon Sep 17 00:00:00 2001 From: widal001 Date: Wed, 25 Mar 2026 01:32:22 -0400 Subject: [PATCH 3/6] build: Adds .dev.vars to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 3b462cb..c2044c0 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ Thumbs.db .env.* !.env.example !.env.test +.dev.vars # Vite vite.config.js.timestamp-* From be930dc137ad18b232fd034d849503e11cb326d0 Mon Sep 17 00:00:00 2001 From: widal001 Date: Wed, 25 Mar 2026 08:52:10 -0400 Subject: [PATCH 4/6] feat: Adds bar chart and multi-select for activity types --- src/lib/components/ActivityBarChart.svelte | 345 ++++++++++++++++++ src/lib/components/ActivityTabs.svelte | 141 ++++--- .../components/toolbar/FilterStatus.svelte | 7 +- src/lib/server/github.ts | 2 +- src/lib/stores/activity-filter-store.spec.ts | 8 +- src/lib/stores/activity-filter-store.ts | 37 +- src/lib/stores/dashboard-store.spec.ts | 4 +- src/lib/stores/dashboard-store.ts | 6 +- src/lib/types.ts | 16 +- src/lib/utils/export.spec.ts | 4 +- src/lib/utils/export.ts | 4 +- src/lib/utils/filters.spec.ts | 15 +- src/lib/utils/filters.ts | 9 +- src/routes/results/+page.svelte | 45 ++- 14 files changed, 499 insertions(+), 144 deletions(-) create mode 100644 src/lib/components/ActivityBarChart.svelte diff --git a/src/lib/components/ActivityBarChart.svelte b/src/lib/components/ActivityBarChart.svelte new file mode 100644 index 0000000..9d44ca4 --- /dev/null +++ b/src/lib/components/ActivityBarChart.svelte @@ -0,0 +1,345 @@ + + +{#if allItems.length > 0} +
+
+
+ {#each bars as bar (bar.repo)} +
+ {bar.label} + + {bar.total} +
+ {/each} +
+
+ {#each scaleTicks as tick (tick)} + {tick} + {/each} +
+
+
+ {#each legendGroups as group (group.label)} +
+ {group.label} +
+ {#each group.types as type (type)} + + + {ACTIVITY_TYPE_SHORT_LABELS[type]} + + {/each} +
+
+ {/each} +
+
+{/if} + +{#if tooltip} +
+
{tooltip.repo}
+
{tooltip.line}
+
+{/if} + + diff --git a/src/lib/components/ActivityTabs.svelte b/src/lib/components/ActivityTabs.svelte index 933e76f..fe4ae18 100644 --- a/src/lib/components/ActivityTabs.svelte +++ b/src/lib/components/ActivityTabs.svelte @@ -1,20 +1,22 @@ - -