fix(platform): UI polish and layout fixes#417
Conversation
📝 WalkthroughWalkthroughThis PR comprises multiple UI refinements and styling adjustments across the platform. Changes include adding flex layout properties to error display, introducing styled entity names in dialogs through split-based rendering, refactoring the chat search dialog from a flat list to a grouped structure by formatted date, restructuring the history panel with a close button, adding a header to the organization form, narrowing Settings menu visibility in the user button, and adjusting styling for input fields, copyable text, and data tables. The login route adds email trimming and removes automatic password error clearing on input changes. A translation key label is updated from "Manage members" to "Members". Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
services/platform/app/routes/_auth/log-in.tsx (1)
145-167:⚠️ Potential issue | 🟠 MajorLogin can get stuck after wrong credentials.
errors.passworddisables the submit button (Line 162–167), but the error is only cleared inhandleSubmit. After a wrong password, the user can’t resubmit because the button stays disabled. Clear the password error on input change (or remove it from the disabled condition).🔧 Proposed fix (clear password error on input change)
<Input id="password" type="password" size="lg" label={t('password')} placeholder={t('passwordPlaceholder')} disabled={isSubmitting} autoComplete="current-password" errorMessage={errors.password?.message} className="shadow-[0px_1px_2px_0px_rgba(0,0,0,0.05)]" - {...form.register('password')} + {...form.register('password', { + onChange: () => form.clearErrors('password'), + })} />
🤖 Fix all issues with AI agents
In `@services/platform/app/components/ui/entity/entity-delete-dialog.tsx`:
- Around line 99-109: The current rendering logic for styledDescription uses
translations.description.split('{name}') and only inserts entityName between
parts[0] and parts[1], losing additional {name} occurrences; update the
styledDescription construction (the parts variable and JSX that builds
styledDescription) to iterate over all parts and interleave a span with
entityName (className="text-foreground font-semibold") between each part so
every {name} placeholder is replaced, e.g., map over parts and return [part,
<span key=...>{entityName}</span>] for all but the last part, ensuring multiple
occurrences are preserved.
In `@services/platform/app/features/chat/components/chat-actions.tsx`:
- Around line 119-132: The delete confirmation currently splits
tChat('deleteConfirmation', { title: '\x00' }) and assumes parts[1] exists; add
a defensive check so missing placeholder doesn't break rendering: after
computing parts, if parts.length < 2 fall back to using the translated string
with the real title (e.g. call tChat('deleteConfirmation', { title: chat.title
})) or at minimum set post = parts[1] ?? '' and render pre, title, post; update
the inline IIFE around tChat/deleteConfirmation/parts to use this fallback.
In `@services/platform/app/routes/dashboard/`$id/chat.tsx:
- Around line 39-45: The close control button currently has no explicit type
(defaulting to "submit") which can accidentally submit a surrounding form;
update the button element that calls setIsHistoryOpen(false) and renders
<PanelLeftClose /> to include type="button" so it will act as a non-submitting
control, ensuring the onClick handler only toggles history visibility.
cf57e79 to
0c55343
Compare
Layout fixes: error display flex, data-table overflow, org ID truncation. UX improvements: bold entity names in delete dialogs, active state on history toggle, date-grouped chat search, floating sidebar close button, org creation page layout with header. Login form email trim and remove unnecessary useEffect. Search input size flexibility.
Replace all {name} placeholders in entity delete dialog by iterating
over split parts instead of only inserting between first two. Add
defensive fallback in chat delete confirmation when {title} placeholder
is missing.
Add missing exports for unused declarations across 17 files. Fix postMessage targetOrigin in service worker. Prefix unused destructured variable with underscore.
0c55343 to
1d07a20
Compare
Summary
text-nowrap.trim()validation, remove unnecessaryuseEffectfor password error clearing, search input size flexibility (remove hardcodedsize="sm")organizationId, rename "Manage members" to "Members"Test plan
Summary by CodeRabbit
Release Notes
New Features
Bug Fixes
UI/UX Improvements
Updates