Skip to content

feat: Add Custom Category Management to Quick Replies - #1163

Merged
itzzavdhesh merged 3 commits into
itzzavdhesh:mainfrom
Kritika200520:feat/quick-replies-categories
Aug 12, 2026
Merged

feat: Add Custom Category Management to Quick Replies#1163
itzzavdhesh merged 3 commits into
itzzavdhesh:mainfrom
Kritika200520:feat/quick-replies-categories

Conversation

@Kritika200520

@Kritika200520 Kritika200520 commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

🚀 Program

GSSoC

📝 Description

Add custom category management to the Quick Replies drawer. This allows users to add, manage, and delete custom categories (e.g., "Work", "Family", "Medical") beyond the hardcoded list (General, Social, Needs, Urgent).

  • Active categories list is stored in localStorage under vf_quick_reply_categories.
  • Added inline "+ Category" input/form next to the category tabs in QuickReplies.jsx that updates tabs immediately.
  • Custom categories are selectable in phrase creation/edition forms.
  • Deleting a category moves its existing replies back to the default General category.
  • Integrated the custom categories key into the Backup & Restore configuration page.

🔗 Related Issue

Closes #765
Fixes #765

🔄 Type of Change

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

🧪 How to Test

  1. Start local dev server.
  2. Under "Quick Replies", click "Customize" and then click the + Category button to add a new category.
  3. Add a new phrase and assign it to the newly created category.
  4. Try deleting the custom category; verify that the tab is removed and the phrase is successfully relocated back to the "General" category.
  5. Export/import configuration and verify the custom categories list is successfully restored.

✅ 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
  • My PR title follows Conventional Commits format (e.g. feat: Add Custom Category Management to Quick Replies)

Summary by cubic

Adds custom category management to Quick Replies so users can organize replies beyond the fixed set. Previously categories were hardcoded; now users can add and delete categories inline, with persistence and cross-tab sync. Deleting a category moves its replies to “General”; default categories can’t be deleted.

  • Add/delete categories from the tabs in edit mode with validation (non-empty, unique, not “All”, max 20 chars).
  • Persist categories under vf_quick_reply_categories and sync across tabs/windows; invalid stored categories fall back to “General”.
  • Use custom categories in create/edit forms; deleting a category reassigns its replies to “General”.
  • Include quick-reply categories and vf_history_retention in Settings Backup & Restore.

Written for commit 20cf19d. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • New Features

    • Create, rename, delete, and manage custom quick-reply categories.
    • Organize replies with dynamic category tabs and category selection.
    • Category settings persist across sessions and synchronize across browser tabs.
  • Backup & Restore

    • Backups now include quick-reply categories and history-retention settings.
  • Bug Fixes

    • Deleting a category moves its replies to “General” automatically.
    • Invalid or outdated category assignments are handled safely.

@vercel

vercel Bot commented Jul 26, 2026

Copy link
Copy Markdown

@Kritika200520 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 Jul 26, 2026

Copy link
Copy Markdown

✍️ DCO Sign-off Needed

Hey @Kritika200520! 👋 One or more commits in this PR are missing a Signed-off-by: line.

Warning

  • 98625f7 feat: Add Custom Category Management to Quick Replies
  • dda0360 Merge upstream/main into feat/quick-replies-categories and resolve conflicts in QuickReplies.jsx
  • 20cf19d Merge branch 'main' into feat/quick-replies-categories

How to fix:

For the latest commit:

git commit --amend --signoff
git push --force-with-lease

For multiple commits, replace N with the number to update:

git rebase --signoff HEAD~N
git push --force-with-lease

This comment will update automatically after you push.


🤖 VoiceForge Automation · Updates automatically on edits

@github-actions

github-actions Bot commented Jul 26, 2026

Copy link
Copy Markdown

🎉 PR Ready for Mentor Review

Hey @Kritika200520! 👋 Your PR passed all checks and is now in the GSSoC review queue.

Note

🔗 Closing: #765 · 📐 272 lines across 2 file(s) · 📬 Already requested or no eligible reviewer found

@sabeenaviklar @Anushreebasics @itsdakshjain @snehkris @Mrigakshi-Rathore @Itzzavdheshh @Nitya-003 @4f4d @lovestaco, this PR is ready for your review — please confirm scope, check behavior and tests, then approve or request changes.

Important

This is not an approval. Please wait for mentor feedback before expecting a merge. If changes are requested, push them to this same branch and keep the PR focused on the linked issue.


🤖 VoiceForge Automation · Updates automatically on edits

@coderabbitai

coderabbitai Bot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 456f3767-8229-4bb1-ba57-fd207ce2e62f

📥 Commits

Reviewing files that changed from the base of the PR and between dda0360 and 20cf19d.

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

📝 Walkthrough

Walkthrough

Quick replies now support user-defined categories stored in localStorage. Category changes synchronize across events, deleted-category replies move to “General,” and reply forms use dynamic categories. Settings backups include category and history-retention data.

Changes

Quick-reply categories

Layer / File(s) Summary
Category persistence and synchronization
client/src/components/QuickReplies.jsx
Categories load from and save to localStorage. Invalid data falls back to defaults. Category updates synchronize through storage and custom events. Reply restoration validates categories against the current category list.
Category management and reply assignment
client/src/components/QuickReplies.jsx
Users can add or delete categories. Deleted-category replies move to “General.” Tabs and reply selectors use the dynamic category list. Removed drag-and-drop state declarations are no longer used by the updated category controls.
Settings backup and restore
client/src/pages/Settings.jsx
Backup export and import now handle quick_reply_categories and historyRetention.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant QuickReplies
  participant localStorage
  participant Settings
  User->>QuickReplies: add or delete category
  QuickReplies->>localStorage: save category list
  QuickReplies-->>User: update tabs and reply selectors
  User->>Settings: export or import backup
  Settings->>localStorage: read or restore category data
Loading

Possibly related PRs

Suggested reviewers: anushreebasics, sabeenaviklar, snehkris

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The Quick Replies changes are in scope, but adding history-retention settings to backup data is unrelated to issue #765. Remove the history-retention backup change, or link it to a separate issue with matching requirements.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: custom category management for Quick Replies.
Linked Issues check ✅ Passed The changes implement dynamic storage, creation, selection, deletion, reassignment, and rendering of Quick Replies categories required by issue #765.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 Biome (2.5.6)
client/src/pages/Settings.jsx

File contains syntax errors that prevent linting: Line 374: expected > but instead found <; Line 365: Expected corresponding JSX closing tag for 'input'.; Line 363: Expected corresponding JSX closing tag for 'label'.; Line 802: Unexpected token. Did you mean {'}'} or &rbrace;?; Line 803: expected < but instead the file ends


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.

@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.

All reported issues were addressed across 2 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread client/src/components/QuickReplies.jsx
Comment thread client/src/components/QuickReplies.jsx
Comment thread client/src/components/QuickReplies.jsx
Comment thread client/src/components/QuickReplies.jsx
Comment thread client/src/components/QuickReplies.jsx

@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.

Issue number not mentioned in description

@itsdakshjain itsdakshjain added the mentor:itsdakshjain GSSoC: Mentor-@itsdakshjain label Jul 29, 2026
@Itzzavdheshh

Copy link
Copy Markdown
Contributor

Hi @Kritika200520 please mention the issue number in PR Description

@itzzavdhesh
itzzavdhesh merged commit 505619e into itzzavdhesh:main Aug 12, 2026
5 of 8 checks passed
@github-actions

Copy link
Copy Markdown

🎊 PR Merged Successfully

Hey @Kritika200520! 👋 Congratulations and thank you for your contribution to VoiceForge!

Note

🔗 Linked issue(s): #765 · ✅ Marked as merged and complete

Maintainers may still handle final cleanup, release notes, or follow-up tracking after the merge.


🤖 VoiceForge Automation · Updates automatically on edits

@itzzavdhesh itzzavdhesh added SSoC26 SSOC Hard hard ELUSOC ELUSOC VETERAN VETERAN type:feature type:feature type:refactor type:refactor mentor:Anushreebasics GSSoC: Mentor-@Anushreebasics mentor:sabeenaviklar GSSoC: Mentor-@sabeenaviklar labels Aug 12, 2026
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.

feat: Add Custom Category Management for Quick Replies

5 participants