🚨 This is NOT a duplicate — this is a condemnation of how you treat contributors
I previously submitted two detailed accessibility issues (#2800 in Chinese, #2801 in English) after conducting a thorough source code audit of the OpenList frontend. Both were summarily closed by @jyxjjj with the label "duplicate" — without a single comment, without pointing to which issue they supposedly duplicate, and without any acknowledgment of the work put in.
Let me be clear: closing a contributor's issue without any explanation is not just poor project management — it's disrespectful. A visually impaired user spent hours analyzing your source code file by file, documenting exact locations and fix recommendations, and the response was silence followed by a door slammed in their face.
If these are genuinely duplicates, the minimum standard of decency is to leave a comment saying "Thank you, this is already tracked in #xxx". Zero comments, zero explanation, zero gratitude — that's not how you treat people who volunteer their time to improve your project.
Below is the full content of the previously submitted issues, reposted in full. If this is truly a duplicate, I expect at least the courtesy of a comment pointing to the relevant issue. Otherwise, I expect this to be treated as the serious accessibility report it is.
Background
I am a visually impaired user who relies entirely on TalkBack (Android screen reader) to use my phone. OpenList is a powerful file storage mounting tool with extensive storage service support, but its accessibility on Android is severely lacking, making it nearly impossible for visually impaired users to use core features.
OpenList's Android app renders its UI through a WebView loading a Web interface. While this architecture works functionally, it introduces inherent accessibility deficiencies — interactive elements in the Web interface often lack ARIA semantic annotations, preventing TalkBack from correctly identifying and operating them.
Source Code Audit
We conducted a file-by-file audit of both the OpenList backend (OpenListTeam/OpenList) and frontend (OpenListTeam/OpenList-Frontend). The backend is a pure Go API service with no accessibility issues — all problems are concentrated in the frontend Web interface. The frontend is built with SolidJS + Hope UI. All findings below are based on actual source code locations.
Issues Found
1. File List Items Have Zero Accessibility Semantics (Blocker/Critical)
Source: src/pages/home/folder/ListItem.tsx, src/pages/home/folder/GridItem.tsx
The file list is OpenList's core interaction area, but TalkBack users cannot effectively browse or operate files:
- List item container
<HStack> has no role="listitem" and no aria-label — TalkBack reads out meaningless text fragments
- File names are rendered with
<Text title={props.obj.name}>, but the title attribute is not read aloud by TalkBack
- File name, file size, and modification time are separate
<Text> elements — TalkBack reads them one by one, making it impossible to quickly locate target files
- Click/double-click to open folders is bound to
on:click and on:dblclick, but the container has no role="link" or role="button" — TalkBack users cannot tell it's interactive
- Grid view
GridItem.tsx thumbnail <ImageWithError> has no alt attribute
- Checkbox
<ItemCheckbox> has checked and onChange but no aria-label indicating which file is being selected
2. Context Menu Completely Unreachable by TalkBack (Blocker/Critical)
Source: src/pages/home/folder/context-menu.tsx
The operation menu (download, rename, delete, copy, move, share, etc.) triggered by long-pressing a file is completely inaccessible to TalkBack users:
- Uses
solid-contextmenu library, menu triggered via onContextMenu (right-click event) — Android TalkBack has no right-click event
- Menu items
<Item> have no role="menuitem" and no aria-label
- No focus management when menu appears (first menu item is not auto-focused)
- Submenus
<Submenu> also lack ARIA semantics
3. File List Container Lacks Semantic Structure (Barrier/High)
Source: src/pages/home/folder/List.tsx, src/pages/home/folder/Grid.tsx
- List container
<VStack class="list"> has no role="list"
- Sort buttons in list title (clicking column names to sort) have no
role="button" or aria-label — TalkBack cannot tell they are clickable sort controls
- Select-all checkbox has no
aria-label="Select all"
4. Page Landmarks Completely Missing (Barrier/High)
Source: index.html, src/pages/home/Layout.tsx, src/pages/home/header/Header.tsx, src/pages/home/Nav.tsx
The entire Web interface lacks WAI-ARIA landmark markers, preventing TalkBack users from using landmark navigation:
index.html has <html lang="en"> — should be dynamically set based on locale
- No
<main> tag, main content area has no role="main"
- No
<nav> tag, breadcrumb navigation (Nav.tsx <Breadcrumb>) has no role="navigation" + aria-label
- No
<header> tag, top bar (Header.tsx) has no role="banner"
- Search area has no
role="search"
5. Dynamic Content Updates Not Announced (Barrier/Medium)
A full-project search found zero aria-live, zero role="status", zero aria-busy:
- File upload/download progress changes are not announced by TalkBack
- Success/error Toast notifications are invisible to TalkBack
- Loading states (
CenterLoading component) have no aria-busy or role="status"
6. Toolbar Buttons Lack Labels (Barrier/High)
Source: src/pages/home/toolbar/Toolbar.tsx and subcomponents (Upload.tsx, Mkdir.tsx, Delete.tsx, Rename.tsx, CopyMove.tsx, Download.tsx, Share.tsx, etc.)
- Toolbar buttons for upload, new folder, batch rename, copy, move, delete, etc.
- Heavy use of
Icon components for icon buttons with only visual icons and no aria-label
- TalkBack announces "button" but cannot convey the specific function
7. File Preview Partially Accessible but Incomplete (Barrier/High)
Source: src/pages/home/previews/ directory
Positive: Image preview (image.tsx) has fairly complete aria-label (zoom, rotate, navigate, etc.), paginator (Paginator.tsx) has aria-label="Previous" / "Next".
Issues:
- Video player (
video.tsx, video_box.tsx) play/pause/progress bar controls lack accessibility annotations
- Document preview (
doc.tsx, pdf.tsx) iframe lacks title attribute
iframe.tsx has aria-label="Open in new tab" on the link but the iframe itself lacks title
8. Form Element Labels Incomplete (Barrier/Medium)
Source: src/pages/manage/storages/AddOrEdit.tsx, src/components/ModalInput.tsx, etc.
- Some inputs are indirectly labeled via Modal
title prop, but lack direct aria-label association
- Storage configuration page has complex forms with many dropdowns and inputs lacking accessibility labels
Existing Accessibility Implementation (Positive Findings)
Approximately 25 aria-label instances found across the project, concentrated in:
- ✅ Image preview controls (zoom, rotate, navigate) — fairly complete
- ✅ Paginator (previous/next) — basic labeling
- ✅ Search box — has
aria-label="search"
- ✅ Layout switch — has
aria-label="switch layout"
- ✅ Folder tree selector — confirm/cancel buttons labeled
This shows the development team has accessibility awareness, but current coverage is far from sufficient — core interaction areas (file list, context menu, toolbar) are completely blank.
Fix Recommendations
| Issue |
Source File |
Fix |
Priority |
| File list items unreadable |
ListItem.tsx, GridItem.tsx |
Add role="listitem" + aria-label="filename, size, modified" to container, merge multi-field info into one announceable unit |
Critical |
| Context menu unreachable |
context-menu.tsx |
Add role="menu" to container, role="menuitem" + aria-label to items, auto-focus first item on open; consider alternative long-press trigger for mobile |
Critical |
| List container missing semantics |
List.tsx, Grid.tsx |
Add role="list" to container, role="button" + aria-label to sort controls, aria-label to select-all checkbox |
High |
| Page landmarks missing |
index.html, Layout.tsx |
Add <main>/<nav>/<header> semantic tags or corresponding role, fix lang attribute |
High |
| Toolbar buttons unlabeled |
toolbar/*.tsx |
Add aria-label to all icon buttons |
High |
| Dynamic content not announced |
Global notification components |
Use role="status" or aria-live="polite" for success, aria-live="assertive" for errors |
Medium |
| Form elements unlabeled |
manage/storages/AddOrEdit.tsx etc. |
Add aria-label to all inputs, aria-label + aria-activedescendant to dropdowns |
Medium |
| File preview incomplete |
previews/video.tsx etc. |
Add role="slider" + aria-label to video controls, title to iframes |
High |
References
1. W3C WCAG 2.1 Quick Guide
The official W3C Web Content Accessibility Guidelines, the accessibility standard basis for all Web applications. OpenList should follow WCAG 2.1 AA level.
2. WAI-ARIA Best Practices
W3C's ARIA specification provides semantic annotation standards for dynamic Web applications.
3. GitHub Official Open Source Accessibility Best Practices
GitHub's official open source guide recommends every project:
- Create an
ACCESSIBILITY.md file declaring accessibility commitment
- Create accessibility Issue templates
- Add accessibility checks to PR checklists
- Prioritize blocking issues (Critical level)
Source: https://opensource.guide/accessibility-best-practices-for-your-project/
Community Collaboration
About Us
We are from the Chinese visually impaired community, with over 20,000 visually impaired developers and over 200,000 visually impaired users, covering mainstream Chinese screen reader user groups (Tantan Screen Reader, TalkBack, etc.).
Testing Collaboration
If the development team is willing to advance accessibility optimization, we can organize systematic testing by visually impaired community users after the first fix release, covering multi-device, multi-screen-reader real-world scenarios, and provide structured feedback reports.
Promotion Willingness
OpenList, as the most feature-rich open-source file storage mounting tool, could gain significant community reputation and user growth in the visually impaired community if it takes the lead in accessibility. We are willing to promote OpenList's visibility within the visually impaired community.
Environment
- Device: Redmi K80 Ultra (dali)
- Android: 16 (API 36)
- Screen reader: Tantan Screen Reader, based on Android AccessibilityService framework
- OpenList deployment: Android App
To the OpenList team: I am happy to work with you to make OpenList accessible to everyone. But I expect to be treated with basic respect. A single comment acknowledging the report would have been enough. Instead, you chose silence. Don't let it happen again.
🚨 This is NOT a duplicate — this is a condemnation of how you treat contributors
I previously submitted two detailed accessibility issues (#2800 in Chinese, #2801 in English) after conducting a thorough source code audit of the OpenList frontend. Both were summarily closed by @jyxjjj with the label "duplicate" — without a single comment, without pointing to which issue they supposedly duplicate, and without any acknowledgment of the work put in.
Let me be clear: closing a contributor's issue without any explanation is not just poor project management — it's disrespectful. A visually impaired user spent hours analyzing your source code file by file, documenting exact locations and fix recommendations, and the response was silence followed by a door slammed in their face.
If these are genuinely duplicates, the minimum standard of decency is to leave a comment saying "Thank you, this is already tracked in #xxx". Zero comments, zero explanation, zero gratitude — that's not how you treat people who volunteer their time to improve your project.
Below is the full content of the previously submitted issues, reposted in full. If this is truly a duplicate, I expect at least the courtesy of a comment pointing to the relevant issue. Otherwise, I expect this to be treated as the serious accessibility report it is.
Background
I am a visually impaired user who relies entirely on TalkBack (Android screen reader) to use my phone. OpenList is a powerful file storage mounting tool with extensive storage service support, but its accessibility on Android is severely lacking, making it nearly impossible for visually impaired users to use core features.
OpenList's Android app renders its UI through a WebView loading a Web interface. While this architecture works functionally, it introduces inherent accessibility deficiencies — interactive elements in the Web interface often lack ARIA semantic annotations, preventing TalkBack from correctly identifying and operating them.
Source Code Audit
We conducted a file-by-file audit of both the OpenList backend (
OpenListTeam/OpenList) and frontend (OpenListTeam/OpenList-Frontend). The backend is a pure Go API service with no accessibility issues — all problems are concentrated in the frontend Web interface. The frontend is built with SolidJS + Hope UI. All findings below are based on actual source code locations.Issues Found
1. File List Items Have Zero Accessibility Semantics (Blocker/Critical)
Source:
src/pages/home/folder/ListItem.tsx,src/pages/home/folder/GridItem.tsxThe file list is OpenList's core interaction area, but TalkBack users cannot effectively browse or operate files:
<HStack>has norole="listitem"and noaria-label— TalkBack reads out meaningless text fragments<Text title={props.obj.name}>, but thetitleattribute is not read aloud by TalkBack<Text>elements — TalkBack reads them one by one, making it impossible to quickly locate target fileson:clickandon:dblclick, but the container has norole="link"orrole="button"— TalkBack users cannot tell it's interactiveGridItem.tsxthumbnail<ImageWithError>has noaltattribute<ItemCheckbox>hascheckedandonChangebut noaria-labelindicating which file is being selected2. Context Menu Completely Unreachable by TalkBack (Blocker/Critical)
Source:
src/pages/home/folder/context-menu.tsxThe operation menu (download, rename, delete, copy, move, share, etc.) triggered by long-pressing a file is completely inaccessible to TalkBack users:
solid-contextmenulibrary, menu triggered viaonContextMenu(right-click event) — Android TalkBack has no right-click event<Item>have norole="menuitem"and noaria-label<Submenu>also lack ARIA semantics3. File List Container Lacks Semantic Structure (Barrier/High)
Source:
src/pages/home/folder/List.tsx,src/pages/home/folder/Grid.tsx<VStack class="list">has norole="list"role="button"oraria-label— TalkBack cannot tell they are clickable sort controlsaria-label="Select all"4. Page Landmarks Completely Missing (Barrier/High)
Source:
index.html,src/pages/home/Layout.tsx,src/pages/home/header/Header.tsx,src/pages/home/Nav.tsxThe entire Web interface lacks WAI-ARIA landmark markers, preventing TalkBack users from using landmark navigation:
index.htmlhas<html lang="en">— should be dynamically set based on locale<main>tag, main content area has norole="main"<nav>tag, breadcrumb navigation (Nav.tsx<Breadcrumb>) has norole="navigation"+aria-label<header>tag, top bar (Header.tsx) has norole="banner"role="search"5. Dynamic Content Updates Not Announced (Barrier/Medium)
A full-project search found zero
aria-live, zerorole="status", zeroaria-busy:CenterLoadingcomponent) have noaria-busyorrole="status"6. Toolbar Buttons Lack Labels (Barrier/High)
Source:
src/pages/home/toolbar/Toolbar.tsxand subcomponents (Upload.tsx,Mkdir.tsx,Delete.tsx,Rename.tsx,CopyMove.tsx,Download.tsx,Share.tsx, etc.)Iconcomponents for icon buttons with only visual icons and noaria-label7. File Preview Partially Accessible but Incomplete (Barrier/High)
Source:
src/pages/home/previews/directoryPositive: Image preview (
image.tsx) has fairly completearia-label(zoom, rotate, navigate, etc.), paginator (Paginator.tsx) hasaria-label="Previous"/"Next".Issues:
video.tsx,video_box.tsx) play/pause/progress bar controls lack accessibility annotationsdoc.tsx,pdf.tsx) iframe lackstitleattributeiframe.tsxhasaria-label="Open in new tab"on the link but the iframe itself lackstitle8. Form Element Labels Incomplete (Barrier/Medium)
Source:
src/pages/manage/storages/AddOrEdit.tsx,src/components/ModalInput.tsx, etc.titleprop, but lack directaria-labelassociationExisting Accessibility Implementation (Positive Findings)
Approximately 25
aria-labelinstances found across the project, concentrated in:aria-label="search"aria-label="switch layout"This shows the development team has accessibility awareness, but current coverage is far from sufficient — core interaction areas (file list, context menu, toolbar) are completely blank.
Fix Recommendations
ListItem.tsx,GridItem.tsxrole="listitem"+aria-label="filename, size, modified"to container, merge multi-field info into one announceable unitcontext-menu.tsxrole="menu"to container,role="menuitem"+aria-labelto items, auto-focus first item on open; consider alternative long-press trigger for mobileList.tsx,Grid.tsxrole="list"to container,role="button"+aria-labelto sort controls,aria-labelto select-all checkboxindex.html,Layout.tsx<main>/<nav>/<header>semantic tags or correspondingrole, fixlangattributetoolbar/*.tsxaria-labelto all icon buttonsrole="status"oraria-live="polite"for success,aria-live="assertive"for errorsmanage/storages/AddOrEdit.tsxetc.aria-labelto all inputs,aria-label+aria-activedescendantto dropdownspreviews/video.tsxetc.role="slider"+aria-labelto video controls,titleto iframesReferences
1. W3C WCAG 2.1 Quick Guide
The official W3C Web Content Accessibility Guidelines, the accessibility standard basis for all Web applications. OpenList should follow WCAG 2.1 AA level.
2. WAI-ARIA Best Practices
W3C's ARIA specification provides semantic annotation standards for dynamic Web applications.
3. GitHub Official Open Source Accessibility Best Practices
GitHub's official open source guide recommends every project:
ACCESSIBILITY.mdfile declaring accessibility commitmentSource: https://opensource.guide/accessibility-best-practices-for-your-project/
Community Collaboration
About Us
We are from the Chinese visually impaired community, with over 20,000 visually impaired developers and over 200,000 visually impaired users, covering mainstream Chinese screen reader user groups (Tantan Screen Reader, TalkBack, etc.).
Testing Collaboration
If the development team is willing to advance accessibility optimization, we can organize systematic testing by visually impaired community users after the first fix release, covering multi-device, multi-screen-reader real-world scenarios, and provide structured feedback reports.
Promotion Willingness
OpenList, as the most feature-rich open-source file storage mounting tool, could gain significant community reputation and user growth in the visually impaired community if it takes the lead in accessibility. We are willing to promote OpenList's visibility within the visually impaired community.
Environment
To the OpenList team: I am happy to work with you to make OpenList accessible to everyone. But I expect to be treated with basic respect. A single comment acknowledging the report would have been enough. Instead, you chose silence. Don't let it happen again.