Donna

Hello.

I'm Donna, here for the things worth keeping track of.

Priorities

View all
Review the memory screen empty stateToday
Draft Q4 roadmap cut listTomorrow
Confirm Lisbon airport transferIn 2d
Reply to Mara about the icon setIn 4d
Q4 roadmap reviewToday

Here's a way to think about it. You have three workstreams competing for the same four weeks. Cutting scope works best when you protect the one with the highest cost of delay. ## What I'd keep - **Billing migration**: every week this slips compounds support load. - **Onboarding v2**: it's the thing new users actually judge you on first. ## What I'd cut or defer - Admin analytics dashboard: nice to have, no one's blocked without it. - Theming support: low usage signal, easy to revisit later. A rough sequencing: 1. Ship billing migration behind a flag, week 1–2. 2. Onboarding v2 in parallel, week 1–3. 3. Flag flip + monitoring, week 3. 4. Buffer + launch polish, week 4. If you want, I can turn this into a week-by-week plan with owners once you confirm the two workstreams to protect.

Prepping for the Figma syncYesterday

Three things stood out from your notes this week: 1. The empty state for the memory screen still feels unresolved, worth a quick decision rather than another round. 2. You flagged the composer's attachment icon as inconsistent with the rest of the icon set. 3. Nobody's confirmed who owns the mobile nav pattern. I'd lead with the empty state since it's blocking review, and park the icon note as a quick async fix.

Lisbon trip logistics3d ago

From what you've told me so far: - Flights are booked (Nov 14–21). - Still open: airport transfer, and whether you're renting a car for the Sintra day trip. - You mentioned wanting a quiet workspace for the two days you're working remotely, and no coworking spot is picked yet. Want me to keep this as a running checklist on the Tasks board instead of a conversation thread?

Debounce helper for search5d ago

Here's a minimal one with no dependencies: ```ts function debounce<Args extends unknown[]>( fn: (...args: Args) => void, delayMs: number, ) { let timer: ReturnType<typeof setTimeout> | undefined; return (...args: Args) => { if (timer) clearTimeout(timer); timer = setTimeout(() => fn(...args), delayMs); }; } ``` Use it with something like `const onSearch = debounce(runSearch, 250)`. If you need the pending call to be cancellable on unmount, let me know and I'll add a `.cancel()` method.

Command palette

Jump to a section or search your conversations.