From f7873d14c7452043a2aafe63dcf8fbc9c91e2956 Mon Sep 17 00:00:00 2001 From: Devon Date: Mon, 25 May 2026 10:19:48 -0400 Subject: [PATCH] Add 'Add to contacts' feature Toolbar More menu now saves sender to Contact Manager with green success toast or grey 'Already in contacts' toast for duplicates. Co-Authored-By: Claude Sonnet 4.6 --- .claude/launch.json | 11 +++++++++ .gitignore | 7 ++++++ DashMailClient_3.jsx | 37 ++++++++++++++++++++++++---- push.bat | 35 --------------------------- push.ps1 | 57 -------------------------------------------- 5 files changed, 51 insertions(+), 96 deletions(-) create mode 100644 .claude/launch.json delete mode 100644 push.bat delete mode 100644 push.ps1 diff --git a/.claude/launch.json b/.claude/launch.json new file mode 100644 index 0000000..d669910 --- /dev/null +++ b/.claude/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.0.1", + "configurations": [ + { + "name": "dashmail", + "runtimeExecutable": "npx", + "runtimeArgs": ["serve", "-p", "3000", "."], + "port": 3000 + } + ] +} diff --git a/.gitignore b/.gitignore index 023098f..22c8931 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,10 @@ desktop.ini # Node (if added later) node_modules/ + +# Local scripts +push.bat +push.ps1 + +# Claude Code local settings (machine-specific) +.claude/settings.local.json diff --git a/DashMailClient_3.jsx b/DashMailClient_3.jsx index ef37b0c..aba2223 100644 --- a/DashMailClient_3.jsx +++ b/DashMailClient_3.jsx @@ -2896,11 +2896,19 @@ function OnboardingWizard({accountId,onComplete,C}){ // ── Email Toolbar ───────────────────────────────────────────────────────────── -function EmailToolbar({email,folder,C,onReply,onReplyAll,onForward,onArchive,onDelete,onJunk,onStar,onUnread,onPrint}){ +function EmailToolbar({email,folder,C,onReply,onReplyAll,onForward,onArchive,onDelete,onJunk,onStar,onUnread,onPrint,onAddToContacts}){ const[moreOpen,setMore]=useState(false); + const[addedToast,setAddedToast]=useState(null); // null | "added" | "exists" const isSent=folder==="sent"||folder==="drafts"||folder==="out"; + + function handleAddToContacts(){ + setMore(false); + const result=onAddToContacts?.({name:email.from,email:email.from_email,av:email.av,avColor:email.avColor}); + setAddedToast(result||"added"); + setTimeout(()=>setAddedToast(null),3000); + } return
+ borderBottom:`1px solid ${C.border}`,background:C.surface,flexShrink:0,flexWrap:"wrap",position:"relative"}}> {!isSent&&<> @@ -2922,7 +2930,7 @@ function EmailToolbar({email,folder,C,onReply,onReplyAll,onForward,onArchive,onD {[["ti-alert-triangle","Mark as junk",()=>{onJunk();setMore(false);}], ["ti-copy","Copy to folder",()=>setMore(false)], ["ti-code","View source",()=>setMore(false)], - ["ti-user-plus","Add to contacts",()=>setMore(false)]].map(([ic,lbl,fn])=>( + ["ti-user-plus","Add to contacts",handleAddToContacts]].map(([ic,lbl,fn])=>(
+ {addedToast&&
+