Files
maka/docs/astryx-full-surface-audit.md
agent-radar 7be535059e
Dependency audit / audit (push) Canceled after 0s
CI / plan (push) Canceled after 0s
Gitoxide helper admission / macos-latest (push) Canceled after 0s
Gitoxide helper admission / ubuntu-latest (push) Canceled after 0s
Gitoxide helper admission / windows-latest (push) Canceled after 0s
Runtime Host peer admission / quality (push) Canceled after 0s
Windows recovery / windows_recovery (push) Canceled after 0s
CI / heavy (push) Canceled after 0s
CI / test (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 19:05:14 +08:00

111 lines
5.2 KiB
Markdown

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
# Astryx full surface audit
Date: 2026-08-09
Branch: `feat/astryx-surface-alignment`
Scope: every product surface under `apps/desktop/src/renderer/**` and `packages/ui/src/**` (183 inventory files).
This pass **read and analyzed** settings pages/modules, shell/chat/workbar/panels, module hubs, packages/ui compositions, and product CSS — not only inventory scripts.
## Verdict
| Layer | State |
|-------|--------|
| Raw `<button>` / `<input>` / `<select>` / `<textarea>` | **Clear** (product TSX) |
| Inventory blockers | **0** |
| Empty / loading / error contract | **Mostly aligned** after this pass |
| Module kit (Skills / Plan / Daily / MCP) | **Aligned** |
| Settings kit (`SettingsPage` / `SettingsSection`) | **Aligned** (providers multi-level intentional) |
| Remaining debt | CSS control-chrome overrides, plan/graph plate elevation, ChatReasoning lab eject, Deep Research progress card |
## Surfaces reviewed
### Settings (all `*-page.tsx` + major modules)
Aligned: about, appearance, general, data, memory, projects, subagent, web-search, health, permission, usage, bot overview/detail/onboarding/wechat, providers multi-level, catalog, oauth, connection detail, personalization, password-input, skeleton, route header, expandable rows.
### Shell / panels
Aligned core: app-shell family, chat-message-surface, chat-composer-region, chat-workbar, session-workbar (tabs as Button), browser, terminal, review, inspector, import dialog, command palette, onboarding, mcp-page, side-chat confirm, error-boundary.
### Modules / packages/ui
Aligned: skills-panel, scheduled-task-*, daily-review-panel, module-pages, composer, chat-view (loading now Spinner), prompt rail, quote chip, session sidebar/history/list, search-modal, model/permission pickers, mermaid, toast, tool-activity shell.
## Fixed in this pass
| Area | Change |
|------|--------|
| plan-mode | error → `Banner` |
| quote-companion | error → `Banner`; preparing → `Spinner` |
| task-ledger | error → `Banner` |
| web-search | live error → `Banner`; no results → `EmptyState` |
| memory settings | warning callouts → `Banner`; dead CSS removed |
| daily-review settings | loading → `SettingsSkeletonStack` |
| permission center | error wrap in `SettingsPage` |
| provider oauth | error → `Banner` |
| custom pet | empty → `EmptyState isCompact` |
| artifact preview | FailureCard / Unsupported → `Banner` |
| mcp delete | `variant="destructive"` (no inline color) |
| agent-graph empty | compact EmptyState without mixed tier icon |
| chat-view | `messageLoading` → centered `Spinner` |
## Intentional exceptions (do not “fix” without product decision)
1. **`astryx-chat-reasoning.tsx`** — ejected Astryx lab ChatReasoning; keeps official `role="button"` header until stable peer lands.
2. **Providers multi-level** — catalog/setup/detail are nested routes inside SettingsPage, not separate SettingsSection pages.
3. **Usage analytics layout** — metrics/tabs, not settings rows.
4. **Tool / agent / web-search preview cards** — product transcript content chrome, not generic controls.
5. **DeepResearchProgressPanel** — product progress composition; kit-ify is a dedicated design task.
6. **Quote chip / turn footer CSS** — still product-geometry overrides on Astryx controls; shrink chrome gradually.
7. **Logo 44 / swatch 34 / session-context 40** — decorative or band heights, not control rhythm 28/32/36.
8. **ChatReasoning / markdown density contracts** — documented product overrides.
## Remaining backlog (priority)
### P1 — visual system
- plan-mode / agent-graph plate: avoid fill + border + raw shadow stack; prefer raised ladder or single elevation token.
- plan-mode status washes → semantic `--*-wash` tokens.
- quote companion composer elevation → token.
### P2 — primitives consistency
- browser toolbar → Astryx `Toolbar`.
- workbar launcher shortcut → `Kbd`.
- keyboard-help headings → `Heading`/`Text`.
- web tool result links → Astryx `Link`.
- daily-review metrics → optional `StatTile`.
### P3 — CSS chrome debt
- shrink `.maka-quote-chip-remove` / `.maka-turn-footer-action` / lineage badge overrides.
- retire dead tool-terminal CSS if unused.
- inventory polish false-positives for logo/swatch heights.
## Method
1. Regenerated path inventory (183 files).
2. Pattern scan: raw controls, role=button, hand empties, role=alert.
3. Parallel deep-read audits: settings · shell · packages/ui.
4. Implemented P0/P1 semantic gaps from those audits.
5. Typechecked `@maka/ui` + desktop renderer.