Overview
Recent UI improvements enhance the game interface with RS3-style keyboard shortcuts, mobile touch support, responsive panel sizing, and improved edit mode functionality.Action Bar Enhancements
RS3-Style Keyboard Shortcuts
Location:packages/client/src/game/panels/ActionBarPanel/
Expanded keyboard shortcuts using modifier keys for up to 5 action bars (70 total slots):
Bar 1 (14 slots): No modifier
1-9,0,-,=,Backspace,Insert
Ctrl+1throughCtrl+Insert
Shift+1throughShift+Insert
Alt+1throughAlt+Insert
Q,W,E,R,T,Y,U,I,O,P,[,],\
Ctrl+1→^1Shift+2→⇧2Alt+3→⌥3
Vertical Layout Support
Action bars now support both horizontal and vertical orientations:- Horizontal: Desktop action bars (default)
- Vertical: Mobile action bar (side of screen)
- Horizontal: 1 row × N columns
- Vertical: N rows × 1 column
- Controls (±, lock) only shown in horizontal mode
- Rubbish bin only shown in horizontal mode
Mobile Enhancements
Touch Sensor Support
Location:packages/client/src/game/interface/InterfaceManager.tsx
Added TouchSensor to dnd-kit for mobile drag-and-drop:
- Long-press items to drag to action bar
- Long-press prayers to drag to action bar
- Long-press skills to drag to action bar
- Works on all mobile panels (inventory, equipment, skills, prayer)
Terrain Long-Press Context Menu
Location:packages/shared/src/systems/client/interaction/InteractionRouter.ts
Mobile users can long-press terrain to open context menu:
- Touch and hold terrain for 500ms
- Context menu appears at touch position
- Release or move >10px cancels long-press
- Works for NPCs, objects, and ground items
Mobile Panel Sizing
Panel sizes reduced for better mobile fit: Before (PR #656):- Inventory: 240×320
- Equipment: 220×320
- Skills: 250×310
- Inventory: 320×420 (desktop), 260×360 (mobile)
- Equipment: 260×360 (desktop), 215×310 (mobile)
- Skills: 325×400 (desktop), matches prayer panel (mobile)
Edit Mode Improvements
Keyboard Handling Refactor
Location:packages/client/src/ui/core/edit/useEditModeKeyboard.ts
Extracted keyboard handling to separate hook to prevent duplicate listeners:
- Hold
Lfor 1 second to unlock edit mode - Progress bar shows hold duration
- Release before 1 second cancels
Escapekey locks edit mode instantly- Single event listener (no duplicates)
Delete Zone
Location:packages/client/src/ui/components/EditModeOverlay.tsx
Drag panels to delete zone to remove them:
- Only visible when dragging a window (not items)
- Visual feedback on hover (scale, color change)
- Trash icon with “Drop here to delete” label
- Uses
useDrophook for drop target handling
- Bottom center of screen
- z-index 9999 (above all panels)
- 120px × 80px hit area
Chat Improvements
Message Filtering by Tab
Location:packages/client/src/game/panels/ChatPanel.tsx
Chat tabs now properly filter messages:
Tabs:
- All - Shows all messages
- Game - Chat, system, activity, news, warnings, trade requests
- Clan - Clan/guild messages only
- Private - Private messages and whispers only
Menu Bar Improvements
Responsive Layout Algorithm
Location:packages/client/src/game/interface/PanelRegistry.tsx
Menu bar now uses dynamic layout calculation:
- Automatically reflows between 1-5 rows based on container size
- Buttons scale to fit available space
- Prefers horizontal layouts (fewer rows)
- Smooth transitions when resizing
- Minimum: 20px (compact layouts)
- Maximum: 32px (cleaner appearance)
Viewport Edge Snapping
When menu bar layout changes (row count), the window repositions to stay on screen:Panel Size Increases
All panels increased by ~30% for better readability:| Panel | Old (Preferred) | New (Preferred) | Increase |
|---|---|---|---|
| Inventory | 240×320 | 320×420 | +33% |
| Equipment | 220×320 | 260×360 | +18% |
| Stats | 210×285 | 275×370 | +31% |
| Skills | 250×310 | 325×400 | +30% |
| Combat | 240×280 | 310×360 | +29% |
| Settings | 280×360 | 360×470 | +29% |
| Minimap | 420×420 | 550×550 | +31% |
| Chat | 400×450 | 520×585 | +30% |
| Presets | 260×300 | 340×390 | +31% |
| Prayer | 400×450 (max) | 520×585 (max) | +30% |
Minimap Improvements
Fill Behavior
Location:packages/client/src/game/interface/InterfacePanels.tsx
Minimap now fills the entire container using the larger dimension:
- No gaps when resizing
- Always fills panel completely
- Maintains square aspect ratio
Dialogue Panel Fix
Removed Redundant Wrapper
Location:packages/client/src/game/interface/InterfaceModals.tsx
DialoguePanel has its own fixed positioning and backdrop, so wrapping it in ModalWindow caused duplicate styling:
- Duplicate backdrop
- Incorrect positioning
- Layout conflicts
- Desktop InterfaceManager
- Mobile InterfaceManager
Theme Color Updates
New Panel Colors
Location:packages/client/src/ui/themes/
Added dedicated panel background colors for better contrast:
- AccountPanel
- ActionBarPanel
- ActionPanel
- BankPanel
- ChatPanel
- CombatPanel
- DashboardPanel
- EquipmentPanel
- InventoryPanel
- All modal components
Equipment Panel Cleanup
Removed Character Silhouette
Location:packages/client/src/game/panels/EquipmentPanel.tsx
Removed the character silhouette SVG for cleaner appearance:
- Cleaner visual appearance
- Less visual clutter
- Equipment slots more prominent
- Matches OSRS minimalist style
Status Orb Redesign
Dark Fantasy Theme
Location:packages/client/src/game/hud/StatusOrbs.tsx
Status orbs redesigned with darker, more atmospheric styling:
Changes:
- Darker background colors
- Reduced glow intensity
- Subtle border highlights
- Better contrast for text
- Matches overall dark fantasy aesthetic
Border Radius Standardization
Squared Corners
Location: Multiple action bar components Changed from rounded to squared corners for consistency:- ActionBarPanel slots
- ActionBarSlot elements
- ActionBarContextMenu
- Rubbish bin
- Matches OSRS squared UI style
- More consistent with game aesthetic
- Cleaner appearance
Performance Optimizations
Style Memoization
Location:packages/client/src/game/panels/DuelPanel/
Memoized style objects to reduce render allocations:
- ConfirmScreen
- RulesScreen
- StakesScreen
- All duel panel screens
- Fewer object allocations
- Reduced garbage collection
- Smoother rendering
- Only recalculates when dependencies change
Type Safety Improvements
Event Payload Types
Location:packages/client/src/game/panels/ActionBarPanel/types.ts
Added proper type definitions for event payloads: