Skip to content

Conversation

@marevol
Copy link
Contributor

@marevol marevol commented Jan 18, 2026

Summary

  • Enhance AI chat interface with modern Atlassian Design System patterns
  • Implement stepper component for visualizing search progress phases (Analyze → Search → Evaluate → Answer)
  • Add comprehensive CSS styling for improved user experience with responsive design
  • Support 16 languages with new i18n labels for chat UI elements
  • Clean up welcome screen by removing hardcoded suggestion chips

Changes

  • chat.jsp: Add stepper UI component, improve layout structure
  • chat.css: New styling following Atlassian design patterns with light/dark mode support
  • chat.js: Enhanced interaction handling and progress visualization
  • fess_label_*.properties: Add i18n labels for chat phases and UI elements (16 languages)
  • FessSearchAction.java, ChatClient.java: Organize imports alphabetically

Test plan

  • Verify AI chat mode displays stepper progress during search
  • Test responsive behavior on different screen sizes
  • Confirm i18n labels display correctly in various languages
  • Check light/dark mode styling

🤖 Generated with Claude Code

claude and others added 2 commits January 17, 2026 08:16
- Add Empty State with welcome message and suggestion chips
- Implement step-based progress indicator for RAG phases
- Convert status badge to ADS Lozenge style
- Add copy button action to assistant messages
- Improve source cards with file type icons and metadata
- Enhance input area with character counter and keyboard hints
- Implement Flag/Banner style error handling with retry option
- Add timestamps to chat messages
- Improve accessibility with ARIA attributes and focus management
- Enhance responsive design for mobile devices
- Add i18n labels for all 16 supported languages
Remove the hardcoded suggestion buttons from the AI chat welcome screen
to provide a cleaner, less opinionated initial UI. Also organize imports
alphabetically in related Java files.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@marevol marevol requested a review from Copilot January 18, 2026 04:40
@marevol marevol self-assigned this Jan 18, 2026
@marevol marevol added this to the 15.5.0 milestone Jan 18, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR modernizes the AI chat interface by implementing Atlassian Design System (ADS) patterns, improving the user experience through enhanced visual design, better progress indicators, and comprehensive internationalization support.

Changes:

  • Added visual stepper component to display AI processing phases (Analyze → Search → Evaluate → Retrieve → Answer)
  • Implemented responsive CSS styling with light/dark mode support following ADS patterns
  • Enhanced JavaScript interaction handling with copy-to-clipboard, character counter, and error banner features
  • Added i18n labels for 16 languages to support new UI elements

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
chat.js Added progress tracking, copy functionality, character counter, and improved error handling
chat.css Comprehensive ADS-styled CSS with status lozenges, progress indicators, error banners, and responsive design
chat.jsp Added stepper UI component, empty state, error banner, and accessibility attributes
fess_label_*.properties Added i18n labels for chat UI elements across 16 languages
ChatClient.java Alphabetized import statements
FessSearchAction.java Alphabetized import statements

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +43 to 47
var phaseOrder = ['intent', 'search', 'evaluate', 'fetch', 'answer'];

/**
* Initialize the chat module
*/
Copy link

Copilot AI Jan 18, 2026

Choose a reason for hiding this comment

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

The phaseOrder variable is defined but never used in the code. This appears to be dead code that should either be utilized for phase validation/ordering logic or removed to reduce clutter.

Suggested change
var phaseOrder = ['intent', 'search', 'evaluate', 'fetch', 'answer'];
/**
* Initialize the chat module
*/
/**
* Initialize the chat module
*/

Copilot uses AI. Check for mistakes.
elements.chatMessages.empty();
state.lastMessage = null;
state.lastError = null;
elements.chatMessages.find('.chat-message').remove();
Copy link

Copilot AI Jan 18, 2026

Choose a reason for hiding this comment

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

Using find().remove() is less efficient than .empty() when clearing all content. The previous implementation using .empty() was more performant. If the intention is to preserve the empty state element while removing chat messages, consider using a more specific selector or restructuring the DOM.

Suggested change
elements.chatMessages.find('.chat-message').remove();
elements.chatMessages.empty();

Copilot uses AI. Check for mistakes.
Comment on lines +268 to +274
.chat-messages:not(:has(.chat-message)) .empty-state {
display: flex;
}

.chat-messages:has(.chat-message) .empty-state {
display: none;
}
Copy link

Copilot AI Jan 18, 2026

Choose a reason for hiding this comment

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

The :has() pseudo-class has limited browser support in older browsers. Consider adding a fallback using JavaScript to toggle an 'empty' class on the chat-messages container for better browser compatibility.

Copilot uses AI. Check for mistakes.
bottom: 0;
left: 0;
right: 0;
background: linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(250,251,252,1) 20%);
Copy link

Copilot AI Jan 18, 2026

Choose a reason for hiding this comment

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

Magic numbers in the gradient (0%, 20%) and hardcoded color values should be defined as CSS custom properties for better maintainability and consistency with the design system.

Copilot uses AI. Check for mistakes.

.chat-message.user .message-avatar {
background-color: #0d6efd;
background: linear-gradient(135deg, #0052cc 0%, #2684ff 100%);
Copy link

Copilot AI Jan 18, 2026

Choose a reason for hiding this comment

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

Brand colors like #0052cc and #2684ff are repeated throughout the stylesheet. These should be defined as CSS custom properties (CSS variables) at the root level to ensure consistency and easier theme customization.

Copilot uses AI. Check for mistakes.

.char-counter {
font-size: 0.6875rem;
color: #8993a4;
Copy link

Copilot AI Jan 18, 2026

Choose a reason for hiding this comment

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

The font-variant-numeric: tabular-nums property may not be supported in all browsers. Consider adding a fallback or vendor prefixes for better cross-browser compatibility.

Suggested change
color: #8993a4;
color: #8993a4;
/* Fallbacks for browsers that don't support font-variant-numeric */
-moz-font-feature-settings: "tnum" 1;
-webkit-font-feature-settings: "tnum" 1;
font-feature-settings: "tnum" 1;

Copilot uses AI. Check for mistakes.
@marevol marevol merged commit c27e9e5 into master Jan 18, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants