Skip to content

Conversation

@github-actions
Copy link
Contributor

@github-actions github-actions bot commented Aug 3, 2025

This is an automated pull request to deploy the staging branch to production.
Please review the pull request and comment /deploy to merge this PR and deploy to production.


Summary by cubic

Fixed the mail detail popover width so it now adapts on medium screens, improving display on different devices.

@github-actions github-actions bot added the production-deploy This PR is meant to update production label Aug 3, 2025
@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 3, 2025

Bug Report

Name: Popover content overflows on small screens and potentially larger screens
Severity: Medium
Example test case: Inject a very long string of text into the PopoverContent in MailDisplay. Open the popover on a small screen.
Description: The PopoverContent in MailDisplay has a fixed width of 420px on small screens. When the content exceeds this width, it overflows, resulting in a horizontal scrollbar. While overflow-auto is present, ideally the content should wrap or truncate. The md:w-auto might still cause overflow on larger screens with very long strings.

Comments? Email us.

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.

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Aug 3, 2025

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

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


🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Join our Discord community for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@graphite-app graphite-app bot requested a review from MrgSub August 3, 2025 22:16
@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Aug 3, 2025

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
❌ Deployment failed
View logs
zero-server-staging 71c57d1 Aug 25 2025, 06:21 PM

@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Aug 3, 2025

Deploying zero-staging with  Cloudflare Pages  Cloudflare Pages

Latest commit: 71c57d1
Status: ✅  Deploy successful!
Preview URL: https://8169e521.zero-staging-c02.pages.dev

View logs

@graphite-app
Copy link
Contributor

graphite-app bot commented Aug 3, 2025

Graphite Automations

"Deploy to Production Helper" took an action on this PR • (08/03/25)

1 reviewer was added to this PR based on Rahul Mishra's automation.

@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 3, 2025

Bug Report

Name Severity Example test case Description
Long Word Overflow Low Create an email with a very long word or URL without spaces in the email body. On smaller screens, the long word or URL may overflow the detail box, even with overflow-auto due to the fixed width of 420px. Although scrollbars will appear, it might not be ideal UX.

Comments? Email us.

…ch queries (#1902)

# Redesigned Mail Categories with Label-Based Filtering

## Description

Reimplemented the mail categories feature to use label-based filtering instead of search queries. This change makes it easier for users to customize and manage their inbox views by selecting specific labels rather than writing complex search queries.

The PR enables the categories settings page in the navigation and completely redesigns the UI to focus on label selection. Users can now add, delete, reorder, and set default categories with a more intuitive interface.

## Type of Change

- ✨ New feature (non-breaking change which adds functionality)
- 🎨 UI/UX improvement

## Areas Affected

- [x] User Interface/Experience
- [x] Data Storage/Management

## Testing Done

- [x] Manual testing performed

## Checklist

- [x] I have performed a self-review of my code
- [x] My changes generate no new warnings
- [x] My code follows the project's style guidelines

## Additional Notes

The PR also includes improvements to the thread querying logic in the backend to better support label-based filtering. The categories feature is now called "Views" in the UI to better reflect its purpose.

---

_By submitting this pull request, I confirm that my contribution is made under the terms of the project's license._

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

* **New Features**
  * Categories settings page is now accessible from navigation.
  * Categories (now called "Views") can be managed with multi-select label filters, drag-and-drop reordering, add/delete actions, and unsaved changes tracking.
  * Save and reset options are available for category changes.

* **Improvements**
  * Category selection supports multi-label filtering with a dropdown menu.
  * UI styling updated for better dark mode support and usability.
  * Localization updated to rename "Categories" to "Views".
  * Navigation and mail list no longer use category query parameters, simplifying URL handling.

* **Bug Fixes**
  * Removed unused and AI-related code for category search queries.

* **Chores**
  * Added a pre-commit script to enforce linting before commits.
  * Refactored internal logic for category and thread management for better maintainability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 4, 2025

Bug Report

Name Severity Example test case Description
SQL Injection Medium Use a malicious string as the q parameter in getThreadsFromDB. Ensure all parameters in the SQL queries are properly escaped to prevent SQL injection attacks. The q parameter is of particular concern.
Performance Low Use a large number of labels in the labelIds parameter in getThreadsFromDB. The new SQL query with multiple WHERE clauses and EXISTS subqueries could potentially be less efficient than the original code, especially for complex queries with multiple labels.
Filtering Logic (AND vs. OR) High Use a folder and multiple labels in the category settings. The folder + labelIds case in getThreadsFromDB uses an AND condition, requiring all specified labels to be present in a thread's latest_label_ids. This may not be intuitive for users who might expect an OR condition.
Pagination Medium Have multiple threads with the same latest_received_on value. The pagination logic using latest_received_on as the cursor in getThreadsFromDB could be problematic if multiple threads have the same latest_received_on value, potentially leading to duplicate or missing threads.

Comments? Email us.

…on (#1915)

# Email Syncing Status Indicators

## Description

Added real-time email syncing status indicators to the mail UI that show when emails are being synchronized, which folders are currently syncing, and the current storage size. This provides users with better visibility into background processes.

## Type of Change

- [x] ✨ New feature (non-breaking change which adds functionality)
- [x] ⚡ Performance improvement

## Areas Affected

- [x] Email Integration (Gmail, IMAP, etc.)
- [x] User Interface/Experience

## Testing Done

- [x] Manual testing performed

## Checklist

- [x] I have performed a self-review of my code
- [x] My changes generate no new warnings

## Additional Notes

This PR implements a state management system for email synchronization status using Jotai atoms. The server now broadcasts syncing status through Party, and the UI displays this information in a non-intrusive way at the top of the mail interface.

Key changes:
- Created a new `useDoState` hook to manage syncing state
- Added status indicators in the mail layout component
- Modified the server to track and broadcast syncing status
- Improved folder synchronization logic to be more efficient
- Removed unnecessary delays in the synchronization process

---

_By submitting this pull request, I confirm that my contribution is made under the terms of the project's license._

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

* **New Features**
  * Added a real-time syncing status indicator in the mail interface, displaying current sync progress, folders being synced, and storage usage.
  * Introduced live syncing state updates communicated between server and client for improved sync transparency.

* **Improvements**
  * Enhanced background synchronization logic to provide clearer feedback on syncing activity.
  * Real-time updates now reflect the latest syncing state without delays.
  * Removed artificial delays in syncing processes for faster synchronization.
  * Triggered folder syncing asynchronously when fetching threads from the database.

* **Bug Fixes**
  * Removed unused and obsolete code related to database table management and sync rate-limiting.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 4, 2025

Bug Report

Bug Report:

  • Name: Confusing Toast Message on Default Category Reassignment
  • Severity: Low
  • Example test case:
    1. Create multiple mail categories.
    2. Set one of them as default.
    3. Delete the default category.
    4. Observe the "Default category reassigned..." toast message.
    5. Simulate an error during the saving process (e.g., by temporarily disabling the backend).
    6. Observe that the toast message persists even if saving the category changes fails.
  • Description: The handleDeleteCategory function displays a success toast message ("Default category reassigned...") before the actual saving process occurs. If the saving process fails, the user will see a misleading success message, even though the category changes were not persisted. This can lead to confusion and data inconsistency. The toast message should be displayed after a successful save.

Bug Report:

  • Name: Inaccurate Syncing Status due to Missing Thread-Level Error Handling
  • Severity: Medium
  • Example test case:
    1. Start syncing a folder with multiple emails.
    2. Simulate a temporary error while syncing one of the emails (e.g., by temporarily corrupting the email data or disconnecting the network). This might require modifying the driver to simulate this error case.
    3. Observe that the overall syncing process completes successfully, even though the specific email failed to sync.
    4. Observe that the UI shows the sync completed, but the corrupted email is not properly synced.
  • Description: The syncThreads function does not account for individual thread synchronization failures within syncSingleThread. If syncSingleThread fails for some threads but succeeds for others, syncThreads will complete and mark the folder as synced, providing inaccurate feedback to the user. syncSingleThread does not have any error boundaries, so any failure inside syncThread will cause the outer Effect.runPromise to reject, setting the folder as not syncing. However, no information about this error is sent to the user.

Comments? Email us.

Hey team,

[**Lingo.dev**](https://lingo.dev) here with fresh translations!

### In this update

- Added missing translations
- Performed brand voice, context and glossary checks
- Enhanced translations using Lingo.dev Localization Engine

### Next Steps

- [ ] Review the changes
- [ ] Merge when ready
    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Updated translations for the "categories" label in all supported languages to use the more accurate term for "views" in each locale. This improves clarity in the mail app navigation.

<!-- End of auto-generated description by cubic. -->
@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 4, 2025

Bug Report

Name Severity Example test case Description
Incorrect label filtering when selecting more than 5 labels Medium Create 6 labels, assign them to a few emails, and then try to filter emails using folder and all 6 labels. Verify that only the first 5 labels are actually used in filtering. When selecting more than 5 labels in combination with a folder, only the first 5 labels are used for filtering. This is due to the maxLabelIds limit in the queryThreads function. The user might expect all the selected labels to be applied, leading to incorrect results. There is no warning or indication in the UI that this is happening.
Race condition in syncThreads function High Simulate concurrent calls to syncThreads for the same folder. Verify that the foldersInSync map is updated correctly and that the syncing status is broadcasted correctly. The syncThreads function has a race condition that can occur when multiple calls to the function are made concurrently for the same folder. This can lead to unnecessary syncing, incorrect syncing status, and potential data inconsistency. The code uses this.foldersInSync to track the folders being synced, but there's no mechanism to handle potential race conditions when multiple calls to syncThreads are made concurrently. This could lead to the UI showing an incorrect syncing status.

Comments? Email us.

# READ CAREFULLY THEN REMOVE

Remove bullet points that are not relevant.

PLEASE REFRAIN FROM USING AI TO WRITE YOUR CODE AND PR DESCRIPTION. IF YOU DO USE AI TO WRITE YOUR CODE PLEASE PROVIDE A DESCRIPTION AND REVIEW IT CAREFULLY. MAKE SURE YOU UNDERSTAND THE CODE YOU ARE SUBMITTING USING AI.

- Pull requests that do not follow these guidelines will be closed without review or comment.
- If you use AI to write your PR description your pr will be close without review or comment.
- If you are unsure about anything, feel free to ask for clarification.

## Description

Please provide a clear description of your changes.

---

## Type of Change

Please delete options that are not relevant.

- [ ] 🐛 Bug fix (non-breaking change which fixes an issue)
- [ ] ✨ New feature (non-breaking change which adds functionality)
- [ ] 💥 Breaking change (fix or feature with breaking changes)
- [ ] 📝 Documentation update
- [ ] 🎨 UI/UX improvement
- [ ] 🔒 Security enhancement
- [ ] ⚡ Performance improvement

## Areas Affected

Please check all that apply:

- [ ] Email Integration (Gmail, IMAP, etc.)
- [ ] User Interface/Experience
- [ ] Authentication/Authorization
- [ ] Data Storage/Management
- [ ] API Endpoints
- [ ] Documentation
- [ ] Testing Infrastructure
- [ ] Development Workflow
- [ ] Deployment/Infrastructure

## Testing Done

Describe the tests you've done:

- [ ] Unit tests added/updated
- [ ] Integration tests added/updated
- [ ] Manual testing performed
- [ ] Cross-browser testing (if UI changes)
- [ ] Mobile responsiveness verified (if UI changes)

## Security Considerations

For changes involving data or authentication:

- [ ] No sensitive data is exposed
- [ ] Authentication checks are in place
- [ ] Input validation is implemented
- [ ] Rate limiting is considered (if applicable)

## Checklist

- [ ] I have read the [CONTRIBUTING](https://github.com/Mail-0/Zero/blob/staging/.github/CONTRIBUTING.md) document
- [ ] My code follows the project's style guidelines
- [ ] I have performed a self-review of my code
- [ ] I have commented my code, particularly in complex areas
- [ ] I have updated the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix/feature works
- [ ] All tests pass locally
- [ ] Any dependent changes are merged and published

## Additional Notes

Add any other context about the pull request here.

## Screenshots/Recordings

Add screenshots or recordings here if applicable.

---

_By submitting this pull request, I confirm that my contribution is made under the terms of the project's license._

    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Removed email hover tracking and all related event listeners from the mail list and hotkey logic.

- **Refactors**
  - Commented out email hover event dispatch and handlers in mail-list and mail components.
  - Removed emailHover event listener logic from mail-list-hotkeys.

<!-- End of auto-generated description by cubic. -->
@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 4, 2025

Bug Report

Name Severity Example test case Description
Improper HTML Sanitization in cleanHtml Medium 1. Send an email with a crafted HTML payload that exploits a bypass in the sanitization logic. For example, use a double-encoded attribute like <img src="x" onerror="&#x61;&#x6c;&#x65;&#x72;&#x74;(1)">. 2. Print the email. 3. If the cleanHtml function doesn't properly decode and sanitize the attribute, the JavaScript code will execute, leading to XSS. If the cleanHtml function doesn't handle various XSS attack vectors (e.g., encoded attributes, data URIs, DOM clobbering), it could be possible to inject malicious JavaScript code into the printed email.
Inconsistent Category Filtering Medium 1. Create several labels (e.g., "Work", "Personal", "Important"). 2. Create a category "Work Emails" and assign the "Work" label to it. 3. Create another category "Important Work Emails" and assign both "Work" and "Important" labels to it. 4. Send an email and assign both "Work" and "Important" labels to it. 5. Select the "Work Emails" category. The email should appear in the list. 6. Select the "Important Work Emails" category. The email should appear in the list. 7. Now, modify the "Work Emails" category to also include the "Important" label. 8. Select the "Work Emails" category. 9. If the filtering logic is not implemented correctly, the email might not appear in the list. The category filtering logic might not correctly handle emails with multiple labels when multiple categories share some of the same labels. The filtering should be based on whether the email has all the specified labels, not whether it only has those labels.
Drag and Drop Reordering Logic Incorrect Low 1. Create a couple of custom categories 2. Drag and drop the categories to reorder them 3. Save the settings 4. Refresh the page. The categories should remain in the new order that was set. 5. If the drag and drop reordering logic is incorrect, it's possible the save function saves the original order of the categories and does not save the new order that was set. Thus, when refreshing the page the old order is loaded. The drag and drop reordering logic is client side. It is possible that the new order is not correctly saved to the backend which causes the order to revert back to original on refresh.
Race Condition in Syncing Status Updates Low 1. Start syncing multiple folders simultaneously. 2. Observe the UI. The syncing status indicator might flicker or display incorrect information if the updates from different folders are not properly synchronized. If the syncing status updates are not handled atomically, there could be race conditions that lead to inconsistent UI state. For example, the syncingFolders array might be updated incorrectly if multiple folders finish syncing at the same time.
Incorrect Storage Size Calculation Low 1. Sync a large number of emails with attachments. 2. Observe the storage size displayed in the UI. The storage size might be inaccurate if the calculation is not performed correctly. The storage size calculation might be inaccurate if it doesn't properly account for attachments, headers, or other metadata.

Comments? Email us.

…ement (#1917)

# Migrate ZeroDriver to use SQLite database with Drizzle ORM

## Description

This PR refactors the ZeroDriver to use a SQLite database with Drizzle ORM for managing threads and labels, replacing the previous storage approach. The implementation includes:

- Added a new database schema with tables for threads, labels, and thread-label relationships
- Created comprehensive database operations for thread and label management
- Updated all agent methods to use the new database layer
- Modified TRPC routes and tools to work with the updated database structure
- Added thread count information to the DoState to display folder counts in the UI

This change improves query capabilities, enables more complex filtering operations, and provides a more reliable storage solution for email data.

## Type of Change

- ✨ New feature (non-breaking change which adds functionality)
- ⚡ Performance improvement

## Areas Affected

- [x] Email Integration (Gmail, IMAP, etc.)
- [x] User Interface/Experience
- [x] Data Storage/Management
- [x] API Endpoints

## Testing Done

- [x] Manual testing performed

## Checklist

- [x] I have performed a self-review of my code
- [x] My changes generate no new warnings
- [x] I have updated the documentation

## Additional Notes

The PR includes database migration files to ensure smooth transitions for existing users. The new database structure allows for more efficient querying of threads by labels and supports complex filtering operations that were previously difficult to implement.

---

_By submitting this pull request, I confirm that my contribution is made under the terms of the project's license._

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

* **New Features**
  * Introduced a new SQLite-backed database layer for managing email threads and labels, enabling advanced filtering, pagination, and label management.
  * Added a "Force re-sync" option and a syncing status indicator with detailed info to the user menu.
  * Enhanced syncing status UI for improved clarity and visual feedback.

* **Improvements**
  * Optimized email syncing and label modification logic for greater reliability and performance.
  * Standardized agent usage across mail, label, and draft operations for consistency.
  * Refined UI elements for syncing feedback and debug actions.

* **Bug Fixes**
  * Improved handling of thread and label counts and syncing state in the user interface.

* **Chores**
  * Migrated internal data access to use Drizzle ORM and modular database functions.
  * Added configuration and migration files to support the new database backend.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 5, 2025

Bug Report

Name Severity Example test case Description
Missing Data Migration Critical Upgrade from a previous version with existing data The patch migrates the database to SQLite with Drizzle ORM but doesn't include a mechanism to migrate existing data. This leads to data loss for existing users.
Missing Label Check High Add a non-existent label to a thread The modifyThreadLabelsInDB function doesn't verify the existence of label IDs in the labels table before adding or removing them. This can lead to orphaned label IDs and inconsistent data.
Unnecessary Rate Limiting Medium Sync a large number of threads The syncThreads function includes a rate-limiting mechanism that adds a delay for each thread. This can significantly slow down the synchronization process.
Potential Stale Data Medium Start the application after the database migration The UI relies on the DoState for thread counts. These counts may be wrong if the initial migration fails and may show incorrect values to the user.

Comments? Email us.

@cursor
Copy link

cursor bot commented Aug 5, 2025

🚨 Bugbot Trial Expired

Your Bugbot trial has expired. Please purchase a license in the Cursor dashboard to continue using Bugbot.

Co-authored-by: amrit <[email protected]>
@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 5, 2025

Bug Report

Name Severity Example test case Description
KV Storage Size Limit Vulnerability in Scheduled Emails High Attach a very large file (e.g., >100MB) to a scheduled email. Lack of attachment size validation before queuing for scheduled send allows large files to fill up KV storage, causing denial of service or performance degradation.

Comments? Email us.

# READ CAREFULLY THEN REMOVE

Remove bullet points that are not relevant.

PLEASE REFRAIN FROM USING AI TO WRITE YOUR CODE AND PR DESCRIPTION. IF YOU DO USE AI TO WRITE YOUR CODE PLEASE PROVIDE A DESCRIPTION AND REVIEW IT CAREFULLY. MAKE SURE YOU UNDERSTAND THE CODE YOU ARE SUBMITTING USING AI.

- Pull requests that do not follow these guidelines will be closed without review or comment.
- If you use AI to write your PR description your pr will be close without review or comment.
- If you are unsure about anything, feel free to ask for clarification.

## Description

Please provide a clear description of your changes.

---

## Type of Change

Please delete options that are not relevant.

- [ ] 🐛 Bug fix (non-breaking change which fixes an issue)
- [ ] ✨ New feature (non-breaking change which adds functionality)
- [ ] 💥 Breaking change (fix or feature with breaking changes)
- [ ] 📝 Documentation update
- [ ] 🎨 UI/UX improvement
- [ ] 🔒 Security enhancement
- [ ] ⚡ Performance improvement

## Areas Affected

Please check all that apply:

- [ ] Email Integration (Gmail, IMAP, etc.)
- [ ] User Interface/Experience
- [ ] Authentication/Authorization
- [ ] Data Storage/Management
- [ ] API Endpoints
- [ ] Documentation
- [ ] Testing Infrastructure
- [ ] Development Workflow
- [ ] Deployment/Infrastructure

## Testing Done

Describe the tests you've done:

- [ ] Unit tests added/updated
- [ ] Integration tests added/updated
- [ ] Manual testing performed
- [ ] Cross-browser testing (if UI changes)
- [ ] Mobile responsiveness verified (if UI changes)

## Security Considerations

For changes involving data or authentication:

- [ ] No sensitive data is exposed
- [ ] Authentication checks are in place
- [ ] Input validation is implemented
- [ ] Rate limiting is considered (if applicable)

## Checklist

- [ ] I have read the [CONTRIBUTING](https://github.com/Mail-0/Zero/blob/staging/.github/CONTRIBUTING.md) document
- [ ] My code follows the project's style guidelines
- [ ] I have performed a self-review of my code
- [ ] I have commented my code, particularly in complex areas
- [ ] I have updated the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix/feature works
- [ ] All tests pass locally
- [ ] Any dependent changes are merged and published

## Additional Notes

Add any other context about the pull request here.

## Screenshots/Recordings

Add screenshots or recordings here if applicable.

---

_By submitting this pull request, I confirm that my contribution is made under the terms of the project's license._

    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Removed the sync status indicator from the mail layout and fixed trailing commas in wrangler.jsonc files to ensure valid JSONC formatting.

- **Bug Fixes**
  - Cleaned up JSONC files by removing trailing commas that could cause parsing errors.

<!-- End of auto-generated description by cubic. -->



<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

* **Bug Fixes**
  * Removed the syncing status indicator from the mail interface.

* **Chores**
  * Updated configuration files with improved formatting and added new rules for handling certain file types in different environments.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 5, 2025

Bug Report

Name Severity Example test case Description
Incorrect Time Validation Medium Set system time to the past, attempt scheduling an email. The server calculates the schedule delay using a check that the date is within 12 hours from now, rather than just if it's in the future. An attacker can set the device's system time in the past and the device's scheduled message could be inappropriately scheduled.
Attachment Security Risk Medium Send a large attachment with a malicious filename. Attachments are serialized to base64 and stored in KV, which could lead to performance issues and potential vulnerabilities related to handling and deserializing base64 data.
Missing Input Validation for Email Addresses Medium Inject malicious code into email address fields. Lack of input validation for email addresses could allow attackers to inject malicious code.

Comments? Email us.

Hey team,

[**Lingo.dev**](https://lingo.dev) here with fresh translations!

### In this update

- Added missing translations
- Performed brand voice, context and glossary checks
- Enhanced translations using Lingo.dev Localization Engine

### Next Steps

- [ ] Review the changes
- [ ] Merge when ready
    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Added missing translations for the "Undo Send" feature in all supported languages to improve email settings localization.

<!-- End of auto-generated description by cubic. -->
@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 5, 2025

Bug Report

Name Severity Example test case Description
Missing Validation of connectionId and mail During Queue Processing Critical A user schedules an email to be sent. An attacker finds the messageId of the scheduled email. The attacker crafts a malicious KV entry with the same messageId but with a different connectionId. The attacker uploads the malicious KV entry to the scheduled_emails and pending_emails_payload namespaces. When the queue processor runs, it retrieves the malicious KV entry and attempts to send the email using the attacker-specified connectionId. The processScheduledEmails function retrieves email payloads and connection IDs from KV storage. However, there's no validation to ensure the data integrity or that the connectionId retrieved from KV is still valid and belongs to the user. This lack of validation allows a malicious actor to potentially craft KV entries with arbitrary connection IDs and email contents, leading to emails being sent from an unintended connection. Also, a malformed object may cause the processor to fail, causing a denial of service.

Comments? Email us.

# READ CAREFULLY THEN REMOVE

Remove bullet points that are not relevant.

PLEASE REFRAIN FROM USING AI TO WRITE YOUR CODE AND PR DESCRIPTION. IF YOU DO USE AI TO WRITE YOUR CODE PLEASE PROVIDE A DESCRIPTION AND REVIEW IT CAREFULLY. MAKE SURE YOU UNDERSTAND THE CODE YOU ARE SUBMITTING USING AI.

- Pull requests that do not follow these guidelines will be closed without review or comment.
- If you use AI to write your PR description your pr will be close without review or comment.
- If you are unsure about anything, feel free to ask for clarification.

## Description

Please provide a clear description of your changes.

---

## Type of Change

Please delete options that are not relevant.

- [ ] 🐛 Bug fix (non-breaking change which fixes an issue)
- [ ] ✨ New feature (non-breaking change which adds functionality)
- [ ] 💥 Breaking change (fix or feature with breaking changes)
- [ ] 📝 Documentation update
- [ ] 🎨 UI/UX improvement
- [ ] 🔒 Security enhancement
- [ ] ⚡ Performance improvement

## Areas Affected

Please check all that apply:

- [ ] Email Integration (Gmail, IMAP, etc.)
- [ ] User Interface/Experience
- [ ] Authentication/Authorization
- [ ] Data Storage/Management
- [ ] API Endpoints
- [ ] Documentation
- [ ] Testing Infrastructure
- [ ] Development Workflow
- [ ] Deployment/Infrastructure

## Testing Done

Describe the tests you've done:

- [ ] Unit tests added/updated
- [ ] Integration tests added/updated
- [ ] Manual testing performed
- [ ] Cross-browser testing (if UI changes)
- [ ] Mobile responsiveness verified (if UI changes)

## Security Considerations

For changes involving data or authentication:

- [ ] No sensitive data is exposed
- [ ] Authentication checks are in place
- [ ] Input validation is implemented
- [ ] Rate limiting is considered (if applicable)

## Checklist

- [ ] I have read the [CONTRIBUTING](https://github.com/Mail-0/Zero/blob/staging/.github/CONTRIBUTING.md) document
- [ ] My code follows the project's style guidelines
- [ ] I have performed a self-review of my code
- [ ] I have commented my code, particularly in complex areas
- [ ] I have updated the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix/feature works
- [ ] All tests pass locally
- [ ] Any dependent changes are merged and published

## Additional Notes

Add any other context about the pull request here.

## Screenshots/Recordings

Add screenshots or recordings here if applicable.

---

_By submitting this pull request, I confirm that my contribution is made under the terms of the project's license._

    
<!-- This is an auto-generated description by cubic. -->
---

## Summary by cubic
Updated email queue IDs in wrangler.jsonc to match new configuration and removed an unused import from the mail component.

<!-- End of auto-generated description by cubic. -->
@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 5, 2025

Bug Report

Name Severity Example test case Description
Insecure Email Scheduling High User B schedules email using User A's Connection ID The code uses payloadKV.put and scheduledKV.put to store email data and schedule the delivery. However, it only checks payload.connectionId when reading the scheduled data, not when initially scheduling the email. This creates a scenario where a malicious user could schedule an email using someone else's connection ID.

Comments? Email us.

adamghaida and others added 7 commits August 23, 2025 10:44
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…consistent vertical spacing in the navigation links (#2004)
# Package Dependency Updates

## Description

This PR updates several package dependencies across the project:

- Updated `@elevenlabs/react` from 0.1.5 to 0.5.1 in mail app
- Added `@elevenlabs/elevenlabs-js` 2.12.2 to server app
- Removed unused dependencies: `deepmerge`, `dexie`, `emblor`, and `react-markdown`
- Added `sanitize-html` 2.16.0 to mail app
- Removed `elevenlabs` 1.59.0 from server (replaced with newer `@elevenlabs/elevenlabs-js`)
- Updated PNPM package manager from 10.12.1 to 10.15.0
- Updated Node types from 22.15.29 to 24.3.0
- Updated various dev dependencies including prettier, dotenv-cli, and tsx
- Updated Zod from 3.25.42 to 4.1.1
- Updated wrangler catalog version from 4.28.1 to 4.32.0

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

* **Security**
  * Safer message rendering via HTML sanitization.
* **Improvements**
  * Updated voice/AI integration for increased reliability and compatibility.
  * General stability and performance enhancements across the app.
* **Chores**
  * Upgraded core libraries, developer tooling, and package manager to latest versions.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Aug 25, 2025

Deploying old-zero-staging with  Cloudflare Pages  Cloudflare Pages

Latest commit: 64c5480
Status: ✅  Deploy successful!
Preview URL: https://d95a3723.zero-staging-c02.pages.dev

View logs

@railway-app railway-app bot temporarily deployed to Zero (hearty-tenderness / production) September 27, 2025 15:55 Inactive
@railway-app railway-app bot temporarily deployed to Zero (hearty-tenderness / production) September 27, 2025 15:59 Inactive
@railway-app railway-app bot temporarily deployed to Zero (hearty-tenderness / production) September 27, 2025 16:04 Inactive
@railway-app railway-app bot temporarily deployed to Backend (charming-dream / production) September 29, 2025 10:57 Inactive
@railway-app railway-app bot temporarily deployed to Mail (charming-dream / production) September 29, 2025 10:57 Inactive
@railway-app railway-app bot temporarily deployed to Zero (content-benevolence / production) September 29, 2025 11:13 Inactive
@railway-app railway-app bot temporarily deployed to Backend (charming-dream / production) September 29, 2025 11:21 Inactive
@railway-app railway-app bot temporarily deployed to Backend (charming-dream / production) September 29, 2025 11:26 Inactive
@railway-app railway-app bot temporarily deployed to Mail (charming-dream / production) September 29, 2025 11:26 Inactive
@railway-app railway-app bot temporarily deployed to Backend (charming-dream / production) September 29, 2025 11:32 Inactive
@railway-app railway-app bot temporarily deployed to Mail (charming-dream / production) September 29, 2025 11:32 Inactive
@railway-app railway-app bot temporarily deployed to Backend (glorious-perception / production) September 29, 2025 11:55 Inactive
@railway-app railway-app bot temporarily deployed to Backend (glorious-perception / production) September 29, 2025 11:56 Inactive
@railway-app railway-app bot temporarily deployed to Backend (glorious-perception / production) September 29, 2025 15:32 Inactive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

production-deploy This PR is meant to update production

Projects

None yet

Development

Successfully merging this pull request may close these issues.