Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
200 commits
Select commit Hold shift + click to select a range
624a3c6
Remove everything
marek-saji Oct 28, 2025
a65ffe0
docs: package.json, README, LICENSE etc.
marek-saji Oct 28, 2025
0448691
chore: Setup
Nov 3, 2025
f63a02f
feat: EsLint, Prettier
marek-saji Oct 28, 2025
29db48d
Tests
marek-saji Oct 30, 2025
bae57e0
docs: Links
Nov 12, 2025
c3c086b
feat(npm): Switch from prepare to prepublishOnly
marek-saji Nov 24, 2025
03956d4
chore: prettier -w .
marek-saji Nov 24, 2025
4f04d1a
chore: Regenerate package locks
marek-saji Nov 24, 2025
c35e249
chore: Use Set for collecting missing deps
marek-saji Nov 19, 2025
65518ad
feat: Make test script runnable from anywhere
marek-saji Nov 19, 2025
71e04a5
feat: List actually missing dependencies
marek-saji Nov 20, 2025
66ef523
feat(test): Run npm with --ignore-scripts
marek-saji Nov 20, 2025
db3e785
feat(eslint): next.js
marek-saji Nov 20, 2025
0f213b2
feat(eslint): CLI colours
marek-saji Nov 24, 2025
3b74be6
docs: Sources for EsLint setups
marek-saji Nov 20, 2025
2f154c8
feat(eslint): storybook
marek-saji Nov 20, 2025
d945b9e
eslint: use _strict_ TS config
marek-saji Nov 24, 2025
da10469
feat(eslint): lingui
marek-saji Nov 24, 2025
97c3e66
feat(eslint): Drop ignore option
marek-saji Nov 24, 2025
16813d0
feat: Use prettierignore in EsLint as well
marek-saji Nov 24, 2025
84cc483
feat: Sync up config template
marek-saji Nov 24, 2025
f84efa5
feat(eslint): JSONC
marek-saji Nov 25, 2025
f62984c
feat(prettier): trailing commas
marek-saji Nov 25, 2025
0bcc534
fix: Include files in additionalAllowDefaultProject only if not included
marek-saji Nov 26, 2025
4bda395
Sort out dependencies
marek-saji Nov 26, 2025
200877a
feat(prettier): quoteProps:consistent
marek-saji Nov 26, 2025
81020be
feat(eslint): import
marek-saji Nov 26, 2025
cc7d08e
feat(eslint): Import rules
marek-saji Nov 26, 2025
fc980d5
chore: All custom rules at the end
marek-saji Nov 26, 2025
7c09b39
feat(eslint): no-shadow
marek-saji Nov 26, 2025
794b7f6
feat(eslint): no-template-curly-in-string
marek-saji Nov 26, 2025
17f3834
feat(eslint): no-template-curly-in-string
marek-saji Nov 26, 2025
c67d1da
chore(eslint): Split verkstedt overwrites to separate file
marek-saji Nov 26, 2025
f0bed9d
feat(eslint): css-modules
marek-saji Dec 2, 2025
ad4693e
chore: Setup
Dec 2, 2025
b6343ea
chore: npm i baseline-browser-mapping@latest -D
marek-saji Dec 10, 2025
8a6e845
chore: Use npm workspaces for tests
marek-saji Dec 10, 2025
3553784
feat(eslint): Errors on unused disable directives
marek-saji Dec 10, 2025
0ce9fb5
feat: more tests
marek-saji Dec 10, 2025
9a9ac86
chore: Node version
marek-saji Dec 15, 2025
a4145e2
chore: Regenerate lock files
marek-saji Dec 15, 2025
16c9d11
feat(bin): Script that sets things up
marek-saji Dec 15, 2025
70d97d8
eslint: Read app’s prettierignore
marek-saji Dec 16, 2025
7524467
feat(typescript): tsconfig base
marek-saji Dec 16, 2025
3ab7c49
feat(eslint): More custom rules
marek-saji Dec 16, 2025
54042e9
feat(eslint): eslint comments plugin
marek-saji Dec 16, 2025
5d2b70b
fix(eslint): Expand Plugin type
marek-saji Dec 16, 2025
c56378b
fix(eslint): Apply custom rules only to JS files
marek-saji Dec 16, 2025
0b295f6
fix(eslint): False–positives on GFM alerts
marek-saji Dec 16, 2025
1becc95
feat(prettier): Don’t pretty package-lock.json
marek-saji Dec 16, 2025
1554d51
feat(eslint): Unofficial eslint plugin
marek-saji Dec 16, 2025
bd89012
fixup! feat(eslint): next.js
marek-saji Dec 16, 2025
9fb3fe4
feat(eslint): eslint-config-next/typescript
marek-saji Dec 16, 2025
f9e34b5
fest(install): Install jiti when TS detected
marek-saji Dec 17, 2025
b2a9f40
chore(pkg): Don’t do weird things with deps
marek-saji Dec 22, 2025
33df5c1
chore: npm audit fix
marek-saji Dec 22, 2025
451e59e
fixup! chore(pkg): Don’t do weird things with deps
marek-saji Dec 22, 2025
fbc8d02
feat(eslint): Disable no-unresolved for TS projects
marek-saji Dec 22, 2025
027c547
fixup! chore(pkg): Don’t do weird things with deps
marek-saji Dec 22, 2025
6ae98be
fixup! feat(eslint): Unofficial eslint plugin
marek-saji Dec 22, 2025
e9e307f
fixup! feat: more tests
marek-saji Dec 22, 2025
58fed54
feat(eslint): More debug info
marek-saji Dec 22, 2025
3f80f62
feat(eslint): import resolver that understands exports
marek-saji Dec 22, 2025
a3d366e
feat(test): Re–set tests’ dependencies
marek-saji Dec 22, 2025
426ec54
feat(eslint): Get plugin name from object, instead of hardcoding
marek-saji Dec 22, 2025
26923a4
fix(eslint): Pass TS plugin only if TS is used
marek-saji Dec 22, 2025
969e1eb
docs: Explain tests setup
marek-saji Dec 22, 2025
1524b94
chore(test): Match package names to dir names
marek-saji Dec 22, 2025
5c1e13d
feat(ts): Extend tsconfig in TS test
marek-saji Dec 22, 2025
ee95dd3
Revert "feat(eslint): Disable no-unresolved for TS projects"
marek-saji Dec 23, 2025
4155ab5
feat(eslint): Organise custom rules
marek-saji Dec 23, 2025
e261111
feat(eslint): Less restrictive in scripts/ dir
marek-saji Dec 23, 2025
b63a809
docs: scripts/ also go to allowDefaultProject
marek-saji Dec 23, 2025
662c904
feat: lint package.json
marek-saji Dec 23, 2025
06cd260
chore: Align peer deps
marek-saji Dec 23, 2025
6390c24
fixup! feat(bin): Script that sets things up
marek-saji Dec 23, 2025
bc778a7
fixup! feat: more tests
marek-saji Dec 23, 2025
11b23b4
fixup! feat: lint package.json
marek-saji Dec 23, 2025
5fe2041
fixup! feat: lint package.json
marek-saji Dec 23, 2025
3385d32
fixup! feat: lint package.json
marek-saji Dec 23, 2025
0401e21
fixup! chore: Align peer deps
marek-saji Dec 23, 2025
8ec4a81
fix: Build before running tests
marek-saji Dec 23, 2025
64437f9
feat: Lint Node.js version spec
marek-saji Dec 23, 2025
99bd0ed
chore: DRY scripts
marek-saji Dec 23, 2025
1defc76
fixup! feat: lint package.json
marek-saji Dec 23, 2025
f518c44
fixup! feat: Lint Node.js version spec
marek-saji Dec 23, 2025
e798332
fixup! chore: Align peer deps
marek-saji Dec 23, 2025
fc923f7
fixup! feat: Lint Node.js version spec
marek-saji Dec 23, 2025
bfe264e
fixup! fixup! feat: Lint Node.js version spec
marek-saji Dec 23, 2025
5a266b0
fixup! chore: DRY scripts
marek-saji Dec 23, 2025
1fe6481
Tweaks
marek-saji Dec 23, 2025
9d15f81
fixup! Tweaks
marek-saji Dec 23, 2025
2bc9c4d
chore: Feedback from our AI overlords
marek-saji Dec 23, 2025
6f08a1b
chore: Cleanup
marek-saji Dec 23, 2025
d1b0f84
docs: Design goals
marek-saji Jan 5, 2026
15e0177
docs: Explain deviating from prettier defaults
marek-saji Jan 5, 2026
183dc0a
fixup! feat: EsLint, Prettier
marek-saji Jan 5, 2026
c1b0af7
chore(eslint): Import types from @eslint/core
marek-saji Jan 5, 2026
7dfec84
chore(eslint): DRY defining TS extension rules
marek-saji Jan 5, 2026
8564589
feat(cli): Inject --help
marek-saji Jan 5, 2026
e2b7aa5
fix(docs): Grammatical errors
marek-saji Jan 5, 2026
75c80f2
feat(tsconfig): forceConsistentCasingInFileNames
marek-saji Jan 7, 2026
60626f6
11.0.0-rc.0
marek-saji Jan 19, 2026
0a00cf0
docs(readme): Upgrading from @verkstedt/eslint-config-verkstedt
marek-saji Jan 20, 2026
c21d1f6
fixup! feat: EsLint, Prettier
marek-saji Jan 20, 2026
3e53b5a
feat(eslint): Use TS parser for all JS files
marek-saji Jan 20, 2026
ca42c64
feat(eslint): Read tsconfig with jsonc parser
marek-saji Jan 20, 2026
c136552
feat(npm): prepare script
marek-saji Jan 20, 2026
77f2f7d
feat(install): Separate msgs for legacy configs
marek-saji Jan 20, 2026
ab4f0f7
feat(eslint): Customise CSS rules
marek-saji Jan 22, 2026
2a92bbf
feat(eslint): Loosen up some rules
marek-saji Jan 22, 2026
737ae3d
feat(eslint): Disallow param reassign
marek-saji Jan 22, 2026
e78cafb
feat(eslint): Target more when loosing non–app files
marek-saji Jan 22, 2026
60fff09
feat(eslint): Allow !important in non–app
marek-saji Jan 22, 2026
eb46f89
fix(eslint): Improve additionalAllowDefaultProject
marek-saji Jan 22, 2026
6aa73a5
feat(ts): Produce source maps
marek-saji Jan 22, 2026
22276c8
feat(eslint): Disable rule that can break
marek-saji Jan 22, 2026
1fc4e52
feat(eslint): no-restricted-imports
marek-saji Jan 22, 2026
d69ffb3
fixup! docs(readme): Upgrading from @verkstedt/eslint-config-verkstedt
marek-saji Jan 22, 2026
7670f82
fixup! feat(bin): Script that sets things up
marek-saji Jan 22, 2026
cdd1f9e
feat(prettier):
marek-saji Jan 22, 2026
42d0e10
feat(prettier): Sync up ignore files
marek-saji Jan 22, 2026
8f66198
feat(eslint): EsLint can only do vanilla CSS
marek-saji Jan 26, 2026
a5f9469
fixup! feat(install): Separate msgs for legacy configs
marek-saji Jan 26, 2026
af6d2c1
feat(intall): Override vanilla legacy EsLint config
marek-saji Jan 26, 2026
3e82f85
feat(install): Install deps with versions
marek-saji Jan 26, 2026
6352ce6
fixup! fix(eslint): Improve additionalAllowDefaultProject
marek-saji Jan 26, 2026
8ca7b3d
feat: Linting errors in config files in README
marek-saji Jan 26, 2026
c321fff
fixup! feat: Upgrade Node.js to LTS (24)
marek-saji Jan 29, 2026
c21559b
feat(eslint): Allow _unused caught errors
marek-saji Jan 29, 2026
b7dd01c
feat(eslint): Make storybook config files use TS default project
marek-saji Jan 29, 2026
1378454
fix(eslint): Make prettier use markdown parser in md files
marek-saji Jan 29, 2026
f1e2494
feat(install): Rudimentary yarn support
marek-saji Jan 29, 2026
652a2c3
feat(eslint): More guidance using no-restricted-imports
marek-saji Feb 2, 2026
b85e66d
eslint: eslint-import-resolver-typescript for TS projects
marek-saji Feb 4, 2026
f725349
chore: Ignore tests. They have their own config
marek-saji Feb 5, 2026
0e985ff
fix(lint): Fix expected @types/node version
marek-saji Feb 5, 2026
cad996c
feat(lint): Peer deps can also be prod deps
marek-saji Feb 5, 2026
0890018
feat(eslint): Proper parsing of tsconfig
marek-saji Feb 5, 2026
972e8d5
11.0.0-rc.1
marek-saji Feb 5, 2026
49c7c9f
feat: Use `npm pkg` for getting versions from package.json
marek-saji Feb 9, 2026
5772f48
feat: Ignore bmad method markdown files
marek-saji Feb 9, 2026
7bccff4
11.0.0-rc.2
marek-saji Feb 9, 2026
5933648
fixup! feat: Ignore bmad method markdown files
marek-saji Feb 9, 2026
833f128
11.0.0-rc.3
marek-saji Feb 9, 2026
bf95091
feat: Specify what to include npm package
marek-saji Feb 9, 2026
0f0c37f
11.0.0-rc.4
marek-saji Feb 9, 2026
0a0d037
feat: import.meta.dirname in config template
marek-saji Feb 10, 2026
4a39a87
docs(readme): Improved upgrade instructions
marek-saji Feb 19, 2026
c859aac
feat(eslint): s/@base-ui-components/@base-ui/
marek-saji Feb 19, 2026
e89193f
feat(eslint): Allow array index as react keys outside of app
marek-saji Feb 19, 2026
588c173
feat(ignore): Ignore next-env.d.ts
marek-saji Feb 19, 2026
ca62a94
eat(eslint): Less aggressive auto allowDefaultProject
marek-saji Mar 2, 2026
133f7ce
11.0.0-rc.5
marek-saji Mar 2, 2026
6d4e53c
feat(prettier): Populate ignore file during install
marek-saji Apr 22, 2026
7212d24
feat(prettier): Ignore svg files
marek-saji Apr 23, 2026
0e164b5
Test creation of file
marek-saji Apr 23, 2026
3d29403
Ignore local files
marek-saji Apr 23, 2026
297017f
Merge remote-tracking branch 'origin/main' into feat/rewrite
marek-saji Apr 23, 2026
b7e4565
Sync up ci workflow from template
marek-saji Apr 23, 2026
e30fab5
doc: Link to list of packages using this config
marek-saji Apr 23, 2026
140034d
Recognise FORCE_COLOR
marek-saji Apr 23, 2026
5c02632
doc(migration): Note about rules that may give lots of errors
marek-saji Apr 23, 2026
2507b06
doc(README): Collapse migration section
marek-saji Apr 23, 2026
0c419d1
feat(install): Uninstall stylelint
marek-saji Apr 23, 2026
c2e15e1
feat(install): Suggest next steps
marek-saji Apr 23, 2026
e8ff3f6
feat(install): Format help
marek-saji Apr 23, 2026
a1b79bd
feat(install): Improve TS detection
marek-saji Apr 23, 2026
42759e5
feat(install): Line breaks between sections
marek-saji Apr 23, 2026
fc76faf
fixup! Test creation of file
marek-saji Apr 23, 2026
9be46ee
chore(deps): typescript 6
marek-saji Apr 23, 2026
1e566c2
chore(deps): Update all but EsLint 10.x
marek-saji Apr 28, 2026
746f769
feat(eslint): Ignore git merge conflict files
marek-saji May 5, 2026
0e323b2
chore(deps): Migrate to @eslint-community/eslint-plugin-eslint-comments
marek-saji May 4, 2026
8e776ee
feat(eslint): Detect frontend projects
marek-saji May 5, 2026
541fdfc
feat(install): Remove conflicting packages
marek-saji May 6, 2026
5578108
chore(deps): Use @next/eslint-plugin-next directly
marek-saji May 5, 2026
3d69c3b
chore(deps): Migrate eslint-plugin-import to eslint-plugin-import-x
marek-saji May 5, 2026
1bb6f56
chore(deps): Switch to @bhollis/eslint-plugin-css-modules
marek-saji May 5, 2026
65563a9
chore(deps): Migrate React plugin and bump ESLint 10
marek-saji May 5, 2026
432649e
chore(deps): npm-check-updates --cooldown 7d
marek-saji May 4, 2026
ab0f7c6
chore(deps): Pin typescript to ^6.0.3 <6.1.0
marek-saji May 4, 2026
fbc46f9
feat(install): Show installed/uninstalled packages
marek-saji May 6, 2026
708059a
feat(install): Recognise when installing from local checkout
marek-saji May 6, 2026
77e56d9
fixup! eat(eslint): Less aggressive auto allowDefaultProject
marek-saji May 6, 2026
9a0a3d1
doc: Collapse internal links
marek-saji May 6, 2026
4ff5ba1
docs: Caveats += tsconfig extends
marek-saji May 6, 2026
14d7d71
11.0.0-rc.6
marek-saji May 6, 2026
9a29326
feat(install): Recognise NODE_DEBUG
marek-saji May 6, 2026
58e7ef5
fix(npm): bin path
marek-saji May 6, 2026
c2a946d
11.0.0-rc.7
marek-saji May 6, 2026
d7ba031
fixup! chore(deps): Migrate eslint-plugin-import to eslint-plugin-imp…
marek-saji May 6, 2026
792338b
fixup! feat(install): Recognise when installing from local checkout
marek-saji May 6, 2026
1b9adf7
11.0.0-rc.8
marek-saji May 6, 2026
6263108
Merge remote-tracking branch 'origin/main' into feat/rewrite
marek-saji May 18, 2026
2b704f1
fixup! feat(install): Uninstall stylelint
marek-saji May 27, 2026
f161fb2
11.0.0-rc.9
marek-saji May 27, 2026
f8f9a0e
fix(install): yarn remove each pkg separately
marek-saji May 27, 2026
0b4c275
11.0.0-rc.10
marek-saji May 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .eslintrc.json

This file was deleted.

40 changes: 33 additions & 7 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,40 +10,66 @@ name: 'CI'
#
# IF YOU MODIFY IT IN ANY WAY, DESCRIBE IT IN THE COMMENT HERE
# to make updating in the future easier.
#
# - lint-pkg and lint-node

on:
push:
branches:
- main
pull_request:
branches:
- main
types:
- opened
- reopened
- ready_for_review
- synchronize

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

jobs:
ci:
name: 'CI'
uses: verkstedt/actions/.github/workflows/ci.yaml@v1
secrets: inherit
with:
working-directory: .

lint-deps:
name: 'Lint dependencies'
lint-pkg:
name: 'Lint package.json'
runs-on: ubuntu-latest
needs:
- ci
steps:
- name: Setup
uses: verkstedt/actions/setup@v1
with:
working-directory: .
- name: Lint package.json
working-directory: .
run: npm run lint:pkg
Comment thread
marek-saji marked this conversation as resolved.

lint-node:
name: 'Lint Node.js versions'
runs-on: ubuntu-latest
needs:
- ci
steps:
- name: Setup
uses: verkstedt/actions/setup@v1
with:
working-directory: .
- name: Lint Node.js versions
working-directory: .
run: npm run lint:node

notify-main-branch-failure:
name: Notify about failure on main branch
needs:
- ci
- lint-deps
if: failure() && github.ref == 'refs/heads/main'
- lint-pkg
- lint-node
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
uses: verkstedt/actions/.github/workflows/notify-main-branch-failure.yaml@v1
secrets: inherit
Comment thread
marek-saji marked this conversation as resolved.
60 changes: 0 additions & 60 deletions .github/workflows/publish.yaml

This file was deleted.

12 changes: 9 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
/node_modules
.vscode
.DS_Store
# dependencies
node_modules

# build artifacts
/esm

# local files
**/*.local
**/*.local.json
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v24.12.0
24.12.0
9 changes: 9 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Generated
/CHANGELOG.md
package-lock.json
yarn.lock
pnpm-lock.yaml
*.min.js

# Tests have their own linting config
/test/
1 change: 0 additions & 1 deletion .prettierrc.js

This file was deleted.

13 changes: 13 additions & 0 deletions DESIGN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Design Goals

- **All–purpose**
- Installation should be easy and straightforward
- Ideally projects would not have to customise _anything_ and not
install any extra plugins.

- **Follow recommended configurations**
- For stylistic rules that might be a matter of taste, follow
default or recommended settings, unless there’s an overwhelming
majority of users preferring a different option.

- **Additional rules that help to avoid common pitfalls**
Comment thread
marek-saji marked this conversation as resolved.
23 changes: 13 additions & 10 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
MIT License

Copyright (c) 2015-2017 Moviepilot, Inc.
Copyright (c) 2017 verkstedt GmbH

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Copyright (C) 2025 by verkstedt GmbH <info@verkstedt.com>

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Loading
Loading