From 701dcb6203fa76741eeb5ab2f1a9e0c07e724290 Mon Sep 17 00:00:00 2001 From: njevric Date: Wed, 13 May 2026 00:17:10 +0200 Subject: [PATCH 1/4] ci: add npm publish workflow --- .github/workflows/publish.yml | 39 +++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..afa9508 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,39 @@ +name: Publish + +on: + release: + types: [published] + +permissions: + contents: read + id-token: write + +jobs: + publish: + name: Publish to npm + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + registry-url: https://registry.npmjs.org + + - name: Install dependencies + run: npm ci + + - name: Lint + run: npm run lint + + - name: Typecheck + run: npm run typecheck + + - name: Publish + run: npm publish --provenance + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} From d286f57ddd7954231993b0fc89e0eb7d7f664c78 Mon Sep 17 00:00:00 2001 From: njevric Date: Wed, 20 May 2026 23:24:14 +0200 Subject: [PATCH 2/4] chore: upgrade publish workflow to node 24 --- .github/workflows/publish.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index afa9508..94b486c 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -20,7 +20,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 24 cache: npm registry-url: https://registry.npmjs.org @@ -33,6 +33,9 @@ jobs: - name: Typecheck run: npm run typecheck + - name: Build + run: npm run build + - name: Publish run: npm publish --provenance env: From f1dcd0ae3c41a239fc198e71a08151d098f935f7 Mon Sep 17 00:00:00 2001 From: njevric Date: Wed, 20 May 2026 23:30:02 +0200 Subject: [PATCH 3/4] fix: correct repository url casing in package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 46af128..6a904eb 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "license": "MIT", "repository": { "type": "git", - "url": "git+https://github.com/njevric/packy-dev.git" + "url": "git+https://github.com/NJevric/packy-dev.git" }, "bugs": { "url": "https://github.com/njevric/packy-dev/issues" From d7413a9b2a3369c5942c54696c68a92049a96bb1 Mon Sep 17 00:00:00 2001 From: njevric Date: Thu, 21 May 2026 22:55:49 +0200 Subject: [PATCH 4/4] feat: monorepo implementation with duplicate diff version checker and UI changes of package detail view --- .github/workflows/publish.yml | 42 -- .gitignore | 3 + src/client/App.vue | 2 + src/client/components/WorkspaceSwitcher.vue | 94 +++ .../components/dashboard/DuplicatesCard.vue | 150 +++++ .../components/packages/DownloadsChart.vue | 276 +++++++++ .../components/packages/HealthGauge.vue | 98 +++ src/client/composables/useDownloadTrend.ts | 19 + src/client/composables/useDuplicates.ts | 13 + src/client/composables/usePackages.ts | 17 +- src/client/composables/useSmartFilters.ts | 6 +- src/client/router.ts | 10 + src/client/stores/workspace.ts | 27 + src/client/views/DashboardView.vue | 2 + src/client/views/PackageDetailView.vue | 581 +++++++++++------- src/server/index.ts | 2 +- src/server/routes/packages.ts | 34 +- src/server/routes/project.ts | 60 +- src/server/routes/registry.ts | 14 +- src/server/services/registryClient.ts | 36 +- src/server/services/workspaces.ts | 214 +++++++ src/shared/types.ts | 20 + test/server/workspaces.test.ts | 113 ++++ 23 files changed, 1550 insertions(+), 283 deletions(-) delete mode 100644 .github/workflows/publish.yml create mode 100644 src/client/components/WorkspaceSwitcher.vue create mode 100644 src/client/components/dashboard/DuplicatesCard.vue create mode 100644 src/client/components/packages/DownloadsChart.vue create mode 100644 src/client/components/packages/HealthGauge.vue create mode 100644 src/client/composables/useDownloadTrend.ts create mode 100644 src/client/composables/useDuplicates.ts create mode 100644 src/client/stores/workspace.ts create mode 100644 src/server/services/workspaces.ts create mode 100644 test/server/workspaces.test.ts diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index 94b486c..0000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Publish - -on: - release: - types: [published] - -permissions: - contents: read - id-token: write - -jobs: - publish: - name: Publish to npm - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 24 - cache: npm - registry-url: https://registry.npmjs.org - - - name: Install dependencies - run: npm ci - - - name: Lint - run: npm run lint - - - name: Typecheck - run: npm run typecheck - - - name: Build - run: npm run build - - - name: Publish - run: npm publish --provenance - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.gitignore b/.gitignore index 194dca9..144174b 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ coverage/ # TypeScript *.tsbuildinfo + +# Local monorepo fixture for testing the workspace feature +test-monorepo/ diff --git a/src/client/App.vue b/src/client/App.vue index 8ebc79a..d892af3 100644 --- a/src/client/App.vue +++ b/src/client/App.vue @@ -11,6 +11,7 @@ import { } from 'radix-vue' import { useTheme } from '@/composables/useTheme' import { Button } from '@/components/ui/button' +import WorkspaceSwitcher from '@/components/WorkspaceSwitcher.vue' const { theme, setTheme } = useTheme() @@ -31,6 +32,7 @@ const themeOptions = [
Packy +
+
diff --git a/src/client/views/PackageDetailView.vue b/src/client/views/PackageDetailView.vue index cc89bf5..7a49080 100644 --- a/src/client/views/PackageDetailView.vue +++ b/src/client/views/PackageDetailView.vue @@ -1,17 +1,37 @@