Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
5602f41
Fix/mail detail box width fix (#1900)
khardikk Aug 3, 2025
c72d2fb
Fix: render HTML instead of raw code on print (#1851)
suraj719 Aug 3, 2025
01e2adf
Redesign mail categories to use label-based filtering instead of sear…
MrgSub Aug 4, 2025
cc8d3f7
Add email syncing status indicators and optimize folder synchronizati…
MrgSub Aug 4, 2025
e7dcf74
feat: update translations via @LingoDotDev (#1913)
github-actions[bot] Aug 4, 2025
b128491
Remove email hover tracking and related event listeners (#1916)
MrgSub Aug 4, 2025
3d0dd59
Refactor ZeroDriver to use SQLite database for thread and label manag…
MrgSub Aug 5, 2025
fec8e1b
Scheduling (#1914)
MrgSub Aug 5, 2025
aa75914
Remove sync status indicator and fix JSON trailing commas (#1924)
MrgSub Aug 5, 2025
9317a68
feat: update translations via @LingoDotDev (#1919)
github-actions[bot] Aug 5, 2025
8511708
Update email queue IDs and remove unused import (#1925)
MrgSub Aug 5, 2025
0f7e2ed
Remove created_at and updated_at fields from threads table (#1926)
MrgSub Aug 5, 2025
d2621c0
Use label names instead of IDs for thread label management (#1927)
MrgSub Aug 5, 2025
cfdcb03
Update AI chat example queries and improve tool descriptions (#1928)
MrgSub Aug 5, 2025
428e75f
feat: remove old hotkeys and add new View hotkeys (#1918)
ahmetskilinc Aug 5, 2025
cba0bb6
Delete thread labels and labels tables when resetting sync state (#1929)
MrgSub Aug 5, 2025
ee246db
Add do state broadcasting in syncThread function (#1930)
MrgSub Aug 5, 2025
a3068ee
Add retry mechanism for thread listing failures in syncThreads (#1931)
MrgSub Aug 5, 2025
699ab31
fix: remove double toast and decrease time from 30s to 15s (#1934)
retrogtx Aug 5, 2025
aaf3199
fix: hotkeys for categories (#1938)
ahmetskilinc Aug 6, 2025
2facf59
Add ThreadSyncWorker for improved thread synchronization (#1937)
MrgSub Aug 6, 2025
17639d4
Move syncThreads logic to Cloudflare Workflow (#1939)
devin-ai-integration[bot] Aug 6, 2025
b9a5db5
Implement per-page workflow system for sync-threads to overcome API l…
devin-ai-integration[bot] Aug 6, 2025
5b7edd2
Implement database sharding for improved email storage scalability (#…
MrgSub Aug 7, 2025
69e0676
chore: refine system prompt and small update to eval (#1940)
retrogtx Aug 7, 2025
17bdc34
feat: add playwright tests for bulk actions and search (#1923)
retrogtx Aug 7, 2025
68a1714
feat: add tests for optimistic actions (#1922)
retrogtx Aug 7, 2025
066edbc
feat: add playwright tests to check for zero summary of past emails i…
retrogtx Aug 7, 2025
cdb3d25
feat: add playwright tests to check search bar functions (#1921)
retrogtx Aug 7, 2025
b0f8600
feat: add auto closing of issues / pull requests based on staleness (…
retrogtx Aug 7, 2025
76b7330
fix: update cron schedule and improve conflict detection in PR closur…
retrogtx Aug 7, 2025
fae9457
fix: auto draft compose (#1946)
ahmetskilinc Aug 7, 2025
18314cd
Enable spam email processing and improve label management workflow (#…
MrgSub Aug 7, 2025
3ca3899
Optimize thread counting and add license headers to workflow files (#…
MrgSub Aug 8, 2025
fb29c6b
Add rate limiting to meet creation endpoint (#1950)
MrgSub Aug 8, 2025
9f7803f
Add automated PR review with ampcode integration (#1952)
devin-ai-integration[bot] Aug 8, 2025
ece407c
Fix critical JSON formatting bug in ampcode workflow (#1955)
devin-ai-integration[bot] Aug 8, 2025
2400243
feat: add email right back into the composer once you click undo (#1947)
retrogtx Aug 8, 2025
4e2cfdf
Enhance PR review workflow with line-specific comments and reaction i…
MrgSub Aug 8, 2025
9b96b64
Add manual PR review trigger via issue comments (#1959)
MrgSub Aug 8, 2025
3e23806
Remove Ampcode PR review workflow (#1961)
MrgSub Aug 8, 2025
a5024f9
Use configurable runner image in GitHub workflows (#1962)
MrgSub Aug 8, 2025
3d6c99b
fix: contact us navigation on mobile view (#1942)
vamsi4845 Aug 8, 2025
9281662
fix: improve link visibility on logout screen when light theme is sel…
FurquanAnwer Aug 8, 2025
9d3660d
fix: update locale identifiers for Chinese languages (#1903)
zhyd1997 Aug 8, 2025
424f913
feat: add range selection support for thread list (#1856)
ayushsharma74 Aug 8, 2025
0a375e7
feat: update translations via @LingoDotDev (#1964)
github-actions[bot] Aug 9, 2025
e17c3c7
Disable meet functionality and remove unused code (#1967)
MrgSub Aug 9, 2025
91c4349
Improve auth error handling and connection reset functionality (#1963)
MrgSub Aug 9, 2025
1e7d378
Format JSON translation files with consistent indentation (#1969)
MrgSub Aug 9, 2025
9342f88
Fix: "navigator is not defined" on dev env startup (#1933)
Nikit-Singh Aug 9, 2025
aac07d9
Optimize sendDoState function with Durable Object caching (#1968)
devin-ai-integration[bot] Aug 9, 2025
559e4c6
Fix: Display full sender email in sender details box (#1910)
suraj719 Aug 9, 2025
b24a96f
feat: integrate OpenTelemetry tracing with @microlabs/otel-cf-workers…
devin-ai-integration[bot] Aug 9, 2025
496b600
Increase cache time to 24 hours and limit thread pages in cache (#1973)
MrgSub Aug 10, 2025
79ebdd7
Disable OpenTelemetry instrumentation and reduce state cache invalida…
MrgSub Aug 10, 2025
2e2474d
feat: add autosuggestions while sending email (#1495)
retrogtx Aug 10, 2025
8bfc12a
Add cursor-pointer to CTA buttons and navigation items for better UX …
nerdyabhi Aug 10, 2025
df4f38d
Upgrade wrangler from 4.22.0 to 4.28.1 (#1976)
MrgSub Aug 10, 2025
6a63208
feat: optimistic delete draft (#1981)
ahmetskilinc Aug 11, 2025
7545c7d
fix: remove primary border from draft list and overflow visible (#1984)
ahmetskilinc Aug 11, 2025
722fef4
feat: add autofocus into the composer after a template is selected (#…
retrogtx Aug 11, 2025
6e93fad
ui: add cross in the undo email toast, decrease time from 30s to 15s …
retrogtx Aug 11, 2025
70051c0
fixed the issue Can't see text in email (#1982)
hemant838 Aug 11, 2025
576dfcc
Feat: label creation flow fix (#1908)
khardikk Aug 12, 2025
12153e8
fix: show hand cursor on all buttons (#1993)
tanayyo1 Aug 22, 2025
a164e86
UI: improved back icon for command palette (#1991)
abhix4 Aug 22, 2025
e67c76a
cleanup of ui elements (#1999)
ahmetskilinc Aug 22, 2025
d918210
Update nuqs package version to 2.5.0 (#2000)
adamghaida Aug 23, 2025
86a9564
Fix: ensure email text is visible in light mode (issue #1966) (#1994)
tanayyo1 Aug 25, 2025
1e35eba
Fix/duplicate privacy option in navigation menu in mobile view and in…
FurquanAnwer Aug 25, 2025
cd252bd
Datadog Implementation (#1990)
adamghaida Aug 25, 2025
e30e7c9
Fix: landing page footer responsive layout on mobile (#1777)
ayushsharma74 Aug 25, 2025
71c57d1
feat: add email verification based on spf/dkim/dmarc/logo verificatio…
retrogtx Aug 25, 2025
906a02c
update deps and remove unused deps (#2006)
ahmetskilinc Aug 25, 2025
9365ef2
Fix: deletion toast Undo button misaligned (#2007)
pryxnsu Aug 25, 2025
bbc3cc0
fix: add cursor pointer to all button elements (#2009)
mohdyasin4 Aug 26, 2025
8d1a965
fix: alignment issue of timezone select field (#2008)
eersnington Aug 26, 2025
7441e3e
feat: simplify the date picking usage when a user schedules an email …
retrogtx Aug 26, 2025
fe989cc
filering of email addresses (#1986)
ahmetskilinc Aug 26, 2025
5b7c6b4
Improve button UX with consistent hover states and pointer cursor (#2…
suraj719 Aug 26, 2025
7c2cb5d
feat: reorganize dropdown menu footer for better UX - Move Toggle The…
mohdyasin4 Aug 29, 2025
64c5480
Redesign mail header layout with square buttons and enhanced spacing …
ArjunCodess Aug 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ concurrency:
jobs:
autofix:
timeout-minutes: 10
runs-on: ubuntu-latest
runs-on: ${{ vars.RUNNER_IMAGE || 'ubuntu-latest' }}
steps:
- name: Checkout Code 🛎
uses: actions/checkout@v4
Expand Down
69 changes: 69 additions & 0 deletions .github/workflows/close-conflicted-prs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Close Old Conflicted PRs

on:
schedule:
- cron: '0 0 * * *'

jobs:
close_conflicted_prs:
runs-on: ${{ vars.RUNNER_IMAGE || 'ubuntu-latest' }}
permissions:
pull-requests: write
steps:
- name: Close PRs with conflicts older than 3 days
uses: actions/github-script@v7
with:
script: |
const prs = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open'
});

const now = new Date();
for (const pr of prs.data) {
const details = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number
});

if (details.data.mergeable === null) {
continue;
}

if (details.data.mergeable === false) {
const timeline = await github.rest.issues.listEventsForTimeline({ owner: context.repo.owner, repo: context.repo.repo, issue_number: pr.number, per_page: 100 });
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number
});

let conflictStartTime = new Date(pr.updated_at);

for (const event of timeline.data) {
if (event.event === 'cross-referenced' && event.commit_id) {
conflictStartTime = new Date(event.created_at);
break;
}
}

const conflictAgeDays = (now - conflictStartTime) / (1000 * 60 * 60 * 24);

if (conflictAgeDays >= 3) {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body: "This PR has had merge conflicts for more than 3 days. It will be automatically closed. Please resolve the conflicts and reopen the PR if you'd like to continue working on it."
});

await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number,
state: 'closed'
});
}
}
}
21 changes: 21 additions & 0 deletions .github/workflows/close-stale-issues.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Close Stale Issues

on:
schedule:
- cron: '0 0 * * *'

jobs:
stale:
runs-on: ${{ vars.RUNNER_IMAGE || 'ubuntu-latest' }}
permissions:
issues: write
contents: read
steps:
- uses: actions/stale@v9
with:
days-before-issue-stale: 3
days-before-issue-close: 0
days-before-pr-stale: -1
stale-issue-label: 'stale'
stale-issue-message: 'This issue is stale (3+ days) and will be closed.'
close-issue-message: 'Closing stale issue.'
2 changes: 1 addition & 1 deletion .github/workflows/deploy-to-prod-command.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ permissions:

jobs:
deploy-to-production:
runs-on: ubuntu-latest
runs-on: ${{ vars.RUNNER_IMAGE || 'ubuntu-latest' }}
name: Merge Staging to Production
if: github.event.issue.pull_request && contains(github.event.issue.labels.*.name, 'production-deploy') && startsWith(github.event.comment.body, '/deploy') && github.event.comment.author_association == 'MEMBER'
steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/lingo-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ concurrency:
jobs:
main:
timeout-minutes: 15
runs-on: ubuntu-latest
runs-on: ${{ vars.RUNNER_IMAGE || 'ubuntu-latest' }}
steps:
- name: Checkout Code 🛎
uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sync-production.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ permissions:

jobs:
sync-branches:
runs-on: ubuntu-latest
runs-on: ${{ vars.RUNNER_IMAGE || 'ubuntu-latest' }}
name: Syncing branches

steps:
Expand Down
2 changes: 1 addition & 1 deletion .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1 +1 @@
pnpm lint-staged
pnpm dlx oxlint@1.9.0 --deny-warnings
7 changes: 7 additions & 0 deletions AGENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,3 +105,10 @@ This is a pnpm workspace monorepo with the following structure:
- Uses Cloudflare Workers for backend deployment
- iOS app is part of the monorepo
- CLI tool `nizzy` helps manage environment and sync operations

## IMPORTANT RESTRICTIONS

- **NEVER run project-wide lint/format commands** (`pnpm check`, `pnpm lint`, `pnpm format`, `pnpm check:format`)
- These commands format/lint the entire codebase and cause unnecessary changes
- Only use targeted linting/formatting on specific files when absolutely necessary
- Focus on the specific task at hand without touching unrelated files
12 changes: 6 additions & 6 deletions apps/mail/app/(auth)/login/login-client.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -201,13 +201,13 @@ function LoginClientContent({ providers, isProd }: LoginClientProps) {
</button>

<div
className={`overflow-hidden transition-all duration-300 ease-in-out ${expandedProviders[provider.id] ? 'max-h-[500px] opacity-100' : 'max-h-0 opacity-0'}`}
className={`overflow-hidden duration-300 ease-in-out ${expandedProviders[provider.id] ? 'max-h-[500px] opacity-100' : 'max-h-0 opacity-0'}`}
>
<div className="bg-black/3 p-4 font-mono text-sm dark:bg-white/3">
<div className="bg-black/3 dark:bg-white/3 p-4 font-mono text-sm">
{provider.envVarStatus.map((envVar) => (
<div
key={envVar.name}
className={`mb-3 flex items-start transition-all duration-300 ease-in-out last:mb-0 ${expandedProviders[provider.id] ? 'translate-y-0 opacity-100' : 'translate-y-2 opacity-0'}`}
className={`mb-3 flex items-start duration-300 ease-in-out last:mb-0 ${expandedProviders[provider.id] ? 'translate-y-0 opacity-100' : 'translate-y-2 opacity-0'}`}
style={{
transitionDelay: expandedProviders[provider.id]
? `${provider.envVarStatus.indexOf(envVar) * 50}ms`
Expand Down Expand Up @@ -303,19 +303,19 @@ function LoginClientContent({ providers, isProd }: LoginClientProps) {
)}
</div>
</div>
<a href={'/'}>Return home</a>
<a href={'/'} className='text-white hover:text-gray-200'>Return home</a>

<footer className="w-full px-6 py-4">
<div className="mx-auto flex max-w-6xl items-center justify-center gap-6">
<a
href="/terms"
className="text-[10px] text-gray-500 transition-colors hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-200"
className="text-[10px] text-gray-400 hover:text-gray-200 dark:text-gray-400 dark:hover:text-gray-200"
>
Terms of Service
</a>
<a
href="/privacy"
className="text-[10px] text-gray-500 transition-colors hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-200"
className="text-[10px] text-gray-400 hover:text-gray-200 dark:text-gray-400 dark:hover:text-gray-200"
>
Privacy Policy
</a>
Expand Down
14 changes: 7 additions & 7 deletions apps/mail/app/(full-width)/contributors.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,7 @@ export default function OpenPage() {
</div>

{/* Project Stats */}
<div className="mb-8 overflow-hidden rounded-xl border bg-linear-to-b from-white/50 to-white/10 p-6 backdrop-blur-sm dark:border-neutral-700 dark:from-neutral-900/50 dark:to-neutral-900/30">
<div className="bg-linear-to-b mb-8 overflow-hidden rounded-xl border from-white/50 to-white/10 p-6 backdrop-blur-sm dark:border-neutral-700 dark:from-neutral-900/50 dark:to-neutral-900/30">
<div className="flex flex-col items-start justify-between gap-4 sm:flex-row sm:items-center">
<div className="space-y-1">
<div className="flex items-center gap-2">
Expand Down Expand Up @@ -484,7 +484,7 @@ export default function OpenPage() {

<div className="mt-6 grid gap-4 lg:grid-cols-3">
{/* Repository Growth */}
<Card className="col-span-full border-neutral-100 bg-white/50 p-4 transition-all hover:bg-white/60 lg:col-span-2 dark:border-neutral-800 dark:bg-neutral-900/50 dark:hover:bg-neutral-900/60">
<Card className="col-span-full border-neutral-100 bg-white/50 p-4 hover:bg-white/60 lg:col-span-2 dark:border-neutral-800 dark:bg-neutral-900/50 dark:hover:bg-neutral-900/60">
<h3 className="mb-4 text-sm font-medium text-neutral-600 dark:text-neutral-400">
Repository Growth
</h3>
Expand Down Expand Up @@ -576,7 +576,7 @@ export default function OpenPage() {
</Card>

{/* Activity Chart */}
<Card className="col-span-full border-neutral-200 bg-white/50 p-4 transition-all hover:bg-white/60 lg:col-span-1 dark:border-neutral-800 dark:bg-neutral-900/50 dark:hover:bg-neutral-900/60">
<Card className="col-span-full border-neutral-200 bg-white/50 p-4 hover:bg-white/60 lg:col-span-1 dark:border-neutral-800 dark:bg-neutral-900/50 dark:hover:bg-neutral-900/60">
<h3 className="mb-4 text-sm font-medium text-neutral-600 dark:text-neutral-400">
Recent Activity
</h3>
Expand Down Expand Up @@ -672,7 +672,7 @@ export default function OpenPage() {
{filteredCoreTeam?.map((member, index) => (
<div
key={member.login}
className="group relative flex items-center gap-4 rounded-xl border bg-white/50 p-4 transition-all hover:-translate-y-1 hover:bg-white hover:shadow-lg dark:border-neutral-800 dark:bg-neutral-900/50 dark:hover:bg-neutral-900 dark:hover:shadow-neutral-900/50"
className="group relative flex items-center gap-4 rounded-xl border bg-white/50 p-4 hover:-translate-y-1 hover:bg-white hover:shadow-lg dark:border-neutral-800 dark:bg-neutral-900/50 dark:hover:bg-neutral-900 dark:hover:shadow-neutral-900/50"
style={{
animationDelay: `${index * 100}ms`,
animation: 'fadeInUp 0.5s ease-out forwards',
Expand Down Expand Up @@ -783,7 +783,7 @@ export default function OpenPage() {
key={contributor.login}
href={contributor.html_url}
target="_blank"
className="group relative flex flex-col items-center rounded-xl border bg-white/50 p-4 transition-all hover:-translate-y-1 hover:bg-white hover:shadow-lg dark:border-neutral-800 dark:bg-neutral-900/50 dark:hover:bg-neutral-900 dark:hover:shadow-neutral-900/50"
className="group relative flex flex-col items-center rounded-xl border bg-white/50 p-4 hover:-translate-y-1 hover:bg-white hover:shadow-lg dark:border-neutral-800 dark:bg-neutral-900/50 dark:hover:bg-neutral-900 dark:hover:shadow-neutral-900/50"
style={{
animationDelay: `${index * 50}ms`,
animation: 'fadeInUp 0.5s ease-out forwards',
Expand Down Expand Up @@ -908,7 +908,7 @@ export default function OpenPage() {
</div>

<div className="mb-8">
<div className="relative overflow-hidden rounded-xl border bg-linear-to-br from-neutral-50 to-white shadow-sm dark:border-neutral-800 dark:from-neutral-900/80 dark:to-neutral-900/30">
<div className="bg-linear-to-br relative overflow-hidden rounded-xl border from-neutral-50 to-white shadow-sm dark:border-neutral-800 dark:from-neutral-900/80 dark:to-neutral-900/30">
<div className="absolute inset-0 opacity-20 dark:opacity-20"></div>

<div className="relative p-6">
Expand All @@ -928,7 +928,7 @@ export default function OpenPage() {
<div className="mt-5 flex flex-wrap gap-3">
<Button
asChild
className="relative overflow-hidden bg-neutral-900 text-white transition-all hover:bg-neutral-800 dark:bg-white dark:text-neutral-900 dark:hover:bg-neutral-100"
className="relative overflow-hidden bg-neutral-900 text-white hover:bg-neutral-800 dark:bg-white dark:text-neutral-900 dark:hover:bg-neutral-100"
>
<a
href={`https://github.com/${REPOSITORY}/blob/main/.github/CONTRIBUTING.md`}
Expand Down
2 changes: 1 addition & 1 deletion apps/mail/app/(full-width)/privacy.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ export default function PrivacyPolicy() {
</h2>
<button
onClick={() => handleCopyLink(sectionId)}
className="text-gray-400 transition-all hover:text-gray-700 dark:text-white/60 dark:hover:text-white/80"
className="text-gray-400 hover:text-gray-700 dark:text-white/60 dark:hover:text-white/80"
aria-label={`Copy link to ${section.title} section`}
>
<Link2
Expand Down
6 changes: 2 additions & 4 deletions apps/mail/app/(full-width)/terms.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,12 @@ import { Button } from '@/components/ui/button';
import Footer from '@/components/home/footer';
import { createSectionId } from '@/lib/utils';


import React from 'react';

const LAST_UPDATED = 'February 13, 2025';

export default function TermsOfService() {
const { copiedValue: copiedSection, copyToClipboard } = useCopyToClipboard();


const handleCopyLink = (sectionId: string) => {
const url = `${window.location.origin}${window.location.pathname}#${sectionId}`;
Expand All @@ -25,7 +23,7 @@ export default function TermsOfService() {
<Navigation />
<div className="relative z-10 flex grow flex-col">
{/* Back Button */}
<div className="absolute right-4 top-6 md:left-8 md:top-8 md:right-auto">
<div className="absolute right-4 top-6 md:left-8 md:right-auto md:top-8">
<a href="/">
<Button
variant="ghost"
Expand Down Expand Up @@ -64,7 +62,7 @@ export default function TermsOfService() {
</h2>
<button
onClick={() => handleCopyLink(sectionId)}
className="text-gray-400 transition-all hover:text-gray-700 dark:text-white/60 dark:hover:text-white/80"
className="text-gray-400 hover:text-gray-700 dark:text-white/60 dark:hover:text-white/80"
aria-label={`Copy link to ${section.title} section`}
>
<Link2
Expand Down
2 changes: 1 addition & 1 deletion apps/mail/app/(routes)/developer/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ export default function DeveloperPage() {

<div className="grid grid-cols-1 gap-4 pb-4 sm:gap-6 md:grid-cols-2 lg:grid-cols-3">
{developerResources.map((resource) => (
<Card key={resource.title} className="transition-all hover:shadow-md">
<Card key={resource.title} className="hover:shadow-md">
<CardHeader className="sm:p-6">
<div className="flex items-start gap-4 sm:items-center">
<div className={`shrink-0 rounded-lg ${resource.bgColor} p-2.5`}>
Expand Down
6 changes: 1 addition & 5 deletions apps/mail/app/(routes)/mail/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import { HotkeyProviderWrapper } from '@/components/providers/hotkey-provider-wrapper';
import { OnboardingWrapper } from '@/components/onboarding';

import { NotificationProvider } from '@/components/party';
import { AppSidebar } from '@/components/ui/app-sidebar';
import { Outlet, } from 'react-router';

import { Outlet } from 'react-router';

export default function MailLayout() {
return (
Expand All @@ -14,7 +11,6 @@ export default function MailLayout() {
<Outlet />
</div>
<OnboardingWrapper />
<NotificationProvider />
</HotkeyProviderWrapper>
);
}
Loading
Loading