D07 UX - simplicity review (non-technical user)
Audience of this note: product / design decisions.
Lens: a normal person who installed DenyOut so the web stays safer - not an engineer. They rarely open the app; when they do, they want one clear answer: Am I protected? What just happened? What should I do?
Related: behavior 07-desktop-ux.md - copy catalog 07-desktop-ux-catalog.md.
Locked posture (already decided): everyday Protect computer / Safe desktop; window opened rarely; power tools stay behind Filters / Advanced / Select.
1. Ideal "home" after open (main dashboard)
Normative requirements: ux-iters/home.md (v2).
Peer research: ux-iters/dashboard-research.md.
Home is the only primary screen. History / Settings / Problems / My agents are additional - opened on purpose, never competing as equal "apps".
What Home must answer in 5 seconds
- Am I protected? - You are protected / Protection is off / Needs your help
- What should I do next? - one primary button
- Did anything important happen? - last block in human words, or "Nothing blocked yet - that is OK"
Target layout (maximum simplicity)
You are protected [ Turn off ]
Browse as usual. We'll only interrupt for clear risks.
Last blocked
example.com - looked like a secret in a link
[ Allow this site ] [ See history ]
- or -
Nothing blocked yet - that is OK.
[ See history ]
Optional quiet: Blocked today: N. Footer doors (not peers): Settings - For AI tools.
Principles:
| Do |
Don't |
| One status sentence in plain English |
Mode jargon as the headline |
| One primary action |
Pi-hole/AdGuard stat grids / charts |
| Last event as a story |
Open as History table or live monitor |
| Problems only when broken |
Equal-weight nav for power screens |
History stays as History - opened from "See history", never the emotional home.
2. What feels hard today (by surface)
2.1 Opening the window -> Activity as home
| Issue |
Why it hurts a normal user |
| First view is a table + Filters + Select + drawer |
Looks like an admin console, not "am I safe?" |
| Empty state talks about secrets/canaries/Test protection in Advanced |
Jargon; "Advanced" sounds like they broke something |
| "Why" column + later "Reason codes" |
Two layers of explanation without a single plain sentence |
2.2 Top bar & navigation
| Issue |
Why it hurts |
| Mode pill Safe desktop / Agents only / Off |
Three product modes before they understand one |
| Status string from the engine |
Often technical or empty of meaning |
| Four nav peers: Activity, My agents, Settings, Problems |
Equal weight implies equal importance; most users only need Home + Settings |
| Jump Ctrl+K in the nav |
Power-user affordance on the primary chrome |
2.3 Settings
| Issue |
Why it hurts |
| Basic still has Protect / Switch Safe / Off together |
"Switch to Safe" is confusing if they think they are already Safe |
| Advanced mixes Always allow, Keeps, Asks, Agents only, paths |
Good that danger is here; still a long scroll of concepts |
| Two memories: Always allow vs Remembered Keeps |
Same human question ("why am I not asked again?") split into two lists |
| Paths under Diagnostics |
Fine for support; scary as first Advanced content after Agents only |
2.4 My agents
| Issue |
Why it hurts |
| Learning / Pin / Discard / Ask / srt |
Necessary for power users; looks like a second product |
| "Agent" + command line |
Expected for AI wrappers; not for the Safe-first persona |
| Learning card always on the screen |
Permanent advanced concept on a list page |
2.5 Problems
| Issue |
Why it hurts |
| Health rows: Control IPC, Proxyd, CA, clipboard |
Support gold; user needs "Password failed - try Protect again" |
| Last error stack / elevation dump |
Should be behind "Show details" / Copy |
2.6 Toasts & dialogs
| Issue |
Why it hurts |
| Post-block is clear (Keep blocked / Allow this site) |
Best current HITL - keep |
| Ask dialog: Allow once / Always / Keep blocked |
Three outcomes; "Keep blocked" = deny - OK but dense |
| Some toasts still say "Tray -> ..." paths that no longer match compact tray |
Broken wayfinding |
| Admin failure copy still mentions Help & logs as tray items |
Out of date vs Settings / Problems |
2.7 Onboarding stack
| Issue |
Why it hurts |
| Your setup -> checklist -> glossary -> screen tip |
Correctly sequenced, but still four teaching layers |
| Glossary introduces three modes on day one |
Safe-first users only need Safe + "AI tools later" |
3. What's missing (screens & messages)
3.1 Missing on home / chrome
| Gap |
Suggestion |
| No plain "You are protected" |
Home status sentence |
| No one-tap Turn on / Turn off on home |
Primary control without hunting Settings |
| No friendly last-block card |
Bridge from toast -> decision -> history |
| No "protection failed" story without opening Problems |
Short banner: "Could not turn on - enter your password when asked" |
3.2 Missing on Activity / History
| Gap |
Suggestion |
| No human one-liner per row |
e.g. "Blocked a link that looked like it contained a secret" (toast already has this spirit) |
| Drawer leads with Reason codes |
Put codes under "Technical details" |
| Always allow vs Allow this site both visible |
One primary; explain the other in one short line |
| No "I don't understand this block" |
Link to short help / How protection works |
3.3 Missing on Settings
| Gap |
Suggestion |
| No single "sites I allowed" view |
Merge Always allow + Keeps into one "Allowed / silenced sites" with simple filters |
| Switch to Safe unclear |
Show only when Agents only is active |
| Test protection buried |
From empty History / home: "Try a safe check" in plain words |
3.4 Missing in messages
| Gap |
Suggestion |
| Stale tray directions in toasts |
Point to Open DenyOut / Settings / Problems only |
| Admin fail |
"A password window should have appeared. If you cancelled it, protection stayed Off." |
| Success after Protect |
"You're protected. Browse as usual. We'll only interrupt for clear risks." |
| First empty History |
Reassure: empty is good; not "go test Advanced" |
3.5 Missing for Safe-first vs agents
| Gap |
Suggestion |
| My agents visible as peer nav always |
Soft-hide or demote under "For AI tools" until first agent / user expands |
| Agents only discoverability vs safety |
Keep in Advanced; add one plain sentence: "Almost nobody needs this" |
4. Simplicity scorecard (current -> target)
| Surface |
Current feel |
Target feel |
| Tray |
Good (few items) |
Keep |
| Post-block toast |
Good |
Keep; polish follow-up toasts |
| Window home |
Admin history |
Status + last event + one action |
| Activity |
Powerful log |
Rename History; calmer empty; human why |
| Settings Basic |
Slightly busy |
Only On/Off + notify + autostart (+ Switch Safe when needed) |
| Settings Advanced |
Long but OK |
Group "My allowed sites"; details collapsed |
| My agents |
Power tool |
Secondary; Learning less prominent |
| Problems |
Technician panel |
Fix-first story; details collapsed |
| Onboarding |
Four layers |
Your setup + at most one tip |
5. Suggested change backlog (product, not eng detail)
Ordered for maximum simplicity gain:
- Home dashboard - status, primary On/Off, last block card; Activity becomes History.
- Message cleanup - remove stale tray paths; admin/success/empty copy in plain English.
- Activity drawer - human why first; reason codes under details; one clear allow action.
- Settings Basic trim - conditional Switch Safe; Test protection from home/empty History.
- Unify allow lists (or one entry point) - Always allow + Keeps as one human concept.
- Demote My agents / Jump in chrome for Safe-first.
- Problems - friendly summary first; health grid secondary.
- Shorten onboarding - drop glossary of three modes for Safe-first installs (or fold into one tip).
Non-goals for this simplicity track: changing HITL timing policy, Electron, expanding the tray, teaching nft/CA to end users.
6. Full priority order - every window element & message (for UX refactor)
Priority = impact on a non-technical Safe-first user x how often they see it.
P0 = do first - P1 = next - P2 = after home/history feel right - P3 = polish - P4 = leave / lowest.
P0 - Critical path (protection + interrupt + first open)
| # |
Surface |
Element / message |
Refactor intent |
| 1 |
New: Home |
Status sentence ("You are protected" / "Protection is off" / "Needs your help") |
Main answer on open |
| 2 |
New: Home |
Primary Turn on Protect / Turn off |
One control, no hunting |
| 3 |
New: Home |
Last blocked card (site + plain why + Keep / Allow) |
Close the loop after toast |
| 4 |
Toast |
DenyOut blocked something + Keep blocked / Allow this site |
Keep; ensure body is human-only |
| 5 |
Toast |
Protect on success ("You're protected. Browse as usual...") |
New/rewrite |
| 6 |
Toast |
Admin failed (password cancelled / failed) |
Plain story; no "Help & logs" tray path |
| 7 |
Modal |
Your setup body + Open DenyOut / Got it |
Shorten; Safe-first only |
| 8 |
Tray |
Tooltip DenyOut - ... + left-click open |
Keep; tooltip in plain words if possible |
| 9 |
Tray menu |
Protect computer - Off - Open DenyOut... - Quit |
Keep order; status line plainer |
| 10 |
Chrome |
Unhealthy: Needs attention - open Problems + badge |
Keep; tie to Home banner too |
P1 - History & wayfinding (what they open after a scare)
| # |
Surface |
Element / message |
Refactor intent |
| 11 |
Nav |
Rename Activity -> History (or "What was blocked") |
Matches mental model |
| 12 |
Home |
Link See history |
Entry to table |
| 13 |
Activity |
Empty state ("Nothing blocked yet - that is OK") |
Reassure; drop Advanced push |
| 14 |
Activity |
Table: Time - Site - Why (human one-liner) |
Why = story, not code |
| 15 |
Activity |
Row Always allow |
Keep secondary; less prominent than drawer primary |
| 16 |
Activity drawer |
Title + Site + human Why first |
Lead with understanding |
| 17 |
Activity drawer |
Allow this site (primary) - Always allow host (secondary or merged) |
One clear decision |
| 18 |
Activity drawer |
URL |
Keep visible; secrets redacted note short |
| 19 |
Activity drawer |
Reason codes - Method - Process - Detectors |
Collapse under Technical details |
| 20 |
Activity |
Toolbar Filters |
Keep collapsed by default |
| 21 |
Settings Basic |
Protect computer (Safe) - Off |
Align copy with Home |
| 22 |
Settings Basic |
Notifications - Autostart |
Keep simple |
| 23 |
Chrome |
Mode pill |
Prefer "Protected" / "Off" over Safe desktop jargon on Home |
P2 - Reduce confusion & duplicate concepts
| # |
Surface |
Element / message |
Refactor intent |
| 24 |
Settings Basic |
Switch to Safe desktop |
Show only when Agents only is on |
| 25 |
Settings Advanced |
Always allow list + Remembered Keeps |
Unify entry: "Sites I've allowed / silenced" |
| 26 |
Settings Advanced |
Agents only (whole PC) + confirm |
Keep buried; add "Almost nobody needs this" |
| 27 |
Settings Advanced |
Resume asks |
Keep; findable via Jump/Find |
| 28 |
Activity |
Select... / bulk Always allow |
Keep power; not on Home |
| 29 |
Activity |
Group by host (under Filters) |
Keep |
| 30 |
Activity |
Reason filter labels |
Keep human labels |
| 31 |
Onboarding |
Getting started checklist |
Merge into Home empty or drop if Home exists |
| 32 |
Onboarding |
Glossary tip (3 modes) |
Drop or one Safe-only tip for Safe-first |
| 33 |
Tips |
activity / settings-basic tips |
Rewrite after Home exists |
| 34 |
Toast |
Follow-ups Always allow: host / undid block |
Align wording with drawer |
| 35 |
Toast / dialog |
Ask: Allow once - Always allow - Keep blocked |
Keep policy; plainer title/body |
| 36 |
Chrome |
Nav weight: Settings vs My agents |
Settings above; My agents demoted |
P3 - Power / support (secondary users)
| # |
Surface |
Element / message |
Refactor intent |
| 37 |
Nav / screen |
My agents list - New agent |
Secondary "For AI tools" |
| 38 |
My agents |
Empty state |
Softer; don't compete with Home |
| 39 |
My agents |
Modal New/Edit fields (Name, Command, Ask...) |
Keep; wizard copy simpler |
| 40 |
My agents |
Learning card - Pin - Discard |
Collapse / show when pending only |
| 41 |
My agents |
Require isolation (srt) |
Advanced-only in modal |
| 42 |
Problems |
Friendly summary + Retry Protect - Copy last error |
Fix-first |
| 43 |
Problems |
Last blocked -> Open in History |
Keep |
| 44 |
Problems |
Health grid (IPC, Proxyd, CA, clipboard) |
Under Details |
| 45 |
Settings Advanced |
Diagnostics paths - Open diagnostics - Test protection |
Keep; Test also from Home empty |
| 46 |
Settings |
Find a setting... |
Keep |
| 47 |
Jump Ctrl+K |
Jump list |
Move out of primary nav chrome (shortcut only) |
| 48 |
Tray |
My agents... |
Keep for power; opens agents screen |
| 49 |
Toast |
Ask storm pause / Resume |
Keep |
| 50 |
Toast |
IP blocked |
Keep; plain words |
| 51 |
Dialog |
Autostart prompt |
Keep short |
| 52 |
Dialog |
UXv2 migration / unexpected quit |
Rare; plain copy |
P4 - Lowest / leave alone for now
| # |
Surface |
Element / message |
Refactor intent |
| 53 |
Tray |
Separators / ✓ checkmarks |
Fine |
| 54 |
Chrome |
Brand DenyOut |
Fine |
| 55 |
Chrome |
Refresh |
Fine / optional later |
| 56 |
Privacy line |
"Privacy: decisions stay on this computer." |
Keep everywhere relevant |
| 57 |
Install terminal lines |
install.sh progress |
Out of GUI refactor |
| 58 |
Native fallback wizards |
zenity lists when no Wails |
Parity later; not P0 |
| 59 |
Session mode labels |
Limited (session) |
Not user-facing primary |
| 60 |
HITL timing / policy |
15s / 2min defaults |
Non-goal this track |
Reading the order as phases
Phase A (P0): Home + toast truth + Your setup + Protect fail/success
Phase B (P1): History rename + table/drawer human why + Basic On/Off
Phase C (P2): Unify allows - trim Switch Safe - demote agents - cut glossary
Phase D (P3-P4): Problems details - Learning collapse - Jump demotion - leave tray core
7. One-sentence product rule
If a normal person opens DenyOut, they should instantly see whether they are protected and what to do about the last scary moment - without learning the words Safe desktop, Agents only, proxyd, or Reason codes.