Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1100 commits
Select commit Hold shift + click to select a range
7bf51e1
chore(ci): migrate site lighthouse to lighthouse job
coryrylan Feb 13, 2026
4490663
chore(release): @nve/elements-v1.58.1 [skip ci]
semantic-release-bot Feb 13, 2026
79b3154
chore(release): @nve-labs/cli-v0.8.1 [skip ci]
semantic-release-bot Feb 13, 2026
7e30ab1
fix(elements): fix command event collision
coryrylan Feb 13, 2026
193d892
feat(elements): add close command for closable type controller
coryrylan Feb 13, 2026
6ac9433
chore(ci): fixup formatting
coryrylan Feb 13, 2026
7e8638c
chore(release): @nve/elements-v1.59.0 [skip ci]
semantic-release-bot Feb 13, 2026
0efb699
feat(elements): support vue and nuxt type checking
coryrylan Feb 13, 2026
6746406
chore(release): @nve/elements-v1.60.0 [skip ci]
semantic-release-bot Feb 17, 2026
d985913
fix(elements): grid column positioning
coryrylan Feb 17, 2026
9867f2d
chore(release): @nve/elements-v1.60.1 [skip ci]
semantic-release-bot Feb 17, 2026
56a10dc
chore(ci): internal skills
coryrylan Feb 17, 2026
8003dd3
fix(elements): dialog content height
coryrylan Feb 17, 2026
ed791ae
chore(release): @nve/elements-v1.60.2 [skip ci]
semantic-release-bot Feb 18, 2026
5fcab37
chore(ci): update metadata reports
coryrylan Feb 18, 2026
f1347c6
chore(elements): remove legacy tag name map
coryrylan Feb 17, 2026
0b450fd
feat(labs-cli): migration support
coryrylan Feb 17, 2026
ddbe40a
chore(release): @nve-labs/cli-v0.9.0 [skip ci]
semantic-release-bot Feb 18, 2026
a6a09be
chore(docs): vue playground support
coryrylan Feb 18, 2026
13c985e
fix(elements): missing container attribute reflection for text input …
coryrylan Feb 19, 2026
0bc8245
chore(release): @nve/elements-v1.60.3 [skip ci]
semantic-release-bot Feb 20, 2026
c37c8d9
chore(ci): add cdn-publish task
Jul 14, 2025
c9bfd22
fix(elements): combobox and popover trigger performance improvements
coryrylan Feb 20, 2026
fc4e261
chore(release): @nve/elements-v1.60.4 [skip ci]
semantic-release-bot Feb 23, 2026
f688a6a
feat(labs-cli): improved tool schemas and context management
coryrylan Feb 20, 2026
c707619
chore(release): @nve-labs/cli-v0.10.0 [skip ci]
semantic-release-bot Feb 23, 2026
738d537
chore(ci): fix vale lint rules for markdown
coryrylan Feb 24, 2026
30a4371
chore(ci): fix vale lint rules for ts
coryrylan Feb 24, 2026
0517297
chore(ci): add vale lint
coryrylan Feb 24, 2026
683e9ec
fix(labs-lint): improve lint deprecation rules
coryrylan Feb 20, 2026
2e3b3dc
fix(elements): minor page layout and grid api doc
coryrylan Feb 20, 2026
3903b56
chore(elements): improve example descriptions for context
coryrylan Feb 20, 2026
a68c065
feat(labs-lint): add new lint rules
coryrylan Feb 23, 2026
1b4325d
chore(ci): fixup lint errors
coryrylan Feb 23, 2026
64f17c6
fix(labs-cli): simplify update notification logic and markdown render
coryrylan Feb 23, 2026
d6b706c
chore(release): @nve/elements-v1.60.5 [skip ci]
semantic-release-bot Feb 25, 2026
163e3b9
chore(release): @nve-labs/lint-v0.12.0 [skip ci]
semantic-release-bot Feb 25, 2026
5b86a59
chore(release): @nve-labs/cli-v0.10.1 [skip ci]
semantic-release-bot Feb 25, 2026
03ce859
fix(elements): select input with flat and size options
coryrylan Feb 25, 2026
1525d00
chore(release): @nve/elements-v1.60.6 [skip ci]
semantic-release-bot Feb 26, 2026
c06ca69
chore(ci): expand commit guidelines and workflow tips in agent docs
WillGeller Feb 20, 2026
b0f3f9b
fix(docs): improve canvas preview loading and theme sync
WillGeller Feb 20, 2026
24991c3
feat(docs): fetch latest package versions for canvas preview via Pack…
WillGeller Feb 23, 2026
4281729
fix(labs-cli): update package dependencies and improve tool accuracy
coryrylan Feb 26, 2026
4a7226b
fix(labs-lint): enhance attribute handling and linting rules
coryrylan Feb 27, 2026
9f0b2ff
chore(release): @nve-labs/lint-v0.12.1 [skip ci]
semantic-release-bot Feb 27, 2026
8588762
chore(release): @nve-labs/cli-v0.10.2 [skip ci]
semantic-release-bot Feb 27, 2026
e27da24
fix(labs-lint): remove unnecessary peer dep
coryrylan Feb 27, 2026
ae3e391
fix(styles): lint and space token usage
coryrylan Feb 27, 2026
b6c20a0
chore(release): @nve/styles-v1.13.2 [skip ci]
semantic-release-bot Feb 27, 2026
93c81bd
chore(release): @nve-labs/lint-v0.12.2 [skip ci]
semantic-release-bot Feb 27, 2026
5ab0136
chore(ci): introduced development markdown and standardized readme files
coryrylan Feb 27, 2026
aedd313
fix(labs-cli): add missing readme and install context
coryrylan Feb 27, 2026
9e7be98
chore(release): @nve-labs/cli-v0.10.3 [skip ci]
semantic-release-bot Feb 27, 2026
286c12c
chore(ci): tweak creation skill
johnyanarella Feb 19, 2026
aff3ee4
chore(ci): tweak primitive property lint rule
johnyanarella Feb 19, 2026
8df4c1e
fix(labs-lint): avoid non-literal enum false positives
johnyanarella Feb 20, 2026
3e885d4
feat(elements): add sparkline element
johnyanarella Feb 19, 2026
44f31ef
chore(ci): update lighthouse metadata
johnyanarella Feb 20, 2026
0f2ba66
chore(docs): add data element guidelines
johnyanarella Feb 20, 2026
9fb43ee
chore(docs): enable html-minify conservative collapse
johnyanarella Feb 20, 2026
7d23a42
chore(release): @nve/elements-v1.61.0 [skip ci]
semantic-release-bot Feb 27, 2026
6b8e33a
chore(release): @nve-labs/lint-v0.12.3 [skip ci]
semantic-release-bot Feb 27, 2026
bc2643a
chore(ci): add prettier and vale lint hooks
coryrylan Feb 27, 2026
2df0a48
chore(ci): fixup lint issues
coryrylan Feb 27, 2026
5b063ea
fix(elements): page toolbar alignment
coryrylan Feb 28, 2026
331bdfb
chore(release): @nve/elements-v1.61.1 [skip ci]
semantic-release-bot Mar 2, 2026
ad21103
chore(ci): fixup lint issues
johnyanarella Feb 28, 2026
ec0884a
chore(internals): support complex attribute types in validation
johnyanarella Feb 28, 2026
24f9e71
chore(ci): hooks cleanup
coryrylan Mar 2, 2026
7bb17e6
chore(ci): improve internal eslint rules for guidelines
coryrylan Mar 2, 2026
f575451
fix(elements): lint errors and missing scope registry tags
coryrylan Mar 2, 2026
e05041b
fix(monaco): lint errors and missing scope registry tags
coryrylan Mar 2, 2026
a869f77
chore(docs): lint errors
coryrylan Mar 2, 2026
b0e7f51
chore(release): @nve/elements-v1.61.2 [skip ci]
semantic-release-bot Mar 3, 2026
8aa0a38
chore(release): @nve/monaco-v1.4.1 [skip ci]
semantic-release-bot Mar 3, 2026
fe6be54
fix(elements): popover and invoker types
coryrylan Mar 3, 2026
fa3e5e4
chore(release): @nve/elements-v1.61.3 [skip ci]
semantic-release-bot Mar 3, 2026
c66713b
chore(create): align tsconfig
coryrylan Mar 2, 2026
cded8b1
chore(styles): align tsconfig
coryrylan Mar 2, 2026
397a4b0
chore(themes): align tsconfig
coryrylan Mar 2, 2026
45ec94f
chore(labs-media): sync tsconfig
coryrylan Mar 2, 2026
b0a954c
chore(labs-markdown): align tsconfig
coryrylan Mar 2, 2026
90cff88
chore(internals): align tsconfig for tools
coryrylan Mar 3, 2026
b6356a3
chore(docs): fix animated build card width
johnyanarella Mar 4, 2026
810eee2
fix(labs-lint): improved runtime checking and type checking
coryrylan Mar 3, 2026
5b0a712
chore(release): @nve-labs/lint-v0.12.4 [skip ci]
semantic-release-bot Mar 4, 2026
a0f6852
fix(labs-forms): improve type checking
coryrylan Mar 3, 2026
928d1f2
fix(labs-cli): rename setup command
coryrylan Mar 4, 2026
565b4a0
fix(elements): postinstall command rename
coryrylan Mar 4, 2026
37047b8
chore(docs): update integration starting page
coryrylan Mar 4, 2026
c89367a
chore(release): @nve-labs/forms-v1.0.2 [skip ci]
semantic-release-bot Mar 4, 2026
10d4e9c
chore(release): @nve/elements-v1.61.4 [skip ci]
semantic-release-bot Mar 4, 2026
c4d61a5
chore(release): @nve-labs/cli-v0.10.4 [skip ci]
semantic-release-bot Mar 4, 2026
e7a23f1
chore(internals): align tsconfigs
coryrylan Mar 4, 2026
b089364
fix(labs-code): align tsconfig
coryrylan Mar 4, 2026
f3119f3
chore(internals): update metadata to tsconfig and remove runtime data
coryrylan Mar 4, 2026
0182f2e
chore(release): @nve-labs/code-v0.7.2 [skip ci]
semantic-release-bot Mar 4, 2026
8d711a4
fix(labs-cli): improve playground generation
coryrylan Mar 4, 2026
caf2188
feat(labs-lint): no-restricted-page-sizing
coryrylan Mar 4, 2026
f67e245
chore(internals): fix lint pattern errors
coryrylan Mar 4, 2026
a212a62
chore(release): @nve-labs/lint-v0.13.0 [skip ci]
semantic-release-bot Mar 5, 2026
9c8b91e
chore(release): @nve-labs/cli-v0.10.5 [skip ci]
semantic-release-bot Mar 5, 2026
a176244
fix(elements): resolve sparkline examples not rendering in docs preview
WillGeller Mar 5, 2026
12a32c2
chore(release): @nve/elements-v1.61.5 [skip ci]
semantic-release-bot Mar 5, 2026
ea01935
chore(ci): setup stylelint agent hook
coryrylan Mar 5, 2026
38a435e
feat(elements): open progress ring center to slotted content
johnyanarella Mar 5, 2026
7f16d59
fix(elements): progress ring layout shift
johnyanarella Mar 5, 2026
f62405b
chore(release): @nve/elements-v1.62.0 [skip ci]
semantic-release-bot Mar 5, 2026
f5b19fd
fix(styles): prevent stretch of flex items of direct column children
coryrylan Mar 5, 2026
38f9adf
chore(release): @nve/styles-v1.13.3 [skip ci]
semantic-release-bot Mar 5, 2026
aecbb92
fix(labs-cli): start command cwd failure
coryrylan Mar 5, 2026
51dccf1
fix(labs-cli): enable json format for lists
coryrylan Mar 5, 2026
e3746d6
chore(release): @nve-labs/cli-v0.10.6 [skip ci]
semantic-release-bot Mar 5, 2026
54ed61c
fix(labs-cli): improve base context
coryrylan Mar 6, 2026
473f53d
chore(release): @nve-labs/cli-v0.10.7 [skip ci]
semantic-release-bot Mar 9, 2026
38127f5
chore(monaco): align tsconfig
coryrylan Mar 9, 2026
8061aa4
fix(elements): controller behavior and event cleanup
coryrylan Mar 6, 2026
71cd303
chore(release): @nve/elements-v1.62.1 [skip ci]
semantic-release-bot Mar 9, 2026
301adfd
chore(ci): update lint rules and hook
coryrylan Mar 5, 2026
a0bfe60
fix(elements): css corrections
coryrylan Mar 5, 2026
6faac83
chore(labs-code): css corrections
coryrylan Mar 5, 2026
68e23e1
chore(labs-markdown): css corrections
coryrylan Mar 5, 2026
542799e
chore(monaco): css corrections
coryrylan Mar 5, 2026
ea1a467
chore(themes): css corrections
coryrylan Mar 5, 2026
166da9f
chore(docs): css corrections
coryrylan Mar 5, 2026
651feff
chore(ci): add examples metadata lint checks
coryrylan Mar 9, 2026
1238577
fix(elements): sort icon names by usage
coryrylan Mar 9, 2026
568d3d1
feat(labs-lint): no-nested-container-types
coryrylan Mar 9, 2026
d34f226
fix(labs-cli): context formatting fixes
coryrylan Mar 9, 2026
4092228
chore(release): @nve/elements-v1.62.2 [skip ci]
semantic-release-bot Mar 10, 2026
12cdfff
chore(release): @nve-labs/lint-v0.14.0 [skip ci]
semantic-release-bot Mar 10, 2026
6c17094
chore(release): @nve-labs/cli-v0.10.8 [skip ci]
semantic-release-bot Mar 10, 2026
049b22a
chore(ci): migrate snippet directories
coryrylan Mar 10, 2026
8cb85d9
chore(labs-cli): migrate directories
coryrylan Mar 10, 2026
0fbb50e
chore(labs-lint): migrate directories
coryrylan Mar 10, 2026
e9d6318
chore(media): migrate directories
coryrylan Mar 10, 2026
425204b
chore(labs-markdown): migrate directories
coryrylan Mar 10, 2026
405e66a
chore(labs-code): migrate directories
coryrylan Mar 10, 2026
c52f677
chore(elements): align tsconfig
coryrylan Mar 10, 2026
e9c18f9
feat(elements): support native scoped registries
coryrylan Mar 10, 2026
a1c2625
chore(starters): remove deprecated scoped example
coryrylan Mar 10, 2026
5b9a9b5
chore(ci): update lighthouse
coryrylan Mar 10, 2026
5924f3d
chore(release): @nve/elements-v1.63.0 [skip ci]
semantic-release-bot Mar 11, 2026
e532d37
chore(docs): align examples naming
coryrylan Mar 12, 2026
f427347
chore(ci): add critical file protection and destructive command guards
coryrylan Mar 12, 2026
62494fd
fix(elements): add missing composed for better event propagation
coryrylan Mar 12, 2026
ce5414e
fix(monaco): add missing composed for better event propagation
coryrylan Mar 12, 2026
cd9d4b7
chore(ci): add rules for test completeness and composed events
coryrylan Mar 12, 2026
bf7e3f4
chore(release): @nve/elements-v1.63.1 [skip ci]
semantic-release-bot Mar 12, 2026
dc2cfa8
chore(release): @nve/monaco-v1.4.2 [skip ci]
semantic-release-bot Mar 12, 2026
7e53114
fix(elements): align css logical properties
coryrylan Mar 12, 2026
1a8242f
fix(labs-code): align css logical properties
coryrylan Mar 12, 2026
98a4cf0
fix(labs-markdown): align css logical properties
coryrylan Mar 12, 2026
ecd747b
fix(monaco): align css logical properties
coryrylan Mar 12, 2026
a9befd7
chore(ci): align css logical properties
coryrylan Mar 12, 2026
5b36a41
chore(release): @nve/elements-v1.63.2 [skip ci]
semantic-release-bot Mar 12, 2026
a087fb8
chore(release): @nve-labs/code-v0.7.3 [skip ci]
semantic-release-bot Mar 12, 2026
1c32155
chore(release): @nve-labs/markdown-v0.2.1 [skip ci]
semantic-release-bot Mar 12, 2026
b804abf
chore(release): @nve/monaco-v1.4.3 [skip ci]
semantic-release-bot Mar 12, 2026
3a9a2e1
chore(elements): add unit tests for services
coryrylan Mar 11, 2026
48f801a
fix(elements): restore grid stripe css selector
johnyanarella Mar 16, 2026
4828e75
chore(release): @nve/elements-v1.63.3 [skip ci]
semantic-release-bot Mar 16, 2026
652d22b
fix(elements): cleanup utility functions and tests
coryrylan Mar 11, 2026
daae89c
chore(ci): update lighthouse tests
coryrylan Mar 11, 2026
ca582b6
chore(release): @nve/elements-v1.63.4 [skip ci]
semantic-release-bot Mar 16, 2026
7fabb16
feat(elements): add vertical orientation support to nve-range
jacobguza Mar 14, 2026
25d98fb
chore(release): @nve/elements-v1.64.0 [skip ci]
semantic-release-bot Mar 17, 2026
f216b10
fix(elements): correct off-by-one and end cap in pagination label
johnyanarella Mar 17, 2026
1a46708
chore(release): @nve/elements-v1.64.1 [skip ci]
semantic-release-bot Mar 17, 2026
e385e0a
chore(ci): context linting and env hook
coryrylan Mar 18, 2026
c5fd2c0
chore(docs): update examples and fix error handling in shortcodes
coryrylan Mar 18, 2026
73218bc
chore(ci): update to vite 8
coryrylan Mar 17, 2026
3dd84f4
feat(labs-cli): support cross platform binaries and upgrade command
coryrylan Mar 17, 2026
4bbe798
chore(release): @nve/elements-v1.65.0 [skip ci]
semantic-release-bot Mar 19, 2026
623709d
chore(release): @nve-labs/cli-v0.11.0 [skip ci]
semantic-release-bot Mar 19, 2026
38a9f40
fix(labs-cli): release script
coryrylan Mar 19, 2026
6dc8675
chore(release): @nve-labs/cli-v0.11.1 [skip ci]
semantic-release-bot Mar 19, 2026
6908704
chore(ci): eslint ts complexity
coryrylan Mar 18, 2026
4c7162b
chore(labs-cli): reduce complexity
coryrylan Mar 18, 2026
a7cd466
fix(labs-cli): installation scripts and update version handling
coryrylan Mar 19, 2026
2f164ca
chore(release): @nve-labs/cli-v0.11.2 [skip ci]
semantic-release-bot Mar 19, 2026
6d79668
chore(ci): update metrics
coryrylan Mar 19, 2026
f7c0fe0
chore(ci): migrate internals projects
coryrylan Mar 19, 2026
90fbe3f
fix(elements): scoped registry object fallback
coryrylan Mar 20, 2026
1928376
chore(release): @nve/elements-v1.65.1 [skip ci]
semantic-release-bot Mar 20, 2026
6ed57b7
fix(elements): grid column max-content
coryrylan Mar 20, 2026
2940582
chore(release): @nve/elements-v1.65.2 [skip ci]
semantic-release-bot Mar 20, 2026
8ccdcc9
fix(labs-lint): correct combobox false positives in validator and lint
johnyanarella Mar 20, 2026
89b1284
chore(release): @nve-labs/lint-v0.14.1 [skip ci]
semantic-release-bot Mar 20, 2026
98c69e0
fix(elements): support for dynamically added options in combobox
coryrylan Mar 20, 2026
0ca14de
fix(elements): fallback registry
coryrylan Mar 20, 2026
54f8eaf
chore(release): @nve/elements-v1.65.3 [skip ci]
semantic-release-bot Mar 20, 2026
bca7031
chore(labs-forms): reduce cyclomatic complexity
coryrylan Mar 20, 2026
f56bb14
chore(internals): reduce cyclomatic complexity
coryrylan Mar 20, 2026
b00cdc7
chore(monaco): reduce cyclomatic complexity
coryrylan Mar 20, 2026
105330a
chore(elements): reduce cyclomatic complexity
coryrylan Mar 20, 2026
47fc86f
chore(ci): drop react 18 starter
coryrylan Mar 20, 2026
3fdfb1a
chore(ci): simplify starters
coryrylan Mar 20, 2026
5ae7489
fix(elements): incorrect root node warning
coryrylan Mar 20, 2026
a843eb8
chore(release): @nve/elements-v1.65.4 [skip ci]
semantic-release-bot Mar 23, 2026
a53d249
fix(elements): duplicate version fallback check
coryrylan Mar 21, 2026
1f6297d
chore(release): @nve/elements-v1.65.5 [skip ci]
semantic-release-bot Mar 23, 2026
7f1ca61
chore(internals): typescript type enabled lint rules
coryrylan Mar 23, 2026
d17a745
chore(labs-cli): typescript type enabled lint rules
coryrylan Mar 23, 2026
98cfdb6
chore(labs-code): typescript type enabled lint rules
coryrylan Mar 23, 2026
3914519
chore(elements): typescript type enabled lint rules
coryrylan Mar 23, 2026
c331710
chore(labs-forms): typescript type enabled lint rules
coryrylan Mar 23, 2026
a9aa9e5
chore(internals): typescript type enabled lint rules
coryrylan Mar 23, 2026
9760998
chore(labs-lint): typescript type enabled lint rules
coryrylan Mar 23, 2026
6af86b9
chore(monaco): typescript type enabled lint rules
coryrylan Mar 23, 2026
e093726
chore(docs): typescript type enabled lint rules
coryrylan Mar 23, 2026
8eee944
chore(ci): update project configuration and add worktree management s…
coryrylan Mar 20, 2026
a3d58a2
chore(ci): rename directory
coryrylan Mar 23, 2026
c1054e4
chore(ci): update to typescript 6.0
coryrylan Mar 23, 2026
58ad3ce
chore(ci): update semantic release deps
coryrylan Mar 24, 2026
f95d4a9
chore(ci): semantic release update
coryrylan Mar 24, 2026
474b759
feat(labs-cli): support codex project setup
coryrylan Mar 23, 2026
2a29dfd
chore(ci): semantic release scope
coryrylan Mar 24, 2026
75dba6a
chore(release): @nve-labs/cli-v0.12.0 [skip ci]
semantic-release-bot Mar 24, 2026
c356dbc
fix(labs-cli): add code signing for macos binaries
coryrylan Mar 25, 2026
c6cc670
chore(release): @nve-labs/cli-v0.12.1 [skip ci]
semantic-release-bot Mar 25, 2026
01b2f5e
chore(ci): migrate and remove internal metrics
coryrylan Mar 24, 2026
dbefffe
chore(docs): add agent harness guidelines doc and context file
coryrylan Mar 25, 2026
c1525b1
fix(elements): bundle side effects import
coryrylan Mar 26, 2026
eed0881
chore(release): @nve/elements-v1.65.6 [skip ci]
semantic-release-bot Mar 30, 2026
13896e9
feat(elements): add --track-background for nve-range unfilled track
WillGeller Mar 26, 2026
2c89c83
fix(docs): update stale cdn fallback versions in canvas-editable
WillGeller Mar 26, 2026
49e6dca
feat(docs): use local bundle builds for iframe previews on localhost
WillGeller Mar 30, 2026
1678cd3
chore(release): @nve/elements-v1.66.0 [skip ci]
semantic-release-bot Mar 30, 2026
45367a4
chore(ci): enable env vars for conditional builds
coryrylan Mar 25, 2026
b600eff
fix(labs-cli): update check issue
coryrylan Mar 25, 2026
61a3af1
chore(docs): update env url paths
coryrylan Mar 26, 2026
722973f
chore(starters): remove external links
coryrylan Mar 26, 2026
61458d7
chore(ci): cleanup build env
coryrylan Mar 26, 2026
4bc62ce
chore(release): @nve-labs/cli-v0.12.2 [skip ci]
semantic-release-bot Mar 31, 2026
a566dea
fix(elements): update aria-orientation and event config
coryrylan Mar 31, 2026
423c569
chore(elements): add tests
coryrylan Mar 31, 2026
b6310ff
chore(release): @nve/elements-v1.66.1 [skip ci]
semantic-release-bot Mar 31, 2026
702b47a
chore(docs): cdn path updates
coryrylan Mar 31, 2026
2a16bcd
chore(docs): cli deployment path for windows binary
coryrylan Mar 31, 2026
90f795f
chore(docs): env var fixes
coryrylan Mar 31, 2026
d60959f
chore(docs): icon docs cleanup
coryrylan Apr 2, 2026
02f7f70
fix(labs-cli): simplify update check logic and improve notification h…
coryrylan Apr 2, 2026
f062d3d
chore(release): @nve-labs/cli-v0.12.3 [skip ci]
semantic-release-bot Apr 2, 2026
3002b28
chore(ci): update workspace for external release
coryrylan Apr 2, 2026
2f83f99
chore(ci): add spdx license headers
coryrylan Apr 2, 2026
064e274
chore(ci): regenerate lockfile after migration
coryrylan Apr 2, 2026
32f1f76
chore(ci): add dependency audit report
coryrylan Apr 2, 2026
f3639d6
chore(deps): bump @angular/compiler in /projects/starters/angular
dependabot[bot] Apr 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
20 changes: 20 additions & 0 deletions .claude/hooks/format-prettier.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/usr/bin/env bash
set -euo pipefail

INPUT=$(cat)
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

# Exit early if no file path
if [[ -z "$FILE_PATH" ]]; then
exit 0
fi

# Run Prettier on the specific file
OUTPUT=$(cd "$CLAUDE_PROJECT_DIR" && pnpm exec prettier --write --ignore-unknown --no-error-on-unmatched-pattern "$FILE_PATH" 2>&1) || EXIT_CODE=$?

if [[ ${EXIT_CODE:-0} -ne 0 && -n "$OUTPUT" ]]; then
echo "$OUTPUT" >&2
exit 2
fi

exit 0
41 changes: 41 additions & 0 deletions .claude/hooks/guard-critical-files.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/usr/bin/env bash
set -euo pipefail

INPUT=$(cat)
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

# Exit early if no file path
if [[ -z "$FILE_PATH" ]]; then
exit 0
fi

# Resolve to a path relative to the project directory for consistent matching
REL_PATH="${FILE_PATH#"$CLAUDE_PROJECT_DIR"/}"

# Protected slow-layer infrastructure files
PROTECTED_FILES=(
"pnpm-workspace.yaml"
"commitlint.config.js"
"release.config.cjs"
"package.json"
"pnpm-lock.yaml"
".nvmrc"
".husky"
"config"
)

# Check if the file is a root-level protected file
BASENAME=$(basename "$REL_PATH")
DIRNAME=$(dirname "$REL_PATH")

for PROTECTED in "${PROTECTED_FILES[@]}"; do
# Only protect root-level files (dirname is . or matches project dir)
if [[ "$BASENAME" == "$PROTECTED" && ("$DIRNAME" == "." || "$FILE_PATH" == "$CLAUDE_PROJECT_DIR/$PROTECTED") ]]; then
echo "BLOCKED: '$PROTECTED' is a critical infrastructure file (slow-layer)." >&2
echo "These files affect the entire monorepo and should only be modified when the user explicitly requests it." >&2
echo "If the user has asked for this change, re-run the command to confirm." >&2
exit 2
fi
done

exit 0
29 changes: 29 additions & 0 deletions .claude/hooks/guard-destructive.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/usr/bin/env bash
set -euo pipefail

INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

# Exit early if not a git command
if [[ -z "$COMMAND" ]] || ! echo "$COMMAND" | grep -qE '^\s*git\s'; then
exit 0
fi

block() {
echo "BLOCKED: Destructive git operation detected." >&2
echo " Command: $COMMAND" >&2
echo " Reason: $1." >&2
echo "" >&2
echo "Per AGENTS.md policy, destructive git operations require explicit user confirmation." >&2
echo "If the user has explicitly requested this operation, ask them to run it manually." >&2
exit 2
}

echo "$COMMAND" | grep -qF "reset --hard" && block "git reset --hard discards all uncommitted changes irreversibly"
echo "$COMMAND" | grep -qF "push --force" && block "git push --force can overwrite remote history and destroy teammates' work"
echo "$COMMAND" | grep -qF "push -f" && block "git push -f can overwrite remote history and destroy teammates' work"
echo "$COMMAND" | grep -qF "clean -f" && block "git clean -f permanently deletes untracked files"
echo "$COMMAND" | grep -qF "checkout -- ." && block "git checkout -- . discards all unstaged changes irreversibly"
echo "$COMMAND" | grep -qF "branch -D" && block "git branch -D force-deletes a branch without merge checks"

exit 0
35 changes: 35 additions & 0 deletions .claude/hooks/guard-package-manager.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#!/usr/bin/env bash
set -euo pipefail

INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

# Exit early if empty or not an npm/yarn command
if [[ -z "$COMMAND" ]]; then
exit 0
fi

block() {
echo "BLOCKED: Wrong package manager detected." >&2
echo " Command: $COMMAND" >&2
echo " Reason: $1." >&2
echo "" >&2
echo "This project uses pnpm exclusively. Replace '$2' with '$3' and try again." >&2
exit 2
}

# Block npm and npx
if echo "$COMMAND" | grep -qE '(^|\s|&&|\|\||;)npm(\s|$)'; then
block "npm is not the package manager for this monorepo" "npm" "pnpm"
fi

if echo "$COMMAND" | grep -qE '(^|\s|&&|\|\||;)npx(\s|$)'; then
block "Use 'pnpm dlx' instead of 'npx' in this monorepo" "npx" "pnpm dlx"
fi

# Block yarn
if echo "$COMMAND" | grep -qE '(^|\s|&&|\|\||;)yarn(\s|$)'; then
block "yarn is not the package manager for this monorepo" "yarn" "pnpm"
fi

exit 0
38 changes: 38 additions & 0 deletions .claude/hooks/lint-commitlint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/usr/bin/env bash
set -euo pipefail

INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')

# Exit early if not a git commit command
if [[ -z "$COMMAND" ]] || ! echo "$COMMAND" | grep -qE '^\s*git\s+commit\b'; then
exit 0
fi

# Extract commit message header (first line) from -m flag
# Supports: -m "msg", -m 'msg', -m "$(cat <<'EOF'\n...\nEOF\n)"
MSG=""
if echo "$COMMAND" | grep -qE '\$\(cat\s+<<'; then
# HEREDOC pattern: jq decodes JSON \n to real newlines, so the command is multi-line.
# Extract the first non-blank content line after the <<...EOF marker line.
MSG=$(echo "$COMMAND" | awk '
/<<.*EOF/ { found=1; next }
found && /^[[:space:]]*$/ { next }
found && /^[[:space:]]*EOF[[:space:]]*$/ { exit }
found { sub(/^[[:space:]]+/, ""); print; exit }
')
elif echo "$COMMAND" | grep -qE "\-m\s+'"; then
# Single-quoted message
MSG=$(echo "$COMMAND" | sed -n "s/.*-m[[:space:]]*'\\([^']*\\)'.*/\\1/p" | head -1)
elif echo "$COMMAND" | grep -qE '\-m\s+"'; then
# Double-quoted message
MSG=$(echo "$COMMAND" | sed -n 's/.*-m[[:space:]]*"\([^"]*\)".*/\1/p' | head -1)
fi

# If we couldn't extract a message, let git handle validation
if [[ -z "$MSG" ]]; then
exit 0
fi

# Run commitlint on the extracted message
echo "$MSG" | pnpm exec commitlint 2>&1
73 changes: 73 additions & 0 deletions .claude/hooks/lint-eslint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#!/usr/bin/env bash
set -euo pipefail

INPUT=$(cat)
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

# Exit early if no file path
if [[ -z "$FILE_PATH" ]]; then
exit 0
fi

# Only lint .ts, .js, and .css files
case "$FILE_PATH" in
*.ts|*.js|*.css) ;;
*) exit 0 ;;
esac

# Skip directories that should not be linted
case "$FILE_PATH" in
*/dist/*|*/node_modules/*|*/__screenshots__/*|*/generated/*) exit 0 ;;
esac

# Resolve the project directory by walking up from the file looking for eslint.config.js
DIR=$(dirname "$FILE_PATH")
PROJECT_DIR=""
while [[ "$DIR" != "/" && "$DIR" != "." ]]; do
if [[ -f "$DIR/eslint.config.js" ]]; then
PROJECT_DIR="$DIR"
break
fi
DIR=$(dirname "$DIR")
done

# Exit if no eslint config found (e.g., root-level files)
if [[ -z "$PROJECT_DIR" ]]; then
exit 0
fi

# Compute the file path relative to the project directory
REL_PATH=$(realpath --relative-to="$PROJECT_DIR" "$FILE_PATH" 2>/dev/null) || REL_PATH="${FILE_PATH#"$PROJECT_DIR"/}"

# Rules that should warn but not block (transient during refactoring)
SOFT_RULES="no-unused-vars|@typescript-eslint/no-unused-vars"

# Run ESLint with JSON output to classify errors
JSON_OUTPUT=$(cd "$PROJECT_DIR" && pnpm exec eslint -c ./eslint.config.js --no-warn-ignored --cache --cache-location .eslintcache/ --format json "$REL_PATH" 2>/dev/null) || true

# Check if there are any hard errors (not in the soft rules list)
HARD_ERRORS=$(echo "$JSON_OUTPUT" | jq -r --arg soft "$SOFT_RULES" '
[.[].messages[] | select(.severity == 2) | select(.ruleId | test($soft) | not)] | length
') 2>/dev/null || HARD_ERRORS="0"

TOTAL_ERRORS=$(echo "$JSON_OUTPUT" | jq -r '
[.[].messages[] | select(.severity == 2)] | length
') 2>/dev/null || TOTAL_ERRORS="0"

# No errors at all — pass silently
if [[ "$TOTAL_ERRORS" == "0" ]]; then
exit 0
fi

# Get human-readable output for display
READABLE=$(cd "$PROJECT_DIR" && pnpm exec eslint -c ./eslint.config.js --no-warn-ignored --color --cache --cache-location .eslintcache/ "$REL_PATH" 2>&1) || true

if [[ "$HARD_ERRORS" != "0" ]]; then
# Hard errors present — block
echo "$READABLE" >&2
exit 2
else
# Only soft errors (unused vars/imports) — warn but don't block
echo "$READABLE" >&2
exit 0
fi
53 changes: 53 additions & 0 deletions .claude/hooks/lint-stylelint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/usr/bin/env bash
set -euo pipefail

INPUT=$(cat)
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

# Exit early if no file path
if [[ -z "$FILE_PATH" ]]; then
exit 0
fi

# Only lint .css files
case "$FILE_PATH" in
*.css) ;;
*) exit 0 ;;
esac

# Skip directories that should not be linted
case "$FILE_PATH" in
*/dist/*|*/node_modules/*|*/vendor/*) exit 0 ;;
esac

# Resolve the repo root (location of stylelint.config.mjs)
REPO_ROOT="$CLAUDE_PROJECT_DIR"

# Walk up from the file to find the nearest package.json with a lint:style wireit task
DIR=$(dirname "$FILE_PATH")
PROJECT_DIR=""
while [[ "$DIR" != "/" && "$DIR" != "." ]]; do
if [[ -f "$DIR/package.json" ]] && jq -e '.wireit["lint:style"]' "$DIR/package.json" >/dev/null 2>&1; then
PROJECT_DIR="$DIR"
break
fi
DIR=$(dirname "$DIR")
done

# Exit if no matching project found (file is in a project without stylelint)
if [[ -z "$PROJECT_DIR" ]]; then
exit 0
fi

# Compute the file path relative to the project directory
REL_PATH=$(realpath --relative-to="$PROJECT_DIR" "$FILE_PATH" 2>/dev/null) || REL_PATH="${FILE_PATH#"$PROJECT_DIR"/}"

# Run Stylelint from the project directory
OUTPUT=$(cd "$PROJECT_DIR" && pnpm exec stylelint --config="$REPO_ROOT/stylelint.config.mjs" --color "$REL_PATH" 2>&1) || EXIT_CODE=$?

if [[ ${EXIT_CODE:-0} -ne 0 && -n "$OUTPUT" ]]; then
echo "$OUTPUT" >&2
exit 2
fi

exit 0
36 changes: 36 additions & 0 deletions .claude/hooks/lint-vale.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/usr/bin/env bash
set -euo pipefail

INPUT=$(cat)
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')

# Exit early if no file path
if [[ -z "$FILE_PATH" ]]; then
exit 0
fi

# Only lint .md and .ts files
case "$FILE_PATH" in
*.md|*.ts) ;;
*) exit 0 ;;
esac

# Skip test files and excluded paths (matches vale --glob exclusions)
case "$FILE_PATH" in
*.test.*|*/starters/*|*/404/*|*/vendor/*|*/changelog/*|*/icons/*|*/generated/*|*/dist/*|*/LICENSE*|*/CHANGELOG*) exit 0 ;;
esac

# Skip Claude plan and memory files
case "$FILE_PATH" in
*/.claude/plans/*|*/.claude/projects/*) exit 0 ;;
esac

# Run Vale on the specific file
OUTPUT=$(cd "$CLAUDE_PROJECT_DIR" && config/vale/bin/vale --config .vale.ini "$FILE_PATH" 2>&1) || EXIT_CODE=$?

if [[ ${EXIT_CODE:-0} -ne 0 && -n "$OUTPUT" ]]; then
echo "$OUTPUT" >&2
exit 2
fi

exit 0
28 changes: 28 additions & 0 deletions .claude/hooks/session-start.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/usr/bin/env bash
set -euo pipefail

INPUT=$(cat)

NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
if [[ ! -s "$NVM_DIR/nvm.sh" ]]; then
echo "nvm not found at $NVM_DIR/nvm.sh" >&2
exit 0
fi

source "$NVM_DIR/nvm.sh"

cd "$CLAUDE_PROJECT_DIR"

nvm install 2>&1 >/dev/null
corepack enable 2>&1 >/dev/null
corepack prepare --activate 2>&1 >/dev/null

INSTALL_OUTPUT=$(pnpm i --frozen-lockfile --prefer-offline 2>&1) || {
echo "pnpm install failed:" >&2
echo "$INSTALL_OUTPUT" >&2
exit 0
}

NODE_V=$(node --version)
PNPM_V=$(pnpm --version)
echo "Environment ready: node $NODE_V, pnpm $PNPM_V. Dependencies installed."
4 changes: 4 additions & 0 deletions .claude/hooks/stop.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
set -e
cd "$CLAUDE_PROJECT_DIR" 2>/dev/null || cd "$(git rev-parse --show-toplevel)" 2>/dev/null || exit 0
pnpm run agent:stop
Loading