@wazir-dev/cli 1.0.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.
Files changed (629) hide show
  1. package/AGENTS.md +111 -0
  2. package/CHANGELOG.md +14 -0
  3. package/CONTRIBUTING.md +101 -0
  4. package/LICENSE +21 -0
  5. package/README.md +314 -0
  6. package/assets/composition-engine.mmd +34 -0
  7. package/assets/demo-script.sh +17 -0
  8. package/assets/logo-dark.svg +14 -0
  9. package/assets/logo.svg +14 -0
  10. package/assets/pipeline.mmd +39 -0
  11. package/assets/record-demo.sh +51 -0
  12. package/docs/README.md +51 -0
  13. package/docs/adapters/context-mode.md +60 -0
  14. package/docs/concepts/architecture.md +87 -0
  15. package/docs/concepts/artifact-model.md +60 -0
  16. package/docs/concepts/composition-engine.md +36 -0
  17. package/docs/concepts/indexing-and-recall.md +160 -0
  18. package/docs/concepts/observability.md +41 -0
  19. package/docs/concepts/roles-and-workflows.md +59 -0
  20. package/docs/concepts/terminology-policy.md +27 -0
  21. package/docs/getting-started/01-installation.md +78 -0
  22. package/docs/getting-started/02-first-run.md +102 -0
  23. package/docs/getting-started/03-adding-to-project.md +15 -0
  24. package/docs/getting-started/04-host-setup.md +15 -0
  25. package/docs/guides/ci-integration.md +15 -0
  26. package/docs/guides/creating-skills.md +15 -0
  27. package/docs/guides/expertise-module-authoring.md +15 -0
  28. package/docs/guides/hook-development.md +15 -0
  29. package/docs/guides/memory-and-learnings.md +34 -0
  30. package/docs/guides/multi-host-export.md +15 -0
  31. package/docs/guides/troubleshooting.md +101 -0
  32. package/docs/guides/writing-custom-roles.md +15 -0
  33. package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
  34. package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
  35. package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
  36. package/docs/readmes/INDEX.md +99 -0
  37. package/docs/readmes/features/expertise/README.md +171 -0
  38. package/docs/readmes/features/exports/README.md +222 -0
  39. package/docs/readmes/features/hooks/README.md +103 -0
  40. package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
  41. package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
  42. package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
  43. package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
  44. package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
  45. package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
  46. package/docs/readmes/features/hooks/session-start.md +119 -0
  47. package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
  48. package/docs/readmes/features/roles/README.md +157 -0
  49. package/docs/readmes/features/roles/clarifier.md +152 -0
  50. package/docs/readmes/features/roles/content-author.md +190 -0
  51. package/docs/readmes/features/roles/designer.md +193 -0
  52. package/docs/readmes/features/roles/executor.md +184 -0
  53. package/docs/readmes/features/roles/learner.md +210 -0
  54. package/docs/readmes/features/roles/planner.md +182 -0
  55. package/docs/readmes/features/roles/researcher.md +164 -0
  56. package/docs/readmes/features/roles/reviewer.md +184 -0
  57. package/docs/readmes/features/roles/specifier.md +162 -0
  58. package/docs/readmes/features/roles/verifier.md +215 -0
  59. package/docs/readmes/features/schemas/README.md +178 -0
  60. package/docs/readmes/features/skills/README.md +63 -0
  61. package/docs/readmes/features/skills/brainstorming.md +96 -0
  62. package/docs/readmes/features/skills/debugging.md +148 -0
  63. package/docs/readmes/features/skills/design.md +120 -0
  64. package/docs/readmes/features/skills/prepare-next.md +109 -0
  65. package/docs/readmes/features/skills/run-audit.md +159 -0
  66. package/docs/readmes/features/skills/scan-project.md +109 -0
  67. package/docs/readmes/features/skills/self-audit.md +176 -0
  68. package/docs/readmes/features/skills/tdd.md +137 -0
  69. package/docs/readmes/features/skills/using-skills.md +92 -0
  70. package/docs/readmes/features/skills/verification.md +120 -0
  71. package/docs/readmes/features/skills/writing-plans.md +104 -0
  72. package/docs/readmes/features/tooling/README.md +320 -0
  73. package/docs/readmes/features/workflows/README.md +186 -0
  74. package/docs/readmes/features/workflows/author.md +181 -0
  75. package/docs/readmes/features/workflows/clarify.md +154 -0
  76. package/docs/readmes/features/workflows/design-review.md +171 -0
  77. package/docs/readmes/features/workflows/design.md +169 -0
  78. package/docs/readmes/features/workflows/discover.md +162 -0
  79. package/docs/readmes/features/workflows/execute.md +173 -0
  80. package/docs/readmes/features/workflows/learn.md +167 -0
  81. package/docs/readmes/features/workflows/plan-review.md +165 -0
  82. package/docs/readmes/features/workflows/plan.md +170 -0
  83. package/docs/readmes/features/workflows/prepare-next.md +167 -0
  84. package/docs/readmes/features/workflows/review.md +169 -0
  85. package/docs/readmes/features/workflows/run-audit.md +191 -0
  86. package/docs/readmes/features/workflows/spec-challenge.md +159 -0
  87. package/docs/readmes/features/workflows/specify.md +160 -0
  88. package/docs/readmes/features/workflows/verify.md +177 -0
  89. package/docs/readmes/packages/README.md +50 -0
  90. package/docs/readmes/packages/ajv.md +117 -0
  91. package/docs/readmes/packages/context-mode.md +118 -0
  92. package/docs/readmes/packages/gray-matter.md +116 -0
  93. package/docs/readmes/packages/node-test.md +137 -0
  94. package/docs/readmes/packages/yaml.md +112 -0
  95. package/docs/reference/configuration-reference.md +159 -0
  96. package/docs/reference/expertise-index.md +52 -0
  97. package/docs/reference/git-flow.md +43 -0
  98. package/docs/reference/hooks.md +87 -0
  99. package/docs/reference/host-exports.md +50 -0
  100. package/docs/reference/launch-checklist.md +172 -0
  101. package/docs/reference/marketplace-listings.md +76 -0
  102. package/docs/reference/release-process.md +34 -0
  103. package/docs/reference/roles-reference.md +77 -0
  104. package/docs/reference/skills.md +33 -0
  105. package/docs/reference/templates.md +29 -0
  106. package/docs/reference/tooling-cli.md +94 -0
  107. package/docs/truth-claims.yaml +222 -0
  108. package/expertise/PROGRESS.md +63 -0
  109. package/expertise/README.md +18 -0
  110. package/expertise/antipatterns/PROGRESS.md +56 -0
  111. package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
  112. package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
  113. package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
  114. package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
  115. package/expertise/antipatterns/backend/index.md +24 -0
  116. package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
  117. package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
  118. package/expertise/antipatterns/code/async-antipatterns.md +622 -0
  119. package/expertise/antipatterns/code/code-smells.md +1186 -0
  120. package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
  121. package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
  122. package/expertise/antipatterns/code/index.md +27 -0
  123. package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
  124. package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
  125. package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
  126. package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
  127. package/expertise/antipatterns/design/dark-patterns.md +1121 -0
  128. package/expertise/antipatterns/design/index.md +22 -0
  129. package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
  130. package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
  131. package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
  132. package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
  133. package/expertise/antipatterns/frontend/index.md +23 -0
  134. package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
  135. package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
  136. package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
  137. package/expertise/antipatterns/index.md +31 -0
  138. package/expertise/antipatterns/performance/index.md +20 -0
  139. package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
  140. package/expertise/antipatterns/performance/premature-optimization.md +623 -0
  141. package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
  142. package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
  143. package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
  144. package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
  145. package/expertise/antipatterns/process/index.md +23 -0
  146. package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
  147. package/expertise/antipatterns/security/index.md +20 -0
  148. package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
  149. package/expertise/antipatterns/security/security-theater.md +843 -0
  150. package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
  151. package/expertise/architecture/PROGRESS.md +70 -0
  152. package/expertise/architecture/data/caching-architecture.md +671 -0
  153. package/expertise/architecture/data/data-consistency.md +574 -0
  154. package/expertise/architecture/data/data-modeling.md +536 -0
  155. package/expertise/architecture/data/event-streams-and-queues.md +634 -0
  156. package/expertise/architecture/data/index.md +25 -0
  157. package/expertise/architecture/data/search-architecture.md +663 -0
  158. package/expertise/architecture/data/sql-vs-nosql.md +708 -0
  159. package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
  160. package/expertise/architecture/decisions/build-vs-buy.md +616 -0
  161. package/expertise/architecture/decisions/index.md +23 -0
  162. package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
  163. package/expertise/architecture/decisions/technology-selection.md +616 -0
  164. package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
  165. package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
  166. package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
  167. package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
  168. package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
  169. package/expertise/architecture/distributed/index.md +25 -0
  170. package/expertise/architecture/distributed/saga-pattern.md +797 -0
  171. package/expertise/architecture/foundations/architectural-thinking.md +460 -0
  172. package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
  173. package/expertise/architecture/foundations/design-principles-solid.md +649 -0
  174. package/expertise/architecture/foundations/domain-driven-design.md +719 -0
  175. package/expertise/architecture/foundations/index.md +25 -0
  176. package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
  177. package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
  178. package/expertise/architecture/index.md +34 -0
  179. package/expertise/architecture/integration/api-design-graphql.md +638 -0
  180. package/expertise/architecture/integration/api-design-grpc.md +804 -0
  181. package/expertise/architecture/integration/api-design-rest.md +892 -0
  182. package/expertise/architecture/integration/index.md +25 -0
  183. package/expertise/architecture/integration/third-party-integration.md +795 -0
  184. package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
  185. package/expertise/architecture/integration/websockets-realtime.md +791 -0
  186. package/expertise/architecture/mobile-architecture/index.md +22 -0
  187. package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
  188. package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
  189. package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
  190. package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
  191. package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
  192. package/expertise/architecture/patterns/event-driven.md +797 -0
  193. package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
  194. package/expertise/architecture/patterns/index.md +27 -0
  195. package/expertise/architecture/patterns/layered-architecture.md +736 -0
  196. package/expertise/architecture/patterns/microservices.md +753 -0
  197. package/expertise/architecture/patterns/modular-monolith.md +692 -0
  198. package/expertise/architecture/patterns/monolith.md +626 -0
  199. package/expertise/architecture/patterns/plugin-architecture.md +735 -0
  200. package/expertise/architecture/patterns/serverless.md +780 -0
  201. package/expertise/architecture/scaling/database-scaling.md +615 -0
  202. package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
  203. package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
  204. package/expertise/architecture/scaling/index.md +24 -0
  205. package/expertise/architecture/scaling/multi-tenancy.md +800 -0
  206. package/expertise/architecture/scaling/stateless-design.md +787 -0
  207. package/expertise/backend/embedded-firmware.md +625 -0
  208. package/expertise/backend/go.md +853 -0
  209. package/expertise/backend/index.md +24 -0
  210. package/expertise/backend/java-spring.md +448 -0
  211. package/expertise/backend/node-typescript.md +625 -0
  212. package/expertise/backend/python-fastapi.md +724 -0
  213. package/expertise/backend/rust.md +458 -0
  214. package/expertise/backend/solidity.md +711 -0
  215. package/expertise/composition-map.yaml +443 -0
  216. package/expertise/content/foundations/content-modeling.md +395 -0
  217. package/expertise/content/foundations/editorial-standards.md +449 -0
  218. package/expertise/content/foundations/index.md +24 -0
  219. package/expertise/content/foundations/microcopy.md +455 -0
  220. package/expertise/content/foundations/terminology-governance.md +509 -0
  221. package/expertise/content/index.md +34 -0
  222. package/expertise/content/patterns/accessibility-copy.md +518 -0
  223. package/expertise/content/patterns/index.md +24 -0
  224. package/expertise/content/patterns/notification-content.md +433 -0
  225. package/expertise/content/patterns/sample-content.md +486 -0
  226. package/expertise/content/patterns/state-copy.md +439 -0
  227. package/expertise/design/PROGRESS.md +58 -0
  228. package/expertise/design/disciplines/dark-mode-theming.md +577 -0
  229. package/expertise/design/disciplines/design-systems.md +595 -0
  230. package/expertise/design/disciplines/index.md +25 -0
  231. package/expertise/design/disciplines/information-architecture.md +800 -0
  232. package/expertise/design/disciplines/interaction-design.md +788 -0
  233. package/expertise/design/disciplines/responsive-design.md +552 -0
  234. package/expertise/design/disciplines/usability-testing.md +516 -0
  235. package/expertise/design/disciplines/user-research.md +792 -0
  236. package/expertise/design/foundations/accessibility-design.md +796 -0
  237. package/expertise/design/foundations/color-theory.md +797 -0
  238. package/expertise/design/foundations/iconography.md +795 -0
  239. package/expertise/design/foundations/index.md +26 -0
  240. package/expertise/design/foundations/motion-and-animation.md +653 -0
  241. package/expertise/design/foundations/rtl-design.md +585 -0
  242. package/expertise/design/foundations/spacing-and-layout.md +607 -0
  243. package/expertise/design/foundations/typography.md +800 -0
  244. package/expertise/design/foundations/visual-hierarchy.md +761 -0
  245. package/expertise/design/index.md +32 -0
  246. package/expertise/design/patterns/authentication-flows.md +474 -0
  247. package/expertise/design/patterns/content-consumption.md +789 -0
  248. package/expertise/design/patterns/data-display.md +618 -0
  249. package/expertise/design/patterns/e-commerce.md +1494 -0
  250. package/expertise/design/patterns/feedback-and-states.md +642 -0
  251. package/expertise/design/patterns/forms-and-input.md +819 -0
  252. package/expertise/design/patterns/gamification.md +801 -0
  253. package/expertise/design/patterns/index.md +31 -0
  254. package/expertise/design/patterns/microinteractions.md +449 -0
  255. package/expertise/design/patterns/navigation.md +800 -0
  256. package/expertise/design/patterns/notifications.md +705 -0
  257. package/expertise/design/patterns/onboarding.md +700 -0
  258. package/expertise/design/patterns/search-and-filter.md +601 -0
  259. package/expertise/design/patterns/settings-and-preferences.md +768 -0
  260. package/expertise/design/patterns/social-and-community.md +748 -0
  261. package/expertise/design/platforms/desktop-native.md +612 -0
  262. package/expertise/design/platforms/index.md +25 -0
  263. package/expertise/design/platforms/mobile-android.md +825 -0
  264. package/expertise/design/platforms/mobile-cross-platform.md +983 -0
  265. package/expertise/design/platforms/mobile-ios.md +699 -0
  266. package/expertise/design/platforms/tablet.md +794 -0
  267. package/expertise/design/platforms/web-dashboard.md +790 -0
  268. package/expertise/design/platforms/web-responsive.md +550 -0
  269. package/expertise/design/psychology/behavioral-nudges.md +449 -0
  270. package/expertise/design/psychology/cognitive-load.md +1191 -0
  271. package/expertise/design/psychology/error-psychology.md +778 -0
  272. package/expertise/design/psychology/index.md +22 -0
  273. package/expertise/design/psychology/persuasive-design.md +736 -0
  274. package/expertise/design/psychology/user-mental-models.md +623 -0
  275. package/expertise/design/tooling/open-pencil.md +266 -0
  276. package/expertise/frontend/angular.md +1073 -0
  277. package/expertise/frontend/desktop-electron.md +546 -0
  278. package/expertise/frontend/flutter.md +782 -0
  279. package/expertise/frontend/index.md +27 -0
  280. package/expertise/frontend/native-android.md +409 -0
  281. package/expertise/frontend/native-ios.md +490 -0
  282. package/expertise/frontend/react-native.md +1160 -0
  283. package/expertise/frontend/react.md +808 -0
  284. package/expertise/frontend/vue.md +1089 -0
  285. package/expertise/humanize/domain-rules-code.md +79 -0
  286. package/expertise/humanize/domain-rules-content.md +67 -0
  287. package/expertise/humanize/domain-rules-technical-docs.md +56 -0
  288. package/expertise/humanize/index.md +35 -0
  289. package/expertise/humanize/self-audit-checklist.md +87 -0
  290. package/expertise/humanize/sentence-patterns.md +218 -0
  291. package/expertise/humanize/vocabulary-blacklist.md +105 -0
  292. package/expertise/i18n/PROGRESS.md +65 -0
  293. package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
  294. package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
  295. package/expertise/i18n/advanced/complex-scripts.md +30 -0
  296. package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
  297. package/expertise/i18n/advanced/testing-i18n.md +28 -0
  298. package/expertise/i18n/content/content-adaptation.md +23 -0
  299. package/expertise/i18n/content/locale-specific-formatting.md +23 -0
  300. package/expertise/i18n/content/machine-translation-integration.md +28 -0
  301. package/expertise/i18n/content/translation-management.md +29 -0
  302. package/expertise/i18n/foundations/date-time-calendars.md +67 -0
  303. package/expertise/i18n/foundations/i18n-architecture.md +272 -0
  304. package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
  305. package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
  306. package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
  307. package/expertise/i18n/foundations/string-externalization.md +236 -0
  308. package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
  309. package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
  310. package/expertise/i18n/index.md +38 -0
  311. package/expertise/i18n/platform/backend-i18n.md +31 -0
  312. package/expertise/i18n/platform/flutter-i18n.md +148 -0
  313. package/expertise/i18n/platform/native-android-i18n.md +36 -0
  314. package/expertise/i18n/platform/native-ios-i18n.md +36 -0
  315. package/expertise/i18n/platform/react-i18n.md +103 -0
  316. package/expertise/i18n/platform/web-css-i18n.md +81 -0
  317. package/expertise/i18n/rtl/arabic-specific.md +175 -0
  318. package/expertise/i18n/rtl/hebrew-specific.md +149 -0
  319. package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
  320. package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
  321. package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
  322. package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
  323. package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
  324. package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
  325. package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
  326. package/expertise/i18n/rtl/rtl-typography.md +160 -0
  327. package/expertise/index.md +113 -0
  328. package/expertise/index.yaml +216 -0
  329. package/expertise/infrastructure/cloud-aws.md +597 -0
  330. package/expertise/infrastructure/cloud-gcp.md +599 -0
  331. package/expertise/infrastructure/cybersecurity.md +816 -0
  332. package/expertise/infrastructure/database-mongodb.md +447 -0
  333. package/expertise/infrastructure/database-postgres.md +400 -0
  334. package/expertise/infrastructure/devops-cicd.md +787 -0
  335. package/expertise/infrastructure/index.md +27 -0
  336. package/expertise/performance/PROGRESS.md +50 -0
  337. package/expertise/performance/backend/api-latency.md +1204 -0
  338. package/expertise/performance/backend/background-jobs.md +506 -0
  339. package/expertise/performance/backend/connection-pooling.md +1209 -0
  340. package/expertise/performance/backend/database-query-optimization.md +515 -0
  341. package/expertise/performance/backend/index.md +23 -0
  342. package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
  343. package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
  344. package/expertise/performance/foundations/caching-strategies.md +489 -0
  345. package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
  346. package/expertise/performance/foundations/index.md +24 -0
  347. package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
  348. package/expertise/performance/foundations/memory-management.md +964 -0
  349. package/expertise/performance/foundations/performance-budgets.md +1314 -0
  350. package/expertise/performance/index.md +31 -0
  351. package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
  352. package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
  353. package/expertise/performance/infrastructure/index.md +22 -0
  354. package/expertise/performance/infrastructure/load-balancing.md +1081 -0
  355. package/expertise/performance/infrastructure/observability.md +1079 -0
  356. package/expertise/performance/mobile/index.md +23 -0
  357. package/expertise/performance/mobile/mobile-animations.md +544 -0
  358. package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
  359. package/expertise/performance/mobile/mobile-network.md +452 -0
  360. package/expertise/performance/mobile/mobile-rendering.md +599 -0
  361. package/expertise/performance/mobile/mobile-startup-time.md +505 -0
  362. package/expertise/performance/platform-specific/flutter-performance.md +647 -0
  363. package/expertise/performance/platform-specific/index.md +22 -0
  364. package/expertise/performance/platform-specific/node-performance.md +1307 -0
  365. package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
  366. package/expertise/performance/platform-specific/react-performance.md +1403 -0
  367. package/expertise/performance/web/bundle-optimization.md +1239 -0
  368. package/expertise/performance/web/image-and-media.md +636 -0
  369. package/expertise/performance/web/index.md +24 -0
  370. package/expertise/performance/web/network-optimization.md +1133 -0
  371. package/expertise/performance/web/rendering-performance.md +1098 -0
  372. package/expertise/performance/web/ssr-and-hydration.md +918 -0
  373. package/expertise/performance/web/web-vitals.md +1374 -0
  374. package/expertise/quality/accessibility.md +985 -0
  375. package/expertise/quality/evidence-based-verification.md +499 -0
  376. package/expertise/quality/index.md +24 -0
  377. package/expertise/quality/ml-model-audit.md +614 -0
  378. package/expertise/quality/performance.md +600 -0
  379. package/expertise/quality/testing-api.md +891 -0
  380. package/expertise/quality/testing-mobile.md +496 -0
  381. package/expertise/quality/testing-web.md +849 -0
  382. package/expertise/security/PROGRESS.md +54 -0
  383. package/expertise/security/agentic-identity.md +540 -0
  384. package/expertise/security/compliance-frameworks.md +601 -0
  385. package/expertise/security/data/data-encryption.md +364 -0
  386. package/expertise/security/data/data-privacy-gdpr.md +692 -0
  387. package/expertise/security/data/database-security.md +1171 -0
  388. package/expertise/security/data/index.md +22 -0
  389. package/expertise/security/data/pii-handling.md +531 -0
  390. package/expertise/security/foundations/authentication.md +1041 -0
  391. package/expertise/security/foundations/authorization.md +603 -0
  392. package/expertise/security/foundations/cryptography.md +1001 -0
  393. package/expertise/security/foundations/index.md +25 -0
  394. package/expertise/security/foundations/owasp-top-10.md +1354 -0
  395. package/expertise/security/foundations/secrets-management.md +1217 -0
  396. package/expertise/security/foundations/secure-sdlc.md +700 -0
  397. package/expertise/security/foundations/supply-chain-security.md +698 -0
  398. package/expertise/security/index.md +31 -0
  399. package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
  400. package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
  401. package/expertise/security/infrastructure/container-security.md +721 -0
  402. package/expertise/security/infrastructure/incident-response.md +1295 -0
  403. package/expertise/security/infrastructure/index.md +24 -0
  404. package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
  405. package/expertise/security/infrastructure/network-security.md +1337 -0
  406. package/expertise/security/mobile/index.md +23 -0
  407. package/expertise/security/mobile/mobile-android-security.md +1218 -0
  408. package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
  409. package/expertise/security/mobile/mobile-data-storage.md +1265 -0
  410. package/expertise/security/mobile/mobile-ios-security.md +1401 -0
  411. package/expertise/security/mobile/mobile-network-security.md +1520 -0
  412. package/expertise/security/smart-contract-security.md +594 -0
  413. package/expertise/security/testing/index.md +22 -0
  414. package/expertise/security/testing/penetration-testing.md +1258 -0
  415. package/expertise/security/testing/security-code-review.md +1765 -0
  416. package/expertise/security/testing/threat-modeling.md +1074 -0
  417. package/expertise/security/testing/vulnerability-scanning.md +1062 -0
  418. package/expertise/security/web/api-security.md +586 -0
  419. package/expertise/security/web/cors-and-headers.md +433 -0
  420. package/expertise/security/web/csrf.md +562 -0
  421. package/expertise/security/web/file-upload.md +1477 -0
  422. package/expertise/security/web/index.md +25 -0
  423. package/expertise/security/web/injection.md +1375 -0
  424. package/expertise/security/web/session-management.md +1101 -0
  425. package/expertise/security/web/xss.md +1158 -0
  426. package/exports/README.md +17 -0
  427. package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
  428. package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
  429. package/exports/hosts/claude/.claude/agents/designer.md +55 -0
  430. package/exports/hosts/claude/.claude/agents/executor.md +55 -0
  431. package/exports/hosts/claude/.claude/agents/learner.md +51 -0
  432. package/exports/hosts/claude/.claude/agents/planner.md +53 -0
  433. package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
  434. package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
  435. package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
  436. package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
  437. package/exports/hosts/claude/.claude/commands/author.md +42 -0
  438. package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
  439. package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
  440. package/exports/hosts/claude/.claude/commands/design.md +44 -0
  441. package/exports/hosts/claude/.claude/commands/discover.md +37 -0
  442. package/exports/hosts/claude/.claude/commands/execute.md +48 -0
  443. package/exports/hosts/claude/.claude/commands/learn.md +38 -0
  444. package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
  445. package/exports/hosts/claude/.claude/commands/plan.md +39 -0
  446. package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
  447. package/exports/hosts/claude/.claude/commands/review.md +40 -0
  448. package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
  449. package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
  450. package/exports/hosts/claude/.claude/commands/specify.md +38 -0
  451. package/exports/hosts/claude/.claude/commands/verify.md +37 -0
  452. package/exports/hosts/claude/.claude/settings.json +34 -0
  453. package/exports/hosts/claude/CLAUDE.md +19 -0
  454. package/exports/hosts/claude/export.manifest.json +38 -0
  455. package/exports/hosts/claude/host-package.json +67 -0
  456. package/exports/hosts/codex/AGENTS.md +19 -0
  457. package/exports/hosts/codex/export.manifest.json +38 -0
  458. package/exports/hosts/codex/host-package.json +41 -0
  459. package/exports/hosts/cursor/.cursor/hooks.json +16 -0
  460. package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
  461. package/exports/hosts/cursor/export.manifest.json +38 -0
  462. package/exports/hosts/cursor/host-package.json +42 -0
  463. package/exports/hosts/gemini/GEMINI.md +19 -0
  464. package/exports/hosts/gemini/export.manifest.json +38 -0
  465. package/exports/hosts/gemini/host-package.json +41 -0
  466. package/hooks/README.md +18 -0
  467. package/hooks/definitions/loop_cap_guard.yaml +21 -0
  468. package/hooks/definitions/post_tool_capture.yaml +24 -0
  469. package/hooks/definitions/pre_compact_summary.yaml +19 -0
  470. package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
  471. package/hooks/definitions/protected_path_write_guard.yaml +19 -0
  472. package/hooks/definitions/session_start.yaml +19 -0
  473. package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
  474. package/hooks/loop-cap-guard +17 -0
  475. package/hooks/post-tool-lint +36 -0
  476. package/hooks/protected-path-write-guard +17 -0
  477. package/hooks/session-start +41 -0
  478. package/llms-full.txt +2355 -0
  479. package/llms.txt +43 -0
  480. package/package.json +79 -0
  481. package/roles/README.md +20 -0
  482. package/roles/clarifier.md +42 -0
  483. package/roles/content-author.md +63 -0
  484. package/roles/designer.md +55 -0
  485. package/roles/executor.md +55 -0
  486. package/roles/learner.md +51 -0
  487. package/roles/planner.md +53 -0
  488. package/roles/researcher.md +43 -0
  489. package/roles/reviewer.md +54 -0
  490. package/roles/specifier.md +47 -0
  491. package/roles/verifier.md +71 -0
  492. package/schemas/README.md +24 -0
  493. package/schemas/accepted-learning.schema.json +20 -0
  494. package/schemas/author-artifact.schema.json +156 -0
  495. package/schemas/clarification.schema.json +19 -0
  496. package/schemas/design-artifact.schema.json +80 -0
  497. package/schemas/docs-claim.schema.json +18 -0
  498. package/schemas/export-manifest.schema.json +20 -0
  499. package/schemas/hook.schema.json +67 -0
  500. package/schemas/host-export-package.schema.json +18 -0
  501. package/schemas/implementation-plan.schema.json +19 -0
  502. package/schemas/proposed-learning.schema.json +19 -0
  503. package/schemas/research.schema.json +18 -0
  504. package/schemas/review.schema.json +29 -0
  505. package/schemas/run-manifest.schema.json +18 -0
  506. package/schemas/spec-challenge.schema.json +18 -0
  507. package/schemas/spec.schema.json +20 -0
  508. package/schemas/usage.schema.json +102 -0
  509. package/schemas/verification-proof.schema.json +29 -0
  510. package/schemas/wazir-manifest.schema.json +173 -0
  511. package/skills/README.md +40 -0
  512. package/skills/brainstorming/SKILL.md +77 -0
  513. package/skills/debugging/SKILL.md +50 -0
  514. package/skills/design/SKILL.md +61 -0
  515. package/skills/dispatching-parallel-agents/SKILL.md +128 -0
  516. package/skills/executing-plans/SKILL.md +70 -0
  517. package/skills/finishing-a-development-branch/SKILL.md +169 -0
  518. package/skills/humanize/SKILL.md +123 -0
  519. package/skills/init-pipeline/SKILL.md +124 -0
  520. package/skills/prepare-next/SKILL.md +20 -0
  521. package/skills/receiving-code-review/SKILL.md +123 -0
  522. package/skills/requesting-code-review/SKILL.md +105 -0
  523. package/skills/requesting-code-review/code-reviewer.md +108 -0
  524. package/skills/run-audit/SKILL.md +197 -0
  525. package/skills/scan-project/SKILL.md +41 -0
  526. package/skills/self-audit/SKILL.md +153 -0
  527. package/skills/subagent-driven-development/SKILL.md +154 -0
  528. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  529. package/skills/subagent-driven-development/implementer-prompt.md +102 -0
  530. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  531. package/skills/tdd/SKILL.md +23 -0
  532. package/skills/using-git-worktrees/SKILL.md +163 -0
  533. package/skills/using-skills/SKILL.md +95 -0
  534. package/skills/verification/SKILL.md +22 -0
  535. package/skills/wazir/SKILL.md +463 -0
  536. package/skills/writing-plans/SKILL.md +30 -0
  537. package/skills/writing-skills/SKILL.md +157 -0
  538. package/skills/writing-skills/anthropic-best-practices.md +122 -0
  539. package/skills/writing-skills/persuasion-principles.md +50 -0
  540. package/templates/README.md +20 -0
  541. package/templates/artifacts/README.md +10 -0
  542. package/templates/artifacts/accepted-learning.md +19 -0
  543. package/templates/artifacts/accepted-learning.template.json +12 -0
  544. package/templates/artifacts/author.md +74 -0
  545. package/templates/artifacts/author.template.json +19 -0
  546. package/templates/artifacts/clarification.md +21 -0
  547. package/templates/artifacts/clarification.template.json +12 -0
  548. package/templates/artifacts/execute-notes.md +19 -0
  549. package/templates/artifacts/implementation-plan.md +21 -0
  550. package/templates/artifacts/implementation-plan.template.json +11 -0
  551. package/templates/artifacts/learning-proposal.md +19 -0
  552. package/templates/artifacts/next-run-handoff.md +21 -0
  553. package/templates/artifacts/plan-review.md +19 -0
  554. package/templates/artifacts/proposed-learning.template.json +12 -0
  555. package/templates/artifacts/research.md +21 -0
  556. package/templates/artifacts/research.template.json +12 -0
  557. package/templates/artifacts/review-findings.md +19 -0
  558. package/templates/artifacts/review.template.json +11 -0
  559. package/templates/artifacts/run-manifest.template.json +8 -0
  560. package/templates/artifacts/spec-challenge.md +19 -0
  561. package/templates/artifacts/spec-challenge.template.json +11 -0
  562. package/templates/artifacts/spec.md +21 -0
  563. package/templates/artifacts/spec.template.json +12 -0
  564. package/templates/artifacts/verification-proof.md +19 -0
  565. package/templates/artifacts/verification-proof.template.json +11 -0
  566. package/templates/examples/accepted-learning.example.json +14 -0
  567. package/templates/examples/author.example.json +152 -0
  568. package/templates/examples/clarification.example.json +15 -0
  569. package/templates/examples/docs-claim.example.json +8 -0
  570. package/templates/examples/export-manifest.example.json +7 -0
  571. package/templates/examples/host-export-package.example.json +11 -0
  572. package/templates/examples/implementation-plan.example.json +17 -0
  573. package/templates/examples/proposed-learning.example.json +13 -0
  574. package/templates/examples/research.example.json +15 -0
  575. package/templates/examples/research.example.md +6 -0
  576. package/templates/examples/review.example.json +17 -0
  577. package/templates/examples/run-manifest.example.json +9 -0
  578. package/templates/examples/spec-challenge.example.json +14 -0
  579. package/templates/examples/spec.example.json +21 -0
  580. package/templates/examples/verification-proof.example.json +21 -0
  581. package/templates/examples/wazir-manifest.example.yaml +65 -0
  582. package/templates/task-definition-schema.md +99 -0
  583. package/tooling/README.md +20 -0
  584. package/tooling/src/adapters/context-mode.js +50 -0
  585. package/tooling/src/capture/command.js +376 -0
  586. package/tooling/src/capture/store.js +99 -0
  587. package/tooling/src/capture/usage.js +270 -0
  588. package/tooling/src/checks/branches.js +50 -0
  589. package/tooling/src/checks/brand-truth.js +110 -0
  590. package/tooling/src/checks/changelog.js +231 -0
  591. package/tooling/src/checks/command-registry.js +36 -0
  592. package/tooling/src/checks/commits.js +102 -0
  593. package/tooling/src/checks/docs-drift.js +103 -0
  594. package/tooling/src/checks/docs-truth.js +201 -0
  595. package/tooling/src/checks/runtime-surface.js +156 -0
  596. package/tooling/src/cli.js +116 -0
  597. package/tooling/src/command-options.js +56 -0
  598. package/tooling/src/commands/validate.js +320 -0
  599. package/tooling/src/doctor/command.js +91 -0
  600. package/tooling/src/export/command.js +77 -0
  601. package/tooling/src/export/compiler.js +498 -0
  602. package/tooling/src/guards/loop-cap-guard.js +52 -0
  603. package/tooling/src/guards/protected-path-write-guard.js +67 -0
  604. package/tooling/src/index/command.js +152 -0
  605. package/tooling/src/index/storage.js +1061 -0
  606. package/tooling/src/index/summarizers.js +261 -0
  607. package/tooling/src/loaders.js +18 -0
  608. package/tooling/src/project-root.js +22 -0
  609. package/tooling/src/recall/command.js +225 -0
  610. package/tooling/src/schema-validator.js +30 -0
  611. package/tooling/src/state-root.js +40 -0
  612. package/tooling/src/status/command.js +71 -0
  613. package/wazir.manifest.yaml +135 -0
  614. package/workflows/README.md +19 -0
  615. package/workflows/author.md +42 -0
  616. package/workflows/clarify.md +38 -0
  617. package/workflows/design-review.md +46 -0
  618. package/workflows/design.md +44 -0
  619. package/workflows/discover.md +37 -0
  620. package/workflows/execute.md +48 -0
  621. package/workflows/learn.md +38 -0
  622. package/workflows/plan-review.md +42 -0
  623. package/workflows/plan.md +39 -0
  624. package/workflows/prepare-next.md +37 -0
  625. package/workflows/review.md +40 -0
  626. package/workflows/run-audit.md +41 -0
  627. package/workflows/spec-challenge.md +41 -0
  628. package/workflows/specify.md +38 -0
  629. package/workflows/verify.md +37 -0
@@ -0,0 +1,612 @@
1
+ # Desktop Native Design — Platform Expertise Module
2
+
3
+ > Desktop native design covers the principles, patterns, and conventions for building applications that feel at home on macOS, Windows, and Linux. Unlike web or mobile, desktop apps operate in a multi-window, keyboard-driven, high-density environment where users expect deep OS integration, persistent state, and pixel-perfect rendering across varied display configurations. This module synthesizes guidance from Apple Human Interface Guidelines (macOS / Liquid Glass), Microsoft Fluent Design System (Windows 11), and GNOME Human Interface Guidelines (Adwaita / libadwaita) to provide a unified reference for cross-platform desktop design.
4
+
5
+ ---
6
+
7
+ ## 1. Platform Design Language
8
+
9
+ ### 1.1 macOS — Apple Human Interface Guidelines
10
+
11
+ macOS design is defined by spatial clarity, translucency, and content-first hierarchy. As of macOS Tahoe (2025), Apple introduced Liquid Glass — a material that behaves like real glass with real-time refraction, specular highlights, and dynamic color adaptation to surrounding content.
12
+
13
+ **Core visual principles:**
14
+
15
+ - **Translucency and vibrancy.** Sidebar backgrounds use vibrancy effects that blur and tint underlying content, creating visual depth while maintaining readability. Vibrancy is context-dependent — sidebar vibrancy differs from toolbar vibrancy.
16
+ - **Liquid Glass material.** Toolbars and navigation elements float as translucent glass bubbles that appear and disappear based on context. The material refracts light, responds to movement, and adapts between light and dark environments. Properties include translucency, refraction strength, specular intensity, and blur radius.
17
+ - **Sidebar navigation.** The sidebar appears on the leading edge and serves as the primary navigation structure. It supports hierarchical disclosure, drag reordering, and badges. Source lists (mailboxes, playlists) are the canonical pattern.
18
+ - **Toolbar conventions.** Toolbars sit at the top of the window and provide quick access to frequent actions. They support customization (users can add/remove/rearrange items). Title bar and toolbar are often unified into a single region. Toolbar items use template images that adapt to light/dark mode automatically.
19
+ - **Menu bar.** The global menu bar at the top of the screen is mandatory. Every action available via toolbar or context menu must also be accessible through the menu bar. Standard menus include the app menu, File, Edit, Format, View, Window, and Help.
20
+ - **Window chrome.** Traffic light buttons (close/minimize/zoom) at the top-left. Full-screen mode via the green button. Windows remember their last position and size.
21
+
22
+ **Accessibility in Liquid Glass:**
23
+
24
+ - Reduced Transparency makes Liquid Glass frostier, obscuring more background content.
25
+ - Increased Contrast renders elements predominantly black or white with contrasting borders.
26
+ - Reduced Motion decreases effect intensity and disables elastic material properties.
27
+
28
+ ### 1.2 Windows — Microsoft Fluent Design System
29
+
30
+ Fluent Design for Windows 11 centers on materials, depth, motion, and light to create interfaces that feel grounded and responsive. Fluent 2 (current) extends the system across platforms.
31
+
32
+ **Core visual principles:**
33
+
34
+ - **Mica material.** An opaque material subtly tinted with the user's desktop wallpaper color. Used as the primary background for app windows, replacing Acrylic for persistent surfaces. Mica is computationally lighter than Acrylic and provides a sense of personalization.
35
+ - **Acrylic material.** A semi-transparent frosted-glass material. In Windows 11, Acrylic is reserved exclusively for transient, light-dismiss surfaces — flyouts, context menus, command bars. It is brighter and more translucent than previous versions.
36
+ - **Reveal highlight.** A lighting effect that illuminates interactive elements on hover, revealing hidden borders and affordances. Uses a radial gradient that follows the cursor.
37
+ - **Connected animations.** Seamless transitions that maintain visual continuity as users navigate between states. Elements appear to flow from one view to another rather than appearing/disappearing abruptly.
38
+ - **Rounded corners.** Windows 11 uses consistent 8px corner radius on windows, controls, and overlays.
39
+ - **Navigation pane.** A collapsible sidebar (NavigationView) with icon+label items, hierarchical sections, and a hamburger toggle. The pane can be pinned open, collapsed to icons only, or hidden.
40
+ - **Title bar.** The title bar integrates with the app's content area. Apps can extend content into the title bar while preserving the system caption buttons (minimize/maximize/close) at the top-right.
41
+
42
+ **Spacing system:**
43
+
44
+ Fluent uses a 4px base unit grid. The spacing ramp includes 4, 8, 12, 16, 20, 24, 32, 40, 48, and 64px values. This reduces ambiguity and ensures consistent spatial rhythm.
45
+
46
+ ### 1.3 Linux — GNOME and KDE
47
+
48
+ **GNOME (Adwaita / libadwaita):**
49
+
50
+ GNOME's Adwaita design language emphasizes simplicity, content focus, and adaptive layouts. libadwaita (the GTK extension library) enforces GNOME HIG compliance.
51
+
52
+ - **Header bar.** Replaces the traditional title bar + toolbar with a unified header bar containing the window title, navigation controls, and primary actions. Close button appears at the top-right by default (configurable).
53
+ - **Adaptive sidebar (AdwSidebar).** Introduced in libadwaita, this widget intelligently adjusts between a permanent sidebar on wide displays and an overlay or compact navigation element on narrow windows or tablets.
54
+ - **Flat design.** Controls have minimal borders and shadows. Hover and active states use subtle background color changes rather than elevation.
55
+ - **Typography.** As of GNOME 48 (2025), the default font changed from Cantarell to Adwaita Sans (based on Inter), and the monospace font changed from Source Code Pro to Adwaita Mono (based on Iosevka).
56
+ - **Responsive patterns.** libadwaita provides breakpoints for layout adaptation, allowing apps to reflow from multi-pane to single-pane layouts based on window width.
57
+
58
+ **KDE (Breeze):**
59
+
60
+ KDE Plasma uses the Breeze visual style with its own HIG at develop.kde.org/hig/.
61
+
62
+ - **Familiar patterns.** KDE encourages reusing UX patterns from Breeze and other systems (Material Design, Apple HIG) that users already know.
63
+ - **Rounded corners.** Plasma 6.5 introduced fully rounded window corners.
64
+ - **Toolbar and menu bar.** KDE apps typically support both a traditional menu bar and a hamburger menu, letting users choose their preference.
65
+ - **Customizability.** KDE emphasizes user control — toolbar layout, keyboard shortcuts, and color schemes are all configurable.
66
+
67
+ ### 1.4 Desktop vs Web App Mindset
68
+
69
+ Desktop applications differ fundamentally from web apps in user expectations:
70
+
71
+ | Aspect | Web App | Desktop App |
72
+ |---|---|---|
73
+ | Navigation | URL-based, back button | Sidebar, tabs, multi-window |
74
+ | Keyboard | Tab/Enter focused | Full shortcut system (Cmd/Ctrl+key) |
75
+ | File access | Upload/download dialogs | Direct filesystem, drag-and-drop |
76
+ | State persistence | Session/server | Local storage, window position memory |
77
+ | Multi-tasking | Browser tabs | Multiple app windows, split views |
78
+ | Context menus | Limited or custom | Rich, platform-native right-click menus |
79
+ | Clipboard | Basic text | Rich content (images, files, formatted text) |
80
+ | System integration | Minimal | Tray icons, notifications, file associations |
81
+ | Offline | Progressive enhancement | Expected by default |
82
+
83
+ ### 1.5 Electron / Tauri Design Considerations
84
+
85
+ When building desktop apps with web technologies, the primary challenge is achieving native feel.
86
+
87
+ **Achieving native feel:**
88
+
89
+ - Use the platform's system font (SF Pro on macOS, Segoe UI Variable on Windows, Adwaita Sans on GNOME) rather than bundling custom fonts for UI chrome.
90
+ - Respect platform-specific window controls (traffic lights on macOS at top-left, caption buttons on Windows at top-right).
91
+ - Implement native context menus rather than HTML-based menus. Users can immediately tell the difference.
92
+ - Support platform keyboard shortcuts (Cmd on macOS, Ctrl on Windows/Linux).
93
+ - Use native file dialogs, color pickers, and print dialogs — never custom web implementations.
94
+ - Match the platform's scrollbar appearance and behavior.
95
+ - Support system-level dark mode and accent color preferences.
96
+
97
+ **Tauri-specific advantages:**
98
+
99
+ - System webview means the app inherits the platform's native rendering behaviors.
100
+ - Smaller bundle size (2-10 MB vs 120+ MB for Electron) feels more native from install.
101
+ - Sub-500ms startup time matches native app expectations.
102
+ - Security-first model (opt-in permissions) aligns with native OS security patterns.
103
+
104
+ **Electron-specific considerations:**
105
+
106
+ - Ship consistent rendering across platforms via bundled Chromium (trade-off: larger bundle).
107
+ - Use `BrowserWindow` options like `titleBarStyle: 'hiddenInset'` on macOS for native-feeling title bars.
108
+ - Implement `vibrancy` and `backgroundMaterial` options for platform materials.
109
+ - Each BrowserWindow costs 50-150 MB — design for minimal concurrent windows.
110
+
111
+ ---
112
+
113
+ ## 2. Layout & Navigation Patterns
114
+
115
+ ### 2.1 Sidebar + Content Pane (Master-Detail)
116
+
117
+ The sidebar-plus-content-pane layout is the dominant desktop navigation pattern across all three platforms. It works because desktop screens provide sufficient horizontal space for persistent navigation.
118
+
119
+ **Structure:**
120
+
121
+ ```
122
+ +-------+----------------------------------+
123
+ | Side | |
124
+ | bar | Content Pane |
125
+ | | |
126
+ | Nav | (detail view, editor, |
127
+ | items | list, dashboard) |
128
+ | | |
129
+ +-------+----------------------------------+
130
+ ```
131
+
132
+ **Conventions by platform:**
133
+
134
+ - **macOS:** Sidebar width is typically 200-260px. Uses vibrancy/translucency. Supports source list style (grouped, with disclosure triangles). Collapsible via View menu or keyboard shortcut.
135
+ - **Windows:** NavigationView provides Left, LeftCompact (icons only), and LeftMinimal (hamburger only) display modes. Default width is 320px open, 48px compact. Supports hierarchical items, footers, and search.
136
+ - **GNOME:** AdwSidebar adapts between permanent sidebar (wide window), overlay sidebar (medium), and bottom navigation (narrow/mobile). Typical sidebar width is 240-300px.
137
+
138
+ **Three-column variant:**
139
+
140
+ ```
141
+ +-------+------------+--------------------+
142
+ | Side | List/ | |
143
+ | bar | Index | Detail View |
144
+ | | | |
145
+ +-------+------------+--------------------+
146
+ ```
147
+
148
+ Used by mail clients (Apple Mail, Outlook, Thunderbird), note apps, and file managers. The middle column shows a scrollable list; the right column shows the selected item's details.
149
+
150
+ ### 2.2 Menu Bar Conventions
151
+
152
+ **macOS (mandatory):**
153
+
154
+ Every macOS app must provide a menu bar. Standard menus follow this order:
155
+
156
+ 1. **App menu** (app name): About, Preferences/Settings (Cmd+,), Services, Hide, Quit (Cmd+Q)
157
+ 2. **File**: New (Cmd+N), Open (Cmd+O), Save (Cmd+S), Save As (Cmd+Shift+S), Close (Cmd+W), Print (Cmd+P)
158
+ 3. **Edit**: Undo (Cmd+Z), Redo (Cmd+Shift+Z), Cut (Cmd+X), Copy (Cmd+C), Paste (Cmd+V), Select All (Cmd+A), Find (Cmd+F)
159
+ 4. **Format** (if applicable): Font, text styling
160
+ 5. **View**: Toggle Sidebar, Enter Full Screen, zoom controls
161
+ 6. **Window**: Minimize (Cmd+M), Zoom, Bring All to Front, tab management
162
+ 7. **Help**: Search field, app help
163
+
164
+ **Windows (optional but expected for productivity apps):**
165
+
166
+ Windows apps may use a traditional menu bar or a Ribbon/Command Bar. When using a menu bar:
167
+
168
+ 1. **File**: New, Open, Save, Print, Exit (Alt+F4)
169
+ 2. **Edit**: Undo (Ctrl+Z), Redo (Ctrl+Y), Cut/Copy/Paste, Find (Ctrl+F)
170
+ 3. **View**: Zoom, status bar toggle, pane toggles
171
+ 4. **Tools/Options**: Settings, preferences
172
+ 5. **Help**: About, documentation
173
+
174
+ Many modern Windows apps use a hamburger menu or command bar instead of a traditional menu bar.
175
+
176
+ **GNOME:**
177
+
178
+ GNOME apps typically use a primary menu (hamburger icon in the header bar) for infrequent actions (Preferences, About, Keyboard Shortcuts, Quit). Frequent actions are placed directly in the header bar as icon buttons.
179
+
180
+ ### 2.3 Toolbar Patterns
181
+
182
+ **Placement and behavior:**
183
+
184
+ - **macOS:** Toolbar sits below (or unified with) the title bar. Supports customization via right-click. Overflow items go into a chevron dropdown. Use template images (monochrome) that auto-adapt to light/dark.
185
+ - **Windows:** Command bar sits below the title bar. Fluent 2 recommends a compact command bar with overflow menu. The Ribbon (used in Office) is a tabbed toolbar variant for apps with many commands.
186
+ - **GNOME:** Primary actions go directly in the header bar. Secondary actions in the header bar's overflow menu. Avoid separate toolbar rows.
187
+
188
+ **General rules:**
189
+
190
+ - Place the most frequently used 5-7 actions in the toolbar.
191
+ - Group related actions with separators or spacing.
192
+ - Provide tooltips for all toolbar icons.
193
+ - Every toolbar action must have a menu bar equivalent and, ideally, a keyboard shortcut.
194
+ - Support toolbar customization in productivity apps.
195
+
196
+ ### 2.4 Multi-Window Management
197
+
198
+ Desktop users expect multi-window support. Key patterns:
199
+
200
+ - **Document-based apps:** Each document can open in its own window. Track open windows in the Window menu (macOS) or taskbar (Windows).
201
+ - **Inspector/palette windows:** Floating panels that stay above the main window (e.g., color pickers, property inspectors). Use `NSPanel` on macOS, tool windows on Windows.
202
+ - **Preferences/Settings:** Opens as a separate window (macOS tradition) or as a dedicated page within the app (Windows Settings pattern).
203
+ - **Detachable panels:** Allow users to drag tabs or panels out into separate windows (e.g., browser tabs, IDE editor tabs).
204
+
205
+ **Window state persistence:**
206
+
207
+ - Remember window position, size, and which monitor it was on.
208
+ - Restore the previous layout on app relaunch.
209
+ - Handle monitor disconnection gracefully — move windows to a visible display.
210
+ - Support window snapping on Windows 11 (1/2, 1/3, 1/4 screen layouts via Snap Layouts).
211
+
212
+ ### 2.5 Keyboard Shortcuts
213
+
214
+ Keyboard shortcuts are non-negotiable in desktop apps. Power users rely on them heavily.
215
+
216
+ **Platform modifier keys:**
217
+
218
+ | Action | macOS | Windows / Linux |
219
+ |---|---|---|
220
+ | Primary modifier | Cmd (Command) | Ctrl |
221
+ | Secondary modifier | Option (Alt) | Alt |
222
+ | Tertiary modifier | Control | Win key |
223
+ | New | Cmd+N | Ctrl+N |
224
+ | Open | Cmd+O | Ctrl+O |
225
+ | Save | Cmd+S | Ctrl+S |
226
+ | Undo / Redo | Cmd+Z / Cmd+Shift+Z | Ctrl+Z / Ctrl+Y |
227
+ | Cut / Copy / Paste | Cmd+X/C/V | Ctrl+X/C/V |
228
+ | Find | Cmd+F | Ctrl+F |
229
+ | Close window | Cmd+W | Ctrl+W or Alt+F4 |
230
+ | Quit app | Cmd+Q | Alt+F4 (no standard quit) |
231
+ | Preferences | Cmd+, | Ctrl+, (convention, not OS standard) |
232
+ | Select All | Cmd+A | Ctrl+A |
233
+ | Print | Cmd+P | Ctrl+P |
234
+ | Full Screen | Cmd+Ctrl+F or globe+F | F11 |
235
+ | Tab switching | Cmd+1..9 or Ctrl+Tab | Ctrl+1..9 or Ctrl+Tab |
236
+ | Command palette | Cmd+Shift+P | Ctrl+Shift+P |
237
+
238
+ **Best practices:**
239
+
240
+ - Never override OS-level shortcuts (e.g., Cmd+Tab, Alt+Tab, Cmd+Space).
241
+ - Display shortcuts next to menu items so users can learn them.
242
+ - Support a "Keyboard Shortcuts" reference panel (Cmd+/ or Ctrl+/).
243
+ - Allow custom shortcut binding in power-user apps.
244
+ - Use Cmd on macOS and Ctrl on Windows/Linux — never use Ctrl as the primary modifier on macOS.
245
+
246
+ ### 2.6 Right-Click Context Menus
247
+
248
+ Context menus are a primary interaction pattern on desktop. Users right-click instinctively.
249
+
250
+ **Design rules:**
251
+
252
+ - Always provide context menus on interactive elements (list items, text, images, files, canvas objects).
253
+ - Use native context menus — not custom HTML/CSS overlays. Users can tell the difference by rendering style, animation timing, and behavior with screen edges.
254
+ - Keep menus short (5-10 items). Use separators to group related actions.
255
+ - Place destructive actions (Delete, Remove) at the bottom, separated from other items.
256
+ - Submenus should be at most one level deep. Deeply nested submenus are unusable.
257
+ - Include keyboard shortcut hints next to menu items.
258
+ - Dynamically adjust menu content based on the selected item(s) and current state.
259
+ - On macOS, context menus also appear via Ctrl+Click and the menu key on extended keyboards.
260
+
261
+ ### 2.7 Status Bar Patterns
262
+
263
+ The status bar sits at the bottom of the window and displays non-critical, ambient information.
264
+
265
+ **Common content:**
266
+
267
+ - Current cursor position or selection info (text editors: line/column)
268
+ - Document statistics (word count, file size)
269
+ - Encoding and line-ending format
270
+ - Zoom level
271
+ - Background task progress
272
+ - Connection status (online/offline, sync state)
273
+
274
+ **Conventions:**
275
+
276
+ - Keep status bar text small (11-12px) and low-contrast so it does not compete with content.
277
+ - Make it toggleable via the View menu.
278
+ - Interactive elements in the status bar (zoom slider, encoding selector) should use click, not right-click.
279
+ - VS Code popularized the "rich status bar" pattern with clickable segments — this is now expected in developer tools.
280
+
281
+ ### 2.8 Window Resizing and Responsive Behavior
282
+
283
+ Desktop apps must handle arbitrary window sizes gracefully.
284
+
285
+ **Minimum and maximum sizes:**
286
+
287
+ - Set a minimum window size that prevents layout breakage (commonly 800x600 or 1024x768 for productivity apps, 400x300 for utility windows).
288
+ - Maximum size is generally unconstrained (let users use their full screen).
289
+
290
+ **Responsive strategies:**
291
+
292
+ - **Sidebar collapse:** At narrow widths, collapse the sidebar to icon-only mode or hide it behind a toggle button. Threshold: typically 700-900px window width.
293
+ - **Column stacking:** In three-column layouts, drop to two columns, then one column as width decreases.
294
+ - **Content reflow:** Text wraps, images resize, grid layouts adjust column count.
295
+ - **Overflow menus:** Toolbar items that do not fit move into a chevron/overflow dropdown.
296
+
297
+ **High-DPI / Retina behavior:**
298
+
299
+ - Render all UI elements at the display's native resolution.
300
+ - Use vector icons (SVG) or provide 1x, 2x, and 3x raster assets.
301
+ - Test on mixed-DPI multi-monitor setups (e.g., Retina laptop + 1080p external).
302
+ - Handle DPI changes when windows move between monitors.
303
+
304
+ ---
305
+
306
+ ## 3. Component Conventions
307
+
308
+ ### 3.1 Native Controls vs Custom
309
+
310
+ **Always use native controls for:**
311
+
312
+ - File open/save dialogs — users expect OS-level file navigation, recent files, and favorites.
313
+ - Color pickers — the system color picker integrates with saved colors and accessibility features.
314
+ - Print dialogs — the system print dialog handles printer selection, page setup, and preview.
315
+ - Font pickers — the system font panel provides proper font browsing and preview.
316
+ - Date/time pickers — system pickers respect locale and calendar preferences.
317
+ - Alert/confirmation dialogs — system dialogs integrate with accessibility and voiceover.
318
+
319
+ **Use custom controls when:**
320
+
321
+ - The platform does not provide the needed control (e.g., a code editor, timeline, canvas).
322
+ - The control needs to look identical across platforms (design tools like Figma).
323
+ - The native control lacks needed features (e.g., rich text editor, data grid with virtual scrolling).
324
+
325
+ **Rules for custom controls:**
326
+
327
+ - Match the platform's visual language (corner radius, colors, typography, spacing).
328
+ - Support the same keyboard interactions as native equivalents (Tab to focus, Space to activate, Escape to dismiss).
329
+ - Implement proper accessibility (ARIA roles, focus management, screen reader announcements).
330
+ - Respect the system's color scheme (light/dark mode, accent color).
331
+
332
+ ### 3.2 Drag and Drop
333
+
334
+ Drag and drop is a fundamental desktop interaction absent or limited in web and mobile.
335
+
336
+ **Conventions:**
337
+
338
+ - **Visual feedback:** Show a drag preview (ghost image) that represents what is being dragged. Highlight valid drop targets with a border or background color change. Show a "forbidden" cursor over invalid drop zones.
339
+ - **Drop target affordance:** If your app has a file drop target, also provide a click-to-browse alternative. Not all users discover drag-and-drop.
340
+ - **Partial acceptance:** If a user drops a mix of supported and unsupported file types, accept the valid items and silently skip the rest. Show a brief, non-blocking notification if items were skipped.
341
+ - **Spring-loaded folders:** On macOS, hovering a dragged item over a folder for ~1 second opens it. Implement similar expand-on-hover behavior for tree views.
342
+ - **Cross-application drag:** Support dragging files, text, and images between your app and other apps (Finder, Explorer, desktop).
343
+ - **Cancellation:** Pressing Escape during a drag should cancel the operation. Dropping outside a valid target should also cancel without side effects.
344
+
345
+ ### 3.3 System Tray / Menu Bar Icons
346
+
347
+ **macOS menu bar extras:**
348
+
349
+ - Use template images (monochrome, `Template` suffix) that automatically adapt to light/dark mode and menu bar tinting.
350
+ - Size: 18x18pt (36x36px @2x). Keep icons simple — they render at small sizes in a constrained space.
351
+ - Provide a popover or dropdown menu on click. Do not open a full window.
352
+ - Reserve menu bar extras for apps that run persistently in the background (VPN, time tracking, clipboard managers).
353
+
354
+ **Windows system tray (notification area):**
355
+
356
+ - Icons appear in the system tray at the right end of the taskbar.
357
+ - Provide a context menu on right-click and a primary action (show main window) on left-click.
358
+ - Use the notification area for background status — not as a primary interaction point.
359
+ - Windows 11 may hide tray icons by default; users must explicitly pin them.
360
+
361
+ **Linux (GNOME / KDE):**
362
+
363
+ - GNOME does not natively support system tray icons (removed in GNOME 3). Use the AppIndicator extension (libappindicator) or portal APIs.
364
+ - KDE supports system tray icons natively through the Status Notifier protocol.
365
+
366
+ ### 3.4 Notifications
367
+
368
+ **When to use native (system) notifications:**
369
+
370
+ - Background events the user should know about (download complete, message received, build finished).
371
+ - Time-sensitive information when the app is not focused.
372
+ - Events that benefit from OS-level grouping, Do Not Disturb integration, and notification center history.
373
+
374
+ **When to use in-app notifications (toasts/banners):**
375
+
376
+ - Confirmations of user-initiated actions ("File saved," "Settings updated").
377
+ - Non-critical status updates while the user is actively using the app.
378
+ - Contextual messages that relate to the current view.
379
+
380
+ **Best practices:**
381
+
382
+ - Use native notifications sparingly — notification fatigue causes users to disable them entirely.
383
+ - On macOS, request notification permissions and support notification categories (informational, time-sensitive, critical).
384
+ - On Windows, integrate with the Action Center. Support toast actions (inline reply, quick actions).
385
+ - Include an app setting to control notification frequency and types.
386
+ - Never use sound for non-critical notifications.
387
+
388
+ ### 3.5 Preferences / Settings Window
389
+
390
+ **macOS convention:**
391
+
392
+ - Open via the app menu or Cmd+, (mandatory shortcut).
393
+ - Uses a toolbar with category icons (General, Appearance, Accounts, Advanced) — each category shows a panel of related settings.
394
+ - Window title changes to reflect the selected category.
395
+ - Settings take effect immediately (no "Save" or "Apply" button). Use toggle switches, dropdown menus, and checkboxes.
396
+ - The window should not close on Escape — it is a regular window, not a transient dialog.
397
+ - Settings window remembers its last-viewed category.
398
+
399
+ **Windows convention:**
400
+
401
+ - Open via File > Options, Tools > Settings, or the gear icon.
402
+ - Uses a left-side navigation pane with category pages (similar to Windows 11 Settings app).
403
+ - May include an "OK" / "Cancel" / "Apply" button pattern for settings that require explicit confirmation, though modern apps increasingly favor immediate application.
404
+
405
+ **GNOME convention:**
406
+
407
+ - Open via the primary menu > Preferences.
408
+ - Uses a flat or mildly categorized layout with AdwPreferencesPage and AdwPreferencesGroup.
409
+ - Settings apply immediately. Switches and dropdowns are the primary controls.
410
+ - Single-window, scrollable layout — no separate window per category.
411
+
412
+ ---
413
+
414
+ ## 4. Typography & Spacing System
415
+
416
+ ### 4.1 macOS Typography
417
+
418
+ **System font:** SF Pro (San Francisco). Automatically selected by the system.
419
+
420
+ - **Optical sizes:** SF Pro Text (below 20pt) has larger apertures and more generous letter-spacing for legibility. SF Pro Display (20pt and above) has tighter spacing optimized for headlines.
421
+ - **Dynamic tracking:** The system automatically adjusts letter spacing per point size for optimal readability.
422
+
423
+ **Default text styles (macOS):**
424
+
425
+ | Style | Weight | Size | Use |
426
+ |---|---|---|---|
427
+ | Large Title | Regular | 26pt | Window titles, hero text |
428
+ | Title 1 | Regular | 22pt | Section headers |
429
+ | Title 2 | Regular | 17pt | Subsection headers |
430
+ | Title 3 | Semibold | 15pt | Group headers |
431
+ | Headline | Bold | 13pt | Emphasized body text |
432
+ | Body | Regular | 13pt | Primary content (default) |
433
+ | Callout | Regular | 12pt | Secondary descriptions |
434
+ | Subheadline | Regular | 11pt | Metadata, captions |
435
+ | Footnote | Regular | 10pt | Legal text, footnotes |
436
+ | Caption 1 | Regular | 10pt | Labels, annotations |
437
+ | Caption 2 | Medium | 10pt | Timestamps, badges |
438
+
439
+ **Key detail:** macOS body text defaults to 13pt — smaller than iOS (17pt) because desktop users sit farther from the screen and have precise pointing devices.
440
+
441
+ ### 4.2 Windows Typography
442
+
443
+ **System font:** Segoe UI Variable. A variable font with two axes:
444
+
445
+ - **Weight axis (wght):** Incremental from Thin (100) to Bold (700).
446
+ - **Optical size axis (opsz):** Automatic, optimizes glyph shapes from 8pt to 36pt. Smaller sizes get wider counters; larger sizes get more personality.
447
+
448
+ **Default type ramp (Windows 11 / Fluent 2):**
449
+
450
+ | Style | Weight | Size | Line Height | Use |
451
+ |---|---|---|---|---|
452
+ | Display | Semibold | 68px | 92px | Hero areas |
453
+ | Title Large | Semibold | 40px | 52px | Page titles |
454
+ | Title | Semibold | 28px | 36px | Section titles |
455
+ | Subtitle | Semibold | 20px | 26px | Subsection headers |
456
+ | Body Large | Regular | 18px | 24px | Emphasized body |
457
+ | Body | Regular | 14px | 20px | Primary content (default) |
458
+ | Caption | Regular | 12px | 16px | Secondary, metadata |
459
+
460
+ **Spacing grid:** 4px base unit. All spacing values are multiples of 4 (4, 8, 12, 16, 20, 24, 32, 40, 48, 64px).
461
+
462
+ ### 4.3 Linux Typography
463
+
464
+ **GNOME (Adwaita, as of GNOME 48+):**
465
+
466
+ - **Body font:** Adwaita Sans (based on Inter). Default body size: 11pt (~14.67px).
467
+ - **Monospace font:** Adwaita Mono (based on Iosevka).
468
+ - **Heading scale:** GNOME HIG uses CSS classes (`.title-1` through `.title-4`, `.heading`, `.body`, `.caption`) to define the type scale.
469
+
470
+ **KDE (Breeze):**
471
+
472
+ - **Body font:** Noto Sans (default on many distributions). Default size: 10pt.
473
+ - **KDE supports user-configurable fonts** at the system level. Apps should use the system font setting rather than hardcoding.
474
+
475
+ ### 4.4 Desktop Density and Click Targets
476
+
477
+ Desktop interfaces are denser than mobile because users have a precise pointing device (mouse/trackpad).
478
+
479
+ **Minimum click target sizes:**
480
+
481
+ | Platform | Minimum | Recommended |
482
+ |---|---|---|
483
+ | macOS | 24x24pt | 28x28pt for toolbar icons |
484
+ | Windows (Fluent) | 24x24px (32x32px with padding) | 36x36px for primary actions |
485
+ | GNOME | 24x24px | 34x34px for header bar buttons |
486
+ | Touch-enabled (Windows tablets) | 40x40px | 48x48px |
487
+
488
+ **Spacing density:**
489
+
490
+ - Desktop UIs use tighter spacing than mobile: 4-8px between related elements, 12-16px between groups, 24-32px between sections.
491
+ - Lists and tables commonly use 28-36px row heights (compared to 48-56px on mobile).
492
+ - Padding within controls: 6-8px vertical, 12-16px horizontal.
493
+
494
+ ---
495
+
496
+ ## 5. Common Mistakes
497
+
498
+ ### 5.1 Web App Feeling in a Native Shell
499
+
500
+ **The problem:** Wrapping a web app in Electron/Tauri without adapting its design to desktop conventions. Users immediately notice custom scrollbars, HTML context menus, non-native file dialogs, and web-style navigation (back/forward buttons instead of sidebars).
501
+
502
+ **The fix:** Audit every interaction point against the target platform's HIG. Replace custom implementations with native equivalents for dialogs, menus, and notifications. Use the system font. Match the platform's control styles (border radius, focus rings, hover states).
503
+
504
+ ### 5.2 Ignoring Platform Keyboard Shortcuts
505
+
506
+ **The problem:** Using Ctrl as the modifier on macOS, not implementing standard shortcuts (Cmd+, for preferences, Cmd+Q for quit), or overriding OS-level shortcuts.
507
+
508
+ **The fix:** Maintain a platform-specific shortcut map. Test all standard shortcuts (new, open, save, undo, redo, find, close, quit, preferences). Detect the platform at runtime and remap accordingly. Display correct modifier symbols in menus and tooltips.
509
+
510
+ ### 5.3 Not Supporting Multi-Window
511
+
512
+ **The problem:** Forcing everything into a single window with tabs when users expect to spread work across multiple windows or monitors.
513
+
514
+ **The fix:** Support opening documents/items in new windows. Implement a Window menu (macOS) or taskbar grouping (Windows). Allow detaching tabs into separate windows. Remember per-window state independently.
515
+
516
+ ### 5.4 Poor DPI / Scaling Support
517
+
518
+ **The problem:** Blurry rendering on Retina/4K displays. Incorrectly sized UI on high-DPI screens. Broken layouts when moving windows between monitors with different scale factors.
519
+
520
+ **The fix:**
521
+ - Use vector graphics (SVG) for icons or provide @1x, @2x, @3x raster assets.
522
+ - Test on Retina Mac (2x), Windows at 100%, 125%, 150%, 200% scaling, and mixed-DPI multi-monitor setups.
523
+ - Handle DPI-change events (e.g., when a window is dragged from a Retina display to an external 1080p monitor).
524
+ - Never hardcode pixel values for layout — use logical points or density-independent pixels.
525
+ - On Windows, declare DPI awareness in the app manifest to avoid automatic (blurry) scaling by the OS.
526
+
527
+ ### 5.5 Missing Dark Mode Support
528
+
529
+ **The problem:** Hardcoding light colors, not responding to system theme changes, or implementing dark mode that does not match the platform's dark appearance.
530
+
531
+ **The fix:**
532
+ - Detect the system theme preference at launch and respond to changes in real time.
533
+ - On macOS, use semantic colors (e.g., `NSColor.textColor`, `NSColor.windowBackgroundColor`) that automatically adapt.
534
+ - On Windows, follow the Fluent 2 dark theme palette. Use Mica/Acrylic materials that adapt automatically.
535
+ - On GNOME, libadwaita handles dark mode via `AdwStyleManager`. Use Adwaita CSS variables.
536
+ - Test both modes thoroughly — dark mode is not just inverting colors. Check contrast ratios, image visibility, and shadow rendering.
537
+
538
+ ### 5.6 Ignoring Right-Click Context Menus
539
+
540
+ **The problem:** Not providing context menus, or providing empty/generic ones. Desktop users right-click constantly and expect contextually relevant options.
541
+
542
+ **The fix:** Implement context menus on all interactive elements. Include the most common actions for the clicked element. Add keyboard shortcut hints. Use native menu rendering, not custom overlays.
543
+
544
+ ### 5.7 No Window State Persistence
545
+
546
+ **The problem:** The app opens at a default size/position every time, forgetting the user's preferred layout.
547
+
548
+ **The fix:** Save window bounds (position, size, maximized state) on close. Restore on next launch. Handle edge cases: saved position on a now-disconnected monitor, saved size larger than current screen, display arrangement changes.
549
+
550
+ ### 5.8 Blocking the Main Thread
551
+
552
+ **The problem:** Long-running operations freeze the entire UI. The window becomes unresponsive, the title bar shows "Not Responding" (Windows), or the spinning beach ball appears (macOS).
553
+
554
+ **The fix:** Run all computation, file I/O, and network requests off the main thread. Use worker threads, utility processes (Electron), or async operations. Show progress indicators for operations longer than 300ms. Allow cancellation of long operations.
555
+
556
+ ### 5.9 Inconsistent Cross-Platform Behavior
557
+
558
+ **The problem:** The app looks and behaves identically on all platforms, ignoring each platform's conventions. Or conversely, the app has such different UIs per platform that users cannot transfer knowledge between them.
559
+
560
+ **The fix:** Share the information architecture and core interaction patterns across platforms. Adapt the visual presentation and platform-specific interactions (menus, shortcuts, window chrome, file dialogs) to each platform's conventions. Use a shared design system with platform-specific overrides.
561
+
562
+ ### 5.10 Poor Accessibility
563
+
564
+ **The problem:** Custom controls that are invisible to screen readers, missing keyboard navigation, insufficient contrast, no support for system accessibility preferences (reduced motion, increased contrast, reduced transparency).
565
+
566
+ **The fix:** Use native controls where possible (they come with built-in accessibility). For custom controls, implement full ARIA roles, focus management, and keyboard interaction. Respect macOS Accessibility preferences, Windows High Contrast mode, and GNOME a11y settings. Test with VoiceOver (macOS), Narrator/NVDA (Windows), and Orca (Linux).
567
+
568
+ ---
569
+
570
+ ## 6. Desktop Native Design Checklist
571
+
572
+ Use this checklist to verify that a desktop application meets native design standards across platforms.
573
+
574
+ ### Platform Integration
575
+
576
+ - [ ] **System font used.** UI chrome uses SF Pro (macOS), Segoe UI Variable (Windows), or Adwaita Sans / system default (Linux) — not a custom bundled font for standard controls.
577
+ - [ ] **Native window chrome.** Window controls (close/minimize/maximize) are in the correct position for each platform. Title bar style matches platform conventions.
578
+ - [ ] **Menu bar present (macOS).** All app actions are accessible through the global menu bar. Standard menu order is followed (App, File, Edit, View, Window, Help).
579
+ - [ ] **Keyboard shortcuts correct.** Cmd is used as primary modifier on macOS, Ctrl on Windows/Linux. All standard shortcuts (new, open, save, undo, find, close, quit, preferences) are implemented.
580
+ - [ ] **Native dialogs used.** File open/save, color picker, print dialog, and font picker all use the OS-provided implementations.
581
+ - [ ] **Context menus provided.** Right-click on interactive elements shows a native context menu with relevant actions and shortcut hints.
582
+
583
+ ### Visual Design
584
+
585
+ - [ ] **Dark mode supported.** The app detects and responds to system theme changes in real time. Both light and dark modes are tested for contrast and readability.
586
+ - [ ] **High-DPI rendering.** All UI elements render crisply on Retina (macOS), high-DPI (Windows at 150%+), and standard displays. Vector icons or multi-resolution raster assets provided.
587
+ - [ ] **Mixed-DPI multi-monitor tested.** Moving windows between monitors with different scale factors does not cause blurriness or layout issues.
588
+ - [ ] **Platform materials used.** Vibrancy/Liquid Glass on macOS, Mica/Acrylic on Windows 11, or Adwaita styling on GNOME — as appropriate.
589
+ - [ ] **Consistent spacing.** Spacing follows the platform's grid system (8pt on macOS, 4px multiples on Windows). Density is appropriate for desktop (not mobile-spaced).
590
+
591
+ ### Navigation & Interaction
592
+
593
+ - [ ] **Sidebar navigation implemented.** For apps with multiple sections, a collapsible sidebar provides persistent navigation. Sidebar collapses gracefully at narrow window widths.
594
+ - [ ] **Multi-window support.** Users can open content in multiple windows. Window positions and sizes are persisted and restored.
595
+ - [ ] **Drag and drop.** Files and content can be dragged into (and, where appropriate, out of) the app. Visual feedback shows valid drop targets. Escape cancels drag.
596
+ - [ ] **Window state persistence.** Window size, position, maximized state, and sidebar width are saved and restored across sessions.
597
+
598
+ ### System Integration
599
+
600
+ - [ ] **System notifications.** Background events use native OS notifications that integrate with notification center / action center. Notifications respect Do Not Disturb.
601
+ - [ ] **System tray / menu bar icon** (if applicable). Background apps provide a tray icon with context menu. macOS uses template images. Windows supports tray icon pinning.
602
+ - [ ] **Accessibility verified.** Screen reader compatibility tested (VoiceOver, Narrator/NVDA, Orca). Full keyboard navigation. System accessibility preferences (reduced motion, high contrast, reduced transparency) respected.
603
+ - [ ] **Auto-update mechanism.** The app checks for updates in the background and notifies the user without disrupting their work. Update installation is user-initiated.
604
+
605
+ ### Performance
606
+
607
+ - [ ] **Startup time under 2 seconds.** The app shows meaningful UI within 2 seconds of launch. Use lazy loading for non-critical content.
608
+ - [ ] **No UI freezing.** Long operations run off the main thread. Progress indicators shown for tasks exceeding 300ms. Spinning beach ball (macOS) and "Not Responding" (Windows) never appear during normal use.
609
+
610
+ ---
611
+
612
+ *Researched: 2026-03-07 | Sources: [Apple Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/), [Apple HIG — Sidebars](https://developer.apple.com/design/human-interface-guidelines/sidebars), [Apple HIG — Toolbars](https://developer.apple.com/design/human-interface-guidelines/toolbars), [Apple HIG — The Menu Bar](https://developer.apple.com/design/human-interface-guidelines/the-menu-bar), [Apple HIG — Typography](https://developer.apple.com/design/human-interface-guidelines/typography), [Apple HIG — Drag and Drop](https://developer.apple.com/design/human-interface-guidelines/drag-and-drop), [Apple HIG — Designing for macOS](https://developer.apple.com/design/human-interface-guidelines/designing-for-macos), [Meet Liquid Glass — WWDC25](https://developer.apple.com/videos/play/wwdc2025/219/), [Apple Liquid Glass Newsroom](https://www.apple.com/newsroom/2025/06/apple-introduces-a-delightful-and-elegant-new-software-design/), [Liquid Glass Accessibility](https://designedforhumans.tech/blog/liquid-glass-smart-or-bad-for-accessibility), [Microsoft Fluent 2 — Material](https://fluent2.microsoft.design/material), [Microsoft Fluent 2 — Typography](https://fluent2.microsoft.design/typography), [Microsoft Fluent 2 — Layout](https://fluent2.microsoft.design/layout), [Windows Typography](https://learn.microsoft.com/en-us/windows/apps/design/signature-experiences/typography), [Windows Materials](https://learn.microsoft.com/en-us/windows/apps/design/signature-experiences/materials), [Windows Acrylic Material](https://learn.microsoft.com/en-us/windows/apps/design/style/acrylic), [Windows High DPI](https://learn.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows), [Windows UX Checklist](https://learn.microsoft.com/en-us/windows/win32/uxguide/top-violations), [Windows App Best Practices](https://learn.microsoft.com/en-us/windows/apps/get-started/best-practices), [GNOME Human Interface Guidelines](https://developer.gnome.org/hig/), [GNOME HIG — Patterns](https://developer.gnome.org/hig/patterns.html), [GNOME HIG — Guidelines](https://developer.gnome.org/hig/guidelines.html), [GNOME HIG — Design Principles](https://developer.gnome.org/hig/principles.html), [Adwaita Design Language](https://en.m.wikipedia.org/wiki/GNOME_Human_Interface_Guidelines), [libadwaita Adaptive Sidebar](https://www.phoronix.com/news/GNOME-AdwSidebar), [libadwaita 1.8 Release](https://linuxiac.com/libadwaita-1-8-arrives-alongside-gnome-49/), [KDE Human Interface Guidelines](https://develop.kde.org/hig/), [Fluent Design System — Wikipedia](https://en.wikipedia.org/wiki/Fluent_Design_System), [Tauri vs Electron 2026](https://blog.nishikanta.in/tauri-vs-electron-the-complete-developers-guide-2026), [Community HIG Extras](https://github.com/sindresorhus/human-interface-guidelines-extras), [Cross-Platform Desktop UX](https://www.todesktop.com/blog/posts/designing-desktop-apps-cross-platform-ux)*
@@ -0,0 +1,25 @@
1
+ # Directory Purpose
2
+
3
+ The `platforms` directory highlights the specific UI conventions, constraints, and paradigms unique to different operating systems and form factors.
4
+
5
+ # Key Concepts
6
+
7
+ - Native vs cross-platform UX
8
+ - Adapting to device constraints
9
+ - Following OS-specific human interface guidelines
10
+
11
+ # File Map
12
+
13
+ - `desktop-native.md` — macOS and Windows app conventions
14
+ - `mobile-android.md` — Material Design and Android idioms
15
+ - `mobile-cross-platform.md` — balancing OS paradigms in Flutter/React Native
16
+ - `mobile-ios.md` — Apple Human Interface Guidelines (HIG)
17
+ - `tablet.md` — utilizing split views and larger touch targets
18
+ - `web-dashboard.md` — high-density data and complex tools
19
+ - `web-responsive.md` — adapting standard websites to mobile
20
+
21
+ # Reading Guide
22
+
23
+ If designing an iPhone app → read `mobile-ios.md`
24
+ If designing a B2B web app → read `web-dashboard.md`
25
+ If building a Flutter app → read `mobile-cross-platform.md`