Skip to content

fix: improve dark mode text contrast on settings and call pages - #138

Open
aditiraj-dev wants to merge 1 commit into
itzzavdhesh:mainfrom
aditiraj-dev:fix-dark-mode-text-contrast
Open

fix: improve dark mode text contrast on settings and call pages#138
aditiraj-dev wants to merge 1 commit into
itzzavdhesh:mainfrom
aditiraj-dev:fix-dark-mode-text-contrast

Conversation

@aditiraj-dev

@aditiraj-dev aditiraj-dev commented Jun 6, 2026

Copy link
Copy Markdown

🚀 Program

GSSoC

📝 Description

This PR fixes a dark mode contrast issue on the Settings and Call pages, by updating the styling of relevant text elements.

🔗 Related Issue

Closes #135

🔄 Type of Change

  • 🐛 Bug fix
  • ✨ New feature
  • 🔍 SEO improvement
  • 🎨 Style / UI improvement
  • ♿ Accessibility improvement
  • 📝 Documentation
  • ⚙️ CI / configuration
  • 🧹 Refactor / cleanup

🧪 How to Test

  1. Open http://localhost:5173 in a browser.
  2. Enable Dark Mode.
  3. Navigate to the Settings page.
  4. Scroll to Voice Synthesis Settings and verify that the descriptive text is clearly readable.
  5. Navigate to the Call page.
  6. Verify that the descriptive text below the Call Control Room heading is clearly readable.
  7. Confirm that the text remains readable in Dark Mode and that Light Mode is unaffected.

📸 Screenshots (if applicable)

Call Page Before:
image
Call Page After:
image
Settings Page Before:
image
Settings Page After:
image

✅ Checklist

  • I am contributing under GSSoC, NSOC, SSOC, or ELUSOC
  • My code follows the project's existing style
  • I have tested my changes in a browser
  • I have linked the related issue above
  • My PR title follows Conventional Commits format (e.g. feat: add voice preview)

Summary by cubic

Improves dark mode text contrast on Settings (Voice Synthesis) and Call pages so helper text and alerts are readable without changing light mode.

  • Bug Fixes
    • Settings → Voice Synthesis: apply dark:text-muted to section description, value labels, and helper text.
    • Call page: apply dark:text-neutral-200 to the profile alert banner text.

Written for commit a0b50c4. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Style
    • Improved dark mode styling for warning banners in the call interface to enhance readability and consistency
    • Enhanced Voice Synthesis Settings UI with updated helper text descriptions for stability, similarity boost, and style exaggeration controls to provide clearer guidance
    • Updated value display styling for improved visibility in dark mode

@vercel

vercel Bot commented Jun 6, 2026

Copy link
Copy Markdown

@aditiraj-dev is attempting to deploy a commit to the itzzavdhesh's projects Team on Vercel.

A member of the Team first needs to authorize it.

@github-actions

github-actions Bot commented Jun 6, 2026

Copy link
Copy Markdown

DCO Verified

Hi @aditiraj-dev, all commits currently include a valid Signed-off-by: line.

Your PR can continue through normal review.

VoiceForge automation

@coderabbitai

coderabbitai Bot commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

Wondering what really moved? Review this PR in Change Stack to inspect semantic changes, definitions, and references.

Review Change Stack

📝 Walkthrough

Walkthrough

Dark mode text visibility fixes applied across two pages: Call and Settings. Added Tailwind dark mode utility classes to warning banners and helper text elements to improve contrast and readability against dark backgrounds without changing any functional logic.

Changes

Dark Mode Contrast Improvements

Layer / File(s) Summary
Call page warning banner styling
client/src/pages/Call.jsx
Warning banner for missing voice profile gains dark:text-neutral-200 class for improved dark mode text contrast.
Settings page controls and helper text styling
client/src/pages/Settings.jsx
Voice Synthesis Settings section: helper text paragraphs and value display spans updated to use dark:text-muted for consistent readability across Stability, Similarity Boost, and Style Exaggeration controls in dark mode.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Suggested labels

nsoc26, level3

Poem

In the dark of night, the text couldn't gleam,
But tailwind brought contrast back to the screen! 🐇✨
From Settings to Call, the fix is quite small,
Dark mode now shines brightest of all.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: improving dark mode text contrast on the Settings and Call pages, which matches the primary objective of the PR.
Linked Issues check ✅ Passed The PR successfully addresses all coding requirements from issue #135: adding dark mode text contrast fixes to Settings and Call pages through CSS class updates.
Out of Scope Changes check ✅ Passed All changes are directly related to issue #135's objectives; only Call.jsx and Settings.jsx files were modified with dark mode text contrast improvements.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented Jun 6, 2026

Copy link
Copy Markdown

PR Ready For Mentor Review

Hi @aditiraj-dev, your PR passed automated validation and moved into the GSSoC review queue.

@sabeenaviklar @1754riya @Anushreebasics @itsdakshjain, this GSSoC PR is ready for review.

Mentor next steps: confirm scope, review behavior and tests, then approve, comment, or request changes.

This does not mean the PR is approved yet. Please wait for mentor feedback before expecting merge. If changes are requested, update the same branch and keep the PR focused on the linked issue.

VoiceForge automation

Signed-off-by: Aditi Raj <aditiraj.novelist@gmail.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
client/src/pages/Call.jsx (1)

152-157: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Apply the same dark mode text fix to the database error banner.

The dbError banner at lines 152–157 has identical styling to the warning banner at line 160, but it is missing the dark:text-neutral-200 class. In dark mode, this error message will remain difficult to read, which defeats the accessibility improvement goal of this PR.

This pull request fixes a dark mode contrast issue on the Settings and Call pages, and both error banners convey critical information that must be readable.

🎨 Proposed fix to add dark mode text color
-        <div className="flex items-center gap-2 rounded-md border border-coral/40 bg-coral/10 p-4 text-sm font-semibold text-ink">
+        <div className="flex items-center gap-2 rounded-md border border-coral/40 bg-coral/10 p-4 text-sm font-semibold text-ink dark:text-neutral-200">
           <CircleAlert size={18} aria-hidden="true" />
           <span>Database Error: {dbError}. Please ensure IndexedDB is enabled and not blocked.</span>
         </div>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@client/src/pages/Call.jsx` around lines 152 - 157, The dbError banner
rendering in Call.jsx uses a className missing the dark mode text color, so add
the same dark:text-neutral-200 class used for the other warning banner to the
error banner's className on the element that renders when dbError is truthy;
update the div that contains CircleAlert and the <span> to include
dark:text-neutral-200 so the error text is readable in dark mode.
client/src/pages/Settings.jsx (1)

101-106: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Apply dark mode text styling to the database error banner.

The dbError banner at lines 101–106 uses text-ink without a dark mode variant. In dark mode, this critical error message will have poor contrast and be difficult to read, which is inconsistent with the dark mode improvements applied elsewhere in this file.

🎨 Proposed fix to add dark mode text color
-      <div className="flex items-center gap-2 rounded-md border border-coral/40 bg-coral/10 p-4 text-sm font-semibold text-ink">
+      <div className="flex items-center gap-2 rounded-md border border-coral/40 bg-coral/10 p-4 text-sm font-semibold text-ink dark:text-neutral-200">
         <CircleAlert size={18} aria-hidden="true" />
         <span>Database error: {dbError}</span>
       </div>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@client/src/pages/Settings.jsx` around lines 101 - 106, The dbError banner
(the conditional block referencing dbError and using CircleAlert) currently uses
only text-ink and lacks a dark mode variant; update the div's className to
include a dark mode text color (for example add dark:text-rose-200 or
dark:text-white with appropriate contrast) so the error message retains readable
contrast in dark mode—modify the className on the element rendering the database
error to include the dark: text utility.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@client/src/pages/Call.jsx`:
- Around line 152-157: The dbError banner rendering in Call.jsx uses a className
missing the dark mode text color, so add the same dark:text-neutral-200 class
used for the other warning banner to the error banner's className on the element
that renders when dbError is truthy; update the div that contains CircleAlert
and the <span> to include dark:text-neutral-200 so the error text is readable in
dark mode.

In `@client/src/pages/Settings.jsx`:
- Around line 101-106: The dbError banner (the conditional block referencing
dbError and using CircleAlert) currently uses only text-ink and lacks a dark
mode variant; update the div's className to include a dark mode text color (for
example add dark:text-rose-200 or dark:text-white with appropriate contrast) so
the error message retains readable contrast in dark mode—modify the className on
the element rendering the database error to include the dark: text utility.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 2d7d44ca-4242-45ae-9a99-80ad647b9d15

📥 Commits

Reviewing files that changed from the base of the PR and between 6165ec7 and be408e9.

📒 Files selected for processing (2)
  • client/src/pages/Call.jsx
  • client/src/pages/Settings.jsx

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

No issues found across 2 files

Re-trigger cubic

@aditiraj-dev
aditiraj-dev force-pushed the fix-dark-mode-text-contrast branch from be408e9 to a0b50c4 Compare June 6, 2026 10:15
@Anushreebasics Anushreebasics added the mentor:Anushreebasics GSSoC: Mentor-@Anushreebasics label Jun 6, 2026
Comment thread client/src/pages/Call.jsx
@@ -157,7 +157,7 @@ export default function Call() {
)}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Duplicate wrapper div retained (original non-dark version still present). Remove the extra earlier line to avoid duplicated DOM and extra padding/semantics.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Sorry, I'd like to request a bit more clarification on this, if you don't mind. I'm not understanding what you mean by duplicates. I thought Line 155 and Line 160 are different errors for different conditionals, and so they have their own styling...I'm not sure what you are asking me to do?

@@ -143,13 +143,13 @@ export default function Settings() {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Many label/help text lines are duplicated (one for light, one for dark) — this duplicates DOM and increases bundle size. Replace pairs like:

text-ink/65 ... and dark:text-muted duplicated spans with a single span using both classes: className="text-ink/65 dark:text-muted

same for p elements: className="text-xs text-ink/50 mt-1 dark:text-muted

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I'm don't think I'm seeing the duplicates from my side; as far as I know, I just appended dark:text-muted to existing elements, and did not create separate elements for dark mode. If you don't mind, could you please point out the lines of code you are referring to?

@itsdakshjain itsdakshjain left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@aditiraj-dev! Thanks for working for VoiceForge.

I completely agree with the review left by @Anushreebasics above. Instead of duplicating eelements (div, span, p) for light and dark modes, we want to combine those Tailwind classes into a single element (e.g., className="text-ink/65 dark:text-muted"). This keeps our dom footprint clean and bundle size small.

@itsdakshjain itsdakshjain added the mentor:itsdakshjain GSSoC: Mentor-@itsdakshjain label Jun 6, 2026
@leonagoel leonagoel added the mentor:leonagoel GSSoC: Mentor-@leonagoel label Jun 7, 2026
@aditiraj-dev

aditiraj-dev commented Jun 9, 2026

Copy link
Copy Markdown
Author

@Anushreebasics @itsdakshjain

Hi, I've reviewed my code again and am having trouble understanding the requested changes because from what I see the current implementation already uses a single element with both light and dark mode classes (for example, text-ink/65 dark:text-muted) rather than separate elements for each theme.

When I was making the changes, I did not create duplicate elements, just appended 'dark:text-muted' wherever required, so I haven't been able to identify the duplicated div, span, or p elements being referred to. Could you point me to the specific lines/elements that should be consolidated?

I'd be happy to make the requested changes once I understand the issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Dark Mode has text visibility issues

4 participants