Commit graph

966 commits

Author SHA1 Message Date
vimzh
923ed4e1f2 fix(onboarding): apply biome formatter to extractHandle fallback line 2026-05-24 12:00:36 +05:30
vimzh
698aa9ea69 fix(onboarding): handle www. and bare-domain X/Twitter URLs in research extractHandle
The previous extractHandle only stripped exact "https://x.com/" / "https://twitter.com/"
prefixes (and one leading "@"), so common URL formats produced garbage:

  https://www.x.com/vansh        -> "https:"
  x.com/vansh                    -> "x.com"
  https://mobile.twitter.com/foo -> "https:"

That junk handle was then passed straight to the Grok call, wasting an LLM
request and returning unusable research to the user.

Rewrite the parser to use the URL constructor (mirroring the more robust
parseXAccount in apps/web/app/api/onboarding/account-status/route.ts) so any
subdomain or bare-domain form works. Validate the resulting handle against the
1-15 char alphanumeric+underscore rule before invoking the model; fail fast
with a 400 instead of burning a model call on a bad input.
2026-05-24 11:44:23 +05:30
Ishaan Gupta
a8d36df38e
Improve quick note editor interactions & fix filter chips responsiveness (#989)
Some checks failed
Publish Memory Graph / publish (push) Has been cancelled
2026-05-23 11:54:17 -07:00
Ishaan Gupta
670d8bf76e
enable timeline memory selection (#990) 2026-05-23 11:49:52 -07:00
vorflux[bot]
9f5a9e580c
fix: graph controls gap on compact viewports + model selector z-index (#982)
Co-authored-by: Vorflux AI <noreply@vorflux.com>
Co-authored-by: Vedant Mahajan <vedant.04.mahajan@gmail.com>
2026-05-23 08:47:19 -07:00
Vedant Mahajan
ed809b26f9
Revert "Improve quick note editor interactions & fix filter chips responsiveness" (#987) 2026-05-21 22:42:01 +05:30
Ishaan Gupta
7f6b28ab83
Improve quick note editor interactions & fix filter chips responsiveness (#964)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Vedant Mahajan <vedant.04.mahajan@gmail.com>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
2026-05-21 21:29:33 +05:30
Vedant Mahajan
7a9b155db3
fix chat scroll and role section (#972)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-05-21 21:21:19 +05:30
vorflux[bot]
bdf23d2b5d
chore: replace play icon with sync icon on connections list (#983)
Co-authored-by: MaheshtheDev <38828053+MaheshtheDev@users.noreply.github.com>
2026-05-21 17:32:34 +05:30
MaheshtheDev
53ae4af5ab fix(web): portless dev auth redirects and session cookies (#981)
Middleware now reconstructs public URLs from portless forwarded headers and recognizes better-auth-dev session cookies so OAuth sign-in works with local API + worktree dev URLs.
2026-05-20 23:38:07 +00:00
Mahesh Sanikommu
41a9001660
feat(web): redesign settings layout + split billing into its own tab (#980) 2026-05-20 14:56:10 +05:30
MaheshtheDev
065fcf4ab5 fix: dashboard Notion/Google Drive suggestions open connect modal (#978)
The home dashboard suggestion cards routed Notion/Google Drive clicks through setViewMode("notion"|"google-drive"), but those values aren't in viewLiterals, so nuqs rejected them and silently fell back to the dashboard view — the click did nothing.

Route those two providers to the connect modal (setAddDoc("connect")), matching the Integrations 'Connections' card, and widen IntegrationParamValue to include them.
2026-05-20 03:37:49 +00:00
MaheshtheDev
68f043b14d fix(web): route Drive-hosted PDF URLs through backend proxy (#977)
Drive-ingested PDFs persist a raw googleapis.com URL that the browser can't fetch directly (403). Detect googleapis.com hostnames in PdfViewer and rewrite to `/v3/drive-proxy/<documentId>` with credentials. R2-hosted PDFs are unaffected.
2026-05-20 03:36:31 +00:00
Vedant Mahajan
d7663aa846
Address nova feedback bugs (#970)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-05-19 14:41:44 -07:00
Mahesh Sanikommu
a8e3e92392
Revert "feat(graph): auto-paginate consumer graph + loading progress chip" (#975) 2026-05-19 14:35:15 -07:00
vorflux[bot]
100e3ad46f
fix(web): close model selector on outside click (#974)
Co-authored-by: MaheshtheDev <38828053+MaheshtheDev@users.noreply.github.com>
2026-05-19 14:21:27 -07:00
MaheshtheDev
ac43fe157f fix(web): org plan badges via org-summaries and refresh Nova chat empty state (#968)
Use /v3/auth/org-summaries for per-org plan tiers in settings (same as console v2).
Extract chat empty state, add space-aware subtitle, and use AutoSpaceIcon in selectors.
2026-05-18 23:44:09 +00:00
MaheshtheDev
6448849f77 fix(web): stabilize home recents and improve org plan switcher (#967)
- Keep home Recently saved and suggestions in a stable two-column layout
- Show skeleton while recents load and empty state when none exist
- Cap org switcher dropdown height with scroll for long org lists
- Show plan tier badges on all orgs, sorted by plan rank
2026-05-18 19:36:44 +00:00
Mahesh Sanikommu
fbd9f5e4cf
feat(graph): auto-paginate consumer graph + loading progress chip (#966) 2026-05-18 22:45:30 +05:30
ved015
39f30f10b2 fix auto scroll bug and mobile responsiveness (#965)
This PR fixes a bug in auto scroll after the first msg auto scroll was not working properly it is fixed now

 It also tightens Support & Help on small screens: slightly reduced card/title spacing and stacked-button gaps, and replaces fixed-height pills with responsive vertical padding so label text is not flush with the pill edges on mobile devices

## Before
<img width="382" height="232" alt="Screenshot 2026-05-18 at 6 56 48 PM" src="https://github.com/user-attachments/assets/62c583a2-2417-44b6-8502-d6a7950eb136" />

## After
<img width="396" height="267" alt="Screenshot 2026-05-18 at 6 57 04 PM" src="https://github.com/user-attachments/assets/919dbf50-664a-44ec-aa95-287ca13fd77a" />
2026-05-18 16:37:40 +00:00
MaheshtheDev
52bd2b6aee feat(web): pwa prompt 'Add to Home Screen' opens share menu (#963) 2026-05-18 05:32:04 +00:00
MaheshtheDev
da47b1d7d3 fix(web): bust memory-of-day localStorage cache on deploy (#962)
Pairs with the API change that populates sourceDocumentId. The dashboard reads memory-of-day from localStorage first, so without a cache-key bump users would keep seeing the stale null-sourceDocument response for the rest of today. Bumping to :v2: forces a refetch on next load.
2026-05-17 23:57:34 +00:00
MaheshtheDev
d109b21bdf chore: Polish PWA install modal (#961)
- Replace hand-rolled motion.div sheet with Drawer from @ui/components
- Use insideOut Button for primary CTA; standardize close button with INSET shadow recipe
- Wrap content in recessed card (bg-#14161A + chrome-detail inset shadow)
- Replace 3 generic feature pills with 2x2 Check-list of honest PWA benefits
- Steps now use connected numbered circles with title + description (matches install-steps.tsx)
- Swap GradientLogo for actual app icon (/android-chrome-512x512.png)
- Add safe-area padding so CTA clears the home indicator
- Parallel noun-phrase copy: Instant launch / Full-screen mode / Native-app feel / Stays signed in
2026-05-17 23:32:36 +00:00
MaheshtheDev
e1e59b9fbd Fix Raycast API key bug and redesign setup modal (#960)
- Fix `authClient.apiKey.create()` returning undefined: better-auth resolves to `{ data, error }`, not the key directly. Use `res.data.key` (with `res.error` handling) in both `RaycastDetail` and `settings/integrations.tsx`.
- Extract `RaycastSetupModal` and reuse it across the nova home Raycast card and the Settings → Integrations Raycast modal. The new modal matches the plugins-connect design system (icon box, pill close, inset card with shared `InstallSteps`, install pill).
- Add `/settings/integrations` redirect page so `app.supermemory.ai/settings/integrations?q=raycast` lands on the Integrations tab and auto-opens the Raycast modal (the `?q=raycast` auto-trigger logic already existed; the route was the missing piece).
2026-05-17 23:15:04 +00:00
MaheshtheDev
1706752668 mobile responsiveness pass + connections reauth fix (#959)
Nova mobile pass
- viewport: viewportFit cover for iOS safe-area-inset
- safe-area utilities (pb-safe, pt-safe, bottom-safe-5, scroll-fade-x) in globals.css
- chat FAB pinned above iPhone home indicator; chat sidebar widths responsive across sm/md/lg with min() clamps
- chat input CoT panel max-h capped via min(60dvh, 420px)
- header tab strip swapped from visible scrollbar to scroll-fade-x mask + snap-x
- nova empty state uses svh on mobile, dvh from sm up

Add-memory modal rebuilt for mobile
- mobile shell switched from fullscreen Dialog to vaul Drawer at 85svh with swipe-down dismissal and scaled background
- in-modal header removed; tabs moved to the bottom of the sheet for thumb reach
- four tab compactLabels: Note, Links, Files, Connections
- desktop tabs now render only when !isMobile (no DOM duplication)
- note/link content state lifted to parent so switching tabs preserves typed input
- NoteContent snapshots initialContent via lazy useState so the editor isn't reset on every keystroke
- shared Drawer base uses rounded-t-xl
- removed legacy pt-4 on tab content for mobile

Connections — replace expiresAt with sync-run health
- new useConnectionHealth hook reads the latest sync run and matches auth-failure patterns; backend errorKind field still needed (TODO)
- regex tightened so 401/403 require co-occurring auth/token/grant context; refresh_token requires expired/revoked/invalid/missing qualifier
- badge label changed Disconnected -> Needs reauth
- Reconnect button replaces the sync action when needsReauth, kicks off the same OAuth flow
- per-row reconnect tracking via mutation.variables instead of a single shared id (no race when multiple rows clicked)
- fallback toast when authLink is missing so the spinner can't get stuck
- sync history panel timeline capped at max-h-260 with internal scroll
- useSyncRuns no longer refetches on mount; cache (30s) actually applies, cutting N requests per modal open
2026-05-17 21:49:23 +00:00
Ishaan Gupta
36ecf47110
Fix modal memory graph scoping by document and space (#948) 2026-05-17 00:55:12 -07:00
Dhravya Shah
28a60f5620
Fix Nova chat composer spacing (#958) 2026-05-17 00:43:52 -07:00
Dhravya Shah
fd78633fcf
Brand own space as Nova chats (#957) 2026-05-17 00:25:22 -07:00
Dhravya Shah
ba8eb52b94
Show own space as Your conversations (#956) 2026-05-17 00:15:37 -07:00
Dhravya Shah
6df9c8f462
Fix space selector overflow (#955) 2026-05-17 00:02:46 -07:00
Dhravya Shah
b6a9b1ea7b
Update chat empty state and Auto space mode (#954) 2026-05-16 23:55:34 -07:00
Dhravya Shah
5ec625cff7
Update app favicon assets (#953) 2026-05-16 21:24:27 -07:00
Mahesh Sanikommu
e763878622
feat: PWA install instructions modal for mobile (#952) 2026-05-16 21:24:19 -07:00
Dhravya Shah
cddeab679a
Add bulk space deletion (#951) 2026-05-16 20:51:00 -07:00
Dhravya Shah
2fe01a5290
Edit space names from selector (#949) 2026-05-16 20:14:19 -07:00
Ishaan Gupta
efd25bbd27
add headline sentences for personalisation instead of numeric IDs (#946) 2026-05-16 17:56:05 -07:00
Ishaan Gupta
bc2e043b2b
Implement final responsiveness adjustments and remove mobile banner (#947) 2026-05-16 17:54:49 -07:00
vorflux
b6913a0375 feat: highlight chat shows inline reply and uses highlight as assistant's first message (#944)
## Summary

Changes the highlight "Chat" button behavior:

- **Before**: Clicking "Chat" immediately opened the chat view with "Tell me more about XYZ" sent as the user's first message
- **After**: Clicking "Chat" reveals an inline reply input right under the highlight card. The user types their response, and when they submit:
  - The highlight content appears as the **assistant's first message** (prefixed with "Here is a highlight from your memories:")
  - The user's reply appears as the second message
  - A fresh chat thread is created (no overwriting existing conversations)

### Files Changed

- **`apps/web/components/highlights-card.tsx`** - Added inline reply input UI with send/cancel buttons, keyboard handling (Enter/Escape), auto-focus, and state reset on item navigation or items refresh
- **`apps/web/components/chat/index.tsx`** - Added `queuedHighlightContent` prop, fresh thread creation for highlight chats, deferred `setMessages` to ensure correct Chat instance targeting, and `awaitingHighlightInjectionRef` for safe reply dispatch
- **`apps/web/app/(app)/page.tsx`** - Added `queuedHighlightContent` state, updated `handleHighlightsChat` to accept highlight content + user reply, cleared stale highlight content in `handleHomeChatStart`
- **`apps/web/components/dashboard-view.tsx`** - Updated `onHighlightsChat` type signature
- **`apps/web/components/memories-grid.tsx`** - Updated `HighlightsProps.onChat` type signature

## Testing

### TypeScript
- `npx tsc --noEmit` — no new type errors (all errors are pre-existing in unrelated files)

### Biome
- `bunx biome check --write` — clean on all changed files (pre-existing warnings only in dashboard-view.tsx)

### Automated Tests (via testing subagent)
- **25 passed / 0 failed / 1 skipped** (26 total)
- Tests covered: inline reply input visibility, keyboard handling (Enter/Escape), reply state reset on navigation, highlight content injection as assistant message, user reply dispatch, fresh thread creation, stale highlight content prevention, pagination dot handler
- The testing agent discovered and fixed a race condition where `setMessages` was called before `useChat` had recreated its internal Chat object after `setFallbackChatId` — the fix defers `setMessages` to a separate effect gated on `currentChatId` matching the target
- 1 test skipped (T12): Nova FAB button not separately visible from highlights card button at 1440px viewport — expected structural behavior

---
**Session Details**
- Session: [View Session](https://supermemory.us1.vorflux.com/agent-sessions/9cbf2106-b7b9-4d7c-b275-2a7e72417793)
- Requested by: Soham Daga (soham@supermemory.com)
- Address comments on this PR. Add `(aside)` to your comment to have me ignore it.
2026-05-16 08:11:08 +00:00
ved015
4e607f9fd7 fix: Add plugin document rendering and MCP preview support (#938)
<h3>Implement comprehensive plugin document rendering support including MCP previews and plugin specific content handling.</h3>
<br>
<br>

<img width="1680" height="471" alt="Screenshot 2026-05-12 at 8 24 49 PM" src="https://github.com/user-attachments/assets/f1294bc2-2841-4833-9f01-ac47b8c52c01" />

<br>
<br>

<img width="1680" height="963" alt="Screenshot 2026-05-12 at 8 28 25 PM" src="https://github.com/user-attachments/assets/9436c7ab-3b9b-4366-86fd-1465407ff0f9" />
2026-05-15 18:26:37 +00:00
Ishaan Gupta
5065d66989
add responsivness in share graph, bookmark section, navigation controls (#940)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-05-15 08:37:01 -07:00
Ishaan Gupta
06d5bbfefa
add codex plugin logo and add in description (#943) 2026-05-15 08:25:43 -07:00
MaheshtheDev
aa83c0bc12 fix: onboarding bounce rate (#942) 2026-05-14 14:37:05 +00:00
MaheshtheDev
62ac31ecaa chore: theme default fix (#929) 2026-05-13 14:17:51 +00:00
vorflux[bot]
68a7781de7
feat: add connector sync visibility to NOVA settings page (#930)
Co-authored-by: MaheshtheDev <38828053+MaheshtheDev@users.noreply.github.com>
Co-authored-by: Mahesh Sanikommu <maheshthedev@gmail.com>
2026-05-12 11:59:56 +05:30
MaheshtheDev
5a0dffbc4c feat: in-app subscription cancellation for paid plans (#934)
## Summary
- Add a "Cancel subscription" button to the billing card for Pro and Scale users, alongside the existing "Manage billing" portal link.
- Cancellation is scheduled end-of-cycle via `autumn.updateSubscription({ planId, cancelAction: "cancel_end_of_cycle" })`, so users keep paid features until period end.
- Confirmation dialog surfaces remaining days from `useTokenUsage` and the correct plan name (Pro/Scale).
- Enterprise users do not see the cancel button — contract-based, portal/sales only.

Previously, the only path off a paid plan was Autumn's external customer portal, which contradicted the in-app "cancel anytime from the Billing tab" copy in the support FAQ.
2026-05-12 05:36:27 +00:00
MaheshtheDev
085c3dd8b3 feat: add codex and revamp plugins page (#931) 2026-05-11 23:13:08 +00:00
Mahesh Sanikommu
6437814f25
feat: add X-App-Source header to Nova + remove notify checkbox (#926)
Co-authored-by: Ishaan Gupta <ishaankone@gmail.com>
Co-authored-by: Vedant Mahajan <vedant.04.mahajan@gmail.com>
Co-authored-by: Akhilesh Arora <akhildawra@gmail.com>
2026-05-11 13:11:04 -07:00
Vedant Mahajan
bb50685ff4
Fix chat auto-scroll during streaming responses (#928)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-05-11 11:10:05 -07:00
Vedant Mahajan
82ff92b560
fix: fetch chat history when opening recent conversations sheet (#919) 2026-05-11 11:09:11 -07:00
vorflux[bot]
7c9f2efc4c
fix: redirect new users to onboarding from plugin connect page (#908)
Co-authored-by: Vorflux AI <noreply@vorflux.com>
Co-authored-by: MaheshtheDev <38828053+MaheshtheDev@users.noreply.github.com>
2026-05-11 10:57:43 -07:00