Skip to content

feat: Add emoji picker to editor - #791

Merged
aXenDeveloper merged 4 commits into
canaryfrom
feat/editor_emoji
Sep 6, 2026
Merged

feat: Add emoji picker to editor#791
aXenDeveloper merged 4 commits into
canaryfrom
feat/editor_emoji

Conversation

@aXenDeveloper

Copy link
Copy Markdown
Owner

Improving Documentation

Description

What?

Why?

@vercel

vercel Bot commented Sep 6, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
vitnode-prod Ready Ready Preview Sep 6, 2026 4:43pm UTC

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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";

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment on lines +12 to +15
<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"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines 36 to 39
...coreDiscoveryRoutes,
...coreAuthRoutes,
ssoCallbackRoute,
notFoundRoute,
];

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Comment on lines 11 to 12
loader: async ({ params }) => {
const page = await getDocsPage({ data: params._splat ?? '' })

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Comment on lines +27 to +28
description={t("errors.404.desc")}
title={t("errors.404.title")}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +10 to +11
const slugs = decodeMarkdownUrl(params._splat?.split('/') ?? [])
const page = source.getPage(slugs)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment thread apps/web/src/router.tsx
Comment on lines +58 to +60
scrollRestoration: true,
dehydrate: () => dehydrateDocsPage(holder.current),
hydrate: hydrateDocsPage,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Comment on lines +19 to +21
export const SUPPORTED_FONT_SIZES = [
"12px",
"14px",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Comment on lines +81 to +84
<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"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@aXenDeveloper
aXenDeveloper merged commit 7ca76f4 into canary Sep 6, 2026
3 of 4 checks passed
@aXenDeveloper
aXenDeveloper deleted the feat/editor_emoji branch September 6, 2026 16:41

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

defaultErrorComponent: () => <Error500Page actions={<ErrorActions />} />,

P1 Badge Keep the root error fallback independent of route providers

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.


const pages = await Promise.all(source.getPages().map(getLLMText))

P2 Badge Cache the generated full-documentation response

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".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💡 Feature A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant