Skip to content

[Changelog] New Root Changelog.md#1073

Merged
madster456 merged 16 commits intodevfrom
changelog-rework
Jan 8, 2026
Merged

[Changelog] New Root Changelog.md#1073
madster456 merged 16 commits intodevfrom
changelog-rework

Conversation

@madster456
Copy link
Collaborator

@madster456 madster456 commented Dec 18, 2025

Summary by CodeRabbit

  • Documentation

    • Consolidated all release notes into a single root changelog as the authoritative source for all changes
    • Updated individual package changelogs with deprecation notices directing users to the root changelog
    • Removes all changelog.md files from each app/package and consolidates into root changelog.app.
  • Chores

    • Updated build directory exclusions

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel
Copy link

vercel bot commented Dec 18, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
stack-backend Ready Ready Preview, Comment Jan 8, 2026 5:16am
stack-dashboard Ready Ready Preview, Comment Jan 8, 2026 5:16am
stack-demo Ready Ready Preview, Comment Jan 8, 2026 5:16am
stack-docs Ready Ready Preview, Comment Jan 8, 2026 5:16am

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 18, 2025

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

📝 Walkthrough

Walkthrough

Consolidates all changelog documentation into a single root CHANGELOG.md file. Deletes individual CHANGELOG.md files from multiple apps, packages, and examples directories. Adds deprecation notices to select package changelogs, marking them as superseded. Updates .gitignore to ignore a build output directory. Documents the consolidation strategy in a knowledge file.

Changes

Cohort / File(s) Summary
Configuration Updates
.gitignore
Added apps/changelog/out to ignored build directories
Central Changelog
CHANGELOG.md
New root CHANGELOG.md established as single source of truth for Stack Auth changes; documents CalVer-based versioning and historical release records
Deleted App Changelogs
apps/backend/CHANGELOG.md, apps/dashboard/CHANGELOG.md, apps/dev-launchpad/CHANGELOG.md, apps/e2e/CHANGELOG.md, apps/mock-oauth-server/CHANGELOG.md
Deleted entire changelog files spanning versions 2.4.25–2.8.57
Deleted Documentation Changelog
docs/CHANGELOG.md
Deleted entire changelog spanning versions 2.4.25–2.8.57
Deleted Example Changelogs
examples/cjs-test/CHANGELOG.md, examples/convex/CHANGELOG.md, examples/demo/CHANGELOG.md, examples/docs-examples/CHANGELOG.md, examples/e-commerce/CHANGELOG.md, examples/js-example/CHANGELOG.md, examples/lovable-react-18-example/CHANGELOG.md, examples/middleware/CHANGELOG.md, examples/react-example/CHANGELOG.md, examples/supabase/CHANGELOG.md
Deleted entire changelog files from example applications
Deleted Package Changelogs
packages/init-stack/CHANGELOG.md, packages/stack-sc/CHANGELOG.md
Deleted entire changelog files spanning multiple versions
Deprecated Package Changelogs
packages/stack-shared/CHANGELOG.md, packages/stack-ui/CHANGELOG.md, packages/template/CHANGELOG.md
Added deprecation notices directing users to root CHANGELOG.md; existing version history retained
Knowledge Documentation
claude/CLAUDE-KNOWLEDGE.md
Added Q&A entries documenting changelog consolidation strategy, removal of standalone changelog app, and planned server-component-based fetching

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

  • Most changes follow a consistent, repetitive pattern (file deletions)
  • Deprecation notices are straightforward additions with identical messaging
  • Review focus: Verify completeness of deletions and that root CHANGELOG.md adequately documents all consolidated information

Poem

🐰 Hop, hop, the changelogs now unite!
One central source shining bright,
Old scattered notes in storage rest,
One CHANGELOG's surely best!

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is essentially empty, containing only a template reminder comment with no actual explanation of changes, rationale, or implementation details. Add a comprehensive description explaining the changelog consolidation strategy, why old changelogs were deleted, and how the new root CHANGELOG.md will be maintained going forward.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately reflects the main change: consolidating multiple CHANGELOG.md files into a single root CHANGELOG.md with deprecation notices in package changelogs.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Dec 18, 2025

Greptile Summary

This PR introduces a new changelog app that reads and renders the root CHANGELOG.md file. The app provides a clean UI with versioned entries, tags, and metadata.

Critical Issue:

  • The app is configured for static export (output: 'export') but includes an API route at /api/changelog. Static exports don't support API routes, so this endpoint will fail at runtime.

Other Issues:

  • The API route doesn't use SmartRouteHandler as required by project standards
  • Documentation incorrectly claims the API endpoint works

Recommendations:

  • Either remove output: 'export' to enable API routes (and deploy as a dynamic Next.js app)
  • Or remove the /api/changelog route entirely if static export is required
  • If keeping the API route, refactor to use SmartRouteHandler

Confidence Score: 2/5

  • This PR has a critical configuration issue that will break the API endpoint at runtime
  • The app is configured with output: 'export' for static builds, but includes an API route at /api/changelog that won't function. The documentation also claims this endpoint works, creating a misleading experience. Additionally, the API route doesn't follow the project standard of using SmartRouteHandler.
  • Pay close attention to apps/changelog/next.config.mjs and apps/changelog/src/app/api/changelog/route.ts - the static export configuration conflicts with the API route

Important Files Changed

Filename Overview
apps/changelog/next.config.mjs Configured for static export which conflicts with API route
apps/changelog/src/app/api/changelog/route.ts API route won't work with static export, and doesn't use SmartRouteHandler
apps/changelog/README.md Documentation incorrectly claims API endpoint works with static export
apps/changelog/src/lib/parse-changelogs.ts Changelog parsing logic looks clean and correct
apps/changelog/src/app/page.tsx Main changelog page with clean rendering logic

Sequence Diagram

sequenceDiagram
    participant User
    participant Browser
    participant Page as page.tsx
    participant Parser as parse-changelogs.ts
    participant FS as File System
    participant API as api/changelog/route.ts

    User->>Browser: Visit changelog site
    Browser->>Page: Request page
    Page->>Parser: getChangelogEntries()
    Parser->>FS: Read CHANGELOG.md
    FS-->>Parser: Markdown content
    Parser->>Parser: Parse sections & versions
    Parser-->>Page: ChangelogEntry[]
    Page->>Page: Render with ReactMarkdown
    Page-->>Browser: HTML response
    Browser-->>User: Display changelog

    Note over API: ⚠️ API route won't work with<br/>static export configuration

    User->>Browser: GET /api/changelog
    Browser->>API: Request
    API->>Parser: parseRootChangelog()
    Parser->>FS: Read CHANGELOG.md
    FS-->>Parser: Markdown content
    Parser-->>API: entries[]
    API-->>Browser: JSON response
    Browser-->>User: Changelog data
Loading

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

36 files reviewed, 3 comments

Edit Code Review Agent Settings | Greptile

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🧹 Nitpick comments (4)
apps/changelog/src/app/not-found.tsx (1)

3-25: Consider using CSS classes for consistency.

The component uses inline styles (lines 7-17), but the app includes a comprehensive globals.css with existing classes like .empty-state, .container, etc. For consistency and maintainability, consider using these predefined classes instead of inline styles.

🔎 Refactor to use existing CSS classes
 export default function NotFound() {
   return (
     <main>
       <div className="container">
-        <div className="empty-state" style={{ paddingTop: '120px' }}>
-          <h1 style={{ fontSize: '2rem', marginBottom: '16px' }}>Page Not Found</h1>
-          <p style={{ marginBottom: '24px' }}>
+        <div className="empty-state">
+          <h1>Page Not Found</h1>
+          <p>
             The page you&apos;re looking for doesn&apos;t exist.
           </p>
-          <Link 
-            href="https://github.com/" 
-            style={{ 
-              color: 'var(--accent-minor)', 
-              textDecoration: 'underline' 
-            }}
-          >
+          <Link href="https://github.com/">
             ← Back to Changelog
           </Link>
         </div>
       </div>
     </main>
   );
 }

You may need to adjust .empty-state in globals.css to match the desired spacing.

apps/changelog/src/app/api/changelog/route.ts (1)

20-37: Consider removing async keyword if no async operations are performed.

The GET function is marked as async but doesn't contain any await statements. While this isn't incorrect (async functions can be used without await), it adds unnecessary overhead.

🔎 Suggested refactor
-export async function GET() {
+export function GET() {
   const changelogPath = getChangelogPath();
   const entries = parseRootChangelog(getMonorepoRoot());

   return NextResponse.json(
     {
       source: "/CHANGELOG.md",
       updatedAt: getUpdatedAt(changelogPath),
       totalEntries: entries.length,
       entries,
     },
     {
       headers: {
         "Cache-Control": "public, s-maxage=300, stale-while-revalidate=300",
       },
     },
   );
 }
apps/changelog/src/app/page.tsx (1)

85-168: Consider converting to Client Component and fetching from the API route.

Per the coding guidelines: "NEVER use Next.js dynamic functions if you can avoid them; prefer using client components and hooks like usePathname instead of await params to keep pages static."

While this Server Component doesn't use dynamic functions (which is good), the direct file system access could be replaced by fetching from the /api/changelog route you've already created. This would:

  1. Separate concerns (parsing logic from presentation)
  2. Enable client-side data fetching and updates
  3. Leverage the API's caching headers
  4. Align better with the coding guidelines' preference for client components
🔎 Suggested refactor to Client Component
+"use client";
+
+import { useEffect, useState } from "react";
 import ReactMarkdown from "react-markdown";
 import remarkGfm from "remark-gfm";
 import type { ChangelogEntry } from "@/lib/parse-changelogs";
-import { parseRootChangelog } from "@/lib/parse-changelogs";
-import { getMonorepoRoot } from "@/lib/monorepo-root";

-function getChangelogEntries(): ChangelogEntry[] {
-  try {
-    return parseRootChangelog(getMonorepoRoot());
-  } catch (error) {
-    console.error("Failed to parse CHANGELOG.md", error);
-    return [];
-  }
-}

 export default function ChangelogPage() {
-  const entries = getChangelogEntries();
+  const [entries, setEntries] = useState<ChangelogEntry[]>([]);
+  const [isLoading, setIsLoading] = useState(true);
+
+  useEffect(() => {
+    fetch("/api/changelog")
+      .then((res) => res.json())
+      .then((data) => {
+        setEntries(data.entries);
+        setIsLoading(false);
+      })
+      .catch((error) => {
+        console.error("Failed to fetch changelog", error);
+        setIsLoading(false);
+      });
+  }, []);
+
+  if (isLoading) {
+    return <main><div className="container">Loading...</div></main>;
+  }
+
   const unreleased = entries.filter(entry => entry.isUnreleased);
   // ... rest of the component
apps/changelog/src/lib/parse-changelogs.ts (1)

54-54: Consider using a more robust semver regex pattern.

The current semver pattern /^\d+\.\d+\.\d+$/ is basic and may not catch all valid semver formats. While it works for simple x.y.z versions, it doesn't account for pre-release tags or build metadata (e.g., 1.0.0-alpha.1 or 1.0.0+build.123).

If your changelog will only ever contain simple three-part versions, the current pattern is fine. Otherwise, consider a more comprehensive pattern.

🔎 Optional: More comprehensive semver regex
     const heading = versionMatch[1].trim();
     const { version, releasedAt, isUnreleased } = parseVersionHeading(heading);
-    const isSemver = /^\d+\.\d+\.\d+$/.test(version);
+    const isSemver = /^\d+\.\d+\.\d+(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?(\+[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?$/.test(version);

     if (!isUnreleased && !isSemver) {
       continue;
     }

Or simply use a well-tested semver library:

import * as semver from 'semver';
const isSemver = semver.valid(version) !== null;
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c8fe42d and 8885c97.

⛔ Files ignored due to path filters (3)
  • apps/changelog/public/changelog_site.png is excluded by !**/*.png
  • apps/changelog/public/favicon.svg is excluded by !**/*.svg
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (36)
  • .gitignore (1 hunks)
  • CHANGELOG.md (1 hunks)
  • apps/backend/CHANGELOG.md (1 hunks)
  • apps/changelog/README.md (1 hunks)
  • apps/changelog/next.config.mjs (1 hunks)
  • apps/changelog/package.json (1 hunks)
  • apps/changelog/src/app/api/changelog/route.ts (1 hunks)
  • apps/changelog/src/app/globals.css (1 hunks)
  • apps/changelog/src/app/layout.tsx (1 hunks)
  • apps/changelog/src/app/not-found.tsx (1 hunks)
  • apps/changelog/src/app/page.tsx (1 hunks)
  • apps/changelog/src/lib/monorepo-root.ts (1 hunks)
  • apps/changelog/src/lib/parse-changelogs.ts (1 hunks)
  • apps/changelog/tsconfig.json (1 hunks)
  • apps/changelog/vercel.json (1 hunks)
  • apps/dashboard/CHANGELOG.md (1 hunks)
  • apps/dev-launchpad/CHANGELOG.md (1 hunks)
  • apps/dev-launchpad/public/index.html (1 hunks)
  • apps/e2e/CHANGELOG.md (1 hunks)
  • apps/mock-oauth-server/CHANGELOG.md (1 hunks)
  • docs/CHANGELOG.md (1 hunks)
  • examples/cjs-test/CHANGELOG.md (1 hunks)
  • examples/convex/CHANGELOG.md (1 hunks)
  • examples/demo/CHANGELOG.md (1 hunks)
  • examples/docs-examples/CHANGELOG.md (1 hunks)
  • examples/e-commerce/CHANGELOG.md (1 hunks)
  • examples/js-example/CHANGELOG.md (1 hunks)
  • examples/lovable-react-18-example/CHANGELOG.md (1 hunks)
  • examples/middleware/CHANGELOG.md (1 hunks)
  • examples/react-example/CHANGELOG.md (1 hunks)
  • examples/supabase/CHANGELOG.md (1 hunks)
  • packages/init-stack/CHANGELOG.md (1 hunks)
  • packages/stack-sc/CHANGELOG.md (1 hunks)
  • packages/stack-shared/CHANGELOG.md (1 hunks)
  • packages/stack-ui/CHANGELOG.md (1 hunks)
  • packages/template/CHANGELOG.md (1 hunks)
🧰 Additional context used
📓 Path-based instructions (6)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx}: Always add new E2E tests when changing the API or SDK interface
For blocking alerts and errors, never use toast; use alerts instead as they are less easily missed by the user
NEVER try-catch-all, NEVER void a promise, and NEVER .catch(console.error); use loading indicators and async callbacks instead, or use runAsynchronously/runAsynchronouslyWithAlert for error handling
Use ES6 maps instead of records wherever you can

Files:

  • apps/changelog/src/app/page.tsx
  • apps/changelog/src/app/layout.tsx
  • apps/changelog/src/lib/monorepo-root.ts
  • apps/changelog/src/app/api/changelog/route.ts
  • apps/changelog/src/lib/parse-changelogs.ts
  • apps/changelog/src/app/not-found.tsx
**/*.{ts,tsx,css}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx,css}: Keep hover/click transitions snappy and fast; avoid fade-in delays on hover. Apply transitions after action completion instead, like smooth fade-out when hover ends
Use hover-exit transitions instead of hover-enter transitions; for example, use 'transition-colors hover:transition-none' instead of fade-in on hover

Files:

  • apps/changelog/src/app/page.tsx
  • apps/changelog/src/app/layout.tsx
  • apps/changelog/src/lib/monorepo-root.ts
  • apps/changelog/src/app/api/changelog/route.ts
  • apps/changelog/src/lib/parse-changelogs.ts
  • apps/changelog/src/app/globals.css
  • apps/changelog/src/app/not-found.tsx
apps/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

NEVER use Next.js dynamic functions if you can avoid them; prefer using client components and hooks like usePathname instead of await params to keep pages static

Files:

  • apps/changelog/src/app/page.tsx
  • apps/changelog/src/app/layout.tsx
  • apps/changelog/src/lib/monorepo-root.ts
  • apps/changelog/src/app/api/changelog/route.ts
  • apps/changelog/src/lib/parse-changelogs.ts
  • apps/changelog/src/app/not-found.tsx
{.env*,**/*.{ts,tsx,js}}

📄 CodeRabbit inference engine (AGENTS.md)

Prefix environment variables with STACK_ (or NEXT_PUBLIC_STACK_ if public) so changes are picked up by Turborepo and improves readability

Files:

  • apps/changelog/src/app/page.tsx
  • apps/changelog/src/app/layout.tsx
  • apps/changelog/src/lib/monorepo-root.ts
  • apps/changelog/src/app/api/changelog/route.ts
  • apps/changelog/src/lib/parse-changelogs.ts
  • apps/changelog/src/app/not-found.tsx
apps/**/*.tsx

📄 CodeRabbit inference engine (AGENTS.md)

Check existing apps for inspiration when implementing new apps or pages; update apps-frontend.tsx and apps-config.ts to add new apps

Files:

  • apps/changelog/src/app/page.tsx
  • apps/changelog/src/app/layout.tsx
  • apps/changelog/src/app/not-found.tsx
apps/dashboard/**/*

📄 CodeRabbit inference engine (AGENTS.md)

When making changes in the dashboard, provide the user with a deep link to the dashboard page changed, usually in the form of http://localhost:<NEXT_PUBLIC_STACK_PORT_PREFIX>01/projects/-selector-/... or using a.localhost, b.localhost, c.localhost for port prefixes 91, 92, 93

Files:

  • apps/dashboard/CHANGELOG.md
🧠 Learnings (10)
📚 Learning: 2025-12-04T18:03:49.984Z
Learnt from: CR
Repo: stack-auth/stack-auth PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-04T18:03:49.984Z
Learning: Applies to apps/**/*.tsx : Check existing apps for inspiration when implementing new apps or pages; update apps-frontend.tsx and apps-config.ts to add new apps

Applied to files:

  • .gitignore
  • apps/changelog/tsconfig.json
  • apps/changelog/src/app/not-found.tsx
  • apps/dev-launchpad/public/index.html
📚 Learning: 2025-12-04T18:03:49.984Z
Learnt from: CR
Repo: stack-auth/stack-auth PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-04T18:03:49.984Z
Learning: Applies to apps/e2e/**/*.{ts,tsx} : Always add new E2E tests when changing API or SDK interface; err on the side of creating too many tests due to the critical nature of the industry

Applied to files:

  • apps/e2e/CHANGELOG.md
  • apps/changelog/tsconfig.json
📚 Learning: 2025-12-04T18:03:49.984Z
Learnt from: CR
Repo: stack-auth/stack-auth PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-04T18:03:49.984Z
Learning: Applies to **/*.{ts,tsx} : Always add new E2E tests when changing the API or SDK interface

Applied to files:

  • apps/e2e/CHANGELOG.md
  • apps/changelog/tsconfig.json
📚 Learning: 2025-12-04T18:03:49.984Z
Learnt from: CR
Repo: stack-auth/stack-auth PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-04T18:03:49.984Z
Learning: Applies to apps/dashboard/**/* : When making changes in the dashboard, provide the user with a deep link to the dashboard page changed, usually in the form of http://localhost:<NEXT_PUBLIC_STACK_PORT_PREFIX>01/projects/-selector-/... or using a.localhost, b.localhost, c.localhost for port prefixes 91, 92, 93

Applied to files:

  • apps/dashboard/CHANGELOG.md
  • apps/changelog/src/app/not-found.tsx
  • apps/changelog/README.md
📚 Learning: 2025-12-04T18:03:49.984Z
Learnt from: CR
Repo: stack-auth/stack-auth PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-04T18:03:49.984Z
Learning: Applies to packages/{stack,js}/**/* : NEVER UPDATE packages/stack OR packages/js. Instead, update packages/template, as the others are simply copies of that package

Applied to files:

  • packages/stack-ui/CHANGELOG.md
📚 Learning: 2025-12-04T18:03:49.984Z
Learnt from: CR
Repo: stack-auth/stack-auth PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-04T18:03:49.984Z
Learning: Applies to packages/stack-shared/src/config/schema.ts : Whenever making backwards-incompatible changes to the config schema, update the migration functions in packages/stack-shared/src/config/schema.ts

Applied to files:

  • packages/stack-ui/CHANGELOG.md
  • packages/stack-sc/CHANGELOG.md
  • packages/stack-shared/CHANGELOG.md
📚 Learning: 2025-10-11T04:13:19.308Z
Learnt from: N2D4
Repo: stack-auth/stack-auth PR: 943
File: examples/convex/app/action/page.tsx:23-28
Timestamp: 2025-10-11T04:13:19.308Z
Learning: In the stack-auth codebase, use `runAsynchronouslyWithAlert` from `stackframe/stack-shared/dist/utils/promises` for async button click handlers and form submissions instead of manual try/catch blocks. This utility automatically handles errors and shows alerts to users.

Applied to files:

  • packages/stack-ui/CHANGELOG.md
  • examples/js-example/CHANGELOG.md
📚 Learning: 2025-12-04T18:03:49.984Z
Learnt from: CR
Repo: stack-auth/stack-auth PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-04T18:03:49.984Z
Learning: Applies to **/*.{ts,tsx} : Use ES6 maps instead of records wherever you can

Applied to files:

  • apps/changelog/tsconfig.json
📚 Learning: 2025-12-04T18:03:49.984Z
Learnt from: CR
Repo: stack-auth/stack-auth PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-04T18:03:49.984Z
Learning: Run pnpm install to install dependencies, pnpm test run for testing with Vitest, pnpm lint for linting (use --fix flag to auto-fix), pnpm typecheck for type checking

Applied to files:

  • apps/changelog/vercel.json
📚 Learning: 2025-12-04T18:03:49.984Z
Learnt from: CR
Repo: stack-auth/stack-auth PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-04T18:03:49.984Z
Learning: Applies to apps/**/*.{ts,tsx} : NEVER use Next.js dynamic functions if you can avoid them; prefer using client components and hooks like usePathname instead of await params to keep pages static

Applied to files:

  • apps/changelog/src/app/not-found.tsx
🧬 Code graph analysis (3)
apps/changelog/src/app/page.tsx (2)
apps/changelog/src/lib/parse-changelogs.ts (2)
  • ChangelogEntry (6-16)
  • parseRootChangelog (36-97)
apps/changelog/src/lib/monorepo-root.ts (1)
  • getMonorepoRoot (3-5)
apps/changelog/src/lib/monorepo-root.ts (1)
apps/dev-launchpad/scripts/write-env-config.js (1)
  • path (4-4)
apps/changelog/src/app/api/changelog/route.ts (2)
apps/changelog/src/lib/monorepo-root.ts (1)
  • getMonorepoRoot (3-5)
apps/changelog/src/lib/parse-changelogs.ts (1)
  • parseRootChangelog (36-97)
🪛 GitHub Actions: Lint & build
apps/changelog/next.config.mjs

[error] 1-1: Changelog build failed. Command '/home/runner/setup-pnpm/node_modules/.bin/pnpm run build' exited with code 1.

apps/changelog/src/app/page.tsx

[error] 1-1: Changelog build failed. Command '/home/runner/setup-pnpm/node_modules/.bin/pnpm run build' exited with code 1.

apps/changelog/src/app/layout.tsx

[error] 1-1: Changelog build failed. Command '/home/runner/setup-pnpm/node_modules/.bin/pnpm run build' exited with code 1.

apps/changelog/src/lib/monorepo-root.ts

[error] 1-1: Changelog build failed. Command '/home/runner/setup-pnpm/node_modules/.bin/pnpm run build' exited with code 1.

apps/changelog/package.json

[error] 1-1: Changelog build failed. Command '/home/runner/setup-pnpm/node_modules/.bin/pnpm run build' exited with code 1.

apps/changelog/src/app/api/changelog/route.ts

[error] 1-1: Changelog build failed. Command '/home/runner/setup-pnpm/node_modules/.bin/pnpm run build' exited with code 1.

apps/changelog/src/lib/parse-changelogs.ts

[error] 1-1: Changelog build failed. Command '/home/runner/setup-pnpm/node_modules/.bin/pnpm run build' exited with code 1.

apps/changelog/tsconfig.json

[error] 1-1: Changelog build failed. Command '/home/runner/setup-pnpm/node_modules/.bin/pnpm run build' exited with code 1.

apps/changelog/src/app/globals.css

[error] 1-1: Changelog build failed. Command '/home/runner/setup-pnpm/node_modules/.bin/pnpm run build' exited with code 1.

apps/changelog/vercel.json

[error] 1-1: Changelog build failed. Command '/home/runner/setup-pnpm/node_modules/.bin/pnpm run build' exited with code 1.

apps/changelog/src/app/not-found.tsx

[error] 1-1: Changelog build failed. Command '/home/runner/setup-pnpm/node_modules/.bin/pnpm run build' exited with code 1.

apps/changelog/README.md

[error] 1-1: Changelog build failed. Command '/home/runner/setup-pnpm/node_modules/.bin/pnpm run build' exited with code 1.

🪛 GitHub Actions: Runs E2E API Tests
apps/changelog/next.config.mjs

[error] 1-1: Changelog build failed. Command 'pnpm run build' exited with code 1.

apps/changelog/src/app/page.tsx

[error] 1-1: Changelog build failed. Command 'pnpm run build' exited with code 1.

apps/changelog/src/app/layout.tsx

[error] 1-1: Changelog build failed. Command 'pnpm run build' exited with code 1.

apps/changelog/src/lib/monorepo-root.ts

[error] 1-1: Changelog build failed. Command 'pnpm run build' exited with code 1.

apps/changelog/package.json

[error] 1-1: Changelog build failed. Command 'pnpm run build' exited with code 1.

apps/changelog/src/app/api/changelog/route.ts

[error] 1-1: Changelog build failed. Command 'pnpm run build' exited with code 1.

apps/changelog/src/lib/parse-changelogs.ts

[error] 1-1: Changelog build failed. Command 'pnpm run build' exited with code 1.

apps/changelog/tsconfig.json

[error] 1-1: Changelog build failed. Command 'pnpm run build' exited with code 1.

apps/changelog/src/app/globals.css

[error] 1-1: Changelog build failed. Command 'pnpm run build' exited with code 1.

apps/changelog/vercel.json

[error] 1-1: Changelog build failed. Command 'pnpm run build' exited with code 1.

apps/changelog/src/app/not-found.tsx

[error] 1-1: Changelog build failed. Command 'pnpm run build' exited with code 1.

apps/changelog/README.md

[error] 1-1: Changelog build failed. Command 'pnpm run build' exited with code 1.

🪛 LanguageTool
CHANGELOG.md

[style] ~73-~73: ‘prior to’ might be wordy. Consider a shorter alternative.
Context: ...ency updates --- > Note: Versions prior to 2.8.50 can be found in the individual p...

(EN_WORDINESS_PREMIUM_PRIOR_TO)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: check_prisma_migrations (22.x)
  • GitHub Check: all-good
  • GitHub Check: Vercel Agent Review
  • GitHub Check: restart-dev-and-test-with-custom-base-port
  • GitHub Check: setup-tests-with-custom-base-port
  • GitHub Check: setup-tests
  • GitHub Check: docker
  • GitHub Check: restart-dev-and-test
🔇 Additional comments (28)
examples/middleware/CHANGELOG.md (1)

1-2: Clear and consistent deprecation notice.

The warning is well-formatted and directs users to the centralized root changelog. This maintains backward compatibility while guiding toward the new structure.

.gitignore (1)

45-45: Correct build output directory excluded.

The apps/changelog/out entry properly ignores the static export output from the new Next.js changelog app, preventing build artifacts from being committed.

examples/js-example/CHANGELOG.md (1)

1-2: Consistent deprecation guidance.

Aligns with the repository-wide deprecation pattern.

examples/cjs-test/CHANGELOG.md (1)

1-2: Consistent deprecation guidance.

Aligns with the repository-wide deprecation pattern.

packages/stack-shared/CHANGELOG.md (1)

1-2: Consistent deprecation guidance.

Aligns with the repository-wide deprecation pattern.

packages/template/CHANGELOG.md (1)

1-2: Consistent deprecation guidance.

Aligns with the repository-wide deprecation pattern.

apps/mock-oauth-server/CHANGELOG.md (1)

1-2: Consistent deprecation guidance.

Aligns with the repository-wide deprecation pattern.

examples/react-example/CHANGELOG.md (1)

1-2: Consistent deprecation guidance.

Aligns with the repository-wide deprecation pattern.

apps/dev-launchpad/public/index.html (1)

327-336: Changelog app entry looks good.

The addition properly registers the new changelog app in the dev launchpad with appropriate configuration:

  • Port suffix "09" matches the changelog app's configured port (8109 with default prefix)
  • Importance level 1 is appropriate for a utility/documentation app
  • Clear description and icon

Configuration verified: The changelog app's package.json specifies the same port suffix "09" as assigned in the dev-launchpad entry.

examples/e-commerce/CHANGELOG.md (1)

1-2: Deprecation notice is clear and well-placed.

The deprecation notice effectively redirects users to the root /CHANGELOG.md. This change is consistently applied across all per-package CHANGELOG files, including the 7 files mentioned in this PR: examples/e-commerce, packages/stack-sc, examples/lovable-react-18-example, examples/supabase, packages/init-stack, packages/stack-ui, and examples/convex.

Consider adding automation to prevent future updates to these deprecated changelogs:

#!/bin/bash
# Verify that the root CHANGELOG.md exists as the single source of truth
if [ ! -f "CHANGELOG.md" ]; then
  echo "ERROR: Root CHANGELOG.md not found"
  exit 1
fi

# Check if the deprecation notice is present in all per-package CHANGELOGs
echo "Verifying deprecation notices in per-package CHANGELOGs..."
fd --type f --full-path "CHANGELOG.md" --exec grep -L "This CHANGELOG is deprecated" {} \; | grep -v "^\./CHANGELOG.md$"
examples/demo/CHANGELOG.md (1)

1-2: LGTM! Clear deprecation notice.

The deprecation notice effectively directs users to the new centralized changelog location. This aligns well with the PR's goal of establishing the root CHANGELOG.md as the single source of truth.

examples/docs-examples/CHANGELOG.md (1)

1-2: LGTM! Consistent deprecation notice.

The deprecation notice matches the pattern used across other CHANGELOG files in this PR, maintaining consistency.

apps/changelog/vercel.json (1)

1-6: LGTM! Vercel configuration is appropriate for static export.

The configuration correctly specifies the build command and output directory for a Next.js static export setup.

CHANGELOG.md (1)

1-22: LGTM! Well-structured changelog with clear guidelines.

The root CHANGELOG.md effectively serves as the single source of truth with clear instructions for contributors on how to add entries. The format is consistent and follows semantic versioning practices.

apps/changelog/tsconfig.json (1)

1-40: LGTM! Standard Next.js TypeScript configuration.

The TypeScript configuration follows Next.js best practices with appropriate compiler options for a modern Next.js application.

apps/e2e/CHANGELOG.md (1)

1-2: LGTM! Consistent deprecation notice.

The deprecation notice appropriately directs users to the centralized root changelog, maintaining consistency with other deprecated CHANGELOG files in this PR.

apps/dev-launchpad/CHANGELOG.md (1)

1-2: LGTM! Clear deprecation notice.

The deprecation warning is well-formatted and clearly directs users to the new centralized changelog location.

docs/CHANGELOG.md (1)

1-2: LGTM! Consistent deprecation notice.

The deprecation notice matches the pattern used across other changelog files, maintaining consistency throughout the migration.

apps/backend/CHANGELOG.md (1)

1-2: LGTM! Deprecation notice added.

Consistent with the repository-wide changelog migration strategy.

apps/dashboard/CHANGELOG.md (1)

1-2: LGTM! Deprecation notice matches pattern.

All deprecated changelog files now consistently point users to the root /CHANGELOG.md.

apps/changelog/next.config.mjs (1)

1-10: LGTM! Correct configuration for static export.

The Next.js configuration properly sets up static site generation with output: 'export' and disables image optimization, which is required for static exports.

apps/changelog/README.md (1)

1-47: LGTM! Comprehensive and well-structured documentation.

The README clearly explains the changelog app's purpose, development workflow, authoring guidelines, and API access. The documentation will be valuable for both developers and contributors.

apps/changelog/src/app/globals.css (1)

1-378: LGTM! Well-architected global stylesheet.

The CSS provides a comprehensive theming system with:

  • Semantic color variables for light and dark modes
  • Consistent typography and spacing
  • Accessible color contrast
  • Smooth animations and transitions
  • Responsive design patterns

The stylesheet follows modern CSS best practices and will provide a solid foundation for the changelog UI.

apps/changelog/src/app/api/changelog/route.ts (1)

11-18: LGTM: Proper error handling for file stat operations.

The getUpdatedAt function correctly handles potential errors from fs.statSync and returns null on failure, which is a safe fallback pattern.

apps/changelog/src/app/page.tsx (1)

7-14: LGTM: Error handling with safe fallback.

The getChangelogEntries function properly catches parsing errors and returns an empty array as a safe fallback, preventing the page from crashing on malformed changelog files.

apps/changelog/src/lib/parse-changelogs.ts (2)

36-97: LGTM: Well-structured changelog parser with appropriate error handling.

The parseRootChangelog function is well-implemented:

  • Safely handles missing changelog files by returning an empty array
  • Correctly splits sections by version headings
  • Properly filters out invalid version formats
  • Extracts metadata (tags, dates, change types) accurately
  • Normalizes markdown while preserving structure

The synchronous file system operations are appropriate for build-time parsing in a Node.js context.


18-34: LGTM: Clean tag extraction logic.

The parseTaggedBullet function correctly extracts multiple leading tags from bullet points while preserving the remaining text. The while loop with proper bounds checking prevents infinite loops.

apps/changelog/src/app/layout.tsx (1)

1-36: The build failure is environment-specific, not a code issue.

The pipeline fails with exit code 1, but the error is ENOENT: no such file or directory, uv_resident_set_memory — a system-level Node.js/libuv syscall error. This occurs in the CI sandbox environment and is unrelated to the code changes in layout.tsx. The code itself is syntactically correct, TypeScript types are valid, imports resolve properly, and the Next.js configuration is correctly set for static export. The suggested common causes (TypeScript errors, missing dependencies, path resolution issues, invalid configuration) do not apply here. This requires investigation of the CI build environment rather than changes to the application code.

@cmux-agent
Copy link

cmux-agent bot commented Dec 19, 2025

Older cmux preview screenshots (latest comment is below)

Preview Screenshots

Open Diff Heatmap

Preview screenshots are being captured...

Workspace and dev browser links will appear here once the preview environment is ready.


Generated by cmux preview system

@cmux-agent
Copy link

cmux-agent bot commented Dec 19, 2025

Older cmux preview screenshots (latest comment is below)

Preview Screenshots

Open Diff Heatmap

Preview screenshots are being captured...

Workspace and dev browser links will appear here once the preview environment is ready.


Generated by cmux preview system

@cmux-agent
Copy link

cmux-agent bot commented Dec 19, 2025

Older cmux preview screenshots (latest comment is below)

Preview Screenshots

Open Diff Heatmap

Preview screenshots are being captured...

Workspace and dev browser links will appear here once the preview environment is ready.


Generated by cmux preview system

@cmux-agent
Copy link

cmux-agent bot commented Dec 19, 2025

Older cmux preview screenshots (latest comment is below)

Preview Screenshots

Open Diff Heatmap

Preview screenshots are being captured...

Workspace and dev browser links will appear here once the preview environment is ready.


Generated by cmux preview system

@cmux-agent
Copy link

cmux-agent bot commented Dec 22, 2025

Older cmux preview screenshots (latest comment is below)

Preview Screenshots

Open Diff Heatmap

Preview screenshots are being captured...

Workspace and dev browser links will appear here once the preview environment is ready.


Generated by cmux preview system

@madster456 madster456 changed the title [Changelog] New changelog app [Changelog] New Root Changelog.md Dec 29, 2025
@madster456
Copy link
Collaborator Author

@N2D4 Reminder here.

@cmux-agent
Copy link

cmux-agent bot commented Jan 8, 2026

Preview Screenshots

Open Diff Heatmap

Preview screenshots are being captured...

Workspace and dev browser links will appear here once the preview environment is ready.


Generated by cmux preview system

Copy link

@vercel vercel bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additional Suggestions:

  1. The files field references CHANGELOG.md, but this file has been deleted. The file will not be included in the published npm package.
View Details
📝 Patch Details
diff --git a/packages/init-stack/package.json b/packages/init-stack/package.json
index 626007ee..b00d449d 100644
--- a/packages/init-stack/package.json
+++ b/packages/init-stack/package.json
@@ -33,7 +33,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "homepage": "https://stack-auth.com",
diff --git a/packages/js/package.json b/packages/js/package.json
index 179ba2bd..dc7b30f4 100644
--- a/packages/js/package.json
+++ b/packages/js/package.json
@@ -45,7 +45,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
@@ -84,4 +83,4 @@
     "tsup": "^8.0.2",
     "convex": "^1.27.0"
   }
-}
\ No newline at end of file
+}
diff --git a/packages/react/package.json b/packages/react/package.json
index e9600a8b..d9b54da3 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -53,7 +53,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
@@ -108,4 +107,4 @@
     "tsup": "^8.0.2",
     "convex": "^1.27.0"
   }
-}
\ No newline at end of file
+}
diff --git a/packages/stack-sc/package.json b/packages/stack-sc/package.json
index c317224e..fdf414e4 100644
--- a/packages/stack-sc/package.json
+++ b/packages/stack-sc/package.json
@@ -26,7 +26,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "peerDependencies": {
diff --git a/packages/stack-shared/package.json b/packages/stack-shared/package.json
index d2bd8a6f..c6e49814 100644
--- a/packages/stack-shared/package.json
+++ b/packages/stack-shared/package.json
@@ -12,7 +12,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "exports": {
diff --git a/packages/stack-ui/package.json b/packages/stack-ui/package.json
index eafc2a21..cd25c9d6 100644
--- a/packages/stack-ui/package.json
+++ b/packages/stack-ui/package.json
@@ -14,7 +14,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "exports": {
diff --git a/packages/stack/package.json b/packages/stack/package.json
index 4eee0021..8699f8a1 100644
--- a/packages/stack/package.json
+++ b/packages/stack/package.json
@@ -53,7 +53,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
@@ -116,4 +115,4 @@
     "tsup": "^8.0.2",
     "convex": "^1.27.0"
   }
-}
\ No newline at end of file
+}
diff --git a/packages/template/package.json b/packages/template/package.json
index 7e124325..db2a548f 100644
--- a/packages/template/package.json
+++ b/packages/template/package.json
@@ -58,7 +58,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
@@ -121,4 +120,4 @@
     "tsup": "^8.0.2",
     "convex": "^1.27.0"
   }
-}
\ No newline at end of file
+}

Analysis

package.json files field references missing CHANGELOG.md in 8 packages

What fails: The files field in package.json for 8 packages (@stackframe/init-stack, @stackframe/js, @stackframe/react, @stackframe/stack-sc, @stackframe/stack-shared, @stackframe/stack-ui, @stackframe/stack, @stackframe/template) lists CHANGELOG.md, but this file does not exist in any of these package directories.

How to reproduce:

# Check packages/init-stack as an example:
ls packages/init-stack/CHANGELOG.md  # File does not exist
grep "CHANGELOG.md" packages/init-stack/package.json  # Listed in files field

Result: When npm publishes these packages, the non-existent CHANGELOG.md file is silently omitted from the published tarball (verified with npm pack testing). This creates a mismatch between what the package.json declares will be included and what is actually published.

Expected behavior: The files field should only reference files that actually exist in the package directory. Since individual CHANGELOG.md files were consolidated into a single root CHANGELOG.md per the commit history, these references should be removed.

Fix applied: Removed CHANGELOG.md from the files array in all 8 affected package.json files:

  • packages/init-stack/package.json
  • packages/js/package.json
  • packages/react/package.json
  • packages/stack-sc/package.json
  • packages/stack-shared/package.json
  • packages/stack-ui/package.json
  • packages/stack/package.json
  • packages/template/package.json
2. The `files` field references `CHANGELOG.md`\, but this file has been deleted\. The file will not be included in the published npm package\.
View Details
📝 Patch Details
diff --git a/packages/init-stack/package.json b/packages/init-stack/package.json
index 626007ee..b00d449d 100644
--- a/packages/init-stack/package.json
+++ b/packages/init-stack/package.json
@@ -33,7 +33,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "homepage": "https://stack-auth.com",
diff --git a/packages/js/package.json b/packages/js/package.json
index 179ba2bd..1d87d810 100644
--- a/packages/js/package.json
+++ b/packages/js/package.json
@@ -45,7 +45,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
diff --git a/packages/react/package.json b/packages/react/package.json
index e9600a8b..c0ea00fd 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -53,7 +53,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
diff --git a/packages/stack-sc/package.json b/packages/stack-sc/package.json
index c317224e..fdf414e4 100644
--- a/packages/stack-sc/package.json
+++ b/packages/stack-sc/package.json
@@ -26,7 +26,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "peerDependencies": {
diff --git a/packages/stack-shared/package.json b/packages/stack-shared/package.json
index d2bd8a6f..c6e49814 100644
--- a/packages/stack-shared/package.json
+++ b/packages/stack-shared/package.json
@@ -12,7 +12,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "exports": {
diff --git a/packages/stack-ui/package.json b/packages/stack-ui/package.json
index eafc2a21..cd25c9d6 100644
--- a/packages/stack-ui/package.json
+++ b/packages/stack-ui/package.json
@@ -14,7 +14,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "exports": {
diff --git a/packages/stack/package.json b/packages/stack/package.json
index 4eee0021..a3aaa635 100644
--- a/packages/stack/package.json
+++ b/packages/stack/package.json
@@ -53,7 +53,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
diff --git a/packages/template/package-template.json b/packages/template/package-template.json
index f6df6332..1055b618 100644
--- a/packages/template/package-template.json
+++ b/packages/template/package-template.json
@@ -81,7 +81,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
diff --git a/packages/template/package.json b/packages/template/package.json
index 7e124325..acde1c9f 100644
--- a/packages/template/package.json
+++ b/packages/template/package.json
@@ -58,7 +58,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {

Analysis

Missing CHANGELOG.md in npm package distributions

What fails: The files field in all package.json files (packages/react, packages/js, packages/stack, packages/stack-shared, packages/stack-ui, packages/stack-sc, packages/init-stack) references CHANGELOG.md, but this file does not exist in any package directory. When npm publishes these packages, the missing file is silently skipped, resulting in incomplete package distributions.

How to reproduce:

cd packages/react
npm pack --dry-run
# Shows: "total files: 1" (only package.json)
# Expected: CHANGELOG.md would be included if it existed

The root repository has a consolidated CHANGELOG.md at ./CHANGELOG.md, but the package-specific CHANGELOG.md files were removed as documented in the root changelog: "All older changelogs are deprecated and have been removed. The source of true is this single changelog file."

Result: npm silently skips the missing CHANGELOG.md files per npm package.json documentation - while no error is raised, the files are simply not included in the package, leaving the files field referencing non-existent files.

Fix: Removed CHANGELOG.md from the files array in:

  • packages/template/package-template.json (template source for generated packages)
  • packages/react/package.json (regenerated)
  • packages/js/package.json (regenerated)
  • packages/stack/package.json (regenerated)
  • packages/stack-shared/package.json
  • packages/stack-ui/package.json
  • packages/stack-sc/package.json
  • packages/init-stack/package.json
3. The `files` field references `CHANGELOG.md`\, but this file has been deleted\. The file will not be included in the published npm package\.
View Details
📝 Patch Details
diff --git a/packages/stack-shared/package.json b/packages/stack-shared/package.json
index d2bd8a6f..c6e49814 100644
--- a/packages/stack-shared/package.json
+++ b/packages/stack-shared/package.json
@@ -12,7 +12,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "exports": {

Analysis

CHANGELOG.md referenced in files field but file does not exist

What fails: The files field in packages/stack-shared/package.json references CHANGELOG.md, but this file does not exist in the package directory. When the package is published via npm publish, the referenced file is silently omitted from the tarball since npm only searches for files relative to the package directory (not the repository root).

How to reproduce:

cd packages/stack-shared
npm pack --dry-run
# Examine output - shows only: LICENSE, package.json
# CHANGELOG.md is NOT included despite being in the files array

Result: npm pack shows "total files: 2" (LICENSE and package.json only). CHANGELOG.md is not included in the package, even though it's explicitly listed in the files array.

Expected: According to npm publish documentation, if a file is listed in the files array, it should be included in the package. The files field should only reference files that exist in the package directory (or will exist after build). Since CHANGELOG.md does not exist in packages/stack-shared/, it should be removed from the files array.

Additional context: npm automatically includes CHANGELOG files but only if they exist in the package's directory. The monorepo root has a CHANGELOG.md, but npm doesn't search there when publishing a workspace package.

4. The `files` field references `CHANGELOG.md`\, but this file has been deleted\. The file will not be included in the published npm package\.
View Details
📝 Patch Details
diff --git a/packages/stack-ui/package.json b/packages/stack-ui/package.json
index eafc2a21..1ffc4f66 100644
--- a/packages/stack-ui/package.json
+++ b/packages/stack-ui/package.json
@@ -12,9 +12,6 @@
     "lint": "eslint --ext .tsx,.ts ."
   },
   "files": [
-    "README.md",
-    "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "exports": {

Analysis

Invalid files array entries in packages/stack-ui/package.json

What fails: The files field in packages/stack-ui/package.json references four entries (README.md, dist, CHANGELOG.md, LICENSE), but three of them don't exist in the directory. While npm doesn't error, it silently skips missing files, leading to a misconfigured package.json that's out of sync with the repository structure.

How to reproduce:

# Verify files don't exist in packages/stack-ui
ls packages/stack-ui/CHANGELOG.md    # NOT_EXISTS
ls packages/stack-ui/README.md       # NOT_EXISTS  
ls packages/stack-ui/dist            # NOT_EXISTS

# Check what npm actually includes
cd packages/stack-ui && npm pack --dry-run
# Only 2 files included: LICENSE and package.json
# (README.md, dist, CHANGELOG.md are silently skipped)

Result: The files array listed four entries but only LICENSE actually exists locally. Per npm's Files & Ignores documentation, npm does not warn when files references non-existent files—it simply omits them from the package. This is identified as issue #8791 in npm/cli.

Expected behavior: The files array should only reference files that actually exist in the packages/stack-ui directory. The consolidated CHANGELOG.md exists at the repository root (for the entire Stack Auth project), not in the individual package directory.

Fix: Removed non-existent entries (README.md, dist, CHANGELOG.md) from the files array, keeping only LICENSE which actually exists.

5. The `files` field references `CHANGELOG.md`\, but this file has been deleted\. The file will not be included in the published npm package\.
View Details
📝 Patch Details
diff --git a/packages/js/package.json b/packages/js/package.json
index 179ba2bd..1d87d810 100644
--- a/packages/js/package.json
+++ b/packages/js/package.json
@@ -45,7 +45,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
diff --git a/packages/react/package.json b/packages/react/package.json
index e9600a8b..c0ea00fd 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -53,7 +53,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
diff --git a/packages/stack/package.json b/packages/stack/package.json
index 4eee0021..a3aaa635 100644
--- a/packages/stack/package.json
+++ b/packages/stack/package.json
@@ -53,7 +53,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
diff --git a/packages/template/package-template.json b/packages/template/package-template.json
index f6df6332..1055b618 100644
--- a/packages/template/package-template.json
+++ b/packages/template/package-template.json
@@ -81,7 +81,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
diff --git a/packages/template/package.json b/packages/template/package.json
index 7e124325..acde1c9f 100644
--- a/packages/template/package.json
+++ b/packages/template/package.json
@@ -58,7 +58,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {

Analysis

Missing CHANGELOG.md reference removed from package files field

What fails: The template file packages/template/package-template.json references a non-existent CHANGELOG.md in the files field (line 84). This file doesn't exist in individual package directories (e.g., packages/stack/CHANGELOG.md). The project consolidated all changelogs into a single CHANGELOG.md at the repository root, making individual package changelogs deprecated.

How to reproduce:

# Verify the file is missing in packages/stack
ls -la packages/stack/CHANGELOG.md
# Output: ls: cannot access 'packages/stack/CHANGELOG.md': No such file or directory

# Verify the template references it
grep "CHANGELOG.md" packages/template/package-template.json
# Output: "CHANGELOG.md",

Result: The npm files field listed a non-existent file. While npm silently skips missing files (per npm issue #6582), having outdated references is confusing for maintainers and doesn't reflect the current consolidated changelog structure established in the root CHANGELOG.md.

Expected: The files field should only reference files that actually exist in the package directories. Removed CHANGELOG.md from the template (which auto-generates all package.json files), updated all affected packages: packages/stack, packages/js, packages/react, and packages/template.

Verification: After the fix, npm pack correctly lists only files that exist (README.md, LICENSE, and dist when built), with no references to missing CHANGELOG.md files.

6. The `files` field references `CHANGELOG.md`\, but this file has been deleted\. The file will not be included in the published npm package\.
View Details
📝 Patch Details
diff --git a/packages/template/package-template.json b/packages/template/package-template.json
index f6df6332..1055b618 100644
--- a/packages/template/package-template.json
+++ b/packages/template/package-template.json
@@ -81,7 +81,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
diff --git a/packages/template/package.json b/packages/template/package.json
index 7e124325..acde1c9f 100644
--- a/packages/template/package.json
+++ b/packages/template/package.json
@@ -58,7 +58,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {

Analysis

Removed non-existent CHANGELOG.md reference from package.json files array

What fails: The files array in packages/template/package.json and packages/template/package-template.json lists CHANGELOG.md, but this file does not exist in the packages/template/ directory. When npm publishes the package, npm silently skips the missing file and excludes it from the tarball.

How to reproduce:

cd packages/template
npm pack --dry-run

Result: Before fix - Tarball lists 3 files (LICENSE, README.md, package.json). CHANGELOG.md is not included in the tarball, despite being listed in the files array. The reporter expected the file to be included but npm silently skips it.

Expected: Files listed in the files array should either exist or be removed. The changelog has been consolidated into the repository root (./CHANGELOG.md), so the reference in the package template is outdated.

Verification: According to npm's Files & Ignores documentation, npm does not warn when files explicitly referenced in the files array don't exist. This is a known limitation tracked in npm issue #8791. The fix removes the stale reference to match the actual file structure.

7. The `files` field references `CHANGELOG.md`\, but this file has been deleted\. The file will not be included in the published npm package\.
View Details
📝 Patch Details
diff --git a/packages/js/package.json b/packages/js/package.json
index 179ba2bd..1d87d810 100644
--- a/packages/js/package.json
+++ b/packages/js/package.json
@@ -45,7 +45,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
diff --git a/packages/react/package.json b/packages/react/package.json
index e9600a8b..c0ea00fd 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -53,7 +53,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
diff --git a/packages/stack/package.json b/packages/stack/package.json
index 4eee0021..a3aaa635 100644
--- a/packages/stack/package.json
+++ b/packages/stack/package.json
@@ -53,7 +53,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
diff --git a/packages/template/package-template.json b/packages/template/package-template.json
index f6df6332..1055b618 100644
--- a/packages/template/package-template.json
+++ b/packages/template/package-template.json
@@ -81,7 +81,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {
diff --git a/packages/template/package.json b/packages/template/package.json
index 7e124325..acde1c9f 100644
--- a/packages/template/package.json
+++ b/packages/template/package.json
@@ -58,7 +58,6 @@
   "files": [
     "README.md",
     "dist",
-    "CHANGELOG.md",
     "LICENSE"
   ],
   "dependencies": {

Analysis

Incorrect reference to non-existent CHANGELOG.md in published npm packages

What fails: The files field in packages/template/package-template.json (and generated package.json files for other packages) references CHANGELOG.md, but this file does not exist in the individual package directories. The file is silently skipped during npm publishing.

How to reproduce:

cd packages/template
npm pack --dry-run

Result: The tarball contents show 3 files (LICENSE, README.md, package.json) instead of 4. The CHANGELOG.md entry in the files array is silently ignored by npm because the file doesn't exist in the package directory.

Expected: According to npm package.json files documentation, the files field lists entries to be included when the package is installed as a dependency. Files listed but not present are simply skipped, which indicates a stale configuration. The monorepo uses a consolidated changelog at the root level (per the deprecation notice in CHANGELOG.md), so individual package changelogs are no longer needed.

Fix: Removed CHANGELOG.md from the files array in packages/template/package-template.json (line 84). The generation script automatically propagated this fix to all derived package.json files (packages/js, packages/react, packages/stack).

@madster456 madster456 merged commit 50ffd37 into dev Jan 8, 2026
23 checks passed
@madster456 madster456 deleted the changelog-rework branch January 8, 2026 05:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants