feat(contact): add the project X account alongside Discord (#1313)

* feat(contact): add the project X account alongside Discord

Adds https://x.com/fs01c137y as a channel on the in-app Contact page and in
the README, next to the existing Discord links — updates, releases, and what
is being built next, for people who would rather not sit in a chat server.

Follows the ContactPage convention: the URL is a module constant so no surface
can drift, and the card explains WHEN to use the channel rather than being a
bare link. lucide dropped its Twitter glyph, so the icon is Megaphone, which
reads as announcements anyway.

contact.follow_* translated in all 21 locales; ContactPage test extended to
pin the URL.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix(contact): correct the X handle to @idebpalash

Owner's current account. All six references updated in lockstep — README nav
row, badge row, CTA block and contributing list, plus the ContactPage constant
and the test that pins it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Palash Debnath
2026-07-29 14:17:54 -07:00
committed by GitHub
co-authored by Claude Opus 5
parent 1600f02abf
commit b4fc74fa65
24 changed files with 105 additions and 21 deletions
+4
View File
@@ -13,6 +13,7 @@
<a href="#sponsor--donate">Donate</a> ·
<a href="#contributing">Contributing</a> ·
<a href="https://discord.gg/bzQavDfVV9">Discord</a> ·
<a href="https://x.com/idebpalash">X</a> ·
<a href="README_CN.md"><strong>简体中文</strong></a>
</p>
@@ -23,6 +24,7 @@
<a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-blue?style=flat-square" alt="License" /></a>
<a href="https://github.com/debpalash/OmniVoice-Studio/issues"><img src="https://img.shields.io/github/issues/debpalash/OmniVoice-Studio?style=flat-square&color=ef4444" alt="Issues" /></a>
<a href="https://discord.gg/bzQavDfVV9"><img src="https://img.shields.io/badge/Discord-Join_Community-5865F2?style=flat-square&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://x.com/idebpalash"><img src="https://img.shields.io/badge/X-Follow_for_updates-000000?style=flat-square&logo=x&logoColor=white" alt="Follow on X" /></a>
<a href="https://ko-fi.com/debpalash"><img src="https://img.shields.io/badge/Ko--fi-Support_Us-FF5E5B?style=flat-square&logo=ko-fi&logoColor=white" alt="Ko-fi" /></a>
<a href="https://paypal.me/palashCoder"><img src="https://img.shields.io/badge/PayPal-Donate-00457C?style=flat-square&logo=paypal&logoColor=white" alt="PayPal" /></a>
</p>
@@ -484,6 +486,7 @@ OmniVoice is **free** and **AGPL-3.0** — no paid tier, no SaaS revenue. Sponso
<div align="center">
<a href="https://discord.gg/bzQavDfVV9"><img src="https://img.shields.io/badge/💬_Discord-Join_Community-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Join Discord" /></a>
<a href="https://x.com/idebpalash"><img src="https://img.shields.io/badge/𝕏_Follow-for_updates-000000?style=for-the-badge&logo=x&logoColor=white" alt="Follow on X" /></a>
<br/>
<sub>We respond to setup questions within hours, not days.</sub>
</div>
@@ -515,6 +518,7 @@ Yes please — bug fixes, new TTS engine adapters, UI improvements, docs, transl
- 📖 Read the **[Contributing Guide](.github/CONTRIBUTING.md)** for setup, code style, and PR workflow
- 🐛 Browse [good first issues](https://github.com/debpalash/OmniVoice-Studio/labels/good%20first%20issue)
- 💬 Join our [Discord](https://discord.gg/bzQavDfVV9) to discuss ideas or ask for help
- 𝕏 Follow [@idebpalash](https://x.com/idebpalash) for updates and what's being built next
---
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "البريد الإلكتروني",
"email_desc": "الترخيص أو الشراكات أو أي شيء خاص.",
"website": "موقع الكتروني",
"website_desc": "المزيد عن المشروع والصانع."
"website_desc": "المزيد عن المشروع والصانع.",
"follow_title": "تابِعنا على X",
"follow_desc": "ملاحظات الإصدارات، والمحركات الجديدة، ولمحات عمّا يجري بناؤه لاحقًا. مفيد إن كنت تفضّل عدم البقاء في خادم دردشة.",
"follow_cta": "تابِع على X"
},
"permissions": {
"title": "الأذونات",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "E-Mail",
"email_desc": "Lizenzen, Partnerschaften oder irgendetwas Privates.",
"website": "Website",
"website_desc": "Mehr über das Projekt und den Macher."
"website_desc": "Mehr über das Projekt und den Macher.",
"follow_title": "Auf X folgen",
"follow_desc": "Release-Notes, neue Engines und gelegentliche Einblicke in das, was als Nächstes entsteht. Praktisch, wenn Sie nicht in einem Chat-Server sitzen möchten.",
"follow_cta": "Auf X folgen"
},
"permissions": {
"title": "Berechtigungen",
+4 -1
View File
@@ -2679,7 +2679,10 @@
"email": "Email",
"email_desc": "Email — licensing, partnerships, or anything private",
"website": "Website",
"website_desc": "Website — more about the project and the maker"
"website_desc": "Website — more about the project and the maker",
"follow_title": "Follow along on X",
"follow_desc": "Release notes, new engines, and the occasional look at what is being built next. Handy if you would rather not sit in a chat server.",
"follow_cta": "Follow on X"
},
"firstrun": {
"loading": "Preparing setup…",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "Correo electrónico",
"email_desc": "Licencias, asociaciones o cualquier cosa privada.",
"website": "Sitio web",
"website_desc": "Más sobre el proyecto y el creador."
"website_desc": "Más sobre el proyecto y el creador.",
"follow_title": "Síguenos en X",
"follow_desc": "Notas de versión, nuevos motores y algún vistazo a lo que se está construyendo. Útil si prefiere no estar en un servidor de chat.",
"follow_cta": "Seguir en X"
},
"permissions": {
"title": "Permisos",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "Courriel",
"email_desc": "Licences, partenariats ou tout ce qui est privé.",
"website": "Site Web",
"website_desc": "En savoir plus sur le projet et le créateur."
"website_desc": "En savoir plus sur le projet et le créateur.",
"follow_title": "Suivez-nous sur X",
"follow_desc": "Notes de version, nouveaux moteurs et un aperçu occasionnel de ce qui arrive. Pratique si vous préférez ne pas rester dans un serveur de discussion.",
"follow_cta": "Suivre sur X"
},
"permissions": {
"title": "Autorisations",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "ईमेल",
"email_desc": "लाइसेंसिंग, साझेदारी, या कुछ भी निजी।",
"website": "वेबसाइट",
"website_desc": "परियोजना और निर्माता के बारे में अधिक जानकारी."
"website_desc": "परियोजना और निर्माता के बारे में अधिक जानकारी.",
"follow_title": "X पर फ़ॉलो करें",
"follow_desc": "रिलीज़ नोट्स, नए इंजन, और आगे क्या बन रहा है उसकी झलक। अगर आप चैट सर्वर में नहीं रहना चाहते तो यह सुविधाजनक है।",
"follow_cta": "X पर फ़ॉलो करें"
},
"permissions": {
"title": "अनुमतियाँ",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "Surel",
"email_desc": "Perizinan, kemitraan, atau apa pun yang bersifat pribadi.",
"website": "Situs web",
"website_desc": "Lebih lanjut tentang proyek dan pembuatnya."
"website_desc": "Lebih lanjut tentang proyek dan pembuatnya.",
"follow_title": "Ikuti di X",
"follow_desc": "Catatan rilis, mesin baru, dan sesekali intip apa yang sedang dibangun. Praktis jika Anda tidak ingin berada di server obrolan.",
"follow_cta": "Ikuti di X"
},
"permissions": {
"title": "Izin",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "E-mail",
"email_desc": "Licenze, partnership o qualsiasi cosa privata.",
"website": "Sito web",
"website_desc": "Maggiori informazioni sul progetto e sul produttore."
"website_desc": "Maggiori informazioni sul progetto e sul produttore.",
"follow_title": "Segui su X",
"follow_desc": "Note di rilascio, nuovi motori e qualche anticipazione su ciò che sta arrivando. Comodo se preferisce non stare in un server di chat.",
"follow_cta": "Segui su X"
},
"permissions": {
"title": "Autorizzazioni",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "電子メール",
"email_desc": "ライセンス、パートナーシップ、その他プライベートなもの。",
"website": "ウェブサイト",
"website_desc": "プロジェクトとメーカーについて詳しく説明します。"
"website_desc": "プロジェクトとメーカーについて詳しく説明します。",
"follow_title": "X でフォローする",
"follow_desc": "リリースノート、新しいエンジン、そして次に作っているものの様子をときどき。チャットサーバーに常駐したくない方に便利です。",
"follow_cta": "X でフォロー"
},
"permissions": {
"title": "権限",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "이메일",
"email_desc": "라이센스, 파트너십 또는 개인적인 모든 것.",
"website": "웹사이트",
"website_desc": "프로젝트와 제작자에 대해 자세히 알아보세요."
"website_desc": "프로젝트와 제작자에 대해 자세히 알아보세요.",
"follow_title": "X에서 팔로우하기",
"follow_desc": "릴리스 노트, 새 엔진, 그리고 다음에 만들고 있는 것들에 대한 이야기. 채팅 서버에 머무르고 싶지 않다면 편리합니다.",
"follow_cta": "X에서 팔로우"
},
"permissions": {
"title": "권한",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "E-mail",
"email_desc": "Licenties, partnerschappen of iets privés.",
"website": "Website",
"website_desc": "Meer over het project en de maker."
"website_desc": "Meer over het project en de maker.",
"follow_title": "Volg ons op X",
"follow_desc": "Release-notities, nieuwe engines en af en toe een blik op wat er volgt. Handig als u liever niet in een chatserver zit.",
"follow_cta": "Volgen op X"
},
"permissions": {
"title": "Machtigingen",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "E-mail",
"email_desc": "Licencje, partnerstwa lub cokolwiek prywatnego.",
"website": "Strona internetowa",
"website_desc": "Więcej o projekcie i twórcy."
"website_desc": "Więcej o projekcie i twórcy.",
"follow_title": "Obserwuj na X",
"follow_desc": "Informacje o wydaniach, nowe silniki i od czasu do czasu zapowiedzi tego, co powstaje. Wygodne, jeśli wolisz nie siedzieć na serwerze czatu.",
"follow_cta": "Obserwuj na X"
},
"permissions": {
"title": "Uprawnienia",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "E-mail",
"email_desc": "Licenciamento, parcerias ou qualquer coisa privada.",
"website": "Site",
"website_desc": "Mais sobre o projeto e o criador."
"website_desc": "Mais sobre o projeto e o criador.",
"follow_title": "Siga no X",
"follow_desc": "Notas de versão, novos motores e, de vez em quando, uma espreitadela ao que vem a seguir. Prático se preferir não estar num servidor de chat.",
"follow_cta": "Seguir no X"
},
"permissions": {
"title": "Permissões",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "Электронная почта",
"email_desc": "Лицензирование, партнерство или что-то частное.",
"website": "Веб-сайт",
"website_desc": "Подробнее о проекте и создателе."
"website_desc": "Подробнее о проекте и создателе.",
"follow_title": "Следите в X",
"follow_desc": "Заметки о выпусках, новые движки и иногда — о том, что делается дальше. Удобно, если не хочется сидеть в чат-сервере.",
"follow_cta": "Подписаться в X"
},
"permissions": {
"title": "Разрешения",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "E-post",
"email_desc": "Licensiering, partnerskap eller något privat.",
"website": "Webbplats",
"website_desc": "Mer om projektet och skaparen."
"website_desc": "Mer om projektet och skaparen.",
"follow_title": "Följ på X",
"follow_desc": "Release-noteringar, nya motorer och ibland en titt på vad som byggs härnäst. Praktiskt om du hellre slipper sitta i en chattserver.",
"follow_cta": "Följ på X"
},
"permissions": {
"title": "Behörigheter",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "อีเมล",
"email_desc": "ใบอนุญาต ห้างหุ้นส่วน หรือสิ่งใดก็ตามที่เป็นส่วนตัว",
"website": "เว็บไซต์",
"website_desc": "ข้อมูลเพิ่มเติมเกี่ยวกับโครงการและผู้สร้าง"
"website_desc": "ข้อมูลเพิ่มเติมเกี่ยวกับโครงการและผู้สร้าง",
"follow_title": "ติดตามบน X",
"follow_desc": "บันทึกการอัปเดต เอนจินใหม่ ๆ และภาพบางส่วนของสิ่งที่กำลังพัฒนาต่อไป สะดวกหากคุณไม่อยากอยู่ในเซิร์ฟเวอร์แชท",
"follow_cta": "ติดตามบน X"
},
"permissions": {
"title": "สิทธิ์การเข้าถึง",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "E-posta",
"email_desc": "Lisanslama, ortaklıklar veya özel herhangi bir şey.",
"website": "Web sitesi",
"website_desc": "Proje ve yapımcı hakkında daha fazla bilgi."
"website_desc": "Proje ve yapımcı hakkında daha fazla bilgi.",
"follow_title": "X'te takip edin",
"follow_desc": "Sürüm notları, yeni motorlar ve sırada ne olduğuna dair ara ara bakışlar. Bir sohbet sunucusunda durmak istemiyorsanız pratik.",
"follow_cta": "X'te takip et"
},
"permissions": {
"title": "İzinler",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "Електронна пошта",
"email_desc": "Ліцензування, партнерство чи щось приватне.",
"website": "Веб-сайт",
"website_desc": "Детальніше про проект та виробника."
"website_desc": "Детальніше про проект та виробника.",
"follow_title": "Стежте в X",
"follow_desc": "Нотатки до випусків, нові рушії та час від часу — що будується далі. Зручно, якщо не хочеться сидіти в чат-сервері.",
"follow_cta": "Стежити в X"
},
"permissions": {
"title": "Дозволи",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "Email",
"email_desc": "Cấp phép, hợp tác hoặc bất cứ điều gì riêng tư.",
"website": "Trang web",
"website_desc": "Thông tin thêm về dự án và nhà sản xuất."
"website_desc": "Thông tin thêm về dự án và nhà sản xuất.",
"follow_title": "Theo dõi trên X",
"follow_desc": "Ghi chú phát hành, engine mới, và đôi khi là hé lộ những gì đang được xây dựng. Tiện nếu bạn không muốn ở trong một máy chủ chat.",
"follow_cta": "Theo dõi trên X"
},
"permissions": {
"title": "Quyền truy cập",
+4 -1
View File
@@ -2274,7 +2274,10 @@
"email": "电子邮件",
"email_desc": "许可、合作伙伴关系或任何私人的东西。",
"website": "网站",
"website_desc": "有关该项目和制造商的更多信息。"
"website_desc": "有关该项目和制造商的更多信息。",
"follow_title": "在 X 上关注",
"follow_desc": "版本说明、新引擎,以及偶尔透露接下来在做什么。如果你不想常驻聊天服务器,这里更方便。",
"follow_cta": "在 X 上关注"
},
"permissions": {
"title": "权限",
+4 -1
View File
@@ -2267,7 +2267,10 @@
"email": "電子郵件",
"email_desc": "許可、合作夥伴關係或任何私人的東西。",
"website": "網站",
"website_desc": "有關該項目和製造商的更多資訊。"
"website_desc": "有關該項目和製造商的更多資訊。",
"follow_title": "在 X 上追蹤",
"follow_desc": "版本說明、新引擎,以及偶爾透露接下來在做什麼。如果你不想常駐聊天伺服器,這裡更方便。",
"follow_cta": "在 X 上追蹤"
},
"permissions": {
"title": "權限",
+16
View File
@@ -11,6 +11,7 @@ import {
ShieldAlert,
Mail,
Globe,
Megaphone,
} from 'lucide-react';
import { Button } from '../ui';
import { Card } from '@/components/ui/card';
@@ -31,6 +32,7 @@ const DISCORD_URL = 'https://discord.gg/bzQavDfVV9';
const SECURITY_URL = `${REPO_URL}/security/advisories/new`;
const EMAIL = 'OmniVoice@palash.dev';
const WEBSITE_URL = 'https://palash.dev';
const X_URL = 'https://x.com/idebpalash';
// Guidance sections each is a card with an icon, a heading, and a
// "use this when" sentence so a user lands on the RIGHT channel instead of a
@@ -80,6 +82,20 @@ const SECTIONS = [
ctaKey: 'contact.community_cta',
ctaDefault: 'Join the Discord',
},
{
id: 'follow',
icon: Megaphone,
hue: '#1d9bf0',
kind: 'external',
url: X_URL,
titleKey: 'contact.follow_title',
titleDefault: 'Follow along on X',
descKey: 'contact.follow_desc',
descDefault:
'Release notes, new engines, and the occasional look at what is being built next. Handy if you would rather not sit in a chat server.',
ctaKey: 'contact.follow_cta',
ctaDefault: 'Follow on X',
},
{
id: 'support',
icon: Heart,
+1
View File
@@ -46,6 +46,7 @@ describe('ContactPage', () => {
const href = (name) => screen.getByRole('link', { name }).getAttribute('href');
expect(href('Open GitHub Issues')).toBe(`${REPO}/issues`);
expect(href('Join the Discord')).toBe('https://discord.gg/bzQavDfVV9');
expect(href('Follow on X')).toBe('https://x.com/idebpalash');
expect(href('Report privately')).toBe(`${REPO}/security/advisories/new`);
expect(href(/licensing/i)).toBe(`mailto:OmniVoice@palash.dev`);
expect(href(/more about the project/i)).toBe('https://palash.dev');