feat: implement header logo with dark mode support and favicon#95
feat: implement header logo with dark mode support and favicon#95NotYuSheng merged 3 commits intomainfrom
Conversation
- Add SVG favicon and logo with MeetMemo microphone design - Implement header logo display with proper sizing and alignment - Add dark mode color inversion for logo using CSS filters - Create PWA manifest for enhanced mobile experience - Update HTML with favicon and theme color metadata - Replace MessagesSquare icon with custom logo in header - Add smooth transitions for theme switching 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
There was a problem hiding this comment.
Summary of Changes
Hello @NotYuSheng, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
This pull request introduces significant branding and user experience enhancements to the MeetMemo application. It implements a custom SVG logo and favicon, ensuring visual consistency and brand identity. Furthermore, it adds robust dark mode support for the header logo and integrates a Progressive Web App (PWA) manifest, improving the application's mobile experience and overall aesthetic.
Highlights
- Branded Visuals: Implemented a custom SVG logo and favicon featuring the MeetMemo microphone theme, replacing generic icons for a stronger brand presence.
- Dynamic Dark Mode Support: The header logo now automatically adapts its appearance for light and dark themes using CSS filters, providing a seamless visual experience.
- Enhanced Mobile Experience: Integration of a PWA manifest and updates to HTML metadata enable "Add to Home Screen" functionality and better mobile integration.
- Header Icon Replacement: The generic MessagesSquare icon in the application header has been replaced with the new branded MeetMemo logo.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.
| Feature | Command | Description |
|---|---|---|
| Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
| Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
| Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
| Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
There was a problem hiding this comment.
Code Review
This pull request successfully implements a new header logo with dark mode support, a favicon, and a PWA manifest. The changes are well-structured. My feedback focuses on improving accessibility for the new SVG assets by adding <title> elements, enhancing PWA compatibility by suggesting additional icon formats in the manifest, and maintaining code cleanliness by removing an unused import.
| <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> | ||
| <!-- MeetMemo icon - microphone with memo elements --> |
There was a problem hiding this comment.
For better accessibility, it's a good practice to add a role="img" attribute to the <svg> tag and include a <title> element as its first child. This provides a human-readable title for screen readers.
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg" role="img">
<title>MeetMemo Favicon</title>
<!-- MeetMemo icon - microphone with memo elements -->
| <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> | ||
| <!-- MeetMemo icon - microphone with memo elements --> |
There was a problem hiding this comment.
For better accessibility, it's a good practice to add a role="img" attribute to the <svg> tag and include a <title> element as its first child. This provides a human-readable title for screen readers.
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg" role="img">
<title>MeetMemo Logo</title>
<!-- MeetMemo icon - microphone with memo elements -->
| "icons": [ | ||
| { | ||
| "src": "favicon.svg", | ||
| "sizes": "any", | ||
| "type": "image/svg+xml" | ||
| } | ||
| ], |
There was a problem hiding this comment.
While an SVG icon with sizes: "any" is a good start, some platforms have better support for raster icons (like PNG) at specific sizes. For the best user experience across all devices and platforms, consider adding a few standard PNG icon sizes to the icons array, such as 192x192 and 512x512. These would need to be created and added to the public directory. For example:
"icons": [
{
"src": "favicon.svg",
"sizes": "any",
"type": "image/svg+xml"
},
{
"src": "/logo192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "/logo512.png",
"type": "image/png",
"sizes": "512x512"
}
],| import { useCallback } from "react"; | ||
| import ReactMarkdown from "react-markdown"; | ||
| import remarkGfm from "remark-gfm"; | ||
| import MeetMemoIcon from "./MeetMemoIcon"; |
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Summary
Changes Made
New Files:
frontend/public/favicon.svg- SVG favicon with microphone and memo dots designfrontend/public/logo.svg- Identical SVG for header logo (allows separate customization)frontend/public/manifest.json- PWA manifest for mobile app experiencefrontend/src/MeetMemoIcon.js- Reusable React icon component (for future use)Updated Files:
frontend/public/index.html- Added favicon, manifest, and theme color metadatafrontend/src/MeetingTranscriptionApp.js- Replaced MessagesSquare with logo imagefrontend/src/MeetingTranscriptionApp.css- Added logo styling and dark mode inversionTechnical Implementation
filter: invert(1) hue-rotate(180deg)in dark themetransition: filter 0.3s easefor seamless theme switchingTest Plan
Visual Changes
The header now displays a branded MeetMemo logo (microphone with memo elements) instead of the generic MessagesSquare icon, providing better brand identity and visual consistency across the application.
🤖 Generated with Claude Code