Skip to content

feat(ui): add Simple chat appearance#494

Open
clawdyagent wants to merge 4 commits into
NeuralNomadsAI:devfrom
domness:feature/simple-ui-appearance
Open

feat(ui): add Simple chat appearance#494
clawdyagent wants to merge 4 commits into
NeuralNomadsAI:devfrom
domness:feature/simple-ui-appearance

Conversation

@clawdyagent
Copy link
Copy Markdown

@clawdyagent clawdyagent commented May 21, 2026

Summary

Adds a device-scoped Simple chat appearance option for users who want a lighter conversation view without changing the default chat UI.

Changes

  • Adds a chatStyle preference with Default and Simple options in Appearance settings.
  • Applies Simple chat mode through data-chat-style="simple" so styling stays scoped to chat appearance.
  • Adds Simple-mode chat CSS for user bubbles, assistant prose, simplified tool calls, and prompt controls.
  • Adds localized Simple chat settings copy for supported locales.
  • Documents the feature plan in docs/features/simple-ui/PLAN.md.

Validation

  • npm run typecheck --workspace @codenomad/ui
  • npm run build:ui

clawdyagent and others added 3 commits May 21, 2026 16:44
Add a chat-scoped Simple appearance preference that keeps the wider app chrome unchanged while simplifying the conversation view.

The UI adds a Default/Simple chat style setting with localized labels, applies data-chat-style=simple through the theme layer, and introduces scoped appearance styles for user bubbles, assistant prose, tool-call pills, inline tool summaries, and simplified tool input/output sections.

Simple chat styling is isolated under packages/ui/src/styles/appearance so default chat continues to use the existing presentation.

Includes the Simple UI planning document. Validation during the branch included UI typecheck and repeated npm run build:ui runs after the final layout changes.
Localize the new Appearance chat style labels and descriptions for Spanish, French, Hebrew, Japanese, Russian, and Simplified Chinese so the Simple chat option does not fall back to English in supported locales.

This only updates message catalog entries; English remains the source text and the custom i18n merge/typecheck path verifies the locale files still compile.

Validation: npm run typecheck --workspace @codenomad/ui; npm run build:ui
@github-actions
Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/26245533262

Artifacts expire in 7 days.
Artifacts: (none found on this run)

1 similar comment
@github-actions
Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/26245533262

Artifacts expire in 7 days.
Artifacts: (none found on this run)

@github-actions
Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/26245561165

Artifacts expire in 7 days.
Artifacts:

  • pr-494-f2b32b8771bb59ecfe45f75f47a4e618dce4b5d8-tauri-linux
  • pr-494-f2b32b8771bb59ecfe45f75f47a4e618dce4b5d8-tauri-macos
  • pr-494-f2b32b8771bb59ecfe45f75f47a4e618dce4b5d8-tauri-windows
  • pr-494-f2b32b8771bb59ecfe45f75f47a4e618dce4b5d8-electron-macos
  • pr-494-f2b32b8771bb59ecfe45f75f47a4e618dce4b5d8-tauri-macos-arm64
  • pr-494-f2b32b8771bb59ecfe45f75f47a4e618dce4b5d8-electron-windows
  • pr-494-f2b32b8771bb59ecfe45f75f47a4e618dce4b5d8-electron-linux

@pascalandr
Copy link
Copy Markdown
Contributor

@CodeNomadBot

I want you to perform the gatekeeper checks for latest PR state

check for regressions
check for better possible implementations
Be the PR gatekeeper
Be ruthless about code quality

@codenomadbot
Copy link
Copy Markdown
Contributor

codenomadbot Bot commented May 25, 2026

Gatekeeper review for latest PR state.

I understood the request as a ruthless review/validation pass only: look for regressions, incomplete implementation, and better implementation choices without changing code. No PR review comments existed beyond the issue thread.

Findings:

  1. Blocking: the PR documents a required prompt send icon change but does not implement it.
    docs/features/simple-ui/PLAN.md:84 says the send fallback should be replaced with an up-arrow, and docs/features/simple-ui/PLAN.md:119 lists “Prompt send displays an up arrow” as acceptance criteria. The current code still renders the play triangle fallback at packages/ui/src/components/prompt-input.tsx:979. This leaves the feature internally inconsistent and misses one of its own acceptance criteria.

  2. Blocking/docs-quality: the plan references prototype assets that are not present in the PR.
    docs/features/simple-ui/PLAN.md:7 and docs/features/simple-ui/PLAN.md:9 reference docs/features/simple-ui/simple-ui-prototype.png and .svg, and docs/features/simple-ui/PLAN.md:120 says the prototype PNG exists. The PR only contains PLAN.md under that directory, so these links are broken. Either add the assets or remove/adjust the references and acceptance criterion.

Quality notes:

  • The preference plumbing is minimal and correctly defaults existing users to chatStyle: "default".
  • The runtime scoping via data-chat-style="simple" is appropriately isolated from data-theme and should preserve the default UI when unset.
  • The CSS is mostly well scoped under :root[data-chat-style="simple"], which is the right implementation direction for this feature.
  • packages/ui/src/styles/appearance/simple-ui-layout.css is already ~194 lines. That is not a merge blocker, but it exceeds the repo’s preferred focused-style-file guideline; consider splitting prompt/message/tool-call overrides if this grows further.

Validation:

  • git diff --check origin/dev...HEAD: passed.
  • npm run typecheck --workspace @codenomad/ui: inconclusive in this local worktree because dependencies/types cannot be resolved, starting with solid-js and @opencode-ai/sdk/v2/client.
  • npm run build:ui: inconclusive in this local worktree because Rollup’s optional native package @rollup/rollup-darwin-arm64 is missing from the installed dependencies.

Verdict: changes requested. The implementation direction is good, but the PR should not merge while its own documented acceptance criteria are unmet and the docs reference missing assets.

--
Yours,
CodeNomadBot

Remove stale prototype asset references and the unimplemented prompt send up-arrow requirement from the Simple chat plan so the documented scope matches the CSS-only implementation in the PR.

The feature intentionally leaves prompt-input markup unchanged; Simple prompt presentation remains handled through scoped CSS.

Validation: documentation-only change; reviewed PLAN.md references for prototype and up-arrow requirements.
@pascalandr
Copy link
Copy Markdown
Contributor

@CodeNomadBot
same review

@github-actions
Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/26472171308

Artifacts expire in 7 days.
Artifacts:

  • pr-494-b10b8bbcf13a207540c59ff26490059d68c131cd-electron-macos
  • pr-494-b10b8bbcf13a207540c59ff26490059d68c131cd-tauri-macos
  • pr-494-b10b8bbcf13a207540c59ff26490059d68c131cd-tauri-linux
  • pr-494-b10b8bbcf13a207540c59ff26490059d68c131cd-tauri-windows
  • pr-494-b10b8bbcf13a207540c59ff26490059d68c131cd-tauri-macos-arm64
  • pr-494-b10b8bbcf13a207540c59ff26490059d68c131cd-electron-windows
  • pr-494-b10b8bbcf13a207540c59ff26490059d68c131cd-electron-linux

@codenomadbot
Copy link
Copy Markdown
Contributor

codenomadbot Bot commented May 26, 2026

Gatekeeper re-review for latest PR state.

I understood “same review” as rerunning the prior ruthless gatekeeper pass against the current PR head, not changing code. Latest head is b10b8bbc (docs(ui): align Simple chat plan with implementation). No inline PR review comments are present.

Findings:

  • No blocking code findings found in this static re-review.
  • The two previous blockers are addressed at the documentation level: the plan no longer requires the prompt send icon markup change, and it no longer references missing prototype PNG/SVG assets.

Quality notes:

  • Preference plumbing remains minimal and safe: chatStyle defaults to "default", invalid persisted values normalize back to default, and the setter avoids redundant writes.
  • The data-chat-style="simple" application is scoped and reversible, and it stays separate from data-theme, which is the right implementation direction.
  • The CSS overrides are consistently scoped under :root[data-chat-style="simple"], so the default chat UI should remain unaffected when the attribute is absent.
  • packages/ui/src/styles/appearance/simple-ui-layout.css is ~194 lines. Not a blocker, but it is already above the repo’s preferred focused-style-file guideline; split message/tool-call/prompt overrides if this grows further.
  • Several non-English settings files still contain existing English strings around nearby settings keys; this PR does not make that worse for the new chat-style keys, which are translated, but locale completeness remains dependent on separate i18n cleanup.

Validation:

  • git diff --check origin/dev...HEAD: passed.
  • npm run typecheck --workspace @codenomad/ui: inconclusive in this local worktree because installed dependencies/types are missing, starting with solid-js and @opencode-ai/sdk/v2/client.
  • npm run build:ui: inconclusive in this local worktree because Rollup’s optional native package @rollup/rollup-darwin-arm64 is missing.

Verdict: no static-review blocker found in the latest PR state. I would still require clean CI for typecheck/build before merge because local validation is blocked by the workspace dependency install, not by a confirmed PR-specific failure.

--
Yours,
CodeNomadBot

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.

3 participants