Skip to content

fix(ui): mobile command picker and DiscordEmbed label spacing#304

Draft
RedStar071 wants to merge 24 commits into
mainfrom
cursor/mobile-command-picker-embed-spacing-1354
Draft

fix(ui): mobile command picker and DiscordEmbed label spacing#304
RedStar071 wants to merge 24 commits into
mainfrom
cursor/mobile-command-picker-embed-spacing-1354

Conversation

@RedStar071

@RedStar071 RedStar071 commented Jul 18, 2026

Copy link
Copy Markdown
Member

🔗 Linked issue

N/A — UI polish from Discord mobile/embed screenshots.

🧭 Context

Two showcase regressions on /wolfstar:

  1. The slash-command picker on small viewports still used the desktop left rail instead of Discord mobile’s horizontal app bar under the list.
  2. Bold embed labels (Type, User, Reason, logging fields) jammed into their values because Vue’s whitespace condensation drops spaces between tags, and DiscordMention/DiscordRole are components rather than text nodes.

📚 Description

  • Command picker: desktop styles stay the default; Discord mobile layout (column + bottom rail, uppercase labels, pill input) is applied only below md via max-md: / md: — no inverted mobile-first base cascade.
  • DiscordEmbed spacing: unscoped strong::after space plus explicit template spaces so every embed caller keeps a gap before text and mention/role chips.
  • DiscordMention / DiscordRole: small leading margin so chip components don’t sit flush against prior text when whitespace is stripped.
  • Showcase templates + Nuxt SSR tests updated.

Mobile command picker
Embed label spacing
Desktop command picker

Test plan

  • Below md: list on top, horizontal app rail below, pill input + send
  • md+: original vertical left rail and desktop input tools
  • Embeds: space after Type/User/Reason and logging labels next to mentions
  • pnpm lint:fix, pnpm typecheck, pnpm build:test, pnpm test:unit, pnpm test:nuxt

To show artifacts inline, enable in settings.

Open in Web Open in Cursor 

View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.

Confidence Score: 4/5

This PR needs one contained type-check fix before merging.

The UI changes are mostly component and style updates, but app/types/discord.ts now references an unimported type and breaks type checking.

app/types/discord.ts

T-Rex T-Rex Logs

What T-Rex did

  • I reproduced the missing type import by running a focused TypeScript check against app/types/discord.ts using the generated Nuxt app tsconfig path mappings.
  • I examined the TypeScript diagnostic output and confirmed the error cannot find name 'SlashCommandDisplayInput' at app/types/discord.ts(7,4).
  • I reviewed the WolfStar Storybook and Playwright logs to understand UI capture behavior, noting a 60-second timeout waiting for domcontentloaded, Storybook readiness followed by exit due to runtime dependencies, and a narrow capture failing because the iframe connection was refused.

View all artifacts

T-Rex Ran code and verified through T-Rex

Fix All in Claude Code Fix All in Cursor Fix All in Cursor Cloud Agents

Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
app/types/discord.ts:1-4
**Restore missing type import**
`MessageReplyProps` still extends `SlashCommandDisplayInput`, but this PR removed the only import for that type. In this file it is referenced on line 7 with no local import or declaration, so `vue-tsc` and Nuxt type checking fail with `Cannot find name 'SlashCommandDisplayInput'`. Add the type import from the new `#shared/types/chat-input-command` module.

```suggestion
import type { SlashCommandDisplayInput } from "#shared/types/chat-input-command";
import type { ProfileName } from "@/utils/constants";

// #region Message Reply
type MessageReplyKind = "command" | "message";
```

Reviews (16): Last reviewed commit: "fix(discord): hide channel messages unde..." | Re-trigger Greptile

cursoragent and others added 2 commits July 18, 2026 15:01
Match Discord mobile slash-command suggestions (horizontal app rail,
uppercase app labels, pill input) and restore gaps after bold embed
labels when values are DiscordMention/DiscordRole components.

Co-authored-by: RedStar <redstar071@proton.me>
@codspeed-hq

codspeed-hq Bot commented Jul 18, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 44 untouched benchmarks


Comparing cursor/mobile-command-picker-embed-spacing-1354 (3909c9c) with main (8718987)

Open in CodSpeed

@codecov

codecov Bot commented Jul 18, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 66.25387% with 109 lines in your changes missing coverage. Please review.
✅ Project coverage is 70.98%. Comparing base (8718987) to head (3909c9c).
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
...rketing)/wolfstar/@components/CommandsShowcase.vue 66.44% 30 Missing and 20 partials ⚠️
app/components/discord/chat-message-composer.vue 33.33% 13 Missing and 9 partials ⚠️
app/components/discord/member-list.vue 73.33% 0 Missing and 12 partials ⚠️
app/components/discord/scrollbar.vue 44.44% 7 Missing and 3 partials ⚠️
shared/utils/chat-input-command.ts 33.33% 0 Missing and 6 partials ⚠️
...ponents/discord/chat-input-command/suggestions.vue 73.33% 3 Missing and 1 partial ⚠️
...omponents/discord/v2/string-select-menu-option.vue 76.92% 0 Missing and 3 partials ⚠️
app/components/discord/channel/header.vue 95.23% 0 Missing and 1 partial ⚠️
...eting)/wolfstar/@components/ModerationShowcase.vue 83.33% 0 Missing and 1 partial ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main     #304      +/-   ##
==========================================
- Coverage   71.53%   70.98%   -0.56%     
==========================================
  Files         167      169       +2     
  Lines        3302     3553     +251     
  Branches      702      762      +60     
==========================================
+ Hits         2362     2522     +160     
- Misses        447      493      +46     
- Partials      493      538      +45     
Flag Coverage Δ
component 65.64% <65.32%> (-0.46%) ⬇️
unit 67.67% <33.33%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
app/components/discord/channel/welcome.vue 100.00% <100.00%> (ø)
...components/discord/chat-input-command/app-icon.vue 100.00% <ø> (ø)
...pp/components/discord/chat-input-command/group.vue 50.00% <ø> (ø)
...pp/components/discord/chat-input-command/index.vue 93.33% <ø> (ø)
.../components/discord/chat-input-command/matched.vue 72.72% <ø> (ø)
...mponents/discord/chat-input-command/suggestion.vue 68.75% <100.00%> (ø)
app/components/discord/chat.vue 100.00% <100.00%> (ø)
app/components/discord/embed.vue 100.00% <ø> (ø)
app/components/discord/message-reply.vue 81.25% <ø> (ø)
app/components/discord/message.vue 100.00% <100.00%> (ø)
... and 14 more

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Also apply oxfmt class-order and template formatting tweaks.

Co-authored-by: RedStar <redstar071@proton.me>
@blacksmith-sh

This comment has been minimized.

cursoragent and others added 6 commits July 18, 2026 15:47
Use an unscoped strong::after rule and explicit template spaces so Type,
User, Reason, and logging fields keep a gap before text and mention chips.

Co-authored-by: RedStar <redstar071@proton.me>
Restore the original desktop styles as defaults and scope Discord mobile
layout/input tweaks to max-md instead of inverting the base cascade.

Co-authored-by: RedStar <redstar071@proton.me>
Stop rendering the WolfStar group under Frequently Used, surface Staryl's
first command in that slot instead, and size the picker to five visible rows.

Co-authored-by: RedStar <redstar071@proton.me>
Compose WolfStar CommandsShowcase as a Discord-like workspace (header,
welcome, chat, member list, message input) and cover it with SSR/a11y tests.
@blacksmith-sh

This comment has been minimized.

Move channel header/welcome under discord/channel/, rename MessageComposer
to chat-message-composer, and align the composer toolbar with Discord icons.
Group slash-command UI, shared types/utils, and tests under chat-input-command,
update auto-import names, and fix knip/composer SSR assertions that were failing CI.
Align header, composer, member list, slash picker, and string-select with
Discord desktop/mobile patterns, use Discord-true oklch chrome, wire
members toggle and support-server roster avatars, and simplify moderation
reply text in the marketing showcase.
Import Message bar / toolbar SVGs from the Discord assets Figma pack and
switch channel header plus composer attach controls to discord:* icons.
@blacksmith-sh

This comment has been minimized.

RedStar071 and others added 4 commits July 20, 2026 20:30
…ence

Align the mockup closer to Discord with a plain attach control, composed
slash chrome, short-channel welcome pinning, status icons, and SSR coverage.
…-picker-embed-spacing-1354

Co-authored-by: RedStar <redstar071@proton.me>
Satisfy the design-token guardrail for string-select hover and
CommandsShowcase SurfaceCard chrome without changing the colors.

Co-authored-by: RedStar <redstar071@proton.me>
Co-locate CSF stories for Discord mock UI (messages, embeds, chat input
commands, channel chrome, and Components V2), with shared fixtures and a
Discord dark chrome decorator for Chromatic snapshots.

Co-authored-by: RedStar <redstar071@proton.me>
@netlify

netlify Bot commented Jul 21, 2026

Copy link
Copy Markdown

Deploy Preview for wolfstar-rocks-et34281 failed.

Name Link
🔨 Latest commit 3909c9c
🔍 Latest deploy log https://app.netlify.com/projects/wolfstar-rocks-et34281/deploys/6a5f5d539f763300091bef7d

cursoragent and others added 5 commits July 21, 2026 10:56
Vue's compiler could not resolve the auto-imported base type when
building chat-input-command stories; import it explicitly instead.

Co-authored-by: RedStar <redstar071@proton.me>
Use a transparent track with a 4px muted pill thumb everywhere (including
the command picker), and hide the chat scrollbar until hover or scroll.

Co-authored-by: RedStar <redstar071@proton.me>
…ed-spacing-1354' into cursor/mobile-command-picker-embed-spacing-1354
…ed-spacing-1354' into cursor/mobile-command-picker-embed-spacing-1354
Overlay the picker on the chat, clear messages while slash mode is
active (no short-channel scrollbar), and close the picker after execute
so the bot response is revealed like Discord.

Co-authored-by: RedStar <redstar071@proton.me>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants