mirror of
https://github.com/supermemoryai/supermemory.git
synced 2026-10-12 03:48:08 +00:00
`apps/web` extends a tsconfig with `noUncheckedIndexedAccess`, so index
access and a few genuine defects had accumulated behind a gate that has
never been green.
Most of it traced to one expression: `useProject().selectedProject` was
`normalizedProjects[0]`, typed `string | undefined` even though the array is
never empty. Defaulting it to the same tag the array falls back to fixed ~20
errors across chat, add-document, app-experience, quick-note-card and the
note modals in one line.
The rest:
- orbit-memory: type `ring` as `0 | 1` and RR/SPEED as tuples so ring lookups
stay `number`, iterate INTEG with `.entries()`, guard the comet refs, and
fall back to an empty icon when a node has no key
- memory-graph `use-graph-data` and `graph-card`: iterate with `.entries()`
and skip edges whose endpoints are missing instead of indexing blind
- chat history buckets and user initials: optional access on fixed-shape
arrays that TypeScript cannot narrow
- `stores/chat`: drop the `msgA.content !== msgB.content` comparison —
UIMessage keeps its text in `parts`, so both sides were always undefined —
and type the conversations fallback so entries aren't `unknown`
- `useResetOrganization`: `retry: 0`, since the object form of RetryOptions
needs type/baseDelay/maxDelay
- SyncLogoIcon: accept the `style` prop timeline-view already passes it
One real bug surfaced on the way: the iOS-shortcut mutation in settings
returned `res.key` from `authClient.apiKey.create()`, which resolves to
`{ data, error }`. The key was always undefined, so the modal showed nothing
and the clipboard copy had nothing to copy. It now unwraps the result the same
way the Raycast mutation right below it does.
|
||
|---|---|---|
| .. | ||
| assets | ||
| button | ||
| components | ||
| input | ||
| other | ||
| text | ||
| biome.json | ||
| components.json | ||
| copy-button.tsx | ||
| copyable-cell.tsx | ||
| globals.css | ||
| package.json | ||
| tsconfig.json | ||