superlocalmemory 3.4.16 → 3.4.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/package.json +1 -3
- package/pyproject.toml +10 -1
- package/src/superlocalmemory/cli/setup_wizard.py +30 -0
- package/src/superlocalmemory/server/routes/entity.py +5 -9
- package/src/superlocalmemory/server/routes/helpers.py +120 -15
- package/src/superlocalmemory/server/routes/ingest.py +2 -3
- package/src/superlocalmemory/server/routes/v3_api.py +42 -2
- package/src/superlocalmemory/server/unified_daemon.py +21 -11
- package/src/superlocalmemory.egg-info/PKG-INFO +5 -2
- package/src/superlocalmemory.egg-info/requires.txt +3 -0
- package/docs/ARCHITECTURE.md +0 -149
- package/docs/api-reference.md +0 -284
- package/docs/auto-memory.md +0 -150
- package/docs/cli-reference.md +0 -327
- package/docs/cloud-backup.md +0 -174
- package/docs/compliance.md +0 -191
- package/docs/configuration.md +0 -182
- package/docs/getting-started.md +0 -102
- package/docs/ide-setup.md +0 -261
- package/docs/mcp-tools.md +0 -220
- package/docs/migration-from-v2.md +0 -170
- package/docs/profiles.md +0 -173
- package/docs/screenshots/01-dashboard-main.png +0 -0
- package/docs/screenshots/02-knowledge-graph.png +0 -0
- package/docs/screenshots/03-math-health.png +0 -0
- package/docs/screenshots/03-patterns-learning.png +0 -0
- package/docs/screenshots/04-learning-dashboard.png +0 -0
- package/docs/screenshots/04-recall-lab.png +0 -0
- package/docs/screenshots/05-behavioral-analysis.png +0 -0
- package/docs/screenshots/05-trust-dashboard.png +0 -0
- package/docs/screenshots/06-graph-communities.png +0 -0
- package/docs/screenshots/06-settings.png +0 -0
- package/docs/screenshots/07-memories-blurred.png +0 -0
- package/docs/skill-evolution.md +0 -256
- package/docs/troubleshooting.md +0 -310
- package/docs/v2-archive/ACCESSIBILITY.md +0 -291
- package/docs/v2-archive/ARCHITECTURE.md +0 -886
- package/docs/v2-archive/CLI-COMMANDS-REFERENCE.md +0 -425
- package/docs/v2-archive/COMPRESSION-README.md +0 -390
- package/docs/v2-archive/FRAMEWORK-INTEGRATIONS.md +0 -300
- package/docs/v2-archive/MCP-MANUAL-SETUP.md +0 -775
- package/docs/v2-archive/MCP-TROUBLESHOOTING.md +0 -787
- package/docs/v2-archive/PATTERN-LEARNING.md +0 -228
- package/docs/v2-archive/PROFILES-GUIDE.md +0 -453
- package/docs/v2-archive/RESET-GUIDE.md +0 -353
- package/docs/v2-archive/SEARCH-ENGINE-V2.2.0.md +0 -749
- package/docs/v2-archive/SEARCH-INTEGRATION-GUIDE.md +0 -502
- package/docs/v2-archive/UI-SERVER.md +0 -262
- package/docs/v2-archive/UNIVERSAL-INTEGRATION.md +0 -488
- package/docs/v2-archive/V2.2.0-OPTIONAL-SEARCH.md +0 -666
- package/docs/v2-archive/WINDOWS-INSTALL-README.txt +0 -34
- package/docs/v2-archive/WINDOWS-POST-INSTALL.txt +0 -45
- package/docs/v2-archive/example_graph_usage.py +0 -146
- package/ui/index.html +0 -1879
- package/ui/js/agents.js +0 -192
- package/ui/js/auto-settings.js +0 -399
- package/ui/js/behavioral.js +0 -276
- package/ui/js/clusters.js +0 -206
- package/ui/js/compliance.js +0 -252
- package/ui/js/core.js +0 -246
- package/ui/js/dashboard.js +0 -110
- package/ui/js/events.js +0 -178
- package/ui/js/fact-detail.js +0 -92
- package/ui/js/feedback.js +0 -333
- package/ui/js/graph-core.js +0 -447
- package/ui/js/graph-filters.js +0 -220
- package/ui/js/graph-interactions.js +0 -351
- package/ui/js/graph-ui.js +0 -214
- package/ui/js/ide-status.js +0 -102
- package/ui/js/init.js +0 -45
- package/ui/js/learning.js +0 -435
- package/ui/js/lifecycle.js +0 -298
- package/ui/js/math-health.js +0 -98
- package/ui/js/memories.js +0 -264
- package/ui/js/modal.js +0 -357
- package/ui/js/patterns.js +0 -93
- package/ui/js/profiles.js +0 -236
- package/ui/js/recall-lab.js +0 -292
- package/ui/js/search.js +0 -59
- package/ui/js/settings.js +0 -224
- package/ui/js/timeline.js +0 -32
- package/ui/js/trust-dashboard.js +0 -73
|
@@ -1,291 +0,0 @@
|
|
|
1
|
-
# Accessibility Features - SuperLocalMemory V2.6.5
|
|
2
|
-
|
|
3
|
-
**Last Updated:** February 16, 2026
|
|
4
|
-
**Author:** Varun Pratap Bhardwaj
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Overview
|
|
9
|
-
|
|
10
|
-
SuperLocalMemory V2.6.5 includes comprehensive keyboard navigation and screen reader support for the interactive knowledge graph, making it fully accessible to users with disabilities.
|
|
11
|
-
|
|
12
|
-
## Keyboard Navigation
|
|
13
|
-
|
|
14
|
-
### Graph Container Focus
|
|
15
|
-
|
|
16
|
-
The graph container (`#graph-container`) is focusable via keyboard:
|
|
17
|
-
|
|
18
|
-
- **Focus method:** Click graph OR press `Tab` from controls above
|
|
19
|
-
- **Visual indicator:** Browser native focus outline + first node highlighted with blue border
|
|
20
|
-
- **ARIA role:** `role="application"` signals custom keyboard handling
|
|
21
|
-
|
|
22
|
-
### Node Navigation
|
|
23
|
-
|
|
24
|
-
| Key | Action |
|
|
25
|
-
|-----|--------|
|
|
26
|
-
| **Tab** | Move to next node (cycles through all nodes) |
|
|
27
|
-
| **Shift+Tab** | Move to previous node |
|
|
28
|
-
| **→** (Right Arrow) | Move to nearest node on the right |
|
|
29
|
-
| **←** (Left Arrow) | Move to nearest node on the left |
|
|
30
|
-
| **↓** (Down Arrow) | Move to nearest node below |
|
|
31
|
-
| **↑** (Up Arrow) | Move to nearest node above |
|
|
32
|
-
| **Home** | Jump to first node |
|
|
33
|
-
| **End** | Jump to last node |
|
|
34
|
-
|
|
35
|
-
**Arrow Key Algorithm:**
|
|
36
|
-
- Finds nodes in specified direction (based on X/Y coordinates)
|
|
37
|
-
- Prioritizes nodes closer to current position
|
|
38
|
-
- Combines Euclidean distance with directional score
|
|
39
|
-
- Ensures no "stuck" states (always finds a valid next node)
|
|
40
|
-
|
|
41
|
-
### Actions
|
|
42
|
-
|
|
43
|
-
| Key | Action |
|
|
44
|
-
|-----|--------|
|
|
45
|
-
| **Enter** or **Space** | Open modal for focused node |
|
|
46
|
-
| **Escape** | Clear active filter OR blur graph (if no filter) |
|
|
47
|
-
|
|
48
|
-
### Visual Focus Indicator
|
|
49
|
-
|
|
50
|
-
Focused nodes have the CSS class `.keyboard-focused` with:
|
|
51
|
-
|
|
52
|
-
```css
|
|
53
|
-
border-width: 5px;
|
|
54
|
-
border-color: #0066ff;
|
|
55
|
-
border-style: solid;
|
|
56
|
-
box-shadow: 0 0 15px #0066ff;
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
The graph smoothly animates to center the focused node in the viewport.
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## Screen Reader Support
|
|
64
|
-
|
|
65
|
-
### ARIA Attributes
|
|
66
|
-
|
|
67
|
-
#### Graph Container
|
|
68
|
-
|
|
69
|
-
```html
|
|
70
|
-
<div id="graph-container"
|
|
71
|
-
role="application"
|
|
72
|
-
aria-label="Interactive knowledge graph - use Tab to navigate nodes, Enter to view details, Arrow keys to move between adjacent nodes, Escape to clear filters"
|
|
73
|
-
aria-describedby="graph-stats">
|
|
74
|
-
</div>
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
- **`role="application"`** - Signals custom keyboard handling
|
|
78
|
-
- **`aria-label`** - Provides usage instructions
|
|
79
|
-
- **`aria-describedby`** - Links to graph statistics (node/edge count)
|
|
80
|
-
|
|
81
|
-
#### Status Regions
|
|
82
|
-
|
|
83
|
-
```html
|
|
84
|
-
<div id="graph-status-full" role="status" aria-live="polite">
|
|
85
|
-
Showing all memories
|
|
86
|
-
</div>
|
|
87
|
-
|
|
88
|
-
<div id="graph-status-filtered" role="status" aria-live="polite">
|
|
89
|
-
Viewing Cluster X (Y memories)
|
|
90
|
-
</div>
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
- **`role="status"`** - Semantic status information
|
|
94
|
-
- **`aria-live="polite"`** - Announces changes when user is idle
|
|
95
|
-
|
|
96
|
-
#### Hidden Status Region
|
|
97
|
-
|
|
98
|
-
An off-screen status region announces keyboard navigation events:
|
|
99
|
-
|
|
100
|
-
```html
|
|
101
|
-
<div id="graph-sr-status"
|
|
102
|
-
role="status"
|
|
103
|
-
aria-live="polite"
|
|
104
|
-
aria-atomic="true"
|
|
105
|
-
style="position:absolute; left:-10000px; width:1px; height:1px; overflow:hidden;">
|
|
106
|
-
</div>
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
This element is invisible but screen readers announce its content changes.
|
|
110
|
-
|
|
111
|
-
#### Buttons
|
|
112
|
-
|
|
113
|
-
All interactive buttons have `aria-label` attributes:
|
|
114
|
-
|
|
115
|
-
```html
|
|
116
|
-
<button aria-label="Refresh graph data">...</button>
|
|
117
|
-
<button aria-label="Clear filter and show all memories">...</button>
|
|
118
|
-
<button aria-label="Toggle dark mode">...</button>
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
#### Dropdowns
|
|
122
|
-
|
|
123
|
-
Form controls have proper labels:
|
|
124
|
-
|
|
125
|
-
```html
|
|
126
|
-
<label for="graph-layout-selector">Layout Algorithm:</label>
|
|
127
|
-
<select id="graph-layout-selector" aria-label="Select graph layout algorithm">
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### Screen Reader Announcements
|
|
131
|
-
|
|
132
|
-
The `updateScreenReaderStatus()` function announces:
|
|
133
|
-
|
|
134
|
-
1. **Graph load:** "Graph loaded with X memories and Y connections"
|
|
135
|
-
2. **Node navigation:** "Memory 123: SuperLocalMemory Project, Cluster 2, Importance 8 out of 10"
|
|
136
|
-
3. **Filter cleared:** "Filters cleared, showing all memories"
|
|
137
|
-
|
|
138
|
-
These announcements are sent to the hidden `#graph-sr-status` region.
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## Modal Focus Management
|
|
143
|
-
|
|
144
|
-
### Opening Modal
|
|
145
|
-
|
|
146
|
-
When `openMemoryModal()` is called:
|
|
147
|
-
|
|
148
|
-
1. **Store last focused element:** `window.lastFocusedElement = document.activeElement`
|
|
149
|
-
2. **Bootstrap modal shown event:** Focus moves to first button in modal
|
|
150
|
-
3. **Tab order:** Close button → Modal content → Action buttons → Footer buttons
|
|
151
|
-
|
|
152
|
-
### Closing Modal
|
|
153
|
-
|
|
154
|
-
When modal closes (via Bootstrap `hidden.bs.modal` event):
|
|
155
|
-
|
|
156
|
-
1. **Restore focus:** `window.lastFocusedElement.focus()`
|
|
157
|
-
2. **Clear stored element:** `window.lastFocusedElement = null`
|
|
158
|
-
3. **User can continue:** Keyboard navigation resumes from same node
|
|
159
|
-
|
|
160
|
-
This ensures users don't lose their place in the graph when opening/closing modals.
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
## Skip Links
|
|
165
|
-
|
|
166
|
-
A skip link is provided for keyboard users:
|
|
167
|
-
|
|
168
|
-
```html
|
|
169
|
-
<a href="#memories-pane" class="visually-hidden-focusable">Skip to Memories list</a>
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
This link is invisible until focused (via Tab), allowing users to bypass the graph and jump directly to the Memories tab.
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## Testing with Screen Readers
|
|
177
|
-
|
|
178
|
-
### macOS VoiceOver
|
|
179
|
-
|
|
180
|
-
1. **Enable:** Press `Cmd+F5`
|
|
181
|
-
2. **Navigate:** `Control+Option+Arrow keys`
|
|
182
|
-
3. **Read current element:** `Control+Option+A`
|
|
183
|
-
4. **Test focus:** Tab through graph → Verify announcements
|
|
184
|
-
|
|
185
|
-
### Windows NVDA
|
|
186
|
-
|
|
187
|
-
1. **Install:** Download from [nvaccess.org](https://www.nvaccess.org/)
|
|
188
|
-
2. **Start:** `Control+Alt+N`
|
|
189
|
-
3. **Navigate:** Arrow keys
|
|
190
|
-
4. **Browse mode:** Press `Insert+Space` to toggle
|
|
191
|
-
|
|
192
|
-
### Windows JAWS
|
|
193
|
-
|
|
194
|
-
1. **Commercial software:** Most widely used screen reader
|
|
195
|
-
2. **Navigate:** Arrow keys + Tab
|
|
196
|
-
3. **Read mode:** Virtual cursor navigation
|
|
197
|
-
|
|
198
|
-
### Linux Orca
|
|
199
|
-
|
|
200
|
-
1. **Enable:** `Alt+F2`, type "orca"
|
|
201
|
-
2. **Configure:** `orca --setup`
|
|
202
|
-
3. **Navigate:** Arrow keys
|
|
203
|
-
|
|
204
|
-
---
|
|
205
|
-
|
|
206
|
-
## Compliance
|
|
207
|
-
|
|
208
|
-
### WCAG 2.1 AA Compliance
|
|
209
|
-
|
|
210
|
-
| Criterion | Status | Implementation |
|
|
211
|
-
|-----------|--------|----------------|
|
|
212
|
-
| **1.3.1 Info and Relationships** | ✅ Pass | Semantic HTML, ARIA roles |
|
|
213
|
-
| **2.1.1 Keyboard** | ✅ Pass | Full keyboard navigation |
|
|
214
|
-
| **2.1.2 No Keyboard Trap** | ✅ Pass | Escape key blurs graph |
|
|
215
|
-
| **2.4.3 Focus Order** | ✅ Pass | Logical tab order |
|
|
216
|
-
| **2.4.7 Focus Visible** | ✅ Pass | Blue outline on focused nodes |
|
|
217
|
-
| **3.2.1 On Focus** | ✅ Pass | No unexpected context changes |
|
|
218
|
-
| **4.1.2 Name, Role, Value** | ✅ Pass | ARIA labels on all controls |
|
|
219
|
-
| **4.1.3 Status Messages** | ✅ Pass | aria-live regions |
|
|
220
|
-
|
|
221
|
-
### Section 508 Compliance
|
|
222
|
-
|
|
223
|
-
- ✅ **(a) Keyboard access** - All graph functions accessible via keyboard
|
|
224
|
-
- ✅ **(c) Color contrast** - Blue focus indicator meets 4.5:1 contrast ratio
|
|
225
|
-
- ✅ **(d) Screen reader compatible** - ARIA labels and live regions
|
|
226
|
-
|
|
227
|
-
---
|
|
228
|
-
|
|
229
|
-
## Developer Notes
|
|
230
|
-
|
|
231
|
-
### Code Location
|
|
232
|
-
|
|
233
|
-
- **Keyboard navigation:** `/ui/js/graph-cytoscape.js` (lines 950-1150)
|
|
234
|
-
- **Modal focus management:** `/ui/js/modal.js` (lines 10-18, 142-160)
|
|
235
|
-
- **ARIA attributes:** `/ui/index.html` (graph-pane section)
|
|
236
|
-
|
|
237
|
-
### Key Functions
|
|
238
|
-
|
|
239
|
-
| Function | Purpose |
|
|
240
|
-
|----------|---------|
|
|
241
|
-
| `setupKeyboardNavigation()` | Attaches keyboard event handlers to graph container |
|
|
242
|
-
| `focusNodeAtIndex(index)` | Highlights node and centers viewport |
|
|
243
|
-
| `moveToAdjacentNode(direction, currentNode)` | Finds nearest node in specified direction |
|
|
244
|
-
| `announceNode(node)` | Sends node info to screen reader |
|
|
245
|
-
| `updateScreenReaderStatus(message)` | Updates hidden status region |
|
|
246
|
-
|
|
247
|
-
### Global State Variables
|
|
248
|
-
|
|
249
|
-
```javascript
|
|
250
|
-
var focusedNodeIndex = 0; // Currently focused node index
|
|
251
|
-
var keyboardNavigationEnabled = false; // Is keyboard nav active?
|
|
252
|
-
var lastFocusedElement = null; // For modal focus return
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
### Cytoscape.js Style Class
|
|
256
|
-
|
|
257
|
-
```javascript
|
|
258
|
-
{
|
|
259
|
-
selector: 'node.keyboard-focused',
|
|
260
|
-
style: {
|
|
261
|
-
'border-width': 5,
|
|
262
|
-
'border-color': '#0066ff',
|
|
263
|
-
'border-style': 'solid',
|
|
264
|
-
'box-shadow': '0 0 15px #0066ff'
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
---
|
|
270
|
-
|
|
271
|
-
## Future Enhancements (v2.7+)
|
|
272
|
-
|
|
273
|
-
1. **Voice commands:** Integrate Web Speech API for voice navigation
|
|
274
|
-
2. **Braille support:** Test with refreshable Braille displays
|
|
275
|
-
3. **High contrast mode:** Additional theme for low vision users
|
|
276
|
-
4. **Keyboard shortcuts help:** Press `?` to show keyboard shortcuts overlay
|
|
277
|
-
5. **Focus trapping in modal:** Prevent Tab from leaving modal when open
|
|
278
|
-
|
|
279
|
-
---
|
|
280
|
-
|
|
281
|
-
## Feedback
|
|
282
|
-
|
|
283
|
-
If you encounter accessibility issues, please report them:
|
|
284
|
-
|
|
285
|
-
- **GitHub Issues:** https://github.com/qualixar/superlocalmemory/issues
|
|
286
|
-
- **Label:** Use `accessibility` tag
|
|
287
|
-
- **Include:** Browser, screen reader (if applicable), and steps to reproduce
|
|
288
|
-
|
|
289
|
-
---
|
|
290
|
-
|
|
291
|
-
**Copyright © 2026 Varun Pratap Bhardwaj - AGPL-3.0**
|