Skip to content

Features - #133

Merged
Friedrich482 merged 8 commits into
mainfrom
features
May 1, 2026
Merged

Friedrich482 merged 8 commits into
mainfrom
features

Conversation

@Friedrich482

@Friedrich482 Friedrich482 commented May 1, 2026 •

Copy link
Copy Markdown
Owner

Commits

  • feat: email service

    • added awaiting and error handling + logging in the sendEmail method of the email service
    • removed the sendEmail method of the EmailVerificationsService. This responsibility is offloaded to the EmailService. Removed the corresponding dto and type in the email-verifications.dto
    • in the AuthService, used directly the EmailService to send emails in the createEmailUpdate method and injected the EmailModule in the AuthModule
    • extracted the email logo url from the urls body in a constant, same for the support email
    • placed the bucket used to serve this logo image under a custom domain instead of a public development url
  • fix: invalid token error

    • made the extension check for the type of error received from the server during the fetch of initial data or a periodic data synchronization, and when it is undefined, logs the user out by deleting the token. This can happen if the JWT_SECRET on the server side has been rotated and no longer recognizes the jwt sent by the extension
    • made the data of the error typesafe using a trpc utility isTRPCClientError
  • refactor: trpc error handling and boundaries

    • added the isTRPCClientError function in the trpc file
    • simplified the logic of the retry function of the query client in the dashboard
    • simplified the logic of error handling in the error-boundary of the dashboard (trpc errors), redirect to /login if the error received is UNAUTHORIZED, and the boundary is reset not only when the order of the before and after dates is changed but also when the period changes
  • fix: constants

    • removed unused constants from the constants of the@repo/common package
    • scoped some of those constants to the api only
  • chore: allowed clients and prettier sh plugin

    • removed the ALLOWED_CLIENTS constants and added a function getAllowedClients to retrieve them depending of the NODE_ENV
    • added the prettier-plugin-sh to format bash scripts and Dockerfiles
  • chore: prettier and format

    • added a format command to each app/package
    • added a persistent turbo format command
    • turbo format is the part of the husky pre-commit hook

Summary by CodeRabbit

  • Bug Fixes

    • Improved authentication error handling with automatic logout when session tokens expire
    • Enhanced error recovery with smarter request retry logic based on error type
  • Chores

    • Code formatting standardization across all packages
    • Updated development dependencies to latest compatible versions

- added awaiting and error handling + logging in the sendEmail method of the email service
- removed the sendEmail method of the `EmailVerificationsService`. This responsibility is offloaded to the `EmailService`. Removed the corresponding dto and type in the `email-verifications.dto`
- in the AuthService, used directly the EmailService to send emails in the `createEmailUpdate` method and injected the EmailModule in the AuthModule
- extracted the email logo url from the urls body in a constant, same for the support email
- placed the bucket used to serve this logo image under a custom domain instead of a public development url
- made the extension check for the type of error received from the server during the fetch of initial data or a periodic data synchronization, and when it is undefined, logs the user out by deleting the token. This can happen if the `JWT_SECRET` on the server side has been rotated and no longer recognizes the jwt sent by the extension
- made the data of the error typesafe using a trpc utility `isTRPCClientError`
- added the `isTRPCClientError` function in the trpc file
- simplified the logic of the retry function of the query client in the dashboard
- simplified the logic of error handling in the error-boundary of the dashboard (trpc errors), redirect to /login if the error received is `UNAUTHORIZED`, and the boundary is reset not only when the order of the before and after dates is changed but also when the period changes
- removed unused constants from the constants of the`@repo/common` package
- scoped some of those constants to the api only
- removed the `ALLOWED_CLIENTS` constants and added a function `getAllowedClients` to retrieve them depending of the NODE_ENV
- added the `prettier-plugin-sh` to format bash scripts and Dockerfiles
- added a format command to each app/package
- added a persistent turbo format command
- turbo format is the part of the husky pre-commit hook
@coderabbitai

coderabbitai Bot commented May 1, 2026 •

Copy link
Copy Markdown

Warning

Rate limit exceeded

@Friedrich482 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 32 minutes and 18 seconds before requesting another review.

To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d70b63cd-40d2-41a4-8644-c31031cc091d

📥 Commits

Reviewing files that changed from the base of the PR and between 62e04bc and 9fda8f3.

📒 Files selected for processing (3)
  • apps/vscode-extension/package.json
  • apps/vscode-extension/src/utils/fetch-initial-data.ts
  • apps/vscode-extension/src/utils/periodic-sync-data.ts
📝 Walkthrough

Walkthrough

This pull request implements comprehensive code formatting infrastructure across the monorepo, consolidates distributed error message constants into app-specific locations, refactors email service error handling with Resend response validation, and updates auth origin validation from static to dynamic configuration. Shell script formatting support is added, and tRPC error handling is enhanced with type guards throughout the codebase.

Changes

Cohort / File(s) Summary
Pre-commit & Formatting Infrastructure
.husky/pre-commit, turbo.json, package.json
Establishes automated formatting pipeline: pre-commit hook runs turbo format before linting, new format task added to Turbo, root format script delegates to turbo run format. Prettier upgraded from ^3.5.0/^3.8.1 to ^3.8.3.
API Prettier Configuration
apps/api/.prettierrc, apps/api/.prettierignore, apps/api/package.json
Adds Prettier config with prettier-plugin-sh support for shell scripts, ignores dist/**, updates format script to include TypeScript, shell, and Dockerfile files. Dependencies: prettier-plugin-sh added.
API Docker & Entry Point
apps/api/Dockerfile, apps/api/docker-entrypoint.sh
Formatting and newline normalization only: trailing whitespace removed, indentation standardized, end-of-file newlines added. No functional changes to build steps or entry point logic.
Auth Constants & Guard Migration
apps/api/src/auth/auth.guard.ts, apps/api/src/common/constants.ts, packages/common/src/constants.ts
Replaces ALLOWED_CLIENTS constant with dynamic getAllowedClients() function. Consolidates error messages: COOKIE_OR_TOKEN_NOT_FOUND_MESSAGE moved from packages/common to apps/api/src/common. Removes distributed auth/user error message constants (USER_NOT_FOUND_MESSAGE, INCORRECT_PASSWORD_MESSAGE, ALREADY_EXISTING_*_MESSAGE, INCOHERENT_DATE_RANGE_ERROR_MESSAGE, DASHBOARD_PREVIEW_URL).
Allowed Clients Dynamic Resolution
apps/api/src/common/utils/get-allowed-clients.ts, apps/api/src/auth/utils/validate-state-query-param.ts, apps/api/src/main.ts
Introduces new utility function getAllowedClients() that returns environment-dependent lists of allowed origins (development vs. production ports). CORS and state validation now call this function at runtime instead of using static constant.
Email Service Refactoring
apps/api/src/email/email.service.ts, apps/api/src/email/email.service.spec.ts, apps/api/src/email/constants.ts
Enhances email service with proper Resend response handling: captures result, checks for errors, logs details (message/name/statusCode), throws TRPCError on failure with SUPPORT_EMAIL reference, returns data on success. Adds Logger field. Introduces LOGO_URL and SUPPORT_EMAIL constants. Test quotes converted to double-quotes.
Email Body Templates & Utilities
apps/api/src/email/utils/get-*-email-body.ts (4 files)
Replaces hardcoded image URLs with ${LOGO_URL} constant interpolation across onboarding, password reset, email update, and email update notice templates. Email update notice also sources SUPPORT_EMAIL from constants.
Email Verifications DTO & Service
apps/api/src/email-verifications/email-verifications.dto.ts, apps/api/src/email-verifications/email-verifications.service.ts
Removes SendEmailDto discriminated union and SendEmailDtoType exports. Eliminates dedicated sendEmail wrapper method; call sites now directly invoke this.emailService.sendEmail().
Auth Service Dependency & Logic Updates
apps/api/src/auth/auth.service.ts, apps/api/src/auth/auth.module.ts
Auth service now injects EmailService for "email update notice" notifications (replacing EmailVerificationsService). Error messages ("User not found", "Incorrect password") hardcoded instead of importing constants. Auth module imports EmailModule to access EmailService.
Analytics & Router Formatting
apps/api/src/analytics/dto/common.ts, apps/api/src/analytics/routers/analytics.router.ts
Error message for incoherent date ranges hardcoded to "Start date must be before end date" (removes constant dependency). Router constructor parameter gets trailing comma formatting.
Drizzle Schema Formatting
apps/api/src/drizzle/schema/daily-data.ts, apps/api/src/drizzle/schema/files.ts, apps/api/src/drizzle/schema/password-resets.ts
Trailing comma punctuation updates in pgTable array syntax. No schema logic changes.
TRPC Service Constant Migration
apps/api/src/trpc/trpc.service.ts
Updates COOKIE_OR_TOKEN_NOT_FOUND_MESSAGE import source from @repo/common/constants to @/common/constants.
Dashboard Package & Scripts
apps/dashboard/package.json
Adds format script for TypeScript/TSX files. Prettier updated to ^3.8.3. preview script repositioned.
Dashboard Error Handling & Type Guards
apps/dashboard/src/utils/trpc.ts, apps/dashboard/src/app/app.tsx, apps/dashboard/src/components/errors/error-boundary.tsx
Introduces isTRPCClientError() type predicate for TRPCClientError<AppRouter>. React Query retry logic simplified to use type guard instead of string/JSON parsing. Error boundary strongly typed to TRPCClientError, redirects to /login on UNAUTHORIZED, removes NOT_FOUND navigation, simplifies error message handling, updates resetErrorBoundary logic for period validation.
Dashboard Login Error Detection
apps/dashboard/src/features/auth/components/login-form.tsx
Switches from constant comparison to case-insensitive substring detection: sets password field error when message contains "password", email field error when contains "email".
VSCode Extension Type Guards & Client
apps/vscode-extension/src/utils/trpc/client.ts, apps/vscode-extension/src/utils/errors/handle-invalid-token-error.ts, apps/vscode-extension/src/utils/fetch-initial-data.ts, apps/vscode-extension/src/utils/periodic-sync-data.ts
Adds isTRPCClientError() type predicate for tRPC client error detection. New handleInvalidTokenError() async handler clears token and updates logout state on UNAUTHORIZED errors. Data-sync functions now use type guard and explicit invalid-token handling instead of instanceof checks.
VSCode Extension Config & Scripts
apps/vscode-extension/package.json, apps/vscode-extension/eslint.config.ts, apps/vscode-extension/.vscode-test.ts
Adds format script for TypeScript, prettier dev dependency, lint script targets **/*.ts instead of only src and build.ts, ESLint config adds files: ["**/*.ts"] pattern. Quote style normalized to double-quotes.
VSCode Extension Tests & Docs
apps/vscode-extension/src/test/extension.test.ts, apps/vscode-extension/vsc-extension-quickstart.md, apps/vscode-extension/src/utils/fetch-initial-data.ts, apps/vscode-extension/src/utils/periodic-sync-data.ts
Test file quotes converted to double-quotes, indentation adjusted. Quickstart markdown reformatted: bullet markers from * to -, list spacing normalized. No content changes.
Web App Formatting & Plugins
apps/web/.prettierrc, apps/web/Dockerfile, apps/web/package.json
Prettier config adds prettier-plugin-sh plugin. Dockerfile formatting/newlines normalized. Format script added for TypeScript/TSX/Dockerfile. Prettier dev dependency updated.
Shared Package Configuration
packages/common/package.json, packages/common/.prettierignore, packages/common/src/convert-to-iso-date.ts, packages/trpc/package.json, packages/trpc/.prettierignore, packages/ui/package.json
Each shared package adds .prettierignore (ignores dist/**), format script, and prettier dev dependency. Trailing newline removed from convert-to-iso-date.ts.
UI Components & Utils
packages/ui/src/components/ui/collapsible.tsx, packages/ui/src/components/ui/form.tsx, packages/ui/src/lib/utils.ts
Named export formatting adjusted, FormControl function signature reformatted to multi-line destructuring, clsx import spacing normalized. No logic changes.

Sequence Diagram(s)

sequenceDiagram
    participant Client as Client (Auth Service)
    participant EmailService as EmailService
    participant Resend as Resend API
    participant Handler as Error Handler

    Client->>EmailService: sendEmail(SendEmailDtoType)
    EmailService->>Resend: POST /emails/send (via Resend SDK)
    alt Success Response
        Resend-->>EmailService: { data: { id, ... } }
        EmailService->>EmailService: Await & capture result
        EmailService-->>Client: return result.data
    else Error Response
        Resend-->>EmailService: { error: { message, name, statusCode } }
        EmailService->>EmailService: Await & capture result
        EmailService->>EmailService: log(error.message, error.name, error.statusCode)
        EmailService->>Handler: throw TRPCError(INTERNAL_SERVER_ERROR)
        Handler-->>Client: Error with SUPPORT_EMAIL reference
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Poem

🐰 Hoppy times with prettier code,
Shell scripts now format down the road,
Constants consolidated, neat and clean,
Email errors handled—best we've seen!
Formatted paths from root to leaf,
Type-safe guards bring sweet relief! ✨

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The PR title 'Features' is vague and does not convey meaningful information about the changeset; it uses a non-descriptive term that could apply to any PR adding features. Replace 'Features' with a more specific title that describes the primary change, such as 'Refactor email service, error handling, and code formatting' or 'Add email service improvements and formatting automation.'
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch features

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
Review rate limit: 0/1 reviews remaining, refill in 32 minutes and 18 seconds.

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/api/src/auth/auth.service.ts (1)

307-316: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Handle partial-success flow when notice email fails.

createEmailUpdate can return an error after the verification was already created/sent (step 1 succeeds, notice send at Line 313 fails). That makes the operation externally fail while state has advanced.

Use explicit handling: either treat the notice as best-effort (log and continue) or rollback the created verification before rethrowing.

Suggested direction (best-effort notice variant)
-    await this.emailService.sendEmail({
-      type: "notice email update",
-      email: existingUser.email,
-    });
+    try {
+      await this.emailService.sendEmail({
+        type: "notice email update",
+        email: existingUser.email,
+      });
+    } catch {
+      // Keep primary flow successful; optionally add structured warning log.
+    }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/api/src/auth/auth.service.ts` around lines 307 - 316, The current flow
creates a verification via createEmailVerification and then sends a notice using
emailService.sendEmail; if the notice send fails the operation bubbles up while
the verification was already created. Change this to a best-effort notice: call
emailService.sendEmail inside a try/catch, and on error log the failure (include
context like verificationToken, message, existingUser.email and the caught
error) but do not rethrow so the verification creation is preserved; ensure the
surrounding function (the method containing the calls) still returns the created
verification details (message, verificationToken).
🧹 Nitpick comments (1)
apps/api/src/common/utils/get-allowed-clients.ts (1)

12-20: ⚡ Quick win

Prefer explicit production ports over generated ranges.

The computed DASHBOARD_PRODUCTION_PORT + i range broadens trusted origins implicitly. Since this list is used for credentialed CORS, explicit ports are safer and easier to audit.

Suggested change
-const ALLOWED_CLIENTS_IN_PRODUCTION = Array.from(
-  { length: 6 },
-  (_, i) => DASHBOARD_PRODUCTION_PORT + i,
-)
-  .flatMap((port) => [`http://localhost:${port}`, `http://127.0.0.1:${port}`])
-  .concat([
-    `http://localhost:${DASHBOARD_PREVIEW_PORT}`,
-    `http://127.0.0.1:${DASHBOARD_PREVIEW_PORT}`,
-  ]);
+const ALLOWED_CLIENT_PORTS_IN_PRODUCTION = [
+  DASHBOARD_PRODUCTION_PORT,
+  DASHBOARD_PREVIEW_PORT,
+];
+
+const ALLOWED_CLIENTS_IN_PRODUCTION = ALLOWED_CLIENT_PORTS_IN_PRODUCTION.flatMap(
+  (port) => [`http://localhost:${port}`, `http://127.0.0.1:${port}`],
+);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/api/src/common/utils/get-allowed-clients.ts` around lines 12 - 20,
Replace the implicit range generation in ALLOWED_CLIENTS_IN_PRODUCTION with an
explicit, auditable list of production ports: remove the Array.from(...) +
flatMap logic that generates DASHBOARD_PRODUCTION_PORT + i and instead enumerate
the specific production ports you intend to allow (each producing
http://localhost:PORT and http://127.0.0.1:PORT) and keep the existing entries
for DASHBOARD_PREVIEW_PORT; update the ALLOWED_CLIENTS_IN_PRODUCTION constant so
it only contains those explicit origin strings derived from the specific ports.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.husky/pre-commit:
- Around line 4-6: Replace direct calls to the local turbo binary with npx to
avoid PATH issues: update the commands "turbo format" and "turbo lint" in the
pre-commit hook to use "npx turbo format" and "npx turbo lint" respectively
(leave "git add -u" unchanged) so the hook resolves the local node_modules
binary reliably in environments like VSCode or nvm.

In `@apps/dashboard/src/components/errors/error-boundary.tsx`:
- Around line 55-63: The effect currently calls resetErrorBoundary() on mount
whenever period !== "Custom Range", which can cause immediate retry/thrashing;
change the effect in the component that uses useEffect, customRange.start,
customRange.end, period and resetErrorBoundary to skip the initial mount by
tracking previous values (e.g., a ref like isMountedRef or prevPeriod/prevRange)
and only call resetErrorBoundary when the user actually changes period or date
range compared to the previous values (not on first render); implement the ref
check at the top of the effect and update the prev values after deciding to
reset.

In `@apps/dashboard/src/features/auth/components/login-form.tsx`:
- Around line 54-57: The login form currently routes errors by checking
substrings in errorMessage, which misses AuthService.signIn's "User not found"
text and sends unknown-email to root; update the error handling in the sign-in
flow (where errorMessage is processed and form.setError is called) to inspect
the tRPC error code instead of plain text: map error.code === "NOT_FOUND" to set
form.setError("email", ...) and error.code === "UNAUTHORIZED" to set
form.setError("password", ...), falling back to form.setError("root", ...) for
other cases so inline field feedback works regardless of error wording.

In `@apps/vscode-extension/src/utils/errors/handle-invalid-token-error.ts`:
- Around line 11-13: The current branch only treats error.data?.code ===
"UNAUTHORIZED" as an invalid-token case and skips deletions when code is
undefined; update the condition in handle-invalid-token-error (the block that
calls deleteToken() and setLogoutContextAndStatusBar()) to also trigger when
error.data?.code is undefined (e.g., error.data?.code === "UNAUTHORIZED" ||
error.data?.code === undefined or !("code" in error.data)), so
rotated-JWT-secret or missing-code cases will delete the token and set logout
context/status bar as intended.

In `@apps/vscode-extension/src/utils/fetch-initial-data.ts`:
- Around line 34-38: The catch path currently calls
handleInvalidTokenError(error) without awaiting it, causing race conditions
because handleInvalidTokenError is async and mutates state via deleteToken() and
setLogoutContextAndStatusBar(); update the code in fetch-initial-data.ts so that
inside the isTRPCClientError(error) branch you await
handleInvalidTokenError(error) (i.e., change the call to await
handleInvalidTokenError(error)) and ensure the enclosing function is async so
the await is valid, preserving existing logError(...) and error handling.

---

Outside diff comments:
In `@apps/api/src/auth/auth.service.ts`:
- Around line 307-316: The current flow creates a verification via
createEmailVerification and then sends a notice using emailService.sendEmail; if
the notice send fails the operation bubbles up while the verification was
already created. Change this to a best-effort notice: call
emailService.sendEmail inside a try/catch, and on error log the failure (include
context like verificationToken, message, existingUser.email and the caught
error) but do not rethrow so the verification creation is preserved; ensure the
surrounding function (the method containing the calls) still returns the created
verification details (message, verificationToken).

---

Nitpick comments:
In `@apps/api/src/common/utils/get-allowed-clients.ts`:
- Around line 12-20: Replace the implicit range generation in
ALLOWED_CLIENTS_IN_PRODUCTION with an explicit, auditable list of production
ports: remove the Array.from(...) + flatMap logic that generates
DASHBOARD_PRODUCTION_PORT + i and instead enumerate the specific production
ports you intend to allow (each producing http://localhost:PORT and
http://127.0.0.1:PORT) and keep the existing entries for DASHBOARD_PREVIEW_PORT;
update the ALLOWED_CLIENTS_IN_PRODUCTION constant so it only contains those
explicit origin strings derived from the specific ports.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: bc2a03de-c095-4851-9510-d9762f423e17

📥 Commits

Reviewing files that changed from the base of the PR and between 1c375d5 and 62e04bc.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (59)
  • .husky/pre-commit
  • apps/api/.prettierignore
  • apps/api/.prettierrc
  • apps/api/Dockerfile
  • apps/api/docker-entrypoint.sh
  • apps/api/package.json
  • apps/api/src/analytics/dto/common.ts
  • apps/api/src/analytics/routers/analytics.router.ts
  • apps/api/src/auth/auth.guard.ts
  • apps/api/src/auth/auth.module.ts
  • apps/api/src/auth/auth.service.ts
  • apps/api/src/auth/utils/validate-state-query-param.ts
  • apps/api/src/common/constants.ts
  • apps/api/src/common/utils/get-allowed-clients.ts
  • apps/api/src/drizzle/schema/daily-data.ts
  • apps/api/src/drizzle/schema/files.ts
  • apps/api/src/drizzle/schema/password-resets.ts
  • apps/api/src/email-verifications/email-verifications.dto.ts
  • apps/api/src/email-verifications/email-verifications.service.ts
  • apps/api/src/email/constants.ts
  • apps/api/src/email/email.service.spec.ts
  • apps/api/src/email/email.service.ts
  • apps/api/src/email/utils/get-email-update-email-body.ts
  • apps/api/src/email/utils/get-email-update-notice-email-body.ts
  • apps/api/src/email/utils/get-onboarding-email-body.ts
  • apps/api/src/email/utils/get-password-reset-email-body.ts
  • apps/api/src/extension/extension.service.spec.ts
  • apps/api/src/main.ts
  • apps/api/src/password-resets/password-resets.service.spec.ts
  • apps/api/src/trpc/trpc.service.ts
  • apps/dashboard/package.json
  • apps/dashboard/src/app/app.tsx
  • apps/dashboard/src/components/errors/error-boundary.tsx
  • apps/dashboard/src/features/auth/components/login-form.tsx
  • apps/dashboard/src/utils/trpc.ts
  • apps/vscode-extension/.vscode-test.ts
  • apps/vscode-extension/eslint.config.ts
  • apps/vscode-extension/package.json
  • apps/vscode-extension/src/test/extension.test.ts
  • apps/vscode-extension/src/utils/errors/handle-invalid-token-error.ts
  • apps/vscode-extension/src/utils/fetch-initial-data.ts
  • apps/vscode-extension/src/utils/periodic-sync-data.ts
  • apps/vscode-extension/src/utils/trpc/client.ts
  • apps/vscode-extension/vsc-extension-quickstart.md
  • apps/web/.prettierrc
  • apps/web/Dockerfile
  • apps/web/package.json
  • package.json
  • packages/common/.prettierignore
  • packages/common/package.json
  • packages/common/src/constants.ts
  • packages/common/src/convert-to-iso-date.ts
  • packages/trpc/.prettierignore
  • packages/trpc/package.json
  • packages/ui/package.json
  • packages/ui/src/components/ui/collapsible.tsx
  • packages/ui/src/components/ui/form.tsx
  • packages/ui/src/lib/utils.ts
  • turbo.json
💤 Files with no reviewable changes (3)
  • packages/common/src/convert-to-iso-date.ts
  • apps/api/src/email-verifications/email-verifications.dto.ts
  • packages/common/src/constants.ts

Comment thread .husky/pre-commit
Comment thread apps/dashboard/src/components/errors/error-boundary.tsx
Comment thread apps/dashboard/src/features/auth/components/login-form.tsx
Comment thread apps/vscode-extension/src/utils/fetch-initial-data.ts Outdated
- awaited the handleInvalidTokenError function in the `fetchInitialData` and `periodicSyncData` functions
- bumped the extension version to `v0.0.64`
@Friedrich482
Friedrich482 merged commit e4e873b into main May 1, 2026
1 check passed
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.

1 participant