1
0
mirror of https://github.com/XFox111/my-website.git synced 2026-07-02 19:52:45 +03:00

96 Commits

Author SHA1 Message Date
xfox111 aac9140830 deps: monthly dependency bump (October 2025)
Merge pull request #184 from XFox111/next
2025-10-05 16:31:49 +05:00
xfox111 0600862bfe chore(deps): bump react-dom, react, @types/react and @types/react-dom
Merge pull request #183 from XFox111/deps/react
2025-10-05 16:28:07 +05:00
xfox111 63895dfef3 chore(deps): bump react and @types/react
Merge pull request #181 from XFox111/dependabot/npm_and_yarn/next/multi-dcae87122d
2025-10-05 16:23:57 +05:00
xfox111 05a4e7f28e Merge branch 'deps/react' into dependabot/npm_and_yarn/next/multi-dcae87122d 2025-10-05 16:23:19 +05:00
dependabot[bot] 7140bff0f6 chore(deps): bump react and @types/react
Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) and [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react). These dependencies needed to be updated together.

Updates `react` from 19.1.1 to 19.2.0
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.0/packages/react)

Updates `@types/react` from 19.1.12 to 19.2.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: react
  dependency-version: 19.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: "@types/react"
  dependency-version: 19.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-05 11:16:53 +00:00
dependabot[bot] 22b7115b81 chore(deps): bump react-dom and @types/react-dom
Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) and [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom). These dependencies needed to be updated together.

Updates `react-dom` from 19.1.1 to 19.2.0
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.0/packages/react-dom)

Updates `@types/react-dom` from 19.1.9 to 19.2.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

---
updated-dependencies:
- dependency-name: react-dom
  dependency-version: 19.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: "@types/react-dom"
  dependency-version: 19.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-05 16:14:59 +05:00
dependabot[bot] b87f5ed0c4 chore(deps-dev): bump @next/eslint-plugin-next from 15.5.2 to 15.5.4
Bumps [@next/eslint-plugin-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-plugin-next) from 15.5.2 to 15.5.4.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/commits/v15.5.4/packages/eslint-plugin-next)

---
updated-dependencies:
- dependency-name: "@next/eslint-plugin-next"
  dependency-version: 15.5.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-05 13:17:51 +05:00
dependabot[bot] 1315353383 chore(deps): bump next from 15.5.2 to 15.5.4
Bumps [next](https://github.com/vercel/next.js) from 15.5.2 to 15.5.4.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.5.2...v15.5.4)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.5.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-05 13:14:00 +05:00
dependabot[bot] 3603d1d2ea chore(deps-dev): bump typescript from 5.8.3 to 5.9.3
Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.8.3 to 5.9.3.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release-publish.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.8.3...v5.9.3)

---
updated-dependencies:
- dependency-name: typescript
  dependency-version: 5.9.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-05 13:10:09 +05:00
dependabot[bot] 5ca5723aef chore(deps-dev): bump @types/node from 24.3.0 to 24.6.1
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 24.3.0 to 24.6.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 24.6.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-05 13:04:48 +05:00
dependabot[bot] 89ea9bf534 chore(deps): bump zod from 4.1.5 to 4.1.11
Bumps [zod](https://github.com/colinhacks/zod) from 4.1.5 to 4.1.11.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v4.1.5...v4.1.11)

---
updated-dependencies:
- dependency-name: zod
  dependency-version: 4.1.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-05 12:59:28 +05:00
dependabot[bot] 8fd98638de chore(deps-dev): bump sass from 1.91.0 to 1.93.2
Bumps [sass](https://github.com/sass/dart-sass) from 1.91.0 to 1.93.2.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.91.0...1.93.2)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.93.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-05 12:40:44 +05:00
dependabot[bot] 21d1f04c3a chore(deps): bump react-social-icons from 6.24.0 to 6.25.0
Bumps [react-social-icons](https://github.com/couetilc/react-social-icons) from 6.24.0 to 6.25.0.
- [Release notes](https://github.com/couetilc/react-social-icons/releases)
- [Changelog](https://github.com/couetilc/react-social-icons/blob/main/CHANGELOG.md)
- [Commits](https://github.com/couetilc/react-social-icons/compare/v6.24.0...v6.25.0)

---
updated-dependencies:
- dependency-name: react-social-icons
  dependency-version: 6.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-05 12:34:08 +05:00
dependabot[bot] 72867edab5 chore(deps): bump sharp from 0.34.3 to 0.34.4
Bumps [sharp](https://github.com/lovell/sharp) from 0.34.3 to 0.34.4.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Commits](https://github.com/lovell/sharp/compare/v0.34.3...v0.34.4)

---
updated-dependencies:
- dependency-name: sharp
  dependency-version: 0.34.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-05 12:33:59 +05:00
dependabot[bot] ff24ae5443 chore(deps-dev): bump eslint-config-next from 15.5.2 to 15.5.4
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 15.5.2 to 15.5.4.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/commits/v15.5.4/packages/eslint-config-next)

---
updated-dependencies:
- dependency-name: eslint-config-next
  dependency-version: 15.5.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-05 12:33:49 +05:00
dependabot[bot] 835a2dd359 chore(deps-dev): bump typescript-eslint from 8.42.0 to 8.45.0
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.42.0 to 8.45.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.45.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.45.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-05 12:33:29 +05:00
dependabot[bot] 9c1ff8eb90 chore(deps): bump @fluentui/react-icons from 2.0.309 to 2.0.311
Bumps [@fluentui/react-icons](https://github.com/microsoft/fluentui-system-icons) from 2.0.309 to 2.0.311.
- [Changelog](https://github.com/microsoft/fluentui-system-icons/blob/main/fluentui-android-system-icons-release.yml)
- [Commits](https://github.com/microsoft/fluentui-system-icons/commits)

---
updated-dependencies:
- dependency-name: "@fluentui/react-icons"
  dependency-version: 2.0.311
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-05 12:33:18 +05:00
dependabot[bot] 4eac9d7b36 chore(deps-dev): bump @types/nodemailer from 7.0.1 to 7.0.2
Bumps [@types/nodemailer](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/nodemailer) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/nodemailer)

---
updated-dependencies:
- dependency-name: "@types/nodemailer"
  dependency-version: 7.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-05 12:33:09 +05:00
dependabot[bot] 39bf1c6d3d chore(deps-dev): bump typescript-eslint from 8.41.0 to 8.42.0
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.41.0 to 8.42.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.42.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.42.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 20:26:39 +03:00
xfox111 a5999e49f0 Revert "fix(ci): codeql fix"
This reverts commit 4d547111ca.
2025-09-02 20:26:39 +03:00
xfox111 fe611095a1 Revert "fix(ci): codeql fix (attempt 2)"
This reverts commit 3859063795.
2025-09-02 20:26:39 +03:00
xfox111 c81f13880d Revert "fix(ci): codeql fix (attempt 3)"
This reverts commit 4145f207a9.
2025-09-02 20:26:39 +03:00
dependabot[bot] d30785eb03 chore(deps): bump zod from 4.0.14 to 4.1.5
Bumps [zod](https://github.com/colinhacks/zod) from 4.0.14 to 4.1.5.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v4.0.14...v4.1.5)

---
updated-dependencies:
- dependency-name: zod
  dependency-version: 4.1.5
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 20:26:39 +03:00
dependabot[bot] 3559b717cb chore(deps-dev): bump sass from 1.89.2 to 1.91.0
Bumps [sass](https://github.com/sass/dart-sass) from 1.89.2 to 1.91.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.89.2...1.91.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.91.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 20:26:39 +03:00
dependabot[bot] 7aa509f3bb chore(deps-dev): bump @next/eslint-plugin-next from 15.4.5 to 15.5.2
Bumps [@next/eslint-plugin-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-plugin-next) from 15.4.5 to 15.5.2.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/commits/v15.5.2/packages/eslint-plugin-next)

---
updated-dependencies:
- dependency-name: "@next/eslint-plugin-next"
  dependency-version: 15.5.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 20:26:39 +03:00
dependabot[bot] 5a7119c755 chore(deps): bump nodemailer and @types/nodemailer
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) and [@types/nodemailer](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/nodemailer). These dependencies needed to be updated together.

Updates `nodemailer` from 7.0.5 to 7.0.6
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v7.0.5...v7.0.6)

Updates `@types/nodemailer` from 6.4.17 to 7.0.1
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/nodemailer)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-version: 7.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: "@types/nodemailer"
  dependency-version: 7.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 20:26:39 +03:00
dependabot[bot] c76579341c chore(deps): bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 20:26:39 +03:00
dependabot[bot] fedc5f0f1a chore(deps-dev): bump @types/node from 24.2.0 to 24.3.0
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 24.2.0 to 24.3.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 24.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 20:26:39 +03:00
dependabot[bot] a4fbdbc5bd chore(deps-dev): bump @types/react-dom from 19.1.7 to 19.1.9
Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 19.1.7 to 19.1.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

---
updated-dependencies:
- dependency-name: "@types/react-dom"
  dependency-version: 19.1.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 20:26:39 +03:00
dependabot[bot] 1c9809abea chore(deps-dev): bump eslint-config-next from 15.4.5 to 15.5.2
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 15.4.5 to 15.5.2.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/commits/v15.5.2/packages/eslint-config-next)

---
updated-dependencies:
- dependency-name: eslint-config-next
  dependency-version: 15.5.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 20:26:39 +03:00
dependabot[bot] 99d0eeb491 chore(deps-dev): bump typescript-eslint from 8.39.0 to 8.41.0
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.39.0 to 8.41.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.41.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.41.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 20:26:39 +03:00
dependabot[bot] 80892ba176 chore(deps): bump @fluentui/react-icons from 2.0.307 to 2.0.309
Bumps [@fluentui/react-icons](https://github.com/microsoft/fluentui-system-icons) from 2.0.307 to 2.0.309.
- [Changelog](https://github.com/microsoft/fluentui-system-icons/blob/main/fluentui-android-system-icons-release.yml)
- [Commits](https://github.com/microsoft/fluentui-system-icons/commits)

---
updated-dependencies:
- dependency-name: "@fluentui/react-icons"
  dependency-version: 2.0.309
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 20:26:39 +03:00
dependabot[bot] 411d58204d chore(deps-dev): bump @types/react from 19.1.9 to 19.1.12
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 19.1.9 to 19.1.12.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-version: 19.1.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 20:26:39 +03:00
dependabot[bot] 6f45d3908d chore(deps): bump next from 15.4.5 to 15.5.2
Bumps [next](https://github.com/vercel/next.js) from 15.4.5 to 15.5.2.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.4.5...v15.5.2)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.5.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 20:26:39 +03:00
xfox111 4e8489a719 fix(ci): codeql fix (attempt 3) 2025-09-02 20:26:39 +03:00
xfox111 b7f4894d7e fix(ci): codeql fix (attempt 2) 2025-09-02 20:26:39 +03:00
xfox111 6fdd88ab8d fix(ci): codeql fix 2025-09-02 20:26:39 +03:00
xfox111 f601664382 fix: incorrect cookie value return 2025-09-02 20:26:39 +03:00
xfox111 725b9cebd9 fix(dev): include corepack enable in devcontainer postCreateCommand 2025-09-02 20:26:39 +03:00
xfox111 e16ab1f6f6 feat!: remove Clarity implicit consent option (EU compliance) 2025-09-02 20:26:39 +03:00
xfox111 ac7a3e2213 chore(deps): react, react-dom, @next/eslint-plugin-next dependency update 2025-08-05 13:43:20 +03:00
dependabot[bot] 4a0c497144 chore(deps): bump sharp from 0.34.2 to 0.34.3
Bumps [sharp](https://github.com/lovell/sharp) from 0.34.2 to 0.34.3.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Commits](https://github.com/lovell/sharp/compare/v0.34.2...v0.34.3)

---
updated-dependencies:
- dependency-name: sharp
  dependency-version: 0.34.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 13:43:20 +03:00
dependabot[bot] b3e639e718 chore(deps-dev): bump typescript-eslint from 8.35.1 to 8.39.0
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.35.1 to 8.39.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.39.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.39.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 13:43:20 +03:00
dependabot[bot] d29265687c chore(deps): bump next from 15.3.4 to 15.4.5
Bumps [next](https://github.com/vercel/next.js) from 15.3.4 to 15.4.5.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.3.4...v15.4.5)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.4.5
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 13:43:20 +03:00
dependabot[bot] d90b3a4bc1 chore(deps): bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 13:43:20 +03:00
dependabot[bot] af05da5f59 chore(deps-dev): bump eslint-config-next from 15.3.4 to 15.4.5
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 15.3.4 to 15.4.5.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/commits/v15.4.5/packages/eslint-config-next)

---
updated-dependencies:
- dependency-name: eslint-config-next
  dependency-version: 15.4.5
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 13:43:20 +03:00
dependabot[bot] 70e6fb0e45 chore(deps): bump @fluentui/react-icons from 2.0.305 to 2.0.307
Bumps [@fluentui/react-icons](https://github.com/microsoft/fluentui-system-icons) from 2.0.305 to 2.0.307.
- [Changelog](https://github.com/microsoft/fluentui-system-icons/blob/main/fluentui-android-system-icons-release.yml)
- [Commits](https://github.com/microsoft/fluentui-system-icons/commits)

---
updated-dependencies:
- dependency-name: "@fluentui/react-icons"
  dependency-version: 2.0.307
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 13:43:20 +03:00
dependabot[bot] a5e30b31c4 chore(deps-dev): bump @types/node from 24.0.8 to 24.2.0
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 24.0.8 to 24.2.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 24.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 13:43:20 +03:00
dependabot[bot] e24927770c chore(deps): bump nodemailer from 7.0.4 to 7.0.5
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 7.0.4 to 7.0.5.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v7.0.4...v7.0.5)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-version: 7.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 13:43:20 +03:00
dependabot[bot] 4c7fb5c743 chore(deps): bump zod from 3.25.67 to 4.0.14
Bumps [zod](https://github.com/colinhacks/zod) from 3.25.67 to 4.0.14.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v3.25.67...v4.0.14)

---
updated-dependencies:
- dependency-name: zod
  dependency-version: 4.0.14
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-05 13:43:20 +03:00
xfox111 dd8cd590a1 chore(ci): delete base codeql workflow 2025-08-05 13:43:20 +03:00
xfox111 f6cd9490f3 chore(ci): codeql advanced workflow 2025-08-05 13:43:20 +03:00
xfox111 1aaecad076 chore(ci): codeql workflow 2025-08-05 13:43:20 +03:00
xfox111 84dc498bf4 chore: project url update 2025-07-31 12:47:33 +03:00
xfox111 7b442739d6 fix(ci): code scanning alerts 2025-07-23 08:54:25 +00:00
xfox111 fd96fd3343 fix(ci): push on publish 2025-07-23 08:53:16 +00:00
xfox111 03b9201b7f fix(ci): enable corepack and run yarn install 2025-07-23 08:44:21 +00:00
xfox111 223309d9a6 chore(ci): ci workflow update 2025-07-23 08:37:13 +00:00
xfox111 bcb22a7740 chore(dev): migration to Yarn berry 2025-07-23 08:36:32 +00:00
xfox111 536c4559cb chore(dev): devcontainer config update 2025-07-23 08:14:45 +00:00
xfox111 40e188991f chore: docker run vscode task 2025-07-22 14:52:55 +00:00
xfox111 3dc42cbf8d chore: personal info update 2025-07-22 14:52:42 +00:00
xfox111 2e3bf0b63b feat: use JSX instead of strings for bio 2025-07-22 14:52:11 +00:00
xfox111 6d4c931091 chore(ui): pre-wrap for alert message 2025-07-22 14:50:28 +00:00
xfox111 1992ee8f29 fix: alert icon shrinking if there's a lot of text 2025-07-22 14:49:59 +00:00
xfox111 d0bd5db044 chore: replace priority attribute with loading="eager" for images 2025-07-22 14:47:49 +00:00
dependabot[bot] 1b95c8546e chore(deps-dev): bump @types/react from 19.1.6 to 19.1.8
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 19.1.6 to 19.1.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-version: 19.1.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 12:31:21 +03:00
xfox111 08706f8c4e fix(ci): CI not triggering on 'next' branch PRs 2025-07-01 12:31:21 +03:00
dependabot[bot] c6f026aef5 chore(deps-dev): bump eslint-config-next from 15.3.3 to 15.3.4
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 15.3.3 to 15.3.4.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/commits/v15.3.4/packages/eslint-config-next)

---
updated-dependencies:
- dependency-name: eslint-config-next
  dependency-version: 15.3.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 12:31:21 +03:00
dependabot[bot] ef3e81c308 chore(deps): bump @fluentui/react-icons from 2.0.302 to 2.0.305
Bumps [@fluentui/react-icons](https://github.com/microsoft/fluentui-system-icons) from 2.0.302 to 2.0.305.
- [Changelog](https://github.com/microsoft/fluentui-system-icons/blob/main/fluentui-android-system-icons-release.yml)
- [Commits](https://github.com/microsoft/fluentui-system-icons/commits)

---
updated-dependencies:
- dependency-name: "@fluentui/react-icons"
  dependency-version: 2.0.305
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 12:31:21 +03:00
dependabot[bot] e2cf91f45d chore(deps): bump nodemailer from 7.0.3 to 7.0.4
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 7.0.3 to 7.0.4.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v7.0.3...v7.0.4)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-version: 7.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 12:31:21 +03:00
dependabot[bot] 13bd78e176 chore(deps-dev): bump @next/eslint-plugin-next from 15.3.3 to 15.3.4
Bumps [@next/eslint-plugin-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-plugin-next) from 15.3.3 to 15.3.4.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/commits/v15.3.4/packages/eslint-plugin-next)

---
updated-dependencies:
- dependency-name: "@next/eslint-plugin-next"
  dependency-version: 15.3.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 12:31:21 +03:00
dependabot[bot] ce217459ef chore(deps-dev): bump @types/react-dom from 19.1.5 to 19.1.6
Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 19.1.5 to 19.1.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

---
updated-dependencies:
- dependency-name: "@types/react-dom"
  dependency-version: 19.1.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 12:31:21 +03:00
dependabot[bot] ad88ed9915 chore(deps-dev): bump sass from 1.89.1 to 1.89.2
Bumps [sass](https://github.com/sass/dart-sass) from 1.89.1 to 1.89.2.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.89.1...1.89.2)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.89.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 12:31:21 +03:00
dependabot[bot] bc61f061fd chore(deps-dev): bump @types/node from 22.15.29 to 24.0.8
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.15.29 to 24.0.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 24.0.8
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 12:31:21 +03:00
dependabot[bot] e0a5bf4ea4 chore(deps-dev): bump typescript-eslint from 8.33.1 to 8.35.1
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.33.1 to 8.35.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.35.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.35.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 12:31:21 +03:00
dependabot[bot] 95c1202844 chore(deps): bump zod from 3.25.49 to 3.25.67
Bumps [zod](https://github.com/colinhacks/zod) from 3.25.49 to 3.25.67.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v3.25.49...v3.25.67)

---
updated-dependencies:
- dependency-name: zod
  dependency-version: 3.25.67
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 12:31:21 +03:00
dependabot[bot] b12c4e95db chore(deps): bump next from 15.3.3 to 15.3.4
Bumps [next](https://github.com/vercel/next.js) from 15.3.3 to 15.3.4.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.3.3...v15.3.4)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.3.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 12:31:21 +03:00
xfox111 3658a90424 feat: exclude *.module.scss from github stats 2025-06-03 18:36:07 +03:00
xfox111 eb879594a9 chore: dependabot reviewers deprecation 2025-06-03 18:20:52 +03:00
dependabot[bot] 1109a66a0d chore(deps-dev): bump typescript-eslint from 8.33.0 to 8.33.1
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.33.0 to 8.33.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.33.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.33.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 18:13:54 +03:00
dependabot[bot] f3d9becc80 chore(deps-dev): bump @types/node from 22.15.3 to 22.15.29
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.15.3 to 22.15.29.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 22.15.29
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 18:13:54 +03:00
dependabot[bot] aea740b21e chore(deps): bump next from 15.3.1 to 15.3.3
Bumps [next](https://github.com/vercel/next.js) from 15.3.1 to 15.3.3.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.3.1...v15.3.3)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.3.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 18:13:54 +03:00
dependabot[bot] 3ecdb75032 chore(deps-dev): bump eslint-config-next from 15.3.1 to 15.3.3
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 15.3.1 to 15.3.3.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/commits/v15.3.3/packages/eslint-config-next)

---
updated-dependencies:
- dependency-name: eslint-config-next
  dependency-version: 15.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 18:13:54 +03:00
dependabot[bot] cec7852c8f chore(deps-dev): bump @types/react from 19.1.2 to 19.1.6
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 19.1.2 to 19.1.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-version: 19.1.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 18:13:54 +03:00
dependabot[bot] d4336af44b chore(deps): bump zod from 3.24.3 to 3.25.46
Bumps [zod](https://github.com/colinhacks/zod) from 3.24.3 to 3.25.46.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v3.24.3...v3.25.46)

---
updated-dependencies:
- dependency-name: zod
  dependency-version: 3.25.46
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 18:13:54 +03:00
dependabot[bot] 510e6220e2 chore(deps): bump node from 23-alpine to 24-alpine
Bumps node from 23-alpine to 24-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 24-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 18:13:54 +03:00
dependabot[bot] 4bdb31c884 chore(deps-dev): bump @next/eslint-plugin-next from 15.3.1 to 15.3.3
Bumps [@next/eslint-plugin-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-plugin-next) from 15.3.1 to 15.3.3.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/commits/v15.3.3/packages/eslint-plugin-next)

---
updated-dependencies:
- dependency-name: "@next/eslint-plugin-next"
  dependency-version: 15.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 18:13:54 +03:00
dependabot[bot] 6e2986f4d6 chore(deps-dev): bump @types/react-dom from 19.1.3 to 19.1.5
Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 19.1.3 to 19.1.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

---
updated-dependencies:
- dependency-name: "@types/react-dom"
  dependency-version: 19.1.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 18:13:54 +03:00
dependabot[bot] d1707fc53e chore(deps): bump @fluentui/react-icons from 2.0.298 to 2.0.302
Bumps [@fluentui/react-icons](https://github.com/microsoft/fluentui-system-icons) from 2.0.298 to 2.0.302.
- [Changelog](https://github.com/microsoft/fluentui-system-icons/blob/main/fluentui-android-system-icons-release.yml)
- [Commits](https://github.com/microsoft/fluentui-system-icons/commits)

---
updated-dependencies:
- dependency-name: "@fluentui/react-icons"
  dependency-version: 2.0.302
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 18:13:54 +03:00
dependabot[bot] 52c3caa395 chore(deps): bump sharp from 0.34.1 to 0.34.2
Bumps [sharp](https://github.com/lovell/sharp) from 0.34.1 to 0.34.2.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Commits](https://github.com/lovell/sharp/compare/v0.34.1...v0.34.2)

---
updated-dependencies:
- dependency-name: sharp
  dependency-version: 0.34.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 18:13:54 +03:00
dependabot[bot] 492659043a chore(deps-dev): bump sass from 1.87.0 to 1.89.1
Bumps [sass](https://github.com/sass/dart-sass) from 1.87.0 to 1.89.1.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.87.0...1.89.1)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.89.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 18:13:54 +03:00
dependabot[bot] 5f84634687 chore(deps-dev): bump typescript-eslint from 8.31.1 to 8.33.0
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.31.1 to 8.33.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.33.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.33.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 18:13:54 +03:00
dependabot[bot] db3b76c1eb chore(deps): bump nodemailer from 7.0.0 to 7.0.3
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 7.0.0 to 7.0.3.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v7.0.0...v7.0.3)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-version: 7.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 18:13:54 +03:00
xfox111 20a5fef75c fix: cloudflare script refuses to load because of cors 2025-05-14 13:28:00 +00:00
xfox111 9a4d6966d0 feat: ATS-compliant resume download links 2025-05-11 17:21:53 +00:00
38 changed files with 7362 additions and 3752 deletions
+9 -3
View File
@@ -2,16 +2,22 @@
// README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node // README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node
{ {
"name": "my-website", "name": "my-website",
"image": "mcr.microsoft.com/devcontainers/typescript-node:1-20-bullseye", "image": "mcr.microsoft.com/devcontainers/base:bookworm",
"features": { "features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": { "ghcr.io/devcontainers/features/docker-in-docker:2": {
"version": "latest", "version": "latest",
"dockerDashComposeVersion": "none" "enableNonRootDocker": "true",
"moby": "false"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "latest",
"pnpmVersion": "none",
"nvmVersion": "latest"
} }
}, },
"postCreateCommand": "yarn install", "postCreateCommand": "corepack enable && yarn install",
// Configure tool-specific properties. // Configure tool-specific properties.
"customizations": { "customizations": {
+2 -2
View File
@@ -11,10 +11,10 @@ SMTP_TO_EMAIL=email # Email to which emails will be sent
DOMAIN_NAME=example.com # Your domain name DOMAIN_NAME=example.com # Your domain name
RESUME_URL=URL # Location of the resume PDF RESUME_URL=URL # Location of the resume PDF
RESUME_HAS_REFS=false # Appends last page of the resume to a result PDF file ATS_RESUME_URL=URL # Location of the ATS-compatible resume PDF (optional, remove to disable)
RESUME_HAS_REFS=false # Appends last page of the resume to a result PDF file (only appies to non-ATS version)
ALERT_TEXT_URL=URL # URL of a txt file with urgent message to be displayed (see app/_components/AlertMessage.tsx) ALERT_TEXT_URL=URL # URL of a txt file with urgent message to be displayed (see app/_components/AlertMessage.tsx)
CLARITY_ID=string # Clarity Analytics ID (optional, remove to disable) CLARITY_ID=string # Clarity Analytics ID (optional, remove to disable)
CLARITY_CONSENT=1 # 1 if you need to request explicit consent from user, 0 if not (requires CLARITY_ID)
CF_SITEKEY=3x00000000000000000000FF # Cloudflare Turnstile captcha sitekey for contact form (optional, remove to siable) CF_SITEKEY=3x00000000000000000000FF # Cloudflare Turnstile captcha sitekey for contact form (optional, remove to siable)
CF_SECRET=1x0000000000000000000000000000000AA # Secret for token validation (requries CF_SITEKEY) CF_SECRET=1x0000000000000000000000000000000AA # Secret for token validation (requries CF_SITEKEY)
+1
View File
@@ -0,0 +1 @@
*.module.scss linguist-detectable=false
+1
View File
@@ -0,0 +1 @@
* @XFox111
+4 -12
View File
@@ -10,9 +10,7 @@ updates:
directory: "/" directory: "/"
target-branch: "next" target-branch: "next"
assignees: assignees:
- "xfox111" - "XFox111"
reviewers:
- "xfox111"
schedule: schedule:
interval: monthly interval: monthly
rebase-strategy: disabled rebase-strategy: disabled
@@ -22,9 +20,7 @@ updates:
directory: "/" directory: "/"
target-branch: "next" target-branch: "next"
assignees: assignees:
- "xfox111" - "XFox111"
reviewers:
- "xfox111"
schedule: schedule:
interval: monthly interval: monthly
rebase-strategy: disabled rebase-strategy: disabled
@@ -34,9 +30,7 @@ updates:
directory: "/" directory: "/"
target-branch: "next" target-branch: "next"
assignees: assignees:
- "xfox111" - "XFox111"
reviewers:
- "xfox111"
schedule: schedule:
interval: monthly interval: monthly
rebase-strategy: disabled rebase-strategy: disabled
@@ -46,9 +40,7 @@ updates:
directory: "/" directory: "/"
target-branch: "next" target-branch: "next"
assignees: assignees:
- "xfox111" - "XFox111"
reviewers:
- "xfox111"
schedule: schedule:
interval: monthly interval: monthly
rebase-strategy: disabled rebase-strategy: disabled
+53
View File
@@ -0,0 +1,53 @@
name: Audit pipeline
on:
push:
paths-ignore:
- '.devcontainer/*'
- '.github/*'
- '!.github/workflows/audit.yml'
- '.vscode/*'
- '**.md'
- '.env*'
- 'LICENSE'
- 'COPYING'
- '.git*'
pull_request:
paths-ignore:
- '.devcontainer/*'
- '.github/*'
- '!.github/workflows/audit.yml'
- '.vscode/*'
- '**.md'
- '.env*'
- 'LICENSE'
- 'COPYING'
- '.git*'
workflow_dispatch:
jobs:
audit:
runs-on: ubuntu-latest
container: node:24
permissions:
contents: read
steps:
- uses: actions/checkout@v5
- run: corepack enable
- run: yarn install
- run: yarn npm audit
build:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v5
- uses: docker/build-push-action@v6
with:
context: .
tags: "my-website:ci"
+6 -33
View File
@@ -1,35 +1,10 @@
name: "CI pipeline" name: "CI pipeline"
on: on:
push: release:
branches: [ "main" ] types:
paths-ignore: - published
- '.devcontainer/*'
- '.github/*'
- '!.github/workflows/ci.yml'
- '.vscode/*'
- '**.md'
- '.env*'
- 'LICENSE'
- 'COPYING'
pull_request:
branches: [ "main", "deps" ]
paths-ignore:
- '.devcontainer/*'
- '.github/*'
- '!.github/workflows/ci.yml'
- '.vscode/*'
- '**.md'
- '.env*'
- 'LICENSE'
- 'COPYING'
workflow_dispatch: workflow_dispatch:
inputs:
push:
type: boolean
required: false
default: false
description: "Push to Docker Hub"
jobs: jobs:
build: build:
@@ -39,7 +14,7 @@ jobs:
packages: write packages: write
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v5
- uses: docker/metadata-action@v5 - uses: docker/metadata-action@v5
id: meta id: meta
@@ -49,17 +24,15 @@ jobs:
ghcr.io/${{ github.repository }} ghcr.io/${{ github.repository }}
tags: | tags: |
latest latest
${{ github.sha }} ${{ github.ref_name }}
- name: "Login to Docker Hub" - name: "Login to Docker Hub"
if: github.event_name != 'pull_request' || github.event.inputs.push == 'true'
uses: docker/login-action@v3 uses: docker/login-action@v3
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }} password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: "Login to GitHub Container Registry" - name: "Login to GitHub Container Registry"
if: github.event_name != 'pull_request' || github.event.inputs.push == 'true'
uses: docker/login-action@v3 uses: docker/login-action@v3
with: with:
registry: ghcr.io registry: ghcr.io
@@ -69,5 +42,5 @@ jobs:
- uses: docker/build-push-action@v6 - uses: docker/build-push-action@v6
with: with:
context: . context: .
push: ${{ github.event_name != 'pull_request' || github.event.inputs.push == 'true' }} push: true
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
+111
View File
@@ -0,0 +1,111 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL Advanced"
on:
push:
branches: [ "main", "next" ]
paths-ignore:
- '**.md'
- 'LICENSE'
- '**/ci.yml'
- '.vscode/*'
pull_request:
# The branches below must be a subset of the branches above
branches: [ "main", "next" ]
paths-ignore:
- '**.md'
- 'LICENSE'
- '**/ci.yml'
- '.vscode/*'
schedule:
- cron: '23 22 * * 1'
jobs:
analyze:
name: Analyze (${{ matrix.language }})
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners (GitHub.com only)
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
permissions:
# required for all workflows
security-events: write
# required to fetch internal or private CodeQL packs
packages: read
# only required for workflows in private repositories
actions: read
contents: read
strategy:
fail-fast: false
matrix:
include:
- language: actions
build-mode: none
- language: javascript-typescript
build-mode: none
# CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
# Use `c-cpp` to analyze code written in C, C++ or both
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@v5
# Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node`
# or others). This is typically only required for manual builds.
# - name: Setup runtime (example)
# uses: actions/setup-example@v1
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# If the analyze step fails for one of the languages you are analyzing with
# "We were unable to automatically build your code", modify the matrix above
# to set the build mode to "manual" for that language. Then modify this step
# to build your code.
# ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- if: matrix.build-mode == 'manual'
shell: bash
run: |
echo 'If you are using a "manual" build mode for one or more of the' \
'languages you are analyzing, replace this with the commands to build' \
'your code, for example:'
echo ' make bootstrap'
echo ' make release'
exit 1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"
+4
View File
@@ -34,3 +34,7 @@ yarn-error.log*
# typescript # typescript
*.tsbuildinfo *.tsbuildinfo
next-env.d.ts next-env.d.ts
# yarn
.pnp.*
.yarn
+17
View File
@@ -56,5 +56,22 @@
"label": "docker: build", "label": "docker: build",
"detail": "Build a Docker image" "detail": "Build a Docker image"
}, },
{
"type": "shell",
"command": "docker",
"args": [
"run",
"--rm",
"--env-file",
".env.local",
"-p",
"3000:3000",
"my-website"
],
"group": "test",
"problemMatcher": [],
"label": "docker: run",
"detail": "Run the Docker container"
}
] ]
} }
+5
View File
@@ -0,0 +1,5 @@
nodeLinker: node-modules
logFilters:
- level: discard
pattern: "react is listed by your project with version * (*), which doesn't satisfy what @fluentui/react-icons and other dependencies request*"
+6 -3
View File
@@ -1,4 +1,4 @@
FROM node:23-alpine AS base FROM node:24-alpine AS base
# Install dependencies only when needed # Install dependencies only when needed
FROM base AS deps FROM base AS deps
@@ -7,8 +7,9 @@ RUN apk add --no-cache libc6-compat
WORKDIR /app WORKDIR /app
# Install dependencies # Install dependencies
COPY package.json yarn.lock ./ COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn --frozen-lockfile RUN corepack enable
RUN yarn install
# Rebuild the source code only when needed # Rebuild the source code only when needed
FROM base AS builder FROM base AS builder
@@ -16,6 +17,8 @@ WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules COPY --from=deps /app/node_modules ./node_modules
COPY . . COPY . .
RUN corepack enable
# Next.js collects completely anonymous telemetry data about general usage. # Next.js collects completely anonymous telemetry data about general usage.
# Learn more here: https://nextjs.org/telemetry # Learn more here: https://nextjs.org/telemetry
# Uncomment the following line in case you want to disable telemetry during the build. # Uncomment the following line in case you want to disable telemetry during the build.
+6
View File
@@ -14,10 +14,16 @@
{ {
font-size: $fontSizeHero900; font-size: $fontSizeHero900;
color: $colorStatusWarningForeground1; color: $colorStatusWarningForeground1;
flex-shrink: 0;
} }
.title .title
{ {
@include body1Stronger; @include body1Stronger;
} }
.message
{
white-space: pre-wrap;
}
} }
+3 -3
View File
@@ -26,15 +26,15 @@ const AlertMessage: React.FC = async () =>
if (!response.ok || !alertText) if (!response.ok || !alertText)
return null; return null;
const title: string = alertText.split("\n", 1)[0]; const title: string = alertText.split("\n", 1)[0].trim();
const message: string = alertText.substring(title.length); const message: string = alertText.substring(title.length + 1).trim();
return ( return (
<div role="alert" className={ cls.alertBox } aria-label={ alertText }> <div role="alert" className={ cls.alertBox } aria-label={ alertText }>
<ChatWarningRegular className={ cls.icon } /> <ChatWarningRegular className={ cls.icon } />
<div> <div>
<p className={ cls.title }>{ title }</p> <p className={ cls.title }>{ title }</p>
<p dangerouslySetInnerHTML={ { __html: message } } /> <p className={ cls.message } dangerouslySetInnerHTML={ { __html: message } } />
</div> </div>
</div> </div>
); );
+8 -16
View File
@@ -41,11 +41,6 @@
} }
} }
.dismiss
{
border-left: none;
}
.controls .controls
{ {
display: grid; display: grid;
@@ -65,19 +60,16 @@
width: 100%; width: 100%;
bottom: 0; bottom: 0;
&:not(:has(> .dismiss)) flex-flow: column;
.learnMore
{ {
flex-flow: column; border-bottom: none;
}
.learnMore .controls > button:last-child
{ {
border-bottom: none; border-left: none;
}
.controls > button:last-child
{
border-left: none;
}
} }
} }
} }
+6 -19
View File
@@ -1,12 +1,11 @@
"use client"; "use client";
import { acceptCookies, dismissCookies, getCookieChoice, rejectCookies } from "@/_utils/analytics/client"; import { acceptCookies, getCookieChoice, rejectCookies } from "@/_utils/analytics/client";
import { Dismiss24Regular } from "@fluentui/react-icons";
import React, { useCallback, useEffect, useState } from "react"; import React, { useCallback, useEffect, useState } from "react";
import Button from "./Button"; import Button from "./Button";
import cls from "./CookieBanner.module.scss"; import cls from "./CookieBanner.module.scss";
const CookieBanner: React.FC<{ askForConsent: boolean; }> = props => const CookieBanner: React.FC = () =>
{ {
const [visible, setVisible] = useState(false); const [visible, setVisible] = useState(false);
@@ -36,12 +35,6 @@ const CookieBanner: React.FC<{ askForConsent: boolean; }> = props =>
setVisible(false); setVisible(false);
}, []); }, []);
const dismiss = useCallback(() =>
{
dismissCookies();
setVisible(false);
}, []);
if (!visible) if (!visible)
return null; return null;
@@ -59,16 +52,10 @@ const CookieBanner: React.FC<{ askForConsent: boolean; }> = props =>
</p> </p>
</Button> </Button>
{ props.askForConsent ? <div className={ cls.controls }>
<div className={ cls.controls }> <Button onClick={ accept }>Accept</Button>
<Button onClick={ accept }>Accept</Button> <Button onClick={ reject }>Reject</Button>
<Button onClick={ reject }>Reject</Button> </div>
</div>
:
<Button
title="Dismiss" icon={ <Dismiss24Regular /> }
onClick={ dismiss } className={ cls.dismiss } />
}
</div> </div>
); );
+2 -2
View File
@@ -23,8 +23,8 @@ const FrontSection: React.FC = () => (
</div> </div>
<div className={ cls.illustrations }> <div className={ cls.illustrations }>
<Image className={ cls.main } src={ profilePicture.src } alt={ profilePicture.alt } priority /> <Image className={ cls.main } src={ profilePicture.src } alt={ profilePicture.alt } loading="eager" />
<Image className={ cls.secondary } src={ homeDecor.src } alt={ homeDecor.alt } /> <Image className={ cls.secondary } src={ homeDecor.src } alt={ homeDecor.alt } loading="eager" />
</div> </div>
</section> </section>
); );
+1 -1
View File
@@ -9,7 +9,7 @@ const TitleLogo: React.FC = () => (
<Image src={ logo } <Image src={ logo }
alt="A fox jumping down, and a diagonal stripe in the background, forming letters X and F" alt="A fox jumping down, and a diagonal stripe in the background, forming letters X and F"
aria-hidden aria-hidden
priority /> loading="eager" />
<p> <p>
<span>xfox111</span> <span>xfox111</span>
<sub>.net</sub> <sub>.net</sub>
-16
View File
@@ -1,16 +0,0 @@
export const bio: string[] =
[
"My name is Eugene Fox. I am a professional software developer primarily focused on .NET and React projects.",
"My journey as a programmer started in 2018 from a silly free-time hobby. Since then, I have released a couple of personal projects, some of which have become quite popular.",
"Graduated from Bonch-Bruevich University of Telecommunications in 2023 where I got my bachelor's degree in computer science. It was fun. Took part in a number of hackathons (usually first place for us) as well as science conferences (including those hosted by IEEE).",
"Also, before graduation I managed to work in several different companies in different IT fields (mostly software development, of course).",
"Out-of-box thinking, and constant self-improvement is my life strategy. New tool released? - Yes, please! GitHub is hosting another conference? - Sign me up! There is a new challenging task to complete? - Oh, boy, here we go again! So many things to learn, so little time to spare...",
"Overall, enthusiastic, fast learning and energetic person. Love coding and creating something new. Like to draw and compose music. Proud member of the furry community."
];
export default bio;
+14
View File
@@ -0,0 +1,14 @@
export const Bio: React.FC = () => (
<>
<p>{ bioPremise }</p>
<p>My journey as a programmer started in 2018 from a silly free-time hobby. Since then, I have released a couple of personal projects, some of which have become quite popular.</p>
<p>Graduated from <a href="https://sut.ru/eng" target="_blank">Bonch-Bruevich University of Telecommunications</a> in 2023 where I got my Bachelor&apos;s degree in computer science. It was fun. Took part in a number of hackathons (usually first place for us) as well as science conferences (including those hosted by IEEE). In 2025 got Master&apos;s in Radiotechnology.</p>
<p>Also, before graduation I managed to work in several different companies in different IT fields (mostly software development, of course).</p>
<p>Out-of-box thinking, and constant self-improvement is my life strategy. New tool released? - Yes, please! GitHub is hosting another conference? - Sign me up! There is a new challenging task to complete? - Oh, boy, here we go again! So many things to learn, so little time to spare...</p>
<p>Overall, enthusiastic, fast learning and energetic person. Love coding and creating something new. Like to draw and compose music. Aviasim enthusiast. Proud member of the furry community.</p>
</>
);
export const bioPremise: string = "My name is Eugene Fox. I am a professional software developer primarily focused on .NET and React projects.";
export default Bio;
+1 -1
View File
@@ -5,7 +5,7 @@ const experience: WorkplaceEntry[] =
{ title: "Software Engineer", place: "[nordcloud]", tech: "ASP.NET, EF Core" }, { title: "Software Engineer", place: "[nordcloud]", tech: "ASP.NET, EF Core" },
{ title: "CTO", year: "2022", place: "FoxDev Studio", tech: "Unity, Xamarin, .NET, React, Azure" }, { title: "CTO", year: "2022", place: "FoxDev Studio", tech: "Unity, Xamarin, .NET, React, Azure" },
{ title: "Senior Software Engineer", year: "2023", place: "A-rial", tech: ".NET, React, DevOps" }, { title: "Senior Software Engineer", year: "2023", place: "A-rial", tech: ".NET, React, DevOps" },
{ title: "Senior Software Architect", year: "2024", place: "Ubitel", tech: ".NET, React, Embedded devices" }, { title: "Senior Software Architect", year: "2024", place: "A-rial", tech: ".NET, React, Embedded devices" },
{ title: "Here", place: "Your company" }, { title: "Here", place: "Your company" },
]; ];
+3 -3
View File
@@ -1,7 +1,7 @@
import Package from "@/../package.json"; import Package from "@/../package.json";
import { Metadata } from "next"; import { Metadata } from "next";
import { unstable_noStore } from "next/cache"; import { unstable_noStore } from "next/cache";
import bio from "./bio"; import { bioPremise } from "./bio";
import socials from "./socials"; import socials from "./socials";
export const canonicalName: URL = new URL(`https://${process.env.DOMAIN_NAME}`); export const canonicalName: URL = new URL(`https://${process.env.DOMAIN_NAME}`);
@@ -18,12 +18,12 @@ export async function generateMetadata(): Promise<Metadata>
unstable_noStore(); unstable_noStore();
return { return {
title: baseTitle, title: baseTitle,
description: bio[0], description: bioPremise,
metadataBase: canonicalName, metadataBase: canonicalName,
openGraph: openGraph:
{ {
title: baseTitle, title: baseTitle,
description: bio[0], description: bioPremise,
type: "profile", type: "profile",
firstName: Package.author.name.split(" ")[0], firstName: Package.author.name.split(" ")[0],
lastName: Package.author.name.split(" ")[1], lastName: Package.author.name.split(" ")[1],
+7 -8
View File
@@ -24,17 +24,16 @@ const projects: Project[] =
"In the end, I have created a big web service with mobile app and a customer portal, that could authenticate users on any website, and any device within a few seconds." "In the end, I have created a big web service with mobile app and a customer portal, that could authenticate users on any website, and any device within a few seconds."
], ],
image: ezlogImg, image: ezlogImg,
link: "https://ezlog.app/about", link: "https://github.com/xfox111/easylogon-web",
stack: stack:
[ [
{ text: "C#/TypeScript", icon: ic.Code24Regular }, { text: "C#/TypeScript", icon: ic.Code24Regular },
{ text: ".NET 6", icon: ic.Server24Regular }, { text: ".NET 6", icon: ic.Server24Regular },
{ text: "ReactJS", icon: ic.PhoneDesktop24Regular }, { text: "React/Vite", icon: ic.PhoneDesktop24Regular },
{ text: "Xamarin.Forms", icon: ic.Phone24Regular }, { text: "Xamarin.Forms", icon: ic.Phone24Regular },
{ text: "SQL Server", icon: ic.Database24Regular }, { text: "SQL Server", icon: ic.Database24Regular },
{ text: "Azure DevOps", icon: ic.Branch24Regular }, { text: "Azure DevOps", icon: ic.Branch24Regular },
{ text: "Azure Pipelines/AppCenter", icon: ic.FlashFlow24Regular }, { text: "Azure Pipelines/GitHub Actions", icon: ic.FlashFlow24Regular }
{ text: "AppCenter", icon: ic.HeartPulse24Regular }
] ]
}, },
{ {
@@ -50,9 +49,9 @@ const projects: Project[] =
link: "https://github.com/xfox111/TabsAsideExtension", link: "https://github.com/xfox111/TabsAsideExtension",
stack: stack:
[ [
{ text: "ReactJS", icon: ic.Desktop24Regular }, { text: "React/WXT", icon: ic.Desktop24Regular },
{ text: "TypeScript/SASS", icon: ic.Code24Regular }, { text: "TypeScript", icon: ic.Code24Regular },
{ text: "Chrome/WebExt", icon: ic.FlashSettings24Regular }, { text: "Browser extension", icon: ic.FlashSettings24Regular },
{ text: "Fluent UI", icon: ic.Color24Regular }, { text: "Fluent UI", icon: ic.Color24Regular },
{ text: "GitHub", icon: ic.Branch24Regular }, { text: "GitHub", icon: ic.Branch24Regular },
{ text: "GitHub Actions", icon: ic.FlashFlow24Regular }, { text: "GitHub Actions", icon: ic.FlashFlow24Regular },
@@ -91,7 +90,7 @@ const projects: Project[] =
[ [
{ text: "React/Vite", icon: ic.Desktop24Regular }, { text: "React/Vite", icon: ic.Desktop24Regular },
{ text: "TypeScript", icon: ic.Code24Regular }, { text: "TypeScript", icon: ic.Code24Regular },
{ text: "Chrome/WebExt", icon: ic.FlashSettings24Regular }, { text: "Browser extension", icon: ic.FlashSettings24Regular },
{ text: "Fluent UI", icon: ic.Color24Regular }, { text: "Fluent UI", icon: ic.Color24Regular },
{ text: "GitHub", icon: ic.Branch24Regular }, { text: "GitHub", icon: ic.Branch24Regular },
{ text: "GitHub Actions", icon: ic.FlashFlow24Regular }, { text: "GitHub Actions", icon: ic.FlashFlow24Regular },
+2 -4
View File
@@ -1,5 +1,5 @@
import { aboutPicture } from "@/_assets/illustrations"; import { aboutPicture } from "@/_assets/illustrations";
import bio from "@/_data/bio"; import Bio from "@/_data/bio";
import Image from "next/image"; import Image from "next/image";
import React from "react"; import React from "react";
import cls from "./AboutSection.module.scss"; import cls from "./AboutSection.module.scss";
@@ -9,9 +9,7 @@ const AboutSection: React.FC = () => (
<div> <div>
<h2>About me</h2> <h2>About me</h2>
{ bio.map((i, index) => <Bio />
<p key={ index }>{ i }</p>
) }
</div> </div>
<Image src={ aboutPicture.src } alt={ aboutPicture.alt } /> <Image src={ aboutPicture.src } alt={ aboutPicture.alt } />
+7 -3
View File
@@ -51,10 +51,14 @@ const ProjectsSection: React.FC = () =>
<div className={ cls.descriptions } aria-live="polite" aria-atomic> <div className={ cls.descriptions } aria-live="polite" aria-atomic>
{ projects.map((project, index) => { projects.map((project, index) =>
<div key={ index } className={ cls.projectItem } hidden={ selection !== index }> <div key={ index } className={ cls.projectItem } hidden={ selection !== index }>
<Image src={ project.image } alt={ project.title } data-theme={ project.imageDark ? "light" : "both" } /> <Image
src={ project.image } alt={ project.title }
data-theme={ project.imageDark ? "light" : "both" }
loading="eager" />
{/* This is a workaround since not all images can be theme-adaptive */ } {/* This is a workaround since not all images can be theme-adaptive */ }
{ project.imageDark && { project.imageDark &&
<Image src={ project.imageDark } alt="" data-theme="dark" /> <Image src={ project.imageDark } alt="" data-theme="dark" loading="eager" />
} }
<h3>{ project.title }</h3> <h3>{ project.title }</h3>
@@ -80,7 +84,7 @@ const ProjectsSection: React.FC = () =>
</div> </div>
) } ) }
<Image className={ cls.defaultImg } hidden={ selection !== undefined } <Image className={ cls.defaultImg } hidden={ selection !== undefined }
src={ projectsImg.src } alt={ projectsImg.alt } /> src={ projectsImg.src } alt={ projectsImg.alt } loading="eager" />
</div> </div>
</section> </section>
); );
+1 -1
View File
@@ -26,7 +26,7 @@ const SkillsSection: React.FC = () =>
{ skills.map((i, index) => { skills.map((i, index) =>
<Image key={ index } <Image key={ index }
src={ i.image.src } alt={ i.image.alt } src={ i.image.src } alt={ i.image.alt }
hidden={ selection !== index } /> hidden={ selection !== index } loading="eager" />
) } ) }
{ selection === 4 && { selection === 4 &&
+2 -8
View File
@@ -12,18 +12,12 @@ export const rejectCookies = (): void =>
window.clarity?.("consent", false); window.clarity?.("consent", false);
}; };
export const dismissCookies = (): void => export const getCookieChoice = (): "accepted" | "rejected" | "none" =>
{
setCookie("CC", "", 1209600); // 14 days
};
export const getCookieChoice = (): "accepted" | "rejected" | "acknowledged" | "none" =>
{ {
switch (getCookie("CC")) switch (getCookie("CC"))
{ {
case "1": return "accepted"; case "1": return "accepted";
case "0": return "rejected"; case "0": return "rejected";
case "": return "acknowledged";
default: return "none"; default: return "none";
} }
}; };
@@ -41,7 +35,7 @@ function getCookie(name: string): string | undefined
for (const cookie of cookies) for (const cookie of cookies)
if (cookie.trim().startsWith(cookieName)) if (cookie.trim().startsWith(cookieName))
return cookie.substring(cookieName.length); return cookie.trim().substring(cookieName.length);
return undefined; return undefined;
} }
-10
View File
@@ -9,13 +9,3 @@ export const analyticsEnabled = (): boolean =>
unstable_noStore(); unstable_noStore();
return !!process.env.CLARITY_ID; return !!process.env.CLARITY_ID;
}; };
/**
* Check if Clarity requires explicit consent
* @returns true if Clarity requires explicit consent
*/
export const requireExplicitConsent = (): boolean =>
{
unstable_noStore();
return process.env.CLARITY_CONSENT === "1";
};
+8 -10
View File
@@ -3,7 +3,7 @@ import Button from "@/_components/Button";
import RevokeConsentButton from "@/_components/RevokeConsentButton"; import RevokeConsentButton from "@/_components/RevokeConsentButton";
import { canonicalName, getTitle } from "@/_data/metadata"; import { canonicalName, getTitle } from "@/_data/metadata";
import ThirdPartyAttribution from "@/_data/ThirdPartyAttributiont"; import ThirdPartyAttribution from "@/_data/ThirdPartyAttributiont";
import { analyticsEnabled, requireExplicitConsent } from "@/_utils/analytics/server"; import { analyticsEnabled } from "@/_utils/analytics/server";
import { ArrowLeft24Regular, ArrowRight24Regular } from "@fluentui/react-icons"; import { ArrowLeft24Regular, ArrowRight24Regular } from "@fluentui/react-icons";
import { Metadata } from "next"; import { Metadata } from "next";
import { unstable_noStore } from "next/cache"; import { unstable_noStore } from "next/cache";
@@ -45,17 +45,15 @@ const AttributionPage: React.FC = () => (
If the &quot;Do Not Track&quot; option is enabled in your browser, If the &quot;Do Not Track&quot; option is enabled in your browser,
the website will not execute any tracking code. the website will not execute any tracking code.
</p> </p>
{ requireExplicitConsent() && <p>
<p> If you previously gave your consent to use cookies,
If you previously gave your consent to use cookies, you can revoke it by clicking &quot;Revoke my consent&quot; button on this page below
you can revoke it by clicking &quot;Revoke my consent&quot; button on this page below (the button is available only if the consent was given).
(the button is available only if the consent was given). Recorded data will be deleted after 30-day retention period.
Recorded data will be deleted after 30-day retention period. </p>
</p>
}
<div className={ cls.buttonRow }> <div className={ cls.buttonRow }>
{ requireExplicitConsent() && <RevokeConsentButton /> } <RevokeConsentButton />
<Button appearance="secondary" <Button appearance="secondary"
href="https://learn.microsoft.com/clarity/faq#privacy" target="_blank" href="https://learn.microsoft.com/clarity/faq#privacy" target="_blank"
iconAfter={ <ArrowRight24Regular /> }> iconAfter={ <ArrowRight24Regular /> }>
+2 -2
View File
@@ -5,7 +5,7 @@ import { PropsWithChildren } from "react";
import CookieBanner from "./_components/CookieBanner"; import CookieBanner from "./_components/CookieBanner";
import Footer from "./_components/Footer"; import Footer from "./_components/Footer";
import Header from "./_components/Header"; import Header from "./_components/Header";
import { analyticsEnabled, requireExplicitConsent } from "./_utils/analytics/server"; import { analyticsEnabled } from "./_utils/analytics/server";
import fonts from "./fonts"; import fonts from "./fonts";
import "./_styles/globals.scss"; import "./_styles/globals.scss";
@@ -28,7 +28,7 @@ export default function RootLayout(props: PropsWithChildren)
} }
<body> <body>
{ analyticsEnabled() && { analyticsEnabled() &&
<CookieBanner askForConsent={ requireExplicitConsent() } /> <CookieBanner />
} }
<Header /> <Header />
+2 -2
View File
@@ -5,8 +5,8 @@ import cls from "./loading.module.scss";
const LoadingPage: React.FC = () => ( const LoadingPage: React.FC = () => (
<div className={ cls.root } role="alert" aria-label="Loading page"> <div className={ cls.root } role="alert" aria-label="Loading page">
<Image className={ cls.dark } src={ spinnerDark.src } alt={ spinnerDark.alt } priority unoptimized /> <Image className={ cls.dark } src={ spinnerDark.src } alt={ spinnerDark.alt } loading="eager" unoptimized />
<Image className={ cls.light } src={ spinnerLight.src } alt={ spinnerLight.alt } priority unoptimized /> <Image className={ cls.light } src={ spinnerLight.src } alt={ spinnerLight.alt } loading="eager" unoptimized />
</div> </div>
); );
+1 -1
View File
@@ -24,7 +24,7 @@ const NotFoundPage: React.FC = () => (
<main className={ `${cls.page} not-found` }> <main className={ `${cls.page} not-found` }>
<div className={ cls.illustration }> <div className={ cls.illustration }>
<h1>404...</h1> <h1>404...</h1>
<Image src={ notFoundImage.src } alt={ notFoundImage.alt } priority /> <Image src={ notFoundImage.src } alt={ notFoundImage.alt } loading="eager" />
</div> </div>
<div className={ cls.content }> <div className={ cls.content }>
<div className={ cls.caption }> <div className={ cls.caption }>
+8 -4
View File
@@ -5,18 +5,22 @@ import { PDFDocument, PDFPage } from "pdf-lib";
export async function GET(req: NextRequest): Promise<Response> export async function GET(req: NextRequest): Promise<Response>
{ {
const type: string | null = req.nextUrl.searchParams.get("type"); const type: string | null = req.nextUrl.searchParams.get("type");
const isAts: boolean = req.nextUrl.searchParams.get("ats") === "true";
const resume: Resume | undefined = findResume(type); const resume: Resume | undefined = findResume(type);
const url: string | undefined = isAts ? process.env.ATS_RESUME_URL : process.env.RESUME_URL;
if (!resume) if (!resume)
return error(400, "'type' parameter is invalid"); return error(400, "'type' parameter is invalid");
if (!process.env.RESUME_URL) const fileName: string = (isAts ? "(ATS) " + resume.fileName : resume.fileName).replaceAll("\"", "'");
if (!url)
return error(500, "Cannot find file location."); return error(500, "Cannot find file location.");
try try
{ {
// Fetch the PDF file from the remote URL using the fetch API // Fetch the PDF file from the remote URL using the fetch API
const response: Response = await fetch(process.env.RESUME_URL as string); const response: Response = await fetch(url);
if (!response.ok) if (!response.ok)
return error(500, "Failed to fetch PDF file"); return error(500, "Failed to fetch PDF file");
@@ -30,7 +34,7 @@ export async function GET(req: NextRequest): Promise<Response>
const [page, refs]: PDFPage[] = await newDoc.copyPages(srcDoc, [resume.pageIndex, srcDoc.getPageCount() - 1]); const [page, refs]: PDFPage[] = await newDoc.copyPages(srcDoc, [resume.pageIndex, srcDoc.getPageCount() - 1]);
newDoc.addPage(page); newDoc.addPage(page);
if (process.env.RESUME_HAS_REFS === "true") if (process.env.RESUME_HAS_REFS === "true" && isAts)
newDoc.addPage(refs); newDoc.addPage(refs);
// Serialize the new PDF document // Serialize the new PDF document
@@ -43,7 +47,7 @@ export async function GET(req: NextRequest): Promise<Response>
// Set response headers for PDF file // Set response headers for PDF file
headers: { headers: {
"Content-Type": "application/pdf", "Content-Type": "application/pdf",
"Content-Disposition": `inline; filename="${resume.fileName.replaceAll("\"", "'")}.pdf"` "Content-Disposition": `inline; filename="${fileName}.pdf"`
} }
} }
); );
+10
View File
@@ -20,6 +20,16 @@
grid-auto-columns: 1fr; grid-auto-columns: 1fr;
gap: $spacingXL; gap: $spacingXL;
.buttonContainer
{
@include flex(column);
}
.atsLink
{
@include body1();
}
.button .button
{ {
flex-flow: column; flex-flow: column;
+15 -8
View File
@@ -21,15 +21,22 @@ const ResumePage: React.FC = () => (
<h1>Who are you looking for?</h1> <h1>Who are you looking for?</h1>
<div className={ cls.resumeButtons }> <div className={ cls.resumeButtons }>
{ resumeList.map(i => { resumeList.map(i =>
<Button key={ i.key } className={ cls.button } <div key={ i.key } className={ cls.buttonContainer }>
href={ `/resume/download?type=${i.key}` } download <Button className={ cls.button }
icon={ href={ `/resume/download?type=${i.key}` } download
<Image className={ cls.image } src={ i.image.src } priority draggable={ false } icon={
aria-hidden alt={ i.image.alt } /> <Image className={ cls.image } src={ i.image.src } loading="eager" draggable={ false }
}> aria-hidden alt={ i.image.alt } />
}>
{ i.label } { i.label }
</Button> </Button>
{ process.env.ATS_RESUME_URL &&
<a className={ cls.atsLink } href={ `/resume/download?type=${i.key}&ats=true` } download>
ATS-compatible version
</a>
}
</div>
) } ) }
</div> </div>
+1 -1
View File
@@ -51,7 +51,7 @@ function generateCspPolicy(isDev)
"manifest-src": "'self'", "manifest-src": "'self'",
"media-src": "'self'", "media-src": "'self'",
"object-src": "'none'", "object-src": "'none'",
"script-src": "'self' https://*.clarity.ms https://c.bing.com https://*.cloudflare.com 'unsafe-inline'", "script-src": "'self' https://*.clarity.ms https://c.bing.com https://*.cloudflare.com https://*.cloudflareinsights.com 'unsafe-inline'",
"style-src": "'self' 'unsafe-inline'", "style-src": "'self' 'unsafe-inline'",
"worker-src": "'self'" "worker-src": "'self'"
}; };
+20 -22
View File
@@ -1,6 +1,6 @@
{ {
"name": "my-website", "name": "my-website",
"version": "1.0.0", "version": "0.0.0",
"private": true, "private": true,
"homepage": "https://xfox111.net", "homepage": "https://xfox111.net",
"license": "(MIT with exception)", "license": "(MIT with exception)",
@@ -21,30 +21,28 @@
"lint": "next lint" "lint": "next lint"
}, },
"dependencies": { "dependencies": {
"@fluentui/react-icons": "^2.0.298", "@fluentui/react-icons": "^2.0.311",
"next": "^15.3.1", "next": "^15.5.4",
"nodemailer": "^7.0.0", "nodemailer": "^7.0.6",
"pdf-lib": "^1.17.1", "pdf-lib": "^1.17.1",
"react": "^19.1.0", "react": "^19.2.0",
"react-dom": "^19.1.0", "react-dom": "^19.2.0",
"react-social-icons": "^6.24.0", "react-social-icons": "^6.25.0",
"react-turnstile": "^1.1.4", "react-turnstile": "^1.1.4",
"sharp": "^0.34.1", "sharp": "^0.34.4",
"zod": "^3.24.3" "zod": "^4.1.11"
}, },
"devDependencies": { "devDependencies": {
"@next/eslint-plugin-next": "^15.3.1", "@next/eslint-plugin-next": "^15.5.4",
"@types/node": "^22.15.3", "@types/node": "^24.6.2",
"@types/nodemailer": "^6.4.17", "@types/nodemailer": "^7.0.2",
"@types/react": "^19.1.2", "@types/react": "^19.2.0",
"@types/react-dom": "^19.1.3", "@types/react-dom": "^19.2.0",
"eslint": "^9.19.0", "eslint": "^9.32.0",
"eslint-config-next": "^15.3.1", "eslint-config-next": "^15.5.4",
"sass": "^1.87.0", "sass": "^1.93.2",
"typescript": "^5.8.3", "typescript": "~5.9.3",
"typescript-eslint": "^8.31.1" "typescript-eslint": "^8.45.0"
}, },
"resolutions": { "packageManager": "yarn@4.9.2"
"react": "^19.0.0"
}
} }
+7013 -3554
View File
File diff suppressed because it is too large Load Diff