The Problem With Too Many Interfaces
You're working in AiFiler. You need to create a new document. You reach for the keyboard shortcut. But which one? Is it the New picker in the sidebar? The command palette? The context menu? We had three separate entry points for the same action, and it was confusing.
Last month, we shipped a fix that most users won't notice—but it matters. We collapsed all three document-creation paths into a single Universal Command (Ctrl+Shift+A). No more hunting for the right menu. One command. One place. One way to get things done.
This is part of a larger pattern we've been fixing: audit-011 and audit-012 removed redundant UI surfaces across the app. The result is an interface that feels less cluttered and more predictable.
What Actually Changed
1. Unified Command for All Document Creation
Before: You could create a new document three different ways. The sidebar had a New button. The command palette had a New command. Context menus had their own picker.
After: Everything routes through Universal Command (Ctrl+Shift+A). Type "new" and you get one consistent picker. Same options. Same behavior. Every time.
How to try it:
- Press Ctrl+Shift+A (or Cmd+Shift+A on Mac)
- Type "new" or just start typing a document type (e.g., "matrix", "note")
- Select your template and create
2. Consistent Document Viewer Styling
We discovered something odd: document viewers were respecting your theme preference (dark mode, light mode, etc.), but they should always render as white paper. This matters for readability and consistency.
Commit 6fa78f6 forced all document viewers to white-paper style regardless of your workspace theme. If you're in dark mode, your documents still display on white backgrounds. This is intentional—documents are meant to be read, not themed.
Why it matters: PDFs, Word docs, and spreadsheets all render better on white. Your theme preference is for the UI chrome, not the content itself.
3. Security Hardening: Four Advisories Cleared
Commit 88a2b9d cleared four Supabase ERROR advisors that were cluttering logs and creating false alerts. These weren't vulnerabilities—they were noise. But noise can hide real problems.
We also fixed a race condition in useTableData (commit c20fb64) where StrictMode in development was triggering spurious 401 errors. This was a testing artifact, not a production bug, but it made debugging harder.
What this means for you: Cleaner logs. Fewer false alarms. Easier troubleshooting when something actually goes wrong.
How the Unified Command Works Under the Hood
The Universal Command isn't just a UI collapse. It's powered by 87 intent handlers in lib/intelligence/intentHandlers.ts that route your input to the right action. When you type "new matrix", the system:
- Parses your intent using
lib/intentHeuristics.ts - Matches it against registered handlers
- Executes the appropriate action via
lib/intelligence/actionExecutor.ts
This same system handles search, filtering, batch operations, and navigation. One router. Multiple intents. Infinite flexibility.
The benefit: We can add new commands without adding new UI. Type "archive all contracts from 2024" and the system figures out what you mean.
The Bigger Picture: Audit-010 Phase 6
These changes are part of audit-010-phase-6, a multi-month effort to clean up the codebase and simplify the user experience. We've been:
- Replacing stale
activeTablereferences withactiveMatrix(the new unified data model) - Dropping deprecated webhook types (
TABLE_*,ROW_*) - Consolidating editor mounts on the knowledge view (commit
da49a10) - Rewriting internal documentation to reflect the unified Matrices product
This isn't visible in the UI, but it's real. The app is becoming more consistent, more maintainable, and more predictable.
How to Try It
- Use Universal Command: Press Ctrl+Shift+A and try creating a new document, searching, or filtering
- Check document viewers: Open any PDF or spreadsheet in dark mode—it should render on white
- Watch your logs: If you're a developer, you'll see fewer spurious 401 errors in development
What's Next
We're continuing to consolidate and simplify. The next phase focuses on:
- Unified data-fetching patterns (moving to SWR with localStorage prefixing for offline-first support)
- Smarter intent detection (the Universal Command will understand more complex requests)
- Mobile-first design for the knowledge view (the mobile components in
components/mobile/are getting a refresh)
The goal isn't to add features. It's to make the features you have work better, feel faster, and require less thinking.
Questions? Reply to this email or open an issue in the AiFiler community. We read everything.
Enjoyed this article?
Get more articles like this delivered to your inbox. No spam, unsubscribe anytime.