@bastani/atomic 0.8.20-0 → 0.8.21-0
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/CHANGELOG.md +12 -0
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/CHANGELOG.md +5 -0
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/CHANGELOG.md +5 -0
- package/dist/builtin/subagents/agents/code-simplifier.md +78 -22
- package/dist/builtin/subagents/agents/debugger.md +4 -3
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/web-access/CHANGELOG.md +5 -0
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +25 -0
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/skills/create-spec/SKILL.md +169 -125
- package/dist/builtin/workflows/skills/impeccable/SKILL.md +89 -80
- package/dist/builtin/workflows/skills/impeccable/agents/impeccable_asset_producer.toml +92 -0
- package/dist/builtin/workflows/skills/impeccable/agents/impeccable_manual_edit_applier.toml +95 -0
- package/dist/builtin/workflows/skills/impeccable/agents/openai.yaml +4 -0
- package/dist/builtin/workflows/skills/impeccable/reference/adapt.md +122 -1
- package/dist/builtin/workflows/skills/impeccable/reference/animate.md +38 -12
- package/dist/builtin/workflows/skills/impeccable/reference/audit.md +5 -5
- package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +7 -7
- package/dist/builtin/workflows/skills/impeccable/reference/brand.md +4 -14
- package/dist/builtin/workflows/skills/impeccable/reference/clarify.md +115 -1
- package/dist/builtin/workflows/skills/impeccable/reference/codex.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/colorize.md +109 -6
- package/dist/builtin/workflows/skills/impeccable/reference/craft.md +7 -7
- package/dist/builtin/workflows/skills/impeccable/reference/critique.md +623 -94
- package/dist/builtin/workflows/skills/impeccable/reference/delight.md +2 -2
- package/dist/builtin/workflows/skills/impeccable/reference/distill.md +2 -2
- package/dist/builtin/workflows/skills/impeccable/reference/document.md +16 -14
- package/dist/builtin/workflows/skills/impeccable/reference/extract.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/harden.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/init.md +172 -0
- package/dist/builtin/workflows/skills/impeccable/reference/interaction-design.md +0 -6
- package/dist/builtin/workflows/skills/impeccable/reference/layout.md +33 -13
- package/dist/builtin/workflows/skills/impeccable/reference/live.md +96 -19
- package/dist/builtin/workflows/skills/impeccable/reference/onboard.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/optimize.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/overdrive.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/polish.md +3 -4
- package/dist/builtin/workflows/skills/impeccable/reference/product.md +1 -3
- package/dist/builtin/workflows/skills/impeccable/reference/quieter.md +2 -2
- package/dist/builtin/workflows/skills/impeccable/reference/shape.md +5 -5
- package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +158 -3
- package/dist/builtin/workflows/skills/impeccable/scripts/cleanup-deprecated.mjs +1 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/command-metadata.json +2 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +225 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +266 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/critique-storage.mjs +17 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/design-parser.mjs +16 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/detect.mjs +21 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +1725 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +244 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +4543 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns.mjs +43 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +252 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +535 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +986 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +208 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/findings.mjs +12 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/node/file-system.mjs +198 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +419 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +2316 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/constants.mjs +101 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/impeccable-paths.mjs +17 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/is-generated.mjs +2 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +139 -96
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +4491 -526
- package/dist/builtin/workflows/skills/impeccable/scripts/live-commit-manual-edits.mjs +1241 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-event-validation.mjs +136 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-inject.mjs +22 -9
- package/dist/builtin/workflows/skills/impeccable/scripts/live-insert-ui.mjs +458 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-insert.mjs +232 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +363 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edits-buffer.mjs +152 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-poll.mjs +288 -110
- package/dist/builtin/workflows/skills/impeccable/scripts/live-resume.mjs +47 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +1443 -100
- package/dist/builtin/workflows/skills/impeccable/scripts/live-session-store.mjs +17 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-status.mjs +17 -3
- package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +216 -6
- package/dist/builtin/workflows/skills/impeccable/scripts/live.mjs +2 -3
- package/dist/builtin/workflows/skills/impeccable/scripts/palette.mjs +633 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/pin.mjs +1 -1
- package/dist/builtin/workflows/src/extension/index.ts +67 -3
- package/dist/builtin/workflows/src/extension/render-result.ts +26 -1
- package/dist/builtin/workflows/src/runs/foreground/executor.ts +227 -3
- package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +94 -7
- package/dist/builtin/workflows/src/shared/stage-prompt.ts +326 -0
- package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +62 -7
- package/dist/builtin/workflows/src/shared/store-types.ts +43 -0
- package/dist/builtin/workflows/src/shared/store.ts +37 -0
- package/dist/builtin/workflows/src/tui/chat-surface-message.ts +22 -4
- package/dist/builtin/workflows/src/tui/graph-view.ts +47 -0
- package/dist/builtin/workflows/src/tui/overlay-adapter.ts +43 -1
- package/dist/builtin/workflows/src/tui/run-detail.ts +10 -4
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +117 -15
- package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +9 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +2 -5
- package/dist/core/skills.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +11 -29
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/docs/quickstart.md +1 -2
- package/package.json +4 -4
- package/dist/builtin/workflows/skills/impeccable/reference/cognitive-load.md +0 -106
- package/dist/builtin/workflows/skills/impeccable/reference/color-and-contrast.md +0 -105
- package/dist/builtin/workflows/skills/impeccable/reference/heuristics-scoring.md +0 -234
- package/dist/builtin/workflows/skills/impeccable/reference/motion-design.md +0 -109
- package/dist/builtin/workflows/skills/impeccable/reference/personas.md +0 -179
- package/dist/builtin/workflows/skills/impeccable/reference/responsive-design.md +0 -114
- package/dist/builtin/workflows/skills/impeccable/reference/spatial-design.md +0 -100
- package/dist/builtin/workflows/skills/impeccable/reference/teach.md +0 -156
- package/dist/builtin/workflows/skills/impeccable/reference/typography.md +0 -159
- package/dist/builtin/workflows/skills/impeccable/reference/ux-writing.md +0 -107
- package/dist/builtin/workflows/skills/impeccable/scripts/load-context.mjs +0 -141
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Core session management\n\n// Config paths\nexport {\n\tAPP_NAME,\n\tAPP_TITLE,\n\tCONFIG_DIR_NAME,\n\tCONFIG_DIR_NAMES,\n\tLEGACY_CONFIG_DIR_NAME,\n\tLEGACY_ENV_PREFIX,\n\tgetAgentConfigPaths,\n\tgetAgentDir,\n\tgetAgentDirs,\n\tgetLegacyAgentDir,\n\tgetProjectConfigDirs,\n\tgetProjectConfigPaths,\n\tgetEnvNames,\n\tgetEnvValue,\n\tWORKFLOW_STAGE_SUBAGENT_GUARD_ENV,\n\tisBunBinary,\n\tgetUserConfigDirs,\n\tgetUserConfigPaths,\n\thasEnvValue,\n\tPACKAGE_NAME,\n\tsetEnvValue,\n\tVERSION,\n} from \"./config.ts\";\nexport { type BashResult, executeBashWithOperations } from \"./core/bash-executor.ts\";\nexport {\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype SessionStats,\n} from \"./core/agent-session.ts\";\n// Auth and model registry\nexport {\n\ttype ApiKeyCredential,\n\ttype AuthCredential,\n\ttype AuthStatus,\n\tAuthStorage,\n\ttype AuthStorageBackend,\n\tFileAuthStorageBackend,\n\tInMemoryAuthStorageBackend,\n\ttype OAuthCredential,\n} from \"./core/auth-storage.ts\";\n// Compaction\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\ttype CompactionResult,\n\ttype CutPointResult,\n\tcalculateContextTokens,\n\tcollectEntriesForBranchSummary,\n\tcompact,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateTokens,\n\ttype FileOperations,\n\tfindCutPoint,\n\tfindTurnStartIndex,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tgenerateSummary,\n\tgetLastAssistantUsage,\n\tprepareBranchEntries,\n\tserializeConversation,\n\tshouldCompact,\n} from \"./core/compaction/index.ts\";\nexport { createEventBus, type EventBus, type EventBusController } from \"./core/event-bus.ts\";\n// Extension system\nexport type {\n\tAgentEndEvent,\n\tAgentStartEvent,\n\tAgentToolResult,\n\tAgentToolUpdateCallback,\n\tAppKeybinding,\n\tAutocompleteProviderFactory,\n\tBashToolCallEvent,\n\tBeforeAgentStartEvent,\n\tBeforeAgentStartEventResult,\n\tBeforeProviderRequestEvent,\n\tBeforeProviderRequestEventResult,\n\tBuildSystemPromptOptions,\n\tCompactOptions,\n\tContextEvent,\n\tContextUsage,\n\tCustomToolCallEvent,\n\tEditToolCallEvent,\n\tExecOptions,\n\tExecResult,\n\tExtension,\n\tExtensionActions,\n\tExtensionAPI,\n\tExtensionCommandContext,\n\tExtensionCommandContextActions,\n\tExtensionContext,\n\tExtensionContextActions,\n\tWorkflowStageOrchestrationContext,\n\tExtensionError,\n\tExtensionEvent,\n\tExtensionFactory,\n\tExtensionFlag,\n\tExtensionHandler,\n\tExtensionRuntime,\n\tExtensionShortcut,\n\tExtensionUIContext,\n\tExtensionUIDialogOptions,\n\tExtensionWidgetOptions,\n\tFindToolCallEvent,\n\tGrepToolCallEvent,\n\tInputEvent,\n\tInputEventResult,\n\tInputSource,\n\tKeybindingsManager,\n\tLoadExtensionsResult,\n\tLsToolCallEvent,\n\tMessageRenderer,\n\tMessageRenderOptions,\n\tOrchestrationContext,\n\tProviderConfig,\n\tProviderModelConfig,\n\tReadToolCallEvent,\n\tRegisteredCommand,\n\tRegisteredTool,\n\tResolvedCommand,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeForkEvent,\n\tSessionBeforeSwitchEvent,\n\tSessionBeforeTreeEvent,\n\tSessionCompactEvent,\n\tSessionShutdownEvent,\n\tSessionStartEvent,\n\tSessionTreeEvent,\n\tSlashCommandInfo,\n\tSlashCommandSource,\n\tSourceInfo,\n\tTerminalInputHandler,\n\tToolCallEvent,\n\tToolCallEventResult,\n\tToolDefinition,\n\tToolExecutionMode,\n\tToolInfo,\n\tToolRenderResultOptions,\n\tToolResultEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n\tUserBashEvent,\n\tUserBashEventResult,\n\tWidgetPlacement,\n\tWorkingIndicatorOptions,\n\tWriteToolCallEvent,\n} from \"./core/extensions/index.ts\";\nexport {\n\tcreateExtensionRuntime,\n\tdefineTool,\n\tdiscoverAndLoadExtensions,\n\tExtensionRunner,\n\tisBashToolResult,\n\tisEditToolResult,\n\tisFindToolResult,\n\tisGrepToolResult,\n\tisLsToolResult,\n\tisReadToolResult,\n\tisToolCallEventType,\n\tisWriteToolResult,\n\twrapRegisteredTool,\n\twrapRegisteredTools,\n} from \"./core/extensions/index.ts\";\n// Footer data provider (git branch + extension statuses - data not otherwise available to extensions)\nexport type { ReadonlyFooterDataProvider } from \"./core/footer-data-provider.ts\";\nexport { convertToLlm } from \"./core/messages.ts\";\nexport { ModelRegistry } from \"./core/model-registry.ts\";\nexport type {\n\tPackageManager,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./core/package-manager.ts\";\nexport { getBuiltinPackagePaths } from \"./core/builtin-packages.ts\";\nexport { DefaultPackageManager } from \"./core/package-manager.ts\";\nexport type { ResourceCollision, ResourceDiagnostic, ResourceLoader } from \"./core/resource-loader.ts\";\nexport { DefaultResourceLoader, loadProjectContextFiles } from \"./core/resource-loader.ts\";\n// SDK for programmatic usage\nexport {\n\tAgentSessionRuntime,\n\ttype AgentSessionRuntimeDiagnostic,\n\ttype AgentSessionServices,\n\ttype CreateAgentSessionFromServicesOptions,\n\ttype CreateAgentSessionOptions,\n\ttype CreateAgentSessionResult,\n\ttype CreateAgentSessionRuntimeFactory,\n\ttype CreateAgentSessionRuntimeResult,\n\ttype CreateAgentSessionServicesOptions,\n\t// Factory\n\tcreateAgentSession,\n\tcreateAgentSessionFromServices,\n\tcreateAgentSessionRuntime,\n\tcreateAgentSessionServices,\n\tcreateBashTool,\n\t// Tool factories (for custom cwd)\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\ttype PromptTemplate,\n} from \"./core/sdk.ts\";\nexport {\n\ttype BranchSummaryEntry,\n\tbuildSessionContext,\n\ttype CompactionEntry,\n\tCURRENT_SESSION_VERSION,\n\ttype CustomEntry,\n\ttype CustomMessageEntry,\n\ttype FileEntry,\n\tgetLatestCompactionEntry,\n\ttype ModelChangeEntry,\n\tmigrateSessionEntries,\n\ttype NewSessionOptions,\n\tparseSessionEntries,\n\ttype SessionContext,\n\ttype SessionEntry,\n\ttype SessionEntryBase,\n\ttype SessionHeader,\n\ttype SessionInfo,\n\ttype SessionInfoEntry,\n\tSessionManager,\n\ttype SessionMessageEntry,\n\ttype ThinkingLevelChangeEntry,\n} from \"./core/session-manager.ts\";\nexport {\n\ttype CompactionSettings,\n\ttype ImageSettings,\n\ttype PackageSource,\n\ttype RetrySettings,\n\tSettingsManager,\n} from \"./core/settings-manager.ts\";\n// Skills\nexport {\n\tformatSkillsForPrompt,\n\ttype LoadSkillsFromDirOptions,\n\ttype LoadSkillsResult,\n\tloadSkills,\n\tloadSkillsFromDir,\n\ttype Skill,\n\ttype SkillFrontmatter,\n} from \"./core/skills.ts\";\nexport { createSyntheticSourceInfo } from \"./core/source-info.ts\";\n// Tools\nexport {\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tcreateBashToolDefinition,\n\tcreateEditToolDefinition,\n\tcreateFindToolDefinition,\n\tcreateGrepToolDefinition,\n\tcreateLocalBashOperations,\n\tcreateLsToolDefinition,\n\tcreateReadToolDefinition,\n\tcreateWriteToolDefinition,\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tformatSize,\n\ttype GrepOperations,\n\ttype GrepToolDetails,\n\ttype GrepToolInput,\n\ttype GrepToolOptions,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\ttype ToolsOptions,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twithFileMutationQueue,\n} from \"./core/tools/index.ts\";\n// Main entry point\nexport { type MainOptions, main } from \"./main.ts\";\n// Run modes for programmatic SDK usage\nexport { pickWhimsicalWorkingMessage } from \"./modes/interactive/whimsical-messages.ts\";\nexport {\n\tInteractiveMode,\n\ttype InteractiveModeOptions,\n\ttype ModelInfo,\n\ttype PrintModeOptions,\n\tRpcClient,\n\ttype RpcClientOptions,\n\ttype RpcCommand,\n\ttype RpcEventListener,\n\ttype RpcResponse,\n\ttype RpcSessionState,\n\trunPrintMode,\n\trunRpcMode,\n} from \"./modes/index.ts\";\n// UI components for extensions\nexport {\n\tArminComponent,\n\tAssistantMessageComponent,\n\tBashExecutionComponent,\n\tBorderedLoader,\n\tchatEntriesFromAgentMessages,\n\t// Internal host seam for bundled workflow stage chat; not yet a stable extension API.\n\tChatSessionHost,\n\ttype ChatSessionHostBashRequest,\n\ttype ChatSessionHostCommands,\n\ttype ChatSessionHostEntry,\n\ttype ChatSessionHostOpts,\n\ttype ChatSessionHostStyle,\n\tChatTranscriptComponent,\n\tLiveChatEntriesController,\n\trenderChatMessageEntry,\n\ttype ChatMessageEntry,\n\ttype ChatMessageRenderOptions,\n\tScrollableChatTranscriptComponent,\n\tScrollableComponentViewport,\n\ttype ChatTranscriptEntryLike,\n\ttype ChatTranscriptRenderer,\n\ttype ChatTranscriptRole,\n\tBranchSummaryMessageComponent,\n\tCompactionSummaryMessageComponent,\n\tCustomEditor,\n\tCustomMessageComponent,\n\tDynamicBorder,\n\tExtensionEditorComponent,\n\tExtensionInputComponent,\n\tExtensionSelectorComponent,\n\tFooterComponent,\n\tUsageMeterComponent,\n\tkeyHint,\n\tkeyText,\n\tLoginDialogComponent,\n\tModelSelectorComponent,\n\tOAuthSelectorComponent,\n\ttype RenderDiffOptions,\n\trawKeyHint,\n\trenderDiff,\n\tSessionSelectorComponent,\n\ttype SettingsCallbacks,\n\ttype SettingsConfig,\n\tSettingsSelectorComponent,\n\tShowImagesSelectorComponent,\n\tSkillInvocationMessageComponent,\n\tThemeSelectorComponent,\n\tThinkingSelectorComponent,\n\tToolExecutionComponent,\n\ttype ToolExecutionOptions,\n\tTreeSelectorComponent,\n\ttruncateToVisualLines,\n\tUserMessageComponent,\n\tUserMessageSelectorComponent,\n\tWorkingStatusComponent,\n\ttype WorkingStatusComponentOptions,\n\ttype VisualTruncateResult,\n} from \"./modes/interactive/components/index.ts\";\n// Theme utilities for custom tools and extensions\nexport {\n\tgetLanguageFromPath,\n\tgetMarkdownTheme,\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\thighlightCode,\n\tinitTheme,\n\tTheme,\n\ttype ThemeColor,\n} from \"./modes/interactive/theme/theme.ts\";\n// Clipboard utilities\nexport { copyToClipboard } from \"./utils/clipboard.ts\";\nexport { parseFrontmatter, stripFrontmatter } from \"./utils/frontmatter.ts\";\nexport { formatDimensionNote, type ResizedImage, resizeImage } from \"./utils/image-resize.ts\";\n// Shell utilities\nexport { getShellConfig } from \"./utils/shell.ts\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Core session management\n\n// Config paths\nexport {\n\tAPP_NAME,\n\tAPP_TITLE,\n\tCONFIG_DIR_NAME,\n\tCONFIG_DIR_NAMES,\n\tLEGACY_CONFIG_DIR_NAME,\n\tLEGACY_ENV_PREFIX,\n\tgetAgentConfigPaths,\n\tgetAgentDir,\n\tgetAgentDirs,\n\tgetLegacyAgentDir,\n\tgetProjectConfigDirs,\n\tgetProjectConfigPaths,\n\tgetEnvNames,\n\tgetEnvValue,\n\tWORKFLOW_STAGE_SUBAGENT_GUARD_ENV,\n\tisBunBinary,\n\tgetUserConfigDirs,\n\tgetUserConfigPaths,\n\thasEnvValue,\n\tPACKAGE_NAME,\n\tsetEnvValue,\n\tVERSION,\n} from \"./config.ts\";\nexport { type BashResult, executeBashWithOperations } from \"./core/bash-executor.ts\";\nexport {\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype SessionStats,\n} from \"./core/agent-session.ts\";\n// Auth and model registry\nexport {\n\ttype ApiKeyCredential,\n\ttype AuthCredential,\n\ttype AuthStatus,\n\tAuthStorage,\n\ttype AuthStorageBackend,\n\tFileAuthStorageBackend,\n\tInMemoryAuthStorageBackend,\n\ttype OAuthCredential,\n} from \"./core/auth-storage.ts\";\n// Compaction\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\ttype CompactionResult,\n\ttype CutPointResult,\n\tcalculateContextTokens,\n\tcollectEntriesForBranchSummary,\n\tcompact,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateTokens,\n\ttype FileOperations,\n\tfindCutPoint,\n\tfindTurnStartIndex,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tgenerateSummary,\n\tgetLastAssistantUsage,\n\tprepareBranchEntries,\n\tserializeConversation,\n\tshouldCompact,\n} from \"./core/compaction/index.ts\";\nexport { createEventBus, type EventBus, type EventBusController } from \"./core/event-bus.ts\";\n// Extension system\nexport type {\n\tAgentEndEvent,\n\tAgentStartEvent,\n\tAgentToolResult,\n\tAgentToolUpdateCallback,\n\tAppKeybinding,\n\tAutocompleteProviderFactory,\n\tBashToolCallEvent,\n\tBeforeAgentStartEvent,\n\tBeforeAgentStartEventResult,\n\tBeforeProviderRequestEvent,\n\tBeforeProviderRequestEventResult,\n\tBuildSystemPromptOptions,\n\tCompactOptions,\n\tContextEvent,\n\tContextUsage,\n\tCustomToolCallEvent,\n\tEditToolCallEvent,\n\tExecOptions,\n\tExecResult,\n\tExtension,\n\tExtensionActions,\n\tExtensionAPI,\n\tExtensionCommandContext,\n\tExtensionCommandContextActions,\n\tExtensionContext,\n\tExtensionContextActions,\n\tWorkflowStageOrchestrationContext,\n\tExtensionError,\n\tExtensionEvent,\n\tExtensionFactory,\n\tExtensionFlag,\n\tExtensionHandler,\n\tExtensionRuntime,\n\tExtensionShortcut,\n\tExtensionUIContext,\n\tExtensionUIDialogOptions,\n\tExtensionWidgetOptions,\n\tFindToolCallEvent,\n\tGrepToolCallEvent,\n\tInputEvent,\n\tInputEventResult,\n\tInputSource,\n\tKeybindingsManager,\n\tLoadExtensionsResult,\n\tLsToolCallEvent,\n\tMessageRenderer,\n\tMessageRenderOptions,\n\tOrchestrationContext,\n\tProviderConfig,\n\tProviderModelConfig,\n\tReadToolCallEvent,\n\tRegisteredCommand,\n\tRegisteredTool,\n\tResolvedCommand,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeForkEvent,\n\tSessionBeforeSwitchEvent,\n\tSessionBeforeTreeEvent,\n\tSessionCompactEvent,\n\tSessionShutdownEvent,\n\tSessionStartEvent,\n\tSessionTreeEvent,\n\tSlashCommandInfo,\n\tSlashCommandSource,\n\tSourceInfo,\n\tTerminalInputHandler,\n\tToolCallEvent,\n\tToolCallEventResult,\n\tToolDefinition,\n\tToolExecutionMode,\n\tToolInfo,\n\tToolRenderResultOptions,\n\tToolResultEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n\tUserBashEvent,\n\tUserBashEventResult,\n\tWidgetPlacement,\n\tWorkingIndicatorOptions,\n\tWriteToolCallEvent,\n} from \"./core/extensions/index.ts\";\nexport {\n\tcreateExtensionRuntime,\n\tdefineTool,\n\tdiscoverAndLoadExtensions,\n\tExtensionRunner,\n\tisBashToolResult,\n\tisEditToolResult,\n\tisFindToolResult,\n\tisGrepToolResult,\n\tisLsToolResult,\n\tisReadToolResult,\n\tisToolCallEventType,\n\tisWriteToolResult,\n\twrapRegisteredTool,\n\twrapRegisteredTools,\n} from \"./core/extensions/index.ts\";\n// Builtin tool definitions reusable by first-party extensions (e.g. workflows\n// invoking the structured ask_user_question UI deterministically).\nexport { createAskUserQuestionToolDefinition } from \"./core/tools/index.ts\";\n// Footer data provider (git branch + extension statuses - data not otherwise available to extensions)\nexport type { ReadonlyFooterDataProvider } from \"./core/footer-data-provider.ts\";\nexport { convertToLlm } from \"./core/messages.ts\";\nexport { ModelRegistry } from \"./core/model-registry.ts\";\nexport type {\n\tPackageManager,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./core/package-manager.ts\";\nexport { getBuiltinPackagePaths } from \"./core/builtin-packages.ts\";\nexport { DefaultPackageManager } from \"./core/package-manager.ts\";\nexport type { ResourceCollision, ResourceDiagnostic, ResourceLoader } from \"./core/resource-loader.ts\";\nexport { DefaultResourceLoader, loadProjectContextFiles } from \"./core/resource-loader.ts\";\n// SDK for programmatic usage\nexport {\n\tAgentSessionRuntime,\n\ttype AgentSessionRuntimeDiagnostic,\n\ttype AgentSessionServices,\n\ttype CreateAgentSessionFromServicesOptions,\n\ttype CreateAgentSessionOptions,\n\ttype CreateAgentSessionResult,\n\ttype CreateAgentSessionRuntimeFactory,\n\ttype CreateAgentSessionRuntimeResult,\n\ttype CreateAgentSessionServicesOptions,\n\t// Factory\n\tcreateAgentSession,\n\tcreateAgentSessionFromServices,\n\tcreateAgentSessionRuntime,\n\tcreateAgentSessionServices,\n\tcreateBashTool,\n\t// Tool factories (for custom cwd)\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\ttype PromptTemplate,\n} from \"./core/sdk.ts\";\nexport {\n\ttype BranchSummaryEntry,\n\tbuildSessionContext,\n\ttype CompactionEntry,\n\tCURRENT_SESSION_VERSION,\n\ttype CustomEntry,\n\ttype CustomMessageEntry,\n\ttype FileEntry,\n\tgetLatestCompactionEntry,\n\ttype ModelChangeEntry,\n\tmigrateSessionEntries,\n\ttype NewSessionOptions,\n\tparseSessionEntries,\n\ttype SessionContext,\n\ttype SessionEntry,\n\ttype SessionEntryBase,\n\ttype SessionHeader,\n\ttype SessionInfo,\n\ttype SessionInfoEntry,\n\tSessionManager,\n\ttype SessionMessageEntry,\n\ttype ThinkingLevelChangeEntry,\n} from \"./core/session-manager.ts\";\nexport {\n\ttype CompactionSettings,\n\ttype ImageSettings,\n\ttype PackageSource,\n\ttype RetrySettings,\n\tSettingsManager,\n} from \"./core/settings-manager.ts\";\n// Skills\nexport {\n\tformatSkillsForPrompt,\n\ttype LoadSkillsFromDirOptions,\n\ttype LoadSkillsResult,\n\tloadSkills,\n\tloadSkillsFromDir,\n\ttype Skill,\n\ttype SkillFrontmatter,\n} from \"./core/skills.ts\";\nexport { createSyntheticSourceInfo } from \"./core/source-info.ts\";\n// Tools\nexport {\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tcreateBashToolDefinition,\n\tcreateEditToolDefinition,\n\tcreateFindToolDefinition,\n\tcreateGrepToolDefinition,\n\tcreateLocalBashOperations,\n\tcreateLsToolDefinition,\n\tcreateReadToolDefinition,\n\tcreateWriteToolDefinition,\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tformatSize,\n\ttype GrepOperations,\n\ttype GrepToolDetails,\n\ttype GrepToolInput,\n\ttype GrepToolOptions,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\ttype ToolsOptions,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twithFileMutationQueue,\n} from \"./core/tools/index.ts\";\n// Main entry point\nexport { type MainOptions, main } from \"./main.ts\";\n// Run modes for programmatic SDK usage\nexport { pickWhimsicalWorkingMessage } from \"./modes/interactive/whimsical-messages.ts\";\nexport {\n\tInteractiveMode,\n\ttype InteractiveModeOptions,\n\ttype ModelInfo,\n\ttype PrintModeOptions,\n\tRpcClient,\n\ttype RpcClientOptions,\n\ttype RpcCommand,\n\ttype RpcEventListener,\n\ttype RpcResponse,\n\ttype RpcSessionState,\n\trunPrintMode,\n\trunRpcMode,\n} from \"./modes/index.ts\";\n// UI components for extensions\nexport {\n\tArminComponent,\n\tAssistantMessageComponent,\n\tBashExecutionComponent,\n\tBorderedLoader,\n\tchatEntriesFromAgentMessages,\n\t// Internal host seam for bundled workflow stage chat; not yet a stable extension API.\n\tChatSessionHost,\n\ttype ChatSessionHostBashRequest,\n\ttype ChatSessionHostCommands,\n\ttype ChatSessionHostEntry,\n\ttype ChatSessionHostOpts,\n\ttype ChatSessionHostStyle,\n\tChatTranscriptComponent,\n\tLiveChatEntriesController,\n\trenderChatMessageEntry,\n\ttype ChatMessageEntry,\n\ttype ChatMessageRenderOptions,\n\tScrollableChatTranscriptComponent,\n\tScrollableComponentViewport,\n\ttype ChatTranscriptEntryLike,\n\ttype ChatTranscriptRenderer,\n\ttype ChatTranscriptRole,\n\tBranchSummaryMessageComponent,\n\tCompactionSummaryMessageComponent,\n\tCustomEditor,\n\tCustomMessageComponent,\n\tDynamicBorder,\n\tExtensionEditorComponent,\n\tExtensionInputComponent,\n\tExtensionSelectorComponent,\n\tFooterComponent,\n\tUsageMeterComponent,\n\tkeyHint,\n\tkeyText,\n\tLoginDialogComponent,\n\tModelSelectorComponent,\n\tOAuthSelectorComponent,\n\ttype RenderDiffOptions,\n\trawKeyHint,\n\trenderDiff,\n\tSessionSelectorComponent,\n\ttype SettingsCallbacks,\n\ttype SettingsConfig,\n\tSettingsSelectorComponent,\n\tShowImagesSelectorComponent,\n\tSkillInvocationMessageComponent,\n\tThemeSelectorComponent,\n\tThinkingSelectorComponent,\n\tToolExecutionComponent,\n\ttype ToolExecutionOptions,\n\tTreeSelectorComponent,\n\ttruncateToVisualLines,\n\tUserMessageComponent,\n\tUserMessageSelectorComponent,\n\tWorkingStatusComponent,\n\ttype WorkingStatusComponentOptions,\n\ttype VisualTruncateResult,\n} from \"./modes/interactive/components/index.ts\";\n// Theme utilities for custom tools and extensions\nexport {\n\tgetLanguageFromPath,\n\tgetMarkdownTheme,\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\thighlightCode,\n\tinitTheme,\n\tTheme,\n\ttype ThemeColor,\n} from \"./modes/interactive/theme/theme.ts\";\n// Clipboard utilities\nexport { copyToClipboard } from \"./utils/clipboard.ts\";\nexport { parseFrontmatter, stripFrontmatter } from \"./utils/frontmatter.ts\";\nexport { formatDimensionNote, type ResizedImage, resizeImage } from \"./utils/image-resize.ts\";\n// Shell utilities\nexport { getShellConfig } from \"./utils/shell.ts\";\n"]}
|
package/docs/quickstart.md
CHANGED
|
@@ -6,8 +6,7 @@ This page gets you from install to a useful first Atomic session.
|
|
|
6
6
|
|
|
7
7
|
- **Node.js 24 LTS or newer** — Atomic requires the latest Node LTS runtime. Check with `node --version`.
|
|
8
8
|
- **A package manager** — use npm (included with Node), pnpm, Yarn, or Bun. Use Bun 1.3.14+ for Bun installs or workflow-authoring examples.
|
|
9
|
-
- **Model-provider access** —
|
|
10
|
-
- **A compatible terminal** — for the best TUI experience, use a terminal with Kitty keyboard protocol support. See [Terminal setup](/terminal-setup). On Windows, use Git Bash or WSL.
|
|
9
|
+
- **Model-provider access** — Use `/login` after startup. Supports provider subscriptions and APIs.
|
|
11
10
|
|
|
12
11
|
## Install
|
|
13
12
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/atomic",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.21-0",
|
|
4
4
|
"description": "Atomic coding agent CLI with read, bash, edit, write tools and session management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"atomicConfig": {
|
|
@@ -48,9 +48,9 @@
|
|
|
48
48
|
"prepublishOnly": "bun run clean && bun run build"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@earendil-works/pi-agent-core": "^0.
|
|
52
|
-
"@earendil-works/pi-ai": "^0.
|
|
53
|
-
"@earendil-works/pi-tui": "^0.
|
|
51
|
+
"@earendil-works/pi-agent-core": "^0.78.0",
|
|
52
|
+
"@earendil-works/pi-ai": "^0.78.0",
|
|
53
|
+
"@earendil-works/pi-tui": "^0.78.0",
|
|
54
54
|
"@modelcontextprotocol/ext-apps": "^1.7.2",
|
|
55
55
|
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
56
56
|
"@mozilla/readability": "^0.6.0",
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
# Cognitive Load Assessment
|
|
2
|
-
|
|
3
|
-
Cognitive load is the total mental effort required to use an interface. Overloaded users make mistakes, get frustrated, and leave. This reference helps identify and fix cognitive overload.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Three Types of Cognitive Load
|
|
8
|
-
|
|
9
|
-
### Intrinsic Load: The Task Itself
|
|
10
|
-
Complexity inherent to what the user is trying to do. You can't eliminate this, but you can structure it.
|
|
11
|
-
|
|
12
|
-
**Manage it by**:
|
|
13
|
-
- Breaking complex tasks into discrete steps
|
|
14
|
-
- Providing scaffolding (templates, defaults, examples)
|
|
15
|
-
- Progressive disclosure: show what's needed now, hide the rest
|
|
16
|
-
- Grouping related decisions together
|
|
17
|
-
|
|
18
|
-
### Extraneous Load: Bad Design
|
|
19
|
-
Mental effort caused by poor design choices. **Eliminate this ruthlessly.** It's pure waste.
|
|
20
|
-
|
|
21
|
-
**Common sources**:
|
|
22
|
-
- Confusing navigation that requires mental mapping
|
|
23
|
-
- Unclear labels that force users to guess meaning
|
|
24
|
-
- Visual clutter competing for attention
|
|
25
|
-
- Inconsistent patterns that prevent learning
|
|
26
|
-
- Unnecessary steps between user intent and result
|
|
27
|
-
|
|
28
|
-
### Germane Load: Learning Effort
|
|
29
|
-
Mental effort spent building understanding. This is *good* cognitive load; it leads to mastery.
|
|
30
|
-
|
|
31
|
-
**Support it by**:
|
|
32
|
-
- Progressive disclosure that reveals complexity gradually
|
|
33
|
-
- Consistent patterns that reward learning
|
|
34
|
-
- Feedback that confirms correct understanding
|
|
35
|
-
- Onboarding that teaches through action, not walls of text
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Cognitive Load Checklist
|
|
40
|
-
|
|
41
|
-
Evaluate the interface against these 8 items:
|
|
42
|
-
|
|
43
|
-
- [ ] **Single focus**: Can the user complete their primary task without distraction from competing elements?
|
|
44
|
-
- [ ] **Chunking**: Is information presented in digestible groups (≤4 items per group)?
|
|
45
|
-
- [ ] **Grouping**: Are related items visually grouped together (proximity, borders, shared background)?
|
|
46
|
-
- [ ] **Visual hierarchy**: Is it immediately clear what's most important on the screen?
|
|
47
|
-
- [ ] **One thing at a time**: Can the user focus on a single decision before moving to the next?
|
|
48
|
-
- [ ] **Minimal choices**: Are decisions simplified (≤4 visible options at any decision point)?
|
|
49
|
-
- [ ] **Working memory**: Does the user need to remember information from a previous screen to act on the current one?
|
|
50
|
-
- [ ] **Progressive disclosure**: Is complexity revealed only when the user needs it?
|
|
51
|
-
|
|
52
|
-
**Scoring**: Count the failed items. 0–1 failures = low cognitive load (good). 2–3 = moderate (address soon). 4+ = high cognitive load (critical fix needed).
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## The Working Memory Rule
|
|
57
|
-
|
|
58
|
-
**Humans can hold ≤4 items in working memory at once** (Miller's Law revised by Cowan, 2001).
|
|
59
|
-
|
|
60
|
-
At any decision point, count the number of distinct options, actions, or pieces of information a user must simultaneously consider:
|
|
61
|
-
- **≤4 items**: Within working memory limits, manageable
|
|
62
|
-
- **5–7 items**: Pushing the boundary; consider grouping or progressive disclosure
|
|
63
|
-
- **8+ items**: Overloaded; users will skip, misclick, or abandon
|
|
64
|
-
|
|
65
|
-
**Practical applications**:
|
|
66
|
-
- Navigation menus: ≤5 top-level items (group the rest under clear categories)
|
|
67
|
-
- Form sections: ≤4 fields visible per group before a visual break
|
|
68
|
-
- Action buttons: 1 primary, 1–2 secondary, group the rest in a menu
|
|
69
|
-
- Dashboard widgets: ≤4 key metrics visible without scrolling
|
|
70
|
-
- Pricing tiers: ≤3 options (more causes analysis paralysis)
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Common Cognitive Load Violations
|
|
75
|
-
|
|
76
|
-
### 1. The Wall of Options
|
|
77
|
-
**Problem**: Presenting 10+ choices at once with no hierarchy.
|
|
78
|
-
**Fix**: Group into categories, highlight recommended, use progressive disclosure.
|
|
79
|
-
|
|
80
|
-
### 2. The Memory Bridge
|
|
81
|
-
**Problem**: User must remember info from step 1 to complete step 3.
|
|
82
|
-
**Fix**: Keep relevant context visible, or repeat it where it's needed.
|
|
83
|
-
|
|
84
|
-
### 3. The Hidden Navigation
|
|
85
|
-
**Problem**: User must build a mental map of where things are.
|
|
86
|
-
**Fix**: Always show current location (breadcrumbs, active states, progress indicators).
|
|
87
|
-
|
|
88
|
-
### 4. The Jargon Barrier
|
|
89
|
-
**Problem**: Technical or domain language forces translation effort.
|
|
90
|
-
**Fix**: Use plain language. If domain terms are unavoidable, define them inline.
|
|
91
|
-
|
|
92
|
-
### 5. The Visual Noise Floor
|
|
93
|
-
**Problem**: Every element has the same visual weight; nothing stands out.
|
|
94
|
-
**Fix**: Establish clear hierarchy: one primary element, 2–3 secondary, everything else muted.
|
|
95
|
-
|
|
96
|
-
### 6. The Inconsistent Pattern
|
|
97
|
-
**Problem**: Similar actions work differently in different places.
|
|
98
|
-
**Fix**: Standardize interaction patterns. Same type of action = same type of UI.
|
|
99
|
-
|
|
100
|
-
### 7. The Multi-Task Demand
|
|
101
|
-
**Problem**: Interface requires processing multiple simultaneous inputs (reading + deciding + navigating).
|
|
102
|
-
**Fix**: Sequence the steps. Let the user do one thing at a time.
|
|
103
|
-
|
|
104
|
-
### 8. The Context Switch
|
|
105
|
-
**Problem**: User must jump between screens/tabs/modals to gather info for a single decision.
|
|
106
|
-
**Fix**: Co-locate the information needed for each decision. Reduce back-and-forth.
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
# Color & Contrast
|
|
2
|
-
|
|
3
|
-
## Color Spaces: Use OKLCH
|
|
4
|
-
|
|
5
|
-
**Stop using HSL.** Use OKLCH (or LCH) instead. It's perceptually uniform, meaning equal steps in lightness *look* equal, unlike HSL where 50% lightness in yellow looks bright while 50% in blue looks dark.
|
|
6
|
-
|
|
7
|
-
The OKLCH function takes three components: `oklch(lightness chroma hue)` where lightness is 0-100%, chroma is roughly 0-0.4, and hue is 0-360. To build a primary color and its lighter / darker variants, hold the chroma+hue roughly constant and vary the lightness, but **reduce chroma as you approach white or black**, because high chroma at extreme lightness looks garish.
|
|
8
|
-
|
|
9
|
-
The hue you pick is a brand decision and should not come from a default. Do not reach for blue (hue 250) or warm orange (hue 60) by reflex; those are the dominant AI-design defaults, not the right answer for any specific brand.
|
|
10
|
-
|
|
11
|
-
## Building Functional Palettes
|
|
12
|
-
|
|
13
|
-
### Tinted Neutrals
|
|
14
|
-
|
|
15
|
-
**Pure gray is dead.** A neutral with zero chroma feels lifeless next to a colored brand. Add a tiny chroma value (0.005-0.015) to all your neutrals, hued toward whatever your brand color is. The chroma is small enough not to read as "tinted" consciously, but it creates subconscious cohesion between brand color and UI surfaces.
|
|
16
|
-
|
|
17
|
-
The hue you tint toward should come from THIS project's brand, not from a "warm = friendly, cool = tech" formula. If your brand color is teal, your neutrals lean toward teal. If your brand color is amber, they lean toward amber. The point is cohesion with the SPECIFIC brand, not a stock palette.
|
|
18
|
-
|
|
19
|
-
**Avoid** the trap of always tinting toward warm orange or always tinting toward cool blue. Those are the two laziest defaults and they create their own monoculture across projects.
|
|
20
|
-
|
|
21
|
-
### Palette Structure
|
|
22
|
-
|
|
23
|
-
A complete system needs:
|
|
24
|
-
|
|
25
|
-
| Role | Purpose | Example |
|
|
26
|
-
|------|---------|---------|
|
|
27
|
-
| **Primary** | Brand, CTAs, key actions | 1 color, 3-5 shades |
|
|
28
|
-
| **Neutral** | Text, backgrounds, borders | 9-11 shade scale |
|
|
29
|
-
| **Semantic** | Success, error, warning, info | 4 colors, 2-3 shades each |
|
|
30
|
-
| **Surface** | Cards, modals, overlays | 2-3 elevation levels |
|
|
31
|
-
|
|
32
|
-
**Skip secondary/tertiary unless you need them.** Most apps work fine with one accent color. Adding more creates decision fatigue and visual noise.
|
|
33
|
-
|
|
34
|
-
### The 60-30-10 Rule (Applied Correctly)
|
|
35
|
-
|
|
36
|
-
This rule is about **visual weight**, not pixel count:
|
|
37
|
-
|
|
38
|
-
- **60%**: Neutral backgrounds, white space, base surfaces
|
|
39
|
-
- **30%**: Secondary colors: text, borders, inactive states
|
|
40
|
-
- **10%**: Accent: CTAs, highlights, focus states
|
|
41
|
-
|
|
42
|
-
The common mistake: using the accent color everywhere because it's "the brand color." Accent colors work *because* they're rare. Overuse kills their power.
|
|
43
|
-
|
|
44
|
-
## Contrast & Accessibility
|
|
45
|
-
|
|
46
|
-
### WCAG Requirements
|
|
47
|
-
|
|
48
|
-
| Content Type | AA Minimum | AAA Target |
|
|
49
|
-
|--------------|------------|------------|
|
|
50
|
-
| Body text | 4.5:1 | 7:1 |
|
|
51
|
-
| Large text (18px+ or 14px bold) | 3:1 | 4.5:1 |
|
|
52
|
-
| UI components, icons | 3:1 | 4.5:1 |
|
|
53
|
-
| Non-essential decorations | None | None |
|
|
54
|
-
|
|
55
|
-
**The gotcha**: Placeholder text still needs 4.5:1. That light gray placeholder you see everywhere? Usually fails WCAG.
|
|
56
|
-
|
|
57
|
-
### Dangerous Color Combinations
|
|
58
|
-
|
|
59
|
-
These commonly fail contrast or cause readability issues:
|
|
60
|
-
|
|
61
|
-
- Light gray text on white (the #1 accessibility fail)
|
|
62
|
-
- **Gray text on any colored background**: gray looks washed out and dead on color. Use a darker shade of the background color, or transparency
|
|
63
|
-
- Red text on green background (or vice versa): 8% of men can't distinguish these
|
|
64
|
-
- Blue text on red background (vibrates visually)
|
|
65
|
-
- Yellow text on white (almost always fails)
|
|
66
|
-
- Thin light text on images (unpredictable contrast)
|
|
67
|
-
|
|
68
|
-
### Never Use Pure Gray or Pure Black
|
|
69
|
-
|
|
70
|
-
Pure gray (`oklch(50% 0 0)`) and pure black (`#000`) don't exist in nature; real shadows and surfaces always have a color cast. Even a chroma of 0.005-0.01 is enough to feel natural without being obviously tinted. (See tinted neutrals example above.)
|
|
71
|
-
|
|
72
|
-
### Testing
|
|
73
|
-
|
|
74
|
-
Don't trust your eyes. Use tools:
|
|
75
|
-
|
|
76
|
-
- [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/)
|
|
77
|
-
- Browser DevTools → Rendering → Emulate vision deficiencies
|
|
78
|
-
- [Polypane](https://polypane.app/) for real-time testing
|
|
79
|
-
|
|
80
|
-
## Theming: Light & Dark Mode
|
|
81
|
-
|
|
82
|
-
### Dark Mode Is Not Inverted Light Mode
|
|
83
|
-
|
|
84
|
-
You can't just swap colors. Dark mode requires different design decisions:
|
|
85
|
-
|
|
86
|
-
| Light Mode | Dark Mode |
|
|
87
|
-
|------------|-----------|
|
|
88
|
-
| Shadows for depth | Lighter surfaces for depth (no shadows) |
|
|
89
|
-
| Dark text on light | Light text on dark (reduce font weight) |
|
|
90
|
-
| Vibrant accents | Desaturate accents slightly |
|
|
91
|
-
| White backgrounds | Never pure black; use dark gray (oklch 12-18%) |
|
|
92
|
-
|
|
93
|
-
In dark mode, depth comes from surface lightness, not shadow. Build a 3-step surface scale where higher elevations are lighter (e.g. 15% / 20% / 25% lightness). Use the SAME hue and chroma as your brand color (whatever it is for THIS project; do not reach for blue) and only vary the lightness. Reduce body text weight slightly (e.g. 350 instead of 400) because light text on dark reads as heavier than dark text on light.
|
|
94
|
-
|
|
95
|
-
### Token Hierarchy
|
|
96
|
-
|
|
97
|
-
Use two layers: primitive tokens (`--blue-500`) and semantic tokens (`--color-primary: var(--blue-500)`). For dark mode, only redefine the semantic layer; primitives stay the same.
|
|
98
|
-
|
|
99
|
-
## Alpha Is A Design Smell
|
|
100
|
-
|
|
101
|
-
Heavy use of transparency (rgba, hsla) usually means an incomplete palette. Alpha creates unpredictable contrast, performance overhead, and inconsistency. Define explicit overlay colors for each context instead. Exception: focus rings and interactive states where see-through is needed.
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
**Avoid**: Relying on color alone to convey information. Creating palettes without clear roles for each color. Using pure black (#000) for large areas. Skipping color blindness testing (8% of men affected).
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
# Heuristics Scoring Guide
|
|
2
|
-
|
|
3
|
-
Score each of Nielsen's 10 Usability Heuristics on a 0–4 scale. Be honest: a 4 means genuinely excellent, not "good enough."
|
|
4
|
-
|
|
5
|
-
## Nielsen's 10 Heuristics
|
|
6
|
-
|
|
7
|
-
### 1. Visibility of System Status
|
|
8
|
-
|
|
9
|
-
Keep users informed about what's happening through timely, appropriate feedback.
|
|
10
|
-
|
|
11
|
-
**Check for**:
|
|
12
|
-
- Loading indicators during async operations
|
|
13
|
-
- Confirmation of user actions (save, submit, delete)
|
|
14
|
-
- Progress indicators for multi-step processes
|
|
15
|
-
- Current location in navigation (breadcrumbs, active states)
|
|
16
|
-
- Form validation feedback (inline, not just on submit)
|
|
17
|
-
|
|
18
|
-
**Scoring**:
|
|
19
|
-
| Score | Criteria |
|
|
20
|
-
|-------|----------|
|
|
21
|
-
| 0 | No feedback; user is guessing what happened |
|
|
22
|
-
| 1 | Rare feedback; most actions produce no visible response |
|
|
23
|
-
| 2 | Partial; some states communicated, major gaps remain |
|
|
24
|
-
| 3 | Good; most operations give clear feedback, minor gaps |
|
|
25
|
-
| 4 | Excellent; every action confirms, progress is always visible |
|
|
26
|
-
|
|
27
|
-
### 2. Match Between System and Real World
|
|
28
|
-
|
|
29
|
-
Speak the user's language. Follow real-world conventions. Information appears in natural, logical order.
|
|
30
|
-
|
|
31
|
-
**Check for**:
|
|
32
|
-
- Familiar terminology (no unexplained jargon)
|
|
33
|
-
- Logical information order matching user expectations
|
|
34
|
-
- Recognizable icons and metaphors
|
|
35
|
-
- Domain-appropriate language for the target audience
|
|
36
|
-
- Natural reading flow (left-to-right, top-to-bottom priority)
|
|
37
|
-
|
|
38
|
-
**Scoring**:
|
|
39
|
-
| Score | Criteria |
|
|
40
|
-
|-------|----------|
|
|
41
|
-
| 0 | Pure tech jargon, alien to users |
|
|
42
|
-
| 1 | Mostly confusing; requires domain expertise to navigate |
|
|
43
|
-
| 2 | Mixed; some plain language, some jargon leaks through |
|
|
44
|
-
| 3 | Mostly natural; occasional term needs context |
|
|
45
|
-
| 4 | Speaks the user's language fluently throughout |
|
|
46
|
-
|
|
47
|
-
### 3. User Control and Freedom
|
|
48
|
-
|
|
49
|
-
Users need a clear "emergency exit" from unwanted states without extended dialogue.
|
|
50
|
-
|
|
51
|
-
**Check for**:
|
|
52
|
-
- Undo/redo functionality
|
|
53
|
-
- Cancel buttons on forms and modals
|
|
54
|
-
- Clear navigation back to safety (home, previous)
|
|
55
|
-
- Easy way to clear filters, search, selections
|
|
56
|
-
- Escape from long or multi-step processes
|
|
57
|
-
|
|
58
|
-
**Scoring**:
|
|
59
|
-
| Score | Criteria |
|
|
60
|
-
|-------|----------|
|
|
61
|
-
| 0 | Users get trapped; no way out without refreshing |
|
|
62
|
-
| 1 | Difficult exits; must find obscure paths to escape |
|
|
63
|
-
| 2 | Some exits; main flows have escape, edge cases don't |
|
|
64
|
-
| 3 | Good control; users can exit and undo most actions |
|
|
65
|
-
| 4 | Full control; undo, cancel, back, and escape everywhere |
|
|
66
|
-
|
|
67
|
-
### 4. Consistency and Standards
|
|
68
|
-
|
|
69
|
-
Users shouldn't wonder whether different words, situations, or actions mean the same thing.
|
|
70
|
-
|
|
71
|
-
**Check for**:
|
|
72
|
-
- Consistent terminology throughout the interface
|
|
73
|
-
- Same actions produce same results everywhere
|
|
74
|
-
- Platform conventions followed (standard UI patterns)
|
|
75
|
-
- Visual consistency (colors, typography, spacing, components)
|
|
76
|
-
- Consistent interaction patterns (same gesture = same behavior)
|
|
77
|
-
|
|
78
|
-
**Scoring**:
|
|
79
|
-
| Score | Criteria |
|
|
80
|
-
|-------|----------|
|
|
81
|
-
| 0 | Inconsistent everywhere; feels like different products stitched together |
|
|
82
|
-
| 1 | Many inconsistencies; similar things look/behave differently |
|
|
83
|
-
| 2 | Partially consistent; main flows match, details diverge |
|
|
84
|
-
| 3 | Mostly consistent; occasional deviation, nothing confusing |
|
|
85
|
-
| 4 | Fully consistent; cohesive system, predictable behavior |
|
|
86
|
-
|
|
87
|
-
### 5. Error Prevention
|
|
88
|
-
|
|
89
|
-
Better than good error messages is a design that prevents problems in the first place.
|
|
90
|
-
|
|
91
|
-
**Check for**:
|
|
92
|
-
- Confirmation before destructive actions (delete, overwrite)
|
|
93
|
-
- Constraints preventing invalid input (date pickers, dropdowns)
|
|
94
|
-
- Smart defaults that reduce errors
|
|
95
|
-
- Clear labels that prevent misunderstanding
|
|
96
|
-
- Autosave and draft recovery
|
|
97
|
-
|
|
98
|
-
**Scoring**:
|
|
99
|
-
| Score | Criteria |
|
|
100
|
-
|-------|----------|
|
|
101
|
-
| 0 | Errors easy to make; no guardrails anywhere |
|
|
102
|
-
| 1 | Few safeguards; some inputs validated, most aren't |
|
|
103
|
-
| 2 | Partial prevention; common errors caught, edge cases slip |
|
|
104
|
-
| 3 | Good prevention; most error paths blocked proactively |
|
|
105
|
-
| 4 | Excellent; errors nearly impossible through smart constraints |
|
|
106
|
-
|
|
107
|
-
### 6. Recognition Rather Than Recall
|
|
108
|
-
|
|
109
|
-
Minimize memory load. Make objects, actions, and options visible or easily retrievable.
|
|
110
|
-
|
|
111
|
-
**Check for**:
|
|
112
|
-
- Visible options (not buried in hidden menus)
|
|
113
|
-
- Contextual help when needed (tooltips, inline hints)
|
|
114
|
-
- Recent items and history
|
|
115
|
-
- Autocomplete and suggestions
|
|
116
|
-
- Labels on icons (not icon-only navigation)
|
|
117
|
-
|
|
118
|
-
**Scoring**:
|
|
119
|
-
| Score | Criteria |
|
|
120
|
-
|-------|----------|
|
|
121
|
-
| 0 | Heavy memorization; users must remember paths and commands |
|
|
122
|
-
| 1 | Mostly recall; many hidden features, few visible cues |
|
|
123
|
-
| 2 | Some aids; main actions visible, secondary features hidden |
|
|
124
|
-
| 3 | Good recognition; most things discoverable, few memory demands |
|
|
125
|
-
| 4 | Everything discoverable; users never need to memorize |
|
|
126
|
-
|
|
127
|
-
### 7. Flexibility and Efficiency of Use
|
|
128
|
-
|
|
129
|
-
Accelerators, invisible to novices, speed up expert interaction.
|
|
130
|
-
|
|
131
|
-
**Check for**:
|
|
132
|
-
- Keyboard shortcuts for common actions
|
|
133
|
-
- Customizable interface elements
|
|
134
|
-
- Recent items and favorites
|
|
135
|
-
- Bulk/batch actions
|
|
136
|
-
- Power user features that don't complicate the basics
|
|
137
|
-
|
|
138
|
-
**Scoring**:
|
|
139
|
-
| Score | Criteria |
|
|
140
|
-
|-------|----------|
|
|
141
|
-
| 0 | One rigid path; no shortcuts or alternatives |
|
|
142
|
-
| 1 | Limited flexibility; few alternatives to the main path |
|
|
143
|
-
| 2 | Some shortcuts; basic keyboard support, limited bulk actions |
|
|
144
|
-
| 3 | Good accelerators; keyboard nav, some customization |
|
|
145
|
-
| 4 | Highly flexible; multiple paths, power features, customizable |
|
|
146
|
-
|
|
147
|
-
### 8. Aesthetic and Minimalist Design
|
|
148
|
-
|
|
149
|
-
Interfaces should not contain irrelevant or rarely needed information. Every element should serve a purpose.
|
|
150
|
-
|
|
151
|
-
**Check for**:
|
|
152
|
-
- Only necessary information visible at each step
|
|
153
|
-
- Clear visual hierarchy directing attention
|
|
154
|
-
- Purposeful use of color and emphasis
|
|
155
|
-
- No decorative clutter competing for attention
|
|
156
|
-
- Focused, uncluttered layouts
|
|
157
|
-
|
|
158
|
-
**Scoring**:
|
|
159
|
-
| Score | Criteria |
|
|
160
|
-
|-------|----------|
|
|
161
|
-
| 0 | Overwhelming; everything competes for attention equally |
|
|
162
|
-
| 1 | Cluttered; too much noise, hard to find what matters |
|
|
163
|
-
| 2 | Some clutter; main content clear, periphery noisy |
|
|
164
|
-
| 3 | Mostly clean; focused design, minor visual noise |
|
|
165
|
-
| 4 | Perfectly minimal; every element earns its pixel |
|
|
166
|
-
|
|
167
|
-
### 9. Help Users Recognize, Diagnose, and Recover from Errors
|
|
168
|
-
|
|
169
|
-
Error messages should use plain language, precisely indicate the problem, and constructively suggest a solution.
|
|
170
|
-
|
|
171
|
-
**Check for**:
|
|
172
|
-
- Plain language error messages (no error codes for users)
|
|
173
|
-
- Specific problem identification ("Email is missing @" not "Invalid input")
|
|
174
|
-
- Actionable recovery suggestions
|
|
175
|
-
- Errors displayed near the source of the problem
|
|
176
|
-
- Non-blocking error handling (don't wipe the form)
|
|
177
|
-
|
|
178
|
-
**Scoring**:
|
|
179
|
-
| Score | Criteria |
|
|
180
|
-
|-------|----------|
|
|
181
|
-
| 0 | Cryptic errors; codes, jargon, or no message at all |
|
|
182
|
-
| 1 | Vague errors; "Something went wrong" with no guidance |
|
|
183
|
-
| 2 | Clear but unhelpful; names the problem but not the fix |
|
|
184
|
-
| 3 | Clear with suggestions; identifies problem and offers next steps |
|
|
185
|
-
| 4 | Perfect recovery; pinpoints issue, suggests fix, preserves user work |
|
|
186
|
-
|
|
187
|
-
### 10. Help and Documentation
|
|
188
|
-
|
|
189
|
-
Even if the system is usable without docs, help should be easy to find, task-focused, and concise.
|
|
190
|
-
|
|
191
|
-
**Check for**:
|
|
192
|
-
- Searchable help or documentation
|
|
193
|
-
- Contextual help (tooltips, inline hints, guided tours)
|
|
194
|
-
- Task-focused organization (not feature-organized)
|
|
195
|
-
- Concise, scannable content
|
|
196
|
-
- Easy access without leaving current context
|
|
197
|
-
|
|
198
|
-
**Scoring**:
|
|
199
|
-
| Score | Criteria |
|
|
200
|
-
|-------|----------|
|
|
201
|
-
| 0 | No help available anywhere |
|
|
202
|
-
| 1 | Help exists but hard to find or irrelevant |
|
|
203
|
-
| 2 | Basic help; FAQ or docs exist, not contextual |
|
|
204
|
-
| 3 | Good documentation; searchable, mostly task-focused |
|
|
205
|
-
| 4 | Excellent contextual help; right info at the right moment |
|
|
206
|
-
|
|
207
|
-
---
|
|
208
|
-
|
|
209
|
-
## Score Summary
|
|
210
|
-
|
|
211
|
-
**Total possible**: 40 points (10 heuristics × 4 max)
|
|
212
|
-
|
|
213
|
-
| Score Range | Rating | What It Means |
|
|
214
|
-
|-------------|--------|---------------|
|
|
215
|
-
| 36–40 | Excellent | Minor polish only; ship it |
|
|
216
|
-
| 28–35 | Good | Address weak areas, solid foundation |
|
|
217
|
-
| 20–27 | Acceptable | Significant improvements needed before users are happy |
|
|
218
|
-
| 12–19 | Poor | Major UX overhaul required; core experience broken |
|
|
219
|
-
| 0–11 | Critical | Redesign needed; unusable in current state |
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## Issue Severity (P0–P3)
|
|
224
|
-
|
|
225
|
-
Tag each individual issue found during scoring with a priority level:
|
|
226
|
-
|
|
227
|
-
| Priority | Name | Description | Action |
|
|
228
|
-
|----------|------|-------------|--------|
|
|
229
|
-
| **P0** | Blocking | Prevents task completion entirely | Fix immediately; this is a showstopper |
|
|
230
|
-
| **P1** | Major | Causes significant difficulty or confusion | Fix before release |
|
|
231
|
-
| **P2** | Minor | Annoyance, but workaround exists | Fix in next pass |
|
|
232
|
-
| **P3** | Polish | Nice-to-fix, no real user impact | Fix if time permits |
|
|
233
|
-
|
|
234
|
-
**Tip**: If you're unsure between two levels, ask: "Would a user contact support about this?" If yes, it's at least P1.
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
# Motion Design
|
|
2
|
-
|
|
3
|
-
## Duration: The 100/300/500 Rule
|
|
4
|
-
|
|
5
|
-
Timing matters more than easing. These durations feel right for most UI:
|
|
6
|
-
|
|
7
|
-
| Duration | Use Case | Examples |
|
|
8
|
-
|----------|----------|----------|
|
|
9
|
-
| **100-150ms** | Instant feedback | Button press, toggle, color change |
|
|
10
|
-
| **200-300ms** | State changes | Menu open, tooltip, hover states |
|
|
11
|
-
| **300-500ms** | Layout changes | Accordion, modal, drawer |
|
|
12
|
-
| **500-800ms** | Entrance animations | Page load, hero reveals |
|
|
13
|
-
|
|
14
|
-
**Exit animations are faster than entrances.** Use ~75% of enter duration.
|
|
15
|
-
|
|
16
|
-
## Easing: Pick the Right Curve
|
|
17
|
-
|
|
18
|
-
**Don't use `ease`.** It's a compromise that's rarely optimal. Instead:
|
|
19
|
-
|
|
20
|
-
| Curve | Use For | CSS |
|
|
21
|
-
|-------|---------|-----|
|
|
22
|
-
| **ease-out** | Elements entering | `cubic-bezier(0.16, 1, 0.3, 1)` |
|
|
23
|
-
| **ease-in** | Elements leaving | `cubic-bezier(0.7, 0, 0.84, 0)` |
|
|
24
|
-
| **ease-in-out** | State toggles (there → back) | `cubic-bezier(0.65, 0, 0.35, 1)` |
|
|
25
|
-
|
|
26
|
-
**For micro-interactions, use exponential curves.** They feel natural because they mimic real physics (friction, deceleration):
|
|
27
|
-
|
|
28
|
-
```css
|
|
29
|
-
/* Quart out - smooth, refined (recommended default) */
|
|
30
|
-
--ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);
|
|
31
|
-
|
|
32
|
-
/* Quint out - slightly more dramatic */
|
|
33
|
-
--ease-out-quint: cubic-bezier(0.22, 1, 0.36, 1);
|
|
34
|
-
|
|
35
|
-
/* Expo out - snappy, confident */
|
|
36
|
-
--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
**Avoid bounce and elastic curves.** They were trendy in 2015 but now feel tacky and amateurish. Real objects don't bounce when they stop; they decelerate smoothly. Overshoot effects draw attention to the animation itself rather than the content.
|
|
40
|
-
|
|
41
|
-
## Premium Motion Materials
|
|
42
|
-
|
|
43
|
-
Transform and opacity are reliable defaults, not the whole palette. Premium interfaces often need atmospheric properties: blur reveals, backdrop-filter panels, saturation or brightness shifts, shadow bloom, SVG filters, masks, clip paths, gradient-position movement, and variable font or shader-driven effects.
|
|
44
|
-
|
|
45
|
-
Use the right material for the effect:
|
|
46
|
-
|
|
47
|
-
- **Transform / opacity**: movement, press feedback, simple reveals, list choreography.
|
|
48
|
-
- **Blur / filter / backdrop-filter**: focus pulls, depth, glass or lens effects, softened entrances, atmospheric transitions.
|
|
49
|
-
- **Clip path / masks**: wipes, reveals, editorial cropping, product-like transitions.
|
|
50
|
-
- **Shadow / glow / color filters**: energy, affordance, focus, warmth, active state.
|
|
51
|
-
- **Grid-template rows or FLIP-style transforms**: expanding and reflowing layout without animating `height` directly.
|
|
52
|
-
|
|
53
|
-
The hard rule is not "transform and opacity only." The hard rule is: avoid animating layout-driving properties casually (`width`, `height`, `top`, `left`, margins), keep expensive effects bounded to small or isolated areas, and verify in-browser that the result is smooth on the target viewports. If blur/filter makes the interaction feel significantly more premium and remains smooth, use it.
|
|
54
|
-
|
|
55
|
-
## Staggered Animations
|
|
56
|
-
|
|
57
|
-
Use CSS custom properties for cleaner stagger: `animation-delay: calc(var(--i, 0) * 50ms)` with `style="--i: 0"` on each item. **Cap total stagger time**: 10 items at 50ms = 500ms total. For many items, reduce per-item delay or cap staggered count.
|
|
58
|
-
|
|
59
|
-
## Reduced Motion
|
|
60
|
-
|
|
61
|
-
This is not optional. Vestibular disorders affect ~35% of adults over 40.
|
|
62
|
-
|
|
63
|
-
```css
|
|
64
|
-
/* Define animations normally */
|
|
65
|
-
.card {
|
|
66
|
-
animation: slide-up 500ms ease-out;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/* Provide alternative for reduced motion */
|
|
70
|
-
@media (prefers-reduced-motion: reduce) {
|
|
71
|
-
.card {
|
|
72
|
-
animation: fade-in 200ms ease-out; /* Crossfade instead of motion */
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/* Or disable entirely */
|
|
77
|
-
@media (prefers-reduced-motion: reduce) {
|
|
78
|
-
*, *::before, *::after {
|
|
79
|
-
animation-duration: 0.01ms !important;
|
|
80
|
-
transition-duration: 0.01ms !important;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
**What to preserve**: Functional animations like progress bars, loading spinners (slowed down), and focus indicators should still work, just without spatial movement.
|
|
86
|
-
|
|
87
|
-
## Perceived Performance
|
|
88
|
-
|
|
89
|
-
**Nobody cares how fast your site is, just how fast it feels.** Perception can be as effective as actual performance.
|
|
90
|
-
|
|
91
|
-
**The 80ms threshold**: Our brains buffer sensory input for ~80ms to synchronize perception. Anything under 80ms feels instant and simultaneous. This is your target for micro-interactions.
|
|
92
|
-
|
|
93
|
-
**Active vs passive time**: Passive waiting (staring at a spinner) feels longer than active engagement. Strategies to shift the balance:
|
|
94
|
-
|
|
95
|
-
- **Preemptive start**: Begin transitions immediately while loading (iOS app zoom, skeleton UI). Users perceive work happening.
|
|
96
|
-
- **Early completion**: Show content progressively, don't wait for everything. Video buffering, progressive images, streaming HTML.
|
|
97
|
-
- **Optimistic UI**: Update the interface immediately, handle failures gracefully. Instagram likes work offline; the UI updates instantly, syncs later. Use for low-stakes actions; avoid for payments or destructive operations.
|
|
98
|
-
|
|
99
|
-
**Easing affects perceived duration**: Ease-in (accelerating toward completion) makes tasks feel shorter because the peak-end effect weights final moments heavily. Ease-out feels satisfying for entrances, but ease-in toward a task's end compresses perceived time.
|
|
100
|
-
|
|
101
|
-
**Caution**: Too-fast responses can decrease perceived value. Users may distrust instant results for complex operations (search, analysis). Sometimes a brief delay signals "real work" is happening.
|
|
102
|
-
|
|
103
|
-
## Performance
|
|
104
|
-
|
|
105
|
-
Don't use `will-change` preemptively, only when animation is imminent (`:hover`, `.animating`). For scroll-triggered animations, use Intersection Observer instead of scroll events; unobserve after animating once. Create motion tokens for consistency (durations, easings, common transitions).
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
**Avoid**: Animating everything (animation fatigue is real). Using >500ms for UI feedback. Ignoring `prefers-reduced-motion`. Using animation to hide slow loading.
|