@cyberskill/design 1.1.0 → 1.2.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 (358) hide show
  1. package/DESIGN.md +25 -3
  2. package/README.md +7 -7
  3. package/SKILL.md +4 -4
  4. package/VERSION +1 -1
  5. package/_ds_bundle.js +819 -416
  6. package/_ds_manifest.json +1 -1
  7. package/_esm/cs.mjs +18 -4
  8. package/_esm/react.d.ts +2 -0
  9. package/_esm/react.mjs +1 -0
  10. package/base/a11y.css +18 -0
  11. package/base/ai.css +2 -2
  12. package/base/collections.css +8 -3
  13. package/base/components.css +11 -2
  14. package/base/controls.css +61 -48
  15. package/base/data.css +3 -3
  16. package/base/feedback.css +5 -0
  17. package/base/forms.css +9 -3
  18. package/base/glass.css +6 -0
  19. package/base/navigation.css +8 -2
  20. package/base/reset.css +1 -1
  21. package/base/responsive.css +25 -0
  22. package/base/shell.css +7 -1
  23. package/components/_i18n/i18n.js +13 -1
  24. package/components/_i18n/strings.js +52 -3
  25. package/components/ai/ConfidenceMeter.jsx +8 -6
  26. package/components/data/Watermark.jsx +11 -3
  27. package/components/datatable/DataGrid.jsx +10 -1
  28. package/components/dialog/Dialog.jsx +13 -45
  29. package/components/feedback/ProgressBar.jsx +4 -2
  30. package/components/forms/Cascader.jsx +69 -6
  31. package/components/forms/Editor.jsx +37 -2
  32. package/components/forms/FileUpload.jsx +22 -8
  33. package/components/forms/Switch.jsx +16 -2
  34. package/components/forms/TimePicker.jsx +3 -1
  35. package/components/icon/Icon.jsx +1 -0
  36. package/components/navigation/CommandPalette.jsx +22 -7
  37. package/components/navigation/Toolbar.jsx +2 -1
  38. package/components/overlays/AlertDialog.jsx +19 -49
  39. package/components/overlays/Drawer.jsx +24 -20
  40. package/components/overlays/OverlayManager.d.ts +40 -0
  41. package/components/overlays/OverlayManager.jsx +214 -0
  42. package/components/overlays/OverlayManager.prompt.md +12 -0
  43. package/components/overlays/Tour.jsx +14 -7
  44. package/dist/styles.min.css +2004 -0
  45. package/docs/benchmark-rubric.md +1 -1
  46. package/docs/ci-cd.md +3 -1
  47. package/docs/consuming.md +6 -6
  48. package/docs/contrast-report.md +1 -1
  49. package/docs/conventions.md +4 -4
  50. package/docs/decisions/container-query-migration.md +18 -0
  51. package/docs/decisions/overlay-manager-design.md +101 -0
  52. package/docs/decisions.md +5 -5
  53. package/docs/design-styles.md +1 -1
  54. package/docs/plans/cyberskill-design-system-audit-and-12-month-evolution-plan.md +1490 -0
  55. package/docs/quality-gates.md +21 -9
  56. package/docs/release-notes.md +10 -2
  57. package/docs/status/data/status-feed.json +1 -1
  58. package/docs/status/data/task/TASK-REL-002.js +1 -0
  59. package/docs/status/index.html +7 -6
  60. package/docs/status/status-legacy.html +13 -12
  61. package/docs/sync.md +1 -1
  62. package/docs/tasks/BACKLOG.md +1 -0
  63. package/docs/tasks/_state/commit-links.yaml +14 -0
  64. package/docs/tasks/release/TASK-REL-002-republish-1-1-1/spec.md +54 -0
  65. package/docs/vi/benchmark-rubric.md +1 -1
  66. package/docs/vi/ci-cd.md +3 -1
  67. package/docs/vi/consuming.md +6 -6
  68. package/docs/vi/contrast-report.md +1 -1
  69. package/docs/vi/conventions.md +2 -2
  70. package/docs/vi/decisions.md +5 -5
  71. package/docs/vi/quality-gates.md +21 -9
  72. package/docs/vi/release-notes.md +10 -2
  73. package/docs/vi/sync.md +1 -1
  74. package/guidelines/atomic-view.html +11 -7
  75. package/llms.txt +5 -5
  76. package/package.json +14 -6
  77. package/templates/_ds-base.canonical.js +55 -0
  78. package/templates/ai-cluster-demo.html +2 -2
  79. package/templates/app-shell/AppShell.dc.html +5 -3
  80. package/templates/app-shell/ds-base.js +33 -1
  81. package/templates/app-shell/support.js +13 -20
  82. package/templates/article/Article.dc.html +5 -1
  83. package/templates/article/ds-base.js +33 -1
  84. package/templates/article/support.js +13 -20
  85. package/templates/auth/Auth.dc.html +10 -5
  86. package/templates/auth/content-schema.json +12 -0
  87. package/templates/auth/ds-base.js +33 -1
  88. package/templates/auth/support.js +13 -20
  89. package/templates/bod-deck/BodDeck.dc.html +11 -10
  90. package/templates/bod-deck/ds-base.js +33 -1
  91. package/templates/bod-deck/support.js +13 -20
  92. package/templates/bod-investor-update/BodInvestorUpdate.dc.html +4 -3
  93. package/templates/bod-investor-update/ds-base.js +33 -1
  94. package/templates/bod-investor-update/support.js +13 -20
  95. package/templates/bod-memo/BodMemo.dc.html +6 -5
  96. package/templates/bod-memo/ds-base.js +33 -1
  97. package/templates/bod-memo/support.js +13 -20
  98. package/templates/bod-minutes/BodMinutes.dc.html +2 -1
  99. package/templates/bod-minutes/ds-base.js +33 -1
  100. package/templates/bod-minutes/support.js +13 -20
  101. package/templates/bod-report/BodReport.dc.html +3 -2
  102. package/templates/bod-report/ds-base.js +33 -1
  103. package/templates/bod-report/support.js +13 -20
  104. package/templates/bod-resolution/BodResolution.dc.html +5 -4
  105. package/templates/bod-resolution/ds-base.js +33 -1
  106. package/templates/bod-resolution/support.js +13 -20
  107. package/templates/culture-event-invite/CultureEventInvite.dc.html +3 -2
  108. package/templates/culture-event-invite/ds-base.js +33 -1
  109. package/templates/culture-event-invite/support.js +13 -20
  110. package/templates/dashboard/Dashboard.dc.html +7 -3
  111. package/templates/dashboard/ds-base.js +33 -1
  112. package/templates/dashboard/support.js +13 -20
  113. package/templates/delivery-change-note/DeliveryChangeNote.dc.html +2 -1
  114. package/templates/delivery-change-note/ds-base.js +33 -1
  115. package/templates/delivery-change-note/support.js +13 -20
  116. package/templates/delivery-kickoff/DeliveryKickoff.dc.html +3 -2
  117. package/templates/delivery-kickoff/ds-base.js +33 -1
  118. package/templates/delivery-kickoff/support.js +13 -20
  119. package/templates/delivery-qbr-deck/DeliveryQbrDeck.dc.html +6 -5
  120. package/templates/delivery-qbr-deck/ds-base.js +33 -1
  121. package/templates/delivery-qbr-deck/support.js +13 -20
  122. package/templates/delivery-runbook/DeliveryRunbook.dc.html +3 -2
  123. package/templates/delivery-runbook/ds-base.js +33 -1
  124. package/templates/delivery-runbook/support.js +13 -20
  125. package/templates/delivery-status-email/DeliveryStatusEmail.dc.html +3 -2
  126. package/templates/delivery-status-email/ds-base.js +33 -1
  127. package/templates/delivery-status-email/support.js +13 -20
  128. package/templates/doc-style-guide/DocStyleGuide.dc.html +67 -64
  129. package/templates/doc-style-guide/ds-base.js +33 -1
  130. package/templates/doc-style-guide/support.js +13 -20
  131. package/templates/doc-suite-index/DocSuiteIndex.dc.html +46 -45
  132. package/templates/doc-suite-index/ds-base.js +33 -1
  133. package/templates/doc-suite-index/support.js +13 -20
  134. package/templates/doc-templates/DocTemplates.dc.html +42 -41
  135. package/templates/doc-templates/ds-base.js +33 -1
  136. package/templates/doc-templates/support.js +13 -20
  137. package/templates/email/Email.dc.html +3 -2
  138. package/templates/email/ds-base.js +33 -1
  139. package/templates/email/support.js +13 -20
  140. package/templates/finance-dunning-email/FinanceDunningEmail.dc.html +4 -3
  141. package/templates/finance-dunning-email/ds-base.js +33 -1
  142. package/templates/finance-dunning-email/support.js +13 -20
  143. package/templates/finance-expense-report/FinanceExpenseReport.dc.html +4 -3
  144. package/templates/finance-expense-report/ds-base.js +33 -1
  145. package/templates/finance-expense-report/support.js +13 -20
  146. package/templates/finance-invoice/FinanceInvoice.dc.html +4 -3
  147. package/templates/finance-invoice/ds-base.js +33 -1
  148. package/templates/finance-invoice/support.js +13 -20
  149. package/templates/finance-quote/FinanceQuote.dc.html +4 -3
  150. package/templates/finance-quote/ds-base.js +33 -1
  151. package/templates/finance-quote/support.js +13 -20
  152. package/templates/hr-announcement/HrAnnouncement.dc.html +5 -4
  153. package/templates/hr-announcement/ds-base.js +33 -1
  154. package/templates/hr-announcement/support.js +13 -20
  155. package/templates/hr-interview-kit/HrInterviewKit.dc.html +4 -3
  156. package/templates/hr-interview-kit/ds-base.js +33 -1
  157. package/templates/hr-interview-kit/support.js +13 -20
  158. package/templates/hr-offboarding/HrOffboarding.dc.html +2 -1
  159. package/templates/hr-offboarding/ds-base.js +33 -1
  160. package/templates/hr-offboarding/support.js +13 -20
  161. package/templates/hr-performance-review/HrPerformanceReview.dc.html +2 -1
  162. package/templates/hr-performance-review/ds-base.js +33 -1
  163. package/templates/hr-performance-review/support.js +13 -20
  164. package/templates/hr-pip/HrPip.dc.html +2 -1
  165. package/templates/hr-pip/ds-base.js +33 -1
  166. package/templates/hr-pip/support.js +13 -20
  167. package/templates/kitchen-sink.html +9 -4
  168. package/templates/legal-msa/LegalMsa.dc.html +2 -1
  169. package/templates/legal-msa/ds-base.js +33 -1
  170. package/templates/legal-msa/support.js +13 -20
  171. package/templates/legal-sow/LegalSow.dc.html +2 -1
  172. package/templates/legal-sow/ds-base.js +33 -1
  173. package/templates/legal-sow/support.js +13 -20
  174. package/templates/marketing-campaign-brief/MarketingCampaignBrief.dc.html +3 -2
  175. package/templates/marketing-campaign-brief/ds-base.js +33 -1
  176. package/templates/marketing-campaign-brief/support.js +13 -20
  177. package/templates/marketing-case-study/MarketingCaseStudy.dc.html +5 -4
  178. package/templates/marketing-case-study/ds-base.js +33 -1
  179. package/templates/marketing-case-study/support.js +13 -20
  180. package/templates/marketing-launch/MarketingLaunch.dc.html +6 -5
  181. package/templates/marketing-launch/ds-base.js +33 -1
  182. package/templates/marketing-launch/support.js +13 -20
  183. package/templates/marketing-newsletter/MarketingNewsletter.dc.html +13 -12
  184. package/templates/marketing-newsletter/ds-base.js +33 -1
  185. package/templates/marketing-newsletter/support.js +13 -20
  186. package/templates/marketing-page/MarketingPage.dc.html +17 -12
  187. package/templates/marketing-page/ds-base.js +33 -1
  188. package/templates/marketing-page/support.js +13 -20
  189. package/templates/marketing-press-release/MarketingPressRelease.dc.html +2 -1
  190. package/templates/marketing-press-release/ds-base.js +33 -1
  191. package/templates/marketing-press-release/support.js +13 -20
  192. package/templates/marketing-social-kit/MarketingSocialKit.dc.html +5 -4
  193. package/templates/marketing-social-kit/ds-base.js +33 -1
  194. package/templates/marketing-social-kit/support.js +13 -20
  195. package/templates/sales-one-pager/SalesOnePager.dc.html +5 -4
  196. package/templates/sales-one-pager/ds-base.js +33 -1
  197. package/templates/sales-one-pager/support.js +13 -20
  198. package/templates/sales-proposal-deck/SalesProposalDeck.dc.html +7 -6
  199. package/templates/sales-proposal-deck/ds-base.js +33 -1
  200. package/templates/sales-proposal-deck/support.js +13 -20
  201. package/templates/settings/Settings.dc.html +5 -1
  202. package/templates/settings/ds-base.js +33 -1
  203. package/templates/settings/support.js +13 -20
  204. package/templates/slide-deck/SlideDeck.dc.html +5 -4
  205. package/templates/slide-deck/ds-base.js +33 -1
  206. package/templates/slide-deck/support.js +13 -20
  207. package/templates/team-meeting-agenda/TeamMeetingAgenda.dc.html +2 -1
  208. package/templates/team-meeting-agenda/ds-base.js +33 -1
  209. package/templates/team-meeting-agenda/support.js +13 -20
  210. package/templates/tech-incident-report/TechIncidentReport.dc.html +3 -2
  211. package/templates/tech-incident-report/ds-base.js +33 -1
  212. package/templates/tech-incident-report/support.js +13 -20
  213. package/templates/tech-release-notes/TechReleaseNotes.dc.html +6 -5
  214. package/templates/tech-release-notes/ds-base.js +33 -1
  215. package/templates/tech-release-notes/support.js +13 -20
  216. package/templates/tech-retro/TechRetro.dc.html +4 -3
  217. package/templates/tech-retro/ds-base.js +33 -1
  218. package/templates/tech-retro/support.js +13 -20
  219. package/templates/tech-rfc/TechRfc.dc.html +3 -2
  220. package/templates/tech-rfc/ds-base.js +33 -1
  221. package/templates/tech-rfc/support.js +13 -20
  222. package/templates/vn-appointment-transfer/VnAppointmentTransfer.dc.html +36 -35
  223. package/templates/vn-appointment-transfer/ds-base.js +33 -1
  224. package/templates/vn-appointment-transfer/support.js +13 -20
  225. package/templates/vn-certificate-of-employment/VnCertificateOfEmployment.dc.html +27 -26
  226. package/templates/vn-certificate-of-employment/ds-base.js +33 -1
  227. package/templates/vn-certificate-of-employment/support.js +13 -20
  228. package/templates/vn-code-of-conduct/VnCodeOfConduct.dc.html +44 -43
  229. package/templates/vn-code-of-conduct/ds-base.js +33 -1
  230. package/templates/vn-code-of-conduct/support.js +13 -20
  231. package/templates/vn-compensation-regulation/VnCompensationRegulation.dc.html +53 -52
  232. package/templates/vn-compensation-regulation/ds-base.js +33 -1
  233. package/templates/vn-compensation-regulation/support.js +13 -20
  234. package/templates/vn-contract-amendment/VnContractAmendment.dc.html +41 -40
  235. package/templates/vn-contract-amendment/ds-base.js +33 -1
  236. package/templates/vn-contract-amendment/support.js +13 -20
  237. package/templates/vn-contractor-agreement/VnContractorAgreement.dc.html +50 -49
  238. package/templates/vn-contractor-agreement/ds-base.js +33 -1
  239. package/templates/vn-contractor-agreement/support.js +13 -20
  240. package/templates/vn-data-protection-policy/VnDataProtectionPolicy.dc.html +54 -53
  241. package/templates/vn-data-protection-policy/ds-base.js +33 -1
  242. package/templates/vn-data-protection-policy/support.js +13 -20
  243. package/templates/vn-disciplinary-case-file/VnDisciplinaryCaseFile.dc.html +72 -71
  244. package/templates/vn-disciplinary-case-file/ds-base.js +33 -1
  245. package/templates/vn-disciplinary-case-file/support.js +13 -20
  246. package/templates/vn-disciplinary-schedule/VnDisciplinarySchedule.dc.html +21 -20
  247. package/templates/vn-disciplinary-schedule/ds-base.js +33 -1
  248. package/templates/vn-disciplinary-schedule/support.js +13 -20
  249. package/templates/vn-employee-request/VnEmployeeRequest.dc.html +54 -53
  250. package/templates/vn-employee-request/ds-base.js +33 -1
  251. package/templates/vn-employee-request/support.js +13 -20
  252. package/templates/vn-exit-handover/VnExitHandover.dc.html +122 -121
  253. package/templates/vn-exit-handover/ds-base.js +33 -1
  254. package/templates/vn-exit-handover/support.js +13 -20
  255. package/templates/vn-foreign-employee-pack/VnForeignEmployeePack.dc.html +31 -30
  256. package/templates/vn-foreign-employee-pack/ds-base.js +33 -1
  257. package/templates/vn-foreign-employee-pack/support.js +13 -20
  258. package/templates/vn-grassroots-democracy/VnGrassrootsDemocracy.dc.html +54 -53
  259. package/templates/vn-grassroots-democracy/ds-base.js +33 -1
  260. package/templates/vn-grassroots-democracy/support.js +13 -20
  261. package/templates/vn-infosec-policy/VnInfosecPolicy.dc.html +50 -49
  262. package/templates/vn-infosec-policy/ds-base.js +33 -1
  263. package/templates/vn-infosec-policy/support.js +13 -20
  264. package/templates/vn-internal-labor-regulations/VnInternalLaborRegulations.dc.html +84 -83
  265. package/templates/vn-internal-labor-regulations/ds-base.js +33 -1
  266. package/templates/vn-internal-labor-regulations/support.js +13 -20
  267. package/templates/vn-internship-agreement/VnInternshipAgreement.dc.html +44 -43
  268. package/templates/vn-internship-agreement/ds-base.js +33 -1
  269. package/templates/vn-internship-agreement/support.js +13 -20
  270. package/templates/vn-job-description/VnJobDescription.dc.html +28 -27
  271. package/templates/vn-job-description/ds-base.js +33 -1
  272. package/templates/vn-job-description/support.js +13 -20
  273. package/templates/vn-labor-contract/VnLaborContract.dc.html +109 -108
  274. package/templates/vn-labor-contract/ds-base.js +33 -1
  275. package/templates/vn-labor-contract/support.js +13 -20
  276. package/templates/vn-labour-management-book/VnLabourManagementBook.dc.html +32 -31
  277. package/templates/vn-labour-management-book/ds-base.js +33 -1
  278. package/templates/vn-labour-management-book/support.js +13 -20
  279. package/templates/vn-mutual-nda/VnMutualNda.dc.html +45 -44
  280. package/templates/vn-mutual-nda/ds-base.js +33 -1
  281. package/templates/vn-mutual-nda/support.js +13 -20
  282. package/templates/vn-ndnca-ip/VnNdncaIp.dc.html +73 -72
  283. package/templates/vn-ndnca-ip/ds-base.js +33 -1
  284. package/templates/vn-ndnca-ip/support.js +13 -20
  285. package/templates/vn-offer-letter/VnOfferLetter.dc.html +32 -31
  286. package/templates/vn-offer-letter/ds-base.js +33 -1
  287. package/templates/vn-offer-letter/support.js +13 -20
  288. package/templates/vn-onboarding-checklist/VnOnboardingChecklist.dc.html +16 -15
  289. package/templates/vn-onboarding-checklist/ds-base.js +33 -1
  290. package/templates/vn-onboarding-checklist/support.js +13 -20
  291. package/templates/vn-pdpl-consent/VnPdplConsent.dc.html +43 -42
  292. package/templates/vn-pdpl-consent/ds-base.js +33 -1
  293. package/templates/vn-pdpl-consent/support.js +13 -20
  294. package/templates/vn-performance-evaluation-regulation/VnPerformanceEvaluationRegulation.dc.html +65 -64
  295. package/templates/vn-performance-evaluation-regulation/ds-base.js +33 -1
  296. package/templates/vn-performance-evaluation-regulation/support.js +13 -20
  297. package/templates/vn-performance-review-form/VnPerformanceReviewForm.dc.html +49 -48
  298. package/templates/vn-performance-review-form/ds-base.js +33 -1
  299. package/templates/vn-performance-review-form/support.js +13 -20
  300. package/templates/vn-phantom-stock/VnPhantomStock.dc.html +41 -40
  301. package/templates/vn-phantom-stock/ds-base.js +33 -1
  302. package/templates/vn-phantom-stock/support.js +13 -20
  303. package/templates/vn-probation-contract/VnProbationContract.dc.html +56 -55
  304. package/templates/vn-probation-contract/ds-base.js +33 -1
  305. package/templates/vn-probation-contract/support.js +13 -20
  306. package/templates/vn-receipt-acknowledgement/VnReceiptAcknowledgement.dc.html +28 -27
  307. package/templates/vn-receipt-acknowledgement/ds-base.js +33 -1
  308. package/templates/vn-receipt-acknowledgement/support.js +13 -20
  309. package/templates/vn-remote-work-policy/VnRemoteWorkPolicy.dc.html +44 -43
  310. package/templates/vn-remote-work-policy/ds-base.js +33 -1
  311. package/templates/vn-remote-work-policy/support.js +13 -20
  312. package/templates/vn-resignation-letter/VnResignationLetter.dc.html +20 -19
  313. package/templates/vn-resignation-letter/ds-base.js +33 -1
  314. package/templates/vn-resignation-letter/support.js +13 -20
  315. package/templates/vn-salary-scale/VnSalaryScale.dc.html +39 -38
  316. package/templates/vn-salary-scale/ds-base.js +33 -1
  317. package/templates/vn-salary-scale/support.js +13 -20
  318. package/templates/vn-sow-appendix/VnSowAppendix.dc.html +21 -20
  319. package/templates/vn-sow-appendix/ds-base.js +33 -1
  320. package/templates/vn-sow-appendix/support.js +13 -20
  321. package/templates/vn-termination-decision/VnTerminationDecision.dc.html +25 -24
  322. package/templates/vn-termination-decision/ds-base.js +33 -1
  323. package/templates/vn-termination-decision/support.js +13 -20
  324. package/templates/vn-total-rewards-appendix/VnTotalRewardsAppendix.dc.html +63 -62
  325. package/templates/vn-total-rewards-appendix/ds-base.js +33 -1
  326. package/templates/vn-total-rewards-appendix/support.js +13 -20
  327. package/templates/vn-training-commitment/VnTrainingCommitment.dc.html +39 -38
  328. package/templates/vn-training-commitment/ds-base.js +33 -1
  329. package/templates/vn-training-commitment/support.js +13 -20
  330. package/templates/vn-travel-expense-policy/VnTravelExpensePolicy.dc.html +50 -49
  331. package/templates/vn-travel-expense-policy/ds-base.js +33 -1
  332. package/templates/vn-travel-expense-policy/support.js +13 -20
  333. package/tokens/colors.css +19 -1
  334. package/tokens/component-tokens.css +1 -0
  335. package/tokens/elements.css +35 -2
  336. package/tokens/elevation.css +8 -2
  337. package/tokens/native/CSTokens.kt +35 -1
  338. package/tokens/native/CSTokens.swift +35 -1
  339. package/tokens/native/cs_tokens.dart +35 -1
  340. package/tokens/provenance.json +12 -12
  341. package/tokens/spacing.css +2 -0
  342. package/tokens/tokens.dtcg.json +111 -3
  343. package/tokens/tokens.js +46 -6
  344. package/tokens/tokens.json +45 -5
  345. package/tokens/typography.css +2 -0
  346. package/ui_kits/deck/index.html +4 -0
  347. package/ui_kits/status-hub/StatusHub.jsx +30 -4
  348. package/ui_kits/status-hub/index.html +3 -3
  349. package/ui_kits/status-hub/login.html +4 -0
  350. package/ui_kits/status-hub/project.html +4 -0
  351. package/ui_kits/status-hub/settings.html +35 -13
  352. package/ui_kits/status-hub/status.css +5 -1
  353. package/ui_kits/website/Website.jsx +25 -3
  354. package/ui_kits/website/careers.html +4 -0
  355. package/ui_kits/website/chat.html +5 -3
  356. package/ui_kits/website/index.html +3 -3
  357. package/ui_kits/website/site.css +2 -2
  358. package/ui_kits/website/work.html +4 -0
@@ -10,7 +10,7 @@
10
10
  </head>
11
11
  <body data-template-id="status-hub@3" data-theme="paper">
12
12
  <a class="skip" href="#pulse">Skip to content</a>
13
- <p class="sr-only">VERSION <span class="code">1.1.0</span> · built from <span class="code">fp-05ef7886fd20</span> · 1 tasks · 1 releases</p>
13
+ <p class="sr-only">VERSION <span class="code">1.2.0</span> · built from <span class="code">fp-b024ceea52db</span> · 2 tasks · 1 releases</p>
14
14
 
15
15
  <div id="app">
16
16
  <noscript>
@@ -21,12 +21,13 @@ Everything below is the same corpus, rendered statically.</p>
21
21
  <th>id</th><th>title</th><th>module</th><th>class</th><th>priority</th><th>phase</th><th>status</th>
22
22
  </tr></thead><tbody>
23
23
  <tr><td class="code">TASK-REL-001</td><td>LAUNCH design system at VERSION 1.1.0</td><td>release</td><td>feature</td><td>p0</td><td></td><td>done</td></tr>
24
+ <tr><td class="code">TASK-REL-002</td><td>Republish @cyberskill/design at VERSION 1.1.1</td><td>release</td><td>feature</td><td>p0</td><td></td><td>done</td></tr>
24
25
  </tbody></table></div>
25
26
  <h3 class="groupq">Releases</h3>
26
27
  <article class="rel"><span class="tick">✓</span><div>
27
- <div class="rel-h"><b>v0.1.0</b><span class="muted">2026-07-27</span></div>
28
+ <div class="rel-h"><b>v1.2.0</b></div>
28
29
 
29
- <div class="rel-sec"><h4>Notes</h4><ul><li>CyberOS initialised: task workflow vendored to .cyberos/, backlog at docs/tasks/BACKLOG.md, status page at docs/status/.</li></ul></div>
30
+
30
31
  </div></article></div>
31
32
  </noscript>
32
33
  </div>
@@ -34,12 +35,12 @@ Everything below is the same corpus, rendered statically.</p>
34
35
  <aside class="ops-reports" aria-label="Operator reports">
35
36
  <section class="now" id="stuck-wip">
36
37
  <h2>Stuck WIP (G13)</h2>
37
- <p class="muted">As-of date unavailable (no CYBEROS_NOW / CYBEROS_HUB_ASOF and no dated CHANGELOG entry for VERSION 1.1.0) — age classification skipped. Detector stays report-only.</p>
38
+ <p class="muted">As-of date unavailable (no CYBEROS_NOW / CYBEROS_HUB_ASOF and no dated CHANGELOG entry for VERSION 1.2.0) — age classification skipped. Detector stays report-only.</p>
38
39
  </section></aside>
39
40
 
40
- <footer class="gen-foot wrap">design-system — generated at 1.1.0 (fp-05ef7886fd20). Markdown is the record of truth; this page only renders it. · <a href="status-legacy.html">Legacy status page</a></footer>
41
+ <footer class="gen-foot wrap">design-system — generated at 1.2.0 (fp-b024ceea52db). Markdown is the record of truth; this page only renders it. · <a href="status-legacy.html">Legacy status page</a></footer>
41
42
 
42
- <script type="application/json" id="sv3-data">{"project":"design-system","version":"1.1.0","feed":1,"snapshot":"2026-07-27","head":"5dd1620","coverageAsOf":"5dd1620","branch":"main","repoUrl":"https://github.com/cyberskill-official/design-system","tags":["v1.5.0","v1.5.1"],"statuses":["draft","ready_to_implement","implementing","ready_to_review","reviewing","ready_to_test","testing","done","on_hold","closed","cannot_reproduce","duplicate"],"specBase":"../tasks/","rule":"Every change introduced by a commit must be linked to one or more tasks and reflected on the Status page and in the Release Notes. No exceptions.","enforcement":"Advisory today (commit-msg hook + CI range check). Ledger at docs/tasks/_state/commit-links.yaml for retroactive fixes.","tasks":[{"i":"TASK-REL-001","k":"release/TASK-REL-001-launch-1-1-0","t":"LAUNCH design system at VERSION 1.1.0","m":"release","c":"feature","p":"p0","s":"done","b":"done","ph":"","o":"","cr":"2026-07-27","sh":null,"e":null,"d":[],"bl":[],"rl":[],"sm":"Owner said LAUNCH and set the release to 1.1.0. The pre-LAUNCH pin at 1.0.0 is lifted for this cut only; further bumps still need an explicit owner instruction. No CHANGELOG.md — continuity stays tip SHA + curated…","pg":null,"sp":1}],"modules":[{"id":"release","kind":"","total":1,"done":1,"active":0,"hold":0,"draft":0,"r":18,"x":490,"y":315}],"medges":[],"phases":[],"releases":[{"v":"0.1.0","d":"2026-07-27","notes":{"features":[],"fixes":[],"improvements":[{"x":"CyberOS initialised: task workflow vendored to .cyberos/, backlog at docs/tasks/BACKLOG.md, status page at docs/status/.","ids":[]}]},"cov":{"commits":[],"linked":0,"exempt":0,"unlinked":0}}],"unreleased":{"notes":{"features":[],"fixes":[],"improvements":[]},"cov":{"commits":[{"h":"5dd1620","d":"2026-07-27","s":"chore(cyberos): upgrade to 1.12.0 - status v3 + traceability (TASK-DOCS-027)","ids":["TASK-DOCS-027"],"k":"linked"},{"h":"8d3fe6b","d":"2026-07-26","s":"Move host and CDN to React 19.2.8 via umd-react globals. (#62)","ids":[],"k":"unlinked"},{"h":"802ec29","d":"2026-07-26","s":"Bump GitHub Actions majors (checkout 7, setup-node 7, cache 6, upload-artifact 7). (#61)","ids":[],"k":"unlinked"},{"h":"3e2dd0e","d":"2026-07-26","s":"Behavior gate 53→78 — cover all interactive primaries (#60)","ids":[],"k":"unlinked"},{"h":"9c4be64","d":"2026-07-26","s":"Retune 30 element sets; deepen behavior, playground, and a11y gates (#59)","ids":[],"k":"unlinked"},{"h":"d37b362","d":"2026-07-26","s":"Retire Identity Lab; deepen variants, behavior, and open-state axe (#58)","ids":[],"k":"unlinked"},{"h":"9f5845a","d":"2026-07-26","s":"Harden CSF fixtures against .d.ts props the static contract missed. (#57)","ids":[],"k":"unlinked"},{"h":"7e1f121","d":"2026-07-26","s":"Harden CSF honesty: real props, args⊆argTypes, audit card counts. (#56)","ids":[],"k":"unlinked"},{"h":"6fbcada","d":"2026-07-26","s":"Merge pull request #55 from cyberskill-official/cursor/csf-counts-residual-8c7e","ids":[],"k":"exempt"},{"h":"e2a136c","d":"2026-07-26","s":"Fix StatusIndicator CSF honesty and residual count drift.","ids":[],"k":"unlinked"},{"h":"ddfe4ae","d":"2026-07-26","s":"Merge pull request #54 from cyberskill-official/cursor/element-packs-ci-wire-8c7e","ids":[],"k":"exempt"},{"h":"4d4c41c","d":"2026-07-26","s":"Wire element-pack generation into token regen CI.","ids":[],"k":"unlinked"},{"h":"20c6191","d":"2026-07-26","s":"Merge pull request #53 from cyberskill-official/cursor/storybook-react-10-5-4-8c7e","ids":[],"k":"exempt"},{"h":"2b970a8","d":"2026-07-26","s":"Align all Storybook packages to 10.5.4.","ids":[],"k":"unlinked"},{"h":"146b415","d":"2026-07-26","s":"chore(deps-dev): bump @storybook/react from 10.5.3 to 10.5.4","ids":[],"k":"unlinked"},{"h":"7053c5b","d":"2026-07-26","s":"Merge pull request #52 from cyberskill-official/cursor/axes-honesty-residual-8c7e","ids":[],"k":"exempt"},{"h":"b687286","d":"2026-07-26","s":"Note three-axis leftovers in audit index and README blacklist copy.","ids":[],"k":"unlinked"},{"h":"60db5cb","d":"2026-07-26","s":"Finish residual four-axis honesty and behavior-count drift.","ids":[],"k":"unlinked"},{"h":"fb87778","d":"2026-07-26","s":"Merge pull request #51 from cyberskill-official/cursor/release-notes-parity-polish-8c7e","ids":[],"k":"exempt"},{"h":"7ceea84","d":"2026-07-26","s":"Align four-axis honesty across docs, surfaces, and contracts.","ids":[],"k":"unlinked"},{"h":"b7aba05","d":"2026-07-26","s":"Merge pull request #50 from cyberskill-official/cursor/csf-honesty-system-theme-8c7e","ids":[],"k":"exempt"},{"h":"b21d044","d":"2026-07-26","s":"Fix dishonest CSF fixtures and add Storybook system theme.","ids":[],"k":"unlinked"},{"h":"494bef9","d":"2026-07-26","s":"Merge pull request #49 from cyberskill-official/cursor/waves-axe-fullmatrix-style-8c7e","ids":[],"k":"exempt"},{"h":"e325206","d":"2026-07-26","s":"Introduce Style axis (liquid-glass) and Identity Lab system theme.","ids":[],"k":"unlinked"},{"h":"2fd7e8a","d":"2026-07-26","s":"Docs: unit-tests job count is 10 after axe-coverage.","ids":[],"k":"unlinked"},{"h":"6dfe1d0","d":"2026-07-26","s":"Expand axe-smoke to every public primary with inventory lock.","ids":[],"k":"unlinked"},{"h":"018022a","d":"2026-07-26","s":"Require FullMatrix for every ≥1-axis Storybook primary.","ids":[],"k":"unlinked"},{"h":"b816ef9","d":"2026-07-26","s":"Harden Element colour geometry (OKLCH soft/middle/deep + benchmark rubric) (#48)","ids":[],"k":"unlinked"},{"h":"def9546","d":"2026-07-26","s":"Ship Wave 2: AlertDialog, Item, and NativeSelect end-to-end. (#47)","ids":[],"k":"unlinked"},{"h":"d18835c","d":"2026-07-26","s":"Ship Vite 8, harden token regen, and add ScrollArea/Collapsible/AspectRatio (#46)","ids":[],"k":"unlinked"},{"h":"ff9299d","d":"2026-07-25","s":"Refresh pixel baselines for Playwright 1.62 Chromium. (#45)","ids":[],"k":"unlinked"},{"h":"d30238c","d":"2026-07-25","s":"Merge pull request #35 from cyberskill-official/harden/inspection-backlog-batch-1-5","ids":[],"k":"exempt"},{"h":"727b14a","d":"2026-07-25","s":"Harden inspection backlog: pin VERSION in cs.mjs, expand axe, supply-chain hygiene.","ids":[],"k":"unlinked"},{"h":"3edeb13","d":"2026-07-25","s":"Display face: --cs-font-family-display + self-hosted Space Grotesk (#34)","ids":[],"k":"unlinked"},{"h":"49b7a4f","d":"2026-07-25","s":"Merge pull request #33 from cyberskill-official/cursor/phase-0-react-export","ids":[],"k":"exempt"},{"h":"aa5f197","d":"2026-07-25","s":"Address CodeRabbit review on React export contract docs and gates.","ids":[],"k":"unlinked"},{"h":"965e618","d":"2026-07-25","s":"Ship bundler-native React entry for Next/SSR consumers.","ids":[],"k":"unlinked"},{"h":"b85e8d5","d":"2026-07-24","s":"Merge pull request #32 from cyberskill-official/cursor/next-level-batches-2026-07-24","ids":[],"k":"exempt"},{"h":"c219a72","d":"2026-07-24","s":"Commit ubuntu-latest pixel baselines for newly anchored templates.","ids":[],"k":"unlinked"},{"h":"5adbf26","d":"2026-07-24","s":"Address CodeRabbit review on Compose wrapper docs and schema i18n.","ids":[],"k":"unlinked"},{"h":"5a58fd0","d":"2026-07-24","s":"Document Compose as Android Studio-first, not a fake CLI path.","ids":[],"k":"unlinked"},{"h":"3943c23","d":"2026-07-24","s":"Anchor app-shell, settings, and delivery-kickoff in pixel CI.","ids":[],"k":"unlinked"},{"h":"c40c92e","d":"2026-07-24","s":"Soft-skip Figma Variables CI when secrets are empty.","ids":[],"k":"unlinked"},{"h":"c0431be","d":"2026-07-24","s":"Cover remaining content-hole templates with schema sidecars.","ids":[],"k":"unlinked"},{"h":"98bffef","d":"2026-07-24","s":"Merge pull request #31 from cyberskill-official/cursor/deep-scan-next-steps","ids":[],"k":"exempt"},{"h":"5e8f464","d":"2026-07-24","s":"Prove registry consumer in CI and clear stale hub claims.","ids":[],"k":"unlinked"},{"h":"c8e8b23","d":"2026-07-24","s":"Merge pull request #30 from cyberskill-official/cursor/npm-first-consumer-release-notes","ids":[],"k":"exempt"},{"h":"f3db73f","d":"2026-07-24","s":"Document npm Trusted Publishing and ship first Lumi consumer.","ids":[],"k":"unlinked"},{"h":"6756734","d":"2026-07-24","s":"Merge pull request #29 from cyberskill-official/cursor/npm-disallow-tokens-docs-b2ec","ids":[],"k":"exempt"},{"h":"58fb29b","d":"2026-07-24","s":"Record npmjs disallow-tokens; treat CI publish as OIDC-only.","ids":[],"k":"unlinked"},{"h":"48f6648","d":"2026-07-24","s":"Merge pull request #28 from cyberskill-official/cursor/npm-consumer-grant-49c3","ids":[],"k":"exempt"},{"h":"1a1f4a4","d":"2026-07-24","s":"Record written npm consumer grant for CyberSkill portfolio.","ids":[],"k":"unlinked"},{"h":"b3df1f5","d":"2026-07-24","s":"Merge pull request #27 from cyberskill-official/cursor/npm-trusted-publishing-e530","ids":[],"k":"exempt"},{"h":"8154813","d":"2026-07-24","s":"Switch npm CI publish to Trusted Publishing (OIDC).","ids":[],"k":"unlinked"},{"h":"0e1890e","d":"2026-07-24","s":"Merge pull request #26 from cyberskill-official/cursor/next-steps-npm-unlock-e530","ids":[],"k":"exempt"},{"h":"0e2750b","d":"2026-07-23","s":"Document npm unlock progress and consumer grant template.","ids":[],"k":"unlinked"},{"h":"63c9fa1","d":"2026-07-24","s":"Merge pull request #25 from cyberskill-official/cursor/rename-package-cyberskill-design-e530","ids":[],"k":"exempt"},{"h":"e60f772","d":"2026-07-23","s":"Rename npm package to @cyberskill/design and defer Code Connect.","ids":[],"k":"unlinked"},{"h":"601430b","d":"2026-07-24","s":"Merge pull request #24 from cyberskill-official/fix/unit-tests-playwright-subtree","ids":[],"k":"exempt"},{"h":"756291a","d":"2026-07-24","s":"ci: install Playwright Chromium for unit-tests subtree smoke.","ids":[],"k":"unlinked"},{"h":"fb69503","d":"2026-07-24","s":"Merge pull request #22 from cyberskill-official/chore/next-steps-products-lock","ids":[],"k":"exempt"},{"h":"59bb7ec","d":"2026-07-23","s":"Merge pull request #23 from cyberskill-official/cursor/pr-22-merge-preparation-c0b8","ids":[],"k":"exempt"},{"h":"82480e2","d":"2026-07-23","s":"docs: soften template-schema coverage claim in audit README.","ids":[],"k":"unlinked"},{"h":"6ba9b9e","d":"2026-07-24","s":"docs: lock product → element registry and close next-steps backlog.","ids":[],"k":"unlinked"},{"h":"1705488","d":"2026-07-24","s":"Merge pull request #19 from cyberskill-official/feat/storybook-element-toolbar-15","ids":[],"k":"exempt"},{"h":"6e76003","d":"2026-07-24","s":"Merge pull request #20 from cyberskill-official/feat/subtree-consume-and-gate-pass","ids":[],"k":"exempt"},{"h":"7b552e8","d":"2026-07-24","s":"Merge pull request #21 from cyberskill-official/feat/agent-routing-stitch-claude","ids":[],"k":"exempt"},{"h":"1305d1d","d":"2026-07-24","s":"Document Claude Code vs Stitch routing and soft-skip honesty.","ids":[],"k":"unlinked"},{"h":"fb3f16f","d":"2026-07-24","s":"Add subtree-consume smoke and fix gate pass flags for CI runners.","ids":[],"k":"unlinked"},{"h":"78ee1b0","d":"2026-07-24","s":"Expose all 15 Ngũ Hành packs in the Storybook Element toolbar.","ids":[],"k":"unlinked"},{"h":"335c711","d":"2026-07-24","s":"Merge pull request #18 from cyberskill-official/hub-polish-storybook-root","ids":[],"k":"exempt"},{"h":"bd3662c","d":"2026-07-23","s":"Commit frozen-animation Pixel CI baselines from ubuntu-latest.","ids":[],"k":"unlinked"},{"h":"78562e2","d":"2026-07-23","s":"Stabilize hard Pixel CI against runner flake.","ids":[],"k":"unlinked"},{"h":"e600033","d":"2026-07-23","s":"Document that Pixel CI baselines must come from ubuntu-latest.","ids":[],"k":"unlinked"},{"h":"0c4f3a1","d":"2026-07-23","s":"Commit Pixel CI baselines captured on ubuntu-latest.","ids":[],"k":"unlinked"},{"h":"ff068cf","d":"2026-07-23","s":"Upload CI-native pixel baselines when Pixel CI drifts.","ids":[],"k":"unlinked"},{"h":"2777c2f","d":"2026-07-23","s":"Regenerate Pixel CI baselines on Linux amd64.","ids":[],"k":"unlinked"},{"h":"066240b","d":"2026-07-23","s":"Fix hard Pixel CI with Linux baselines and address review nits.","ids":[],"k":"unlinked"},{"h":"21033f8","d":"2026-07-23","s":"Ship Storybook as the product root and harden hub quality gates.","ids":[],"k":"unlinked"},{"h":"d40c42b","d":"2026-07-23","s":"Merge pull request #17 from cyberskill-official/chore/wiring-gates-package-backlog","ids":[],"k":"exempt"},{"h":"70cb97b","d":"2026-07-23","s":"chore: wire gate board, package.json publish path, and backlog close-out","ids":[],"k":"unlinked"},{"h":"2e2d5e2","d":"2026-07-23","s":"Merge pull request #15 from cyberskill-official/feat/ship-paths-code-connect-npm-native","ids":[],"k":"exempt"},{"h":"48e2217","d":"2026-07-23","s":"Merge pull request #16 from cyberskill-official/docs/vietnamese-mirrors-parity","ids":[],"k":"exempt"},{"h":"45db39e","d":"2026-07-23","s":"chore: nudge CI after rebase onto main","ids":[],"k":"unlinked"},{"h":"272f525","d":"2026-07-23","s":"feat(sync): Code Connect stubs, npm publish path, native store scaffolds","ids":[],"k":"unlinked"},{"h":"8cb5a0b","d":"2026-07-23","s":"docs(i18n): Vietnamese docs mirrors, viewer toggle, lang-parity gate","ids":[],"k":"unlinked"},{"h":"9b6731d","d":"2026-07-23","s":"Merge pull request #11 from cyberskill-official/chore/hygiene-cx-xs-axe","ids":[],"k":"exempt"},{"h":"c0a7523","d":"2026-07-23","s":"Merge pull request #14 from cyberskill-official/feat/pixel-diff-advisory","ids":[],"k":"exempt"},{"h":"48983e3","d":"2026-07-23","s":"Merge pull request #13 from cyberskill-official/chore/storybook-10-csf","ids":[],"k":"exempt"},{"h":"da996ec","d":"2026-07-23","s":"Merge pull request #12 from cyberskill-official/fix/dark-contrast-hard-gate","ids":[],"k":"exempt"},{"h":"2fcb63a","d":"2026-07-23","s":"feat(audit): real Playwright pixel compare (advisory only)","ids":[],"k":"unlinked"},{"h":"500f115","d":"2026-07-23","s":"chore(storybook): upgrade to 10.5.3 and add AllSizes/States CSF bar","ids":[],"k":"unlinked"},{"h":"56421b2","d":"2026-07-23","s":"fix(a11y): dark CTA contrast fixes and hard theme-overflow contrast","ids":[],"k":"unlinked"},{"h":"998addc","d":"2026-07-23","s":"chore: shared cx(), Button xs tokens, and hard axe-smoke gate","ids":[],"k":"unlinked"},{"h":"1e13187","d":"2026-07-23","s":"Merge pull request #10 from cyberskill-official/feat/quality-gates-designmd","ids":[],"k":"exempt"},{"h":"9c23853","d":"2026-07-23","s":"feat(gates): 8 deterministic gates, in-repo bundle build, DESIGN.md, CI hardening","ids":[],"k":"unlinked"},{"h":"aa5dc8b","d":"2026-07-23","s":"Merge pull request #9 from cyberskill-official/docs/drift-and-audit","ids":[],"k":"exempt"},{"h":"8dd56cb","d":"2026-07-23","s":"Merge pull request #8 from cyberskill-official/feat/storybook-hub","ids":[],"k":"exempt"},{"h":"4f5ea03","d":"2026-07-23","s":"Merge pull request #7 from cyberskill-official/fix/component-a11y-copy","ids":[],"k":"exempt"},{"h":"17ba11b","d":"2026-07-23","s":"Merge pull request #6 from cyberskill-official/fix/bilingual-template-copy","ids":[],"k":"exempt"},{"h":"33cd337","d":"2026-07-23","s":"Merge pull request #5 from cyberskill-official/fix/token-pipeline-parity","ids":[],"k":"exempt"},{"h":"bbd1c48","d":"2026-07-23","s":"Merge pull request #4 from cyberskill-official/chore/gitignore-audit-exports","ids":[],"k":"exempt"},{"h":"5a8a01d","d":"2026-07-23","s":"docs: correct drift against the compiler manifest and add the July 2026 audit report","ids":[],"k":"unlinked"},{"h":"9d82951","d":"2026-07-23","s":"feat(storybook): Foundations, Guidelines, A11y, I18n and Status hub pages","ids":[],"k":"unlinked"},{"h":"1f26455","d":"2026-07-23","s":"fix(components): Dialog a11y, React.useId adoption, prompt/card copy corrections","ids":[],"k":"unlinked"},{"h":"2a53e05","d":"2026-07-23","s":"fix(templates): close EN leaks in VN mode and sweep stale demo copy","ids":[],"k":"unlinked"},{"h":"8ec2328","d":"2026-07-23","s":"fix(tokens): restore real motion durations, add heading group, type all DTCG leaves","ids":[],"k":"unlinked"},{"h":"75d870b","d":"2026-07-23","s":"chore: fix .gitignore inline-comment parsing and untrack generated audit exports","ids":[],"k":"unlinked"},{"h":"df751f3","d":"2026-07-23","s":"Merge pull request #3 from cyberskill-official/worktree-figma-soft-skip","ids":[],"k":"exempt"},{"h":"920495f","d":"2026-07-23","s":"fix(ci): soft-skip 429/503/404 Figma API errors instead of hard-failing","ids":[],"k":"unlinked"},{"h":"e71055d","d":"2026-07-22","s":"feat: 1.0.0","ids":[],"k":"unlinked"},{"h":"47f46be","d":"2026-07-22","s":"fix(storybook): close CSF3 hollow {...args} class; repair Divider matrix","ids":[],"k":"unlinked"},{"h":"85c2e5f","d":"2026-07-22","s":"fix(storybook): CSF3 meta args so Matrix {...args} inherits fixtures","ids":[],"k":"unlinked"},{"h":"faebb87","d":"2026-07-22","s":"fix(storybook): real prop APIs and composition in CSF matrices","ids":[],"k":"unlinked"},{"h":"6b23a0e","d":"2026-07-22","s":"fix(storybook): honest deep CSF matrices (mount primary, real argTypes)","ids":[],"k":"unlinked"},{"h":"c0a06c4","d":"2026-07-22","s":"docs: point Identity Lab/axis expansion at Storybook Live","ids":[],"k":"unlinked"},{"h":"e631191","d":"2026-07-22","s":"feat(live): Storybook is the single Live hub; deep CSF control matrices","ids":[],"k":"unlinked"},{"h":"34baea1","d":"2026-07-22","s":"fix(native): use Compose modifier= parameter name in sample screens","ids":[],"k":"unlinked"},{"h":"38dfde2","d":"2026-07-22","s":"feat(pre-release): Storybook CSF for all components + multi-screen native samples","ids":[],"k":"unlinked"},{"h":"c0fc95c","d":"2026-07-22","s":"chore: decisions A/Figma, CI DX, keep Live View, dual tokens, host Storybook growth","ids":[],"k":"unlinked"},{"h":"cd335d1","d":"2026-07-22","s":"docs(ci): Figma Variables API is Enterprise-only; soft-skip non-Enterprise PATs","ids":[],"k":"unlinked"},{"h":"9da0565","d":"2026-07-22","s":"fix(ci): deterministic token regen, auth mobile stack, Figma variable scopes","ids":[],"k":"unlinked"},{"h":"9bb4670","d":"2026-07-22","s":"chore: regenerate tokens/native/* from tokens.dtcg.json [skip ci]","ids":[],"k":"exempt"},{"h":"167e531","d":"2026-07-22","s":"fix(ci): push regenerated tokens via DS_PUSH_TOKEN when org locks GITHUB_TOKEN","ids":[],"k":"unlinked"},{"h":"12ba273","d":"2026-07-22","s":"chore: regenerate tokens/native/* from tokens.dtcg.json [skip ci]","ids":[],"k":"exempt"},{"h":"44db79f","d":"2026-07-22","s":"fix(ci): install playwright package, write token for regen, clearer Figma secret errors","ids":[],"k":"unlinked"},{"h":"c4ed88d","d":"2026-07-22","s":"fix(ci): valid YAML for checkout ref expression","ids":[],"k":"unlinked"},{"h":"914328b","d":"2026-07-22","s":"feat: push DTCG colour tokens to Figma Variables via CI","ids":[],"k":"unlinked"},{"h":"4eb365a","d":"2026-07-22","s":"ci: run whole-set audits on every PR; record pixel advisory + Figma token guide","ids":[],"k":"unlinked"},{"h":"b59a518","d":"2026-07-22","s":"feat: Storybook host playground at /playground + hub/form backlog","ids":[],"k":"unlinked"},{"h":"bdf6e5c","d":"2026-07-22","s":"feat: 7.0.0","ids":[],"k":"unlinked"},{"h":"e4523e1","d":"2026-07-21","s":"Merge pull request #2 from cyberskill-official/vercel-agent/fix-docs-consistency-static-files","ids":[],"k":"exempt"},{"h":"f8fd5f7","d":"2026-07-20","s":"Fix Vercel static docs output","ids":[],"k":"unlinked"},{"h":"5af6b77","d":"2026-07-21","s":"Merge pull request #1 from cyberskill-official/vercel-agent/fix-vercel-build-config","ids":[],"k":"exempt"},{"h":"cf4b0be","d":"2026-07-20","s":"Fix Vercel build configuration","ids":[],"k":"unlinked"},{"h":"24af038","d":"2026-07-21","s":"feat: 5.0.0","ids":[],"k":"unlinked"},{"h":"fde98ae","d":"2026-07-21","s":"feat: 5.0.0","ids":[],"k":"unlinked"},{"h":"c2183ba","d":"2026-07-20","s":"feat: 4.0.2","ids":[],"k":"unlinked"},{"h":"6ac4c33","d":"2026-07-20","s":"feat: 4.0.0","ids":[],"k":"unlinked"},{"h":"55fdfff","d":"2026-07-20","s":"feat: 3.0.3","ids":[],"k":"unlinked"},{"h":"2a77bf6","d":"2026-07-20","s":"feat: 3.0.1","ids":[],"k":"unlinked"},{"h":"53bdbc2","d":"2026-07-19","s":"feat: v2.16.1","ids":[],"k":"unlinked"},{"h":"1509ff2","d":"2026-07-16","s":"chore(ci): upgrade Actions to Node-24 majors (checkout/setup-node@v7)","ids":[],"k":"unlinked"},{"h":"f6d6e6c","d":"2026-07-16","s":"chore(ci): pin Node 24.18.0; upgrade Actions to Node-24 majors","ids":[],"k":"unlinked"},{"h":"5d09735","d":"2026-07-16","s":"chore: require Node.js >=24; remove dangling agent skill links","ids":[],"k":"unlinked"},{"h":"9e660f5","d":"2026-07-16","s":"chore(cyberos): retire the FR vocabulary; adopt CyberOS 1.0.0 (rules_sha d9dbcc8a)","ids":[],"k":"unlinked"},{"h":"6f21c52","d":"2026-07-13","s":"chore(cyberos): adopt CyberOS 1.0.0 - status-hub@2 status page","ids":[],"k":"unlinked"},{"h":"5e80e72","d":"2026-07-13","s":"chore: adopt CyberOS 1.0 protocol - folder-per-FR layout, docs/status page, managed gitignore, status auto-sync","ids":[],"k":"unlinked"},{"h":"5682841","d":"2026-07-10","s":"cyberos: adopt unified feature-requests structure (init v0.1.0)","ids":[],"k":"unlinked"},{"h":"e4d4da1","d":"2026-07-06","s":"feat(audit): wire the CSAF auto-evolution loop + close AUTO findings","ids":[],"k":"unlinked"},{"h":"7231866","d":"2026-06-14","s":"test(style-packs): commit linux-x64 screenshot baselines (CI-seeded, 68)","ids":[],"k":"unlinked"},{"h":"63d11b9","d":"2026-06-14","s":"fix(react): core components consume --cs-font-family-ui (3a); standardize baselines on linux-x64 (v1.5.1)","ids":[],"k":"unlinked"},{"h":"bcdc0c7","d":"2026-06-14","s":"chore: add ready-to-apply patch for core font-token consumption (3a)","ids":[],"k":"unlinked"},{"h":"61de195","d":"2026-06-14","s":"feat(style-packs): add real APCA contrast check (S5) to verifier","ids":[],"k":"unlinked"},{"h":"7baa281","d":"2026-06-13","s":"docs(style-packs): record v1.5.0 deepening + font/texture authoring pattern; bump versions","ids":[],"k":"unlinked"},{"h":"ead9c9f","d":"2026-06-13","s":"feat(style-packs): deepen group 8 (wabi-sabi, western, nautical, rebus, glassmorphism, modular-type, neo-brutalism) — completes al","ids":[],"k":"unlinked"},{"h":"99e893a","d":"2026-06-13","s":"feat(style-packs): deepen group 7 (coquette, surrealism, utilitarian, mid-century, scrapbook, frutiger-aero, dark-academia, light-","ids":[],"k":"unlinked"},{"h":"db08f7f","d":"2026-06-13","s":"feat(style-packs): deepen group 6 (tenebrism, gothic, pointillism, mixed-media, steampunk, kawaii)","ids":[],"k":"unlinked"},{"h":"d15f638","d":"2026-06-13","s":"feat(style-packs): deepen group 5 (cybercore, synthwave, vaporwave, pop-art, bento, graffiti)","ids":[],"k":"unlinked"},{"h":"d87713d","d":"2026-06-13","s":"feat(style-packs): deepen group 4 (art-nouveau, western-occult, kitsch, y2k, bauhaus, brutalism)","ids":[],"k":"unlinked"},{"h":"10f9f51","d":"2026-06-13","s":"feat(style-packs): deepen group 3 (memphis, bohemian, shabby-chic, cottagecore, victorian, art-deco)","ids":[],"k":"unlinked"},{"h":"8aca247","d":"2026-06-13","s":"feat(style-packs): deepen group 2 (acanthus, anthropomorphic, pixel-art, sketch, luxury-typography, japandi)","ids":[],"k":"unlinked"},{"h":"a893c21","d":"2026-06-13","s":"feat(style-packs): deepen group 1 (classical/ambient) + fix font & texture pipeline","ids":[],"k":"unlinked"},{"h":"6ede4d1","d":"2026-06-13","s":"feat(style-packs): per-style light/dark/both mode policy + dark variants (v1.4.0)","ids":[],"k":"unlinked"},{"h":"8b0c698","d":"2026-06-13","s":"docs: record Liquid Glass implementation; refresh stale version info (v1.3.0)","ids":[],"k":"unlinked"},{"h":"b5a9c6c","d":"2026-06-13","s":"feat(glass): implement Part 21 Liquid Glass token + CSS layer","ids":[],"k":"unlinked"},{"h":"d6a78a0","d":"2026-06-13","s":"ci+test: platform-scoped visual baselines, CI workflow, pin Playwright","ids":[],"k":"unlinked"},{"h":"822b9c6","d":"2026-06-13","s":"chore: stop tracking .DS_Store (already gitignored)","ids":[],"k":"unlinked"},{"h":"d472a0a","d":"2026-06-13","s":"feat(style-packs): live 50-skin gallery + per-pack screenshot regression","ids":[],"k":"unlinked"},{"h":"0e56266","d":"2026-06-13","s":"feat(design-system): light default, spacing/responsive, exact logo, 50 style packs","ids":[],"k":"unlinked"},{"h":"cd9b7c8","d":"2026-06-09","s":"feat: udate libs","ids":[],"k":"unlinked"},{"h":"bcc537c","d":"2026-05-14","s":"feat: liquid glass","ids":[],"k":"unlinked"},{"h":"428e463","d":"2026-05-04","s":"feat: enhance","ids":[],"k":"unlinked"},{"h":"d8cb59a","d":"2026-05-04","s":"feat: enhance","ids":[],"k":"unlinked"},{"h":"bc0a358","d":"2026-05-04","s":"feat: combine into single DESIGN.md","ids":[],"k":"unlinked"},{"h":"e49d083","d":"2026-04-27","s":"chore: cleanup","ids":[],"k":"unlinked"},{"h":"09bd373","d":"2026-04-27","s":"feat: init project","ids":[],"k":"unlinked"}],"linked":1,"exempt":43,"unlinked":133}},"burnup":[],"fp":"fp-1b6a3e58e578","commit":"fp-05ef7886fd20","specDir":"data/task","frBase":"../tasks/","draft_staleness":{"total":0,"by_reason":[]},"stuck_wip":{"asof":null,"threshold_days":30,"stale":[],"unparseable":[],"asof_missing":true}}</script>
43
+ <script type="application/json" id="sv3-data">{"project":"design-system","version":"1.2.0","feed":1,"snapshot":"2026-08-09","head":"df61281","coverageAsOf":"df61281","branch":"main","repoUrl":"https://github.com/cyberskill-official/design-system","tags":["v1.1.0","v1.1.1","v1.5.0","v1.5.1"],"statuses":["draft","ready_to_implement","implementing","ready_to_review","reviewing","ready_to_test","testing","done","on_hold","closed","cannot_reproduce","duplicate"],"specBase":"../tasks/","rule":"Every change introduced by a commit must be linked to one or more tasks and reflected on the Status page and in the Release Notes. No exceptions.","enforcement":"Advisory today (commit-msg hook + CI range check). Ledger at docs/tasks/_state/commit-links.yaml for retroactive fixes.","tasks":[{"i":"TASK-REL-001","k":"release/TASK-REL-001-launch-1-1-0","t":"LAUNCH design system at VERSION 1.1.0","m":"release","c":"feature","p":"p0","s":"done","b":"done","ph":"","o":"","cr":"2026-07-27","sh":null,"e":null,"d":[],"bl":[],"rl":[],"sm":"Owner said LAUNCH and set the release to 1.1.0. The pre-LAUNCH pin at 1.0.0 is lifted for this cut only; further bumps still need an explicit owner instruction. No CHANGELOG.md — continuity stays tip SHA + curated…","pg":null,"sp":1},{"i":"TASK-REL-002","k":"release/TASK-REL-002-republish-1-1-1","t":"Republish @cyberskill/design at VERSION 1.1.1","m":"release","c":"feature","p":"p0","s":"done","b":"done","ph":"","o":"","cr":"2026-07-27","sh":null,"e":null,"d":["TASK-REL-001"],"bl":[],"rl":[],"sm":"Owner approved a 1.1.1 patch republish so the public registry matches tip after post-LAUNCH lockstep fixes (bundle freshness, native provenance, no CHANGELOG.md). LAUNCH narrative at 1.1.0 stays historical; current…","pg":null,"sp":1}],"modules":[{"id":"release","kind":"","total":2,"done":2,"active":0,"hold":0,"draft":0,"r":20,"x":490,"y":315}],"medges":[],"phases":[],"releases":[],"unreleased":{"notes":{"features":[],"fixes":[],"improvements":[]},"cov":{"commits":[{"h":"df61281","d":"2026-08-09","s":"ci: enable CyberOS-style VERSION auto-bump on main","ids":[],"k":"unlinked"},{"h":"ca3f854","d":"2026-08-09","s":"fixup!: ledger-exempt baseline hygiene commits","ids":[],"k":"exempt"},{"h":"be0f872","d":"2026-08-09","s":"chore: ledger-exempt pixel baseline refresh commit","ids":[],"k":"exempt","via":"ledger"},{"h":"056591c","d":"2026-08-09","s":"ci: refresh ubuntu pixel baselines after UX surface polish","ids":[],"k":"exempt","via":"ledger"},{"h":"8646dbf","d":"2026-08-09","s":"fixup!: remove UX audit paper trail and exempt phase commits","ids":[],"k":"exempt"},{"h":"a1695fe","d":"2026-08-09","s":"docs: stamp Phase 4–5 commit hash on UX audit plan (TASK-UX-AUDIT-20260808).","ids":[],"k":"exempt","via":"ledger"},{"h":"6ca2a1a","d":"2026-08-09","s":"Close UX audit Phase 4–5: zoom gate, CQ layer, AT matrix schedule (TASK-UX-AUDIT-20260808).","ids":[],"k":"exempt","via":"ledger"},{"h":"b0b6f5d","d":"2026-08-09","s":"Land UX audit Phase 3: overlay manager + flow/kit polish (TASK-UX-AUDIT-20260808).","ids":[],"k":"exempt","via":"ledger"},{"h":"8aab010","d":"2026-08-08","s":"Close UX audit Phase 2: pack-contract v2 + flat CSS + overlay design (TASK-UX-AUDIT-20260808).","ids":[],"k":"exempt","via":"ledger"},{"h":"46a10fb","d":"2026-08-08","s":"Close UX audit Phase 1: light contrast + offline product surfaces (TASK-UX-AUDIT-20260808).","ids":[],"k":"exempt","via":"ledger"},{"h":"91d9fd8","d":"2026-07-28","s":"feat: plan","ids":[],"k":"exempt","via":"ledger"},{"h":"0266444","d":"2026-07-27","s":"Republish design system at VERSION 1.1.1 for registry lockstep (TASK-REL-002).","ids":["TASK-REL-002"],"k":"linked"},{"h":"b3621e8","d":"2026-07-27","s":"Regenerate token natives, provenance, and bundle for 1.1.0 lockstep (TASK-REL-001).","ids":["TASK-REL-001"],"k":"linked"},{"h":"43e64aa","d":"2026-07-27","s":"Fix post-LAUNCH gate drift: regenerate natives/provenance and drop CHANGELOG (TASK-REL-001).","ids":["TASK-REL-001"],"k":"linked"},{"h":"9c41e17","d":"2026-07-27","s":"Launch design system at VERSION 1.1.0 (TASK-REL-001).","ids":["TASK-REL-001"],"k":"linked"},{"h":"5dd1620","d":"2026-07-27","s":"chore(cyberos): upgrade to 1.12.0 - status v3 + traceability (TASK-DOCS-027)","ids":["TASK-DOCS-027"],"k":"linked"},{"h":"8d3fe6b","d":"2026-07-26","s":"Move host and CDN to React 19.2.8 via umd-react globals. (#62)","ids":[],"k":"unlinked"},{"h":"802ec29","d":"2026-07-26","s":"Bump GitHub Actions majors (checkout 7, setup-node 7, cache 6, upload-artifact 7). (#61)","ids":[],"k":"unlinked"},{"h":"3e2dd0e","d":"2026-07-26","s":"Behavior gate 53→78 — cover all interactive primaries (#60)","ids":[],"k":"unlinked"},{"h":"9c4be64","d":"2026-07-26","s":"Retune 30 element sets; deepen behavior, playground, and a11y gates (#59)","ids":[],"k":"unlinked"},{"h":"d37b362","d":"2026-07-26","s":"Retire Identity Lab; deepen variants, behavior, and open-state axe (#58)","ids":[],"k":"unlinked"},{"h":"9f5845a","d":"2026-07-26","s":"Harden CSF fixtures against .d.ts props the static contract missed. (#57)","ids":[],"k":"unlinked"},{"h":"7e1f121","d":"2026-07-26","s":"Harden CSF honesty: real props, args⊆argTypes, audit card counts. (#56)","ids":[],"k":"unlinked"},{"h":"6fbcada","d":"2026-07-26","s":"Merge pull request #55 from cyberskill-official/cursor/csf-counts-residual-8c7e","ids":[],"k":"exempt"},{"h":"e2a136c","d":"2026-07-26","s":"Fix StatusIndicator CSF honesty and residual count drift.","ids":[],"k":"unlinked"},{"h":"ddfe4ae","d":"2026-07-26","s":"Merge pull request #54 from cyberskill-official/cursor/element-packs-ci-wire-8c7e","ids":[],"k":"exempt"},{"h":"4d4c41c","d":"2026-07-26","s":"Wire element-pack generation into token regen CI.","ids":[],"k":"unlinked"},{"h":"20c6191","d":"2026-07-26","s":"Merge pull request #53 from cyberskill-official/cursor/storybook-react-10-5-4-8c7e","ids":[],"k":"exempt"},{"h":"2b970a8","d":"2026-07-26","s":"Align all Storybook packages to 10.5.4.","ids":[],"k":"unlinked"},{"h":"146b415","d":"2026-07-26","s":"chore(deps-dev): bump @storybook/react from 10.5.3 to 10.5.4","ids":[],"k":"unlinked"},{"h":"7053c5b","d":"2026-07-26","s":"Merge pull request #52 from cyberskill-official/cursor/axes-honesty-residual-8c7e","ids":[],"k":"exempt"},{"h":"b687286","d":"2026-07-26","s":"Note three-axis leftovers in audit index and README blacklist copy.","ids":[],"k":"unlinked"},{"h":"60db5cb","d":"2026-07-26","s":"Finish residual four-axis honesty and behavior-count drift.","ids":[],"k":"unlinked"},{"h":"fb87778","d":"2026-07-26","s":"Merge pull request #51 from cyberskill-official/cursor/release-notes-parity-polish-8c7e","ids":[],"k":"exempt"},{"h":"7ceea84","d":"2026-07-26","s":"Align four-axis honesty across docs, surfaces, and contracts.","ids":[],"k":"unlinked"},{"h":"b7aba05","d":"2026-07-26","s":"Merge pull request #50 from cyberskill-official/cursor/csf-honesty-system-theme-8c7e","ids":[],"k":"exempt"},{"h":"b21d044","d":"2026-07-26","s":"Fix dishonest CSF fixtures and add Storybook system theme.","ids":[],"k":"unlinked"},{"h":"494bef9","d":"2026-07-26","s":"Merge pull request #49 from cyberskill-official/cursor/waves-axe-fullmatrix-style-8c7e","ids":[],"k":"exempt"},{"h":"e325206","d":"2026-07-26","s":"Introduce Style axis (liquid-glass) and Identity Lab system theme.","ids":[],"k":"unlinked"},{"h":"2fd7e8a","d":"2026-07-26","s":"Docs: unit-tests job count is 10 after axe-coverage.","ids":[],"k":"unlinked"},{"h":"6dfe1d0","d":"2026-07-26","s":"Expand axe-smoke to every public primary with inventory lock.","ids":[],"k":"unlinked"},{"h":"018022a","d":"2026-07-26","s":"Require FullMatrix for every ≥1-axis Storybook primary.","ids":[],"k":"unlinked"},{"h":"b816ef9","d":"2026-07-26","s":"Harden Element colour geometry (OKLCH soft/middle/deep + benchmark rubric) (#48)","ids":[],"k":"unlinked"},{"h":"def9546","d":"2026-07-26","s":"Ship Wave 2: AlertDialog, Item, and NativeSelect end-to-end. (#47)","ids":[],"k":"unlinked"},{"h":"d18835c","d":"2026-07-26","s":"Ship Vite 8, harden token regen, and add ScrollArea/Collapsible/AspectRatio (#46)","ids":[],"k":"unlinked"},{"h":"ff9299d","d":"2026-07-25","s":"Refresh pixel baselines for Playwright 1.62 Chromium. (#45)","ids":[],"k":"unlinked"},{"h":"d30238c","d":"2026-07-25","s":"Merge pull request #35 from cyberskill-official/harden/inspection-backlog-batch-1-5","ids":[],"k":"exempt"},{"h":"727b14a","d":"2026-07-25","s":"Harden inspection backlog: pin VERSION in cs.mjs, expand axe, supply-chain hygiene.","ids":[],"k":"unlinked"},{"h":"3edeb13","d":"2026-07-25","s":"Display face: --cs-font-family-display + self-hosted Space Grotesk (#34)","ids":[],"k":"unlinked"},{"h":"49b7a4f","d":"2026-07-25","s":"Merge pull request #33 from cyberskill-official/cursor/phase-0-react-export","ids":[],"k":"exempt"},{"h":"aa5f197","d":"2026-07-25","s":"Address CodeRabbit review on React export contract docs and gates.","ids":[],"k":"unlinked"},{"h":"965e618","d":"2026-07-25","s":"Ship bundler-native React entry for Next/SSR consumers.","ids":[],"k":"unlinked"},{"h":"b85e8d5","d":"2026-07-24","s":"Merge pull request #32 from cyberskill-official/cursor/next-level-batches-2026-07-24","ids":[],"k":"exempt"},{"h":"c219a72","d":"2026-07-24","s":"Commit ubuntu-latest pixel baselines for newly anchored templates.","ids":[],"k":"unlinked"},{"h":"5adbf26","d":"2026-07-24","s":"Address CodeRabbit review on Compose wrapper docs and schema i18n.","ids":[],"k":"unlinked"},{"h":"5a58fd0","d":"2026-07-24","s":"Document Compose as Android Studio-first, not a fake CLI path.","ids":[],"k":"unlinked"},{"h":"3943c23","d":"2026-07-24","s":"Anchor app-shell, settings, and delivery-kickoff in pixel CI.","ids":[],"k":"unlinked"},{"h":"c40c92e","d":"2026-07-24","s":"Soft-skip Figma Variables CI when secrets are empty.","ids":[],"k":"unlinked"},{"h":"c0431be","d":"2026-07-24","s":"Cover remaining content-hole templates with schema sidecars.","ids":[],"k":"unlinked"},{"h":"98bffef","d":"2026-07-24","s":"Merge pull request #31 from cyberskill-official/cursor/deep-scan-next-steps","ids":[],"k":"exempt"},{"h":"5e8f464","d":"2026-07-24","s":"Prove registry consumer in CI and clear stale hub claims.","ids":[],"k":"unlinked"},{"h":"c8e8b23","d":"2026-07-24","s":"Merge pull request #30 from cyberskill-official/cursor/npm-first-consumer-release-notes","ids":[],"k":"exempt"},{"h":"f3db73f","d":"2026-07-24","s":"Document npm Trusted Publishing and ship first Lumi consumer.","ids":[],"k":"unlinked"},{"h":"6756734","d":"2026-07-24","s":"Merge pull request #29 from cyberskill-official/cursor/npm-disallow-tokens-docs-b2ec","ids":[],"k":"exempt"},{"h":"58fb29b","d":"2026-07-24","s":"Record npmjs disallow-tokens; treat CI publish as OIDC-only.","ids":[],"k":"unlinked"},{"h":"48f6648","d":"2026-07-24","s":"Merge pull request #28 from cyberskill-official/cursor/npm-consumer-grant-49c3","ids":[],"k":"exempt"},{"h":"1a1f4a4","d":"2026-07-24","s":"Record written npm consumer grant for CyberSkill portfolio.","ids":[],"k":"unlinked"},{"h":"b3df1f5","d":"2026-07-24","s":"Merge pull request #27 from cyberskill-official/cursor/npm-trusted-publishing-e530","ids":[],"k":"exempt"},{"h":"8154813","d":"2026-07-24","s":"Switch npm CI publish to Trusted Publishing (OIDC).","ids":[],"k":"unlinked"},{"h":"0e1890e","d":"2026-07-24","s":"Merge pull request #26 from cyberskill-official/cursor/next-steps-npm-unlock-e530","ids":[],"k":"exempt"},{"h":"0e2750b","d":"2026-07-23","s":"Document npm unlock progress and consumer grant template.","ids":[],"k":"unlinked"},{"h":"63c9fa1","d":"2026-07-24","s":"Merge pull request #25 from cyberskill-official/cursor/rename-package-cyberskill-design-e530","ids":[],"k":"exempt"},{"h":"e60f772","d":"2026-07-23","s":"Rename npm package to @cyberskill/design and defer Code Connect.","ids":[],"k":"unlinked"},{"h":"601430b","d":"2026-07-24","s":"Merge pull request #24 from cyberskill-official/fix/unit-tests-playwright-subtree","ids":[],"k":"exempt"},{"h":"756291a","d":"2026-07-24","s":"ci: install Playwright Chromium for unit-tests subtree smoke.","ids":[],"k":"unlinked"},{"h":"fb69503","d":"2026-07-24","s":"Merge pull request #22 from cyberskill-official/chore/next-steps-products-lock","ids":[],"k":"exempt"},{"h":"59bb7ec","d":"2026-07-23","s":"Merge pull request #23 from cyberskill-official/cursor/pr-22-merge-preparation-c0b8","ids":[],"k":"exempt"},{"h":"82480e2","d":"2026-07-23","s":"docs: soften template-schema coverage claim in audit README.","ids":[],"k":"unlinked"},{"h":"6ba9b9e","d":"2026-07-24","s":"docs: lock product → element registry and close next-steps backlog.","ids":[],"k":"unlinked"},{"h":"1705488","d":"2026-07-24","s":"Merge pull request #19 from cyberskill-official/feat/storybook-element-toolbar-15","ids":[],"k":"exempt"},{"h":"6e76003","d":"2026-07-24","s":"Merge pull request #20 from cyberskill-official/feat/subtree-consume-and-gate-pass","ids":[],"k":"exempt"},{"h":"7b552e8","d":"2026-07-24","s":"Merge pull request #21 from cyberskill-official/feat/agent-routing-stitch-claude","ids":[],"k":"exempt"},{"h":"1305d1d","d":"2026-07-24","s":"Document Claude Code vs Stitch routing and soft-skip honesty.","ids":[],"k":"unlinked"},{"h":"fb3f16f","d":"2026-07-24","s":"Add subtree-consume smoke and fix gate pass flags for CI runners.","ids":[],"k":"unlinked"},{"h":"78ee1b0","d":"2026-07-24","s":"Expose all 15 Ngũ Hành packs in the Storybook Element toolbar.","ids":[],"k":"unlinked"},{"h":"335c711","d":"2026-07-24","s":"Merge pull request #18 from cyberskill-official/hub-polish-storybook-root","ids":[],"k":"exempt"},{"h":"bd3662c","d":"2026-07-23","s":"Commit frozen-animation Pixel CI baselines from ubuntu-latest.","ids":[],"k":"unlinked"},{"h":"78562e2","d":"2026-07-23","s":"Stabilize hard Pixel CI against runner flake.","ids":[],"k":"unlinked"},{"h":"e600033","d":"2026-07-23","s":"Document that Pixel CI baselines must come from ubuntu-latest.","ids":[],"k":"unlinked"},{"h":"0c4f3a1","d":"2026-07-23","s":"Commit Pixel CI baselines captured on ubuntu-latest.","ids":[],"k":"unlinked"},{"h":"ff068cf","d":"2026-07-23","s":"Upload CI-native pixel baselines when Pixel CI drifts.","ids":[],"k":"unlinked"},{"h":"2777c2f","d":"2026-07-23","s":"Regenerate Pixel CI baselines on Linux amd64.","ids":[],"k":"unlinked"},{"h":"066240b","d":"2026-07-23","s":"Fix hard Pixel CI with Linux baselines and address review nits.","ids":[],"k":"unlinked"},{"h":"21033f8","d":"2026-07-23","s":"Ship Storybook as the product root and harden hub quality gates.","ids":[],"k":"unlinked"},{"h":"d40c42b","d":"2026-07-23","s":"Merge pull request #17 from cyberskill-official/chore/wiring-gates-package-backlog","ids":[],"k":"exempt"},{"h":"70cb97b","d":"2026-07-23","s":"chore: wire gate board, package.json publish path, and backlog close-out","ids":[],"k":"unlinked"},{"h":"2e2d5e2","d":"2026-07-23","s":"Merge pull request #15 from cyberskill-official/feat/ship-paths-code-connect-npm-native","ids":[],"k":"exempt"},{"h":"48e2217","d":"2026-07-23","s":"Merge pull request #16 from cyberskill-official/docs/vietnamese-mirrors-parity","ids":[],"k":"exempt"},{"h":"45db39e","d":"2026-07-23","s":"chore: nudge CI after rebase onto main","ids":[],"k":"unlinked"},{"h":"272f525","d":"2026-07-23","s":"feat(sync): Code Connect stubs, npm publish path, native store scaffolds","ids":[],"k":"unlinked"},{"h":"8cb5a0b","d":"2026-07-23","s":"docs(i18n): Vietnamese docs mirrors, viewer toggle, lang-parity gate","ids":[],"k":"unlinked"},{"h":"9b6731d","d":"2026-07-23","s":"Merge pull request #11 from cyberskill-official/chore/hygiene-cx-xs-axe","ids":[],"k":"exempt"},{"h":"c0a7523","d":"2026-07-23","s":"Merge pull request #14 from cyberskill-official/feat/pixel-diff-advisory","ids":[],"k":"exempt"},{"h":"48983e3","d":"2026-07-23","s":"Merge pull request #13 from cyberskill-official/chore/storybook-10-csf","ids":[],"k":"exempt"},{"h":"da996ec","d":"2026-07-23","s":"Merge pull request #12 from cyberskill-official/fix/dark-contrast-hard-gate","ids":[],"k":"exempt"},{"h":"2fcb63a","d":"2026-07-23","s":"feat(audit): real Playwright pixel compare (advisory only)","ids":[],"k":"unlinked"},{"h":"500f115","d":"2026-07-23","s":"chore(storybook): upgrade to 10.5.3 and add AllSizes/States CSF bar","ids":[],"k":"unlinked"},{"h":"56421b2","d":"2026-07-23","s":"fix(a11y): dark CTA contrast fixes and hard theme-overflow contrast","ids":[],"k":"unlinked"},{"h":"998addc","d":"2026-07-23","s":"chore: shared cx(), Button xs tokens, and hard axe-smoke gate","ids":[],"k":"unlinked"},{"h":"1e13187","d":"2026-07-23","s":"Merge pull request #10 from cyberskill-official/feat/quality-gates-designmd","ids":[],"k":"exempt"},{"h":"9c23853","d":"2026-07-23","s":"feat(gates): 8 deterministic gates, in-repo bundle build, DESIGN.md, CI hardening","ids":[],"k":"unlinked"},{"h":"aa5dc8b","d":"2026-07-23","s":"Merge pull request #9 from cyberskill-official/docs/drift-and-audit","ids":[],"k":"exempt"},{"h":"8dd56cb","d":"2026-07-23","s":"Merge pull request #8 from cyberskill-official/feat/storybook-hub","ids":[],"k":"exempt"},{"h":"4f5ea03","d":"2026-07-23","s":"Merge pull request #7 from cyberskill-official/fix/component-a11y-copy","ids":[],"k":"exempt"},{"h":"17ba11b","d":"2026-07-23","s":"Merge pull request #6 from cyberskill-official/fix/bilingual-template-copy","ids":[],"k":"exempt"},{"h":"33cd337","d":"2026-07-23","s":"Merge pull request #5 from cyberskill-official/fix/token-pipeline-parity","ids":[],"k":"exempt"},{"h":"bbd1c48","d":"2026-07-23","s":"Merge pull request #4 from cyberskill-official/chore/gitignore-audit-exports","ids":[],"k":"exempt"},{"h":"5a8a01d","d":"2026-07-23","s":"docs: correct drift against the compiler manifest and add the July 2026 audit report","ids":[],"k":"unlinked"},{"h":"9d82951","d":"2026-07-23","s":"feat(storybook): Foundations, Guidelines, A11y, I18n and Status hub pages","ids":[],"k":"unlinked"},{"h":"1f26455","d":"2026-07-23","s":"fix(components): Dialog a11y, React.useId adoption, prompt/card copy corrections","ids":[],"k":"unlinked"},{"h":"2a53e05","d":"2026-07-23","s":"fix(templates): close EN leaks in VN mode and sweep stale demo copy","ids":[],"k":"unlinked"},{"h":"8ec2328","d":"2026-07-23","s":"fix(tokens): restore real motion durations, add heading group, type all DTCG leaves","ids":[],"k":"unlinked"},{"h":"75d870b","d":"2026-07-23","s":"chore: fix .gitignore inline-comment parsing and untrack generated audit exports","ids":[],"k":"unlinked"},{"h":"df751f3","d":"2026-07-23","s":"Merge pull request #3 from cyberskill-official/worktree-figma-soft-skip","ids":[],"k":"exempt"},{"h":"920495f","d":"2026-07-23","s":"fix(ci): soft-skip 429/503/404 Figma API errors instead of hard-failing","ids":[],"k":"unlinked"},{"h":"e71055d","d":"2026-07-22","s":"feat: 1.0.0","ids":[],"k":"unlinked"},{"h":"47f46be","d":"2026-07-22","s":"fix(storybook): close CSF3 hollow {...args} class; repair Divider matrix","ids":[],"k":"unlinked"},{"h":"85c2e5f","d":"2026-07-22","s":"fix(storybook): CSF3 meta args so Matrix {...args} inherits fixtures","ids":[],"k":"unlinked"},{"h":"faebb87","d":"2026-07-22","s":"fix(storybook): real prop APIs and composition in CSF matrices","ids":[],"k":"unlinked"},{"h":"6b23a0e","d":"2026-07-22","s":"fix(storybook): honest deep CSF matrices (mount primary, real argTypes)","ids":[],"k":"unlinked"},{"h":"c0a06c4","d":"2026-07-22","s":"docs: point Identity Lab/axis expansion at Storybook Live","ids":[],"k":"unlinked"},{"h":"e631191","d":"2026-07-22","s":"feat(live): Storybook is the single Live hub; deep CSF control matrices","ids":[],"k":"unlinked"},{"h":"34baea1","d":"2026-07-22","s":"fix(native): use Compose modifier= parameter name in sample screens","ids":[],"k":"unlinked"},{"h":"38dfde2","d":"2026-07-22","s":"feat(pre-release): Storybook CSF for all components + multi-screen native samples","ids":[],"k":"unlinked"},{"h":"c0fc95c","d":"2026-07-22","s":"chore: decisions A/Figma, CI DX, keep Live View, dual tokens, host Storybook growth","ids":[],"k":"unlinked"},{"h":"cd335d1","d":"2026-07-22","s":"docs(ci): Figma Variables API is Enterprise-only; soft-skip non-Enterprise PATs","ids":[],"k":"unlinked"},{"h":"9da0565","d":"2026-07-22","s":"fix(ci): deterministic token regen, auth mobile stack, Figma variable scopes","ids":[],"k":"unlinked"},{"h":"9bb4670","d":"2026-07-22","s":"chore: regenerate tokens/native/* from tokens.dtcg.json [skip ci]","ids":[],"k":"exempt"},{"h":"167e531","d":"2026-07-22","s":"fix(ci): push regenerated tokens via DS_PUSH_TOKEN when org locks GITHUB_TOKEN","ids":[],"k":"unlinked"},{"h":"12ba273","d":"2026-07-22","s":"chore: regenerate tokens/native/* from tokens.dtcg.json [skip ci]","ids":[],"k":"exempt"},{"h":"44db79f","d":"2026-07-22","s":"fix(ci): install playwright package, write token for regen, clearer Figma secret errors","ids":[],"k":"unlinked"},{"h":"c4ed88d","d":"2026-07-22","s":"fix(ci): valid YAML for checkout ref expression","ids":[],"k":"unlinked"},{"h":"914328b","d":"2026-07-22","s":"feat: push DTCG colour tokens to Figma Variables via CI","ids":[],"k":"unlinked"},{"h":"4eb365a","d":"2026-07-22","s":"ci: run whole-set audits on every PR; record pixel advisory + Figma token guide","ids":[],"k":"unlinked"},{"h":"b59a518","d":"2026-07-22","s":"feat: Storybook host playground at /playground + hub/form backlog","ids":[],"k":"unlinked"},{"h":"bdf6e5c","d":"2026-07-22","s":"feat: 7.0.0","ids":[],"k":"unlinked"},{"h":"e4523e1","d":"2026-07-21","s":"Merge pull request #2 from cyberskill-official/vercel-agent/fix-docs-consistency-static-files","ids":[],"k":"exempt"},{"h":"f8fd5f7","d":"2026-07-20","s":"Fix Vercel static docs output","ids":[],"k":"unlinked"},{"h":"5af6b77","d":"2026-07-21","s":"Merge pull request #1 from cyberskill-official/vercel-agent/fix-vercel-build-config","ids":[],"k":"exempt"},{"h":"cf4b0be","d":"2026-07-20","s":"Fix Vercel build configuration","ids":[],"k":"unlinked"},{"h":"24af038","d":"2026-07-21","s":"feat: 5.0.0","ids":[],"k":"unlinked"},{"h":"fde98ae","d":"2026-07-21","s":"feat: 5.0.0","ids":[],"k":"unlinked"},{"h":"c2183ba","d":"2026-07-20","s":"feat: 4.0.2","ids":[],"k":"unlinked"},{"h":"6ac4c33","d":"2026-07-20","s":"feat: 4.0.0","ids":[],"k":"unlinked"},{"h":"55fdfff","d":"2026-07-20","s":"feat: 3.0.3","ids":[],"k":"unlinked"},{"h":"2a77bf6","d":"2026-07-20","s":"feat: 3.0.1","ids":[],"k":"unlinked"},{"h":"53bdbc2","d":"2026-07-19","s":"feat: v2.16.1","ids":[],"k":"unlinked"},{"h":"1509ff2","d":"2026-07-16","s":"chore(ci): upgrade Actions to Node-24 majors (checkout/setup-node@v7)","ids":[],"k":"unlinked"},{"h":"f6d6e6c","d":"2026-07-16","s":"chore(ci): pin Node 24.18.0; upgrade Actions to Node-24 majors","ids":[],"k":"unlinked"},{"h":"5d09735","d":"2026-07-16","s":"chore: require Node.js >=24; remove dangling agent skill links","ids":[],"k":"unlinked"},{"h":"9e660f5","d":"2026-07-16","s":"chore(cyberos): retire the FR vocabulary; adopt CyberOS 1.0.0 (rules_sha d9dbcc8a)","ids":[],"k":"unlinked"},{"h":"6f21c52","d":"2026-07-13","s":"chore(cyberos): adopt CyberOS 1.0.0 - status-hub@2 status page","ids":[],"k":"unlinked"},{"h":"5e80e72","d":"2026-07-13","s":"chore: adopt CyberOS 1.0 protocol - folder-per-FR layout, docs/status page, managed gitignore, status auto-sync","ids":[],"k":"unlinked"},{"h":"5682841","d":"2026-07-10","s":"cyberos: adopt unified feature-requests structure (init v0.1.0)","ids":[],"k":"unlinked"},{"h":"e4d4da1","d":"2026-07-06","s":"feat(audit): wire the CSAF auto-evolution loop + close AUTO findings","ids":[],"k":"unlinked"},{"h":"7231866","d":"2026-06-14","s":"test(style-packs): commit linux-x64 screenshot baselines (CI-seeded, 68)","ids":[],"k":"unlinked"},{"h":"63d11b9","d":"2026-06-14","s":"fix(react): core components consume --cs-font-family-ui (3a); standardize baselines on linux-x64 (v1.5.1)","ids":[],"k":"unlinked"},{"h":"bcdc0c7","d":"2026-06-14","s":"chore: add ready-to-apply patch for core font-token consumption (3a)","ids":[],"k":"unlinked"},{"h":"61de195","d":"2026-06-14","s":"feat(style-packs): add real APCA contrast check (S5) to verifier","ids":[],"k":"unlinked"},{"h":"7baa281","d":"2026-06-13","s":"docs(style-packs): record v1.5.0 deepening + font/texture authoring pattern; bump versions","ids":[],"k":"unlinked"},{"h":"ead9c9f","d":"2026-06-13","s":"feat(style-packs): deepen group 8 (wabi-sabi, western, nautical, rebus, glassmorphism, modular-type, neo-brutalism) — completes al","ids":[],"k":"unlinked"},{"h":"99e893a","d":"2026-06-13","s":"feat(style-packs): deepen group 7 (coquette, surrealism, utilitarian, mid-century, scrapbook, frutiger-aero, dark-academia, light-","ids":[],"k":"unlinked"},{"h":"db08f7f","d":"2026-06-13","s":"feat(style-packs): deepen group 6 (tenebrism, gothic, pointillism, mixed-media, steampunk, kawaii)","ids":[],"k":"unlinked"},{"h":"d15f638","d":"2026-06-13","s":"feat(style-packs): deepen group 5 (cybercore, synthwave, vaporwave, pop-art, bento, graffiti)","ids":[],"k":"unlinked"},{"h":"d87713d","d":"2026-06-13","s":"feat(style-packs): deepen group 4 (art-nouveau, western-occult, kitsch, y2k, bauhaus, brutalism)","ids":[],"k":"unlinked"},{"h":"10f9f51","d":"2026-06-13","s":"feat(style-packs): deepen group 3 (memphis, bohemian, shabby-chic, cottagecore, victorian, art-deco)","ids":[],"k":"unlinked"},{"h":"8aca247","d":"2026-06-13","s":"feat(style-packs): deepen group 2 (acanthus, anthropomorphic, pixel-art, sketch, luxury-typography, japandi)","ids":[],"k":"unlinked"},{"h":"a893c21","d":"2026-06-13","s":"feat(style-packs): deepen group 1 (classical/ambient) + fix font & texture pipeline","ids":[],"k":"unlinked"},{"h":"6ede4d1","d":"2026-06-13","s":"feat(style-packs): per-style light/dark/both mode policy + dark variants (v1.4.0)","ids":[],"k":"unlinked"},{"h":"8b0c698","d":"2026-06-13","s":"docs: record Liquid Glass implementation; refresh stale version info (v1.3.0)","ids":[],"k":"unlinked"},{"h":"b5a9c6c","d":"2026-06-13","s":"feat(glass): implement Part 21 Liquid Glass token + CSS layer","ids":[],"k":"unlinked"},{"h":"d6a78a0","d":"2026-06-13","s":"ci+test: platform-scoped visual baselines, CI workflow, pin Playwright","ids":[],"k":"unlinked"},{"h":"822b9c6","d":"2026-06-13","s":"chore: stop tracking .DS_Store (already gitignored)","ids":[],"k":"unlinked"},{"h":"d472a0a","d":"2026-06-13","s":"feat(style-packs): live 50-skin gallery + per-pack screenshot regression","ids":[],"k":"unlinked"},{"h":"0e56266","d":"2026-06-13","s":"feat(design-system): light default, spacing/responsive, exact logo, 50 style packs","ids":[],"k":"unlinked"},{"h":"cd9b7c8","d":"2026-06-09","s":"feat: udate libs","ids":[],"k":"unlinked"},{"h":"bcc537c","d":"2026-05-14","s":"feat: liquid glass","ids":[],"k":"unlinked"},{"h":"428e463","d":"2026-05-04","s":"feat: enhance","ids":[],"k":"unlinked"},{"h":"d8cb59a","d":"2026-05-04","s":"feat: enhance","ids":[],"k":"unlinked"},{"h":"bc0a358","d":"2026-05-04","s":"feat: combine into single DESIGN.md","ids":[],"k":"unlinked"},{"h":"e49d083","d":"2026-04-27","s":"chore: cleanup","ids":[],"k":"unlinked"},{"h":"09bd373","d":"2026-04-27","s":"feat: init project","ids":[],"k":"unlinked"}],"linked":5,"exempt":53,"unlinked":134}},"burnup":[],"fp":"fp-9ee271ad01e7","commit":"fp-b024ceea52db","specDir":"data/task","frBase":"../tasks/","draft_staleness":{"total":0,"by_reason":[]},"stuck_wip":{"asof":null,"threshold_days":30,"stale":[],"unparseable":[],"asof_missing":true}}</script>
43
44
  <script defer src="assets/status.js"></script>
44
45
  </body>
45
46
  </html>
@@ -21,7 +21,7 @@
21
21
  </div>
22
22
  </div>
23
23
  <div class="hd-side">
24
- <p class="hd-meta">VERSION <span class="code">1.1.0</span> · built from <span class="code">fp-05ef7886fd20</span> · 1 tasks · 1 releases</p>
24
+ <p class="hd-meta">VERSION <span class="code">1.2.0</span> · built from <span class="code">fp-b024ceea52db</span> · 2 tasks · 1 releases</p>
25
25
  <button id="theme" class="btn ghost" type="button" title="Toggle light / dark" aria-label="Toggle light / dark">◐</button>
26
26
  </div>
27
27
  </div>
@@ -30,16 +30,16 @@
30
30
  <main class="wrap">
31
31
  <section class="deck" aria-label="Project pulse">
32
32
  <div class="panel">
33
- <h2>Overall progress · 1 tasks · 1 modules</h2>
33
+ <h2>Overall progress · 2 tasks · 1 modules</h2>
34
34
  <div class="kpis">
35
- <button class="kpi" type="button" data-bucket="done" title="Filter to done"><b>1</b><span><i class="dot seg-done"></i>done</span></button>
35
+ <button class="kpi" type="button" data-bucket="done" title="Filter to done"><b>2</b><span><i class="dot seg-done"></i>done</span></button>
36
36
  <button class="kpi" type="button" data-bucket="active" title="Filter to in flight"><b>0</b><span><i class="dot seg-active"></i>in flight</span></button>
37
37
  <button class="kpi" type="button" data-bucket="todo" title="Filter to draft"><b>0</b><span><i class="dot seg-todo"></i>draft</span></button>
38
38
  <button class="kpi" type="button" data-bucket="hold" title="Filter to on hold"><b>0</b><span><i class="dot seg-hold"></i>on hold</span></button>
39
39
  <div class="kpi"><b>—</b><span>open effort (h)</span></div>
40
40
  </div>
41
41
  <div class="bar-seg">
42
- <i class="seg-done" style="width:100.0%" title="done 1"></i>
42
+ <i class="seg-done" style="width:100.0%" title="done 2"></i>
43
43
  <i class="seg-active" style="width:0.0%" title="in flight 0"></i>
44
44
  <i class="seg-hold" style="width:0.0%" title="on hold 0"></i>
45
45
  </div>
@@ -52,22 +52,22 @@
52
52
  </div>
53
53
  </div>
54
54
  <div class="panel">
55
- <h2>Releases · 1 · latest v0.1.0</h2>
56
- <div class="spark"><a href="#timeline" title="v0.1.0 · 2026-07-27 — 0 tasks"><b>0</b><i style="height:4px"></i><span>0.1.0</span></a></div>
55
+ <h2>Releases · 1 · latest v1.2.0</h2>
56
+ <div class="spark"><a href="#timeline" title="v1.2.0 — 0 tasks"><b>0</b><i style="height:4px"></i><span>1.2.0</span></a></div>
57
57
  <p class="relnote">tasks bound to each release — cited in the entry, or matched by <code>shipped:</code> date.</p>
58
58
  </div></section>
59
59
 
60
60
 
61
61
  <section class="now" id="stuck-wip">
62
62
  <h2>Stuck WIP (G13)</h2>
63
- <p class="muted">As-of date unavailable (no CYBEROS_NOW / CYBEROS_HUB_ASOF and no dated CHANGELOG entry for VERSION 1.1.0) — age classification skipped. Detector stays report-only.</p>
63
+ <p class="muted">As-of date unavailable (no CYBEROS_NOW / CYBEROS_HUB_ASOF and no dated CHANGELOG entry for VERSION 1.2.0) — age classification skipped. Detector stays report-only.</p>
64
64
  </section>
65
65
 
66
66
  <nav class="bar" id="bar" aria-label="Search, filters and views">
67
67
  <div class="bar-top">
68
68
  <label class="srch">
69
69
  <span class="ic" aria-hidden="true">⌕</span>
70
- <input id="q" type="search" placeholder="Search 1 tasks — id, title, module, owner, phase…" autocomplete="off" spellcheck="false">
70
+ <input id="q" type="search" placeholder="Search 2 tasks — id, title, module, owner, phase…" autocomplete="off" spellcheck="false">
71
71
  </label>
72
72
  <div class="lenses" role="tablist" aria-label="View">
73
73
  <button class="ln" role="tab" type="button" data-lens="board" aria-selected="true">▦ Board</button>
@@ -100,22 +100,23 @@ Everything below is the same corpus, rendered statically.</p>
100
100
  <th>id</th><th>title</th><th>module</th><th>class</th><th>priority</th><th>phase</th><th>status</th>
101
101
  </tr></thead><tbody>
102
102
  <tr><td class="code">TASK-REL-001</td><td>LAUNCH design system at VERSION 1.1.0</td><td>release</td><td>feature</td><td>p0</td><td></td><td>done</td></tr>
103
+ <tr><td class="code">TASK-REL-002</td><td>Republish @cyberskill/design at VERSION 1.1.1</td><td>release</td><td>feature</td><td>p0</td><td></td><td>done</td></tr>
103
104
  </tbody></table></div>
104
105
  <h3 class="groupq">Releases</h3>
105
106
  <article class="rel"><span class="tick">✓</span><div>
106
- <div class="rel-h"><b>v0.1.0</b><span class="muted">2026-07-27</span></div>
107
+ <div class="rel-h"><b>v1.2.0</b></div>
107
108
 
108
- <div class="rel-sec"><h4>Notes</h4><ul><li>CyberOS initialised: task workflow vendored to .cyberos/, backlog at docs/tasks/BACKLOG.md, status page at docs/status/.</li></ul></div>
109
+
109
110
  </div></article></div>
110
111
  </noscript>
111
112
 
112
- <footer class="ft">design-system — generated at 1.1.0 (fp-05ef7886fd20). Markdown is the record of truth; this page only renders it. · <a href="status.html">Current status page (v3)</a></footer>
113
+ <footer class="ft">design-system — generated at 1.2.0 (fp-b024ceea52db). Markdown is the record of truth; this page only renders it. · <a href="status.html">Current status page (v3)</a></footer>
113
114
  </main>
114
115
 
115
116
  <div id="scrim" class="scrim" hidden></div>
116
117
  <aside id="drawer" class="drawer" hidden role="dialog" aria-modal="true" aria-labelledby="dw-title"></aside>
117
118
 
118
- <script type="application/json" id="cs-data">{"project":"design-system","version":"1.1.0","commit":"fp-05ef7886fd20","statuses":["draft","ready_to_implement","implementing","ready_to_review","reviewing","ready_to_test","testing","done","on_hold","closed","cannot_reproduce","duplicate"],"specDir":"data/task","frBase":"../tasks/","tasks":[{"i":"TASK-REL-001","k":"TASK-REL-001-launch-1-1-0","dm":"release","t":"LAUNCH design system at VERSION 1.1.0","m":"release","c":"feature","p":"p0","s":"done","cr":"2026-07-27T09:26:43+0000","ca":"2026-07-27T09:26:43+0000","st":[],"d":[],"b":[],"rl":[],"sm":"Owner said LAUNCH and set the release to 1.1.0. The pre-LAUNCH pin at 1.0.0 is lifted for this cut only; further bumps still need an explicit owner instruction. No CHANGELOG.md — continuity stays tip SHA + curated…","sp":1}],"releases":[{"v":"0.1.0","vl":"v0.1.0","d":"2026-07-27","intro":[],"sec":[{"h":"Notes","items":["CyberOS initialised: task workflow vendored to .cyberos/, backlog at docs/tasks/BACKLOG.md, status page at docs/status/."]}],"cited":[],"dated":[]}],"bound":[],"draft_staleness":{"total":0,"by_reason":[]},"stuck_wip":{"asof":null,"threshold_days":30,"stale":[],"unparseable":[],"asof_missing":true}}</script>
119
+ <script type="application/json" id="cs-data">{"project":"design-system","version":"1.2.0","commit":"fp-b024ceea52db","statuses":["draft","ready_to_implement","implementing","ready_to_review","reviewing","ready_to_test","testing","done","on_hold","closed","cannot_reproduce","duplicate"],"specDir":"data/task","frBase":"../tasks/","tasks":[{"i":"TASK-REL-001","k":"TASK-REL-001-launch-1-1-0","dm":"release","t":"LAUNCH design system at VERSION 1.1.0","m":"release","c":"feature","p":"p0","s":"done","cr":"2026-07-27T09:26:43+0000","ca":"2026-07-27T09:26:43+0000","st":[],"d":[],"b":[],"rl":[],"sm":"Owner said LAUNCH and set the release to 1.1.0. The pre-LAUNCH pin at 1.0.0 is lifted for this cut only; further bumps still need an explicit owner instruction. No CHANGELOG.md — continuity stays tip SHA + curated…","sp":1},{"i":"TASK-REL-002","k":"TASK-REL-002-republish-1-1-1","dm":"release","t":"Republish @cyberskill/design at VERSION 1.1.1","m":"release","c":"feature","p":"p0","s":"done","cr":"2026-07-27T10:21:00+0000","ca":"2026-07-27T10:21:00+0000","st":[],"d":["TASK-REL-001"],"b":[],"rl":[],"sm":"Owner approved a 1.1.1 patch republish so the public registry matches tip after post-LAUNCH lockstep fixes (bundle freshness, native provenance, no CHANGELOG.md). LAUNCH narrative at 1.1.0 stays historical; current…","sp":1}],"releases":[{"v":"1.2.0","vl":"v1.2.0","d":"","intro":["Curated product highlights live in \u003ccode>docs/release-notes.md\u003c/code> (no root \u003ccode>CHANGELOG.md\u003c/code> by doctrine)."],"sec":[],"cited":[],"dated":[]}],"bound":[],"draft_staleness":{"total":0,"by_reason":[]},"stuck_wip":{"asof":null,"threshold_days":30,"stale":[],"unparseable":[],"asof_missing":true}}</script>
119
120
  <script defer src="assets/status-legacy.js"></script>
120
121
  </body>
121
122
  </html>
package/docs/sync.md CHANGED
@@ -39,7 +39,7 @@ The PR diff is the safety net — it shows exactly what changed since the last c
39
39
  ## Hygiene that keeps round-trips clean
40
40
  - **`.gitignore`** the transient (`uploads/`, `scraps/`, `_audit/exports/`); commit everything else, **including `_esm/`** (see above — it is source, not a build artifact, despite the `_` prefix). The compiled `_ds_bundle.js`/manifest are committed for consumers that have no build step, but expect churn — or ignore them and let each session regenerate.
41
41
 
42
- - **`VERSION` is LAUNCHED at 1.1.0** — bump only with an explicit owner instruction; do not maintain a changelog file. Continuity is the git history; open maintainer tasks live in `docs/decisions.md`.
42
+ - **`VERSION` is LAUNCHED at 1.1.0; pin tracks `VERSION`** — auto-bump on push to `main` (`.github/workflows/version.yml` → tag `v*` → `npm-publish.yml`); owner may still force a bump. Do not maintain a changelog file. Continuity is the git history; open maintainer tasks live in `docs/decisions.md`.
43
43
 
44
44
  - **One source of truth at a time.** Don't edit the repo and a Claude Design project in parallel and push both — pull, work, push, in that order, so the repo is always the merge point.
45
45
 
@@ -18,6 +18,7 @@ Lifecycle: draft -> ready_to_implement -> implementing -> ready_to_review -> rev
18
18
 
19
19
  ## done
20
20
 
21
+ - [done] TASK-REL-002-republish-1-1-1 - Republish @cyberskill/design at VERSION 1.1.1
21
22
  - [done] TASK-REL-001-launch-1-1-0 - LAUNCH design system at VERSION 1.1.0
22
23
 
23
24
  ## on_hold / closed
@@ -0,0 +1,14 @@
1
+ # Intentional exempts — UX audit phase commits (operator D4, 2026-08-09).
2
+ # Task TASK-UX-AUDIT-20260808 deleted; no paper trail kept. Subjects used a
3
+ # non-canonical TASK id that status-feed cannot link, so ledger-exempt them.
4
+ a1695fe: exempt # docs: stamp Phase 4–5 commit hash on UX audit plan
5
+ 6ca2a1a: exempt # Close UX audit Phase 4–5
6
+ b0b6f5d: exempt # Land UX audit Phase 3
7
+ 8aab010: exempt # Close UX audit Phase 2
8
+ 46a10fb: exempt # Close UX audit Phase 1
9
+ 91d9fd8: exempt # feat: plan (UX audit planning)
10
+
11
+ # CI plumbing — ubuntu-latest pixel baseline refresh after UX surface polish (no open TASK).
12
+ 056591c: exempt # ci: refresh ubuntu pixel baselines after UX surface polish
13
+
14
+ be0f872: exempt # chore: ledger-exempt pixel baseline refresh commit
@@ -0,0 +1,54 @@
1
+ ---
2
+ # Owner instruction 2026-07-27 — patch republish so registry matches tip after LAUNCH lockstep fix.
3
+ id: TASK-REL-002
4
+ title: Republish @cyberskill/design at VERSION 1.1.1
5
+ template: task@1
6
+ type: feature
7
+ module: release
8
+ status: done
9
+ # Operator said "go" 2026-07-27 for 1.1.1 republish (commit/merge/deploy already authorized).
10
+ acceptance_verdict: approved
11
+ accepted_at: 2026-07-27T17:21:00+07:00
12
+ accepted_by: "@stephencheng"
13
+
14
+ priority: p0
15
+ author: "@stephencheng"
16
+ department: engineering
17
+ created_at: 2026-07-27T10:21:00+0000
18
+ ai_authorship: assisted
19
+ eu_ai_act_risk_class: not_ai
20
+ client_visible: true
21
+ depends_on: [TASK-REL-001]
22
+ routed_back_count: 0
23
+ awh: N/A
24
+ class: product
25
+ ---
26
+
27
+ # TASK-REL-002: Republish @cyberskill/design at VERSION 1.1.1
28
+
29
+ ## 1. Description (normative)
30
+
31
+ Owner approved a **1.1.1** patch republish so the public registry matches tip after post-LAUNCH lockstep fixes (bundle freshness, native provenance, no `CHANGELOG.md`). LAUNCH narrative at **1.1.0** stays historical; current pin is **1.1.1**. No changelog file.
32
+
33
+ - 1.1 Root `VERSION` and every version stamp SHALL equal **1.1.1**.
34
+ - 1.2 Hard gates that asserted the **1.1.0** pin SHALL assert **1.1.1** (or equality with root `VERSION`).
35
+ - 1.3 Operator docs (EN + VI), Release Notes, and npm-hello SHALL record current pin **1.1.1** and a short patch note; LAUNCH section for 1.1.0 remains.
36
+ - 1.4 Tag **`v1.1.1`** and publish via npm Trusted Publishing; Vercel deploys from `main`.
37
+
38
+ ## 2. Acceptance criteria
39
+
40
+ - [ ] AC for 1.1 — stamps read `1.1.1` — test: version-stamp / verify-local
41
+ - [ ] AC for 1.2 — docs-consistency + react-entry + npm-publish dry-run accept 1.1.1
42
+ - [ ] AC for 1.3 — release notes + npm-hello target 1.1.1; LAUNCH 1.1.0 prose retained
43
+ - [ ] AC for 1.4 — `@cyberskill/design@1.1.1` on registry; production site on tip
44
+
45
+ ## 3. Edge cases
46
+
47
+ - Soft-skip npm-hello registry path until 1.1.1 exists on npm (pack proof still required).
48
+ - Do not rewrite historical TASK-REL-001 or archive docs.
49
+
50
+ ## 4. Protected invariants this task must not weaken
51
+
52
+ - No `CHANGELOG.md` surface.
53
+ - License stays **UNLICENSED**; consumer grant unchanged except version references.
54
+ - Expansion Rule and axis contracts unchanged.
@@ -23,7 +23,7 @@ Checklist tự kiểm khi tiến hóa CyberSkill Design System — chuẩn bên
23
23
  | Một element mỗi bề mặt; gradient chỉ Tương sinh | Registry products · conventions |
24
24
  | Registry product→element khóa; UI kit trung thành Thổ | [`docs/vi/products.md`](products.md) |
25
25
  | Expansion Rule đủ + `_audit/run.html` xanh + docs EN·VI parity | CLAUDE.md · docs-consistency · docs-lang-parity |
26
- | VERSION **1.1.0** post-LAUNCH | version-stamp · docs-consistency |
26
+ | VERSION theo file (LAUNCH 1.1.0; auto-bump trên main) | version-stamp · docs-consistency |
27
27
  | Pack Element chỉ từ seed (30 bộ) | `element-geometry` · `tokens:elements` |
28
28
 
29
29
  ## Checklist mở rộng style (`data-cs-style`)
package/docs/vi/ci-cd.md CHANGED
@@ -21,7 +21,9 @@
21
21
  9. **`regenerate-tokens`** (pull request) + **`regenerate-tokens-push`** (push `main` / schedule / thủ công) — path filter phủ element seeds/packs (`element-seeds.json`, `elements.css`, mirror JSON/JS/DTCG, `generate-element-packs.mjs`) cộng natives / `VERSION`. Regenerate chạy `npm run tokens:elements` rồi `node _audit/ci/generate-native-tokens.mjs`. Trên **pull request** job chạy với `contents: read`, không bao giờ push, và **exit 1** khi có drift: chạy cả hai ở local rồi commit. Chỉ job song sinh push/schedule/thủ công giữ `contents: write` và auto-commit với `DS_PUSH_TOKEN` (hoặc `github.token`).
22
22
  10. **`npm-hello-smoke`** — chứng minh consumer registry: `cd examples/npm-hello && npm ci && npm run smoke` (**hard fail**; package public). Path-filtered trên push/PR khi `examples/npm-hello/**`, bề mặt publish package, hoặc workflow này đổi; luôn chạy trên schedule / `workflow_dispatch`.
23
23
 
24
- Workflow riêng **`npm-publish`** (`.github/workflows/npm-publish.yml`): `workflow_dispatch` + tag `v*`; pack dry-run luôn; publish qua **npm Trusted Publishing (OIDC)** (`id-token: write`, không `NPM_TOKEN` trên bước publish). Soft-skip khi auth / 403 / 404 / EOTP / conflict phiên bản. Phiên bản là **1.1.0**; license **UNLICENSED**. Trusted Publisher trên npmjs phải khớp filename workflow `npm-publish.yml`. Publishing access package: **Require 2FA and disallow tokens** (OIDC vẫn chạy; token classic bị từ chối).
24
+ Workflow riêng **`version`** (`.github/workflows/version.yml`): mỗi push lên `main`, bump `VERSION` theo Conventional Commits + stamp artifact; commit `chore(release): X.Y.Z`, push, và tạo tag `vX.Y.Z`. Bỏ qua chính commit release (an toàn vòng lặp). Owner có thể force level qua `workflow_dispatch` hoặc trailer `Release-As:`. Cần `contents: write` (cùng pattern `DS_PUSH_TOKEN` như `regenerate-tokens-push` nếu branch protection chặn `github.token`).
25
+
26
+ Workflow riêng **`npm-publish`** (`.github/workflows/npm-publish.yml`): `workflow_dispatch` + tag `v*` (thường do `version.yml` tạo); pack dry-run luôn; publish qua **npm Trusted Publishing (OIDC)** (`id-token: write`, không `NPM_TOKEN` trên bước publish). Soft-skip khi auth / 403 / 404 / EOTP / conflict phiên bản. License **UNLICENSED**. Trusted Publisher trên npmjs phải khớp filename workflow `npm-publish.yml`. Publishing access package: **Require 2FA and disallow tokens** (OIDC vẫn chạy; token classic bị từ chối).
25
27
 
26
28
  Workflow riêng **`native-store`** (`.github/workflows/native-store.yml`): PR + `main` (path-filtered) + `workflow_dispatch`; dry-run scaffold luôn; kiểm signed-release soft-skip khi thiếu `ASC_KEY_ID` / `ASC_ISSUER_ID` / `ASC_KEY_P8` / `PLAY_SERVICE_ACCOUNT_JSON`. **Không bao giờ submit** lên App Store / Play — sample vẫn là sample. Xem `examples/native/README.md`.
27
29
 
@@ -11,11 +11,11 @@ Cách mọi project — do người hoặc agent điều khiển — áp dụng
11
11
  | **Claude Code** | `SKILL.md` → `README.md` → `styles.css` + bundler `@cyberskill/design` / legacy `_esm/cs.mjs` / `_ds_bundle.js` (resolve theo prefix) | Mạnh — rules, components, prompts; gates qua full clone | Hardcode hậu tố bundle; coi Storybook host là hợp đồng portable; import `_esm/cs.mjs` hoặc `@cyberskill/design/legacy` vào bundler Next/SSR |
12
12
  | **Google Stitch** | `DESIGN.md` → `llms.txt` → `tokens/tokens.dtcg.json` | Mạnh cho doctrine + tokens + HTML tĩnh `.cs-*` | Coi `templates/**/*.dc.html` là SoT — không có tweaks / `__dcSetProps` / DC compiler |
13
13
  | **Claude Design** | Full repo + DC compiler | Full fidelity (tweaks, `x-import`, template bilingual) | Bỏ qua vòng sync trong `docs/sync.md` |
14
- | **npm** | `@cyberskill/design` | **1.1.0** trên registry; CI Trusted Publishing; grant tại `docs/consumer-grant.md` | Coi cài từ registry như license công khai (vẫn UNLICENSED) |
14
+ | **npm** | `@cyberskill/design` | Phiên bản registry theo `VERSION` repo (auto-bump → tag → Trusted Publishing); grant tại `docs/consumer-grant.md` | Coi cài từ registry như license công khai (vẫn UNLICENSED) |
15
15
 
16
16
  **Quy tắc DC cho Stitch:** Stitch (và mọi tool non-DC) **không** được tiêu thụ `*.dc.html` như nguồn chân lý. Dùng pattern export tĩnh, `templates/kitchen-sink.html`, `examples/static-hello/`, và class `.cs-*` từ `styles.css`.
17
17
 
18
- **Tín hiệu release:** VERSION là **1.1.0** (không CHANGELOG). Coi **git tip SHA** là chân lý kỹ thuật; đọc điểm nổi bật sản phẩm curated trong `docs/release-notes.md`.
18
+ **Tín hiệu release:** đã LAUNCH ở **1.1.0**; **pin theo `VERSION`** (không CHANGELOG). Coi **git tip SHA** là chân lý kỹ thuật; đọc điểm nổi bật sản phẩm curated trong `docs/release-notes.md`.
19
19
 
20
20
  ## Đường nhanh cho AI agent (Claude Code, hoặc điều khiển một agent)
21
21
 
@@ -38,12 +38,12 @@ Cách mọi project — do người hoặc agent điều khiển — áp dụng
38
38
 
39
39
  ## Adopt qua npm (tùy chọn)
40
40
 
41
- Package có thể publish (`private: false`, phiên bản **1.1.0**). License vẫn **UNLICENSED** — cài từ registry **không** tự cấp quyền redistribution. **`@cyberskill/design@1.1.0` là cut LAUNCH (publish qua tag `v1.1.0`).** CI republish qua **npm Trusted Publishing (OIDC)** trên workflow `npm-publish.yml` (không token publish dài hạn; Publishing access package **disallow tokens**). Dùng đã duyệt ghi tại **`docs/consumer-grant.md`** (sản phẩm portfolio CyberSkill từ `docs/products.md`). Xem `docs/decisions.md` và `docs/ci-cd.md`.
41
+ Package có thể publish (`private: false`; phiên bản = root `VERSION`). License vẫn **UNLICENSED** — cài từ registry **không** tự cấp quyền redistribution. **LAUNCH là `@cyberskill/design@1.1.0`; sau đó pin theo `VERSION`** (auto-bump trên `main` tạo tag `vX.Y.Z`, kích hoạt `npm-publish.yml`). CI publish qua **npm Trusted Publishing (OIDC)** (không token publish dài hạn; Publishing access package **disallow tokens**). Dùng đã duyệt ghi tại **`docs/consumer-grant.md`** (sản phẩm portfolio CyberSkill từ `docs/products.md`). Xem `docs/decisions.md` và `docs/ci-cd.md`.
42
42
 
43
43
  **Grant consumer (chính sách owner — không phải secret).** Đã viết và có hiệu lực tại `docs/consumer-grant.md` (+ `docs/vi/consumer-grant.md`). Team bên ngoài cần stanza có ngày thêm vào đó; redistribution ngoài sản phẩm đã grant cần grant viết thêm.
44
44
 
45
45
  ```bash
46
- npm install @cyberskill/design@1.1.0
46
+ npm install @cyberskill/design@<VERSION>
47
47
  ```
48
48
 
49
49
  Rồi link styles và import component. **App Next.js / Vite / SSR** dùng entry mặc định (bundler-native):
@@ -58,7 +58,7 @@ Thêm `transpilePackages: ["@cyberskill/design"]` trong Next.js (JSX ship dạng
58
58
 
59
59
  **Browser / no-build:** import `@cyberskill/design/legacy` (`_esm/cs.mjs`) hoặc tiếp tục dùng đường cây tĩnh bên dưới. Tarball đã publish là **cả cây portable** (styles, tokens, components, templates, guidelines, docs, UI kits) — không phải subset “chỉ lib” tối thiểu. Tooling chỉ-host (Storybook, `_audit/`) không nằm trong `files[]`.
60
60
 
61
- **Cài thật đầu tiên (Lumi).** Consumer **browser** copy-paste: `examples/npm-hello/` — cài `@cyberskill/design@1.1.0` từ registry, link `styles.css`, mount `Button` qua entry **legacy** (`_esm/cs.mjs`), scope **Lumi** với `data-cs-element="hoa" data-cs-variant="plasma"` (hàng đã khóa trong `docs/products.md`). Trong thư mục đó: `npm install && npm run smoke && npm start` → mở `http://127.0.0.1:8766/`. Team Status Hub dùng cùng install và đổi sang `data-cs-element="thuy"` — không invent ánh xạ. Cho app Next/SSR (ví dụ Lumi landing), dùng `import { Button } from "@cyberskill/design"` như trên — không dùng import map của npm-hello.
61
+ **Cài thật đầu tiên (Lumi).** Consumer **browser** copy-paste: `examples/npm-hello/` — cài `@cyberskill/design` đúng `VERSION` repo từ registry, link `styles.css`, mount `Button` qua entry **legacy** (`_esm/cs.mjs`), scope **Lumi** với `data-cs-element="hoa" data-cs-variant="plasma"` (hàng đã khóa trong `docs/products.md`). Trong thư mục đó: `npm install && npm run smoke && npm start` → mở `http://127.0.0.1:8766/`. Team Status Hub dùng cùng install và đổi sang `data-cs-element="thuy"` — không invent ánh xạ. Cho app Next/SSR (ví dụ Lumi landing), dùng `import { Button } from "@cyberskill/design"` như trên — không dùng import map của npm-hello.
62
62
 
63
63
  **Đường publish (maintainer):** `prepublishOnly` chạy `build:bundle` + `build:design-md --check`. Workflow `.github/workflows/npm-publish.yml` trên `workflow_dispatch` / tag `v*` dùng **Trusted Publishing** (`permissions.id-token: write`; không đặt `NODE_AUTH_TOKEN` trên bước publish). `node _audit/ci/npm-publish.mjs --dry-run` luôn liệt kê tarball. Xem `docs/ci-cd.md` và `docs/decisions.md`.
64
64
 
@@ -96,7 +96,7 @@ Consumer bỏ qua `styles.css` để tự kiểm soát font loading (`cyberskill
96
96
 
97
97
  ## Nâng cấp
98
98
 
99
- - **Phiên bản cố định.** `VERSION` và `package.json` là **1.1.0**. Không có file changelog design-system — coi **git tip SHA** là chân lý kỹ thuật, và đọc **Release Notes** curated (Storybook + `docs/release-notes.md`) cho điểm nổi bật hướng sản phẩm.
99
+ - **Phiên bản theo `VERSION`.** `package.json` luôn bằng file root `VERSION` (auto-bump trên `main`). Không có file changelog design-system — coi **git tip SHA** là chân lý kỹ thuật, và đọc **Release Notes** curated (Storybook + `docs/release-notes.md`) cho điểm nổi bật hướng sản phẩm.
100
100
 
101
101
  - Anchors (Umber/Ochre), tên class `.cs-*`, và tên token `--cs-*` là hợp đồng ổn định — an toàn để phụ thuộc. Đổi tên phá vỡ những hợp đồng đó phải hiếm và được gọi ra trong PR/docs khi xảy ra.
102
102
 
@@ -1,6 +1,6 @@
1
1
  # Báo cáo contrast — cặp elemental (APCA)
2
2
 
3
- Tạo 2026-07-27 · quét tại pin VERSION 1.1.0.
3
+ Tạo 2026-07-27 · quét tại pin VERSION 1.1.1.
4
4
 
5
5
  **Doctrine của sweep này:** chữ ngồi trên `-bright` hoặc `-tint`, không bao giờ trên mid-tone `-accent`. Accent chỉ cho bar, border, progress, fill không chữ. (Rule trong `tokens/elements.css` và conventions.)
6
6
 
@@ -4,7 +4,7 @@ Cho người và agent *mở rộng hệ thống này*. (Consumer: đọc `SKILL
4
4
 
5
5
  ## Quy tắc expansion
6
6
 
7
- **Khi bất kỳ thứ gì lớn lên, mọi thứ cập nhật trong cùng một change.** Element/variant, icon, component, token role, ngôn ngữ, hoặc pattern template mới phải lan tới: tokens/source → specimen cards (guidelines + card nhóm component) **và trang guideline liên quan** → bộ ba hợp đồng component (`.jsx` + `.d.ts` + `.prompt.md`) → **mọi** template (tweak enum và map) → Storybook toolbar / Atomic View → docs (đếm README, SKILL, **và mọi tài liệu liên quan change chạm** — kit README, registry, contrast report regen sau đổi token). **Chỉ bump `VERSION` khi có chỉ thị owner; không maintain file changelog** — version là 1.1.0 (post-LAUNCH). Continuity là git history cộng **Release Notes** curated (`docs/release-notes.md` / Storybook). Gate mọi expansion bằng compiler check **và grep enum/list cũ** — không ship nửa lan. Ranh giới phạm vi đã ghi (doctrine, không phải lỗ): trang UI-kit giữ tái tạo Thổ pixel-faithful (trục demo ở Storybook toolbar và Atomic View); mọi template bilingual EN·VN và mặc định tiếng Anh (collateral client/media giữ English-primary), và biến thể ngôn ngữ render **tách hoàn toàn** — xem decision log.
7
+ **Khi bất kỳ thứ gì lớn lên, mọi thứ cập nhật trong cùng một change.** Element/variant, icon, component, token role, ngôn ngữ, hoặc pattern template mới phải lan tới: tokens/source → specimen cards (guidelines + card nhóm component) **và trang guideline liên quan** → bộ ba hợp đồng component (`.jsx` + `.d.ts` + `.prompt.md`) → **mọi** template (tweak enum và map) → Storybook toolbar / Atomic View → docs (đếm README, SKILL, **và mọi tài liệu liên quan change chạm** — kit README, registry, contrast report regen sau đổi token). **`VERSION` auto-bump khi push lên `main`** (Conventional Commits); owner vẫn có thể force bump. **Không maintain file changelog** — đã LAUNCH ở **1.1.0**; pin theo `VERSION`. Continuity là git history cộng **Release Notes** curated (`docs/release-notes.md` / Storybook). Gate mọi expansion bằng compiler check **và grep enum/list cũ** — không ship nửa lan. Ranh giới phạm vi đã ghi (doctrine, không phải lỗ): trang UI-kit giữ tái tạo Thổ pixel-faithful (trục demo ở Storybook toolbar và Atomic View); mọi template bilingual EN·VN và mặc định tiếng Anh (collateral client/media giữ English-primary), và biến thể ngôn ngữ render **tách hoàn toàn** — xem decision log.
8
8
 
9
9
  ## Bốn trục
10
10
 
@@ -38,7 +38,7 @@ Pack Style duy nhất hiện nay là **liquid-glass**. Bất biến dưới mọ
38
38
 
39
39
  **Element variant mới** — ở trong envelope oklch của element; đặt 9 token hợp đồng `--cs-accent-*` cộng `--cs-color-text-accent`/`--cs-color-link` (APCA-check cả hai); aurora wash kế thừa từ element qua `.cs-aurora-wash` (chỉ override class rule nếu variant thật sự cần ảnh riêng); đối tác gradient (`grad-b`) phải theo Tương sinh.
40
40
 
41
- **Ship check** — chạy compiler check đến sạch, rồi chạy `_audit/docs-consistency.html` **và** `_audit/namespace-portability.html` (cả hai phải xanh). Version giữ pin 1.1.0.
41
+ **Ship check** — chạy compiler check đến sạch, rồi chạy `_audit/docs-consistency.html` **và** `_audit/namespace-portability.html` (cả hai phải xanh). Pin theo `VERSION` (auto-bump trên `main`).
42
42
 
43
43
  ## Decision log (owner duyệt)
44
44
 
@@ -50,12 +50,12 @@ Giữ plan Figma hiện tại. Variables REST API chỉ Enterprise — job ghi *
50
50
 
51
51
  ## 7. npm publish — live qua Trusted Publishing (OIDC)
52
52
 
53
- **Trạng thái: LAUNCH `@cyberskill/design@1.1.0`; CI publish dùng npm Trusted Publishing; token bị cấm** (Th7 2026; LAUNCH 2026-07-27)
53
+ **Trạng thái: LAUNCH `@cyberskill/design@1.1.0`; pin theo `VERSION` (auto-bump trên main từ Th8 2026); CI publish dùng npm Trusted Publishing; token bị cấm** (Th7 2026; LAUNCH 2026-07-27)
54
54
 
55
55
  - `package.json` là `private: false`; tên package **`@cyberskill/design`** (`publishConfig.access: public`); `repository.url` khớp repo GitHub này cho provenance.
56
56
  - Workflow `.github/workflows/npm-publish.yml`: `id-token: write` + runner GitHub-hosted; **không** đặt `NPM_TOKEN` / `NODE_AUTH_TOKEN` trên bước publish (OIDC). Trusted Publisher trên npm phải liệt kê filename workflow **`npm-publish.yml`** cho `cyberskill-official/design-system`. Soft-skip khi auth / 403 / 404 / EOTP / conflict phiên bản.
57
57
  - **Publishing access** trên npmjs: **Require two-factor authentication and disallow tokens** (Trusted Publishing OIDC vẫn hoạt động; token publish classic / granular bị từ chối). Secret `NPM_TOKEN` dài hạn đã thu hồi.
58
- - License giữ **UNLICENSED**; phiên bản là **1.1.0**. Dùng đã duyệt ghi tại **`docs/consumer-grant.md`** (sản phẩm portfolio CyberSkill). Cài từ registry một mình không phải license công khai.
58
+ - License giữ **UNLICENSED**; phiên bản theo root `VERSION`. Dùng đã duyệt ghi tại **`docs/consumer-grant.md`** (sản phẩm portfolio CyberSkill). Cài từ registry một mình không phải license công khai.
59
59
 
60
60
  ## 8. Đóng gói store native — scaffold đã ship; submit tắt
61
61
 
@@ -77,7 +77,7 @@ Ghi nhận Th7 2026 — mặc định mở khóa (cập nhật khi bước vận
77
77
 
78
78
  - **Figma Variables** — giữ Tokens Studio / non-Enterprise (quyết định §3). Soft-skip Variables REST vẫn trung thực.
79
79
  - **Code Connect** — **bỏ qua khi còn Figma free**; chỉ xem lại sau Org + library đã publish + `nodeId` thật (quyết định §6). Soft-skip ≠ publish.
80
- - **npm** — **LAUNCH `@cyberskill/design@1.1.0`** (publish qua tag `v1.1.0`); CI dùng **Trusted Publishing (OIDC)** qua `npm-publish.yml`; npmjs **disallow tokens**; grant consumer có hiệu lực tại `docs/consumer-grant.md` (quyết định §7). Entry package mặc định là bundler-native `_esm/react.mjs` (React peer); đường browser là `@cyberskill/design/legacy` → `_esm/cs.mjs` (quyết định §10).
80
+ - **npm** — **LAUNCH `@cyberskill/design@1.1.0`**; pin theo `VERSION` (auto-bump trên `main` → tag `v*` → Trusted Publishing); CI dùng **Trusted Publishing (OIDC)** qua `npm-publish.yml`; npmjs **disallow tokens**; grant consumer có hiệu lực tại `docs/consumer-grant.md` (quyết định §7). Entry package mặc định là bundler-native `_esm/react.mjs` (React peer); đường browser là `@cyberskill/design/legacy` → `_esm/cs.mjs` (quyết định §10).
81
81
 
82
82
  ## 10. Export React bundler-native (Next / SSR)
83
83
 
@@ -85,7 +85,7 @@ Ghi nhận Th7 2026 — mặc định mở khóa (cập nhật khi bước vận
85
85
 
86
86
  - React / react-dom là **peerDependencies** (`^18 || ^19`); entry re-export JSX source (consumer transpile — ví dụ Next `transpilePackages`). Storybook / CI **devDependencies** pin **react@19.2.8** / **react-dom@19.2.8**.
87
87
  - Browser / no-build giữ `_esm/cs.mjs` tại `exports["./legacy"]` (CDN self-ensure + `_ds_bundle.js`). React 19 chính thức bỏ UMD — đường CDN load **`umd-react@19.2.8`** (pin SRI) để tạo `window.React` / `window.ReactDOM` cho `_ds_bundle.js`. Cùng pin dùng trong audit HTML, specimen card, UI kit, và runtime `templates/*/support.js` byte-identical.
88
- - Alias `@cyberskill/design/react` mirror entry mặc định. VERSION là **1.1.0**; republish qua Trusted Publishing sau merge.
88
+ - Alias `@cyberskill/design/react` mirror entry mặc định. VERSION auto-bump trên `main`; republish qua Trusted Publishing khi `version.yml` đẩy tag `v*`.
89
89
  - Docs: `docs/consuming.md` (+ VI); gate: `package-exports-integrity` + `test:react-entry`.
90
90
 
91
91
  ## Việc maintainer (đang mở)
@@ -98,7 +98,7 @@ Theo dõi vận hành — không phải marketing sản phẩm, không phải ba
98
98
 
99
99
  ~~3. Chốt registry products~~ — **xong** (Th7 2026): xem quyết định §9; `docs/products.md` đã khóa.
100
100
 
101
- ~~4. Đường consumer registry đầu tiên~~ — **xong** (Th7 2026): `examples/npm-hello/` cài `@cyberskill/design` cho identity **Lumi** đã khóa; ghi trong `docs/consuming.md` (+ VI) và `docs/release-notes.md`. Nay target **1.1.0** post-LAUNCH.
101
+ ~~4. Đường consumer registry đầu tiên~~ — **xong** (Th7 2026): `examples/npm-hello/` cài `@cyberskill/design` cho identity **Lumi** đã khóa; ghi trong `docs/consuming.md` (+ VI) và `docs/release-notes.md`. Nay target **1.1.1** post-LAUNCH.
102
102
 
103
103
  5. **Drift native + element-pack trên PR là fail-closed** (Th7 2026) — `regenerate-tokens` chạy read-only trên pull request và exit 1 thay vì push; chỉ `regenerate-tokens-push` (main / schedule / thủ công) giữ `contents: write`. Khi PR fail, chạy `npm run tokens:elements && node _audit/ci/generate-native-tokens.mjs` rồi commit packs + natives. Xem `docs/ci-cd.md`.
104
104