You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
با سلام،
ممنونم از این پروژه کاربردی که درست کردین فقط خیلی خوب میشه که برای کاربران نابینا هم که از صفحه خوان NVDA یا Narrator استفاده میکنند، این برنامه رو دسترس پذیر کنین که کاربران نابینا هم بتوانند از این برنامه استفاده کنند. من هر چه قدر که کلید های تب رو میزنم، صفحه خوانم هیچ چیزی رو برای من نمیخونه.
@rezabakhshilaktasaraei — درست میگویید. accesskit در Cargo.toml فعال است (eframe accesskit feature) ولی labelهای semantic روی widgetها incomplete هستن. NVDA/Narrator کلاس object میبینن ولی text content / role تشخیص نمیدن.
برای fix نیاز به:
هر ui.add(...) باید .on_hover_text() و .with_label() داشته باشه (بهخصوص آیکونها)
text inputها نیاز به label صریح
status icons (مثل سبز/قرمز نقطه) نیاز به a11y description
این یک کار بزرگه — باید همه ~۴۰ تا widget در src/bin/ui.rs review بشن.
برای سرعت بیشتر در دسترسپذیری:
در فایل config.json هیچگاه نیاز به UI ندارد. mhrv-rs میتونه CLI-only اجرا بشه: ./mhrv-rs (بدون -ui) → screen-reader-friendly تمام.
log در terminal (NVDA با Microsoft Terminal یا cmd خوب کار میکنه).
Plan: a11y audit در roadmap قرار میگیره. اگر میتوانید screenshot از تجربه NVDA بگذارید (یا حتی یه audio clip از NVDA که چه میخونه) خیلی کمک میکنه prioritize کنیم.
درود.
دقیقا همینه که میگید.
با کلید tab میتونه بین کنترل ها جا به جا بشه منتها چون لیبل نخورده nvda فقط برای ادیت باکسا میگه edit.
اگه لیبل بخوره مثلا میگه deployment id: edit
accesskit میاد ویجت ها رو برای nvda / talkback etc مناسب سازی میکنه (رو هر سیستم عامل با روش خودش) ، و اون وقت صفحه خون یه ساختار از ساختار ui صفحه دستش میاد که چه خبره.
من این چند روزه سعی میکنم باز یه pull request براش بزنم. (منتها چون خودم نمیبینم دفعه اول ترسیدم محیط ui رو خراب کنم). ولی من این بار label میزارم برای هر کدوم از ویجت ها و یه تست با nvda میگیرم.
@therealaleph
یه نکته دیگه اینه که همه text edit control ها باید کنار hover داشتن یه لیبل مخصوص به خودشون داشته باشن که این با egui::response::Response::labeled_by(label.id) لیبل بخورن. این در مورد حد اقل یه چی مثل authentication key صدق میکنه. طرز کارشم به این شکله که اول label ایجاد میشه و response برداشته میشه:
let text: String = "";
let label = ui.label("label");
let text = ui.text_edit_singleline(&s).labeled_by(label.id);
البته این یه sudo code بود که به نظرم اومد این شکلی باید باشه.
Activity
therealaleph commentedon May 8, 2026
Reviewed via Anthropic Claude.
@rezabakhshilaktasaraei — درست میگویید.
accesskitدر Cargo.toml فعال است (eframeaccesskitfeature) ولی labelهای semantic روی widgetها incomplete هستن. NVDA/Narrator کلاس object میبینن ولی text content / role تشخیص نمیدن.برای fix نیاز به:
ui.add(...)باید.on_hover_text()و.with_label()داشته باشه (بهخصوص آیکونها)labelصریحاین یک کار بزرگه — باید همه ~۴۰ تا widget در
src/bin/ui.rsreview بشن.برای سرعت بیشتر در دسترسپذیری:
config.jsonهیچگاه نیاز به UI ندارد. mhrv-rs میتونه CLI-only اجرا بشه:./mhrv-rs(بدون-ui) → screen-reader-friendly تمام.Plan: a11y audit در roadmap قرار میگیره. اگر میتوانید screenshot از تجربه NVDA بگذارید (یا حتی یه audio clip از NVDA که چه میخونه) خیلی کمک میکنه prioritize کنیم.
Leaving open as a11y tracking issue.
brightening-eyes commentedon May 9, 2026
درود.
دقیقا همینه که میگید.
با کلید tab میتونه بین کنترل ها جا به جا بشه منتها چون لیبل نخورده nvda فقط برای ادیت باکسا میگه edit.
اگه لیبل بخوره مثلا میگه deployment id: edit
accesskit میاد ویجت ها رو برای nvda / talkback etc مناسب سازی میکنه (رو هر سیستم عامل با روش خودش) ، و اون وقت صفحه خون یه ساختار از ساختار ui صفحه دستش میاد که چه خبره.
من این چند روزه سعی میکنم باز یه pull request براش بزنم. (منتها چون خودم نمیبینم دفعه اول ترسیدم محیط ui رو خراب کنم). ولی من این بار label میزارم برای هر کدوم از ویجت ها و یه تست با nvda میگیرم.
brightening-eyes commentedon May 9, 2026
@therealaleph
یه نکته دیگه اینه که همه text edit control ها باید کنار hover داشتن یه لیبل مخصوص به خودشون داشته باشن که این با egui::response::Response::labeled_by(label.id) لیبل بخورن. این در مورد حد اقل یه چی مثل authentication key صدق میکنه. طرز کارشم به این شکله که اول label ایجاد میشه و response برداشته میشه:
البته این یه sudo code بود که به نظرم اومد این شکلی باید باشه.
brightening-eyes commentedon May 10, 2026
fixed in #1015
chore(release): v1.9.19 — UI a11y labels for NVDA / Narrator (#1015)
feat(ui): label widgets with .labelled_by for NVDA / Narrator (therea…