fix(settings): say plainly which AI categories are context-only
Demo images / Build & push demo images (push) Successful in 4m9s
Demo images / Build & push demo images (push) Successful in 4m9s
All ten AI data-access categories offer a context toggle, but only five (Apps, System, Network, Media, Bitcoin) have any tool behind them — Wallet, Files, Search, Local AI and Notes grant the assistant visibility with nothing to act on. The Settings copy implied actions that do not exist. Operator decision (2026-08-09): ship honest copy now, build the tools as ordinary backlog. Each of the five carries a contextOnly flag, a "context only" badge, and an appended description line saying the assistant can see this but can't take actions with it yet. Drop the flag per category as real tools land. Verified: vue-tsc clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
43a26c9784
commit
7ec4bdb22d
@@ -10,6 +10,12 @@ export interface AIPermissionCategory {
|
||||
description: string
|
||||
icon: string
|
||||
group: string
|
||||
/** True when the assistant can SEE this data but has no tools to act on it.
|
||||
* Five categories (wallet, files, search, ai-local, notes) currently have a
|
||||
* context arm and zero tools — the toggle copy must say so, or Settings
|
||||
* implies actions that do not exist (operator decision, 2026-08-09). Remove
|
||||
* per-category as real tools land. */
|
||||
contextOnly?: boolean
|
||||
}
|
||||
|
||||
export const AI_PERMISSION_CATEGORIES: AIPermissionCategory[] = [
|
||||
@@ -50,6 +56,7 @@ export const AI_PERMISSION_CATEGORIES: AIPermissionCategory[] = [
|
||||
},
|
||||
{
|
||||
id: 'files',
|
||||
contextOnly: true,
|
||||
label: 'File Names',
|
||||
description: 'Folder and file names in Cloud — no file contents',
|
||||
icon: 'M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z',
|
||||
@@ -57,6 +64,7 @@ export const AI_PERMISSION_CATEGORIES: AIPermissionCategory[] = [
|
||||
},
|
||||
{
|
||||
id: 'notes',
|
||||
contextOnly: true,
|
||||
label: 'Documents & Notes',
|
||||
description: 'Document and note titles — no contents',
|
||||
icon: 'M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z',
|
||||
@@ -64,6 +72,7 @@ export const AI_PERMISSION_CATEGORIES: AIPermissionCategory[] = [
|
||||
},
|
||||
{
|
||||
id: 'search',
|
||||
contextOnly: true,
|
||||
label: 'Web Search',
|
||||
description: 'Web search via your private SearXNG instance',
|
||||
icon: 'M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z',
|
||||
@@ -71,6 +80,7 @@ export const AI_PERMISSION_CATEGORIES: AIPermissionCategory[] = [
|
||||
},
|
||||
{
|
||||
id: 'ai-local',
|
||||
contextOnly: true,
|
||||
label: 'Local AI Models',
|
||||
description: 'Local AI models via Ollama — model names and availability',
|
||||
icon: 'M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z',
|
||||
@@ -78,6 +88,7 @@ export const AI_PERMISSION_CATEGORIES: AIPermissionCategory[] = [
|
||||
},
|
||||
{
|
||||
id: 'wallet',
|
||||
contextOnly: true,
|
||||
label: 'Wallet Overview',
|
||||
description: 'Balance, channel count — no private keys, seeds, or addresses',
|
||||
icon: 'M17 9V7a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2m2 4h10a2 2 0 002-2v-6a2 2 0 00-2-2H9a2 2 0 00-2 2v6a2 2 0 002 2zm7-5a2 2 0 11-4 0 2 2 0 014 0z',
|
||||
|
||||
@@ -61,8 +61,14 @@ const aiCategoryGroups = computed(() => {
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" :d="cat.icon" />
|
||||
</svg>
|
||||
<div class="flex-1 min-w-0">
|
||||
<p class="text-sm font-medium" :class="aiPermissions.isEnabled(cat.id) ? 'text-white/95' : 'text-white/70'">{{ cat.label }}</p>
|
||||
<p class="text-xs text-white/50 mt-0.5">{{ cat.description }}</p>
|
||||
<div class="flex items-center gap-2">
|
||||
<p class="text-sm font-medium" :class="aiPermissions.isEnabled(cat.id) ? 'text-white/95' : 'text-white/70'">{{ cat.label }}</p>
|
||||
<!-- Honest-copy rule: these categories grant the assistant
|
||||
visibility only — it has no tools to act on them yet, and
|
||||
the toggle must not imply otherwise. -->
|
||||
<span v-if="cat.contextOnly" class="shrink-0 px-1.5 py-0.5 text-[10px] rounded bg-white/10 text-white/50" title="The assistant can see this information but has no actions for it yet">context only</span>
|
||||
</div>
|
||||
<p class="text-xs text-white/50 mt-0.5">{{ cat.description }}<template v-if="cat.contextOnly"> — the assistant can see this but can't take actions with it yet</template></p>
|
||||
</div>
|
||||
<ToggleSwitch :model-value="aiPermissions.isEnabled(cat.id)" @update:model-value="aiPermissions.toggle(cat.id)" @click.stop />
|
||||
</button>
|
||||
|
||||
Reference in New Issue
Block a user