dsh-super-code 0.3.1 → 0.3.3
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/README.md +83 -33
- package/client/index.js +1043 -319
- package/cordis.patch.yml +14 -1
- package/docs/Changelog.md +8 -0
- package/docs/Compatibility.md +52 -0
- package/docs/EvaluationResults.md +2 -2
- package/docs/UsageGuide.md +33 -12
- package/docs/images/agent-tree-preview.png +0 -0
- package/docs/images/agent-tree.png +0 -0
- package/docs/images/preset-settings-preview.png +0 -0
- package/docs/images/preset-settings.png +0 -0
- package/lib/dsh/memory-library.d.ts +9 -4
- package/lib/dsh/memory-library.d.ts.map +1 -1
- package/lib/dsh/memory-library.js +29 -3
- package/lib/dsh/memory-library.js.map +1 -1
- package/lib/dsh/super-code.js +2 -2
- package/lib/dsh/super-code.js.map +1 -1
- package/lib/long-memory.d.ts +18 -0
- package/lib/long-memory.d.ts.map +1 -1
- package/lib/long-memory.js +42 -2
- package/lib/long-memory.js.map +1 -1
- package/package.json +1 -1
- package/presets/super-code/agent.cordis.yml +10 -1
- package/presets/super-code/skills/super-code-frontend/SKILL.md +33 -0
- package/presets/super-code/skills/super-code-frontend/references/browser-validation.md +59 -0
- package/presets/super-code/skills/super-code-frontend/references/interaction-states.md +51 -0
- package/presets/super-code/skills/super-code-frontend/references/visual-design.md +43 -0
package/lib/long-memory.js
CHANGED
|
@@ -11,9 +11,15 @@ export const longMemoryEntrySchema = z.object({
|
|
|
11
11
|
source: z.discriminatedUnion('kind', [
|
|
12
12
|
z.object({ sessionId: z.string().min(1), eventSeq: z.number().int().nonnegative(), kind: z.literal('user'), quote: z.string().min(1).max(4000) }).strict(),
|
|
13
13
|
z.object({ sessionId: z.string().min(1), eventSeq: z.number().int().nonnegative(), kind: z.literal('tool'), callSeq: z.number().int().nonnegative() }).strict(),
|
|
14
|
+
z.object({ sessionId: z.string().min(1), kind: z.literal('manual') }).strict(),
|
|
14
15
|
]),
|
|
15
16
|
sourceVersion: z.string().min(1).max(4000).optional(),
|
|
16
17
|
}).strict().superRefine((entry, ctx) => {
|
|
18
|
+
if (entry.source.kind === 'manual') {
|
|
19
|
+
if (entry.sourceVersion !== undefined)
|
|
20
|
+
ctx.addIssue({ code: 'custom', message: 'Manual memory has no code version' });
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
17
23
|
if (entry.kind === 'constraint' && entry.source.kind !== 'user')
|
|
18
24
|
ctx.addIssue({ code: 'custom', message: 'A constraint requires a user source' });
|
|
19
25
|
if (entry.kind !== 'constraint' && (entry.source.kind !== 'tool' || !entry.sourceVersion)) {
|
|
@@ -46,6 +52,10 @@ export function memoryGlobalNamespace() { return GLOBAL_MEMORY_NAMESPACE; }
|
|
|
46
52
|
function recordKey(workspace, topic) {
|
|
47
53
|
return createHash('sha256').update(`${workspace}\0${topic}`).digest('hex');
|
|
48
54
|
}
|
|
55
|
+
/** Opaque current-content check; never stores a prior entry or a version history. */
|
|
56
|
+
export function memoryEntryToken(entry) {
|
|
57
|
+
return createHash('sha256').update(JSON.stringify(entry)).digest('hex');
|
|
58
|
+
}
|
|
49
59
|
/** A single host-owned writer serializes topic creation and revision checks. */
|
|
50
60
|
export class LongMemoryStore {
|
|
51
61
|
table;
|
|
@@ -88,6 +98,36 @@ export class LongMemoryStore {
|
|
|
88
98
|
return value;
|
|
89
99
|
});
|
|
90
100
|
}
|
|
101
|
+
/** UI changes share the Agent writer queue and compare only the affected entry. */
|
|
102
|
+
edit(workspace, topic, entryId, expected, change) {
|
|
103
|
+
id.parse(topic);
|
|
104
|
+
id.parse(entryId);
|
|
105
|
+
z.string().regex(/^(?:[a-f0-9]{64})?$/).parse(expected);
|
|
106
|
+
const replacement = change.kind === 'save' ? longMemoryEntrySchema.parse(change.entry) : undefined;
|
|
107
|
+
if (replacement && replacement.id !== entryId)
|
|
108
|
+
throw new Error('Memory identity cannot change during editing');
|
|
109
|
+
return this.mutate(async () => {
|
|
110
|
+
const found = this.read(workspace, topic);
|
|
111
|
+
const current = found.kind === 'found' ? found.value : undefined;
|
|
112
|
+
const entry = current?.entries.find(item => item.id === entryId);
|
|
113
|
+
if (expected && !entry)
|
|
114
|
+
return { kind: 'missing' };
|
|
115
|
+
if (entry ? memoryEntryToken(entry) !== expected : expected !== '')
|
|
116
|
+
return { kind: 'conflict' };
|
|
117
|
+
if (change.kind === 'remove' && !entry)
|
|
118
|
+
return { kind: 'missing' };
|
|
119
|
+
if (replacement && ((!current && this.topics(workspace).length >= 200) || (!entry && (current?.entries.length ?? 0) >= 20)))
|
|
120
|
+
return { kind: 'full' };
|
|
121
|
+
const entries = new Map(current?.entries.map(item => [item.id, item]) ?? []);
|
|
122
|
+
if (replacement)
|
|
123
|
+
entries.set(entryId, replacement);
|
|
124
|
+
else
|
|
125
|
+
entries.delete(entryId);
|
|
126
|
+
const value = longMemoryTopicSchema.parse({ workspace, topic, revision: (current?.revision ?? 0) + 1, entries: [...entries.values()] });
|
|
127
|
+
await this.table.put(recordKey(workspace, topic), value);
|
|
128
|
+
return replacement ? { kind: 'saved', entry: replacement } : { kind: 'removed' };
|
|
129
|
+
});
|
|
130
|
+
}
|
|
91
131
|
forget(workspace, topic, expectedRevision, entryId) {
|
|
92
132
|
id.parse(entryId);
|
|
93
133
|
return this.mutate(async () => {
|
|
@@ -108,13 +148,13 @@ export class LongMemoryStore {
|
|
|
108
148
|
export function longMemoryContext(topic, maxBytes = 2048, currentVersion) {
|
|
109
149
|
if (!topic)
|
|
110
150
|
return '';
|
|
111
|
-
const relevant = topic.entries.filter(entry => entry.source.kind
|
|
151
|
+
const relevant = topic.entries.filter(entry => entry.source.kind !== 'tool' || currentVersion === undefined || entry.sourceVersion === currentVersion);
|
|
112
152
|
const entries = relevant.slice(-4).map(({ id, kind, summary, sourceVersion }) => ({ id, kind, summary,
|
|
113
153
|
...(sourceVersion ? { sourceVersion } : {}) }));
|
|
114
154
|
for (;;) {
|
|
115
155
|
const value = JSON.stringify({ topic: topic.topic, revision: topic.revision, entries,
|
|
116
156
|
omitted: relevant.length - entries.length, staleFacts: topic.entries.length - relevant.length,
|
|
117
|
-
basis: 'historical; tool source pairs checked at write time, summaries not semantically verified; verify mutable facts; no permission granted',
|
|
157
|
+
basis: 'historical; manual entries are user-maintained; tool source pairs checked at write time, summaries not semantically verified; verify mutable facts; no permission granted',
|
|
118
158
|
details: { tool: 'super_code_memory', action: 'read' } }).replace(/\{\{/g, '\\u007b\\u007b');
|
|
119
159
|
if (Buffer.byteLength(value, 'utf8') <= maxBytes)
|
|
120
160
|
return value;
|
package/lib/long-memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"long-memory.js","sourceRoot":"","sources":["../src/long-memory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"long-memory.js","sourceRoot":"","sources":["../src/long-memory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
- id: super-code
|
|
3
3
|
name: dsh-super-code/super-code
|
|
4
4
|
config:
|
|
5
|
-
presetVersion: 0.3.
|
|
5
|
+
presetVersion: 0.3.3
|
|
6
6
|
# Reuse the host backend in an agent-local realm, as shipped Harness presets do.
|
|
7
7
|
# The token meter remains host-owned; each agent owns its compaction lifecycle.
|
|
8
8
|
- id: compaction
|
|
@@ -48,6 +48,15 @@
|
|
|
48
48
|
maxDepth: 1
|
|
49
49
|
- id: skill-filesystem
|
|
50
50
|
name: '@deepseek-ai/dsh-skill-filesystem'
|
|
51
|
+
# Keep packaged guidance host-local and separate from project/user roots.
|
|
52
|
+
# A copied directory preset resolves resources relative to its own composition.
|
|
53
|
+
- id: skill-super-code-bundled
|
|
54
|
+
name: '@deepseek-ai/dsh-skill-filesystem'
|
|
55
|
+
config:
|
|
56
|
+
providerName: super-code-bundled
|
|
57
|
+
includeDefaultRoots: false
|
|
58
|
+
watch: false
|
|
59
|
+
bundledSkillDir: !!js "process.getBuiltinModule('node:url').fileURLToPath(new URL('skills/', baseUrl))"
|
|
51
60
|
- id: tool-skill
|
|
52
61
|
name: '@deepseek-ai/dsh-tool-skill'
|
|
53
62
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: super-code-frontend
|
|
3
|
+
description: >-
|
|
4
|
+
Build, refine, and verify web interfaces: visual hierarchy, alignment, ergonomic
|
|
5
|
+
controls, responsive layout, interaction states, accessibility, and browser feedback.
|
|
6
|
+
Use for frontend pages,
|
|
7
|
+
components, dashboards, forms, landing pages, or UI bugs; follow the project's
|
|
8
|
+
actual framework and design system.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Frontend work
|
|
12
|
+
|
|
13
|
+
Deliver a coherent interface that works in its real application. Reuse this skill within the task; read only the references needed for the current decision. Resolve their paths from the resource base returned by the skill tool, not the project's working directory.
|
|
14
|
+
|
|
15
|
+
## Establish the target
|
|
16
|
+
|
|
17
|
+
- Identify the page's audience, primary action, input methods and required states from the request. A modification usually keeps the existing visual language; a new design needs a deliberate direction. Read [visual-design.md](references/visual-design.md) when choosing or repairing appearance, alignment and responsive layout.
|
|
18
|
+
- Inspect the real route, component imports and props, styling/theme tokens, assets and local commands. Follow callers or installed source for uncertain APIs. Do not invent component properties, replace the stack, or install a UI library merely for convenience.
|
|
19
|
+
- Choose the smallest complete slice through the real entry point. Use representative content with long labels, empty values and realistic density. Keep demo data visibly separate from connected behavior; a mock success is not a completed integration.
|
|
20
|
+
|
|
21
|
+
## Build and inspect
|
|
22
|
+
|
|
23
|
+
- Make the primary flow work, then refine its hierarchy and spacing using the rendered result. Use the existing theme and components where they fit. Polish should explain the content and actions, not hide a broken flow behind decoration.
|
|
24
|
+
- Read [interaction-states.md](references/interaction-states.md) for control reach, input effort, predictable feedback, forms, async requests, navigation, dialogs, expandable panels or state restoration. Carry a state change through defaults, events, rendering and cleanup rather than fixing only the visible symptom.
|
|
25
|
+
- Read [browser-validation.md](references/browser-validation.md) for geometry and hit-area checks, browser testing or repeated tool failures. Direct browser access, Playwright and Computer Use are methods for the same testing goal. Reuse the working session and last confirmed stage; choose by available capability and required evidence, without a fixed fallback ladder.
|
|
26
|
+
- Treat usability as part of design: related elements share meaningful alignment; text, focus rings and controls have room; the visible action has a reliable hit area; frequent actions avoid needless travel and precision. Apply these principles within the product's own visual language.
|
|
27
|
+
- Inspect the relevant wide and narrow layouts, actual user actions, and affected loading/empty/error states. For a localized fix, check the affected boundary instead of replaying every unrelated flow after each edit.
|
|
28
|
+
|
|
29
|
+
## Close the loop
|
|
30
|
+
|
|
31
|
+
Tie each defect to an observed state and fix its cause. Recheck the changed behavior and nearby affected contracts. Separate build/test results, DOM assertions, rendered observations and live integration evidence in the delivery. If visual inspection or a backend is unavailable, say exactly what remains unverified; do not describe an unseen page as visually verified.
|
|
32
|
+
|
|
33
|
+
Retain only the continuation information needed for longer work: target, current app/build and browser session, confirmed progress, failed stage/reason, evidence and next check. Use available task state for this run. Propose reusable environment knowledge or skill improvements only after verifying their scope; this skill does not itself persist memory or implement a retry guard.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Browser feedback without restarting the workflow
|
|
2
|
+
|
|
3
|
+
## Select evidence and a working method
|
|
4
|
+
|
|
5
|
+
Identify what the check must prove. Build/type checks detect code-level issues; DOM assertions verify structure and state; a rendered view reveals layout; actual actions reveal behavior. None alone proves all of them. Use the installed, available tools that can produce the needed evidence, following their documented APIs.
|
|
6
|
+
|
|
7
|
+
Direct browser access, Playwright and Computer Use can all serve the same testing objective. Prefer a known working session and appropriate capability over a fixed order of browsers or tools. Automation is useful for repeatable assertions; Computer Use is useful for real native interaction and visual observation. Do not assume any particular browser bridge, automation package or image tool is installed. Do not add dependencies or change host settings merely to follow a preferred method.
|
|
8
|
+
|
|
9
|
+
Confirm the app's real startup command, working directory, ready URL and loaded build. An existing server may be suitable; inspect it before starting another. Verify readiness and observable page state, not just that a process or tab exists. Source edits do not prove that an installed or cached build has updated.
|
|
10
|
+
|
|
11
|
+
## Check geometry and the effort to operate it
|
|
12
|
+
|
|
13
|
+
For an alignment or ergonomic defect, pick the affected content, state, container size and input method. Verify these relationships through the rendered interface:
|
|
14
|
+
|
|
15
|
+
- **Alignment:** compare intended shared edges/baselines across repeated rows. Use DOM rectangles and computed styles to locate the cause, then inspect the visible glyphs and spacing. Fractional coordinates at zoom are not automatically defects; judge the intended relationship rather than demanding integer equality everywhere.
|
|
16
|
+
- **Clearance:** inspect long/localized labels, text enlarged to 200% when applicable, narrow containers and hover/focus/selected/running/error states. Include outlines, overlays and painted effects in the visual check; `getBoundingClientRect()` alone does not measure all of them. Confirm that essential content and focused controls remain unobscured.
|
|
17
|
+
- **Hit area:** measure the actual interactive element and check representative points inside the advertised target, including padding or the far end of an actionable row. Check nearby secondary actions too. A programmatic click or a framework locator click may not establish real pointer geometry; where needed, use coordinate hit testing and an actual pointer/touch action to detect interception. Ensure enlarging one target does not steal another's input.
|
|
18
|
+
- **Stability and reach:** walk through the primary task and repeat its frequent action. Watch for control movement during loading, a menu that closes while moving toward it, unnecessary scrolling, or a toolbar that is visually distant from what it changes. Distinguish an observed problem from a guess about user preference. Responsive emulation can check layout, but does not prove real one-handed comfort.
|
|
19
|
+
- **Alternative input and recovery:** complete the affected flow with keyboard focus visible and without relying on hover. For touch-supported flows, inspect the supported touch behavior. Verify that cancellation, a failed action and its next step preserve the user's context.
|
|
20
|
+
|
|
21
|
+
Use the [target-size criterion](https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html) when assessing Web minimum sizing and exceptions. Numeric checks help locate defects; passing them does not prove the whole interface is usable. Attach geometry assertions to an actual bug or required relationship, not a screenshot's arbitrary pixel coordinates. Verify risky actions with isolated test data or a safe equivalent.
|
|
22
|
+
|
|
23
|
+
## Preserve confirmed progress
|
|
24
|
+
|
|
25
|
+
Track stages only when a failure or long task needs them:
|
|
26
|
+
|
|
27
|
+
`connection → app startup → navigation → target location → action → assertion → evidence capture`
|
|
28
|
+
|
|
29
|
+
Record the last confirmed stage, the failed stage with its actual error, and the smallest changed input that warrants another attempt. Keep a short continuation note when useful:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
Goal: verify filter results and narrow layout
|
|
33
|
+
App/build: current dev server; ready URL confirmed
|
|
34
|
+
Session: existing browser/tab identifier
|
|
35
|
+
Confirmed: page loaded; filter control located
|
|
36
|
+
Failure: assertion saw stale results while request was pending
|
|
37
|
+
Next: wait for the observable completed state; reuse the same page
|
|
38
|
+
Evidence: result/log path and tested viewport
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Use available task state for this note, without requiring a new persistence tool. It is current progress, not a permanent statement that a browser is unusable.
|
|
42
|
+
|
|
43
|
+
## Recover at the failing boundary
|
|
44
|
+
|
|
45
|
+
- Connection unavailable: inspect the actual capability/session or choose another available method. Do not run the same failed connection chain again without a relevant change.
|
|
46
|
+
- Startup fails: inspect process output, command, port and dependency state. Changing browser methods will not repair a server that never started.
|
|
47
|
+
- Navigation fails: inspect the ready URL, response and authentication state. A working browser connection can be retained.
|
|
48
|
+
- Target missing: check route, loading state, frames, accessible name and current DOM before inventing a selector. A cached handle may need reacquisition after remount.
|
|
49
|
+
- Action fails: distinguish disabled/pending, intercepted hit area, focus, stale element and product behavior. Do not replay an action with unknown side effects until its outcome is known.
|
|
50
|
+
- Assertion fails: verify that the intended state is settled, then diagnose a product defect or a faulty expectation. A failed product check is evidence; switching browsers does not turn it into a pass.
|
|
51
|
+
- Capture fails: retain successful actions/assertions and retry capture with a working capability. Missing screenshots do not mean earlier navigation failed.
|
|
52
|
+
|
|
53
|
+
Repeat only with a changed condition or a justified way to observe progress. If no available method can supply the required evidence, finish independent checks and report the precise gap. Re-probe an earlier method when its environment changes or its capability is needed; a historical failure is not a permanent ban. These are workflow instructions, not an enforced loop detector.
|
|
54
|
+
|
|
55
|
+
## Give the next edit precise feedback
|
|
56
|
+
|
|
57
|
+
Record the viewport/container size, route, input/state and expected versus observed result. Use concrete screenshots, DOM values, interaction results and relevant console/network failures. Tie each finding to the tested build. Keep artifacts task-local and avoid credentials or private page content in reports.
|
|
58
|
+
|
|
59
|
+
Recheck the affected flow after the fix. For visual changes, inspect representative wide/narrow layouts and relevant themes/content; for state changes, cross the affected transition. Reuse successful setup while it remains valid. Distinguish verified behavior, simulated cases and unavailable checks in the final delivery.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Interaction and state continuity
|
|
2
|
+
|
|
3
|
+
## Reduce physical and mental effort
|
|
4
|
+
|
|
5
|
+
Start with the task people repeat and the input they actually use. A control should communicate its action, relate visibly to what it affects, and be easy to acquire without careful aiming. Preserve the application's familiar interaction conventions; each invented gesture or inconsistent behavior adds work for the user.
|
|
6
|
+
|
|
7
|
+
- Place contextual actions near their content and keep frequent actions readily reachable. Reduce needless pointer travel, thumb stretching and repeated scrolling, without crowding controls. Thumb reach varies with device size, grip and handedness; do not assume one universal bottom corner. On a narrow screen, a wider primary control can be useful when it fits the reading and action flow.
|
|
8
|
+
- Size the **hit area**, not merely the icon. Around 44 by 44 CSS pixels is a useful comfort starting point for frequent touch actions; it is not a universal Web minimum or a conversion of native platform units. Pointer-oriented dense tools may use smaller controls with sufficient separation. WCAG 2.2 AA target sizing generally requires at least 24 by 24 CSS pixels or a qualifying exception, including its defined spacing alternative. Check the relevant criterion and input context; minimum compliance alone does not establish comfort.
|
|
9
|
+
- Use real control padding or a carefully bounded hit region to enlarge targets. Adjacent targets must remain distinct. If a row looks wholly actionable, its intended row area should respond; unrelated trailing actions need separate controls and hit regions, without nesting buttons or links.
|
|
10
|
+
- Keep repeated actions in stable positions. Do not let a spinner, validation message or changing count move the control under the pointer. Reserve space where practical, and allow longer translated labels to wrap or reflow without becoming tiny.
|
|
11
|
+
- Prefer simple actions for common tasks. Give drag, swipe, hover or precision gestures an appropriate button/keyboard alternative when they are needed for core functionality. Hover-only controls and narrow pointer paths into a submenu need another way to operate them.
|
|
12
|
+
|
|
13
|
+
Group choices around the user's decision and reveal secondary options when needed. Use meaningful labels for unfamiliar actions rather than unexplained icons. Emphasis can distinguish a preferred action while secondary actions remain usable. Separate destructive actions from frequently repeated safe actions; do not make irreversible deletion the casual default.
|
|
14
|
+
|
|
15
|
+
## Trace the user's action through the state
|
|
16
|
+
|
|
17
|
+
List only the states relevant to the flow before editing: initial, pending, success, empty, invalid input and recoverable failure. Decide which are distinct. “No records yet,” “no search matches,” and “could not load” need different explanations and next actions.
|
|
18
|
+
|
|
19
|
+
For async actions, specify the owner of the request, what can be repeated, when a response becomes stale, and what survives navigation or hiding. UI feedback must correspond to the actual operation: show pending work, prevent unintended duplicates, and show success only after the promised boundary succeeds.
|
|
20
|
+
|
|
21
|
+
Keep the user's input on failure. Put a useful error near the affected field/action and provide a recovery path. A failed save should not close the editor or overwrite the draft with old server state. Use inline feedback for local validation; a toast alone is usually insufficient to repair a field.
|
|
22
|
+
|
|
23
|
+
## Keep actions predictable and feedback proportional
|
|
24
|
+
|
|
25
|
+
For direct manipulation, keep the action connected to its object: selection shows which item will change, dragging gives a visible preview, and cancel or undo follows the product's contract. If optimistic rendering is appropriate, reconcile failure and retain the recoverable data; never silently leave a failed change looking committed.
|
|
26
|
+
|
|
27
|
+
Give immediate local acknowledgement of input, then distinguish pending work from completion. Put routine status beside the relevant action or content. Use an interrupting dialog for a decision that actually needs attention, not every ordinary success. Animation can explain a transition, but should not delay the next action or replace a persistent state cue.
|
|
28
|
+
|
|
29
|
+
Keep feedback understandable without relying on color, motion or sound alone. Announce relevant status through accessible semantics without stealing focus for routine updates. A disabled control should have an understandable reason and next step when its unavailability is not obvious. Important errors and recovery actions should remain available long enough to use; an auto-dismiss toast is not their only home.
|
|
30
|
+
|
|
31
|
+
## Choose one source of truth
|
|
32
|
+
|
|
33
|
+
Represent mutually exclusive states directly. Two panels that must never both be expanded generally need one `activePanel` value, not two booleans plus corrective effects. Define what clicking the active header does from the requested behavior, rather than assuming an accordion convention.
|
|
34
|
+
|
|
35
|
+
Separate stored data, editable draft, view/navigation state and transient request state where their lifetimes differ. Derive values instead of keeping redundant copies. Trace a changed state shape through initialization, URL/deep links, persistence, hidden/remounted views and reset behavior. Ensure asynchronous callbacks still address the current owner; replacing a shared state object can detach an editor from its rendered state.
|
|
36
|
+
|
|
37
|
+
For autocomplete, filters or rapid navigation, cancel superseded requests or reject late results using request identity. Release listeners, timers, observers and subscriptions with their owner. A hidden panel and an unmounted panel have different lifetimes; neither automatically means the user intended to abandon a pending save.
|
|
38
|
+
|
|
39
|
+
## Semantics and focus are functional behavior
|
|
40
|
+
|
|
41
|
+
- Use native buttons, links, labels and input controls. Keep navigation as links and actions as buttons; set button types deliberately inside forms.
|
|
42
|
+
- Keyboard operation must reach the primary flow, visible focus and recovery actions. Do not make hover the only way to discover or operate a control. For disclosures, expose expanded state and the controlled region.
|
|
43
|
+
- A dialog needs an accessible name, intentional initial focus, contained keyboard navigation and focus restoration on close. A popover, menu and modal are different patterns; use an existing accessible implementation when available.
|
|
44
|
+
- When hiding content, move focus if its current target disappears. Avoid intercepting an unrelated action inside a clickable header; verify the real nested hit areas.
|
|
45
|
+
- For destructive actions, follow the product's confirmation or undo pattern. Prevent duplicate submissions; retain the context needed to recover from a failed operation.
|
|
46
|
+
|
|
47
|
+
## Verify transitions, not just snapshots
|
|
48
|
+
|
|
49
|
+
A useful check crosses a boundary: empty to loaded, edit to cancel, failure to retry, hidden to restored, pending to completion, old response to rejected stale result. Select transitions affected by the diff and exercise them through the real route/component.
|
|
50
|
+
|
|
51
|
+
Use unit/component tests for deterministic state rules and browser checks for navigation, focus, geometry and real interaction. Force failures through an existing test seam or isolated fixture, not by corrupting the user's data. Separate simulated error handling from a live backend check. Add regressions for actual bugs; do not add tests that merely assert the implementation's strings.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Visual direction and layout
|
|
2
|
+
|
|
3
|
+
## Make the composition explain the product
|
|
4
|
+
|
|
5
|
+
First identify what the visitor should notice, understand and do. A landing page may need one strong proposition and credible proof; an operational dashboard needs comparison, status and fast scanning. Choose hierarchy for that purpose before choosing decoration.
|
|
6
|
+
|
|
7
|
+
For a new interface, state a compact direction: audience, tone, dominant layout, type hierarchy, palette and one distinctive visual idea. Express it in the implementation, not a long design essay. For an existing interface, derive these from adjacent screens, tokens and assets. A request to fix a panel is not a reason to redesign the whole product.
|
|
8
|
+
|
|
9
|
+
Use specific, plausible copy and content. Match number formats, units, labels and empty values to the domain. Fake controls, repeated filler cards and decorative charts without interpretable axes make a page look finished while leaving it unusable. If data is a demonstration, label it and still support the intended interaction.
|
|
10
|
+
|
|
11
|
+
## Hierarchy before effects
|
|
12
|
+
|
|
13
|
+
- Give the primary action a clear place and distinguish secondary actions by emphasis. Several equally loud buttons weaken the decision.
|
|
14
|
+
- Use size, weight, position and whitespace to form a reading order. Do not turn every content group into an elevated card: shared alignment, separators or a plain list often communicates structure more clearly.
|
|
15
|
+
- Keep a small, consistent type and spacing system. Use the project's fonts; add fonts only when justified and authorized. Body text needs a comfortable measure and line height, while dense tools may need compact rows. Test actual long titles rather than tuning only a short placeholder.
|
|
16
|
+
- Color should carry a purpose: action, status, grouping or atmosphere. Check text and controls against their actual backgrounds in each supported theme. For WCAG AA, ordinary text needs 4.5:1 contrast, large text 3:1; essential UI boundaries and indicators generally need 3:1. Do not use color alone to convey failure or selection.
|
|
17
|
+
- Treat imagery, icons and motion as part of the content. Use supplied or available assets and the established icon system. Avoid broken image URLs, misleading placeholder pictures and arbitrary emoji as product icons. Purposeful transitions should show change; respect reduced motion and retain visible state feedback.
|
|
18
|
+
|
|
19
|
+
When matching a reference, compare proportions, alignment, content density, typography and visual weight before chasing a pixel offset. Preserve the reference's intent while adapting to real content and viewport limits. Do not declare visual equivalence based on matching CSS values alone.
|
|
20
|
+
|
|
21
|
+
## Align relationships, not isolated pixels
|
|
22
|
+
|
|
23
|
+
Alignment tells people which items belong together. Establish the relevant shared anchors: a content leading edge, text baseline, column boundary or repeated action position. Indentation should convey actual hierarchy. Labels, values and controls that play the same role should follow the same alignment rule; unrelated elements need not all be centered.
|
|
24
|
+
|
|
25
|
+
- Put repeated rows on a common grid or layout primitive. Use shared gaps and padding instead of independent margins, spaces in text, or per-item translations. If the same role needs repeated offset patches, inspect its parent layout and component variants.
|
|
26
|
+
- Align mixed-size text by baseline where it forms a reading row. An icon's box center may differ from its visible center; correct a demonstrated optical imbalance locally, while preserving its hit area and the surrounding layout rules.
|
|
27
|
+
- Distinguish three boundaries: the box participating in layout, everything visibly painted, and the region that receives input. Focus outlines, shadows, selection rings, animation and expanded controls can exceed the layout box. Leave room for their meaningful states without clipping feedback or moving labels with every state change.
|
|
28
|
+
- Let content and text sizing determine row height where wrapping is legitimate. A fixed height plus longer copy, a different font or larger text often creates the apparent alignment bug. Fix the sizing constraint before shrinking type or hiding information.
|
|
29
|
+
- In diagrams, connectors, labels and nodes need coordinated geometry. Changing the node size without updating link anchors or label clearance creates collisions; test selected and running states as well as the resting geometry.
|
|
30
|
+
|
|
31
|
+
For a reported offset, compare the relevant edges/baselines and computed parent layout in the actual state. Determine whether the cause is padding, line height, flex shrink, grid sizing, overflow, a transform, font loading or an overlay. Use a shared rule to fix a shared relationship; use a small optical correction only when the visible shape warrants it. Intentional asymmetry is valid when it clarifies hierarchy.
|
|
32
|
+
|
|
33
|
+
## Responsive behavior is content behavior
|
|
34
|
+
|
|
35
|
+
Choose breakpoints where the content stops fitting. Let primary content lead when columns collapse, keep important actions reachable, and use intrinsic layout before accumulating fixed widths. A desktop screen squeezed smaller is not a mobile layout.
|
|
36
|
+
|
|
37
|
+
Inspect the actual containing surface: a sidebar, embedded pane or dialog may be narrow inside a large viewport. Flex/grid children often need `min-width: 0` or `minmax(0, 1fr)` to let text wrap. Fix the element causing overflow instead of masking the whole page with `overflow-x: hidden`.
|
|
38
|
+
|
|
39
|
+
Use explicit overflow behavior for dense tables or code; retain headers/context and an obvious scrolling region. Sticky bars must not cover focus targets or the final content row. Account for safe-area insets on edge-to-edge surfaces and the on-screen keyboard when they affect the supported device. Check zoom, longer localized strings, touch targets and theme changes when relevant to the requested surface.
|
|
40
|
+
|
|
41
|
+
## Refine from an observation
|
|
42
|
+
|
|
43
|
+
Describe a concrete defect: “the action is below the fold at this width,” “this label overlaps the selection ring,” or “the empty state reads like an error.” Trace it to layout, state or styling. Change that cause, then inspect the same content/state/viewport again. Wait for fonts, assets and transitions to settle before evaluating a screenshot; a transition frame is not the final palette.
|