feat: Add emoji picker to editor - #791
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2e1ac6dd33
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @@ -1,28 +1,125 @@ | |||
| @import "tailwindcss"; | |||
| @import "./emoji-picker.css"; | |||
There was a problem hiding this comment.
Include the picker CSS in the published package
When @vitnode/core is packed, .npmignore re-includes src/tiptap.css but still excludes the newly imported src/emoji-picker.css; an npm pack --dry-run archive contains only the former. Consequently, consumers—including apps generated from the updated template—will fail while resolving ./emoji-picker.css from the exported stylesheet. Re-include that file in the package or inline its contents.
Useful? React with 👍 / 👎.
| <span | ||
| aria-label={t("drag_handle")} | ||
| className="text-muted-foreground hover:bg-accent hover:text-foreground flex size-6 cursor-grab items-center justify-center rounded-sm active:cursor-grabbing" | ||
| role="button" |
There was a problem hiding this comment.
Make the drag handle keyboard-operable
For users navigating without a pointer, this element advertises itself as a button but is neither focusable nor equipped with keyboard behavior, so the new block-moving action cannot be reached or invoked. Use a real focusable control and provide keyboard move commands, or expose an equivalent accessible reordering mechanism.
AGENTS.md reference: AGENTS.md:L54-L55
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0e4cf166e1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| ...coreDiscoveryRoutes, | ||
| ...coreAuthRoutes, | ||
| ssoCallbackRoute, | ||
| notFoundRoute, | ||
| ]; |
There was a problem hiding this comment.
Restore the main-shell catch-all route
For any URL not claimed by another route, TanStack Router matches only the root, so removing notFoundRoute from this list means the 404 no longer renders beneath _main; in the checked web app this drops MainHeader, ThemeLayoutContent (including the <main> landmark), and the footer, while the generated-app template does not configure a replacement defaultNotFoundComponent at all. Restore a catch-all beneath the main shell rather than relying solely on the router-level fallback.
AGENTS.md reference: AGENTS.md:L55-L55
Useful? React with 👍 / 👎.
| loader: async ({ params }) => { | ||
| const page = await getDocsPage({ data: params._splat ?? '' }) |
There was a problem hiding this comment.
Restore redirects for previously published docs URLs
Requests for old published paths now go directly to getDocsPage, which throws a 404 because those source pages do not exist; for example, repo-wide inspection confirms /docs/dev/not-found is absent while /docs/dev/routing/not-found exists. The removed beforeLoad/movedDocsSlug mapping previously issued a 301 for this and the other renamed pages, so existing bookmarks and indexed links now break instead of reaching their replacements.
Useful? React with 👍 / 👎.
| description={t("errors.404.desc")} | ||
| title={t("errors.404.title")} |
There was a problem hiding this comment.
Use the 500 translations on the 500 error page
Whenever defaultErrorComponent handles an unexpected exception, this component displays code 500 but labels it “Page Not Found” with the 404 description. Both locales already provide errors.500.title and errors.500.desc, so the current mismatch misleads users into treating a server failure as a missing URL.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 66a6049268
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const slugs = decodeMarkdownUrl(params._splat?.split('/') ?? []) | ||
| const page = source.getPage(slugs) |
There was a problem hiding this comment.
Move Markdown generation out of the route module
This new route performs slug decoding, documentation lookup, Markdown generation, and response construction directly inside the route file. That couples routing topology to the docs implementation and violates the repository boundary for route modules; extract the handler implementation and leave only its route wiring here.
AGENTS.md reference: AGENTS.md:L26-L28
Useful? React with 👍 / 👎.
| scrollRestoration: true, | ||
| dehydrate: () => dehydrateDocsPage(holder.current), | ||
| hydrate: hydrateDocsPage, |
There was a problem hiding this comment.
Restore blocking pending behavior in the web router
In the checked apps/web router, removing defaultStaleReloadMode: 'blocking' and the paired pending/preload timings regresses intent-preloaded navigation: if a user clicks while a lazy route chunk is still downloading, TanStack can classify the reload as background, change the URL, and leave the old page visible without RoutePendingSpinner. The deleted pending-navigation test explicitly covered this case, and the generated-app router still retains these settings, so restore them here as well.
Useful? React with 👍 / 👎.
| export const SUPPORTED_FONT_SIZES = [ | ||
| "12px", | ||
| "14px", |
There was a problem hiding this comment.
Remove the 12px body-text option
When an editor user applies the first font-size option to paragraph content, TipTap serializes body text at 12px, below the repository's 14px accessibility floor. Remove this option or limit it to a context where it cannot format body copy.
AGENTS.md reference: AGENTS.md:L70-L70
Useful? React with 👍 / 👎.
| <div | ||
| className="bg-popover text-popover-foreground ring-foreground/10 max-h-64 w-72 overflow-y-auto rounded-md p-1 shadow-md ring-1" | ||
| ref={listRef} | ||
| role="listbox" |
There was a problem hiding this comment.
Announce the active emoji suggestion
For screen-reader users typing a : query, focus remains in the editor while ArrowUp/ArrowDown only changes aria-selected on an unfocused option; the editor has no aria-activedescendant relationship and the list has no live announcement, so users cannot determine which emoji Enter or Tab will insert. Wire the editor and listbox through an active descendant or provide an equivalent announced selection mechanism.
AGENTS.md reference: AGENTS.md:L54-L55
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
vitnode/apps/web/src/router.tsx
Line 64 in db8def5
When the root loader's locale request fails, TanStack replaces RootComponent, so VitNodeRootProviders and its RouteMessages provider never mount. This fallback then renders Error500Page, which immediately calls useTranslations, causing a missing-intl-context error that masks the original failure instead of displaying the intended 500 page. Make the root fallback provider-free or mount the required provider above the route error boundary.
Every request to /llms-full.txt now calls getLLMText for all 132 documentation pages and rebuilds the complete document. The previous implementation memoized this aggregate per source, including concurrent first requests, so removing that cache adds repeated processing and large string allocation to every crawler or agent request; restore equivalent production-side memoization.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Improving Documentation
pnpm lint:fixto fix formatting issues before opening the PR.Description
What?
Why?