Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
2163154
fix: resolve lint errors in monorepo
riceharvest Feb 24, 2026
abd5daa
feat(opensourceframework): major modernization and package updates
riceharvest Feb 25, 2026
8efa823
fix: address PR review regressions across core packages
riceharvest Feb 25, 2026
27e5058
Fix PR review issues and stabilize affected package tests
riceharvest Feb 25, 2026
98bb319
Add JSON content-type headers and refine test globals
riceharvest Feb 25, 2026
0a5e30a
Fix mock security issues and align vitest coverage deps
riceharvest Feb 25, 2026
dfc3c7b
Fix PR review findings and stabilize test matrix
riceharvest Feb 25, 2026
4ff67bb
Restore next-csrf package version
riceharvest Feb 25, 2026
df2dc01
Remove next-csrf lint warnings in setup overload
riceharvest Feb 25, 2026
8b36df6
Reduce lint warning noise in shared ESLint config
riceharvest Feb 25, 2026
96d92dd
Tighten ESLint safety checks with scoped browser/test overrides
riceharvest Feb 25, 2026
8c6a407
Scope next-auth browser globals away from API routes
riceharvest Feb 25, 2026
7b75984
Eliminate lint warnings across packages with scoped legacy overrides
riceharvest Feb 25, 2026
1fbaac8
Fix next-csrf setup overload typing for DTS build
riceharvest Feb 25, 2026
d7e682e
Align next-session touchAfter types with runtime duration parsing
riceharvest Feb 25, 2026
cc39a81
Harden CSRF validation and close audit quality gaps
riceharvest Feb 25, 2026
7094627
Stabilize react-virtualized tests for CI matrix
riceharvest Feb 25, 2026
8dd14d7
Hash mock auth passwords in react-query-auth example
riceharvest Feb 25, 2026
c2b8a2f
Raise react-query-auth coverage and remove npm token placeholders
riceharvest Feb 25, 2026
bbc4548
Temporarily skip Windows CI jobs due pnpm registry bootstrap failures
riceharvest Feb 25, 2026
bc0e0b3
Harden parseTime and clean test warning noise
riceharvest Feb 25, 2026
6f6ae7a
Allow next-pwa coverage run with no tests
riceharvest Feb 25, 2026
5df39ca
Pin react-virtualized jsdom for Node 18 CI
riceharvest Feb 25, 2026
3ed6b37
Pin next-seo jsdom for Node 18 Vitest compatibility
riceharvest Feb 26, 2026
9ca6689
Avoid auto-canceling PR CI reruns
riceharvest Feb 26, 2026
b626b4f
Cache pnpm store for CI lifecycles
riceharvest Feb 27, 2026
7f844ae
Add prepare deps job and reuse pnpm store
riceharvest Feb 27, 2026
0f282cf
Adjust prepare-deps artifact naming
riceharvest Feb 27, 2026
374ea9d
Fix next-auth build noise and update workspace dependency security
riceharvest Mar 10, 2026
2acb575
test(next-auth): provide signing and encryption keys in jwt tests
riceharvest Mar 10, 2026
f172507
chore: update workspace devDependencies and fix ESLint 10 linting issues
riceharvest Mar 10, 2026
a01cd80
fix(critters): address security vulnerabilities and functional bugs
riceharvest Mar 10, 2026
9bf31c3
cleanup(critters): remove original source backup file
riceharvest Mar 10, 2026
fa10283
fix(next-cookies): fix useCookies state update and add unit tests
riceharvest Mar 10, 2026
d89f495
chore(next-images): mark as deprecated
riceharvest Mar 10, 2026
4b52e7b
chore(next-pwa): add test:e2e script for better test discoverability
riceharvest Mar 10, 2026
b7ee612
docs: update issue resolution status for next-cookies and next-pwa
riceharvest Mar 10, 2026
b09f242
chore: deprecate next-optimized-images and improve next-pwa tests
riceharvest Mar 10, 2026
5af52c1
feat(next-csrf): add App Router support
riceharvest Mar 10, 2026
1fe942c
fix(next-auth): migrate client tests to Vitest and MSW v2
riceharvest Mar 10, 2026
38edbf4
chore: add changeset for PR #24 updates
riceharvest Mar 11, 2026
47141b2
fix: resolve ESLint config contradiction for example files
riceharvest Mar 11, 2026
22064d1
docs: update modernization plans and issue status based on recent fixes
riceharvest Mar 11, 2026
777d5d6
feat(next-compose-plugins): add async support for Next.js 16 and upda…
riceharvest Mar 11, 2026
7365013
feat(next-transpile-modules): add native transpilePackages support an…
riceharvest Mar 11, 2026
30308f7
feat(next-mdx): modernize with MDX 2/3 support and Vitest migration
riceharvest Mar 11, 2026
1c6bc9b
ci: simplify pnpm caching and resolve artifact failures
riceharvest Mar 11, 2026
af8e02e
fix: delete Python script and add newline
kilo-code-bot[bot] Mar 11, 2026
af4f1da
fix(monorepo): stabilize package readiness
riceharvest Mar 11, 2026
9006a29
fix(monorepo): harden compatibility and CI
riceharvest Mar 11, 2026
d9d3cc4
chore(monorepo): remove lingering lint warnings
riceharvest Mar 11, 2026
5f23f6a
fix(next-mdx-toc): restore workspace dependency
riceharvest Mar 11, 2026
aea2703
chore: retrigger bot reviews
riceharvest Mar 11, 2026
be4fb90
fix(monorepo): address remaining qodo findings
riceharvest Mar 11, 2026
92560be
fix(monorepo): close remaining publish and compat gaps
riceharvest Mar 11, 2026
913838e
fix(ci): sync lockfile and cover next-auth esm exports
riceharvest Mar 11, 2026
56d6cd9
chore: add missing LICENSE files to packages
riceharvest Mar 12, 2026
b624207
chore: clean up stale TODO/FIXME comments and technical debt
riceharvest Mar 12, 2026
a0c35f5
refactor(next-auth): modernize URL handling and remove legacy oauth d…
riceharvest Mar 12, 2026
b790e2c
fix: OAuth2 getAuthorizeUrl, OAuth1 via oauth package, rename test to…
Mar 14, 2026
7afefc6
chore: resolve README.md merge conflict
Mar 14, 2026
9c315ab
chore: add .desloppify to gitignore
Mar 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
37 changes: 37 additions & 0 deletions .changeset/fix-pr23-feedback.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
"@opensourceframework/next-csrf": minor
"@opensourceframework/next-auth": patch
"@opensourceframework/critters": patch
"@opensourceframework/next-cookies": patch
"@opensourceframework/next-pwa": patch
"@opensourceframework/next-images": patch
"@opensourceframework/next-optimized-images": patch
"@opensourceframework/next-iron-session": patch
"@opensourceframework/next-compose-plugins": minor
"@opensourceframework/next-connect": patch
"@opensourceframework/next-transpile-modules": minor
"@opensourceframework/next-json-ld": patch
"@opensourceframework/next-mdx": minor
"@opensourceframework/next-mdx-toc": patch
"@opensourceframework/next-seo": patch
"@opensourceframework/next-session": patch
"@opensourceframework/react-a11y-utils": patch
"@opensourceframework/react-query-auth": patch
"@opensourceframework/react-virtualized": patch
"@opensourceframework/seeded-rng": patch
"@opensourceframework/next-circuit-breaker": patch
---

- **next-csrf**: Added App Router support with `verifyCsrfToken` and automated tests.
- **next-auth**: Migrated client tests to Vitest and MSW v2, resolving CI regressions and modernization requirements.
- **critters**: Fixed security vulnerabilities and functional bugs, and cleaned up source files.
- **next-cookies**: Fixed `useCookies` state update issues and added comprehensive unit tests.
- **next-pwa**: Improved test discoverability and added E2E test scripts.
- **next-images**: Repositioned as a supported compatibility-first fork, removed deprecation metadata, refreshed docs, and added regression tests for webpack behavior.
- **next-optimized-images**: Replaced the vulnerable `imagemin`/`file-type` path with an internal optimizer loader while keeping the compatibility-focused API intact.
- **next-compose-plugins**: Added support for async plugin functions and async `next.config.js` for Next.js 16 compatibility.
- **next-transpile-modules**: Added support for Next.js 13+ native `transpilePackages` for better performance and Turbopack compatibility.
- **next-mdx**: Modernized with current `next-mdx-remote` support, improved config resolution, and removed the prior security advisory.
- **next-mdx-toc**: Migrated to Vitest and verified compatibility with modernized `next-mdx`.
- **react-virtualized**: Stabilized the Vitest/jsdom harness, restored missing test dependencies, and fixed mount-time scrolling regressions.
- **Package metadata**: Published packages now point to the canonical monorepo metadata and include `llms.txt` in tarballs where package-level guidance exists.
11 changes: 11 additions & 0 deletions .github/workflows/bundle-size.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,17 @@ jobs:
- uses: pnpm/action-setup@v3
with:
version: 9

- name: Cache pnpm store
uses: actions/cache@v4
with:
path: |
~/.pnpm-store
~/.local/share/pnpm/store
~/.cache/pnpm
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup Node.js
uses: actions/setup-node@v4
with:
Expand Down
118 changes: 81 additions & 37 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,50 +7,68 @@ on:
branches: [main]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'push' }}

jobs:
prepare-deps:
name: Prepare Dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --frozen-lockfile

# Matrix testing across Node versions and OS
test-matrix:
needs: [prepare-deps]
name: Test (Node ${{ matrix.node }}, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
node: [18, 20, 22]
os: [ubuntu-latest, windows-latest, macos-latest]
os: [ubuntu-latest, macos-latest]
exclude:
# Skip some combinations to reduce CI time
- node: 18
os: windows-latest
- node: 22
os: macos-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 9

- name: Setup Node.js ${{ matrix.node }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Test
run: pnpm test:coverage
if: matrix.os == 'ubuntu-latest' && matrix.node == 20

- name: Test (no coverage)
run: pnpm test
if: matrix.os != 'ubuntu-latest' || matrix.node != 20

- name: Upload Coverage
if: matrix.os == 'ubuntu-latest' && matrix.node == 20
uses: codecov/codecov-action@v4
Expand All @@ -59,75 +77,101 @@ jobs:
fail_ci_if_error: false

lint:
needs: [prepare-deps]
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Lint
run: pnpm lint

typecheck:
needs: [prepare-deps]
name: Type Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Type Check
run: pnpm typecheck

compat:
needs: [prepare-deps]
name: Compatibility Smoke
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Run Compatibility Smoke Checks
run: pnpm test:compat

build:
name: Build
runs-on: ubuntu-latest
needs: [lint, typecheck, test-matrix]
needs: [lint, typecheck, test-matrix, compat]
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build
run: pnpm build

- name: Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
Expand All @@ -136,35 +180,35 @@ jobs:
retention-days: 7

security:
needs: [prepare-deps]
name: Security Audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Run Security Audit
run: pnpm audit --audit-level=moderate
continue-on-error: true

# Snyk security scan for vulnerability detection
# Note: The SNYK_TOKEN is automatically masked by GitHub Actions and will not appear in logs.
# For detailed vulnerability reports, monitor the Snyk dashboard directly at https://snyk.io
# rather than relying solely on CI output.

- name: Run Snyk Security Scan
if: ${{ secrets.SNYK_TOKEN != '' }}
uses: snyk/actions/node@master
continue-on-error: true
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}

- name: Report missing Snyk configuration
if: ${{ secrets.SNYK_TOKEN == '' }}
run: echo "Snyk scan skipped because SNYK_TOKEN is not configured." >> $GITHUB_STEP_SUMMARY
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ jobs:
id: changesets
uses: changesets/action@v1
with:
publish: pnpm release
version: pnpm version-packages
publish: pnpm run publish
version: pnpm run release
commit: 'chore(release): version packages'
title: 'chore(release): version packages'
env:
Expand All @@ -45,4 +45,4 @@ jobs:
- name: Send Notification
if: steps.changesets.outputs.published == 'true'
run: |
echo "Packages were published: ${{ steps.changesets.outputs.publishedPackages }}"
echo "Packages were published: ${{ steps.changesets.outputs.publishedPackages }}"
32 changes: 23 additions & 9 deletions .github/workflows/security-audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,33 +17,47 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 9


- name: Cache pnpm store
uses: actions/cache@v4
with:
path: |
~/.pnpm-store
~/.local/share/pnpm/store
~/.cache/pnpm
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Run npm audit
run: pnpm audit --audit-level=moderate
continue-on-error: true


- name: Run Snyk Security Scan
if: ${{ secrets.SNYK_TOKEN != '' }}
uses: snyk/actions/node@master
continue-on-error: true
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}


- name: Report missing Snyk configuration
if: ${{ secrets.SNYK_TOKEN == '' }}
run: echo "Snyk scan skipped because SNYK_TOKEN is not configured." >> $GITHUB_STEP_SUMMARY

- name: Generate Security Report
if: always()
run: |
echo "## Security Audit Report" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Run completed at: $(date)" >> $GITHUB_STEP_SUMMARY
echo "Run completed at: $(date)" >> $GITHUB_STEP_SUMMARY
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,4 @@ coverage/
.eslintcache

# npm config (contains sensitive tokens)
.desloppify/
9 changes: 1 addition & 8 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1,8 +1 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

# Run lint-staged
npx lint-staged

# Check types (optional - can be slow)
# npx turbo run typecheck --silent
pnpm exec lint-staged
Loading
Loading