mirror of
https://github.com/go-gitea/gitea.git
synced 2026-06-05 09:26:35 +02:00
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@eslint-community/eslint-plugin-eslint-comments](https://redirect.github.com/eslint-community/eslint-plugin-eslint-comments) | [`4.7.1` → `4.7.2`](https://renovatebot.com/diffs/npm/@eslint-community%2feslint-plugin-eslint-comments/4.7.1/4.7.2) |  |  | | [@primer/octicons](https://primer.style/octicons) ([source](https://redirect.github.com/primer/octicons)) | [`19.26.0` → `19.27.0`](https://renovatebot.com/diffs/npm/@primer%2focticons/19.26.0/19.27.0) |  |  | | [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)) | [`8.59.4` → `8.60.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.59.4/8.60.0) |  |  | | [@vitest/eslint-plugin](https://redirect.github.com/vitest-dev/eslint-plugin-vitest) | [`1.6.17` → `1.6.18`](https://renovatebot.com/diffs/npm/@vitest%2feslint-plugin/1.6.17/1.6.18) |  |  | | [dayjs](https://day.js.org) ([source](https://redirect.github.com/iamkun/dayjs)) | [`1.11.20` → `1.11.21`](https://renovatebot.com/diffs/npm/dayjs/1.11.20/1.11.21) |  |  | | [katex](https://katex.org) ([source](https://redirect.github.com/KaTeX/KaTeX)) | [`0.16.47` → `0.17.0`](https://renovatebot.com/diffs/npm/katex/0.16.47/0.17.0) |  |  | | [material-icon-theme](https://redirect.github.com/material-extensions/vscode-material-icon-theme/blob/main/README.md) ([source](https://redirect.github.com/material-extensions/vscode-material-icon-theme)) | [`5.34.0` → `5.35.0`](https://renovatebot.com/diffs/npm/material-icon-theme/5.34.0/5.35.0) |  |  | | [pnpm](https://pnpm.io) ([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm)) | [`11.2.1` → `11.4.0`](https://renovatebot.com/diffs/npm/pnpm/11.2.1/11.4.0) |  |  | | [rolldown-license-plugin](https://redirect.github.com/silverwind/rolldown-license-plugin) | [`3.0.7` → `3.0.8`](https://renovatebot.com/diffs/npm/rolldown-license-plugin/3.0.7/3.0.8) |  |  | | [typescript-eslint](https://typescript-eslint.io/packages/typescript-eslint) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint)) | [`8.59.4` → `8.60.0`](https://renovatebot.com/diffs/npm/typescript-eslint/8.59.4/8.60.0) |  |  | | [updates](https://redirect.github.com/silverwind/updates) | [`17.16.13` → `17.17.2`](https://renovatebot.com/diffs/npm/updates/17.16.13/17.17.2) |  |  | | [vite](https://vite.dev) ([source](https://redirect.github.com/vitejs/vite/tree/HEAD/packages/vite)) | [`8.0.13` → `8.0.14`](https://renovatebot.com/diffs/npm/vite/8.0.13/8.0.14) |  |  | | [vue](https://vuejs.org/) ([source](https://redirect.github.com/vuejs/core)) | [`3.5.34` → `3.5.35`](https://renovatebot.com/diffs/npm/vue/3.5.34/3.5.35) |  |  | | [vue-tsc](https://redirect.github.com/vuejs/language-tools) ([source](https://redirect.github.com/vuejs/language-tools/tree/HEAD/packages/tsc)) | [`3.3.1` → `3.3.2`](https://renovatebot.com/diffs/npm/vue-tsc/3.3.1/3.3.2) |  |  | --- ### Release Notes <details> <summary>eslint-community/eslint-plugin-eslint-comments (@​eslint-community/eslint-plugin-eslint-comments)</summary> ### [`v4.7.2`](https://redirect.github.com/eslint-community/eslint-plugin-eslint-comments/releases/tag/v4.7.2) [Compare Source](https://redirect.github.com/eslint-community/eslint-plugin-eslint-comments/compare/v4.7.1...v4.7.2) ##### Bug Fixes - **deps:** pin `modern-monaco` version to 0.4.0 ([#​320](https://redirect.github.com/eslint-community/eslint-plugin-eslint-comments/issues/320)) ([62a2c3a](62a2c3a4ee)) - **docs:** use `modern-monaco` instead of `monaco-editor` ([#​311](https://redirect.github.com/eslint-community/eslint-plugin-eslint-comments/issues/311)) ([42919d0](42919d06d8)) </details> <details> <summary>primer/octicons (@​primer/octicons)</summary> ### [`v19.27.0`](https://redirect.github.com/primer/octicons/blob/HEAD/CHANGELOG.md#19270) [Compare Source](https://redirect.github.com/primer/octicons/compare/v19.26.0...v19.27.0) ##### Minor Changes - [#​1203](https://redirect.github.com/primer/octicons/pull/1203) [`a69618e4`](a69618e4b6) Thanks [@​ericwbailey](https://redirect.github.com/ericwbailey)! - Add flag icon ##### Patch Changes - [#​1212](https://redirect.github.com/primer/octicons/pull/1212) [`02bd1ef8`](02bd1ef8d1) Thanks [@​ericwbailey](https://redirect.github.com/ericwbailey)! - remove hardcoded fill from flag icon </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/parser)</summary> ### [`v8.60.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8600-2026-05-25) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.59.4...v8.60.0) This was a version bump only for parser to align it with other projects, there were no code changes. See [GitHub Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. </details> <details> <summary>vitest-dev/eslint-plugin-vitest (@​vitest/eslint-plugin)</summary> ### [`v1.6.18`](https://redirect.github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.18) [Compare Source](https://redirect.github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.17...v1.6.18) ##### 🐞 Bug Fixes - Correct `requiresTypeChecking` metadata for four rules - by [@​inglec-arista](https://redirect.github.com/inglec-arista) in [#​905](https://redirect.github.com/vitest-dev/eslint-plugin-vitest/issues/905) [<samp>(e06a3)</samp>](https://redirect.github.com/vitest-dev/eslint-plugin-vitest/commit/e06a3dc) ##### [View changes on GitHub](https://redirect.github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.17...v1.6.18) </details> <details> <summary>iamkun/dayjs (dayjs)</summary> ### [`v1.11.21`](https://redirect.github.com/iamkun/dayjs/blob/HEAD/CHANGELOG.md#11121-2026-05-26) [Compare Source](https://redirect.github.com/iamkun/dayjs/compare/v1.11.20...v1.11.21) ##### Bug Fixes - preserve unsupported year tokens in format ([#​3015](https://redirect.github.com/iamkun/dayjs/issues/3015)) ([#​3016](https://redirect.github.com/iamkun/dayjs/issues/3016)) ([8fda602](8fda602bea)) </details> <details> <summary>KaTeX/KaTeX (katex)</summary> ### [`v0.17.0`](https://redirect.github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#0170-2026-05-22) [Compare Source](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.47...v0.17.0) ##### Performance Improvements - simplify `defineFunction` to avoid destructuring, improve typing ([#​4222](https://redirect.github.com/KaTeX/KaTeX/issues/4222)) ([fb604e6](fb604e6ba6)) ##### BREAKING CHANGES - The internal API for `__defineFunction` changed: you should no longer wrap properties in `props`. #### [0.16.47](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.46...v0.16.47) (2026-05-16) ##### Bug Fixes - correct size of `[` big delimiter ([#​4217](https://redirect.github.com/KaTeX/KaTeX/issues/4217)) ([7ba0027](7ba0027d2f)), closes [#​4215](https://redirect.github.com/KaTeX/KaTeX/issues/4215) #### [0.16.46](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.45...v0.16.46) (2026-05-13) ##### Bug Fixes - preserve math font in some styling commands ([#​4214](https://redirect.github.com/KaTeX/KaTeX/issues/4214)) ([e9ee046](e9ee0464dd)), closes [#​4213](https://redirect.github.com/KaTeX/KaTeX/issues/4213) #### [0.16.45](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.44...v0.16.45) (2026-04-05) ##### Bug Fixes - wrap vcenter mpadded in mrow for valid MathML ([#​4193](https://redirect.github.com/KaTeX/KaTeX/issues/4193)) ([ee66b78](ee66b78d24)), closes [#​4078](https://redirect.github.com/KaTeX/KaTeX/issues/4078) #### [0.16.44](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.43...v0.16.44) (2026-03-27) ##### Bug Fixes - remove extra \jot space at bottom of align/gather/etc. ([#​4184](https://redirect.github.com/KaTeX/KaTeX/issues/4184)) ([3870ee9](3870ee913e)) #### [0.16.43](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.42...v0.16.43) (2026-03-26) ##### Bug Fixes - use makeEm() consistently to truncate long CSS decimals ([#​4181](https://redirect.github.com/KaTeX/KaTeX/issues/4181)) ([0967dcc](0967dcc027)) #### [0.16.42](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.41...v0.16.42) (2026-03-24) ##### Features - \underbracket and \overbracket ([#​4147](https://redirect.github.com/KaTeX/KaTeX/issues/4147)) ([5be9abb](5be9abb0b4)) #### [0.16.41](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.40...v0.16.41) (2026-03-24) ##### Bug Fixes - \sout in text mode ([#​4173](https://redirect.github.com/KaTeX/KaTeX/issues/4173)) ([e748578](e748578b63)) #### [0.16.40](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.39...v0.16.40) (2026-03-20) ##### Bug Fixes - **css:** specify position: relative for .katex ([#​4170](https://redirect.github.com/KaTeX/KaTeX/issues/4170)) ([020f0d8](020f0d8956)) #### [0.16.39](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.38...v0.16.39) (2026-03-19) ##### Bug Fixes - middle dot in text mode ([#​4169](https://redirect.github.com/KaTeX/KaTeX/issues/4169)) ([edb45b0](edb45b0b17)), closes [#​3641](https://redirect.github.com/KaTeX/KaTeX/issues/3641) #### [0.16.38](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.37...v0.16.38) (2026-03-08) ##### Bug Fixes - accent skew mixed with font specifiers ([#​4159](https://redirect.github.com/KaTeX/KaTeX/issues/4159)) ([aea3375](aea33758d6)), closes [#​4121](https://redirect.github.com/KaTeX/KaTeX/issues/4121) #### [0.16.37](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.36...v0.16.37) (2026-03-06) ##### Bug Fixes - negative-width `\hphantom` and symmetric `\smash` ([#​4153](https://redirect.github.com/KaTeX/KaTeX/issues/4153)) ([d4799ca](d4799cae58)) #### [0.16.36](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.35...v0.16.36) (2026-03-06) ##### Bug Fixes - contrib esm bloat ([#​4157](https://redirect.github.com/KaTeX/KaTeX/issues/4157)) ([2bde1ad](2bde1adab2)) #### [0.16.35](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.34...v0.16.35) (2026-03-05) ##### Bug Fixes - version number regression ([#​4155](https://redirect.github.com/KaTeX/KaTeX/issues/4155)) ([db26b73](db26b73380)) #### [0.16.34](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.33...v0.16.34) (2026-03-05) ##### Bug Fixes - emoji with variation selector ([#​4151](https://redirect.github.com/KaTeX/KaTeX/issues/4151)) ([c2606e5](c2606e5db9)) #### [0.16.33](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.32...v0.16.33) (2026-02-23) ##### Bug Fixes - **scss:** forward variables to fonts module ([#​4146](https://redirect.github.com/KaTeX/KaTeX/issues/4146)) ([9349a64](9349a64a05)) #### [0.16.32](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.31...v0.16.32) (2026-02-22) ##### Bug Fixes - italic separation in \mathnormal ([#​4143](https://redirect.github.com/KaTeX/KaTeX/issues/4143)) ([71305a0](71305a0514)) #### [0.16.31](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.30...v0.16.31) (2026-02-22) ##### Bug Fixes - `\*frac` sizing ([#​4137](https://redirect.github.com/KaTeX/KaTeX/issues/4137)) ([ef51f18](ef51f18ded)) #### [0.16.30](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.29...v0.16.30) (2026-02-22) ##### Bug Fixes - no line breaks after `\not` ([#​4140](https://redirect.github.com/KaTeX/KaTeX/issues/4140)) ([2d1ba86](2d1ba86143)) #### [0.16.29](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.28...v0.16.29) (2026-02-22) ##### Bug Fixes - `\imath` and other `\html@mathml` macros in arguments ([#​4139](https://redirect.github.com/KaTeX/KaTeX/issues/4139)) ([a850cce](a850cce7cc)) #### [0.16.28](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.27...v0.16.28) (2026-01-25) ##### Bug Fixes - **type:** add missing types definition path to package.json ([#​4125](https://redirect.github.com/KaTeX/KaTeX/issues/4125)) ([0ef8921](0ef8921d18)) #### [0.16.27](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.26...v0.16.27) (2025-12-07) ##### Features - support equals sign and surrounding whitespace in \htmlData attribute values ([#​4112](https://redirect.github.com/KaTeX/KaTeX/issues/4112)) ([c77aaec](c77aaec00c)) #### [0.16.26](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.25...v0.16.26) (2025-12-07) ##### Bug Fixes - \mathop followed by integral symbol ([6fbad18](6fbad18857)) #### [0.16.25](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.24...v0.16.25) (2025-10-13) ##### Features - **css:** provide `katex-swap.css` that uses `font-display: swap` ([#​3940](https://redirect.github.com/KaTeX/KaTeX/issues/3940)) ([b3f9ce6](b3f9ce691e)), closes [#​2242](https://redirect.github.com/KaTeX/KaTeX/issues/2242) #### [0.16.24](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.23...v0.16.24) (2025-10-12) ##### Features - support hex colors with alpha ([#​4090](https://redirect.github.com/KaTeX/KaTeX/issues/4090)) ([8c9b306](8c9b306396)), closes [#​4067](https://redirect.github.com/KaTeX/KaTeX/issues/4067) [#fA6](https://redirect.github.com/KaTeX/KaTeX/issues/fA6) [#fA6f1](https://redirect.github.com/KaTeX/KaTeX/issues/fA6f1) #### [0.16.23](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.22...v0.16.23) (2025-10-03) ##### Bug Fixes - Support `\def` with arguments via `macros` option ([#​4087](https://redirect.github.com/KaTeX/KaTeX/issues/4087)) ([80a8158](80a815856a)) #### [0.16.22](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.21...v0.16.22) (2025-04-09) ##### Bug Fixes - \relax in base or exponent of super/subscript ([#​4045](https://redirect.github.com/KaTeX/KaTeX/issues/4045)) ([1f43c84](1f43c84a17)) #### [0.16.21](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.20...v0.16.21) (2025-01-17) ##### Bug Fixes - escape \htmlData attribute name ([57914ad](57914ad91e)) #### [0.16.20](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.19...v0.16.20) (2025-01-12) ##### Bug Fixes - \providecommand does not overwrite existing macro ([#​4000](https://redirect.github.com/KaTeX/KaTeX/issues/4000)) ([6d30fe4](6d30fe47b0)), closes [#​3928](https://redirect.github.com/KaTeX/KaTeX/issues/3928) #### [0.16.19](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.18...v0.16.19) (2024-12-29) ##### Bug Fixes - **types:** improve `strict` function type ([#​4009](https://redirect.github.com/KaTeX/KaTeX/issues/4009)) ([4228b4e](4228b4eb52)) #### [0.16.18](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.17...v0.16.18) (2024-12-18) ##### Bug Fixes - Actually publish TypeScript type definitions ([#​4008](https://redirect.github.com/KaTeX/KaTeX/issues/4008)) ([629b873](629b87354f)) #### [0.16.17](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.16...v0.16.17) (2024-12-17) ##### Bug Fixes - MathML combines multidigit numbers with sup/subscript, comma separators, and multicharacter text when outputting to DOM ([#​3999](https://redirect.github.com/KaTeX/KaTeX/issues/3999)) ([7d79e22](7d79e220f4)), closes [#​3995](https://redirect.github.com/KaTeX/KaTeX/issues/3995) #### [0.16.16](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.15...v0.16.16) (2024-12-17) ##### Features - ESM exports, TypeScript types ([#​3992](https://redirect.github.com/KaTeX/KaTeX/issues/3992)) ([ea9c173](ea9c173a0d)) #### [0.16.15](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.14...v0.16.15) (2024-12-09) ##### Features - italic sans-serif in math mode via `\mathsfit` command ([#​3998](https://redirect.github.com/KaTeX/KaTeX/issues/3998)) ([2218901](22189018b6)) #### [0.16.14](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.13...v0.16.14) (2024-12-08) ##### Features - \dddot and \ddddot support ([#​3834](https://redirect.github.com/KaTeX/KaTeX/issues/3834)) ([bda35cd](bda35cdb0a)), closes [#​2744](https://redirect.github.com/KaTeX/KaTeX/issues/2744) #### [0.16.13](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.12...v0.16.13) (2024-12-08) ##### Bug Fixes - `\vdots` and `\rule` support in text mode ([#​3997](https://redirect.github.com/KaTeX/KaTeX/issues/3997)) ([0e08352](0e08352623)), closes [#​3990](https://redirect.github.com/KaTeX/KaTeX/issues/3990) #### [0.16.12](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.11...v0.16.12) (2024-12-08) ##### Features - **css:** configurable margin for display math ([#​3638](https://redirect.github.com/KaTeX/KaTeX/issues/3638)) ([3405001](3405001225)) #### [0.16.11](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.10...v0.16.11) (2024-07-02) ##### Features - add \emph ([#​3963](https://redirect.github.com/KaTeX/KaTeX/issues/3963)) ([9f34da4](9f34da4b3c)), closes [#​3566](https://redirect.github.com/KaTeX/KaTeX/issues/3566) #### [0.16.10](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.9...v0.16.10) (2024-03-24) ##### Bug Fixes - \edef bypassing maxExpand via exponential blowup ([e88b4c3](e88b4c357f)) - escape \includegraphics src and alt ([c5897fc](c5897fcd1f)) - force protocol to be lowercase for better protocol filtering ([fc5af64](fc5af64183)), closes [/datatracker.ietf.org/doc/html/rfc3986#section-3](https://redirect.github.com//datatracker.ietf.org/doc/html/rfc3986/issues/section-3) - maxExpand limit with Unicode sub/superscripts ([085e21b](085e21b5da)) #### [0.16.9](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.8...v0.16.9) (2023-10-02) ##### Features - Support bold Fraktur ([#​3777](https://redirect.github.com/KaTeX/KaTeX/issues/3777)) ([240d5ae](240d5aede9)) #### [0.16.8](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.7...v0.16.8) (2023-06-24) ##### Features - expose error length and raw error message on ParseError ([#​3820](https://redirect.github.com/KaTeX/KaTeX/issues/3820)) ([710774a](710774aaeb)) #### [0.16.7](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.6...v0.16.7) (2023-04-28) ##### Bug Fixes - **docs/support\_table.md:** delete redundant "varPsi" ([#​3814](https://redirect.github.com/KaTeX/KaTeX/issues/3814)) ([33a1b98](33a1b98710)) #### [0.16.6](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.5...v0.16.6) (2023-04-17) ##### Bug Fixes - Support `\let` via `macros` option ([#​3738](https://redirect.github.com/KaTeX/KaTeX/issues/3738)) ([bdb0be2](bdb0be2017)), closes [#​3737](https://redirect.github.com/KaTeX/KaTeX/issues/3737) [#​3737](https://redirect.github.com/KaTeX/KaTeX/issues/3737) #### [0.16.5](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.4...v0.16.5) (2023-04-17) ##### Features - \_\_defineFunction API exposing internal defineFunction ([#​3805](https://redirect.github.com/KaTeX/KaTeX/issues/3805)) ([c7b1f84](c7b1f84b78)), closes [#​3756](https://redirect.github.com/KaTeX/KaTeX/issues/3756) #### [0.16.4](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.3...v0.16.4) (2022-12-07) ##### Bug Fixes - space should prevent optional argument to \ ([#​3746](https://redirect.github.com/KaTeX/KaTeX/issues/3746)) ([a0deb34](a0deb3410f)), closes [#​3745](https://redirect.github.com/KaTeX/KaTeX/issues/3745) #### [0.16.3](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.2...v0.16.3) (2022-10-22) ##### Bug Fixes - \hline after \cr ([#​3735](https://redirect.github.com/KaTeX/KaTeX/issues/3735)) ([ebf6bf5](ebf6bf5b50)), closes [#​3734](https://redirect.github.com/KaTeX/KaTeX/issues/3734) #### [0.16.2](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.1...v0.16.2) (2022-08-29) ##### Bug Fixes - **auto-render:** concatenate content of successive text nodes ([#​3422](https://redirect.github.com/KaTeX/KaTeX/issues/3422)) ([4d3fdd8](4d3fdd8647)) - Implement \pmb via CSS text-shadow ([#​3505](https://redirect.github.com/KaTeX/KaTeX/issues/3505)) ([176552a](176552a691)) #### [0.16.1](https://redirect.github.com/KaTeX/KaTeX/compare/v0.16.0...v0.16.1) (2022-08-28) ##### Bug Fixes - Use SVGs for some stacked delims ([#​3686](https://redirect.github.com/KaTeX/KaTeX/issues/3686)) ([8a65a2e](8a65a2e1fd)) </details> <details> <summary>material-extensions/vscode-material-icon-theme (material-icon-theme)</summary> ### [`v5.35.0`](https://redirect.github.com/material-extensions/vscode-material-icon-theme/blob/HEAD/CHANGELOG.md#v5350) [Compare Source](https://redirect.github.com/material-extensions/vscode-material-icon-theme/compare/v5.34.0...v5.35.0) [compare changes](https://redirect.github.com/material-extensions/vscode-material-icon-theme/compare/v5.34.0...v5.35.0) ##### 🚀 Enhancements - Add CAD file extensions to 3d icon mapping ([#​3436](https://redirect.github.com/material-extensions/vscode-material-icon-theme/pull/3436)) - Add tsdown icon ([#​3418](https://redirect.github.com/material-extensions/vscode-material-icon-theme/pull/3418)) - Add new icons for mrpack ([#​3439](https://redirect.github.com/material-extensions/vscode-material-icon-theme/pull/3439)) - Add support for vercel.ts icon (typed Vercel configuration) ([#​3441](https://redirect.github.com/material-extensions/vscode-material-icon-theme/pull/3441)) - Support jxl image file type ([#​3444](https://redirect.github.com/material-extensions/vscode-material-icon-theme/pull/3444)) - Add uiua file icon ([#​3408](https://redirect.github.com/material-extensions/vscode-material-icon-theme/pull/3408)) - Add folder associations for rust/cargo projects ([#​3447](https://redirect.github.com/material-extensions/vscode-material-icon-theme/pull/3447)) - **icon:** Add zed folder icon ([#​3442](https://redirect.github.com/material-extensions/vscode-material-icon-theme/pull/3442)) - **icon:** Add redis icon ([#​3450](https://redirect.github.com/material-extensions/vscode-material-icon-theme/pull/3450)) - Add more unit tests for writefile helper function ([9e4c98aa](https://redirect.github.com/material-extensions/vscode-material-icon-theme/commit/9e4c98aa)) - Include language IDs into the file icons ([c9a9d2ed](https://redirect.github.com/material-extensions/vscode-material-icon-theme/commit/c9a9d2ed)) - Update dependencies ([d7274c71](https://redirect.github.com/material-extensions/vscode-material-icon-theme/commit/d7274c71)) ##### 🩹 Fixes - Add rootDir to tsconfig.declarations.json for TypeScript 6 ([4f7f49e9](https://redirect.github.com/material-extensions/vscode-material-icon-theme/commit/4f7f49e9)) - Correct typos in CONTRIBUTING.md ([4de4acf7](https://redirect.github.com/material-extensions/vscode-material-icon-theme/commit/4de4acf7)) ##### 💅 Refactors - **core:** Rewrite toTitleCase for clarity and add tests ([33c0e614](https://redirect.github.com/material-extensions/vscode-material-icon-theme/commit/33c0e614)) - Remove duplicate toTitleCase, consolidate imports ([e247951d](https://redirect.github.com/material-extensions/vscode-material-icon-theme/commit/e247951d)) ##### 🏡 Chore - Improve release process ([b959b483](https://redirect.github.com/material-extensions/vscode-material-icon-theme/commit/b959b483)) ##### ✅ Tests - **core:** Add comprehensive tests for object helpers ([57f476c5](https://redirect.github.com/material-extensions/vscode-material-icon-theme/commit/57f476c5)) ##### ❤️ Contributors - Philipp Kief ([@​PKief](https://redirect.github.com/PKief)) - Sayan Shankhari ([@​SayanShankhari](https://redirect.github.com/SayanShankhari)) - Tymon Marek ([@​TymonMarek](https://redirect.github.com/TymonMarek)) - Unteksi-ozar ([@​Unteksi-ozar](https://redirect.github.com/Unteksi-ozar)) - 锐冰 SharpIce ([@​SharpIceX](https://redirect.github.com/SharpIceX)) - El Mahdi Bennajah ([@​bennajah](https://redirect.github.com/bennajah)) - Glitch714 ([@​glitchplaysgames714](https://redirect.github.com/glitchplaysgames714)) - Andrin Haldner ([@​AHaldner](https://redirect.github.com/AHaldner)) - Kaden Gruizenga ([@​kgruiz](https://redirect.github.com/kgruiz)) </details> <details> <summary>pnpm/pnpm (pnpm)</summary> ### [`v11.4.0`](https://redirect.github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#1140) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v11.3.0...v11.4.0) ##### Minor Changes - Treat tarball-integrity mismatches against the lockfile as a hard failure by default. Previously, `pnpm install` (non-frozen) would log `ERR_PNPM_TARBALL_INTEGRITY`, silently re-resolve from the registry, and overwrite the locked integrity — which meant a compromised registry, proxy, or republished version could substitute attacker-controlled content on a clean machine even though the project shipped a committed lockfile. `pnpm install` now exits with `ERR_PNPM_TARBALL_INTEGRITY` and a hint pointing at the new opt-in flag. The only opt-in is **`pnpm install --update-checksums`** — narrowly scoped to refreshing the locked integrity values from what the registry currently serves. Mirrors yarn's flag of the same name. A warning still prints when the bypass takes effect so the operation is auditable. `--force` and `pnpm update` deliberately do **not** bypass the integrity check. They are routine refresh operations; silently overwriting a locked integrity in those flows would erase the protection a committed lockfile is supposed to provide. `--frozen-lockfile` behavior is unchanged. `--fix-lockfile` keeps its documented purpose (filling in missing lockfile entries) and is also not a bypass. - `pnpm runtime set <name> <version>` now saves the runtime to `devEngines.runtime` by default instead of `engines.runtime`. Pass `--save-prod` (or `-P`) to save it to `engines.runtime` instead [#​11948](https://redirect.github.com/pnpm/pnpm/issues/11948). ##### Patch Changes - Fix a credential disclosure issue where an unscoped `_authToken` (or `_auth`, or `username` + `_password`, or `tokenHelper`) defined in one source — `~/.npmrc`, `~/.config/pnpm/auth.ini`, a workspace `.npmrc`, CLI flags, etc. — would be sent as an `Authorization` header to whichever registry a different (potentially untrusted) source named. The same fix extends to client TLS credentials (`cert`, `key`) so they aren't presented to a registry their author didn't choose. pnpm now rewrites each unscoped per-registry setting (`_authToken`, `_auth`, `username`, `_password`, `tokenHelper`, `cert`, `key`) to its URL-scoped form at load time, using the `registry=` value declared in the same source (or the npmjs default registry if the source declares none). A later layer overriding `registry=` therefore cannot pull an unscoped credential along, because it is already pinned to the URL its author intended. `ca`/`cafile` are intentionally not rescoped — they're trust anchors, not credentials, and corporate MITM-proxy setups rely on them applying globally. Every rescope emits a deprecation warning telling the user where the setting was pinned and how to write it directly. npm has rejected unscoped credentials outright since `npm@9`, and pnpm intends to remove support in a future major release. To target a specific registry, write the setting URL-scoped (e.g. `//registry.example.com/:_authToken=...` or `//registry.example.com/:cert=...`). `@pnpm/network.auth-header`: removed the `defaultRegistry` parameter from `createGetAuthHeaderByURI` and `getAuthHeadersFromCreds`. Now that credentials are URL-scoped at load time, the merged `configByUri` never contains the empty-string "default registry" placeholder slot, so re-keying it onto the merged default registry is no longer needed. - Fix `pnpm deploy` crashing with `ENOENT: ... lstat '<deployDir>/node_modules'` when `configDependencies` declares pacquet (`pacquet` or `@pnpm/pacquet`). The deploy directory never installs config dependencies, so the install engine they designate isn't on disk to invoke; the nested install now skips them. - Reject git resolutions whose `commit` field is not a 40-character hexadecimal SHA before invoking `git`. A malicious lockfile could otherwise smuggle a value such as `--upload-pack=<command>` through `git fetch` / `git checkout`, which on SSH or local-file transports executes the supplied command. - Limit concurrent project manifest reads while listing large workspaces to avoid `EMFILE` errors. - Reject patch files whose `diff --git` headers reference paths outside the patched package directory. Previously a malicious `.patch` file added via a pull request could write, delete, or rename arbitrary files reachable by the user running `pnpm install`. - Improve the log message that pnpm prints after auto-adding entries to `minimumReleaseAgeExclude` when `minimumReleaseAge` is set without `minimumReleaseAgeStrict`. The message previously referred to the internal "loose mode" terminology, which wasn't searchable in the docs; it now tells the user to set `minimumReleaseAgeStrict` to `true` if they want these updates gated behind a prompt instead [#​11747](https://redirect.github.com/pnpm/pnpm/issues/11747). - Reject dependency aliases that contain path-traversal segments (such as `@x/../../../../../.git/hooks`) when reading them from a package manifest or symlinking them into `node_modules`. A malicious registry package could otherwise use a transitive dependency key to make `pnpm install` create symlinks at attacker-chosen paths outside the intended `node_modules` directory. - Reject `pnpm-lock.yaml` entries whose remote tarball `resolution:` block is missing the `integrity` field. Previously the worker that extracts a downloaded tarball skipped hash verification when no integrity was supplied and minted a fresh one from the unverified bytes, so an attacker who could both alter the lockfile (e.g. via a pull request that strips `integrity:`) and serve modified content at the referenced tarball URL could install a tampered package without any error — including under `--frozen-lockfile`. pnpm now fails closed at lockfile-read time with `ERR_PNPM_MISSING_TARBALL_INTEGRITY`. Git-hosted tarballs (`gitHosted: true` or a URL on codeload.github.com / bitbucket.org / gitlab.com) and `file:` tarballs are exempt — the commit SHA in a git-host URL and the user-controlled local path already anchor the bytes. - Validate `devEngines.runtime` and `engines.runtime` version ranges for `node`, `deno`, and `bun` when `onFail` is set to `error` or `warn`. Previously these settings only had an effect with `onFail: 'download'` — the `error` and `warn` modes silently did nothing [#​11818](https://redirect.github.com/pnpm/pnpm/issues/11818). Violations now throw `ERR_PNPM_BAD_RUNTIME_VERSION`. - Require provenance before treating trusted publisher metadata as the strongest trust evidence. ### [`v11.3.0`](https://redirect.github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#1130) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v11.2.2...v11.3.0) ##### Minor Changes - Added `pnpm stage` with `publish`, `list`, `view`, `approve`, `reject`, and `download` subcommands for npm staged publishing. - Added a new setting `trustLockfile`. When `true`, `pnpm install` skips the supply-chain verification pass that re-applies `minimumReleaseAge` / `trustPolicy='no-downgrade'` to every entry in the loaded lockfile. The install treats the lockfile as already-trusted — useful for closed-source projects where every commit comes from a trusted author. Defaults to `false`; verification stays on by default. Set in `pnpm-workspace.yaml`. Also cut the memory footprint of the verification pass itself: the per-(registry, name) trust-meta cache previously retained the full packument — dependency graphs, scripts, README, and per-version manifests — for the entire install. On large workspaces (`~4k` lockfile entries with `minimumReleaseAge` + `trustPolicy: no-downgrade` enabled) this could OOM CI runners with a 2GB heap cap. The cache now stores only the fields the trust check actually reads (`time`, per-version `_npmUser.trustedPublisher`, `dist.attestations.provenance`). The abbreviated-metadata cache is similarly projected to just the package-level `modified` field and the set of currently-listed version names. Fixes [#​11860](https://redirect.github.com/pnpm/pnpm/issues/11860). - Implemented `pnpm pkg` command natively, following `npm pkg` standards. - Implemented `pnpm repo` command natively, following `npm repo` standards. - Implemented `pnpm set-script` (alias `ss`) natively. Adds or updates an entry in the `scripts` field of the project manifest, supporting `package.json`, `package.json5`, and `package.yaml` formats. - Add a `skip-manifest-obfuscation` option for `pnpm pack` and `pnpm publish`. When enabled, the original `packageManager` field and publish lifecycle scripts are kept in the packed/published manifest instead of being stripped. The pnpm-specific `pnpm` field continues to be omitted. ##### Patch Changes - Fixed `pnpm dlx` failing with `ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND` when the installed package's CAS slot is missing its `package.json`. Observed in the wild for `pnpm dlx node@runtime:<version>` when the GVS slot was populated without the synthesized manifest runtime archives need (they don't ship a `package.json` of their own, so the synthesized one is the only way it gets there; an existing slot from an earlier code path that skipped the synthesis stays incomplete). The bin link itself is wired up from the resolution and remains valid, so `dlx` now falls back to the scopeless package name when the slot's manifest is unreadable — for single-bin packages (the dlx common case, including every `runtime:` spec) this matches what `manifest.bin` would have named. Multi-bin packages already require `--package=<spec> <bin>` to disambiguate and don't enter this code path. - Fixed non-determinism in `pnpm dedupe` and `pnpm install` when a dependency graph contains packages with transitive peer dependencies on each other (e.g. `@aws-sdk/client-sts` and `@aws-sdk/client-sso-oidc`) and `auto-install-peers` is enabled. The lockfile no longer flips between two equally-valid forms across consecutive runs. The root cause was that `resolveDependencies` pushed onto its `pkgAddresses` / `postponedResolutionsQueue` arrays from inside `Promise.all`-spawned callbacks, so completion-order timing leaked into the array order and downstream cyclic-peer suffix assignment. Fixes [#​8155](https://redirect.github.com/pnpm/pnpm/issues/8155). - Fixed a regression introduced by [#​11711](https://redirect.github.com/pnpm/pnpm/pull/11711) where `pnpm add <github-shorthand>` (and any other wanted-dependency whose alias can't be parsed from the user-supplied spec, e.g. tarball URLs or `pnpm/test-git-fetch#sha`) was silently dropped from the manifest update and from `pendingBuilds`. The alias-keyed lookup added in that PR couldn't find a `wantedDependency` whose `alias` was `undefined` at parse time but resolved to a package name only after fetching, so the entry never made it into `specsToUpsert`. Restored the original index-based pairing between `directDependencies` and `wantedDependencies`; the catalog-protocol preservation that PR was originally fixing is unaffected because it's driven by `rdd.catalogLookup.userSpecifiedBareSpecifier`, not by the lookup. Fixes the three `rebuilds dependencies` / `rebuilds specific dependencies` / `rebuild with pending option` failures in `building/commands/test/build/index.ts`. - Fixed `pnpm add --config` leaving orphan entries in `pnpm-lock.env.yaml` (the optional subdependencies of the previously resolved version of the updated config dependency). ### [`v11.2.2`](https://redirect.github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#1122) [Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v11.2.1...v11.2.2) ##### Patch Changes - When the install engine is delegated to pacquet via `configDependencies`, the user's CLI flags passed to `pnpm install` (e.g. `--no-runtime`, `--prod`, `--dev`, `--no-optional`, `--node-linker`, `--cpu`/`--os`/`--libc`, `--offline`, `--prefer-offline`) are now forwarded to pacquet's `install` subcommand verbatim. Previously pacquet was invoked with a fixed argument list, so flags like `--no-runtime` were silently dropped. Flag forwarding is gated on the command being `install`/`i`; `add`, `update`, and `dedupe` still don't forward (their flag surface doesn't line up with pacquet's `install`). - Fixed `pnpm up` (and `pnpm add` / `pnpm remove`) failing with `pacquet_package_manager::outdated_lockfile` when pacquet is declared in `configDependencies`. pnpm now passes `--ignore-manifest-check` to pacquet so its `--frozen-lockfile` check doesn't fire against the (pre-mutation) `package.json` pnpm hasn't written yet [#​11797](https://redirect.github.com/pnpm/pnpm/issues/11797). Requires a pacquet release that supports the flag — bump `PACQUET_VERSION` in the e2e tests once it ships. </details> <details> <summary>silverwind/rolldown-license-plugin (rolldown-license-plugin)</summary> ### [`v3.0.8`](https://redirect.github.com/silverwind/rolldown-license-plugin/releases/tag/3.0.8) [Compare Source](https://redirect.github.com/silverwind/rolldown-license-plugin/compare/3.0.7...3.0.8) - update deps (silverwind) - swap path.join for template concat in I/O hot paths (silverwind) - simplify license sort and allow-branch control flow (silverwind) </details> <details> <summary>typescript-eslint/typescript-eslint (typescript-eslint)</summary> ### [`v8.60.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8600-2026-05-25) [Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.59.4...v8.60.0) This was a version bump only for typescript-eslint to align it with other projects, there were no code changes. See [GitHub Releases](https://redirect.github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.0) for more information. You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website. </details> <details> <summary>silverwind/updates (updates)</summary> ### [`v17.17.2`](https://redirect.github.com/silverwind/updates/releases/tag/17.17.2) [Compare Source](https://redirect.github.com/silverwind/updates/compare/17.17.1...17.17.2) - Read github env tokens lazily instead of at import (silverwind) ### [`v17.17.1`](https://redirect.github.com/silverwind/updates/releases/tag/17.17.1) [Compare Source](https://redirect.github.com/silverwind/updates/compare/17.17.0...17.17.1) - Scope GitHub token fallback to GitHub hosts only (silverwind) ### [`v17.17.0`](https://redirect.github.com/silverwind/updates/releases/tag/17.17.0) [Compare Source](https://redirect.github.com/silverwind/updates/compare/17.16.13...17.17.0) - update deps (silverwind) - Add per-package `overrides` config option ([#​140](https://redirect.github.com/silverwind/updates/issues/140)) (silverwind) - fix three bugs in range/tag handling (silverwind) </details> <details> <summary>vitejs/vite (vite)</summary> ### [`v8.0.14`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small-8014-2026-05-21-small) [Compare Source](https://redirect.github.com/vitejs/vite/compare/v8.0.13...v8.0.14) ##### Features - update rolldown to 1.0.2 ([#​22484](https://redirect.github.com/vitejs/vite/issues/22484)) ([96efc88](96efc88570)) ##### Bug Fixes - **deps:** update all non-major dependencies ([#​22471](https://redirect.github.com/vitejs/vite/issues/22471)) ([98b8163](98b8163213)) - **dev:** handle errors when sending messages to vite server ([#​22450](https://redirect.github.com/vitejs/vite/issues/22450)) ([e8e9a34](e8e9a34dcf)) - **html:** handle trailing slash paths in transformIndexHtml ([#​22480](https://redirect.github.com/vitejs/vite/issues/22480)) ([5d94d1b](5d94d1bffd)) - **optimizer:** pass oxc jsx options to transformSync in dependency scan ([#​22342](https://redirect.github.com/vitejs/vite/issues/22342)) ([b3132da](b3132dacea)) ##### Miscellaneous Chores - **deps:** update rolldown-related dependencies ([#​22470](https://redirect.github.com/vitejs/vite/issues/22470)) ([7cb728e](7cb728eb62)) - remove irrelevant commits from changelog ([2c69495](2c69495f25)) ##### Code Refactoring - **glob:** do not rewrite import path for absolute base ([#​22310](https://redirect.github.com/vitejs/vite/issues/22310)) ([0ae2844](0ae2844ab6)) ##### Tests - **css:** sass does not use main field ([#​22449](https://redirect.github.com/vitejs/vite/issues/22449)) ([ebf39a0](ebf39a0432)) </details> <details> <summary>vuejs/core (vue)</summary> ### [`v3.5.35`](https://redirect.github.com/vuejs/core/blob/HEAD/CHANGELOG.md#3535-2026-05-27) [Compare Source](https://redirect.github.com/vuejs/core/compare/v3.5.34...v3.5.35) ##### Bug Fixes - **compiler-core:** avoid double processing v-for keys with v-memo ([#​14861](https://redirect.github.com/vuejs/core/issues/14861)) ([34a0ded](34a0ded4d2)), closes [#​14859](https://redirect.github.com/vuejs/core/issues/14859) - **compiler-sfc:** resolve top-level exports from files registered as global types ([#​14805](https://redirect.github.com/vuejs/core/issues/14805)) ([3d077f2](3d077f26e3)), closes [nuxt/nuxt#33694](https://redirect.github.com/nuxt/nuxt/issues/33694) - **runtime-core:** avoid repeated hydration mismatch checks ([#​14857](https://redirect.github.com/vuejs/core/issues/14857)) ([170fc95](170fc95eb6)), closes [#​14855](https://redirect.github.com/vuejs/core/issues/14855) - **runtime-core:** skip idle persisted transition hooks in keep-alive moves ([#​14865](https://redirect.github.com/vuejs/core/issues/14865)) ([80fc139](80fc139f90)), closes [#​14031](https://redirect.github.com/vuejs/core/issues/14031) - **server-renderer:** propagate sync errors from `ssrRenderSuspense` ([#​14804](https://redirect.github.com/vuejs/core/issues/14804)) ([4760997](47609975e2)), closes [nuxt/nuxt#28162](https://redirect.github.com/nuxt/nuxt/issues/28162) - **teleport:** skip child unmount when pending mount discarded ([#​14876](https://redirect.github.com/vuejs/core/issues/14876)) ([#​14877](https://redirect.github.com/vuejs/core/issues/14877)) ([584beb1](584beb1262)) ##### Performance Improvements - **reactivity:** skip type checks for cached proxies ([#​14860](https://redirect.github.com/vuejs/core/issues/14860)) ([5734fe9](5734fe97f6)) - **runtime-dom:** optimize array event handler dispatch ([#​14828](https://redirect.github.com/vuejs/core/issues/14828)) ([bb18dc8](bb18dc8e56)) - **server-renderer:** avoid materializing iterables in ssrRenderList ([#​14821](https://redirect.github.com/vuejs/core/issues/14821)) ([1b7a2cc](1b7a2cc15c)) </details> <details> <summary>vuejs/language-tools (vue-tsc)</summary> ### [`v3.3.2`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#332-2026-05-25) [Compare Source](https://redirect.github.com/vuejs/language-tools/compare/v3.3.1...v3.3.2) ##### language-core - **feat:** preserve literal types for inline `v-for` sources ([#​6067](https://redirect.github.com/vuejs/language-tools/issues/6067)) - Thanks to [@​kkesidis](https://redirect.github.com/kkesidis)! - **fix:** align `v-bind` shorthand identifier skipping with interpolation - Thanks to [@​KazariEX](https://redirect.github.com/KazariEX)! ##### vscode - **feat:** transform tsserver content ([#​6062](https://redirect.github.com/vuejs/language-tools/issues/6062)) - Thanks to [@​KazariEX](https://redirect.github.com/KazariEX)! - **fix:** do not mark trailing slash in capitalized self-closing tags as invalid ([#​6065](https://redirect.github.com/vuejs/language-tools/issues/6065)) - Thanks to [@​suisanka](https://redirect.github.com/suisanka)! </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - Only on Monday (`* * * * 1`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNDEuNSIsInVwZGF0ZWRJblZlciI6IjQzLjE0MS41IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> --------- Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: silverwind <me@silverwind.io>
679 lines
24 KiB
Makefile
679 lines
24 KiB
Makefile
DIST := dist
|
|
DIST_DIRS := $(DIST)/binaries $(DIST)/release
|
|
|
|
# By default use go's 1.25 experimental json v2 library when building
|
|
# TODO: remove when no longer experimental
|
|
export GOEXPERIMENT ?= jsonv2
|
|
|
|
GO ?= go
|
|
SHASUM ?= shasum -a 256
|
|
COMMA := ,
|
|
|
|
XGO_VERSION := go-1.26.x
|
|
|
|
AIR_PACKAGE ?= github.com/air-verse/air@v1.65.3 # renovate: datasource=go
|
|
EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-checker/v3/cmd/editorconfig-checker@v3.7.0 # renovate: datasource=go
|
|
GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.12.2 # renovate: datasource=go
|
|
GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.15 # renovate: datasource=go
|
|
MISSPELL_PACKAGE ?= github.com/golangci/misspell/cmd/misspell@v0.8.0 # renovate: datasource=go
|
|
SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@v0.33.2 # renovate: datasource=go
|
|
XGO_PACKAGE ?= src.techknowlogick.com/xgo@v1.9.0 # renovate: datasource=go
|
|
GOVULNCHECK_PACKAGE ?= golang.org/x/vuln/cmd/govulncheck@v1.3.0 # renovate: datasource=go
|
|
ACTIONLINT_PACKAGE ?= github.com/rhysd/actionlint/cmd/actionlint@v1.7.12 # renovate: datasource=go
|
|
SHELLCHECK_IMAGE ?= docker.io/koalaman/shellcheck:v0.11.0@sha256:61862eba1fcf09a484ebcc6feea46f1782532571a34ed51fedf90dd25f925a8d # renovate: datasource=docker
|
|
|
|
CONTAINER_RUNTIME ?= $(shell hash docker >/dev/null 2>&1 && echo docker || echo podman)
|
|
|
|
HAS_GO := $(shell hash $(GO) > /dev/null 2>&1 && echo yes)
|
|
ifeq ($(HAS_GO), yes)
|
|
CGO_EXTRA_CFLAGS := -DSQLITE_MAX_VARIABLE_NUMBER=32766
|
|
CGO_CFLAGS ?= $(shell $(GO) env CGO_CFLAGS) $(CGO_EXTRA_CFLAGS)
|
|
endif
|
|
|
|
MAKE_EVIDENCE_DIR := .make_evidence
|
|
|
|
# Use sqlite as default database if running tests, only do so for local tests, not in CI.
|
|
# CI should explicitly set the database to avoid unexpected results.
|
|
ifneq ($(findstring test-,$(MAKECMDGOALS)),)
|
|
ifeq ($(CI),)
|
|
GITEA_TEST_DATABASE ?= sqlite
|
|
endif
|
|
endif
|
|
|
|
TAGS ?=
|
|
TAGS_EVIDENCE := $(MAKE_EVIDENCE_DIR)/tags
|
|
|
|
CGO_ENABLED ?= 0
|
|
ifneq (,$(findstring sqlite_mattn,$(TAGS))$(findstring pam,$(TAGS)))
|
|
CGO_ENABLED = 1
|
|
endif
|
|
|
|
STATIC ?=
|
|
EXTLDFLAGS ?=
|
|
ifneq ($(STATIC),)
|
|
EXTLDFLAGS = -extldflags "-static"
|
|
endif
|
|
|
|
ifeq ($(GOOS),windows)
|
|
IS_WINDOWS := yes
|
|
else ifeq ($(patsubst Windows%,Windows,$(OS)),Windows)
|
|
ifeq ($(GOOS),)
|
|
IS_WINDOWS := yes
|
|
endif
|
|
endif
|
|
|
|
# GOFLAGS and EXTRA_GOFLAGS are for the 'go build' command only
|
|
ifeq ($(IS_WINDOWS),yes)
|
|
GOFLAGS := -v -buildmode=exe
|
|
EXECUTABLE ?= gitea.exe
|
|
else
|
|
GOFLAGS := -v
|
|
EXECUTABLE ?= gitea
|
|
endif
|
|
EXTRA_GOFLAGS ?=
|
|
|
|
ifeq ($(shell sed --version 2>/dev/null | grep -q GNU && echo gnu),gnu)
|
|
SED_INPLACE := sed -i
|
|
else
|
|
SED_INPLACE := sed -i ''
|
|
endif
|
|
|
|
# GOTEST_FLAGS is for unit test and integration test
|
|
GOTEST_FLAGS ?= -timeout 40m
|
|
|
|
STORED_VERSION_FILE := VERSION
|
|
|
|
GITHUB_REF_TYPE ?= branch
|
|
GITHUB_REF_NAME ?= $(shell git rev-parse --abbrev-ref HEAD)
|
|
|
|
ifneq ($(GITHUB_REF_TYPE),branch)
|
|
VERSION ?= $(subst v,,$(GITHUB_REF_NAME))
|
|
GITEA_VERSION ?= $(VERSION)
|
|
else
|
|
ifneq ($(GITHUB_REF_NAME),)
|
|
VERSION ?= $(subst release/v,,$(GITHUB_REF_NAME))-nightly
|
|
else
|
|
VERSION ?= main
|
|
endif
|
|
|
|
STORED_VERSION=$(shell cat $(STORED_VERSION_FILE) 2>/dev/null)
|
|
ifneq ($(STORED_VERSION),)
|
|
GITEA_VERSION ?= $(STORED_VERSION)
|
|
else
|
|
GITEA_VERSION ?= $(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')
|
|
endif
|
|
endif
|
|
|
|
# if version = "main" then update version to "nightly"
|
|
ifeq ($(VERSION),main)
|
|
VERSION := main-nightly
|
|
endif
|
|
|
|
LDFLAGS := $(LDFLAGS) -X "main.Version=$(GITEA_VERSION)" -X "main.Tags=$(TAGS)"
|
|
|
|
LINUX_ARCHS ?= linux/amd64,linux/386,linux/arm-5,linux/arm-6,linux/arm64,linux/riscv64
|
|
|
|
GO_TEST_PACKAGES ?= $(filter-out $(shell $(GO) list gitea.dev/models/migrations/...) gitea.dev/tests/integration/migration-test gitea.dev/tests gitea.dev/tests/integration,$(shell $(GO) list ./... | grep -v /vendor/))
|
|
MIGRATE_TEST_PACKAGES ?= $(shell $(GO) list gitea.dev/models/migrations/...)
|
|
|
|
FRONTEND_SOURCES := $(shell find web_src/js web_src/css -type f)
|
|
FRONTEND_CONFIGS := vite.config.ts tailwind.config.ts
|
|
FRONTEND_DEST := public/assets/.vite/manifest.json
|
|
FRONTEND_DEST_ENTRIES := public/assets/js public/assets/css public/assets/fonts public/assets/.vite
|
|
FRONTEND_DEV_LOG_LEVEL ?= warn
|
|
|
|
BINDATA_DEST_WILDCARD := modules/migration/bindata.* modules/public/bindata.* modules/options/bindata.* modules/templates/bindata.*
|
|
|
|
GENERATED_GO_DEST := modules/charset/invisible_gen.go modules/charset/ambiguous_gen.go
|
|
|
|
SVG_DEST_DIR := public/assets/img/svg
|
|
|
|
AIR_TMP_DIR := .air
|
|
|
|
GO_LICENSE_FILE := assets/go-licenses.json
|
|
|
|
TAR_EXCLUDES := .git data indexers queues log node_modules $(EXECUTABLE) $(DIST) $(MAKE_EVIDENCE_DIR) $(AIR_TMP_DIR)
|
|
|
|
GO_DIRS := build cmd models modules routers services tests tools
|
|
WEB_DIRS := web_src/js web_src/css
|
|
|
|
ESLINT_FILES := web_src/js tools *.ts tests/e2e
|
|
STYLELINT_FILES := web_src/css web_src/js/components/*.vue
|
|
SPELLCHECK_FILES := $(GO_DIRS) $(WEB_DIRS) templates options/locale/locale_en-US.json .github $(filter-out CHANGELOG.md, $(wildcard *.go *.md *.yml *.yaml *.toml))
|
|
EDITORCONFIG_FILES := templates .github/workflows options/locale/locale_en-US.json
|
|
|
|
GO_SOURCES := $(wildcard *.go)
|
|
GO_SOURCES += $(shell find $(GO_DIRS) -type f -name "*.go")
|
|
GO_SOURCES += $(GENERATED_GO_DEST)
|
|
|
|
ESLINT_CONCURRENCY ?= 2
|
|
|
|
SWAGGER_SPEC := templates/swagger/v1_json.tmpl
|
|
SWAGGER_SPEC_INPUT := templates/swagger/v1_input.json
|
|
SWAGGER_EXCLUDE := gitea.dev/sdk
|
|
OPENAPI3_SPEC := templates/swagger/v1_openapi3_json.tmpl
|
|
|
|
TEST_MYSQL_HOST ?= mysql:3306
|
|
TEST_MYSQL_DBNAME ?= testgitea
|
|
TEST_MYSQL_USERNAME ?= root
|
|
TEST_MYSQL_PASSWORD ?=
|
|
TEST_PGSQL_HOST ?= pgsql:5432
|
|
TEST_PGSQL_DBNAME ?= testgitea
|
|
TEST_PGSQL_USERNAME ?= postgres
|
|
TEST_PGSQL_PASSWORD ?= postgres
|
|
TEST_PGSQL_SCHEMA ?= gtestschema
|
|
TEST_MINIO_ENDPOINT ?= minio:9000
|
|
TEST_MSSQL_HOST ?= mssql:1433
|
|
TEST_MSSQL_DBNAME ?= testgitea
|
|
TEST_MSSQL_USERNAME ?= sa
|
|
TEST_MSSQL_PASSWORD ?= MwantsaSecurePassword1
|
|
|
|
# Include local Makefile
|
|
# Makefile.local is listed in .gitignore
|
|
ifneq ("$(wildcard Makefile.local)","")
|
|
include Makefile.local
|
|
endif
|
|
|
|
$(foreach v, $(filter TEST_%, $(.VARIABLES)), $(eval MAKEFILE_VARS+=$v=$($v)))
|
|
$(foreach v, $(filter GITEA_TEST_%, $(.VARIABLES)), $(eval MAKEFILE_VARS+=$v=$($v)))
|
|
export MAKEFILE_VARS
|
|
|
|
.PHONY: all
|
|
all: build
|
|
|
|
.PHONY: help
|
|
help: Makefile ## print Makefile help information.
|
|
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m[TARGETS] default target: build\033[0m\n\n\033[35mTargets:\033[0m\n"} /^[0-9A-Za-z._-]+:.*?##/ { printf " \033[36m%-45s\033[0m %s\n", $$1, $$2 }' Makefile #$(MAKEFILE_LIST)
|
|
@printf " \033[36m%-46s\033[0m %s\n" "test-e2e" "test end to end using playwright"
|
|
@printf " \033[36m%-46s\033[0m %s\n" "test-backend[#TestSpecificName]" "run unit test (sqlite only)"
|
|
@printf " \033[36m%-46s\033[0m %s\n" "test-integration[#TestSpecificName]" "run integration test for GITEA_TEST_DATABASE (sqlite, mysql, pgsql, mssql)"
|
|
|
|
.PHONY: clean-all
|
|
clean-all: clean ## delete backend, frontend and integration files
|
|
rm -rf $(FRONTEND_DEST_ENTRIES) node_modules
|
|
|
|
.PHONY: clean
|
|
clean: ## delete backend and integration files
|
|
rm -f $(EXECUTABLE) test-*.test tests/*.ini
|
|
rm -rf $(DIST) $(BINDATA_DEST_WILDCARD) man tests/integration/gitea-integration-*
|
|
|
|
.PHONY: fmt
|
|
fmt: ## format the Go and template code
|
|
$(GO) run $(GOLANGCI_LINT_PACKAGE) fmt
|
|
$(eval TEMPLATES := $(shell find templates -type f -name '*.tmpl'))
|
|
@# strip whitespace after '{{' or '(' and before '}}' or ')' unless there is only
|
|
@# whitespace before it
|
|
@$(SED_INPLACE) \
|
|
-e 's/{{[ ]\{1,\}/{{/g' -e '/^[ ]\{1,\}}}/! s/[ ]\{1,\}}}/}}/g' \
|
|
-e 's/([ ]\{1,\}/(/g' -e '/^[ ]\{1,\})/! s/[ ]\{1,\})/)/g' \
|
|
$(TEMPLATES)
|
|
|
|
.PHONY: fmt-check
|
|
fmt-check: fmt
|
|
@diff=$$(git diff --color=always $(GO_SOURCES) templates $(WEB_DIRS)); \
|
|
if [ -n "$$diff" ]; then \
|
|
echo "Please run 'make fmt' and commit the result:"; \
|
|
printf "%s" "$${diff}"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
.PHONY: $(TAGS_EVIDENCE)
|
|
$(TAGS_EVIDENCE):
|
|
@mkdir -p $(MAKE_EVIDENCE_DIR)
|
|
@echo "$(TAGS)" > $(TAGS_EVIDENCE)
|
|
|
|
ifneq "$(TAGS)" "$(shell cat $(TAGS_EVIDENCE) 2>/dev/null)"
|
|
TAGS_PREREQ := $(TAGS_EVIDENCE)
|
|
endif
|
|
|
|
.PHONY: generate-swagger
|
|
generate-swagger: $(SWAGGER_SPEC) $(OPENAPI3_SPEC) ## generate the swagger spec from code comments
|
|
|
|
$(SWAGGER_SPEC): $(GO_SOURCES) $(SWAGGER_SPEC_INPUT)
|
|
$(GO) run $(SWAGGER_PACKAGE) generate spec --exclude "$(SWAGGER_EXCLUDE)" --input "$(SWAGGER_SPEC_INPUT)" --output './$(SWAGGER_SPEC)'
|
|
|
|
.PHONY: swagger-check
|
|
swagger-check: generate-swagger
|
|
@diff=$$(git diff --color=always '$(SWAGGER_SPEC)'); \
|
|
if [ -n "$$diff" ]; then \
|
|
echo "Please run 'make generate-swagger' and commit the result:"; \
|
|
printf "%s" "$${diff}"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
.PHONY: swagger-validate
|
|
swagger-validate: ## check if the swagger spec is valid
|
|
@# swagger "validate" requires that the "basePath" must start with a slash, but we are using Golang template "{{...}}"
|
|
@$(SED_INPLACE) -E -e 's|"basePath":( *)"(.*)"|"basePath":\1"/\2"|g' './$(SWAGGER_SPEC)' # add a prefix slash to basePath
|
|
@# FIXME: there are some warnings
|
|
$(GO) run $(SWAGGER_PACKAGE) validate './$(SWAGGER_SPEC)'
|
|
@$(SED_INPLACE) -E -e 's|"basePath":( *)"/(.*)"|"basePath":\1"\2"|g' './$(SWAGGER_SPEC)' # remove the prefix slash from basePath
|
|
|
|
.PHONY: generate-openapi3
|
|
generate-openapi3: $(OPENAPI3_SPEC) ## generate the OpenAPI 3.0 spec from the Swagger 2.0 spec
|
|
|
|
$(OPENAPI3_SPEC): $(SWAGGER_SPEC) build/generate-openapi.go $(wildcard build/openapi3gen/*.go)
|
|
$(GO) run build/generate-openapi.go
|
|
|
|
.PHONY: openapi3-check
|
|
openapi3-check: generate-openapi3
|
|
@diff=$$(git diff --color=always '$(OPENAPI3_SPEC)'); \
|
|
if [ -n "$$diff" ]; then \
|
|
echo "Please run 'make generate-openapi3' and commit the result:"; \
|
|
printf "%s" "$${diff}"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
.PHONY: checks
|
|
checks: checks-frontend checks-backend ## run various consistency checks
|
|
|
|
.PHONY: checks-frontend
|
|
checks-frontend: lockfile-check svg-check ## check frontend files
|
|
|
|
.PHONY: checks-backend
|
|
checks-backend: tidy-check swagger-check openapi3-check fmt-check swagger-validate security-check ## check backend files
|
|
|
|
.PHONY: lint
|
|
lint: lint-frontend lint-backend lint-templates lint-swagger lint-spell lint-md lint-actions lint-json lint-yaml lint-shell ## lint everything
|
|
|
|
.PHONY: lint-fix
|
|
lint-fix: lint-frontend-fix lint-backend-fix lint-spell-fix ## lint everything and fix issues
|
|
|
|
.PHONY: lint-frontend
|
|
lint-frontend: lint-js lint-css ## lint frontend files
|
|
|
|
.PHONY: lint-frontend-fix
|
|
lint-frontend-fix: lint-js-fix lint-css-fix ## lint frontend files and fix issues
|
|
|
|
.PHONY: lint-backend
|
|
lint-backend: lint-go lint-editorconfig ## lint backend files
|
|
|
|
.PHONY: lint-backend-fix
|
|
lint-backend-fix: lint-go-fix lint-editorconfig ## lint backend files and fix issues
|
|
|
|
.PHONY: lint-js
|
|
lint-js: node_modules ## lint js and ts files
|
|
pnpm exec eslint --color --max-warnings=0 --concurrency $(ESLINT_CONCURRENCY) $(ESLINT_FILES)
|
|
pnpm exec vue-tsc
|
|
|
|
.PHONY: lint-js-fix
|
|
lint-js-fix: node_modules ## lint js and ts files and fix issues
|
|
pnpm exec eslint --color --max-warnings=0 --concurrency $(ESLINT_CONCURRENCY) $(ESLINT_FILES) --fix
|
|
pnpm exec vue-tsc
|
|
|
|
.PHONY: lint-css
|
|
lint-css: node_modules ## lint css files
|
|
pnpm exec stylelint --color --max-warnings=0 $(STYLELINT_FILES)
|
|
|
|
.PHONY: lint-css-fix
|
|
lint-css-fix: node_modules ## lint css files and fix issues
|
|
pnpm exec stylelint --color --max-warnings=0 $(STYLELINT_FILES) --fix
|
|
|
|
.PHONY: lint-swagger
|
|
lint-swagger: node_modules ## lint swagger files
|
|
pnpm exec spectral lint -q -F hint $(SWAGGER_SPEC)
|
|
|
|
.PHONY: lint-md
|
|
lint-md: node_modules ## lint markdown files
|
|
pnpm exec markdownlint *.md
|
|
|
|
.PHONY: lint-md-fix
|
|
lint-md-fix: node_modules ## lint markdown files and fix issues
|
|
pnpm exec markdownlint --fix *.md
|
|
|
|
.PHONY: lint-spell
|
|
lint-spell: ## lint spelling
|
|
@git ls-files $(SPELLCHECK_FILES) | xargs go run $(MISSPELL_PACKAGE) -dict assets/misspellings.csv -error
|
|
|
|
.PHONY: lint-spell-fix
|
|
lint-spell-fix: ## lint spelling and fix issues
|
|
@git ls-files $(SPELLCHECK_FILES) | xargs go run $(MISSPELL_PACKAGE) -dict assets/misspellings.csv -w
|
|
|
|
.PHONY: lint-go
|
|
lint-go: ## lint go files
|
|
GO=$(GO) GOLANGCI_LINT_PACKAGE=$(GOLANGCI_LINT_PACKAGE) $(GO) run ./tools/lint-go-all.go
|
|
|
|
.PHONY: lint-go-fix
|
|
lint-go-fix: ## lint go files and fix issues
|
|
GO=$(GO) GOLANGCI_LINT_PACKAGE=$(GOLANGCI_LINT_PACKAGE) $(GO) run ./tools/lint-go-all.go --fix
|
|
|
|
.PHONY: lint-editorconfig
|
|
lint-editorconfig:
|
|
@echo "Running editorconfig check..."
|
|
@$(GO) run $(EDITORCONFIG_CHECKER_PACKAGE) $(EDITORCONFIG_FILES)
|
|
|
|
.PHONY: lint-actions
|
|
lint-actions: .venv ## lint action workflow files
|
|
@$(GO) run $(ACTIONLINT_PACKAGE)
|
|
@uv run --frozen zizmor --quiet --min-confidence=medium .github
|
|
|
|
.PHONY: lint-shell
|
|
lint-shell: ## lint shell scripts
|
|
@SHELLCHECK_IMAGE=$(SHELLCHECK_IMAGE) CONTAINER_RUNTIME=$(CONTAINER_RUNTIME) ./tools/lint-shell.sh $$(git ls-files '*.sh')
|
|
|
|
.PHONY: lint-templates
|
|
lint-templates: .venv node_modules ## lint template files
|
|
@node tools/lint-templates-svg.ts
|
|
@uv run --frozen djlint $(shell find templates -type f -iname '*.tmpl')
|
|
|
|
.PHONY: lint-yaml
|
|
lint-yaml: .venv ## lint yaml files
|
|
@uv run --frozen yamllint -s .
|
|
|
|
.PHONY: lint-json
|
|
lint-json: node_modules ## lint json files
|
|
pnpm exec eslint -c eslint.json.config.ts --color --max-warnings=0 --concurrency $(ESLINT_CONCURRENCY)
|
|
|
|
.PHONY: lint-json-fix
|
|
lint-json-fix: node_modules ## lint and fix json files
|
|
pnpm exec eslint -c eslint.json.config.ts --color --max-warnings=0 --concurrency $(ESLINT_CONCURRENCY) --fix
|
|
|
|
.PHONY: watch
|
|
watch: ## watch everything and continuously rebuild
|
|
@bash tools/watch.sh
|
|
|
|
.PHONY: watch-frontend
|
|
watch-frontend: node_modules ## start vite dev server for frontend
|
|
NODE_ENV=development pnpm exec vite --logLevel $(FRONTEND_DEV_LOG_LEVEL)
|
|
|
|
.PHONY: watch-backend
|
|
watch-backend: ## watch backend files and continuously rebuild
|
|
GITEA_RUN_MODE=dev $(GO) run $(AIR_PACKAGE) -c .air.toml
|
|
|
|
.PHONY: test-backend
|
|
test-backend: ## test backend files
|
|
@echo "Running go test with $(GOTEST_FLAGS) -tags '$(TAGS)'..."
|
|
@$(GO) test $(GOTEST_FLAGS) -tags='$(TAGS)' $(GO_TEST_PACKAGES)
|
|
|
|
.PHONY: test-frontend
|
|
test-frontend: node_modules ## test frontend files
|
|
pnpm exec vitest
|
|
|
|
.PHONY: test-check
|
|
test-check:
|
|
@echo "Running test-check...";
|
|
@diff=$$(git status -s); \
|
|
if [ -n "$$diff" ]; then \
|
|
echo "make test-backend has changed files in the source tree:"; \
|
|
printf "%s" "$${diff}"; \
|
|
echo "You should change the tests to create these files in a temporary directory."; \
|
|
echo "Do not simply add these files to .gitignore"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
.PHONY: test-backend\#%
|
|
test-backend\#%:
|
|
@echo "Running go test with -tags '$(TAGS)'..."
|
|
@$(GO) test $(GOTEST_FLAGS) -tags='$(TAGS)' -run $(subst .,/,$*) $(GO_TEST_PACKAGES)
|
|
|
|
.PHONY: coverage
|
|
coverage:
|
|
grep '^\(mode: .*\)\|\(.*:[0-9]\+\.[0-9]\+,[0-9]\+\.[0-9]\+ [0-9]\+ [0-9]\+\)$$' coverage.out > coverage-bodged.out
|
|
grep '^\(mode: .*\)\|\(.*:[0-9]\+\.[0-9]\+,[0-9]\+\.[0-9]\+ [0-9]\+ [0-9]\+\)$$' integration.coverage.out > integration.coverage-bodged.out
|
|
$(GO) run tools/gocovmerge.go integration.coverage-bodged.out coverage-bodged.out > coverage.all
|
|
|
|
.PHONY: unit-test-coverage
|
|
unit-test-coverage:
|
|
@echo "Running unit-test-coverage $(GOTEST_FLAGS) -tags '$(TAGS)'..."
|
|
@$(GO) test $(GOTEST_FLAGS) -tags='$(TAGS)' -cover -coverprofile coverage.out $(GO_TEST_PACKAGES) && echo "\n==>\033[32m Ok\033[m\n" || exit 1
|
|
|
|
.PHONY: tidy
|
|
tidy: ## run go mod tidy
|
|
$(eval MIN_GO_VERSION := $(shell grep -Eo '^go\s+[0-9]+\.[0-9.]+' go.mod | cut -d' ' -f2))
|
|
$(GO) mod tidy -compat=$(MIN_GO_VERSION)
|
|
@$(MAKE) --no-print-directory $(GO_LICENSE_FILE)
|
|
|
|
vendor: go.mod go.sum
|
|
$(GO) mod vendor
|
|
@touch vendor
|
|
|
|
.PHONY: tidy-check
|
|
tidy-check: tidy
|
|
@diff=$$(git diff --color=always go.mod go.sum $(GO_LICENSE_FILE)); \
|
|
if [ -n "$$diff" ]; then \
|
|
echo "Please run 'make tidy' and commit the result:"; \
|
|
printf "%s" "$${diff}"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
.PHONY: go-licenses
|
|
go-licenses: $(GO_LICENSE_FILE) ## regenerate go licenses
|
|
|
|
$(GO_LICENSE_FILE): go.mod go.sum
|
|
GO=$(GO) $(GO) run build/generate-go-licenses.go $(GO_LICENSE_FILE)
|
|
|
|
.PHONY: test-integration
|
|
test-integration:
|
|
@# Use a compiled binary: testlogger forwards gitea logs to t.Log, so `go test -v`
|
|
@# would flood output per passing test. testcache can't help these tests anyway —
|
|
@# they mutate the work directory, so cache inputs change between runs.
|
|
$(GO) test $(GOTEST_FLAGS) -tags '$(TAGS)' -c gitea.dev/tests/integration -o ./test-integration-$(GITEA_TEST_DATABASE).test
|
|
./tools/test-integration.sh ./test-integration-$(GITEA_TEST_DATABASE).test
|
|
|
|
.PHONY: test-integration-compile
|
|
test-integration-compile:
|
|
$(GO) test $(GOTEST_FLAGS) -tags '$(TAGS)' -c -o /dev/null gitea.dev/tests/integration
|
|
|
|
.PHONY: test-integration\#%
|
|
test-integration\#%:
|
|
$(GO) test $(GOTEST_FLAGS) -tags '$(TAGS)' -run $(subst .,/,$*) gitea.dev/tests/integration
|
|
|
|
.PHONY: test-migration
|
|
test-migration: migrations.integration.test migrations.individual.test
|
|
|
|
.PHONY: migrations.integration.test
|
|
migrations.integration.test:
|
|
$(GO) test $(GOTEST_FLAGS) -tags '$(TAGS)' gitea.dev/tests/integration/migration-test
|
|
|
|
.PHONY: migrations.individual.test
|
|
migrations.individual.test:
|
|
@# tests of multiple packages use the same database, don't run in parallel
|
|
$(GO) test $(GOTEST_FLAGS) -tags '$(TAGS)' -p 1 $(MIGRATE_TEST_PACKAGES)
|
|
|
|
.PHONY: migrations.individual.test\#%
|
|
migrations.individual.test\#%:
|
|
$(GO) test $(GOTEST_FLAGS) -tags '$(TAGS)' gitea.dev/models/migrations/$*
|
|
|
|
.PHONY: playwright
|
|
playwright: deps-frontend
|
|
@CONTAINER_RUNTIME=$(CONTAINER_RUNTIME) ./tools/test-e2e.sh install
|
|
|
|
.PHONY: test-e2e
|
|
test-e2e: playwright frontend backend
|
|
@CONTAINER_RUNTIME=$(CONTAINER_RUNTIME) EXECUTABLE=$(EXECUTABLE) ./tools/test-e2e.sh run $(GITEA_TEST_E2E_FLAGS)
|
|
|
|
.PHONY: build
|
|
build: frontend backend ## build everything
|
|
|
|
.PHONY: frontend
|
|
frontend: $(FRONTEND_DEST) ## build frontend files
|
|
|
|
.PHONY: backend
|
|
backend: generate-backend $(EXECUTABLE) ## build backend files
|
|
|
|
# We generate the backend before the frontend in case we in future we want to generate things in the frontend from generated files in backend
|
|
.PHONY: generate
|
|
generate: generate-backend ## run "go generate"
|
|
|
|
.PHONY: generate-backend
|
|
generate-backend: $(TAGS_PREREQ) generate-go
|
|
|
|
.PHONY: generate-go
|
|
generate-go: $(TAGS_PREREQ)
|
|
@echo "Running go generate..."
|
|
@CC= GOOS= GOARCH= CGO_ENABLED=0 $(GO) generate -tags '$(TAGS)' ./...
|
|
|
|
.PHONY: security-check
|
|
security-check:
|
|
GOEXPERIMENT= go run $(GOVULNCHECK_PACKAGE) -show color ./... || true
|
|
|
|
$(EXECUTABLE): $(GO_SOURCES) $(TAGS_PREREQ)
|
|
ifneq ($(and $(STATIC),$(findstring pam,$(TAGS))),)
|
|
$(error pam support set via TAGS does not support static builds)
|
|
endif
|
|
CGO_ENABLED="$(CGO_ENABLED)" CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(EXTLDFLAGS) $(LDFLAGS)' -o $@
|
|
|
|
.PHONY: release
|
|
release: frontend generate release-windows release-linux release-darwin release-freebsd release-copy release-compress vendor release-sources release-check
|
|
|
|
$(DIST_DIRS):
|
|
mkdir -p $(DIST_DIRS)
|
|
|
|
.PHONY: release-windows
|
|
release-windows: | $(DIST_DIRS)
|
|
CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -buildmode exe -dest $(DIST)/binaries -tags 'osusergo $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out gitea-$(VERSION) .
|
|
ifeq (,$(findstring gogit,$(TAGS)))
|
|
CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -buildmode exe -dest $(DIST)/binaries -tags 'osusergo gogit $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out gitea-$(VERSION)-gogit .
|
|
endif
|
|
|
|
.PHONY: release-linux
|
|
release-linux: | $(DIST_DIRS)
|
|
CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -dest $(DIST)/binaries -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -targets '$(LINUX_ARCHS)' -out gitea-$(VERSION) .
|
|
|
|
.PHONY: release-darwin
|
|
release-darwin: | $(DIST_DIRS)
|
|
CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -dest $(DIST)/binaries -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w $(LDFLAGS)' -targets 'darwin-10.12/amd64,darwin-10.12/arm64' -out gitea-$(VERSION) .
|
|
|
|
.PHONY: release-freebsd
|
|
release-freebsd: | $(DIST_DIRS)
|
|
CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -dest $(DIST)/binaries -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w $(LDFLAGS)' -targets 'freebsd/amd64' -out gitea-$(VERSION) .
|
|
|
|
.PHONY: release-copy
|
|
release-copy: | $(DIST_DIRS)
|
|
cd $(DIST); for file in `find . -type f -name "*"`; do cp $${file} ./release/; done;
|
|
|
|
.PHONY: release-check
|
|
release-check: | $(DIST_DIRS)
|
|
cd $(DIST)/release/; for file in `find . -type f -name "*"`; do echo "checksumming $${file}" && $(SHASUM) `echo $${file} | sed 's/^..//'` > $${file}.sha256; done;
|
|
|
|
.PHONY: release-compress
|
|
release-compress: | $(DIST_DIRS)
|
|
cd $(DIST)/release/; for file in `find . -type f -name "*"`; do echo "compressing $${file}" && $(GO) run $(GXZ_PACKAGE) -k -9 $${file}; done;
|
|
|
|
.PHONY: release-sources
|
|
release-sources: | $(DIST_DIRS)
|
|
echo $(VERSION) > $(STORED_VERSION_FILE)
|
|
# bsdtar needs a ^ to prevent matching subdirectories
|
|
$(eval EXCL := --exclude=$(shell tar --help | grep -q bsdtar && echo "^")./)
|
|
# use transform to a add a release-folder prefix; in bsdtar the transform parameter equivalent is -s
|
|
$(eval TRANSFORM := $(shell tar --help | grep -q bsdtar && echo "-s '/^./gitea-src-$(VERSION)/'" || echo "--transform 's|^./|gitea-src-$(VERSION)/|'"))
|
|
tar $(addprefix $(EXCL),$(TAR_EXCLUDES)) $(TRANSFORM) -czf $(DIST)/release/gitea-src-$(VERSION).tar.gz .
|
|
rm -f $(STORED_VERSION_FILE)
|
|
|
|
.PHONY: deps
|
|
deps: deps-frontend deps-backend deps-tools deps-py ## install dependencies
|
|
|
|
.PHONY: deps-py
|
|
deps-py: .venv ## install python dependencies
|
|
|
|
.PHONY: deps-frontend
|
|
deps-frontend: node_modules ## install frontend dependencies
|
|
|
|
.PHONY: deps-backend
|
|
deps-backend: ## install backend dependencies
|
|
$(GO) mod download
|
|
|
|
.PHONY: deps-tools
|
|
deps-tools: ## install tool dependencies
|
|
$(GO) install $(AIR_PACKAGE) & \
|
|
$(GO) install $(EDITORCONFIG_CHECKER_PACKAGE) & \
|
|
$(GO) install $(GOLANGCI_LINT_PACKAGE) & \
|
|
$(GO) install $(GXZ_PACKAGE) & \
|
|
$(GO) install $(MISSPELL_PACKAGE) & \
|
|
$(GO) install $(SWAGGER_PACKAGE) & \
|
|
$(GO) install $(XGO_PACKAGE) & \
|
|
$(GO) install $(GOVULNCHECK_PACKAGE) & \
|
|
$(GO) install $(ACTIONLINT_PACKAGE) & \
|
|
wait
|
|
|
|
node_modules: pnpm-lock.yaml
|
|
pnpm install --frozen-lockfile
|
|
@touch node_modules
|
|
|
|
.venv: uv.lock
|
|
uv sync
|
|
@touch .venv
|
|
|
|
.PHONY: update
|
|
update: update-go update-js update-py ## update dependencies
|
|
|
|
.PHONY: update-go
|
|
update-go: ## update go dependencies
|
|
$(GO) get -u ./...
|
|
$(MAKE) tidy
|
|
|
|
.PHONY: update-js
|
|
update-js: node_modules ## update js dependencies
|
|
pnpm exec updates -u -f package.json
|
|
rm -rf node_modules pnpm-lock.yaml
|
|
pnpm install
|
|
@touch node_modules
|
|
|
|
.PHONY: update-py
|
|
update-py: node_modules ## update py dependencies
|
|
pnpm exec updates -u -f pyproject.toml
|
|
rm -rf .venv uv.lock
|
|
uv sync
|
|
@touch .venv
|
|
|
|
.PHONY: vite
|
|
vite: $(FRONTEND_DEST) ## build vite files
|
|
|
|
$(FRONTEND_DEST): $(FRONTEND_SOURCES) $(FRONTEND_CONFIGS) pnpm-lock.yaml
|
|
@$(MAKE) -s node_modules
|
|
@rm -rf $(FRONTEND_DEST_ENTRIES)
|
|
@echo "Running vite build..."
|
|
@pnpm exec vite build
|
|
@touch $(FRONTEND_DEST)
|
|
|
|
.PHONY: svg
|
|
svg: node_modules ## build svg files
|
|
rm -rf $(SVG_DEST_DIR)
|
|
node tools/generate-svg.ts
|
|
|
|
.PHONY: svg-check
|
|
svg-check: svg
|
|
@git add $(SVG_DEST_DIR)
|
|
@diff=$$(git diff --color=always --cached $(SVG_DEST_DIR)); \
|
|
if [ -n "$$diff" ]; then \
|
|
echo "Please run 'make svg' and 'git add $(SVG_DEST_DIR)' and commit the result:"; \
|
|
printf "%s" "$${diff}"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
.PHONY: lockfile-check
|
|
lockfile-check:
|
|
pnpm install --frozen-lockfile
|
|
@diff=$$(git diff --color=always pnpm-lock.yaml); \
|
|
if [ -n "$$diff" ]; then \
|
|
echo "pnpm-lock.yaml is inconsistent with package.json"; \
|
|
echo "Please run 'pnpm install --frozen-lockfile' and commit the result:"; \
|
|
printf "%s" "$${diff}"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
.PHONY: generate-gitignore
|
|
generate-gitignore: ## update gitignore files
|
|
$(GO) run build/generate-gitignores.go
|
|
|
|
.PHONY: generate-images
|
|
generate-images: | node_modules ## generate images
|
|
cd tools && node generate-images.ts $(TAGS)
|
|
|
|
.PHONY: generate-codemirror-languages
|
|
generate-codemirror-languages: | node_modules ## generate codemirror languages
|
|
node tools/generate-codemirror-languages.ts
|
|
|
|
.PHONY: generate-manpage
|
|
generate-manpage: ## generate manpage
|
|
@[ -f gitea ] || make backend
|
|
@mkdir -p man/man1/ man/man5
|
|
@./gitea docs --man > man/man1/gitea.1
|
|
@gzip -9 man/man1/gitea.1 && echo man/man1/gitea.1.gz created
|
|
@#TODO A small script that formats config-cheat-sheet.en-us.md nicely for use as a config man page
|
|
|
|
# Disable parallel execution because it would break some targets that don't
|
|
# specify exact dependencies like 'backend' which does currently not depend
|
|
# on 'frontend' to enable Node.js-less builds from source tarballs.
|
|
.NOTPARALLEL:
|