Developer
Ben Gubler
nebrelbug@gmail.com
Performance
Key patterns and highlights from this developer's activity.
Breakdown of growth, maintenance, and fixes effort over time.
Bugs introduced vs. fixed over time.
Reclassifies engineering effort based on bug attribution. Commits that introduced bugs are retrospectively counted as poor investments.
Investment Quality reclassifies engineering effort based on bug attribution data. Commits identified as buggy origins (those that introduced bugs later fixed by someone) have their grow and maintenance time moved into the Wasted Time category. Their waste (fix commits) remains counted as productive. All other commits retain their standard classification: grow is productive, maintenance is maintenance, and waste (fixes) is productive.
The standard model classifies commits as Growth, Maintenance, or Fixes. Investment Quality adds a quality lens: a commit that introduced a bug is retrospectively counted as a poor investment — the engineering time spent on it was wasted because it ultimately required additional fix work. Fix commits (Fixes in the standard model) are reframed as productive, because fixing bugs is valuable work.
Currently computed client-side from commit and bug attribution data. Ideal server-side endpoint:
POST /v1/organizations/{orgId}/investment-quality
Content-Type: application/json
Request:
{
"startTime": "2025-01-01T00:00:00Z",
"endTime": "2025-12-31T23:59:59Z",
"bucketSize": "BUCKET_SIZE_MONTH",
"groupBy": ["repository_id" | "deliverer_email"]
}
Response:
{
"productivePct": 74,
"maintenancePct": 18,
"wastedPct": 8,
"buckets": [
{
"bucketStart": "2025-01-01T00:00:00Z",
"productive": 4.2,
"maintenance": 1.8,
"wasted": 0.6
}
]
}Latest analyzed commits from this developer.
| Hash | Message | Date | Files | Effort |
|---|---|---|---|---|
| 3cbf85d | This commit performs a **maintenance upgrade** of Biome to version 2.4.2 across all `create-next-app` templates. A significant **feature enhancement** is the introduction of **first-class Tailwind CSS support** within Biome configurations for relevant templates, achieved by enabling directive parsing and removing the `noUnknownAtRules` linter override. This ensures that new Next.js projects generated with `create-next-app` that utilize Biome and Tailwind will benefit from proper linting and formatting of Tailwind-specific syntax. The update also includes a general schema version bump for all `biome.json` files and updates the `@biomejs/biome` dependency in `index.ts`. | Mar 27 | 20 | grow |
| 7429f7c | This commit introduces a significant **refactoring** of the **route discovery logic**, extracting duplicated collection, mapping, and processing into a unified `discoverRoutes()` API within new modules `build/route-discovery.ts` and `build/file-classifier.ts`. This streamlines the **build process**, **CLI type generation**, **development server bundler**, and **MCP tools** by replacing disparate implementations with a single, consistent interface. Additionally, it **fixes a bug** in the **dev bundler**'s `hasRootAppNotFound` detection and delivers **performance improvements** by parallelizing app file mapping and eliminating redundant directory traversals. The change results in a more robust, efficient, and maintainable system for handling route information across the application. | Feb 6 | 13 | waste |
| 41e3942 | This commit **removes the automatic ESLint linting** that previously ran during the `next build` process, representing a **major architectural change** for Next.js 16. It streamlines the **Next.js build system** by eliminating the integrated linting step, giving developers explicit control over when linting occurs. The change involved removing lint-related code, including `verifyAndLint.ts` and `runLint` parameters, simplifying type checking, and updating **documentation** and numerous **example project `package.json` files** to reflect this new workflow. This impacts **developer workflow** by requiring manual lint execution and potentially improves **build performance**. | Oct 8 | 132 | maint |
| 9de3daa | This commit is a **bug fix** that **improves TypeScript compatibility** for the **Next.js `typed-routes-validator` feature**. It **removes the `satisfies` keyword** from the generated type validation code within `packages/next/src/server/lib/router-utils/typegen.ts`, specifically in the `generateValidatorFile` function. This change ensures that the generated validator files are compatible with **older TypeScript versions**, preventing syntax errors for users not on the latest TS releases. The nature of this work is to **preserve broader compatibility** for the type generation utility. Corresponding **e2e tests** for the `typed-routes-validator` were updated in `test/e2e/app-dir/typed-routes-validator/typed-routes-validator.test.ts` to reflect the adjusted generated code and error messages. | Sep 1 | 2 | maint |
| 635f7fd | This commit **fixes** an issue within the **Next.js TypeScript type declaration generation** by **removing redundant POSIX path normalization**. Specifically, the `writeAppTypeDeclarations` function in `packages/next/src/lib/typescript/writeAppTypeDeclarations.ts` now directly uses the original path for route type declarations, rather than applying unnecessary POSIX normalization to import directives. This **improves the accuracy and efficiency** of generated type declarations for application routes, ensuring import paths are correctly represented without superfluous processing. | Sep 1 | 1 | waste |
| 9fc907f | This commit introduces a **new capability** to **`create-next-app`** by automatically running `next typegen` after a new Next.js project is created. This **feature enhancement** ensures that **route type definitions** are immediately available, significantly improving the **developer experience** for TypeScript users by providing proper type support from the start. A new `runTypegen()` helper is integrated into the main app creation flow (`createApp`) and the template installation process (`installTemplate`), with robust error handling to prevent interruptions during setup. This change streamlines the initial project configuration, making type-safe routing readily accessible. | Aug 29 | 3 | grow |
| 2880238 | This commit **fixes a bug** in the **type generation** for **Pages API routes** within Next.js. It corrects the return type definition in the validator, changing it from a specific `Promise<Response | void> | Response | void` union to a more general `unknown | Promise<unknown>`, which better accommodates various API handler implementations. This ensures that the generated types for API route handlers are accurate and flexible, impacting the `typegen.ts` utility and improving the overall type safety for developers using Pages API routes. A corresponding **test route** was updated to validate this change, ensuring the `NextApiHandler` type is correctly handled. | Aug 27 | 2 | waste |
| a4fe3db | This commit **fixes a bug** in the **Typed Routes** feature where `next dev` generated incorrect, overly deep relative import paths within the `validator.ts` file. Previously, the `startWatcher` function in `packages/next/src/server/lib/router-utils/setup-dev-bundler.ts` pre-relativized page file paths and failed to pass the `validatorFilePath`, causing discrepancies with `next typegen` and `next build`. The **bug fix** modifies `setup-dev-bundler.ts` to correctly provide the `validatorFilePath` and use absolute file names when calling `createRouteTypesManifest`. This ensures `validator.ts` now produces shallow, consistent relative imports across `next dev`, `next typegen`, and `next build`, improving the reliability of type validation during development. | Aug 27 | 1 | waste |
| b352f9b | This commit implements a **bug fix** by modifying the default **Biome linter configuration** within several **`create-next-app` templates**. Specifically, the `noUnknownAtRules` rule is now entirely disabled, changing its setting from `warn` to `off` in the `biome.json` files for all JavaScript and TypeScript templates that include Tailwind CSS. This change prevents new Next.js projects from generating warnings or potential build failures due to unknown CSS at-rules, thereby improving the initial developer experience and reducing unnecessary linter noise. The affected templates include `app-tw-empty`, `app-tw`, `default-tw-empty`, and `default-tw`. | Aug 26 | 8 | maint |
| af62463 | This commit provides a **bug fix** by updating the TypeScript configuration in several `create-next-app` templates to properly support **typed links** within the **Pages Router**. Specifically, it adds `".next/types/**/*.ts"` to the `include` array in `tsconfig.json` files for default, default-empty, default-tw, and default-tw-empty templates. This change ensures that newly created Pages Router projects correctly resolve types for links, a feature previously only functional in the App Router due to a forgotten template update. As a result, developers using `create-next-app` will now have full type-safety for their links in Pages Router applications. | Aug 25 | 4 | waste |
| 8d3d827 | This commit implements a **temporary bug fix** for the **Biome linter configuration** within **`create-next-app` templates** that utilize **Tailwind CSS**. It modifies the `biome.json` files across various `app-tw` and `default-tw` templates (for both JavaScript and TypeScript) to set the `noUnknownAtRules` rule to `warn`. This **workaround** prevents build failures caused by Biome incorrectly flagging Tailwind's custom at-rules as unknown, allowing projects to lint successfully until an official Biome update is released. The immediate impact is a smoother initial setup experience for new Next.js projects using Tailwind, as linting will now produce warnings instead of critical errors. | Aug 24 | 8 | waste |
| 11c9953 | This commit introduces **path normalization** to the `getRelativePath` function within the **Next.js server's router utilities** (`packages/next/src/server/lib/router-utils/route-types-utils.ts`). This **bug fix** specifically addresses issues with path separators on **Windows environments**, ensuring that paths are correctly resolved regardless of the operating system. By normalizing paths, it prevents potential routing or file resolution errors for developers working on Windows, improving cross-platform compatibility for the **server-side routing logic**. | Aug 22 | 1 | waste |
| 332e73e | This commit introduces a **new feature** that enhances the **`next/navigation` module** by adding **type safety** to the `redirect()` and `permanentRedirect()` functions. When `config.typedRoutes` is enabled, this change provides compile-time validation for redirect paths, preventing common runtime errors from invalid routes. It involves new type generation logic within `router-utils/typegen.ts` and is thoroughly validated through comprehensive end-to-end and integration tests, ensuring correct behavior for both valid and invalid route scenarios. This significantly improves developer experience by catching routing mistakes earlier in the development cycle. | Aug 21 | 5 | maint |
| b56d1e1 | This commit **enhances the Next.js type generation system** to provide **typesafe linking for App Router API routes and Pages Router API routes**. It **extends the `generateLinkTypesFile` utility** within `packages/next/src/server/lib/router-utils/typegen.ts` to correctly include these API endpoints in the generated type definitions. This **new capability** ensures that developers receive compile-time checks when constructing links to API routes, significantly improving code reliability and developer experience within the **typed linking functionality**. New e2e tests were added to verify the correct generation and inclusion of these API routes in the type definitions. | Aug 21 | 4 | maint |
| ae9261f | This commit introduces an **optimization** to the **Next.js server-side routing utility's type generation process**. It **fixes** an issue where `AppRoutes`, `LayoutRoutes`, `ParamMap`, and various metadata types were unconditionally imported into the generated validator files. Now, these types are **conditionally imported** within `packages/next/src/server/lib/router-utils/typegen.ts` only when they are explicitly required by the validator, thereby **reducing unnecessary dependencies and improving build efficiency**. This change helps streamline the type generation, particularly for projects that may not utilize all routing features. | Aug 20 | 1 | waste |
| e785643 | This commit **fixes a type definition bug** for **Next.js API routes** and **route handlers**, specifically addressing issue #82842. It updates the generated type definitions in `packages/next/src/server/lib/router-utils/typegen.ts` to correctly support `Promise<Response | void> | Response | void` as valid return types. This change ensures more accurate type checking for API endpoint return values, improving the developer experience by aligning type definitions with actual usage patterns. | Aug 20 | 1 | waste |
| cad24f4 | This commit **fixes** an inaccuracy in the type definition for the `config.api.responseLimit` option within the **Next.js API configuration**. It updates the type in `packages/next/src/server/lib/router-utils/typegen.ts` to explicitly include `boolean` as a valid type, alongside existing options. This **maintenance** change addresses a limitation in JavaScript type inference, ensuring that developers can correctly set `responseLimit` to `false` without encountering type errors. The update improves the robustness and accuracy of the **API configuration types**, aligning them with actual runtime behavior. | Aug 20 | 1 | waste |
| 77bb702 | This commit **updates the documentation** for the `next build` command, specifically clarifying the behavior and future status of the `--no-lint` option. It adds an important note to `docs/01-app/03-api-reference/06-cli/next.mdx` explaining that this option will eventually be removed. This **documentation enhancement** ensures users are aware of the upcoming deprecation, allowing them to adjust their build processes and avoid reliance on a feature that will no longer be supported. The change primarily impacts users consulting the **CLI reference documentation** for Next.js, providing crucial information for **maintenance** and future planning. | Aug 19 | 1 | maint |
| 91da003 | This commit **fixes outdated documentation** by updating references to the linting command from `next lint` to `eslint`. It specifically targets the **installation guide** (`docs/01-app/01-getting-started/01-installation.mdx`) and the **Cypress testing guide** (`docs/01-app/02-guides/testing/cypress.mdx`). This **documentation maintenance** ensures that users following these guides are provided with the correct and current command for running lint checks, thereby improving the accuracy of the **developer experience documentation**. | Aug 19 | 2 | maint |
| 408920c | This commit provides a **bug fix** within the **`next-codemod`** package, specifically targeting the `next-lint-to-eslint-cli.ts` transform. It resolves a potential null access issue within the `updateExistingFlatConfig` function. By implementing optional chaining and providing a default empty array, the codemod now safely accesses properties of array elements, preventing runtime errors. This enhancement improves the **robustness and reliability** of the CLI transformation process, ensuring it can handle various configuration states without unexpected crashes. | Aug 19 | 1 | waste |
This commit performs a **maintenance upgrade** of Biome to version 2.4.2 across all `create-next-app` templates. A significant **feature enhancement** is the introduction of **first-class Tailwind CSS support** within Biome configurations for relevant templates, achieved by enabling directive parsing and removing the `noUnknownAtRules` linter override. This ensures that new Next.js projects generated with `create-next-app` that utilize Biome and Tailwind will benefit from proper linting and formatting of Tailwind-specific syntax. The update also includes a general schema version bump for all `biome.json` files and updates the `@biomejs/biome` dependency in `index.ts`.
This commit introduces a significant **refactoring** of the **route discovery logic**, extracting duplicated collection, mapping, and processing into a unified `discoverRoutes()` API within new modules `build/route-discovery.ts` and `build/file-classifier.ts`. This streamlines the **build process**, **CLI type generation**, **development server bundler**, and **MCP tools** by replacing disparate implementations with a single, consistent interface. Additionally, it **fixes a bug** in the **dev bundler**'s `hasRootAppNotFound` detection and delivers **performance improvements** by parallelizing app file mapping and eliminating redundant directory traversals. The change results in a more robust, efficient, and maintainable system for handling route information across the application.
This commit **removes the automatic ESLint linting** that previously ran during the `next build` process, representing a **major architectural change** for Next.js 16. It streamlines the **Next.js build system** by eliminating the integrated linting step, giving developers explicit control over when linting occurs. The change involved removing lint-related code, including `verifyAndLint.ts` and `runLint` parameters, simplifying type checking, and updating **documentation** and numerous **example project `package.json` files** to reflect this new workflow. This impacts **developer workflow** by requiring manual lint execution and potentially improves **build performance**.
This commit is a **bug fix** that **improves TypeScript compatibility** for the **Next.js `typed-routes-validator` feature**. It **removes the `satisfies` keyword** from the generated type validation code within `packages/next/src/server/lib/router-utils/typegen.ts`, specifically in the `generateValidatorFile` function. This change ensures that the generated validator files are compatible with **older TypeScript versions**, preventing syntax errors for users not on the latest TS releases. The nature of this work is to **preserve broader compatibility** for the type generation utility. Corresponding **e2e tests** for the `typed-routes-validator` were updated in `test/e2e/app-dir/typed-routes-validator/typed-routes-validator.test.ts` to reflect the adjusted generated code and error messages.
This commit **fixes** an issue within the **Next.js TypeScript type declaration generation** by **removing redundant POSIX path normalization**. Specifically, the `writeAppTypeDeclarations` function in `packages/next/src/lib/typescript/writeAppTypeDeclarations.ts` now directly uses the original path for route type declarations, rather than applying unnecessary POSIX normalization to import directives. This **improves the accuracy and efficiency** of generated type declarations for application routes, ensuring import paths are correctly represented without superfluous processing.
This commit introduces a **new capability** to **`create-next-app`** by automatically running `next typegen` after a new Next.js project is created. This **feature enhancement** ensures that **route type definitions** are immediately available, significantly improving the **developer experience** for TypeScript users by providing proper type support from the start. A new `runTypegen()` helper is integrated into the main app creation flow (`createApp`) and the template installation process (`installTemplate`), with robust error handling to prevent interruptions during setup. This change streamlines the initial project configuration, making type-safe routing readily accessible.
This commit **fixes a bug** in the **type generation** for **Pages API routes** within Next.js. It corrects the return type definition in the validator, changing it from a specific `Promise<Response | void> | Response | void` union to a more general `unknown | Promise<unknown>`, which better accommodates various API handler implementations. This ensures that the generated types for API route handlers are accurate and flexible, impacting the `typegen.ts` utility and improving the overall type safety for developers using Pages API routes. A corresponding **test route** was updated to validate this change, ensuring the `NextApiHandler` type is correctly handled.
This commit **fixes a bug** in the **Typed Routes** feature where `next dev` generated incorrect, overly deep relative import paths within the `validator.ts` file. Previously, the `startWatcher` function in `packages/next/src/server/lib/router-utils/setup-dev-bundler.ts` pre-relativized page file paths and failed to pass the `validatorFilePath`, causing discrepancies with `next typegen` and `next build`. The **bug fix** modifies `setup-dev-bundler.ts` to correctly provide the `validatorFilePath` and use absolute file names when calling `createRouteTypesManifest`. This ensures `validator.ts` now produces shallow, consistent relative imports across `next dev`, `next typegen`, and `next build`, improving the reliability of type validation during development.
This commit implements a **bug fix** by modifying the default **Biome linter configuration** within several **`create-next-app` templates**. Specifically, the `noUnknownAtRules` rule is now entirely disabled, changing its setting from `warn` to `off` in the `biome.json` files for all JavaScript and TypeScript templates that include Tailwind CSS. This change prevents new Next.js projects from generating warnings or potential build failures due to unknown CSS at-rules, thereby improving the initial developer experience and reducing unnecessary linter noise. The affected templates include `app-tw-empty`, `app-tw`, `default-tw-empty`, and `default-tw`.
This commit provides a **bug fix** by updating the TypeScript configuration in several `create-next-app` templates to properly support **typed links** within the **Pages Router**. Specifically, it adds `".next/types/**/*.ts"` to the `include` array in `tsconfig.json` files for default, default-empty, default-tw, and default-tw-empty templates. This change ensures that newly created Pages Router projects correctly resolve types for links, a feature previously only functional in the App Router due to a forgotten template update. As a result, developers using `create-next-app` will now have full type-safety for their links in Pages Router applications.
This commit implements a **temporary bug fix** for the **Biome linter configuration** within **`create-next-app` templates** that utilize **Tailwind CSS**. It modifies the `biome.json` files across various `app-tw` and `default-tw` templates (for both JavaScript and TypeScript) to set the `noUnknownAtRules` rule to `warn`. This **workaround** prevents build failures caused by Biome incorrectly flagging Tailwind's custom at-rules as unknown, allowing projects to lint successfully until an official Biome update is released. The immediate impact is a smoother initial setup experience for new Next.js projects using Tailwind, as linting will now produce warnings instead of critical errors.
This commit introduces **path normalization** to the `getRelativePath` function within the **Next.js server's router utilities** (`packages/next/src/server/lib/router-utils/route-types-utils.ts`). This **bug fix** specifically addresses issues with path separators on **Windows environments**, ensuring that paths are correctly resolved regardless of the operating system. By normalizing paths, it prevents potential routing or file resolution errors for developers working on Windows, improving cross-platform compatibility for the **server-side routing logic**.
This commit introduces a **new feature** that enhances the **`next/navigation` module** by adding **type safety** to the `redirect()` and `permanentRedirect()` functions. When `config.typedRoutes` is enabled, this change provides compile-time validation for redirect paths, preventing common runtime errors from invalid routes. It involves new type generation logic within `router-utils/typegen.ts` and is thoroughly validated through comprehensive end-to-end and integration tests, ensuring correct behavior for both valid and invalid route scenarios. This significantly improves developer experience by catching routing mistakes earlier in the development cycle.
This commit **enhances the Next.js type generation system** to provide **typesafe linking for App Router API routes and Pages Router API routes**. It **extends the `generateLinkTypesFile` utility** within `packages/next/src/server/lib/router-utils/typegen.ts` to correctly include these API endpoints in the generated type definitions. This **new capability** ensures that developers receive compile-time checks when constructing links to API routes, significantly improving code reliability and developer experience within the **typed linking functionality**. New e2e tests were added to verify the correct generation and inclusion of these API routes in the type definitions.
This commit introduces an **optimization** to the **Next.js server-side routing utility's type generation process**. It **fixes** an issue where `AppRoutes`, `LayoutRoutes`, `ParamMap`, and various metadata types were unconditionally imported into the generated validator files. Now, these types are **conditionally imported** within `packages/next/src/server/lib/router-utils/typegen.ts` only when they are explicitly required by the validator, thereby **reducing unnecessary dependencies and improving build efficiency**. This change helps streamline the type generation, particularly for projects that may not utilize all routing features.
This commit **fixes a type definition bug** for **Next.js API routes** and **route handlers**, specifically addressing issue #82842. It updates the generated type definitions in `packages/next/src/server/lib/router-utils/typegen.ts` to correctly support `Promise<Response | void> | Response | void` as valid return types. This change ensures more accurate type checking for API endpoint return values, improving the developer experience by aligning type definitions with actual usage patterns.
This commit **fixes** an inaccuracy in the type definition for the `config.api.responseLimit` option within the **Next.js API configuration**. It updates the type in `packages/next/src/server/lib/router-utils/typegen.ts` to explicitly include `boolean` as a valid type, alongside existing options. This **maintenance** change addresses a limitation in JavaScript type inference, ensuring that developers can correctly set `responseLimit` to `false` without encountering type errors. The update improves the robustness and accuracy of the **API configuration types**, aligning them with actual runtime behavior.
This commit **updates the documentation** for the `next build` command, specifically clarifying the behavior and future status of the `--no-lint` option. It adds an important note to `docs/01-app/03-api-reference/06-cli/next.mdx` explaining that this option will eventually be removed. This **documentation enhancement** ensures users are aware of the upcoming deprecation, allowing them to adjust their build processes and avoid reliance on a feature that will no longer be supported. The change primarily impacts users consulting the **CLI reference documentation** for Next.js, providing crucial information for **maintenance** and future planning.
This commit **fixes outdated documentation** by updating references to the linting command from `next lint` to `eslint`. It specifically targets the **installation guide** (`docs/01-app/01-getting-started/01-installation.mdx`) and the **Cypress testing guide** (`docs/01-app/02-guides/testing/cypress.mdx`). This **documentation maintenance** ensures that users following these guides are provided with the correct and current command for running lint checks, thereby improving the accuracy of the **developer experience documentation**.
This commit provides a **bug fix** within the **`next-codemod`** package, specifically targeting the `next-lint-to-eslint-cli.ts` transform. It resolves a potential null access issue within the `updateExistingFlatConfig` function. By implementing optional chaining and providing a default empty array, the codemod now safely accesses properties of array elements, preventing runtime errors. This enhancement improves the **robustness and reliability** of the CLI transformation process, ensuring it can handle various configuration states without unexpected crashes.
Commit activity distribution by hour and day of week. Shows when this developer is most active.
Developers who frequently work on the same files and symbols. Higher score means stronger code collaboration.