Compare commits

...

1856 commits

Author SHA1 Message Date
allcontributors[bot]
c962f030e3 docs: update .all-contributorsrc [skip ci] 2023-12-07 08:15:30 +01:00
allcontributors[bot]
1f5701120f docs: update README.md [skip ci] 2023-12-07 08:15:30 +01:00
dependabot[bot]
249103f0a6 chore(deps-dev): bump @types/jest from 29.5.7 to 29.5.11
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 29.5.7 to 29.5.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-06 21:04:50 +01:00
dependabot[bot]
bb1f343ac9 chore(deps): bump react-tooltip from 5.22.0 to 5.25.0
Bumps [react-tooltip](https://github.com/ReactTooltip/react-tooltip) from 5.22.0 to 5.25.0.
- [Release notes](https://github.com/ReactTooltip/react-tooltip/releases)
- [Changelog](https://github.com/ReactTooltip/react-tooltip/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ReactTooltip/react-tooltip/compare/v5.22.0...v5.25.0)

---
updated-dependencies:
- dependency-name: react-tooltip
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-06 20:50:02 +01:00
Stavros
6b371de137 refactor(ui): change font to geist 2023-12-06 20:44:51 +01:00
Nicolas Meienberger
7133a2a2dc Merge branch 'master' into develop 2023-12-01 09:12:31 +01:00
Nicolas Meienberger
44d40b4a34 Merge branch 'hotfix/restart-failure' 2023-12-01 09:07:26 +01:00
Nicolas Meienberger
03e2604ca0 hotfix(docker): make postgres restart policy "unless-stopped" instead of "on-failure" 2023-12-01 08:44:53 +01:00
Nicolas Meienberger
ba3d860176 hotfix(install.sh): ask to re-run install script after docker is installed 2023-11-29 18:34:50 +01:00
Nicolas Meienberger
250e78450f chore: bump node to 20 in dockerfiles and actions 2023-11-29 08:41:35 +01:00
dependabot[bot]
d11299eeb8 chore(deps-dev): bump @types/cli-progress from 3.11.4 to 3.11.5
Bumps [@types/cli-progress](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/cli-progress) from 3.11.4 to 3.11.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/cli-progress)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-29 08:22:40 +01:00
dependabot[bot]
6cd7ca1a4e chore(deps): bump @tabler/icons-react from 2.40.0 to 2.42.0
Bumps [@tabler/icons-react](https://github.com/tabler/tabler-icons/tree/HEAD/packages/icons-react) from 2.40.0 to 2.42.0.
- [Release notes](https://github.com/tabler/tabler-icons/releases)
- [Commits](https://github.com/tabler/tabler-icons/commits/v2.42.0/packages/icons-react)

---
updated-dependencies:
- dependency-name: "@tabler/icons-react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-29 08:22:22 +01:00
dependabot[bot]
bb9f26b2b1 chore(deps-dev): bump @types/react from 18.2.34 to 18.2.39
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.34 to 18.2.39.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-29 08:22:09 +01:00
dependabot[bot]
30890bedd5 chore(deps-dev): bump eslint-config-next from 14.0.1 to 14.0.3
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 14.0.1 to 14.0.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/v14.0.3/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-29 08:21:58 +01:00
dependabot[bot]
3876e8ee55 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 6.9.1 to 6.13.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.13.1/packages/eslint-plugin)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-29 08:21:44 +01:00
Nicolas Meienberger
92d5a7b6a3 ci(release): make publish dependant on all builds 2023-11-28 22:31:44 +01:00
Nicolas Meienberger
ca3dc64fd4 ci(release): fix dependency on first job 2023-11-28 22:30:30 +01:00
Nicolas Meienberger
59dbe672c8
Merge pull request #960 from runtipi/release/2.2.0
Release 2.2.0
2023-11-28 22:29:01 +01:00
Nicolas Meienberger
42349c5a27 fix(worker): no need to mount host 2023-11-28 22:02:52 +01:00
Nicolas Meienberger
8104a9f3f7 ci(e2e): update upgrade before running install script 2023-11-28 19:12:40 +01:00
Nicolas Meienberger
83e96cfd31 ci(releases): refactor to use non-outdated actions 2023-11-28 19:12:35 +01:00
Nicolas Meienberger
4d69fc4cff ci(e2e): update upgrade before running install script 2023-11-28 18:49:47 +01:00
Nicolas Meienberger
37c551da1f ci(releases): refactor to use non-outdated actions 2023-11-28 13:29:02 +01:00
Nicolas Meienberger
852128f551 fix(worker): default to disk 0 if /host/root not found
In order to avoid displaying 0 disk space on some systems, we default to the first disk found
2023-11-28 08:26:43 +01:00
Nicolas Meienberger
bffa31c0b7 fix(worker): default to disk 0 if /host/root not found
In order to avoid displaying 0 disk space on some systems, we default to the first disk found
2023-11-28 08:18:48 +01:00
Nicolas Meienberger
0f129a7809 Merge branch 'steveiliop56-develop' into develop 2023-11-27 21:07:51 +01:00
Nicolas Meienberger
79b448adf3 fix(worker): apply file permissions on start 2023-11-27 21:06:14 +01:00
Nicolas Meienberger
dffa3ed670 ci(beta): build arm64 images 2023-11-27 21:06:14 +01:00
allcontributors[bot]
ef1ac3633b docs: update .all-contributorsrc [skip ci] 2023-11-27 21:06:14 +01:00
allcontributors[bot]
e520afdeff docs: update README.md [skip ci] 2023-11-27 21:06:14 +01:00
Olivier Garcia
52499cb0bd feat(support-repoURL-with-branch-syntax): If a appstore repo URL contains a branch, checkout that branch 2023-11-27 21:06:14 +01:00
Nicolas Meienberger
cfeb9d4e19 fix(app-status): rely on server status after update 2023-11-27 21:06:14 +01:00
Nicolas Meienberger
a1515ac7b8 ci(beta): adapt workflow with new worker build 2023-11-27 21:06:14 +01:00
Nicolas Meienberger
396d08dde0 feat(ThemeProvider): add some magic 2023-11-27 21:06:14 +01:00
Nicolas Meienberger
3c7dcfeb5e ci(release): replace butlerlogic/action-autotag with Klemensas/action-autotag 2023-11-27 21:06:14 +01:00
dependabot[bot]
9b5bcc7147 chore(deps-dev): bump @types/web-push from 3.6.2 to 3.6.3
Bumps [@types/web-push](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/web-push) from 3.6.2 to 3.6.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/web-push)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-27 21:05:46 +01:00
cchalopin
5c276bd235 feat(update app): fix tests 2023-11-27 21:05:34 +01:00
cchalopin
c1723bb36b feat(update app): change pnpm 2023-11-27 21:05:34 +01:00
cchalopin
31c3de78b8 feat(update app): back to prev status before update 2023-11-27 21:05:12 +01:00
Nicolas Meienberger
197f6e3998 fix(worker): ensure state folder is rwx for non-root users 2023-11-27 21:04:48 +01:00
Nicolas Meienberger
abff9a4d5a fix(worker): apply file permissions on start 2023-11-27 09:41:42 +01:00
Nicolas Meienberger
91a361add1 ci(beta): build arm64 images 2023-11-27 09:41:37 +01:00
allcontributors[bot]
68b3e4e8bd docs: update .all-contributorsrc [skip ci] 2023-11-27 08:21:57 +01:00
allcontributors[bot]
f893cf482d docs: update README.md [skip ci] 2023-11-27 08:21:57 +01:00
Olivier Garcia
88878fccda feat(support-repoURL-with-branch-syntax): If a appstore repo URL contains a branch, checkout that branch 2023-11-27 08:19:22 +01:00
Nicolas Meienberger
64325150d5 fix(app-status): rely on server status after update 2023-11-27 08:10:29 +01:00
Nicolas Meienberger
203db0160a Merge branch 'cchalop1-feat/restart-app-after-update' into develop 2023-11-27 07:42:43 +01:00
Nicolas Meienberger
0261cf577c fix(worker): ensure state folder is rwx for non-root users 2023-11-27 07:42:36 +01:00
Nicolas Meienberger
166d9b49f2 ci(beta): adapt workflow with new worker build 2023-11-27 07:42:36 +01:00
Nicolas Meienberger
213b9ed482 feat(ThemeProvider): add some magic 2023-11-27 07:42:36 +01:00
Nicolas Meienberger
de3141e1f8 ci(release): replace butlerlogic/action-autotag with Klemensas/action-autotag 2023-11-27 07:42:36 +01:00
dependabot[bot]
6ec79ac1e8 chore(deps-dev): bump @types/web-push from 3.6.2 to 3.6.3
Bumps [@types/web-push](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/web-push) from 3.6.2 to 3.6.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/web-push)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-27 07:42:36 +01:00
Nicolas Meienberger
5dbc996b92 refactor(docker): use non-root user in dashboard image 2023-11-27 07:42:36 +01:00
Nicolas Meienberger
f76af65212 fix(worker): ensure state folder is rwx for non-root users 2023-11-27 07:42:16 +01:00
cchalopin
1357efa0e3 feat(update app): fix tests 2023-11-26 15:17:27 +01:00
cchalopin
4da6193ae9 feat(update app): change pnpm 2023-11-26 15:12:09 +01:00
cchalopin
f61e6b2dae feat(update app): back to prev status before update 2023-11-26 15:03:21 +01:00
Stavros
230ae0a412 fix(worker): remount / to /host/root 2023-11-26 11:17:11 +02:00
Nicolas Meienberger
7c967271d7 ci(beta): adapt workflow with new worker build 2023-11-26 09:30:19 +01:00
Nicolas Meienberger
3d85051915 feat(ThemeProvider): add some magic 2023-11-26 09:13:06 +01:00
Nicolas Meienberger
467fc070d9 ci(release): replace butlerlogic/action-autotag with Klemensas/action-autotag 2023-11-25 11:43:18 +01:00
dependabot[bot]
14b4331d1d chore(deps-dev): bump @types/web-push from 3.6.2 to 3.6.3
Bumps [@types/web-push](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/web-push) from 3.6.2 to 3.6.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/web-push)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-25 11:27:47 +01:00
Nicolas Meienberger
dc427acced refactor(docker): use non-root user in dashboard image 2023-11-25 11:24:08 +01:00
Stavros
769f671749 refactor(worker): no need to mount host 2023-11-23 07:47:22 +01:00
Stavros
fb861e26be fix(worker): display disk usage right 2023-11-23 07:47:22 +01:00
dependabot[bot]
ab71d75fd1 chore(deps-dev): bump knip from 2.39.0 to 2.41.3
Bumps [knip](https://github.com/webpro/knip) from 2.39.0 to 2.41.3.
- [Release notes](https://github.com/webpro/knip/releases)
- [Changelog](https://github.com/webpro/knip/blob/main/docs/release-notes-v2.md)
- [Commits](https://github.com/webpro/knip/compare/2.39.0...2.41.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 19:41:54 +01:00
dependabot[bot]
8743422741 chore(deps-dev): bump @types/fs-extra from 11.0.3 to 11.0.4
Bumps [@types/fs-extra](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/fs-extra) from 11.0.3 to 11.0.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/fs-extra)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 19:41:42 +01:00
Nicolas Meienberger
47e19b967f fix(docker-compose): mount host at /mnt/host 2023-11-20 19:38:30 +01:00
Nicolas Meienberger
f43bec37bb Merge branch 'steveiliop56-disk-usage-fix' into develop 2023-11-20 19:33:06 +01:00
Nicolas Meienberger
0fe29a9a80 Merge branch 'disk-usage-fix' of https://github.com/steveiliop56/runtipi into steveiliop56-disk-usage-fix 2023-11-20 19:32:49 +01:00
Stavros
0f1c7d4ee5 fix(app-update): change confirmation text 2023-11-20 19:28:28 +01:00
Stavros
bd336c652e fix(worker): display disk usage right 2023-11-20 19:54:11 +02:00
dependabot[bot]
c1ac3060f2 chore(deps): bump argon2 from 0.31.1 to 0.31.2
Bumps [argon2](https://github.com/ranisalt/node-argon2) from 0.31.1 to 0.31.2.
- [Release notes](https://github.com/ranisalt/node-argon2/releases)
- [Commits](https://github.com/ranisalt/node-argon2/compare/v0.31.1...v0.31.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 18:53:29 +01:00
dependabot[bot]
bbe0c961cc chore(deps): bump actions/github-script from 6 to 7
Bumps [actions/github-script](https://github.com/actions/github-script) from 6 to 7.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 18:53:02 +01:00
Nicolas Meienberger
c18b00e78b refactor(docker-compose): change container to restart policy "unless-stopped" 2023-11-20 18:52:04 +01:00
Nicolas Meienberger
60e28fd6b2 refactor: download docker binary instead of installing with apk to reduce size of worker image 2023-11-20 18:52:04 +01:00
Stavros
2ef93c50eb fix(app): remove the file extension from folder 2023-11-20 18:43:33 +01:00
Nicolas Meienberger
ef541f1d77 fix(config): always use internal port 5432 for postgres in non-test mode 2023-11-19 17:35:53 +01:00
allcontributors[bot]
3dd7ef7cdd docs: update .all-contributorsrc [skip ci] 2023-11-18 10:36:11 +01:00
allcontributors[bot]
922b7722f1 docs: update README.md [skip ci] 2023-11-18 10:36:11 +01:00
allcontributors[bot]
ce0bc75046 docs: update .all-contributorsrc [skip ci] 2023-11-18 10:35:32 +01:00
allcontributors[bot]
7d7cee3405 docs: update README.md [skip ci] 2023-11-18 10:35:32 +01:00
Nicolas Meienberger
56acfbbb64 Merge branch 'cchalop1-feat/reset-app' into develop 2023-11-18 10:25:27 +01:00
Nicolas Meienberger
e6d838f3d1 refactor(reset-app): simplify status management 2023-11-18 10:25:15 +01:00
cchalopin
3bfb015b13 feat(reset-app): fix reset wording 2023-11-18 10:25:15 +01:00
cchalopin
dd32bd631f feat(reset-app): adding a reset app from setting modal 2023-11-18 10:25:15 +01:00
Nicolas Meienberger
8bfafac7bd fix: reload env variables before loading config
fix: read env
2023-11-16 20:49:27 +01:00
Nicolas Meienberger
e0d52e79c1 fix(cli): ensure user is allowed to run docker commands before starting 2023-11-16 20:49:27 +01:00
Nicolas Meienberger
2dcb358392 chore: bump version to 2.2.0 2023-11-16 20:49:27 +01:00
Nicolas Meienberger
9efacb5797 ci(alpha): add image build for worker 2023-11-16 20:49:27 +01:00
Nicolas Meienberger
8e19c8b0e8 refactor: remove restart option from UI 2023-11-16 20:49:27 +01:00
Nicolas Meienberger
bdfb019df2 fix(worker): docker not throwing an error when failing to start 2023-11-16 20:49:27 +01:00
Nicolas Meienberger
af8509aacc test(worker): implement test suites with vitest 2023-11-16 20:49:27 +01:00
Nicolas Meienberger
55e0cd155e refactor(shared): factorize common helpers in shared package 2023-11-16 20:49:27 +01:00
Nicolas Meienberger
417785ee24 refactor(worker): move executors from cli to worker 2023-11-16 20:49:27 +01:00
Nicolas Meienberger
5f18ff16de feat: create base worker package 2023-11-16 20:49:27 +01:00
Stavros
09461527ee
feat(cli): set custom postgres port in config.json (#918)
* feat(cli): set custom postgres port in config.json

* fix(cli): small misspelling error.

* fix(cli): misspelling error again

Co-authored-by: Nicolas Meienberger <47644445+meienberger@users.noreply.github.com>

* fix(cli): add required env vard to schemas.

* fix(cli): add default port to schema

* fix(cli): add requested changes

* fix(cli): move posgresPort to pick

---------

Co-authored-by: Nicolas Meienberger <47644445+meienberger@users.noreply.github.com>
2023-11-15 21:16:10 +01:00
Nicolas Meienberger
ff6c90849e ci: enable ci runs on pull_request 2023-11-14 19:24:56 +01:00
Nicolas Meienberger
d032bbdc5f chore(cli): remove duplicate stopping app messages 2023-11-07 22:44:52 +01:00
Nicolas Meienberger
df59d21ce7
Merge pull request #879 from runtipi/release/2.1.0
Release 2.1.0
2023-11-07 22:14:38 +01:00
Nicolas Meienberger
f38c3416a4 chore(cli): remove duplicate starting app message 2023-11-07 21:58:49 +01:00
dependabot[bot]
ff9bf2760b chore(deps-dev): bump @typescript-eslint/parser from 6.9.1 to 6.10.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.9.1 to 6.10.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.10.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-07 07:29:45 +01:00
dependabot[bot]
87c891d760 chore(deps): bump react-select from 5.7.7 to 5.8.0
Bumps [react-select](https://github.com/JedWatson/react-select) from 5.7.7 to 5.8.0.
- [Release notes](https://github.com/JedWatson/react-select/releases)
- [Changelog](https://github.com/JedWatson/react-select/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/JedWatson/react-select/compare/react-select@5.7.7...react-select@5.8.0)

---
updated-dependencies:
- dependency-name: react-select
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-07 07:29:00 +01:00
dependabot[bot]
566f4f0d1e chore(deps): bump react-hook-form from 7.47.0 to 7.48.2
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.47.0 to 7.48.2.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.47.0...v7.48.2)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-07 07:28:31 +01:00
dependabot[bot]
e81e26fb07 chore(deps): bump bullmq from 4.12.7 to 4.13.0
Bumps [bullmq](https://github.com/taskforcesh/bullmq) from 4.12.7 to 4.13.0.
- [Release notes](https://github.com/taskforcesh/bullmq/releases)
- [Commits](https://github.com/taskforcesh/bullmq/compare/v4.12.7...v4.13.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-07 07:27:57 +01:00
Nicolas Meienberger
bb7bd60be0 Merge branch 'master' of github.com:runtipi/runtipi into develop 2023-11-06 07:44:56 +01:00
Nicolas Meienberger
d823eba976 ci(release): add latest tag 2023-11-06 07:25:46 +01:00
Nicolas Meienberger
45e71539db ci: move all workflow to use ghcr.io registry 2023-11-06 07:25:46 +01:00
Nicolas Meienberger
47fb287bd5 ci(alpha): move from docker hub to ghcr.io registry 2023-11-06 07:25:46 +01:00
dependabot[bot]
871d72e3b4 chore(deps-dev): bump @types/react from 18.2.33 to 18.2.34
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.33 to 18.2.34.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-03 22:48:35 +01:00
dependabot[bot]
fa35eb3509 chore(deps): bump next-intl from 2.21.0 to 2.22.1
Bumps [next-intl](https://github.com/amannn/next-intl) from 2.21.0 to 2.22.1.
- [Changelog](https://github.com/amannn/next-intl/blob/main/CHANGELOG.md)
- [Commits](https://github.com/amannn/next-intl/compare/v2.21.0...v2.22.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-03 22:14:13 +01:00
dependabot[bot]
275b60c363 chore(deps-dev): bump eslint-config-next from 14.0.0 to 14.0.1
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 14.0.0 to 14.0.1.
- [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/v14.0.1/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-03 22:13:46 +01:00
dependabot[bot]
1333414ca1 chore(deps-dev): bump @vitejs/plugin-react from 4.1.0 to 4.1.1
Bumps [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/v4.1.1/packages/plugin-react)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-03 22:13:01 +01:00
dependabot[bot]
92238dd8c9 chore(deps-dev): bump eslint-plugin-jsx-a11y from 6.7.1 to 6.8.0
Bumps [eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y) from 6.7.1 to 6.8.0.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/compare/v6.7.1...v6.8.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsx-a11y
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-03 22:12:46 +01:00
dependabot[bot]
5b743f2d0a chore(deps): bump react-tooltip from 5.21.6 to 5.22.0
Bumps [react-tooltip](https://github.com/ReactTooltip/react-tooltip) from 5.21.6 to 5.22.0.
- [Release notes](https://github.com/ReactTooltip/react-tooltip/releases)
- [Changelog](https://github.com/ReactTooltip/react-tooltip/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ReactTooltip/react-tooltip/compare/v5.21.6...v5.22.0)

---
updated-dependencies:
- dependency-name: react-tooltip
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-03 22:12:33 +01:00
dependabot[bot]
c18a1d87e1 chore(deps-dev): bump knip from 2.38.4 to 2.39.0
Bumps [knip](https://github.com/webpro/knip) from 2.38.4 to 2.39.0.
- [Release notes](https://github.com/webpro/knip/releases)
- [Changelog](https://github.com/webpro/knip/blob/main/docs/release-notes-v2.md)
- [Commits](https://github.com/webpro/knip/compare/2.38.4...2.39.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-03 22:11:55 +01:00
dependabot[bot]
15130cbe5a chore(deps): bump zustand from 4.4.4 to 4.4.6
Bumps [zustand](https://github.com/pmndrs/zustand) from 4.4.4 to 4.4.6.
- [Release notes](https://github.com/pmndrs/zustand/releases)
- [Commits](https://github.com/pmndrs/zustand/compare/v4.4.4...v4.4.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-03 22:11:35 +01:00
Nicolas Meienberger
1296c6c3ce test(e2e): add suite for changing email 2023-11-03 21:49:46 +01:00
Nicolas Meienberger
49c6a8f9b7 feat(client): add form for change email in settings page 2023-11-03 21:49:46 +01:00
Nicolas Meienberger
955b4ccc18 feat(auth.service): add service and action for update email 2023-11-03 21:49:46 +01:00
Nicolas Meienberger
8c0956aa56 chore(deps): bump next to v14 2023-11-03 21:49:46 +01:00
Nicolas Meienberger
cea9697b6d fix: downgrade log-update to version 5.0.1 2023-11-02 20:21:16 +01:00
Nicolas Meienberger
677fb12ad4 chore: bump version to 2.1.0 2023-11-02 19:18:59 +01:00
dependabot[bot]
e6ffa7df12 chore(deps-dev): bump @typescript-eslint/parser from 6.9.0 to 6.9.1
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.9.0 to 6.9.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.9.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-02 19:14:41 +01:00
dependabot[bot]
eccc1decad chore(deps-dev): bump @types/node from 20.8.9 to 20.8.10
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.8.9 to 20.8.10.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-02 19:14:25 +01:00
dependabot[bot]
822c979458 chore(deps): bump next-safe-action from 4.0.4 to 4.0.5
Bumps [next-safe-action](https://github.com/TheEdoRan/next-safe-action) from 4.0.4 to 4.0.5.
- [Release notes](https://github.com/TheEdoRan/next-safe-action/releases)
- [Changelog](https://github.com/TheEdoRan/next-safe-action/blob/main/.releaserc.json)
- [Commits](https://github.com/TheEdoRan/next-safe-action/compare/v4.0.4...v4.0.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-02 19:14:15 +01:00
Nicolas Meienberger
79153b6b78 Update install.sh 2023-11-02 19:12:59 +01:00
Nicolas Meienberger
0eb7218063 fix(markdown): remove custom image component 2023-11-02 19:10:56 +01:00
dependabot[bot]
a2d9610c22 chore(deps): bump bullmq from 4.12.6 to 4.12.7
Bumps [bullmq](https://github.com/taskforcesh/bullmq) from 4.12.6 to 4.12.7.
- [Release notes](https://github.com/taskforcesh/bullmq/releases)
- [Commits](https://github.com/taskforcesh/bullmq/compare/v4.12.6...v4.12.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-02 19:07:59 +01:00
dependabot[bot]
c4d25792ad chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 6.9.0 to 6.9.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.9.1/packages/eslint-plugin)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-02 19:06:27 +01:00
dependabot[bot]
9c4597da8e chore(deps-dev): bump @types/jest from 29.5.6 to 29.5.7
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 29.5.6 to 29.5.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-02 19:05:57 +01:00
dependabot[bot]
1d6228a96a chore(deps): bump log-update from 5.0.1 to 6.0.0
Bumps [log-update](https://github.com/sindresorhus/log-update) from 5.0.1 to 6.0.0.
- [Release notes](https://github.com/sindresorhus/log-update/releases)
- [Commits](https://github.com/sindresorhus/log-update/compare/v5.0.1...v6.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-02 19:05:29 +01:00
dependabot[bot]
8af4028027 chore(deps): bump next-client-cookies from 1.0.5 to 1.0.6
Bumps [next-client-cookies](https://github.com/moshest/next-client-cookies) from 1.0.5 to 1.0.6.
- [Commits](https://github.com/moshest/next-client-cookies/compare/v1.0.5...v1.0.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-02 19:05:15 +01:00
Nicolas Meienberger
3ddcf3732e test(e2e): add test suite for guest dashboard 2023-11-02 19:04:57 +01:00
Nicolas Meienberger
ab3dcabbf9 feat: create new page for guest dashboard 2023-11-02 19:04:57 +01:00
Nicolas Meienberger
c0723257e6 feat(settings): add enable guest dashboard toggle 2023-11-02 19:04:57 +01:00
Nicolas Meienberger
5830d16382 feat(apps): add "enable on guest dashboard option" 2023-11-02 19:04:57 +01:00
Nicolas Meienberger
fd6c5afe2c chore(cli): add guest dashboard env variable 2023-11-02 19:04:57 +01:00
Nicolas Meienberger
9b9541cee7 chore: create migration to add is_visible_on_guest_dahsboard field on app table 2023-11-02 19:04:57 +01:00
Nicolas Meienberger
bf8f635680
Update install.sh 2023-11-02 18:01:09 +01:00
dependabot[bot]
9688e059f3 chore(deps): bump @tabler/icons-react from 2.39.0 to 2.40.0
Bumps [@tabler/icons-react](https://github.com/tabler/tabler-icons/tree/HEAD/packages/icons-react) from 2.39.0 to 2.40.0.
- [Release notes](https://github.com/tabler/tabler-icons/releases)
- [Commits](https://github.com/tabler/tabler-icons/commits/v2.40.0/packages/icons-react)

---
updated-dependencies:
- dependency-name: "@tabler/icons-react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-28 12:15:38 +02:00
dependabot[bot]
6c0f7548f7 chore(deps): bump axios from 1.5.1 to 1.6.0
Bumps [axios](https://github.com/axios/axios) from 1.5.1 to 1.6.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.5.1...v1.6.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-28 12:15:11 +02:00
dependabot[bot]
e8b362914a chore(deps-dev): bump knip from 2.38.1 to 2.38.4
Bumps [knip](https://github.com/webpro/knip) from 2.38.1 to 2.38.4.
- [Release notes](https://github.com/webpro/knip/releases)
- [Changelog](https://github.com/webpro/knip/blob/main/docs/release-notes-v2.md)
- [Commits](https://github.com/webpro/knip/compare/2.38.1...2.38.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-28 12:14:43 +02:00
dependabot[bot]
a4af320fba chore(deps-dev): bump eslint-plugin-jest from 27.5.0 to 27.6.0
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 27.5.0 to 27.6.0.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v27.5.0...v27.6.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-28 12:14:19 +02:00
dependabot[bot]
8b221dcf0a chore(deps): bump systeminformation from 5.21.13 to 5.21.15
Bumps [systeminformation](https://github.com/sebhildebrandt/systeminformation) from 5.21.13 to 5.21.15.
- [Changelog](https://github.com/sebhildebrandt/systeminformation/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sebhildebrandt/systeminformation/compare/v5.21.13...v5.21.15)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-28 12:13:48 +02:00
dependabot[bot]
5b7615a8ee chore(deps-dev): bump eslint from 8.51.0 to 8.52.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.51.0 to 8.52.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.51.0...v8.52.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 12:26:54 +02:00
dependabot[bot]
e06e946376 chore(deps-dev): bump @types/react from 18.2.31 to 18.2.33
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.31 to 18.2.33.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 12:26:38 +02:00
dependabot[bot]
a9d8f2e35f chore(deps-dev): bump eslint-config-next from 13.5.6 to 14.0.0
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.5.6 to 14.0.0.
- [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/v14.0.0/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 10:10:49 +02:00
dependabot[bot]
d93bf2cb7c chore(deps-dev): bump @types/semver from 7.5.3 to 7.5.4
Bumps [@types/semver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/semver) from 7.5.3 to 7.5.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/semver)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 10:10:03 +02:00
dependabot[bot]
01062d0041 chore(deps-dev): bump @types/node from 20.8.4 to 20.8.9
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.8.4 to 20.8.9.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 10:09:20 +02:00
dependabot[bot]
28811c5429 chore(deps-dev): bump tsx from 3.13.0 to 3.14.0
Bumps [tsx](https://github.com/esbuild-kit/tsx) from 3.13.0 to 3.14.0.
- [Release notes](https://github.com/esbuild-kit/tsx/releases)
- [Changelog](https://github.com/esbuild-kit/tsx/blob/develop/release.config.cjs)
- [Commits](https://github.com/esbuild-kit/tsx/compare/v3.13.0...v3.14.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 09:58:00 +02:00
dependabot[bot]
bb887f284e chore(deps): bump bullmq from 4.12.5 to 4.12.6
Bumps [bullmq](https://github.com/taskforcesh/bullmq) from 4.12.5 to 4.12.6.
- [Release notes](https://github.com/taskforcesh/bullmq/releases)
- [Commits](https://github.com/taskforcesh/bullmq/compare/v4.12.5...v4.12.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 09:57:24 +02:00
dependabot[bot]
0fe2ab13ab chore(deps): bump sass from 1.69.4 to 1.69.5
Bumps [sass](https://github.com/sass/dart-sass) from 1.69.4 to 1.69.5.
- [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.69.4...1.69.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 09:57:09 +02:00
dependabot[bot]
bcb1b37110 chore(deps-dev): bump eslint-plugin-jest from 27.4.3 to 27.5.0
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 27.4.3 to 27.5.0.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v27.4.3...v27.5.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 09:56:50 +02:00
Nicolas Meienberger
6341140e9d refactor: wrap InstallForm in ScrollArea component 2023-10-26 09:00:39 +02:00
Nicolas Meienberger
ac6f54312d feat(ui): create ScrollArea component 2023-10-26 09:00:39 +02:00
Nicolas Meienberger
96a00de418 chore(packages): install @radix-ui/react-scroll-area 2023-10-26 09:00:39 +02:00
Nicolas Meienberger
2af1239c67 fix(app-details): align description text left when md or larger 2023-10-26 08:02:37 +02:00
dependabot[bot]
d2c6909959 chore(deps-dev): bump @types/validator from 13.11.2 to 13.11.5
Bumps [@types/validator](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/validator) from 13.11.2 to 13.11.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/validator)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-26 07:27:23 +02:00
dependabot[bot]
a51e26e0dc chore(deps): bump next-safe-action from 4.0.1 to 4.0.4
Bumps [next-safe-action](https://github.com/TheEdoRan/next-safe-action) from 4.0.1 to 4.0.4.
- [Release notes](https://github.com/TheEdoRan/next-safe-action/releases)
- [Commits](https://github.com/TheEdoRan/next-safe-action/compare/v4.0.1...v4.0.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-26 07:27:11 +02:00
dependabot[bot]
3a41c0c9c0 chore(deps): bump commander from 11.0.0 to 11.1.0
Bumps [commander](https://github.com/tj/commander.js) from 11.0.0 to 11.1.0.
- [Release notes](https://github.com/tj/commander.js/releases)
- [Changelog](https://github.com/tj/commander.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tj/commander.js/compare/v11.0.0...v11.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-26 07:26:36 +02:00
dependabot[bot]
17f13690a5 chore(deps-dev): bump knip from 2.33.1 to 2.38.1
Bumps [knip](https://github.com/webpro/knip) from 2.33.1 to 2.38.1.
- [Release notes](https://github.com/webpro/knip/releases)
- [Changelog](https://github.com/webpro/knip/blob/main/docs/release-notes-v2.md)
- [Commits](https://github.com/webpro/knip/compare/2.33.1...2.38.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-26 07:25:27 +02:00
dependabot[bot]
63869cc1f3 chore(deps): bump react-tooltip from 5.21.5 to 5.21.6
Bumps [react-tooltip](https://github.com/ReactTooltip/react-tooltip) from 5.21.5 to 5.21.6.
- [Release notes](https://github.com/ReactTooltip/react-tooltip/releases)
- [Changelog](https://github.com/ReactTooltip/react-tooltip/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ReactTooltip/react-tooltip/compare/v5.21.5...v5.21.6)

---
updated-dependencies:
- dependency-name: react-tooltip
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-26 07:25:09 +02:00
dependabot[bot]
d5a313fc03 chore(deps-dev): bump @types/web-push from 3.6.1 to 3.6.2
Bumps [@types/web-push](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/web-push) from 3.6.1 to 3.6.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/web-push)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-26 07:24:45 +02:00
dependabot[bot]
36a683a36e chore(deps): bump bullmq from 4.12.3 to 4.12.5
Bumps [bullmq](https://github.com/taskforcesh/bullmq) from 4.12.3 to 4.12.5.
- [Release notes](https://github.com/taskforcesh/bullmq/releases)
- [Commits](https://github.com/taskforcesh/bullmq/compare/v4.12.3...v4.12.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-26 07:24:32 +02:00
dependabot[bot]
9a95a980ad chore(deps-dev): bump @types/fs-extra from 11.0.2 to 11.0.3
Bumps [@types/fs-extra](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/fs-extra) from 11.0.2 to 11.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/fs-extra)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-26 07:24:09 +02:00
Nicolas Meienberger
5be75ad98b refactor: move 404 page to RSC 2023-10-25 18:49:45 +02:00
dependabot[bot]
f38b66c6e8 chore(deps-dev): bump @typescript-eslint/parser from 6.8.0 to 6.9.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.8.0 to 6.9.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.9.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-25 18:39:31 +02:00
Nicolas Meienberger
f39232e1a7 refactor(cli): add spinner text when stopping and starting apps 2023-10-25 18:36:11 +02:00
Nicolas Meienberger
435ff66522 refactor(cli): use flush method for cleanLogs 2023-10-25 18:36:11 +02:00
Nicolas Meienberger
ef0298665c refactor(cli): improve help message for app commands 2023-10-25 18:36:11 +02:00
dependabot[bot]
302f819d02 chore(deps-dev): bump eslint-config-next from 13.5.4 to 13.5.6
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.5.4 to 13.5.6.
- [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/v13.5.6/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 23:08:20 +02:00
dependabot[bot]
3ebb345373 chore(deps): bump next from 13.5.5 to 13.5.6
Bumps [next](https://github.com/vercel/next.js) from 13.5.5 to 13.5.6.
- [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/v13.5.5...v13.5.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 23:07:51 +02:00
dependabot[bot]
d76a1fe8af chore(deps-dev): bump @babel/core from 7.23.0 to 7.23.2
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.23.0 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/@babel/core@7.23.2/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 23:00:17 +02:00
dependabot[bot]
82b9cfa96d chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 6.8.0 to 6.9.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.9.0/packages/eslint-plugin)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 22:59:52 +02:00
dependabot[bot]
9e1137da9e chore(deps-dev): bump @playwright/test from 1.38.1 to 1.39.0
Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.38.1 to 1.39.0.
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](https://github.com/microsoft/playwright/compare/v1.38.1...v1.39.0)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 22:59:35 +02:00
dependabot[bot]
3388fdaf88 chore(deps-dev): bump @testing-library/jest-dom from 6.1.3 to 6.1.4
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.1.3 to 6.1.4.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v6.1.3...v6.1.4)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 22:58:40 +02:00
dependabot[bot]
2cdc7e2d5b chore(deps-dev): bump @types/cli-progress from 3.11.3 to 3.11.4
Bumps [@types/cli-progress](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/cli-progress) from 3.11.3 to 3.11.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/cli-progress)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 22:58:14 +02:00
dependabot[bot]
db1e544f12 chore(deps): bump zustand from 4.4.3 to 4.4.4
Bumps [zustand](https://github.com/pmndrs/zustand) from 4.4.3 to 4.4.4.
- [Release notes](https://github.com/pmndrs/zustand/releases)
- [Commits](https://github.com/pmndrs/zustand/compare/v4.4.3...v4.4.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 22:33:58 +02:00
dependabot[bot]
0888e4a873 chore(deps-dev): bump @faker-js/faker from 8.1.0 to 8.2.0
Bumps [@faker-js/faker](https://github.com/faker-js/faker) from 8.1.0 to 8.2.0.
- [Release notes](https://github.com/faker-js/faker/releases)
- [Changelog](https://github.com/faker-js/faker/blob/next/CHANGELOG.md)
- [Commits](https://github.com/faker-js/faker/compare/v8.1.0...v8.2.0)

---
updated-dependencies:
- dependency-name: "@faker-js/faker"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 22:33:35 +02:00
Nicolas Meienberger
9612ff3336 fix(app-store): show a text when there is no filtering result 2023-10-24 21:27:08 +02:00
dependabot[bot]
8ab15acf84 chore(deps-dev): bump eslint-plugin-import from 2.28.1 to 2.29.0
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.28.1 to 2.29.0.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.28.1...v2.29.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-import
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 20:53:47 +02:00
dependabot[bot]
1f4b215497 chore(deps-dev): bump @types/pg from 8.10.5 to 8.10.7
Bumps [@types/pg](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/pg) from 8.10.5 to 8.10.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/pg)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 20:53:36 +02:00
Nicolas Meienberger
1925b0cb75 chore(cli): flush all logs when app is starting 2023-10-24 19:43:33 +02:00
dependabot[bot]
04b9c9d5e0 chore(deps-dev): bump @types/lodash.merge from 4.6.7 to 4.6.8
Bumps [@types/lodash.merge](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash.merge) from 4.6.7 to 4.6.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash.merge)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 19:41:50 +02:00
dependabot[bot]
8dd4c78641 chore(deps): bump actions/setup-node from 3 to 4
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 19:41:33 +02:00
dependabot[bot]
89fe3156a5 chore(deps-dev): bump vite from 4.4.11 to 4.5.0
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.4.11 to 4.5.0.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.5.0/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.5.0/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 19:40:50 +02:00
dependabot[bot]
cb77164ae6 chore(deps-dev): bump @types/uuid from 9.0.5 to 9.0.6
Bumps [@types/uuid](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/uuid) from 9.0.5 to 9.0.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/uuid)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 19:40:19 +02:00
dependabot[bot]
ee92eade81 chore(deps-dev): bump @types/react-dom from 18.2.13 to 18.2.14
Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 18.2.13 to 18.2.14.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 19:40:06 +02:00
dependabot[bot]
62b91f5d91 chore(deps): bump next-intl from 2.20.2 to 2.21.0
Bumps [next-intl](https://github.com/amannn/next-intl) from 2.20.2 to 2.21.0.
- [Changelog](https://github.com/amannn/next-intl/blob/main/CHANGELOG.md)
- [Commits](https://github.com/amannn/next-intl/compare/v2.20.2...v2.21.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 19:39:33 +02:00
dependabot[bot]
8919700245 chore(deps): bump systeminformation from 5.21.11 to 5.21.13
Bumps [systeminformation](https://github.com/sebhildebrandt/systeminformation) from 5.21.11 to 5.21.13.
- [Changelog](https://github.com/sebhildebrandt/systeminformation/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sebhildebrandt/systeminformation/compare/v5.21.11...v5.21.13)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 19:39:18 +02:00
dependabot[bot]
7f9346ff80 chore(deps-dev): bump eslint-plugin-jest from 27.4.2 to 27.4.3
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 27.4.2 to 27.4.3.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v27.4.2...v27.4.3)

---
updated-dependencies:
- dependency-name: eslint-plugin-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 19:39:03 +02:00
dependabot[bot]
ed127b1735 chore(deps): bump docker/login-action from 2 to 3
Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 19:38:23 +02:00
dependabot[bot]
92e661890e chore(deps): bump SimenB/github-actions-cpu-cores from 1 to 2
Bumps [SimenB/github-actions-cpu-cores](https://github.com/simenb/github-actions-cpu-cores) from 1 to 2.
- [Release notes](https://github.com/simenb/github-actions-cpu-cores/releases)
- [Commits](https://github.com/simenb/github-actions-cpu-cores/compare/v1...v2)

---
updated-dependencies:
- dependency-name: SimenB/github-actions-cpu-cores
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-24 19:37:47 +02:00
Nicolas Meienberger
3a6f19e8df Merge branch 'develop' of github.com:meienberger/runtipi into develop 2023-10-23 21:57:58 +02:00
Nicolas Meienberger
b85fbc3224 chore(cli): pull app store repo upon start 2023-10-23 21:57:55 +02:00
Nicolas Meienberger
5db75f1d14
Update README.md 2023-10-23 21:17:40 +02:00
Nicolas Meienberger
12cafc6a97 fix(ci): udpate octokit deprecated call to github.repos 2023-10-23 20:01:49 +02:00
Nicolas Meienberger
50f509d04e fix(ci): udpate octokit deprecated call to github.repos 2023-10-23 12:19:30 +02:00
Nicolas Meienberger
d5766070c4
Merge pull request #798 from runtipi/release/2.0.7
Release/2.0.7
2023-10-23 08:51:21 +02:00
Nicolas Meienberger
3972340fe7 chore: make theme cookie expire after 365 days 2023-10-23 08:48:44 +02:00
Nicolas Meienberger
b18bf2a265 chore: make theme cookie expire after 365 days 2023-10-23 08:47:36 +02:00
Nicolas Meienberger
a2e46a84bb chore: bump version to 2.0.7 2023-10-23 07:56:24 +02:00
Nicolas Meienberger
1dd64af4ed chore(cli): generate APP_PROTOCOL env var even for http 2023-10-23 07:52:14 +02:00
Nicolas Meienberger
9f1e09098a feat(cli): add commands for starting and stopping apps 2023-10-23 07:46:37 +02:00
dependabot[bot]
b1cd37ddba chore(deps): bump sass from 1.69.2 to 1.69.4
Bumps [sass](https://github.com/sass/dart-sass) from 1.69.2 to 1.69.4.
- [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.69.2...1.69.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 14:08:53 +02:00
dependabot[bot]
80550b1de7 chore(deps-dev): bump @typescript-eslint/parser from 6.7.5 to 6.8.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.7.5 to 6.8.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.8.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 14:07:50 +02:00
dependabot[bot]
7b62c1b1ee chore(deps-dev): bump @types/jest from 29.5.5 to 29.5.6
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 29.5.5 to 29.5.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 14:06:44 +02:00
dependabot[bot]
28217d1f5a chore(deps-dev): bump eslint-plugin-testing-library from 6.0.2 to 6.1.0
Bumps [eslint-plugin-testing-library](https://github.com/testing-library/eslint-plugin-testing-library) from 6.0.2 to 6.1.0.
- [Release notes](https://github.com/testing-library/eslint-plugin-testing-library/releases)
- [Changelog](https://github.com/testing-library/eslint-plugin-testing-library/blob/main/.releaserc.json)
- [Commits](https://github.com/testing-library/eslint-plugin-testing-library/compare/v6.0.2...v6.1.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-testing-library
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 14:06:25 +02:00
dependabot[bot]
24b6cb6b00 chore(deps-dev): bump @types/react from 18.2.28 to 18.2.31
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.28 to 18.2.31.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 14:05:46 +02:00
dependabot[bot]
f75c412295 chore(deps): bump pnpm/action-setup from 2.2.4 to 2.4.0
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 2.2.4 to 2.4.0.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](https://github.com/pnpm/action-setup/compare/v2.2.4...v2.4.0)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 14:05:14 +02:00
dependabot[bot]
8bf51997ac chore(deps): bump docker/setup-buildx-action from 2 to 3
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 14:04:33 +02:00
dependabot[bot]
55084119f6 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 6.7.5 to 6.8.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.8.0/packages/eslint-plugin)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 14:01:29 +02:00
dependabot[bot]
e816b77b25 chore(deps): bump docker/build-push-action from 4 to 5
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4 to 5.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 14:00:09 +02:00
dependabot[bot]
86daa95258 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-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 13:59:31 +02:00
dependabot[bot]
96499d2ef7 chore(deps): bump docker/setup-qemu-action from 2 to 3
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 13:58:52 +02:00
Nicolas Meienberger
7ded3aace4 fix(theme): detect system theme when theme cookie is not present 2023-10-21 13:58:08 +02:00
dependabot[bot]
30c7d6ea4d chore(deps-dev): bump tough-cookie from 4.1.2 to 4.1.3
Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) from 4.1.2 to 4.1.3.
- [Release notes](https://github.com/salesforce/tough-cookie/releases)
- [Changelog](https://github.com/salesforce/tough-cookie/blob/master/CHANGELOG.md)
- [Commits](https://github.com/salesforce/tough-cookie/compare/v4.1.2...v4.1.3)

---
updated-dependencies:
- dependency-name: tough-cookie
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 10:00:06 +02:00
dependabot[bot]
00382f99d3 chore(deps): bump @babel/traverse from 7.23.0 to 7.23.2
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.23.0 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 09:00:58 +02:00
dependabot[bot]
8682442735 chore(deps-dev): bump word-wrap from 1.2.3 to 1.2.5
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.5.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.5)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 08:58:58 +02:00
Nicolas Meienberger
2847ceab78 New translations en.json (Swedish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
ec228bb071 New translations en.json (English) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
81fe58c54d New translations en.json (French) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
5711910aa0 New translations en.json (Chinese Traditional) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
1f3cafcc4c New translations en.json (Chinese Simplified) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
dc7b5a4c78 New translations en.json (Japanese) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
e2641d64da New translations en.json (Turkish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
8a7d2cfd56 New translations en.json (Greek) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
7197ae712a New translations en.json (Portuguese, Brazilian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
23f2f9fe53 New translations en.json (Vietnamese) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
4985e57197 New translations en.json (English) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
ae60ce162d New translations en.json (Chinese Traditional) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
7fe2675c72 New translations en.json (Chinese Simplified) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
c6265b48eb New translations en.json (Ukrainian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
733ac5bbed New translations en.json (Swedish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
20a0461ee6 New translations en.json (Serbian (Cyrillic)) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
deeaaf012c New translations en.json (Russian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
adbb347f28 New translations en.json (Portuguese) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
60222dddd4 New translations en.json (Polish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
2f34560fa2 New translations en.json (Norwegian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
26f2ba4e46 New translations en.json (Dutch) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
01fe1445af New translations en.json (Korean) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
e68369f532 New translations en.json (Japanese) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
bedb07bc8f New translations en.json (Italian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
238c43440b New translations en.json (Hungarian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
7c4edde4e7 New translations en.json (Finnish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
7f130b2978 New translations en.json (Greek) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
4850e348fe New translations en.json (German) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
5468bb08d5 New translations en.json (Danish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
b11ba9b532 New translations en.json (Czech) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
b8c5d50d45 New translations en.json (Catalan) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
f6fcddce9d New translations en.json (Arabic) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
7f9a5dded6 New translations en.json (Afrikaans) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
6affffa83e New translations en.json (Spanish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
82f7705650 New translations en.json (French) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
985c8502ce New translations en.json (Romanian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
ab68c055af New translations en.json (Turkish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
e41f68cced New translations en.json (Hebrew) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
96305bf13b New translations en.json (Hungarian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
9dd46d7397 New translations en.json (Turkish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
03efbda77d New translations en.json (Russian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
13cd46450f New translations en.json (Greek) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
4cf0ae2592 New translations en.json (Russian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
b81fd4db36 New translations en.json (Portuguese, Brazilian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
7176971224 New translations en.json (Vietnamese) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
38bca76219 New translations en.json (English) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
98c723100d New translations en.json (Chinese Traditional) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
043bb7f894 New translations en.json (Chinese Simplified) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
8920fdb33d New translations en.json (Ukrainian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
ce5d9520f4 New translations en.json (Swedish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
f43988a561 New translations en.json (Serbian (Cyrillic)) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
a1a1cab530 New translations en.json (Russian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
c9e57eb01d New translations en.json (Portuguese) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
0719e4782d New translations en.json (Polish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
870a737c65 New translations en.json (Norwegian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
f0cd9bf13f New translations en.json (Dutch) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
0c175fee74 New translations en.json (Korean) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
752c1db155 New translations en.json (Japanese) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
725ba21144 New translations en.json (Italian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
341c433385 New translations en.json (Hungarian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
8758393620 New translations en.json (Finnish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
53a9a9db3d New translations en.json (Greek) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
2c1f5eacb8 New translations en.json (German) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
1edea9bea6 New translations en.json (Danish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
134d9212fa New translations en.json (Czech) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
11700a3f10 New translations en.json (Catalan) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
db506509e9 New translations en.json (Arabic) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
481996ec76 New translations en.json (Afrikaans) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
3fcba91e5b New translations en.json (Spanish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
4d86d80e3e New translations en.json (French) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
ac12afb1f2 New translations en.json (Romanian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
886edeb8b0 New translations en.json (Turkish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
9779555526 New translations en.json (Hebrew) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
884f1d3640 New translations en.json (Greek) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
faeab592c1 New translations en.json (Russian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
143a3ebd0a New translations en.json (Turkish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
f40501b3a0 New translations en.json (Portuguese, Brazilian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
56cb75831d New translations en.json (Vietnamese) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
32dc6c28ba New translations en.json (English) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
c25d1dec69 New translations en.json (Chinese Traditional) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
adabdac2a9 New translations en.json (Chinese Simplified) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
b61cc75a92 New translations en.json (Ukrainian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
86aa9a9cc4 New translations en.json (Swedish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
bbdc40f93e New translations en.json (Serbian (Cyrillic)) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
6cfe41a64f New translations en.json (Russian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
cfa308bb04 New translations en.json (Portuguese) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
f197551902 New translations en.json (Polish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
f8595d205a New translations en.json (Norwegian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
ce98159b2d New translations en.json (Dutch) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
5bb6ea047e New translations en.json (Korean) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
fbab23305e New translations en.json (Japanese) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
9a08b8de67 New translations en.json (Italian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
c982fc639b New translations en.json (Hungarian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
66e6d93ef5 New translations en.json (Finnish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
4e63224b07 New translations en.json (Greek) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
c8857d0ecb New translations en.json (German) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
a9f5349aa8 New translations en.json (Danish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
d959a1b7d8 New translations en.json (Czech) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
ec9112e941 New translations en.json (Catalan) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
4577adb008 New translations en.json (Arabic) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
fae4c7f9bc New translations en.json (Afrikaans) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
12ad9045c9 New translations en.json (Spanish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
32768252fa New translations en.json (French) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
bb035cb84c New translations en.json (Romanian) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
cf5f14c0bb New translations en.json (Turkish) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
b0794eae47 New translations en.json (Hebrew) 2023-10-18 08:49:45 +02:00
Nicolas Meienberger
a90fbd869c chore: bump next to 13.5.5 2023-10-18 08:44:34 +02:00
dependabot[bot]
7ff9930893 chore(deps): bump actions/download-artifact from 2 to 3
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2 to 3.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 08:40:16 +02:00
dependabot[bot]
b57bc8595a chore(deps): bump pnpm/action-setup from 2.2.4 to 2.4.0
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 2.2.4 to 2.4.0.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](https://github.com/pnpm/action-setup/compare/v2.2.4...v2.4.0)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 08:39:07 +02:00
Nicolas Meienberger
ab950340e2 chore: bump @tabler/core to 1.0.0-beta20 2023-10-18 08:36:02 +02:00
dependabot[bot]
f928b5a056 chore(deps): bump winston from 3.9.0 to 3.11.0
Bumps [winston](https://github.com/winstonjs/winston) from 3.9.0 to 3.11.0.
- [Release notes](https://github.com/winstonjs/winston/releases)
- [Changelog](https://github.com/winstonjs/winston/blob/master/CHANGELOG.md)
- [Commits](https://github.com/winstonjs/winston/compare/v3.9.0...v3.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 08:02:14 +02:00
Nicolas Meienberger
43415f9e14 chore: bump next-safe-action to 4.0.1 2023-10-18 08:00:13 +02:00
dependabot[bot]
57dc28f518 chore(deps): bump zod from 3.21.4 to 3.22.4
Bumps [zod](https://github.com/colinhacks/zod) from 3.21.4 to 3.22.4.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Changelog](https://github.com/colinhacks/zod/blob/master/CHANGELOG.md)
- [Commits](https://github.com/colinhacks/zod/compare/v3.21.4...v3.22.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 07:38:47 +02:00
dependabot[bot]
ee17e0cb78 chore(deps): bump actions/upload-pages-artifact from 1 to 2
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 1 to 2.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v1...v2)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 07:38:07 +02:00
dependabot[bot]
468fd0e07a chore(deps): bump actions/upload-artifact from 2 to 3
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 07:37:00 +02:00
dependabot[bot]
4dc0885004 chore(deps): bump actions/github-script from 4 to 6
Bumps [actions/github-script](https://github.com/actions/github-script) from 4 to 6.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 07:36:25 +02:00
dependabot[bot]
1dfdbec246 chore(deps): bump @hookform/resolvers from 3.3.1 to 3.3.2
Bumps [@hookform/resolvers](https://github.com/react-hook-form/resolvers) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/react-hook-form/resolvers/releases)
- [Commits](https://github.com/react-hook-form/resolvers/compare/v3.3.1...v3.3.2)

---
updated-dependencies:
- dependency-name: "@hookform/resolvers"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 07:35:51 +02:00
dependabot[bot]
fd7a5aa0d0 chore(deps): bump @tabler/icons-react from 2.38.0 to 2.39.0
Bumps [@tabler/icons-react](https://github.com/tabler/tabler-icons/tree/HEAD/packages/icons-react) from 2.38.0 to 2.39.0.
- [Release notes](https://github.com/tabler/tabler-icons/releases)
- [Commits](https://github.com/tabler/tabler-icons/commits/v2.39.0/packages/icons-react)

---
updated-dependencies:
- dependency-name: "@tabler/icons-react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 07:34:55 +02:00
Nicolas Meienberger
27f5ccda82
Merge pull request #763 from runtipi/release/2.0.6
Release/2.0.6
2023-10-17 08:45:29 +02:00
Geetansh
3b25969619 Add -L flag to curl command to follow redirects in install.sh
The previous curl command in install.sh was failing due to a permanent redirect on the GitHub API endpoint. This error was manifesting as a "Moved Permanently" message when attempting to fetch the latest release version. By adding the -L flag to the curl command, the script now correctly follows the redirect to the new URL, ensuring the latest version information is accurately retrieved. This change resolves the error and ensures the installation script operates reliably.
2023-10-17 07:46:05 +02:00
Nicolas Meienberger
adc983bccd refactor(api): move certificate enpoint to app directory 2023-10-16 22:22:16 +02:00
Nicolas Meienberger
04c50bafd3 refactor(api): move app-image endpoint to app directory 2023-10-16 22:22:16 +02:00
Nicolas Meienberger
3d5a041a9d ci(e2e): remove irrelevant test 2023-10-16 20:40:05 +02:00
Nicolas Meienberger
abde5868ac chore: fix typo in ts 2023-10-16 20:21:23 +02:00
Nicolas Meienberger
27651d53b5 fix(get-status): return error in case of cache retrieval failure 2023-10-16 20:21:23 +02:00
Nicolas Meienberger
2cff0de4ac fix(cli): flush cache before adding scheduled jobs 2023-10-15 13:54:41 +02:00
Nicolas Meienberger
58a83391e2 fix(get-status): set default status to running 2023-10-14 21:48:05 +02:00
Nicolas Meienberger
1fb8b6409a refactor(cli): enable lazy connect for redis connexion 2023-10-14 21:28:28 +02:00
Nicolas Meienberger
6446eab877 chore: fix build issues 2023-10-14 20:22:34 +02:00
Nicolas Meienberger
ea4d99df3d refactor(get-status): use client-side fetch and API route instead of server action 2023-10-14 20:22:34 +02:00
Nicolas Meienberger
5b28f50847 refactor: flush cache on start 2023-10-14 20:22:34 +02:00
Nicolas Meienberger
ab3409d411 chore(deps): install ioredis and swr 2023-10-14 20:22:34 +02:00
Nicolas Meienberger
cc86483f5e refactor(favicon): change icon to use new next 13 way 2023-10-14 14:39:15 +02:00
Nicolas Meienberger
23fb14b414 chore: apply next-safe-action patch 2023-10-12 22:26:34 +02:00
Nicolas Meienberger
39e8041a06 fix(next-safe-action): patch package to handle network errors 2023-10-12 22:19:18 +02:00
Nicolas Meienberger
bc8c4bfe88 chore: rename all reference of personal github account to new organization 2023-10-12 21:16:37 +02:00
Nicolas Meienberger
a3ce08bee3 refactor(cli): don't change permissions on media folder 2023-10-12 20:45:22 +02:00
Nicolas Meienberger
c70a0845a8 fix(settings): app crashing when restarting 2023-10-12 20:43:37 +02:00
Nicolas Meienberger
986784d81c fix: migrate StatusProvider to work with RSC 2023-10-11 21:22:57 +02:00
Nicolas Meienberger
362ff6eff8 chore: add config to run production locally 2023-10-11 21:22:57 +02:00
Nicolas Meienberger
0f16571ee3 chore: add local prod script 2023-10-11 21:22:57 +02:00
Nicolas Meienberger
bbba17168b chore: bump dependencies 2023-10-10 22:37:58 +02:00
Nicolas Meienberger
0221021b84 tests(cli): include postgrest env vars in .env.test 2023-10-10 21:31:26 +02:00
Nicolas Meienberger
9def6bc4d9 chore: add stub .env file during build 2023-10-10 21:19:54 +02:00
Nicolas Meienberger
e0865f1326 chore: bump version to 2.0.6 2023-10-10 20:57:06 +02:00
Nicolas Meienberger
0dfc0a699f chore: remove legacy styles 2023-10-10 20:57:06 +02:00
Nicolas Meienberger
ed9477c068 chore: remove Layout and Toast components 2023-10-10 20:57:06 +02:00
Nicolas Meienberger
8d690e408a chore: remove _app, _document and middleware 2023-10-10 20:57:06 +02:00
Nicolas Meienberger
7fefd2ed49 chore(client): remove getUrl helper method 2023-10-10 20:57:06 +02:00
Nicolas Meienberger
1c3e34359f chore: add .gitkeep in patches folder 2023-10-10 20:34:33 +02:00
Nicolas Meienberger
eb0084744c
Update bug_report.md 2023-10-07 12:15:56 +02:00
Nicolas Meienberger
363921d246 chore(deps): remove trpc related dependencies 2023-10-07 10:38:42 +02:00
Nicolas Meienberger
36675a67d4 chore: cleanup trpc related code 2023-10-07 10:38:42 +02:00
dependabot[bot]
34006c680b chore(deps-dev): bump eslint-config-airbnb-typescript
Bumps [eslint-config-airbnb-typescript](https://github.com/iamturns/eslint-config-airbnb-typescript) from 17.0.0 to 17.1.0.
- [Release notes](https://github.com/iamturns/eslint-config-airbnb-typescript/releases)
- [Changelog](https://github.com/iamturns/eslint-config-airbnb-typescript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/iamturns/eslint-config-airbnb-typescript/compare/v17.0.0...v17.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-03 08:57:22 +02:00
dependabot[bot]
81d54c3ee2 chore(deps): bump superjson from 1.12.3 to 1.13.3
Bumps [superjson](https://github.com/blitz-js/superjson) from 1.12.3 to 1.13.3.
- [Release notes](https://github.com/blitz-js/superjson/releases)
- [Commits](https://github.com/blitz-js/superjson/compare/v1.12.3...v1.13.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-03 08:53:23 +02:00
Nicolas Meienberger
fbefc31bd3 chore: bump next-safe-action 2023-10-03 08:49:55 +02:00
Nicolas Meienberger
1b434e7355 feat: move security form to rsc 2023-10-03 08:49:55 +02:00
Nicolas Meienberger
b3e1245da2 feat: move settings form to rsc 2023-10-03 08:49:55 +02:00
Nicolas Meienberger
7b533bb0bc chore: patch next-safe-action with onExecute callback 2023-10-03 08:49:55 +02:00
Nicolas Meienberger
9bc96ffa9c feat: move settings page to rsc 2023-10-03 08:49:55 +02:00
DireMunchkin
5d2d8e7b9c Always pull image on app start 2023-10-01 13:23:56 +02:00
Nicolas Meienberger
42edd1c4a4 chore: bump next to 13.5.3 2023-09-28 21:16:48 +02:00
Nicolas Meienberger
bd8ce501ec refactor: rewrite /apps/:id to /app-store/:id 2023-09-28 21:16:48 +02:00
Nicolas Meienberger
b5945f4fcd feat(PageTitle): provide alternate title for app details page 2023-09-28 21:16:48 +02:00
Nicolas Meienberger
c4fb416903 feat: move app details to rsc 2023-09-28 21:16:48 +02:00
Nicolas Meienberger
c60f77bf02 chore: bump devDependencies 2023-09-28 08:23:53 +02:00
Nicolas Meienberger
61cac4abf6 chore: update lock file 2023-09-28 07:52:55 +02:00
Nicolas Meienberger
c3ea3e8cdc Merge branch 'master' into develop 2023-09-28 07:52:21 +02:00
Nicolas Meienberger
e8ea9d6099 chore: bump version to 2.0.5 2023-09-27 21:18:31 +02:00
Nicolas Meienberger
86556a6477 hotfix: correct execAsync execution 2023-09-27 21:18:06 +02:00
Nicolas Meienberger
f0831db9d6 chore: bump version to 2.0.4 2023-09-27 20:37:01 +02:00
Nicolas Meienberger
163d2f9374 fix(cli): handle unhandled errors in execAsync 2023-09-27 20:37:01 +02:00
Nicolas Meienberger
304e4f7d66 feat: move app-store page to RSC 2023-09-19 20:05:32 +02:00
Nicolas Meienberger
4647bd206a refactor(Header): use logout server action 2023-09-18 15:15:55 -07:00
Nicolas Meienberger
5b493a79d9 refactor: move dashboard components into app folder 2023-09-18 15:13:51 -07:00
Nicolas Meienberger
944b886148 feat: move reset password flow to RSC 2023-09-19 00:12:42 +02:00
Nicolas Meienberger
93dc514a2b feat: move register flow to RSC 2023-09-18 23:16:58 +02:00
Nicolas Meienberger
2e8c8883c5 test(auth.service): refactor to use new pattern without req/res 2023-09-18 19:35:36 +02:00
Nicolas Meienberger
32ab0da985 feat: move login page to RSC 2023-09-18 19:35:36 +02:00
Nicolas Meienberger
a8933e592e feat: move my apps page to RSC 2023-09-07 12:47:14 +02:00
Nicolas Meienberger
da31470fd7 test(system-service): fix failing test due to refactor 2023-09-07 11:45:01 +02:00
Nicolas Meienberger
23a115b955 feat: move dashboard page to RSC 2023-09-07 11:45:01 +02:00
Stavros
bd1b7dfac9 Fix my name :) 2023-09-06 22:50:25 +02:00
Nicolas Meienberger
779f7951d9 refactor: remove usages of singletons and optimize redis connections count 2023-09-05 22:33:24 +02:00
Nicolas Meienberger
fd7f9d810a
Merge pull request #682 from meienberger/all-contributors/add-itsrllyhim
docs: add itsrllyhim as a contributor for code
2023-09-05 20:37:42 +02:00
allcontributors[bot]
fe151b7cb7
docs: update .all-contributorsrc [skip ci] 2023-09-05 18:37:33 +00:00
allcontributors[bot]
0cf26a18f0
docs: update README.md [skip ci] 2023-09-05 18:37:32 +00:00
Nicolas Meienberger
26ea3a2443
Merge pull request #679 from meienberger/all-contributors/add-steveiliop56
docs: add steveiliop56 as a contributor for code, and test
2023-09-04 21:49:27 +02:00
allcontributors[bot]
3f13f593b9
docs: update .all-contributorsrc [skip ci] 2023-09-04 19:49:13 +00:00
allcontributors[bot]
10cd63b086
docs: update README.md [skip ci] 2023-09-04 19:49:12 +00:00
Nicolas Meienberger
7c40c7e0da
Merge pull request #677 from meienberger/release/2.0.3
Release/2.0.3
2023-09-02 22:52:29 +02:00
Nicolas Meienberger
d3b19e0a6c Merge branch 'master' into release/2.0.3 2023-09-02 22:44:40 +02:00
Nicolas Meienberger
ddfd4bb44f ci: enable informational mode in codecov 2023-09-02 22:03:39 +02:00
Nicolas Meienberger
49f025e188 refactor: remove the ability to update tipi through the ui 2023-09-02 21:49:20 +02:00
Nicolas Meienberger
e9da22f686 refactor: remove the ability to update tipi through the ui 2023-09-02 20:05:29 +02:00
Nicolas Meienberger
b159c151ae feat: remove old scripts folder on start 2023-09-02 20:05:29 +02:00
Nicolas Meienberger
c97360f601 fix: close pipe after file is downloaded 2023-09-02 20:05:29 +02:00
Nicolas Meienberger
35a2bcff04 fix: run compose commmands using spawn instead of execAsync 2023-09-02 11:24:22 +02:00
Nicolas Meienberger
71c38dbd1b chore: redirect watcher logs to app.log 2023-09-02 02:58:29 +02:00
Nicolas Meienberger
64ba3a292d chore(cli): remove file permissions change before copying them 2023-09-02 01:38:29 +02:00
Nicolas Meienberger
aba1781d65 feat: add setting to see pre-release versions in dashboard 2023-09-02 01:03:59 +02:00
Nicolas Meienberger
7eb90831b1 fix: race conditions when killing previous watchers 2023-09-02 00:55:00 +02:00
Nicolas Meienberger
b5c00cd808 chore: add loggin during start 2023-09-02 00:37:45 +02:00
Nicolas Meienberger
2e91687643 fix: correct path for traefik file permission 2023-09-01 01:09:50 +02:00
Nicolas Meienberger
45a8d50ace fix: correct path for traefik file permission 2023-09-01 01:09:28 +02:00
Nicolas Meienberger
5495d87979 chore: bump versio to 2.0.2 2023-09-01 00:21:54 +02:00
Nicolas Meienberger
bcda2fd203 hotfix: git fetch in the correct directory 2023-09-01 00:21:47 +02:00
Nicolas Meienberger
867cf32e56 chore: bump versio to 2.0.2 2023-09-01 00:17:10 +02:00
Nicolas Meienberger
8e337ad337 hotfix: git fetch in the correct directory 2023-09-01 00:16:37 +02:00
Nicolas Meienberger
238a791a77
Merge pull request #673 from meienberger/release/2.0.1
Release/2.0.1
2023-08-31 23:30:36 +02:00
Nicolas Meienberger
1047ead206 Merge branch 'master' into release/2.0.1 2023-08-31 23:20:43 +02:00
Nicolas Meienberger
760097f492 chore: cleanup unused group creation 2023-08-31 22:43:30 +02:00
Nicolas Meienberger
3959fd8a1f fix(git): reset hard on remote branch before pulling 2023-08-31 22:08:57 +02:00
Nicolas Meienberger
b8be697e60 feat: max 6 apps in demo mode 2023-08-31 21:55:32 +02:00
Nicolas Meienberger
f928a51570 Merge branch 'develop' of github.com:meienberger/runtipi into develop 2023-08-31 21:12:04 +02:00
Nicolas Meienberger
b13c35cb3d chore: bump version to 2.0.1 2023-08-31 21:11:59 +02:00
Nicolas Meienberger
85806300d9 New translations en.json (Turkish) 2023-08-31 21:11:26 +02:00
Nicolas Meienberger
a59da9cfc2 fix: add git pull strategy 2023-08-31 21:09:47 +02:00
Nicolas Meienberger
028a4d654d feat(Markdown): display html in app description 2023-08-31 21:09:47 +02:00
Nicolas Meienberger
72272cdfdd feat: start apps on launch 2023-08-31 21:09:47 +02:00
Nicolas Meienberger
e5f1a94c08 chore: add logs to git repo pull 2023-08-31 18:27:50 +02:00
Nicolas Meienberger
00f6ab1e64 refactor: run watch with sudo by default 2023-08-31 18:26:20 +02:00
Nicolas Meienberger
a0f5d07df1 hotfix: roll back and add back permissions a+rwx to app-data folder 2023-08-31 18:24:06 +02:00
Nicolas Meienberger
96f38927d5 chore: add logs to git repo pull 2023-08-30 21:45:10 +02:00
Nicolas Meienberger
fcce86de09 refactor: run watch with sudo by default 2023-08-30 21:45:10 +02:00
Nicolas Meienberger
644dfbc7a6 hotfix: roll back and add back permissions a+rwx to app-data folder 2023-08-30 21:45:10 +02:00
Nicolas Meienberger
7926c45d88 feat(cli): create tipi group and assign it to user and folders 2023-08-29 22:54:31 +02:00
Nicolas Meienberger
93282a051e fix: delete .gitkeep files after copying data folder 2023-08-29 22:54:31 +02:00
Nicolas Meienberger
1dff217812 chore: bump version to 1.6.1 2023-08-29 22:54:31 +02:00
Nicolas Meienberger
86ed9503a7 fix(cli): mark app store repo as git safe folder before pulling 2023-08-29 22:54:31 +02:00
Nicolas Meienberger
333c588293 fix(cli): mark app store repo as git safe folder before pulling 2023-08-28 22:15:34 +02:00
Nicolas Meienberger
1d41f5de9b refactor: export TipiCache as a non-instantiated class 2023-08-28 22:01:40 +02:00
Nicolas Meienberger
4e6a6b713d ci: add missing env variables 2023-08-28 22:01:40 +02:00
Nicolas Meienberger
f77d3bfbf2 test(auth): refactor to be compliant with new session management 2023-08-28 22:01:40 +02:00
Nicolas Meienberger
55ceb32fd9 refactor: use next.js middleware for session parsing and move out of custom express server 2023-08-28 22:01:40 +02:00
Nicolas Meienberger
77701cb6b0 chore: remove express and express-session dependencies 2023-08-28 22:01:40 +02:00
Nicolas Meienberger
427ffe0ff7 chore: remove nodemon and esbuild devDependencies 2023-08-28 22:01:40 +02:00
Nicolas Meienberger
14f14df3e0 fix(GeneralSettings): fix panel width too small on mobile 2023-08-28 20:35:28 +02:00
Nicolas Meienberger
ca8e05652c refactor: move db migrations in cli start command 2023-08-28 20:23:51 +02:00
Nicolas Meienberger
fe3dabce7d New translations en.json (Portuguese, Brazilian) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
1632153907 New translations en.json (Ukrainian) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
594265bbcd New translations en.json (Serbian (Cyrillic)) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
a53ebc471b New translations en.json (Portuguese) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
927a579254 New translations en.json (Norwegian) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
0065325eff New translations en.json (Dutch) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
f9a45ff0c1 New translations en.json (Korean) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
5313a8a43e New translations en.json (Hebrew) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
433aac1866 New translations en.json (Finnish) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
41084abffe New translations en.json (Danish) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
081645e125 New translations en.json (Czech) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
32a1610e8c New translations en.json (Catalan) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
7fc9ef8c1d New translations en.json (Arabic) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
768244d1d8 New translations en.json (Afrikaans) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
cbd8480f2b New translations en.json (Acholi) 2023-08-27 21:10:00 +02:00
Nicolas Meienberger
acb3b60a5d chore: remove non-translated languages 2023-08-27 11:34:40 +02:00
allcontributors[bot]
a3229aea50 docs: update .all-contributorsrc [skip ci] 2023-08-27 11:25:53 +02:00
allcontributors[bot]
1a3cb397a8 docs: update README.md [skip ci] 2023-08-27 11:25:53 +02:00
Fabio Cingottini
8c2707787f feat: add italian language support
edit src/client/messages/it-IT.json by substituting with italian translations
edit src/shared/internationalization/locales.ts to add it lang
2023-08-27 11:24:19 +02:00
Fabio Cingottini
6c82e45c58 chore: add .idea to .gitignore 2023-08-27 11:24:19 +02:00
Nicolas Meienberger
4917f2da75 ci(release): fix create-tag missing code checkout 2023-08-26 15:19:45 +02:00
Nicolas Meienberger
3c6a5b6eaf chore: enable greek and turkish languages 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
35bdfee701 ci: delete release if e2e tests fail 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
44280cb67a fix(install.sh): check for git presence on the system 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
5f71ffcfa4 feat: make start script work in an unintened cli 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
8be2856eed refactor(install.sh): don't auto upgrade/update 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
06d14f1500 fix(system-executor): add correct permissions to traefik folder 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
c83a2f70aa fix: add default value for SUB_OS detection 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
7c6d94fc5f ci: extract postgres_password from .env in remote machine 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
cc3334438e ci(e2e): use .env password for db connection 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
7cb54ae341 ci: change tag to version for e2e input 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
e65461b146 refactor: protect redis instance with a password 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
ead4ced154 chore(ci): use workflow_dispatch instead of workflow_run in e2e.yml 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
25968a8198 feat(ci): beta-release flow 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
1e4f4805e7 chore(cli): remove commented out code 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
26bb80e743 fix(cli): load .env file on each access to getEnv to ensure updated values 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
24c4d0f8af fix(system-executors): wrong usage of getEnv in start script 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
021b088c41 fix(system-helpers): wrong usage of openssl 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
ecf1eff86b chore: fix permission issues with running watcher sudoless 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
7a87bb7d8e revert(cli): remove stderr evaluation after docker command 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
452bb296cf feat(cli): fail and log error in case of stderr on execAsync calls 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
10333a088e refactor(cli): centralise loggers into one singleton 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
d62558f41d chore: remove un-used exports and dependencies 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
5716034427 feat: create app update event 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
eac2c1bdb0 test: fix failing tests by adding mocks to bullmq 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
183516117e ci: refactor alpha release and update lock file 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
50db5c0912 refactor(db): merge exposed and domain with app.config 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
710eaa8aaf refactor(EventDispatcher): use bullmq as a message queue 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
5dd3f6963b refactor: import from packages/shared and remove duplicate code 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
8b7952c6db feat: create shared package between main app and cli 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
c89b9fe752 refactor: translate bash scripts to node in packages/cli 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
6efbce5b75 feat: create new cli package 2023-08-26 15:10:28 +02:00
allcontributors[bot]
6627583ebf docs: update .all-contributorsrc [skip ci] 2023-08-26 15:10:28 +02:00
allcontributors[bot]
0f2a36ce3b docs: update README.md [skip ci] 2023-08-26 15:10:28 +02:00
allcontributors[bot]
333a8f3728 docs: update .all-contributorsrc [skip ci] 2023-08-26 15:10:28 +02:00
allcontributors[bot]
4b55ca5206 docs: update README.md [skip ci] 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
c0480ce636 ci: checkout code before creating tag 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
836999815e ci: add alpha release workflow 2023-08-26 15:10:28 +02:00
Osco
8deb7ac79a Enable TLS and Attach to Traefik CertResolver 2023-08-26 15:10:28 +02:00
allcontributors[bot]
37f19b2d59 docs: update .all-contributorsrc [skip ci] 2023-08-26 15:10:28 +02:00
allcontributors[bot]
94c33e6a15 docs: update README.md [skip ci] 2023-08-26 15:10:28 +02:00
allcontributors[bot]
dc68a348ff docs: update .all-contributorsrc [skip ci] 2023-08-26 15:10:28 +02:00
allcontributors[bot]
ef16ef7ec5 docs: update README.md [skip ci] 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
9082b509db New translations en.json (Greek) 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
92dbfc424d New translations en.json (Greek) 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
fb3beae382 New translations en.json (Turkish) 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
4151fb30ba New translations en.json (Turkish) 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
c9cddf1273 New translations en.json (Portuguese) 2023-08-26 15:10:28 +02:00
Nicolas Meienberger
eaa42c7975 feat: add APP_HOST variable and refactor fs mocks with memfs 2023-08-26 15:10:28 +02:00
allcontributors[bot]
b794c220b7 docs: add M1n-4d316e as a contributor for translation (#564)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-08-26 15:10:28 +02:00
dependabot[bot]
37a74f8db4 chore(deps): bump react-hook-form from 7.45.0 to 7.45.1
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.45.0 to 7.45.1.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.45.0...v7.45.1)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-26 15:10:28 +02:00
dependabot[bot]
01be8bfb5c chore(deps-dev): bump typescript from 5.1.3 to 5.1.5
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.1.3 to 5.1.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v5.1.3...v5.1.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-26 15:10:28 +02:00
Nicolas Meienberger
25cfec24dc chore: enable greek and turkish languages 2023-08-26 14:22:22 +02:00
Nicolas Meienberger
7d2e620e55 ci: delete release if e2e tests fail 2023-08-26 14:17:59 +02:00
Nicolas Meienberger
c2749a8033 fix(install.sh): check for git presence on the system 2023-08-26 11:29:23 +02:00
Nicolas Meienberger
a594e63906 feat: make start script work in an unintened cli 2023-08-26 11:28:22 +02:00
Nicolas Meienberger
ee41a9701a refactor(install.sh): don't auto upgrade/update 2023-08-26 00:29:43 +02:00
Nicolas Meienberger
62490a596b fix(system-executor): add correct permissions to traefik folder 2023-08-26 00:28:13 +02:00
Nicolas Meienberger
4c05f91eb2 fix: add default value for SUB_OS detection 2023-08-26 00:27:50 +02:00
Nicolas Meienberger
af5b5afab5 ci: extract postgres_password from .env in remote machine 2023-08-25 23:09:28 +02:00
Nicolas Meienberger
5e8447c15a ci(e2e): use .env password for db connection 2023-08-25 23:09:28 +02:00
Nicolas Meienberger
9add53dd6d ci: change tag to version for e2e input 2023-08-24 19:35:13 +02:00
Nicolas Meienberger
30d1977a63 refactor: protect redis instance with a password 2023-08-24 18:40:38 +02:00
Nicolas Meienberger
7dc09ac1a7 chore(ci): use workflow_dispatch instead of workflow_run in e2e.yml 2023-08-24 09:02:50 +02:00
Nicolas Meienberger
94b5098cc1 feat(ci): beta-release flow 2023-08-24 08:59:09 +02:00
Nicolas Meienberger
6def5a1168 chore(cli): remove commented out code 2023-08-24 08:59:09 +02:00
Nicolas Meienberger
ac3ca00240 fix(cli): load .env file on each access to getEnv to ensure updated values 2023-08-24 08:59:09 +02:00
Nicolas Meienberger
bff2b804ce fix(system-executors): wrong usage of getEnv in start script 2023-08-24 08:59:09 +02:00
Nicolas Meienberger
73a3a2a91a fix(system-helpers): wrong usage of openssl 2023-08-24 08:59:09 +02:00
Nicolas Meienberger
9d525bfc71 chore: fix permission issues with running watcher sudoless 2023-08-24 08:59:09 +02:00
Nicolas Meienberger
8da6bed609 revert(cli): remove stderr evaluation after docker command 2023-08-18 21:46:21 +02:00
Nicolas Meienberger
09df5bb58f feat(cli): fail and log error in case of stderr on execAsync calls 2023-08-17 00:04:17 +02:00
Nicolas Meienberger
6d170ce78b refactor(cli): centralise loggers into one singleton 2023-08-16 22:51:42 +02:00
Nicolas Meienberger
e036532b55 chore: remove un-used exports and dependencies 2023-08-16 21:53:59 +02:00
Nicolas Meienberger
56c9d51d13 feat: create app update event 2023-08-16 21:53:59 +02:00
Nicolas Meienberger
77dd73bdb4 test: fix failing tests by adding mocks to bullmq 2023-08-16 21:53:59 +02:00
Nicolas Meienberger
583a982930 ci: refactor alpha release and update lock file 2023-08-16 21:53:59 +02:00
Nicolas Meienberger
c83f6f57b4 refactor(db): merge exposed and domain with app.config 2023-08-16 21:53:59 +02:00
Nicolas Meienberger
dbd616c04b refactor(EventDispatcher): use bullmq as a message queue 2023-08-16 21:53:59 +02:00
Nicolas Meienberger
a15a4f602a refactor: import from packages/shared and remove duplicate code 2023-08-16 21:53:59 +02:00
Nicolas Meienberger
da9fa0d72a feat: create shared package between main app and cli 2023-08-16 21:53:59 +02:00
Nicolas Meienberger
ceba313ade refactor: translate bash scripts to node in packages/cli 2023-08-16 21:53:59 +02:00
Nicolas Meienberger
8fc132f3d0 feat: create new cli package 2023-08-16 21:53:59 +02:00
allcontributors[bot]
4faaec3129 docs: update .all-contributorsrc [skip ci] 2023-08-15 22:03:37 +02:00
allcontributors[bot]
b4672d434b docs: update README.md [skip ci] 2023-08-15 22:03:37 +02:00
allcontributors[bot]
cf5816962b docs: update .all-contributorsrc [skip ci] 2023-08-10 00:24:31 +02:00
allcontributors[bot]
e2b393a6d5 docs: update README.md [skip ci] 2023-08-10 00:24:31 +02:00
Nicolas Meienberger
08ec2b8ea0 ci: checkout code before creating tag 2023-08-05 16:29:21 +02:00
Nicolas Meienberger
2ed8fa934d ci: add alpha release workflow 2023-08-05 16:26:00 +02:00
Osco
ab53304c38 Enable TLS and Attach to Traefik CertResolver 2023-07-18 13:38:14 +02:00
allcontributors[bot]
73679aca7c docs: update .all-contributorsrc [skip ci] 2023-07-17 19:02:45 +02:00
allcontributors[bot]
de650d3322 docs: update README.md [skip ci] 2023-07-17 19:02:45 +02:00
allcontributors[bot]
e83fab9b72 docs: update .all-contributorsrc [skip ci] 2023-07-17 19:01:21 +02:00
allcontributors[bot]
dafe690207 docs: update README.md [skip ci] 2023-07-17 19:01:21 +02:00
Nicolas Meienberger
47f8e8dda1 New translations en.json (Greek) 2023-07-17 18:59:56 +02:00
Nicolas Meienberger
971f79e218 New translations en.json (Greek) 2023-07-17 18:59:56 +02:00
Nicolas Meienberger
7c4a2120e1 New translations en.json (Turkish) 2023-07-17 18:59:56 +02:00
Nicolas Meienberger
69fd75ce72 New translations en.json (Turkish) 2023-07-17 18:59:56 +02:00
Nicolas Meienberger
39b2afb418 New translations en.json (Portuguese) 2023-07-17 18:59:56 +02:00
Nicolas Meienberger
8453eebcd1 feat: add APP_HOST variable and refactor fs mocks with memfs 2023-07-06 00:44:49 +02:00
Nicolas Meienberger
db4923b9e7
Release/1.5.2 (#576)
* feat: run migrations before starting dev server

* chore(deps-dev): bump @types/react-dom from 18.2.4 to 18.2.5

Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 18.2.4 to 18.2.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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @types/node from 20.2.5 to 20.3.1

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.2.5 to 20.3.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-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update dependabot.yml

* Update dependabot.yml

* Update dependabot.yml

* New Crowdin updates (#472)

* Update dependabot.yml

* chore(deps-dev): bump @types/pg from 8.6.6 to 8.10.2

Bumps [@types/pg](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/pg) from 8.6.6 to 8.10.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/pg)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump eslint-config-next from 13.4.4 to 13.4.5

Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.4.4 to 13.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/v13.4.5/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump web-push from 3.6.1 to 3.6.2

Bumps [web-push](https://github.com/web-push-libs/web-push) from 3.6.1 to 3.6.2.
- [Release notes](https://github.com/web-push-libs/web-push/releases)
- [Commits](https://github.com/web-push-libs/web-push/compare/v3.6.1...v3.6.2)

---
updated-dependencies:
- dependency-name: web-push
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @playwright/test from 1.35.0 to 1.35.1

Bumps [@playwright/test](https://github.com/Microsoft/playwright) from 1.35.0 to 1.35.1.
- [Release notes](https://github.com/Microsoft/playwright/releases)
- [Commits](https://github.com/Microsoft/playwright/compare/v1.35.0...v1.35.1)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @typescript-eslint/eslint-plugin

Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.59.6 to 5.59.11.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.11/packages/eslint-plugin)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump msw from 1.2.1 to 1.2.2

Bumps [msw](https://github.com/mswjs/msw) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v1.2.1...v1.2.2)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @babel/core from 7.21.8 to 7.22.5

Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.21.8 to 7.22.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.22.5/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump tslib from 2.5.2 to 2.5.3

Bumps [tslib](https://github.com/Microsoft/tslib) from 2.5.2 to 2.5.3.
- [Release notes](https://github.com/Microsoft/tslib/releases)
- [Commits](https://github.com/Microsoft/tslib/compare/2.5.2...v2.5.3)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump winston from 3.8.2 to 3.9.0

Bumps [winston](https://github.com/winstonjs/winston) from 3.8.2 to 3.9.0.
- [Release notes](https://github.com/winstonjs/winston/releases)
- [Changelog](https://github.com/winstonjs/winston/blob/master/CHANGELOG.md)
- [Commits](https://github.com/winstonjs/winston/compare/v3.8.2...v3.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump eslint-plugin-jsdoc from 46.0.0 to 46.2.6

Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 46.0.0 to 46.2.6.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.0.0...v46.2.6)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump @radix-ui/react-dialog from 1.0.3 to 1.0.4

Bumps [@radix-ui/react-dialog](https://github.com/radix-ui/primitives) from 1.0.3 to 1.0.4.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-dialog"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump next-intl from 2.14.2 to 2.14.6

Bumps [next-intl](https://github.com/amannn/next-intl) from 2.14.2 to 2.14.6.
- [Changelog](https://github.com/amannn/next-intl/blob/main/CHANGELOG.md)
- [Commits](https://github.com/amannn/next-intl/compare/v2.14.2...v2.14.6)

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

Signed-off-by: dependabot[bot] <support@github.com>

* Update README.md

* chore(deps): bump react-hook-form from 7.43.9 to 7.44.3

Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.43.9 to 7.44.3.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.43.9...v7.44.3)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @typescript-eslint/parser from 5.59.6 to 5.59.11

Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.59.6 to 5.59.11.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.11/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @testing-library/dom from 9.3.0 to 9.3.1

Bumps [@testing-library/dom](https://github.com/testing-library/dom-testing-library) from 9.3.0 to 9.3.1.
- [Release notes](https://github.com/testing-library/dom-testing-library/releases)
- [Changelog](https://github.com/testing-library/dom-testing-library/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/dom-testing-library/compare/v9.3.0...v9.3.1)

---
updated-dependencies:
- dependency-name: "@testing-library/dom"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump @tabler/icons-react from 2.19.0 to 2.22.0

Bumps [@tabler/icons-react](https://github.com/tabler/tabler-icons/tree/HEAD/packages/icons-react) from 2.19.0 to 2.22.0.
- [Release notes](https://github.com/tabler/tabler-icons/releases)
- [Commits](https://github.com/tabler/tabler-icons/commits/v2.22.0/packages/icons-react)

---
updated-dependencies:
- dependency-name: "@tabler/icons-react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump @radix-ui/react-tabs from 1.0.3 to 1.0.4

Bumps [@radix-ui/react-tabs](https://github.com/radix-ui/primitives) from 1.0.3 to 1.0.4.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-tabs"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump @radix-ui/react-switch from 1.0.2 to 1.0.3

Bumps [@radix-ui/react-switch](https://github.com/radix-ui/primitives) from 1.0.2 to 1.0.3.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-switch"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @types/react from 18.2.10 to 18.2.12

Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.10 to 18.2.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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump redis from 4.6.6 to 4.6.7

Bumps [redis](https://github.com/redis/node-redis) from 4.6.6 to 4.6.7.
- [Release notes](https://github.com/redis/node-redis/releases)
- [Changelog](https://github.com/redis/node-redis/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/node-redis/compare/redis@4.6.6...redis@4.6.7)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump @hookform/resolvers from 3.1.0 to 3.1.1

Bumps [@hookform/resolvers](https://github.com/react-hook-form/resolvers) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/react-hook-form/resolvers/releases)
- [Commits](https://github.com/react-hook-form/resolvers/compare/v3.1.0...v3.1.1)

---
updated-dependencies:
- dependency-name: "@hookform/resolvers"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump semver from 7.5.1 to 7.5.2

Bumps [semver](https://github.com/npm/node-semver) from 7.5.1 to 7.5.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.5.1...v7.5.2)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump next from 13.4.4 to 13.4.6

Bumps [next](https://github.com/vercel/next.js) from 13.4.4 to 13.4.6.
- [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/v13.4.4...v13.4.6)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump drizzle-kit from 0.18.0 to 0.18.1

Bumps [drizzle-kit](https://github.com/drizzle-team/drizzle-kit-mirror) from 0.18.0 to 0.18.1.
- [Release notes](https://github.com/drizzle-team/drizzle-kit-mirror/releases)
- [Commits](https://github.com/drizzle-team/drizzle-kit-mirror/compare/v0.18.0...v0.18.1)

---
updated-dependencies:
- dependency-name: drizzle-kit
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump @radix-ui/react-select from 1.2.1 to 1.2.2

Bumps [@radix-ui/react-select](https://github.com/radix-ui/primitives) from 1.2.1 to 1.2.2.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-select"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump cookies-next from 2.1.1 to 2.1.2

Bumps [cookies-next](https://github.com/andreizanik/cookies-next) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/andreizanik/cookies-next/releases)
- [Commits](https://github.com/andreizanik/cookies-next/compare/v2.1.1...v2.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump eslint-config-next from 13.4.5 to 13.4.6

Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.4.5 to 13.4.6.
- [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/v13.4.6/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>

* New Crowdin updates (#510)

* New translations en.json (Vietnamese)

* New translations en.json (Vietnamese)

* fix: hide open with internal ip if force_expose is true

* feat: enable new language vietnamese

* fix(install.sh): keep local certificate when updating

* docs: add nghialele as a contributor for translation (#511)

* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>

* chore(deps-dev): bump eslint from 8.42.0 to 8.43.0

Bumps [eslint](https://github.com/eslint/eslint) from 8.42.0 to 8.43.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.42.0...v8.43.0)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump react-hook-form from 7.44.3 to 7.45.0

Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.44.3 to 7.45.0.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.44.3...v7.45.0)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Modify configure.sh to try using an AUR helper

When installing packages, if `pacman` doesn't find it in any of it's repositories, try installing it from the AUR using `yay`.

* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

* chore(deps-dev): bump drizzle-kit from 0.18.1 to 0.19.1

Bumps [drizzle-kit](https://github.com/drizzle-team/drizzle-kit-mirror) from 0.18.1 to 0.19.1.
- [Release notes](https://github.com/drizzle-team/drizzle-kit-mirror/releases)
- [Commits](https://github.com/drizzle-team/drizzle-kit-mirror/compare/v0.18.1...v0.19.1)

---
updated-dependencies:
- dependency-name: drizzle-kit
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @types/react-dom from 18.2.5 to 18.2.6

Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 18.2.5 to 18.2.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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump next-router-mock from 0.9.3 to 0.9.6

Bumps [next-router-mock](https://github.com/scottrippey/next-router-mock) from 0.9.3 to 0.9.6.
- [Commits](https://github.com/scottrippey/next-router-mock/compare/v0.9.3...v0.9.6)

---
updated-dependencies:
- dependency-name: next-router-mock
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump drizzle-orm from 0.26.5 to 0.27.0

Bumps [drizzle-orm](https://github.com/drizzle-team/drizzle-orm) from 0.26.5 to 0.27.0.
- [Release notes](https://github.com/drizzle-team/drizzle-orm/releases)
- [Commits](https://github.com/drizzle-team/drizzle-orm/compare/0.26.5...0.27.0)

---
updated-dependencies:
- dependency-name: drizzle-orm
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @total-typescript/shoehorn from 0.1.0 to 0.1.1

Bumps @total-typescript/shoehorn from 0.1.0 to 0.1.1.

---
updated-dependencies:
- dependency-name: "@total-typescript/shoehorn"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump eslint-plugin-jest from 27.2.1 to 27.2.2

Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 27.2.1 to 27.2.2.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v27.2.1...v27.2.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @types/react from 18.2.12 to 18.2.13

Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.12 to 18.2.13.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @typescript-eslint/eslint-plugin

Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.59.11 to 5.60.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.60.0/packages/eslint-plugin)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump drizzle-kit from 0.19.1 to 0.19.2

Bumps [drizzle-kit](https://github.com/drizzle-team/drizzle-kit-mirror) from 0.19.1 to 0.19.2.
- [Release notes](https://github.com/drizzle-team/drizzle-kit-mirror/releases)
- [Commits](https://github.com/drizzle-team/drizzle-kit-mirror/compare/v0.19.1...v0.19.2)

---
updated-dependencies:
- dependency-name: drizzle-kit
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump next from 13.4.6 to 13.4.7

Bumps [next](https://github.com/vercel/next.js) from 13.4.6 to 13.4.7.
- [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/v13.4.6...v13.4.7)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @typescript-eslint/parser from 5.59.11 to 5.60.0

Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.59.11 to 5.60.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.60.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump next-router-mock from 0.9.6 to 0.9.7

Bumps [next-router-mock](https://github.com/scottrippey/next-router-mock) from 0.9.6 to 0.9.7.
- [Commits](https://github.com/scottrippey/next-router-mock/compare/v0.9.6...v0.9.7)

---
updated-dependencies:
- dependency-name: next-router-mock
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump sass from 1.62.1 to 1.63.6

Bumps [sass](https://github.com/sass/dart-sass) from 1.62.1 to 1.63.6.
- [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.62.1...1.63.6)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump next-intl from 2.14.6 to 2.15.1

Bumps [next-intl](https://github.com/amannn/next-intl) from 2.14.6 to 2.15.1.
- [Changelog](https://github.com/amannn/next-intl/blob/main/CHANGELOG.md)
- [Commits](https://github.com/amannn/next-intl/compare/v2.14.6...v2.15.1)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump react-tooltip from 5.13.1 to 5.14.0

Bumps [react-tooltip](https://github.com/ReactTooltip/react-tooltip) from 5.13.1 to 5.14.0.
- [Release notes](https://github.com/ReactTooltip/react-tooltip/releases)
- [Changelog](https://github.com/ReactTooltip/react-tooltip/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ReactTooltip/react-tooltip/compare/v5.13.1...v5.14.0)

---
updated-dependencies:
- dependency-name: react-tooltip
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @faker-js/faker from 8.0.1 to 8.0.2

Bumps [@faker-js/faker](https://github.com/faker-js/faker) from 8.0.1 to 8.0.2.
- [Release notes](https://github.com/faker-js/faker/releases)
- [Changelog](https://github.com/faker-js/faker/blob/next/CHANGELOG.md)
- [Commits](https://github.com/faker-js/faker/compare/v8.0.1...v8.0.2)

---
updated-dependencies:
- dependency-name: "@faker-js/faker"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump eslint-config-next from 13.4.6 to 13.4.7

Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.4.6 to 13.4.7.
- [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/v13.4.7/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump web-push from 3.6.2 to 3.6.3

Bumps [web-push](https://github.com/web-push-libs/web-push) from 3.6.2 to 3.6.3.
- [Release notes](https://github.com/web-push-libs/web-push/releases)
- [Commits](https://github.com/web-push-libs/web-push/compare/v3.6.2...v3.6.3)

---
updated-dependencies:
- dependency-name: web-push
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump react-tooltip from 5.14.0 to 5.16.1

Bumps [react-tooltip](https://github.com/ReactTooltip/react-tooltip) from 5.14.0 to 5.16.1.
- [Release notes](https://github.com/ReactTooltip/react-tooltip/releases)
- [Changelog](https://github.com/ReactTooltip/react-tooltip/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ReactTooltip/react-tooltip/compare/v5.14.0...v5.16.1)

---
updated-dependencies:
- dependency-name: react-tooltip
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump @tabler/icons-react from 2.22.0 to 2.23.0

Bumps [@tabler/icons-react](https://github.com/tabler/tabler-icons/tree/HEAD/packages/icons-react) from 2.22.0 to 2.23.0.
- [Release notes](https://github.com/tabler/tabler-icons/releases)
- [Commits](https://github.com/tabler/tabler-icons/commits/v2.23.0/packages/icons-react)

---
updated-dependencies:
- dependency-name: "@tabler/icons-react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump pg from 8.11.0 to 8.11.1

Bumps [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) from 8.11.0 to 8.11.1.
- [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianc/node-postgres/commits/pg@8.11.1/packages/pg)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump semver from 7.5.2 to 7.5.3

Bumps [semver](https://github.com/npm/node-semver) from 7.5.2 to 7.5.3.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.5.2...v7.5.3)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @typescript-eslint/parser from 5.60.0 to 5.60.1

Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.60.0 to 5.60.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.60.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump eslint-plugin-jsdoc from 46.2.6 to 46.3.0

Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 46.2.6 to 46.3.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.2.6...v46.3.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @types/node-cron from 3.0.7 to 3.0.8

Bumps [@types/node-cron](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node-cron) from 3.0.7 to 3.0.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node-cron)

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

Signed-off-by: dependabot[bot] <support@github.com>

* fix(TipiConfig): add non-app settings to the setting schema to not delete those when saving settings

* test: install vite and create base config for server testing

* test: re-create mocks for drizzle, fs-extra and redis using vi.mock

* test: migrate tests for auth.service to vitest

* chore: update lock file

* test: ignore tests folder in codecov

* ci: split build and tests

* ci: fix un-needed download-artifact

* chore(deps-dev): bump @types/node from 20.3.1 to 20.3.2

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.3.1 to 20.3.2.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @typescript-eslint/eslint-plugin

Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.60.0 to 5.60.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.60.1/packages/eslint-plugin)

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

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump @types/react from 18.2.13 to 18.2.14

Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.13 to 18.2.14.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* New translations en.json (Japanese)

* New translations en.json (Chinese Simplified)

* New translations en.json (Chinese Traditional)

* New translations en.json (Spanish)

* New translations en.json (Spanish)

* New translations en.json (Spanish)

* feat: add new language spanish

* chore: bump version to 1.5.1

* ci: fix dockerfile to copy tests folder

* chore: bump version 1.5.2

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: amusingimpala75 <69653100+amusingimpala75@users.noreply.github.com>
2023-07-05 10:29:14 +02:00
allcontributors[bot]
3b159e2235
docs: add M1n-4d316e as a contributor for translation (#564)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-06-29 08:56:06 +02:00
Nicolas Meienberger
00b269011f
Merge pull request #562 from meienberger/release/1.5.2
release: 1.5.2
2023-06-29 00:21:00 +02:00
Nicolas Meienberger
0e29f81e5a
Merge branch 'master' into release/1.5.2 2023-06-28 23:52:39 +02:00
dependabot[bot]
ac2b30df52 chore(deps): bump react-hook-form from 7.45.0 to 7.45.1
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.45.0 to 7.45.1.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.45.0...v7.45.1)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:37:09 +02:00
dependabot[bot]
adf0231b84 chore(deps-dev): bump typescript from 5.1.3 to 5.1.5
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.1.3 to 5.1.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v5.1.3...v5.1.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:35:29 +02:00
Nicolas Meienberger
38574f9d6b chore: bump version 1.5.2 2023-06-28 23:30:40 +02:00
Nicolas Meienberger
043ea6712f fix(install.sh): incorrect condition not copying traefik cert correctly 2023-06-28 23:30:12 +02:00
Nicolas Meienberger
9863155747 Merge branch 'release/1.5.1' into develop 2023-06-28 23:28:52 +02:00
Nicolas Meienberger
8785187989 ci: fix dockerfile to copy tests folder 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
0d0cbf39f8 chore: bump version to 1.5.1 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
309ddc77dd feat: add new language spanish 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
bf3f023743 New translations en.json (Spanish) 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
41edb6f7c8 New translations en.json (Spanish) 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
928b789a4e New translations en.json (Spanish) 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
c0057e0b06 New translations en.json (Chinese Traditional) 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
5ff0c9fe89 New translations en.json (Chinese Simplified) 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
e7d34755de New translations en.json (Japanese) 2023-06-28 23:10:45 +02:00
dependabot[bot]
9a65b7e293 chore(deps-dev): bump @types/react from 18.2.13 to 18.2.14
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.13 to 18.2.14.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
dbaa5e5759 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.60.0 to 5.60.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.60.1/packages/eslint-plugin)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
d149d1264c chore(deps-dev): bump @types/node from 20.3.1 to 20.3.2
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.3.1 to 20.3.2.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
Nicolas Meienberger
575a9a8fac ci: fix un-needed download-artifact 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
be4a4f0aa0 ci: split build and tests 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
1af0d8fde4 test: ignore tests folder in codecov 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
eed24135dc chore: update lock file 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
369d20e4b6 test: migrate tests for auth.service to vitest 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
9feec710bc test: re-create mocks for drizzle, fs-extra and redis using vi.mock 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
76f561ceb5 test: install vite and create base config for server testing 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
60e376f18f fix(TipiConfig): add non-app settings to the setting schema to not delete those when saving settings 2023-06-28 23:10:45 +02:00
dependabot[bot]
dfc036afee chore(deps-dev): bump @types/node-cron from 3.0.7 to 3.0.8
Bumps [@types/node-cron](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node-cron) from 3.0.7 to 3.0.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node-cron)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
2034c37223 chore(deps-dev): bump eslint-plugin-jsdoc from 46.2.6 to 46.3.0
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 46.2.6 to 46.3.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.2.6...v46.3.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
c1fab4e85e chore(deps-dev): bump @typescript-eslint/parser from 5.60.0 to 5.60.1
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.60.0 to 5.60.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.60.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
d7ef9b8373 chore(deps): bump semver from 7.5.2 to 7.5.3
Bumps [semver](https://github.com/npm/node-semver) from 7.5.2 to 7.5.3.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.5.2...v7.5.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
c40be246c5 chore(deps): bump pg from 8.11.0 to 8.11.1
Bumps [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) from 8.11.0 to 8.11.1.
- [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianc/node-postgres/commits/pg@8.11.1/packages/pg)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
d90be34d2e chore(deps): bump @tabler/icons-react from 2.22.0 to 2.23.0
Bumps [@tabler/icons-react](https://github.com/tabler/tabler-icons/tree/HEAD/packages/icons-react) from 2.22.0 to 2.23.0.
- [Release notes](https://github.com/tabler/tabler-icons/releases)
- [Commits](https://github.com/tabler/tabler-icons/commits/v2.23.0/packages/icons-react)

---
updated-dependencies:
- dependency-name: "@tabler/icons-react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
079dc4d026 chore(deps): bump react-tooltip from 5.14.0 to 5.16.1
Bumps [react-tooltip](https://github.com/ReactTooltip/react-tooltip) from 5.14.0 to 5.16.1.
- [Release notes](https://github.com/ReactTooltip/react-tooltip/releases)
- [Changelog](https://github.com/ReactTooltip/react-tooltip/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ReactTooltip/react-tooltip/compare/v5.14.0...v5.16.1)

---
updated-dependencies:
- dependency-name: react-tooltip
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
44effa540d chore(deps): bump web-push from 3.6.2 to 3.6.3
Bumps [web-push](https://github.com/web-push-libs/web-push) from 3.6.2 to 3.6.3.
- [Release notes](https://github.com/web-push-libs/web-push/releases)
- [Commits](https://github.com/web-push-libs/web-push/compare/v3.6.2...v3.6.3)

---
updated-dependencies:
- dependency-name: web-push
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
4e6f9baf8f chore(deps-dev): bump eslint-config-next from 13.4.6 to 13.4.7
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.4.6 to 13.4.7.
- [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/v13.4.7/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
c7f0062be7 chore(deps-dev): bump @faker-js/faker from 8.0.1 to 8.0.2
Bumps [@faker-js/faker](https://github.com/faker-js/faker) from 8.0.1 to 8.0.2.
- [Release notes](https://github.com/faker-js/faker/releases)
- [Changelog](https://github.com/faker-js/faker/blob/next/CHANGELOG.md)
- [Commits](https://github.com/faker-js/faker/compare/v8.0.1...v8.0.2)

---
updated-dependencies:
- dependency-name: "@faker-js/faker"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
965cd669e1 chore(deps): bump react-tooltip from 5.13.1 to 5.14.0
Bumps [react-tooltip](https://github.com/ReactTooltip/react-tooltip) from 5.13.1 to 5.14.0.
- [Release notes](https://github.com/ReactTooltip/react-tooltip/releases)
- [Changelog](https://github.com/ReactTooltip/react-tooltip/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ReactTooltip/react-tooltip/compare/v5.13.1...v5.14.0)

---
updated-dependencies:
- dependency-name: react-tooltip
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
bd0015de87 chore(deps): bump next-intl from 2.14.6 to 2.15.1
Bumps [next-intl](https://github.com/amannn/next-intl) from 2.14.6 to 2.15.1.
- [Changelog](https://github.com/amannn/next-intl/blob/main/CHANGELOG.md)
- [Commits](https://github.com/amannn/next-intl/compare/v2.14.6...v2.15.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
63868213d7 chore(deps): bump sass from 1.62.1 to 1.63.6
Bumps [sass](https://github.com/sass/dart-sass) from 1.62.1 to 1.63.6.
- [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.62.1...1.63.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
4f590aac18 chore(deps-dev): bump next-router-mock from 0.9.6 to 0.9.7
Bumps [next-router-mock](https://github.com/scottrippey/next-router-mock) from 0.9.6 to 0.9.7.
- [Commits](https://github.com/scottrippey/next-router-mock/compare/v0.9.6...v0.9.7)

---
updated-dependencies:
- dependency-name: next-router-mock
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
1a90f89858 chore(deps-dev): bump @typescript-eslint/parser from 5.59.11 to 5.60.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.59.11 to 5.60.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.60.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
708536ff5d chore(deps): bump next from 13.4.6 to 13.4.7
Bumps [next](https://github.com/vercel/next.js) from 13.4.6 to 13.4.7.
- [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/v13.4.6...v13.4.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
610d6aa50a chore(deps-dev): bump drizzle-kit from 0.19.1 to 0.19.2
Bumps [drizzle-kit](https://github.com/drizzle-team/drizzle-kit-mirror) from 0.19.1 to 0.19.2.
- [Release notes](https://github.com/drizzle-team/drizzle-kit-mirror/releases)
- [Commits](https://github.com/drizzle-team/drizzle-kit-mirror/compare/v0.19.1...v0.19.2)

---
updated-dependencies:
- dependency-name: drizzle-kit
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
99bf86e94e chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.59.11 to 5.60.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.60.0/packages/eslint-plugin)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
b2d84b8a31 chore(deps-dev): bump @types/react from 18.2.12 to 18.2.13
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.12 to 18.2.13.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
ab142eacbd chore(deps-dev): bump eslint-plugin-jest from 27.2.1 to 27.2.2
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 27.2.1 to 27.2.2.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v27.2.1...v27.2.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
ae6bd40bf0 chore(deps-dev): bump @total-typescript/shoehorn from 0.1.0 to 0.1.1
Bumps @total-typescript/shoehorn from 0.1.0 to 0.1.1.

---
updated-dependencies:
- dependency-name: "@total-typescript/shoehorn"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
afcf593d42 chore(deps): bump drizzle-orm from 0.26.5 to 0.27.0
Bumps [drizzle-orm](https://github.com/drizzle-team/drizzle-orm) from 0.26.5 to 0.27.0.
- [Release notes](https://github.com/drizzle-team/drizzle-orm/releases)
- [Commits](https://github.com/drizzle-team/drizzle-orm/compare/0.26.5...0.27.0)

---
updated-dependencies:
- dependency-name: drizzle-orm
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
c70d7282dc chore(deps-dev): bump next-router-mock from 0.9.3 to 0.9.6
Bumps [next-router-mock](https://github.com/scottrippey/next-router-mock) from 0.9.3 to 0.9.6.
- [Commits](https://github.com/scottrippey/next-router-mock/compare/v0.9.3...v0.9.6)

---
updated-dependencies:
- dependency-name: next-router-mock
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
f6247b993b chore(deps-dev): bump @types/react-dom from 18.2.5 to 18.2.6
Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 18.2.5 to 18.2.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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
c08a374df2 chore(deps-dev): bump drizzle-kit from 0.18.1 to 0.19.1
Bumps [drizzle-kit](https://github.com/drizzle-team/drizzle-kit-mirror) from 0.18.1 to 0.19.1.
- [Release notes](https://github.com/drizzle-team/drizzle-kit-mirror/releases)
- [Commits](https://github.com/drizzle-team/drizzle-kit-mirror/compare/v0.18.1...v0.19.1)

---
updated-dependencies:
- dependency-name: drizzle-kit
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
allcontributors[bot]
868bd0c958 docs: update .all-contributorsrc [skip ci] 2023-06-28 23:10:45 +02:00
allcontributors[bot]
180631efd7 docs: update README.md [skip ci] 2023-06-28 23:10:45 +02:00
amusingimpala75
fcb874600e Modify configure.sh to try using an AUR helper
When installing packages, if `pacman` doesn't find it in any of it's repositories, try installing it from the AUR using `yay`.
2023-06-28 23:10:45 +02:00
dependabot[bot]
ade2969360 chore(deps): bump react-hook-form from 7.44.3 to 7.45.0
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.44.3 to 7.45.0.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.44.3...v7.45.0)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
6aa4498818 chore(deps-dev): bump eslint from 8.42.0 to 8.43.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.42.0 to 8.43.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.42.0...v8.43.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
allcontributors[bot]
ea8eed1e9f docs: add nghialele as a contributor for translation (#511)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-06-28 23:10:45 +02:00
Nicolas Meienberger
f31b312c2d fix(install.sh): keep local certificate when updating 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
077977bab1 feat: enable new language vietnamese 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
a463ea2736 fix: hide open with internal ip if force_expose is true 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
1d85601b27 New Crowdin updates (#510)
* New translations en.json (Vietnamese)

* New translations en.json (Vietnamese)
2023-06-28 23:10:45 +02:00
dependabot[bot]
13678db8b9 chore(deps-dev): bump eslint-config-next from 13.4.5 to 13.4.6
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.4.5 to 13.4.6.
- [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/v13.4.6/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
591443a90a chore(deps): bump cookies-next from 2.1.1 to 2.1.2
Bumps [cookies-next](https://github.com/andreizanik/cookies-next) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/andreizanik/cookies-next/releases)
- [Commits](https://github.com/andreizanik/cookies-next/compare/v2.1.1...v2.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
3d69de5d92 chore(deps): bump @radix-ui/react-select from 1.2.1 to 1.2.2
Bumps [@radix-ui/react-select](https://github.com/radix-ui/primitives) from 1.2.1 to 1.2.2.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-select"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
68a6f6357a chore(deps-dev): bump drizzle-kit from 0.18.0 to 0.18.1
Bumps [drizzle-kit](https://github.com/drizzle-team/drizzle-kit-mirror) from 0.18.0 to 0.18.1.
- [Release notes](https://github.com/drizzle-team/drizzle-kit-mirror/releases)
- [Commits](https://github.com/drizzle-team/drizzle-kit-mirror/compare/v0.18.0...v0.18.1)

---
updated-dependencies:
- dependency-name: drizzle-kit
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
64d41ecf71 chore(deps): bump next from 13.4.4 to 13.4.6
Bumps [next](https://github.com/vercel/next.js) from 13.4.4 to 13.4.6.
- [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/v13.4.4...v13.4.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
ef78c8afaa chore(deps): bump semver from 7.5.1 to 7.5.2
Bumps [semver](https://github.com/npm/node-semver) from 7.5.1 to 7.5.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.5.1...v7.5.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
19436626fb chore(deps): bump @hookform/resolvers from 3.1.0 to 3.1.1
Bumps [@hookform/resolvers](https://github.com/react-hook-form/resolvers) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/react-hook-form/resolvers/releases)
- [Commits](https://github.com/react-hook-form/resolvers/compare/v3.1.0...v3.1.1)

---
updated-dependencies:
- dependency-name: "@hookform/resolvers"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
ce6846862e chore(deps): bump redis from 4.6.6 to 4.6.7
Bumps [redis](https://github.com/redis/node-redis) from 4.6.6 to 4.6.7.
- [Release notes](https://github.com/redis/node-redis/releases)
- [Changelog](https://github.com/redis/node-redis/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/node-redis/compare/redis@4.6.6...redis@4.6.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
96a30437ae chore(deps-dev): bump @types/react from 18.2.10 to 18.2.12
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.10 to 18.2.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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
818d7d3b94 chore(deps): bump @radix-ui/react-switch from 1.0.2 to 1.0.3
Bumps [@radix-ui/react-switch](https://github.com/radix-ui/primitives) from 1.0.2 to 1.0.3.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-switch"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
9945d5d728 chore(deps): bump @radix-ui/react-tabs from 1.0.3 to 1.0.4
Bumps [@radix-ui/react-tabs](https://github.com/radix-ui/primitives) from 1.0.3 to 1.0.4.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-tabs"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
6803e9a619 chore(deps): bump @tabler/icons-react from 2.19.0 to 2.22.0
Bumps [@tabler/icons-react](https://github.com/tabler/tabler-icons/tree/HEAD/packages/icons-react) from 2.19.0 to 2.22.0.
- [Release notes](https://github.com/tabler/tabler-icons/releases)
- [Commits](https://github.com/tabler/tabler-icons/commits/v2.22.0/packages/icons-react)

---
updated-dependencies:
- dependency-name: "@tabler/icons-react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
eaadb514c8 chore(deps-dev): bump @testing-library/dom from 9.3.0 to 9.3.1
Bumps [@testing-library/dom](https://github.com/testing-library/dom-testing-library) from 9.3.0 to 9.3.1.
- [Release notes](https://github.com/testing-library/dom-testing-library/releases)
- [Changelog](https://github.com/testing-library/dom-testing-library/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/dom-testing-library/compare/v9.3.0...v9.3.1)

---
updated-dependencies:
- dependency-name: "@testing-library/dom"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
0af30663e4 chore(deps-dev): bump @typescript-eslint/parser from 5.59.6 to 5.59.11
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.59.6 to 5.59.11.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.11/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
7942250dee chore(deps): bump react-hook-form from 7.43.9 to 7.44.3
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.43.9 to 7.44.3.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.43.9...v7.44.3)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
Nicolas Meienberger
280a035ce2 Update README.md 2023-06-28 23:10:45 +02:00
dependabot[bot]
4476ee80c4 chore(deps): bump next-intl from 2.14.2 to 2.14.6
Bumps [next-intl](https://github.com/amannn/next-intl) from 2.14.2 to 2.14.6.
- [Changelog](https://github.com/amannn/next-intl/blob/main/CHANGELOG.md)
- [Commits](https://github.com/amannn/next-intl/compare/v2.14.2...v2.14.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
930254e0be chore(deps): bump @radix-ui/react-dialog from 1.0.3 to 1.0.4
Bumps [@radix-ui/react-dialog](https://github.com/radix-ui/primitives) from 1.0.3 to 1.0.4.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-dialog"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
b4ce06e5e2 chore(deps-dev): bump eslint-plugin-jsdoc from 46.0.0 to 46.2.6
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 46.0.0 to 46.2.6.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.0.0...v46.2.6)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
b567ee1f74 chore(deps): bump winston from 3.8.2 to 3.9.0
Bumps [winston](https://github.com/winstonjs/winston) from 3.8.2 to 3.9.0.
- [Release notes](https://github.com/winstonjs/winston/releases)
- [Changelog](https://github.com/winstonjs/winston/blob/master/CHANGELOG.md)
- [Commits](https://github.com/winstonjs/winston/compare/v3.8.2...v3.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
ce83e0b284 chore(deps): bump tslib from 2.5.2 to 2.5.3
Bumps [tslib](https://github.com/Microsoft/tslib) from 2.5.2 to 2.5.3.
- [Release notes](https://github.com/Microsoft/tslib/releases)
- [Commits](https://github.com/Microsoft/tslib/compare/2.5.2...v2.5.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
6f2240abd8 chore(deps-dev): bump @babel/core from 7.21.8 to 7.22.5
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.21.8 to 7.22.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.22.5/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
d9a5930c35 chore(deps-dev): bump msw from 1.2.1 to 1.2.2
Bumps [msw](https://github.com/mswjs/msw) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v1.2.1...v1.2.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
ee8153844d chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.59.6 to 5.59.11.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.11/packages/eslint-plugin)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
4abc6e8647 chore(deps-dev): bump @playwright/test from 1.35.0 to 1.35.1
Bumps [@playwright/test](https://github.com/Microsoft/playwright) from 1.35.0 to 1.35.1.
- [Release notes](https://github.com/Microsoft/playwright/releases)
- [Commits](https://github.com/Microsoft/playwright/compare/v1.35.0...v1.35.1)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
0f8203715e chore(deps): bump web-push from 3.6.1 to 3.6.2
Bumps [web-push](https://github.com/web-push-libs/web-push) from 3.6.1 to 3.6.2.
- [Release notes](https://github.com/web-push-libs/web-push/releases)
- [Commits](https://github.com/web-push-libs/web-push/compare/v3.6.1...v3.6.2)

---
updated-dependencies:
- dependency-name: web-push
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
211b78883b chore(deps-dev): bump eslint-config-next from 13.4.4 to 13.4.5
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.4.4 to 13.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/v13.4.5/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
149d097e07 chore(deps-dev): bump @types/pg from 8.6.6 to 8.10.2
Bumps [@types/pg](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/pg) from 8.6.6 to 8.10.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/pg)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
Nicolas Meienberger
c336bb8636 Update dependabot.yml 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
403de89391 New Crowdin updates (#472) 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
4bb42db073 Update dependabot.yml 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
30471226c2 Update dependabot.yml 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
3db4a53131 Update dependabot.yml 2023-06-28 23:10:45 +02:00
dependabot[bot]
0509d8e9a4 chore(deps-dev): bump @types/node from 20.2.5 to 20.3.1
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.2.5 to 20.3.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-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
dependabot[bot]
6899f7e1b4 chore(deps-dev): bump @types/react-dom from 18.2.4 to 18.2.5
Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 18.2.4 to 18.2.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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 23:10:45 +02:00
Nicolas Meienberger
d54ddc6dd7 feat: run migrations before starting dev server 2023-06-28 23:10:45 +02:00
Nicolas Meienberger
f3d3cfac07 ci: fix dockerfile to copy tests folder 2023-06-28 22:46:18 +02:00
Nicolas Meienberger
0555a7f321 Merge branch 'master' into release/1.5.1 2023-06-28 22:42:18 +02:00
Nicolas Meienberger
8e470576b2 chore: bump version to 1.5.1 2023-06-28 22:17:38 +02:00
Nicolas Meienberger
3e8ca5a724 feat: add new language spanish 2023-06-28 19:05:35 +02:00
Nicolas Meienberger
494e997dc4 New translations en.json (Spanish) 2023-06-28 19:04:16 +02:00
Nicolas Meienberger
b122e1a2dd New translations en.json (Spanish) 2023-06-28 19:04:16 +02:00
Nicolas Meienberger
e3a744f4a9 New translations en.json (Spanish) 2023-06-28 19:04:16 +02:00
Nicolas Meienberger
8fdf2f0c8d New translations en.json (Chinese Traditional) 2023-06-28 19:04:16 +02:00
Nicolas Meienberger
89c04f649c New translations en.json (Chinese Simplified) 2023-06-28 19:04:16 +02:00
Nicolas Meienberger
72fec3208d New translations en.json (Japanese) 2023-06-28 19:04:16 +02:00
dependabot[bot]
fddb338b7e chore(deps-dev): bump @types/react from 18.2.13 to 18.2.14
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.13 to 18.2.14.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 19:03:22 +02:00
dependabot[bot]
cce8bd2cf0 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.60.0 to 5.60.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.60.1/packages/eslint-plugin)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 18:58:12 +02:00
dependabot[bot]
b694465588 chore(deps-dev): bump @types/node from 20.3.1 to 20.3.2
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.3.1 to 20.3.2.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 18:51:36 +02:00
Nicolas Meienberger
c2f7f19b84 ci: fix un-needed download-artifact 2023-06-28 18:47:18 +02:00
Nicolas Meienberger
ca64b1b3c9 ci: split build and tests 2023-06-28 18:45:01 +02:00
Nicolas Meienberger
dccf80759a test: ignore tests folder in codecov 2023-06-28 09:01:41 +02:00
Nicolas Meienberger
2c4107a3a9 chore: update lock file 2023-06-28 09:01:41 +02:00
Nicolas Meienberger
94553f35d1 test: migrate tests for auth.service to vitest 2023-06-28 09:01:41 +02:00
Nicolas Meienberger
b9402dd333 test: re-create mocks for drizzle, fs-extra and redis using vi.mock 2023-06-28 09:01:41 +02:00
Nicolas Meienberger
c85374c0e5 test: install vite and create base config for server testing 2023-06-28 09:01:41 +02:00
Nicolas Meienberger
6d0f32ef8a fix(TipiConfig): add non-app settings to the setting schema to not delete those when saving settings 2023-06-28 08:43:00 +02:00
dependabot[bot]
5d47eac487 chore(deps-dev): bump @types/node-cron from 3.0.7 to 3.0.8
Bumps [@types/node-cron](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node-cron) from 3.0.7 to 3.0.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node-cron)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 08:13:00 +02:00
dependabot[bot]
4b7f767e60 chore(deps-dev): bump eslint-plugin-jsdoc from 46.2.6 to 46.3.0
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 46.2.6 to 46.3.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.2.6...v46.3.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 08:12:30 +02:00
dependabot[bot]
9530461b1f chore(deps-dev): bump @typescript-eslint/parser from 5.60.0 to 5.60.1
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.60.0 to 5.60.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.60.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 08:11:31 +02:00
dependabot[bot]
b34bcde4bb chore(deps): bump semver from 7.5.2 to 7.5.3
Bumps [semver](https://github.com/npm/node-semver) from 7.5.2 to 7.5.3.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.5.2...v7.5.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 08:10:35 +02:00
dependabot[bot]
79eb1f04f0 chore(deps): bump pg from 8.11.0 to 8.11.1
Bumps [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) from 8.11.0 to 8.11.1.
- [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianc/node-postgres/commits/pg@8.11.1/packages/pg)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 08:09:45 +02:00
dependabot[bot]
fe981bcf7f chore(deps): bump @tabler/icons-react from 2.22.0 to 2.23.0
Bumps [@tabler/icons-react](https://github.com/tabler/tabler-icons/tree/HEAD/packages/icons-react) from 2.22.0 to 2.23.0.
- [Release notes](https://github.com/tabler/tabler-icons/releases)
- [Commits](https://github.com/tabler/tabler-icons/commits/v2.23.0/packages/icons-react)

---
updated-dependencies:
- dependency-name: "@tabler/icons-react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 08:09:07 +02:00
dependabot[bot]
64a7bd8cee chore(deps): bump react-tooltip from 5.14.0 to 5.16.1
Bumps [react-tooltip](https://github.com/ReactTooltip/react-tooltip) from 5.14.0 to 5.16.1.
- [Release notes](https://github.com/ReactTooltip/react-tooltip/releases)
- [Changelog](https://github.com/ReactTooltip/react-tooltip/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ReactTooltip/react-tooltip/compare/v5.14.0...v5.16.1)

---
updated-dependencies:
- dependency-name: react-tooltip
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 08:08:18 +02:00
dependabot[bot]
dcad4f7d75 chore(deps): bump web-push from 3.6.2 to 3.6.3
Bumps [web-push](https://github.com/web-push-libs/web-push) from 3.6.2 to 3.6.3.
- [Release notes](https://github.com/web-push-libs/web-push/releases)
- [Commits](https://github.com/web-push-libs/web-push/compare/v3.6.2...v3.6.3)

---
updated-dependencies:
- dependency-name: web-push
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-22 23:43:38 +02:00
dependabot[bot]
f0b8878f74 chore(deps-dev): bump eslint-config-next from 13.4.6 to 13.4.7
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.4.6 to 13.4.7.
- [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/v13.4.7/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-22 23:42:44 +02:00
dependabot[bot]
92ae63aa9c chore(deps-dev): bump @faker-js/faker from 8.0.1 to 8.0.2
Bumps [@faker-js/faker](https://github.com/faker-js/faker) from 8.0.1 to 8.0.2.
- [Release notes](https://github.com/faker-js/faker/releases)
- [Changelog](https://github.com/faker-js/faker/blob/next/CHANGELOG.md)
- [Commits](https://github.com/faker-js/faker/compare/v8.0.1...v8.0.2)

---
updated-dependencies:
- dependency-name: "@faker-js/faker"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-22 23:40:48 +02:00
dependabot[bot]
9fd40a320d chore(deps): bump react-tooltip from 5.13.1 to 5.14.0
Bumps [react-tooltip](https://github.com/ReactTooltip/react-tooltip) from 5.13.1 to 5.14.0.
- [Release notes](https://github.com/ReactTooltip/react-tooltip/releases)
- [Changelog](https://github.com/ReactTooltip/react-tooltip/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ReactTooltip/react-tooltip/compare/v5.13.1...v5.14.0)

---
updated-dependencies:
- dependency-name: react-tooltip
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-22 23:36:05 +02:00
dependabot[bot]
1424ae31d5 chore(deps): bump next-intl from 2.14.6 to 2.15.1
Bumps [next-intl](https://github.com/amannn/next-intl) from 2.14.6 to 2.15.1.
- [Changelog](https://github.com/amannn/next-intl/blob/main/CHANGELOG.md)
- [Commits](https://github.com/amannn/next-intl/compare/v2.14.6...v2.15.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-22 23:35:09 +02:00
dependabot[bot]
f33317361e chore(deps): bump sass from 1.62.1 to 1.63.6
Bumps [sass](https://github.com/sass/dart-sass) from 1.62.1 to 1.63.6.
- [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.62.1...1.63.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-22 23:34:41 +02:00
dependabot[bot]
51d6450789 chore(deps-dev): bump next-router-mock from 0.9.6 to 0.9.7
Bumps [next-router-mock](https://github.com/scottrippey/next-router-mock) from 0.9.6 to 0.9.7.
- [Commits](https://github.com/scottrippey/next-router-mock/compare/v0.9.6...v0.9.7)

---
updated-dependencies:
- dependency-name: next-router-mock
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-22 23:34:08 +02:00
dependabot[bot]
f1703f8c2d chore(deps-dev): bump @typescript-eslint/parser from 5.59.11 to 5.60.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.59.11 to 5.60.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.60.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-22 23:33:40 +02:00
dependabot[bot]
9d63adefc5 chore(deps): bump next from 13.4.6 to 13.4.7
Bumps [next](https://github.com/vercel/next.js) from 13.4.6 to 13.4.7.
- [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/v13.4.6...v13.4.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-22 23:23:33 +02:00
dependabot[bot]
d6fd5e1a03 chore(deps-dev): bump drizzle-kit from 0.19.1 to 0.19.2
Bumps [drizzle-kit](https://github.com/drizzle-team/drizzle-kit-mirror) from 0.19.1 to 0.19.2.
- [Release notes](https://github.com/drizzle-team/drizzle-kit-mirror/releases)
- [Commits](https://github.com/drizzle-team/drizzle-kit-mirror/compare/v0.19.1...v0.19.2)

---
updated-dependencies:
- dependency-name: drizzle-kit
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-22 23:21:50 +02:00
dependabot[bot]
8616e20668 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.59.11 to 5.60.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.60.0/packages/eslint-plugin)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-20 09:06:53 +02:00
dependabot[bot]
cb64dc8b7c chore(deps-dev): bump @types/react from 18.2.12 to 18.2.13
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.12 to 18.2.13.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-20 09:06:28 +02:00
dependabot[bot]
032675ffb9 chore(deps-dev): bump eslint-plugin-jest from 27.2.1 to 27.2.2
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 27.2.1 to 27.2.2.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v27.2.1...v27.2.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-20 08:45:30 +02:00
dependabot[bot]
5cebfc0f8d chore(deps-dev): bump @total-typescript/shoehorn from 0.1.0 to 0.1.1
Bumps @total-typescript/shoehorn from 0.1.0 to 0.1.1.

---
updated-dependencies:
- dependency-name: "@total-typescript/shoehorn"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-20 08:45:07 +02:00
dependabot[bot]
68d7fe8cf2 chore(deps): bump drizzle-orm from 0.26.5 to 0.27.0
Bumps [drizzle-orm](https://github.com/drizzle-team/drizzle-orm) from 0.26.5 to 0.27.0.
- [Release notes](https://github.com/drizzle-team/drizzle-orm/releases)
- [Commits](https://github.com/drizzle-team/drizzle-orm/compare/0.26.5...0.27.0)

---
updated-dependencies:
- dependency-name: drizzle-orm
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-20 08:44:49 +02:00
dependabot[bot]
5b7ed1e94e chore(deps-dev): bump next-router-mock from 0.9.3 to 0.9.6
Bumps [next-router-mock](https://github.com/scottrippey/next-router-mock) from 0.9.3 to 0.9.6.
- [Commits](https://github.com/scottrippey/next-router-mock/compare/v0.9.3...v0.9.6)

---
updated-dependencies:
- dependency-name: next-router-mock
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-20 08:43:54 +02:00
dependabot[bot]
75b2b4169a chore(deps-dev): bump @types/react-dom from 18.2.5 to 18.2.6
Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 18.2.5 to 18.2.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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-20 08:43:39 +02:00
dependabot[bot]
eabb2795fd chore(deps-dev): bump drizzle-kit from 0.18.1 to 0.19.1
Bumps [drizzle-kit](https://github.com/drizzle-team/drizzle-kit-mirror) from 0.18.1 to 0.19.1.
- [Release notes](https://github.com/drizzle-team/drizzle-kit-mirror/releases)
- [Commits](https://github.com/drizzle-team/drizzle-kit-mirror/compare/v0.18.1...v0.19.1)

---
updated-dependencies:
- dependency-name: drizzle-kit
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-20 08:43:21 +02:00
allcontributors[bot]
b339d2605b docs: update .all-contributorsrc [skip ci] 2023-06-20 08:40:08 +02:00
allcontributors[bot]
65d94651d6 docs: update README.md [skip ci] 2023-06-20 08:40:08 +02:00
amusingimpala75
75b978ac6a Modify configure.sh to try using an AUR helper
When installing packages, if `pacman` doesn't find it in any of it's repositories, try installing it from the AUR using `yay`.
2023-06-20 08:38:01 +02:00
dependabot[bot]
137b870e96 chore(deps): bump react-hook-form from 7.44.3 to 7.45.0
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.44.3 to 7.45.0.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.44.3...v7.45.0)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-20 08:35:49 +02:00
dependabot[bot]
0de2dce4be chore(deps-dev): bump eslint from 8.42.0 to 8.43.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.42.0 to 8.43.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.42.0...v8.43.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-20 08:34:17 +02:00
allcontributors[bot]
a2c69a9b0a
docs: add nghialele as a contributor for translation (#511)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-06-18 19:11:01 +02:00
Nicolas Meienberger
9b632250a7 fix(install.sh): keep local certificate when updating 2023-06-18 18:36:06 +02:00
Nicolas Meienberger
89e7bd337c feat: enable new language vietnamese 2023-06-18 18:21:40 +02:00
Nicolas Meienberger
bea4268aaf fix: hide open with internal ip if force_expose is true 2023-06-18 18:21:36 +02:00
Nicolas Meienberger
d3cf19becc
New Crowdin updates (#510)
* New translations en.json (Vietnamese)

* New translations en.json (Vietnamese)
2023-06-18 11:19:46 +02:00
dependabot[bot]
5bb39f3ee2 chore(deps-dev): bump eslint-config-next from 13.4.5 to 13.4.6
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.4.5 to 13.4.6.
- [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/v13.4.6/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 11:44:36 +02:00
dependabot[bot]
03d9280dcf chore(deps): bump cookies-next from 2.1.1 to 2.1.2
Bumps [cookies-next](https://github.com/andreizanik/cookies-next) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/andreizanik/cookies-next/releases)
- [Commits](https://github.com/andreizanik/cookies-next/compare/v2.1.1...v2.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 11:43:36 +02:00
dependabot[bot]
dda96d6401 chore(deps): bump @radix-ui/react-select from 1.2.1 to 1.2.2
Bumps [@radix-ui/react-select](https://github.com/radix-ui/primitives) from 1.2.1 to 1.2.2.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-select"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 11:43:18 +02:00
dependabot[bot]
62700d68e9 chore(deps-dev): bump drizzle-kit from 0.18.0 to 0.18.1
Bumps [drizzle-kit](https://github.com/drizzle-team/drizzle-kit-mirror) from 0.18.0 to 0.18.1.
- [Release notes](https://github.com/drizzle-team/drizzle-kit-mirror/releases)
- [Commits](https://github.com/drizzle-team/drizzle-kit-mirror/compare/v0.18.0...v0.18.1)

---
updated-dependencies:
- dependency-name: drizzle-kit
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 11:36:17 +02:00
dependabot[bot]
b48a337b58 chore(deps): bump next from 13.4.4 to 13.4.6
Bumps [next](https://github.com/vercel/next.js) from 13.4.4 to 13.4.6.
- [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/v13.4.4...v13.4.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 11:35:57 +02:00
dependabot[bot]
59a7496564 chore(deps): bump semver from 7.5.1 to 7.5.2
Bumps [semver](https://github.com/npm/node-semver) from 7.5.1 to 7.5.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.5.1...v7.5.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 04:27:56 +02:00
dependabot[bot]
44b89d33ce chore(deps): bump @hookform/resolvers from 3.1.0 to 3.1.1
Bumps [@hookform/resolvers](https://github.com/react-hook-form/resolvers) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/react-hook-form/resolvers/releases)
- [Commits](https://github.com/react-hook-form/resolvers/compare/v3.1.0...v3.1.1)

---
updated-dependencies:
- dependency-name: "@hookform/resolvers"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 04:26:27 +02:00
dependabot[bot]
251eb9ba0f chore(deps): bump redis from 4.6.6 to 4.6.7
Bumps [redis](https://github.com/redis/node-redis) from 4.6.6 to 4.6.7.
- [Release notes](https://github.com/redis/node-redis/releases)
- [Changelog](https://github.com/redis/node-redis/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/node-redis/compare/redis@4.6.6...redis@4.6.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 01:09:04 +02:00
dependabot[bot]
d5b5ee88fc chore(deps-dev): bump @types/react from 18.2.10 to 18.2.12
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.10 to 18.2.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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 01:08:38 +02:00
dependabot[bot]
fea20596c7 chore(deps): bump @radix-ui/react-switch from 1.0.2 to 1.0.3
Bumps [@radix-ui/react-switch](https://github.com/radix-ui/primitives) from 1.0.2 to 1.0.3.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-switch"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-17 01:08:21 +02:00
dependabot[bot]
c634e8db63 chore(deps): bump @radix-ui/react-tabs from 1.0.3 to 1.0.4
Bumps [@radix-ui/react-tabs](https://github.com/radix-ui/primitives) from 1.0.3 to 1.0.4.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-tabs"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 23:21:58 +02:00
dependabot[bot]
e74e81d2f7 chore(deps): bump @tabler/icons-react from 2.19.0 to 2.22.0
Bumps [@tabler/icons-react](https://github.com/tabler/tabler-icons/tree/HEAD/packages/icons-react) from 2.19.0 to 2.22.0.
- [Release notes](https://github.com/tabler/tabler-icons/releases)
- [Commits](https://github.com/tabler/tabler-icons/commits/v2.22.0/packages/icons-react)

---
updated-dependencies:
- dependency-name: "@tabler/icons-react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 23:21:32 +02:00
dependabot[bot]
1599930c91 chore(deps-dev): bump @testing-library/dom from 9.3.0 to 9.3.1
Bumps [@testing-library/dom](https://github.com/testing-library/dom-testing-library) from 9.3.0 to 9.3.1.
- [Release notes](https://github.com/testing-library/dom-testing-library/releases)
- [Changelog](https://github.com/testing-library/dom-testing-library/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/dom-testing-library/compare/v9.3.0...v9.3.1)

---
updated-dependencies:
- dependency-name: "@testing-library/dom"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 23:21:15 +02:00
dependabot[bot]
3e1b8d5f53 chore(deps-dev): bump @typescript-eslint/parser from 5.59.6 to 5.59.11
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.59.6 to 5.59.11.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.11/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 23:20:59 +02:00
dependabot[bot]
efda209ce0 chore(deps): bump react-hook-form from 7.43.9 to 7.44.3
Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.43.9 to 7.44.3.
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.43.9...v7.44.3)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 23:20:43 +02:00
Nicolas Meienberger
e656237519
Update README.md 2023-06-16 08:57:59 +02:00
dependabot[bot]
ac3e1486ed chore(deps): bump next-intl from 2.14.2 to 2.14.6
Bumps [next-intl](https://github.com/amannn/next-intl) from 2.14.2 to 2.14.6.
- [Changelog](https://github.com/amannn/next-intl/blob/main/CHANGELOG.md)
- [Commits](https://github.com/amannn/next-intl/compare/v2.14.2...v2.14.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 08:48:14 +02:00
dependabot[bot]
4cdf96fe44 chore(deps): bump @radix-ui/react-dialog from 1.0.3 to 1.0.4
Bumps [@radix-ui/react-dialog](https://github.com/radix-ui/primitives) from 1.0.3 to 1.0.4.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-dialog"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 08:47:37 +02:00
dependabot[bot]
e071c2d835 chore(deps-dev): bump eslint-plugin-jsdoc from 46.0.0 to 46.2.6
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 46.0.0 to 46.2.6.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.0.0...v46.2.6)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 08:47:26 +02:00
dependabot[bot]
dc02422b08 chore(deps): bump winston from 3.8.2 to 3.9.0
Bumps [winston](https://github.com/winstonjs/winston) from 3.8.2 to 3.9.0.
- [Release notes](https://github.com/winstonjs/winston/releases)
- [Changelog](https://github.com/winstonjs/winston/blob/master/CHANGELOG.md)
- [Commits](https://github.com/winstonjs/winston/compare/v3.8.2...v3.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 08:12:26 +02:00
dependabot[bot]
62aba3af3a chore(deps): bump tslib from 2.5.2 to 2.5.3
Bumps [tslib](https://github.com/Microsoft/tslib) from 2.5.2 to 2.5.3.
- [Release notes](https://github.com/Microsoft/tslib/releases)
- [Commits](https://github.com/Microsoft/tslib/compare/2.5.2...v2.5.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 08:11:25 +02:00
dependabot[bot]
d4631beb0e chore(deps-dev): bump @babel/core from 7.21.8 to 7.22.5
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.21.8 to 7.22.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.22.5/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 08:10:59 +02:00
dependabot[bot]
02e51c1c4d chore(deps-dev): bump msw from 1.2.1 to 1.2.2
Bumps [msw](https://github.com/mswjs/msw) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v1.2.1...v1.2.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 08:10:07 +02:00
dependabot[bot]
5fc3227f93 chore(deps-dev): bump @typescript-eslint/eslint-plugin
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.59.6 to 5.59.11.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.11/packages/eslint-plugin)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 00:03:24 +02:00
dependabot[bot]
85a3e2c7fe chore(deps-dev): bump @playwright/test from 1.35.0 to 1.35.1
Bumps [@playwright/test](https://github.com/Microsoft/playwright) from 1.35.0 to 1.35.1.
- [Release notes](https://github.com/Microsoft/playwright/releases)
- [Commits](https://github.com/Microsoft/playwright/compare/v1.35.0...v1.35.1)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 00:02:52 +02:00
dependabot[bot]
3e11203bec chore(deps): bump web-push from 3.6.1 to 3.6.2
Bumps [web-push](https://github.com/web-push-libs/web-push) from 3.6.1 to 3.6.2.
- [Release notes](https://github.com/web-push-libs/web-push/releases)
- [Commits](https://github.com/web-push-libs/web-push/compare/v3.6.1...v3.6.2)

---
updated-dependencies:
- dependency-name: web-push
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-16 00:01:45 +02:00
dependabot[bot]
0bad392b13 chore(deps-dev): bump eslint-config-next from 13.4.4 to 13.4.5
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.4.4 to 13.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/v13.4.5/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-15 23:34:13 +02:00
dependabot[bot]
86ba07e2cc chore(deps-dev): bump @types/pg from 8.6.6 to 8.10.2
Bumps [@types/pg](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/pg) from 8.6.6 to 8.10.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/pg)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-15 23:32:56 +02:00
Nicolas Meienberger
564c076144
Update dependabot.yml 2023-06-15 22:19:54 +02:00
Nicolas Meienberger
de97061f85
New Crowdin updates (#472) 2023-06-15 22:14:58 +02:00
Nicolas Meienberger
4d34a351a6
Update dependabot.yml 2023-06-15 22:09:24 +02:00
Nicolas Meienberger
4064e286ac
Update dependabot.yml 2023-06-15 20:35:23 +02:00
Nicolas Meienberger
b3d7c56588
Update dependabot.yml 2023-06-15 20:22:34 +02:00
Nicolas Meienberger
b972f7b6e8
Release/1.5.0 (#488) 2023-06-15 18:56:48 +02:00
dependabot[bot]
f15cbf9ddc chore(deps-dev): bump @types/node from 20.2.5 to 20.3.1
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.2.5 to 20.3.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-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-15 18:50:44 +02:00
dependabot[bot]
b8ecf3594b chore(deps-dev): bump @types/react-dom from 18.2.4 to 18.2.5
Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 18.2.4 to 18.2.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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-15 18:31:40 +02:00
Nicolas Meienberger
1adcbd4b6f feat: run migrations before starting dev server 2023-06-12 18:35:05 +02:00
Nicolas Meienberger
8b067857cf
Merge pull request #470 from meienberger/release/1.5.0
fix(start.sh): invalid json format generated
2023-06-10 15:39:36 +02:00
Nicolas Meienberger
4775829135 fix(start.sh): invalid json format generated 2023-06-10 15:28:21 +02:00
Nicolas Meienberger
496747f5cb
Merge pull request #468 from meienberger/release/1.5.0
Release/1.5.0
2023-06-10 14:47:36 +02:00
Nicolas Meienberger
8603e24adb fix(apps.helpers): user can install app which has no data directory 2023-06-10 13:32:40 +02:00
Nicolas Meienberger
4eaf2c00c3 ci(e2e): extract branch name from github.ref instead of github.head_ref 2023-06-10 12:51:34 +02:00
Nicolas Meienberger
959c13ac11 Merge branch 'release/1.5.0' of github.com:meienberger/runtipi into release/1.5.0 2023-06-10 12:36:36 +02:00
Nicolas Meienberger
4264d3df3e ci: change e2e to trigger on push to branch release/* 2023-06-10 12:36:30 +02:00
Nicolas Meienberger
e857b15047
Merge branch 'master' into release/1.5.0 2023-06-10 12:35:03 +02:00
Nicolas Meienberger
e35886d42c chore: bump version to 1.5.0 2023-06-10 12:34:00 +02:00
Nicolas Meienberger
d2bc26415d New translations en.json (Russian) 2023-06-10 12:30:25 +02:00
Nicolas Meienberger
653fa34061 chore: add stale bot to close inactive issues 2023-06-10 12:28:57 +02:00
Nicolas Meienberger
ab8b2f0b6c chore: bump drizzle-orm to 0.26.5 2023-06-10 12:26:52 +02:00
Nicolas Meienberger
2cd61c03b9 feat: add loading state to dashboard page 2023-06-10 12:26:10 +02:00
Nicolas Meienberger
0cd1a877f1 chore: remove @types/js-cookie 2023-06-10 12:11:20 +02:00
Nicolas Meienberger
8a86cfd072 fix: switch js-cookies to cookies-next for a more reliable client/server value 2023-06-10 11:35:04 +02:00
Nicolas Meienberger
1fce007e3f chore: bump node version to 18.16-alpine3.18 2023-06-10 11:15:35 +02:00
Nicolas Meienberger
ce2178354c chore: bump devDependencies 2023-06-10 10:45:49 +02:00
Nicolas Meienberger
338b15ffac
New Crowdin updates (#458) 2023-06-09 08:49:10 +02:00
Nicolas Meienberger
a728507882 test(apps.service): copy file and replace variables coverage 2023-06-08 23:21:07 +02:00
Nicolas Meienberger
ead2f23fa8 feat: copy data from node and replace values if file has .template extension 2023-06-08 23:21:07 +02:00
Nicolas Meienberger
36dafcbc6d ci: use e2e only on release branches 2023-06-08 08:22:59 +02:00
Nicolas Meienberger
3937efe025 test: add e2e suite for change password and language selector 2023-06-08 00:24:36 +02:00
Nicolas Meienberger
70b6c20b29 test: add coverage for new features 2023-06-07 23:51:18 +02:00
Nicolas Meienberger
25ad967ccb fix: create initial traefik folder 2023-06-07 23:51:18 +02:00
Nicolas Meienberger
307726706a ci: add missing env LOCAL_DOMAIN 2023-06-07 23:51:18 +02:00
Nicolas Meienberger
8a871a35f3 feat(AppActions): add drop down menu on open to give the user the option to choose which url to open to 2023-06-07 23:51:18 +02:00
Nicolas Meienberger
633baf24d0 feat: create DropdownMenu component with radix-ui primitives 2023-06-07 23:51:18 +02:00
Nicolas Meienberger
8072cfbce4 feat: download certificate for local domain 2023-06-07 23:51:18 +02:00
Nicolas Meienberger
b6a25566ad refactor: optimize labels for maximal re-use 2023-06-07 23:51:18 +02:00
Nicolas Meienberger
ebc6007209 feat: use LOCAL_DOMAIN for dashboard 2023-06-07 23:51:18 +02:00
Nicolas Meienberger
5ace027f97 feat: generate self signed ssl cert on app start 2023-06-07 23:51:18 +02:00
Nicolas Meienberger
09a51fe90c fix(apps.helpers): make required boolean field pass with false value 2023-06-06 08:42:02 +02:00
Nicolas Meienberger
a31ecca41a tests(e2e): refactor register user to insert directly in db 2023-06-03 19:18:18 +02:00
Nicolas Meienberger
6b6aba9545 ci: deploy e2e report to github pages 2023-06-03 19:18:18 +02:00
Nicolas Meienberger
c0d5e95d4c ci: run e2e tests on digital ocean droplet 2023-06-03 19:18:18 +02:00
Nicolas Meienberger
2aeacd7d14 ci: create playwright tests workflow
ci: make db and redis as github action services
2023-06-03 19:18:18 +02:00
Nicolas Meienberger
6bbd950d15 feat: create start:e2e and test:e2e scripts to launch tests easily 2023-06-03 19:18:18 +02:00
Nicolas Meienberger
f389d51819 test: add basic e2e test suites for auth and app install 2023-06-03 19:18:18 +02:00
Nicolas Meienberger
5868ccb579 chore: install @playwright/test devDependency 2023-06-03 19:18:18 +02:00
Nicolas Meienberger
38593de434
New Crowdin updates (#445)
* New translations en.json (Russian)

* New translations en.json (Russian)
2023-05-31 21:49:25 +02:00
Nicolas Meienberger
716b368f31 ci: refactor deprecated usages of set-output command 2023-05-31 08:38:35 +02:00
Nicolas Meienberger
4f25886ae0 chore: Bump eslint-plugin-jsdoc from 44.2.4 to 46.0.0 2023-05-31 08:30:23 +02:00
dependabot[bot]
c017d87c23 Bump actions/dependency-review-action from 1 to 3
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 1 to 3.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/v1...v3)

---
updated-dependencies:
- dependency-name: actions/dependency-review-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-31 08:26:15 +02:00
dependabot[bot]
18fd3493e1 Bump pnpm/action-setup from 2.2.2 to 2.2.4
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 2.2.2 to 2.2.4.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](https://github.com/pnpm/action-setup/compare/v2.2.2...v2.2.4)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-31 08:25:47 +02:00
Nicolas Meienberger
921e2264ce chore: Bump sharp from 0.31.2 to 0.32.1 2023-05-31 08:25:23 +02:00
Nicolas Meienberger
7813fd4c67 Merge branch 'dependabot/npm_and_yarn/eslint-config-next-13.4.4' of github.com:meienberger/runtipi into dependabot/npm_and_yarn/eslint-config-next-13.4.4 2023-05-31 08:20:37 +02:00
dependabot[bot]
d759416159
Bump eslint-config-next from 13.4.3 to 13.4.4
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.4.3 to 13.4.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/v13.4.4/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-31 06:19:12 +00:00
dependabot[bot]
a77f1494be Bump @types/react from 18.2.6 to 18.2.7
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.6 to 18.2.7.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-31 08:17:27 +02:00
dependabot[bot]
a6d52da36f Bump @types/node from 20.2.1 to 20.2.5
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.2.1 to 20.2.5.
- [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-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-31 08:16:24 +02:00
Nicolas Meienberger
bb3cf037a7 chore: update lock file 2023-05-31 08:14:35 +02:00
dependabot[bot]
79a4fbc521 Bump next from 13.4.3 to 13.4.4
Bumps [next](https://github.com/vercel/next.js) from 13.4.3 to 13.4.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/v13.4.3...v13.4.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-31 08:13:53 +02:00
dependabot[bot]
e59d26d26a Bump docker/build-push-action from 3 to 4
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3 to 4.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-31 08:11:56 +02:00
Nicolas Meienberger
6abc68be68
New translations en.json (Hungarian) (#443) 2023-05-31 08:11:01 +02:00
Nicolas Meienberger
2b8a1bc9ed chore: bump version to 1.4.2 2023-05-30 23:09:31 +02:00
Nicolas Meienberger
6b2e41280d feat(locales): add German and Hungarian languages 2023-05-30 23:09:15 +02:00
Nicolas Meienberger
7f501775be New translations en.json (Hungarian) 2023-05-30 23:01:12 +02:00
Nicolas Meienberger
36a97de137 New translations en.json (Hungarian) 2023-05-30 23:01:12 +02:00
Nicolas Meienberger
1222ecbe98 New translations en.json (German) 2023-05-30 23:01:12 +02:00
Nicolas Meienberger
3cb18d5523 New translations en.json (Spanish) 2023-05-30 23:01:12 +02:00
Nicolas Meienberger
0b6964bf96 New translations en.json (German) 2023-05-30 23:01:12 +02:00
Nicolas Meienberger
77052b2183 New translations en.json (German) 2023-05-30 23:01:12 +02:00
Nicolas Meienberger
c9d25851a0 New translations en.json (German) 2023-05-30 23:01:12 +02:00
Nicolas Meienberger
27682e82c4 New translations en.json (Hungarian) 2023-05-30 23:01:12 +02:00
Nicolas Meienberger
b41cda9fec New translations en.json (Hungarian) 2023-05-30 23:01:12 +02:00
Nicolas Meienberger
e5ff8f6aa3 Merge branch 'develop' of github.com:meienberger/runtipi into develop 2023-05-30 23:00:44 +02:00
Nicolas Meienberger
bd592c8f5c chore: restart main containers on failure instead of always 2023-05-30 23:00:40 +02:00
allcontributors[bot]
f48f77e75e docs: update .all-contributorsrc [skip ci] 2023-05-30 22:56:48 +02:00
allcontributors[bot]
a560cc759e docs: update README.md [skip ci] 2023-05-30 22:56:48 +02:00
allcontributors[bot]
6d7276a56f docs: update .all-contributorsrc [skip ci] 2023-05-30 22:56:17 +02:00
allcontributors[bot]
76526952bc docs: update README.md [skip ci] 2023-05-30 22:56:17 +02:00
allcontributors[bot]
35e457ab3a docs: update .all-contributorsrc [skip ci] 2023-05-30 22:55:51 +02:00
allcontributors[bot]
896f95dc6c docs: update README.md [skip ci] 2023-05-30 22:55:51 +02:00
allcontributors[bot]
4d54327e96 docs: update .all-contributorsrc [skip ci] 2023-05-30 22:54:04 +02:00
allcontributors[bot]
fc49d2be9b docs: update README.md [skip ci] 2023-05-30 22:54:04 +02:00
dependabot[bot]
f31cc5b5c9
Bump eslint-config-next from 13.4.3 to 13.4.4
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.4.3 to 13.4.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/v13.4.4/packages/eslint-config-next)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-26 21:12:17 +00:00
Nicolas Meienberger
ce494f790c
Merge pull request #427 from meienberger/all-contributors/add-NoisyFridge
docs: add NoisyFridge as a contributor for translation
2023-05-23 22:46:25 +02:00
allcontributors[bot]
dcad74eab2
docs: update .all-contributorsrc [skip ci] 2023-05-23 20:46:10 +00:00
allcontributors[bot]
38479b4cb0
docs: update README.md [skip ci] 2023-05-23 20:46:10 +00:00
Nicolas Meienberger
91d59d726e
Merge pull request #426 from meienberger/release/1.4.2
release 1.4.2
2023-05-23 22:45:30 +02:00
Nicolas Meienberger
d6173527e7
Merge branch 'master' into release/1.4.2 2023-05-23 22:22:10 +02:00
Nicolas Meienberger
d3d4f22456 chore: bump version to 1.4.2 2023-05-23 22:20:27 +02:00
Nicolas Meienberger
26f152e809 feat: add new language Swedish 2023-05-23 22:17:36 +02:00
Nicolas Meienberger
138fef22dd fix(install form): error when boolean field is empty 2023-05-23 22:13:50 +02:00
Nicolas Meienberger
0dbcfaab28 Merge branch 'develop' of github.com:meienberger/runtipi into develop 2023-05-23 22:13:21 +02:00
Nicolas Meienberger
568a07ed66
New Crowdin updates (#421)
* New translations en.json (Swedish)

* New translations en.json (Swedish)

* New translations en.json (Swedish)

* New translations en.json (Swedish)

* New translations en.json (French)

* New translations en.json (Swedish)
2023-05-23 21:49:48 +02:00
Nicolas Meienberger
006c57f58d style: fix visual regression in app tile where app name was not aligned with status indicator 2023-05-23 17:47:57 +02:00
Nicolas Meienberger
4fc1f935e7 chore: bump version to 1.4.1 2023-05-23 16:26:21 +02:00
Nicolas Meienberger
49f6704e07
Merge pull request #420 from meienberger/release/1.4.1
release 1.4.1
2023-05-21 21:29:28 +02:00
Nicolas Meienberger
929351d8c7 fix: remove automatic install of git-all 2023-05-21 21:07:32 +02:00
Nicolas Meienberger
a6f1c8c31a
Merge branch 'master' into release/1.4.1 2023-05-21 21:01:20 +02:00
Nicolas Meienberger
e72b10ae03 chore: bump version to 1.4.1 2023-05-21 21:00:05 +02:00
Nicolas Meienberger
064e8cd775 fix(configure.sh): remove automatic install of git-all 2023-05-21 20:57:01 +02:00
Nicolas Meienberger
52c7c8288b chore: bump version to 1.4.0 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
9e26d8f10b chore: update @tabler/core to 1.0.0-beta19 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
aec0447b97 chore: update @tabler/core to 1.0.0-beta-18 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
69ae97a97d refactor: move from nookies to js-cookie 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
f000c77f4e Create dependabot.yml 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
b10c23f26c refactor(queries): leverage new query syntax of drizzle-orm 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
735da7be67 fix(server): require next server 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
c54007af8e chore: update dependencies 2023-05-21 20:29:11 +02:00
DrMxrcy
e9821e95eb Enable Dynamic Configs via File
Gives Traefik the possibility to have a dynamic config. Worked with mastodon but did not interfere with any other apps
2023-05-21 20:29:11 +02:00
Nicolas Meienberger
2225b14efc New Crowdin updates (#410)
* New translations en.json (Romanian)

* New translations en.json (French)

* New translations en.json (Spanish)

* New translations en.json (Afrikaans)

* New translations en.json (Catalan)

* New translations en.json (Czech)

* New translations en.json (Danish)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Hungarian)

* New translations en.json (Italian)

* New translations en.json (Japanese)

* New translations en.json (Korean)

* New translations en.json (Dutch)

* New translations en.json (Norwegian)

* New translations en.json (Polish)

* New translations en.json (Portuguese)

* New translations en.json (Russian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Swedish)

* New translations en.json (Turkish)

* New translations en.json (Ukrainian)

* New translations en.json (Chinese Simplified)

* New translations en.json (Chinese Traditional)

* New translations en.json (English)

* New translations en.json (Vietnamese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Japanese)

* New translations en.json (Chinese Simplified)

* New translations en.json (Chinese Traditional)

* New translations en.json (Russian)

* New translations en.json (Romanian)
2023-05-21 20:29:11 +02:00
Nicolas Meienberger
8756e0dc15 tests(apps.service): use new helpers to isolate tests 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
367c5ee5ed fix(configure.sh): ensure git is installed upon installation 2023-05-21 20:29:11 +02:00
allcontributors[bot]
1aa56525c9 docs: update .all-contributorsrc [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
6c69cef825 docs: update README.md [skip ci] 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
7a6b6ed0b6 fix: sort apps list by id and not by name in order to avoid lowercase names being put at the end 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
9547a2233b chore: cleanup un-used exports 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
bfd66b3273 New Crowdin updates (#409)
* Update source file en.json

* New translations en.json (Romanian)

* New translations en.json (French)

* New translations en.json (Spanish)

* New translations en.json (Afrikaans)

* New translations en.json (Catalan)

* New translations en.json (Czech)

* New translations en.json (Danish)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Hungarian)

* New translations en.json (Italian)

* New translations en.json (Japanese)

* New translations en.json (Korean)

* New translations en.json (Dutch)

* New translations en.json (Norwegian)

* New translations en.json (Polish)

* New translations en.json (Portuguese)

* New translations en.json (Russian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Swedish)

* New translations en.json (Turkish)

* New translations en.json (Ukrainian)

* New translations en.json (Chinese Simplified)

* New translations en.json (Chinese Traditional)

* New translations en.json (English)

* New translations en.json (Vietnamese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Romanian)
2023-05-21 20:29:11 +02:00
Nicolas Meienberger
62848f9705 fix: docker build failing due to missing external dependencies in esbuild.js 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
75a4e570e2 New Crowdin updates (#407)
* New translations en.json (Japanese)

* New translations en.json (Japanese)

* New translations en.json (Chinese Simplified)

* New translations en.json (Chinese Traditional)
2023-05-21 20:29:11 +02:00
Nicolas Meienberger
52e4045427 New translations en.json (Polish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
9f06a842d6 New translations en.json (Polish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
9279756e76 New translations en.json (French) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
d0cc0647a2 New translations en.json (Romanian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
879e4642ca New translations en.json (Russian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
c384442afa New translations en.json (Portuguese, Brazilian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
5fc0b89626 New translations en.json (Vietnamese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
50b32ed650 New translations en.json (English) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
cd6e5260ff New translations en.json (Chinese Traditional) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
7d74121687 New translations en.json (Chinese Simplified) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
9951abf7b0 New translations en.json (Ukrainian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
efddd7eb0d New translations en.json (Turkish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
ded15ad54a New translations en.json (Swedish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
d4aef4cf11 New translations en.json (Serbian (Cyrillic)) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
2b3c467d8e New translations en.json (Russian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
eeb22c2d6e New translations en.json (Portuguese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
d4e1946932 New translations en.json (Polish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
1d8d00be85 New translations en.json (Norwegian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
ca2fd30812 New translations en.json (Dutch) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
a55ab2f040 New translations en.json (Korean) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
1290ff37ce New translations en.json (Japanese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
d76d2c695b New translations en.json (Italian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
4de657f8ff New translations en.json (Hungarian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
aeeffb6057 New translations en.json (Finnish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
e04e7a49bc New translations en.json (Greek) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
c7fdacf25c New translations en.json (German) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
7527713a98 New translations en.json (Danish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
b9679d6ada New translations en.json (Czech) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
1fe83888ca New translations en.json (Catalan) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
13e3bb28c4 New translations en.json (Afrikaans) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
f83bd6f955 New translations en.json (Spanish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
9f889c05d7 New translations en.json (French) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
55311dc67f New translations en.json (Romanian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
a767c44651 feat: add language selector settings 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
e363b3f8db New translations en.json (Romanian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
515a4b988e New translations en.json (Romanian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
756bb66a24 New translations en.json (Chinese Simplified) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
cbf87c382d New translations en.json (Chinese Simplified) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
afc1c47bd0 New translations en.json (Russian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
e3c0651875 New translations en.json (Russian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
9ca121e296 New translations en.json (French) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
69d46efa2b New translations en.json (Portuguese, Brazilian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
002f41a610 New translations en.json (Vietnamese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
59d2112c20 New translations en.json (English) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
c850bb2b81 New translations en.json (Chinese Traditional) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
91fff34448 New translations en.json (Chinese Simplified) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
831285ff91 New translations en.json (Ukrainian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
40169a7a39 New translations en.json (Turkish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
fc302e516a New translations en.json (Swedish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
966980f874 New translations en.json (Serbian (Cyrillic)) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
63a9fc0416 New translations en.json (Russian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
ec4a6f0686 New translations en.json (Portuguese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
0305971374 New translations en.json (Polish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
9de2a1cf5e New translations en.json (Norwegian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
82b153a2f4 New translations en.json (Dutch) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
299580a312 New translations en.json (Korean) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
9fe1d93160 New translations en.json (Japanese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
8d61a37f38 New translations en.json (Italian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
1b136d06cd New translations en.json (Hungarian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
266f8aa7a1 New translations en.json (Finnish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
81f47f94e3 New translations en.json (Greek) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
0ab8e88d50 New translations en.json (German) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
cf39242d01 New translations en.json (Danish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
81fb5e4cc8 New translations en.json (Czech) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
ce6572dc81 New translations en.json (Catalan) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
6bfddb5f99 New translations en.json (Afrikaans) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
9e4903d610 New translations en.json (Spanish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
777be3bcb9 New translations en.json (French) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
83e3039459 New translations en.json (Romanian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
acdf8a050a tests: fix test relying on old hard coded english messages 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
9df81d7989 feat: translate app-store page 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
148391b9c0 feat: translate settings page 2023-05-21 20:29:11 +02:00
allcontributors[bot]
8ef069114d docs: update .all-contributorsrc [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
828186ff6c docs: update README.md [skip ci] 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
971cf80ba6 New translations en.json (Russian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
2f91f7d45f New translations en.json (Portuguese, Brazilian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
1be53f1c55 New translations en.json (Vietnamese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
e8d9f59269 New translations en.json (English) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
a187a7c9fc New translations en.json (Chinese Traditional) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
7ae053bec6 New translations en.json (Chinese Simplified) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
881596c234 New translations en.json (Ukrainian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
03424ae0ae New translations en.json (Turkish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
c15442ddb5 New translations en.json (Swedish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
20fdeafbc5 New translations en.json (Serbian (Cyrillic)) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
722c7935fe New translations en.json (Russian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
1f7211002b New translations en.json (Portuguese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
e8e4eb542b New translations en.json (Polish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
35dae5c5c8 New translations en.json (Norwegian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
cac539bf82 New translations en.json (Dutch) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
01ea1c6571 New translations en.json (Korean) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
8af6abbbb6 New translations en.json (Japanese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
edbbb01377 New translations en.json (Italian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
1487c2c74f New translations en.json (Hungarian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
87a3206c2c New translations en.json (Finnish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
3388a811a6 New translations en.json (Greek) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
772217da4e New translations en.json (German) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
e1c6e50253 New translations en.json (Danish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
b2eb5840b8 New translations en.json (Czech) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
26a82b3eda New translations en.json (Catalan) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
093e7eb889 New translations en.json (Afrikaans) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
1c72c15bfc New translations en.json (Spanish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
fb8f8c51bd New translations en.json (French) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
e6016d810c New translations en.json (Romanian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
20eedd9ca3 refactor: adapt frontend error handling to support translated error variables 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
e9b7f9a73f feat: add server error strings for apps.service 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
905427f0a3 New translations en.json (Russian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
a2f348afdf New translations en.json (English) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
298bae8ec7 New translations en.json (Chinese Traditional) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
adc3b0255b New translations en.json (English) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
93a9408423 New translations en.json (Russian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
d0a861edcd New translations en.json (Romanian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
bae1024e2d New translations en.json (Romanian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
298d1589ec New translations en.json (Chinese Traditional) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
dd17ae61d1 New translations en.json (Chinese Simplified) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
69fdb0f37e New translations en.json (Japanese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
0c8ac52e07 New translations en.json (Japanese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
f7eb3235e5 New translations en.json (French) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
9f751e1fb9 New translations en.json (Portuguese, Brazilian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
51e05ffaad New translations en.json (Vietnamese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
f125fd6537 New translations en.json (English) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
69e3aeb5c6 New translations en.json (Chinese Traditional) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
c8594bba4f New translations en.json (Chinese Simplified) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
a08d23f2c8 New translations en.json (Ukrainian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
798364823d New translations en.json (Turkish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
12fd459786 New translations en.json (Swedish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
49393c74b3 New translations en.json (Serbian (Cyrillic)) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
d9b55a4cb1 New translations en.json (Russian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
3c987a7de8 New translations en.json (Portuguese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
126e2beb5c New translations en.json (Polish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
8f59958469 New translations en.json (Norwegian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
88d9ed063b New translations en.json (Dutch) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
139bcbd17b New translations en.json (Korean) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
28ab2d4dbd New translations en.json (Japanese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
639e91d901 New translations en.json (Italian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
1cd63ede9b New translations en.json (Hungarian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
0a84c4f52d New translations en.json (Finnish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
42ebba6790 New translations en.json (Greek) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
96bb06f40b New translations en.json (German) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
c503ad9558 New translations en.json (Danish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
0770d7db7a New translations en.json (Czech) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
ef575e7f1d New translations en.json (Catalan) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
cd2dfb9c6e New translations en.json (Afrikaans) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
697c338480 New translations en.json (Spanish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
f488b19f33 New translations en.json (French) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
e1fcb57ac8 New translations en.json (Romanian) 2023-05-21 20:29:11 +02:00
allcontributors[bot]
9408eb5743 docs: update .all-contributorsrc [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
82508df08b docs: update README.md [skip ci] 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
7353814cd1 feat: add translations strings for my-apps page 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
a1a9035512 fix: use config.json placeholder in install form field 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
4f20bba40a New translations en.json (Russian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
5f623ce9d6 New translations en.json (Chinese Traditional) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
71277389d0 New translations en.json (Chinese Simplified) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
bead4a8353 New translations en.json (Japanese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
927abeea80 New translations en.json (Romanian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
3a614c4ea7 New translations en.json (French) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
cec5fd7b99 New translations en.json (Portuguese, Brazilian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
38a0f13512 New translations en.json (Vietnamese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
e9e94a0fb8 New translations en.json (English) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
6ebb0759d2 New translations en.json (Chinese Traditional) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
0277e8e9f9 New translations en.json (Chinese Simplified) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
26f87cc69f New translations en.json (Ukrainian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
9a73867fc6 New translations en.json (Turkish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
f5d0a5b2fc New translations en.json (Swedish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
7004b2e61b New translations en.json (Serbian (Cyrillic)) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
aa2d3309c2 New translations en.json (Russian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
122ac44967 New translations en.json (Portuguese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
95bf7d4fd7 New translations en.json (Polish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
a9224f04cd New translations en.json (Norwegian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
90804910d5 New translations en.json (Dutch) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
1d092eceb1 New translations en.json (Korean) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
fcae1a2f38 New translations en.json (Japanese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
c06f39cc53 New translations en.json (Italian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
b6e2792353 New translations en.json (Hungarian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
ceeeaa33e7 New translations en.json (Finnish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
24cc3f5885 New translations en.json (Greek) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
7ae13d46a4 New translations en.json (German) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
cf130a7f09 New translations en.json (Danish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
2323de6bbf New translations en.json (Czech) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
7b62437673 New translations en.json (Catalan) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
6b8315cd31 New translations en.json (Afrikaans) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
03671e79a1 New translations en.json (Spanish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
1d62756f97 New translations en.json (French) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
717da4e27e New translations en.json (Romanian) 2023-05-21 20:29:11 +02:00
allcontributors[bot]
1ceed1238d docs: update .all-contributorsrc [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
7d409d9c0c docs: update README.md [skip ci] 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
597eef1e39 feat: use translation keys for the dashboard 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
551106ae57 feat: add ja, ro, ru, zh as app locales 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
55aafb992b New translations en.json (Russian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
1eab6ef2d9 tests: improve coverage on newly created code 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
a2e03bf384 New translations en.json (French) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
dc956b6014 New translations en.json (Chinese Simplified) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
d4d5916de9 New translations en.json (Romanian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
fe83c7335c New translations en.json (Chinese Traditional) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
23302f839c New translations en.json (Japanese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
fcd8fc0a08 New translations en.json (Portuguese, Brazilian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
f0d150a90c New translations en.json (Vietnamese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
149b01c616 New translations en.json (English) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
cf1a28ac48 New translations en.json (Chinese Traditional) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
b6506779a4 New translations en.json (Chinese Simplified) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
14faf86008 New translations en.json (Ukrainian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
37ad6052b2 New translations en.json (Turkish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
8b6041fdc0 New translations en.json (Swedish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
1b58cbf8b0 New translations en.json (Serbian (Cyrillic)) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
a7c01878ad New translations en.json (Russian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
f855388a25 New translations en.json (Portuguese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
efeca66bdc New translations en.json (Polish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
b3a298387e New translations en.json (Norwegian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
7cc4522172 New translations en.json (Dutch) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
699b7405ef New translations en.json (Korean) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
32846d055c New translations en.json (Japanese) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
8997906938 New translations en.json (Italian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
5ffb08fffa New translations en.json (Hungarian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
401b68d65d New translations en.json (Finnish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
5f4561e413 New translations en.json (Greek) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
700617493a New translations en.json (German) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
88babe0234 New translations en.json (Danish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
239e647702 New translations en.json (Czech) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
78db509902 New translations en.json (Catalan) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
529dfb82f5 New translations en.json (Afrikaans) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
69d2e56d4e New translations en.json (Spanish) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
e97c6d33c4 New translations en.json (French) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
7798d9c9cf New translations en.json (Romanian) 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
5a034657d1 feat: localize authentication flow 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
81503ab7cd feat: create useLocale hook to get user locale 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
b09c12eda1 feat: setup next-intl with initial page props 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
8744f22e76 feat(auth): create routes to change locale and set initial locale 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
ce2ff2672c feat: create locale shared utils 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
a6ca75d028 feat(db): create locale column in user table 2023-05-21 20:29:11 +02:00
allcontributors[bot]
3c3effd3c0 docs: update .all-contributorsrc [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
5b042ceedc docs: update README.md [skip ci] 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
0367d823d9 chore: update codecov.yml 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
76d2481580 chore: add codecov.yml 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
3f72a7bc13 Update README.md 2023-05-21 20:29:11 +02:00
allcontributors[bot]
a3a9c29daa docs: update .all-contributorsrc [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
0819cc581a docs: update README.md [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
eba8d8b470 docs: update .all-contributorsrc [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
236785a8c4 docs: update README.md [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
32d62486f9 docs: update .all-contributorsrc [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
6f7914780f docs: update README.md [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
6d4a707957 docs: update .all-contributorsrc [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
e7b3c9dc26 docs: update README.md [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
f3322d812d docs: update .all-contributorsrc [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
9f045caa6d docs: update README.md [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
339bb6883b docs: update .all-contributorsrc [skip ci] 2023-05-21 20:29:11 +02:00
allcontributors[bot]
53e23fe672 docs: update README.md [skip ci] 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
60eded129a test: session.middleware 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
af625ece43 test: re-test previously decreased coverage because of new implementation 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
baae653104 refactor: remove all sessions when changing password 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
2b853596c3 refactor(client): remove useless client session state 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
46ccbf2591 feat(client): implement server-side redirect to authenticated pages 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
219b5b3adc refactor(server): move from jwt session to cookie based session 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
20065f96ae test(auth.service): fix wrong usage of class instance 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
50ff40fbaf fix: check user's existence on token refresh 2023-05-21 20:29:11 +02:00
Nicolas Meienberger
b734785f80 chore: update @tabler/core to 1.0.0-beta19 2023-05-21 10:02:11 +02:00
Nicolas Meienberger
a5c074e7ae chore: update @tabler/core to 1.0.0-beta-18 2023-05-21 09:57:20 +02:00
Nicolas Meienberger
0ace71b355 refactor: move from nookies to js-cookie 2023-05-21 09:56:40 +02:00
Nicolas Meienberger
2e1354f75e
Create dependabot.yml 2023-05-21 09:03:25 +02:00
Nicolas Meienberger
395e8874cd refactor(queries): leverage new query syntax of drizzle-orm 2023-05-21 08:53:32 +02:00
Nicolas Meienberger
fee9f0f39b fix(server): require next server 2023-05-21 08:25:26 +02:00
Nicolas Meienberger
15f63551e7 chore: update dependencies 2023-05-21 07:57:57 +02:00
DrMxrcy
6bc29df1d2 Enable Dynamic Configs via File
Gives Traefik the possibility to have a dynamic config. Worked with mastodon but did not interfere with any other apps
2023-05-20 19:02:02 +02:00
Nicolas Meienberger
71e8a8f85f
New Crowdin updates (#410)
* New translations en.json (Romanian)

* New translations en.json (French)

* New translations en.json (Spanish)

* New translations en.json (Afrikaans)

* New translations en.json (Catalan)

* New translations en.json (Czech)

* New translations en.json (Danish)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Hungarian)

* New translations en.json (Italian)

* New translations en.json (Japanese)

* New translations en.json (Korean)

* New translations en.json (Dutch)

* New translations en.json (Norwegian)

* New translations en.json (Polish)

* New translations en.json (Portuguese)

* New translations en.json (Russian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Swedish)

* New translations en.json (Turkish)

* New translations en.json (Ukrainian)

* New translations en.json (Chinese Simplified)

* New translations en.json (Chinese Traditional)

* New translations en.json (English)

* New translations en.json (Vietnamese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Japanese)

* New translations en.json (Chinese Simplified)

* New translations en.json (Chinese Traditional)

* New translations en.json (Russian)

* New translations en.json (Romanian)
2023-05-20 18:57:02 +02:00
Nicolas Meienberger
b4aee1da7b tests(apps.service): use new helpers to isolate tests 2023-05-20 18:56:19 +02:00
Nicolas Meienberger
91bb537e73 fix(configure.sh): ensure git is installed upon installation 2023-05-20 18:52:12 +02:00
allcontributors[bot]
032d6b381a docs: update .all-contributorsrc [skip ci] 2023-05-20 00:15:18 +02:00
allcontributors[bot]
2b86ad0938 docs: update README.md [skip ci] 2023-05-20 00:15:18 +02:00
Nicolas Meienberger
8a63015be8 fix: sort apps list by id and not by name in order to avoid lowercase names being put at the end 2023-05-17 21:29:55 +02:00
Nicolas Meienberger
072a868ab6 chore: cleanup un-used exports 2023-05-17 21:07:33 +02:00
Nicolas Meienberger
1e2eb5d65c
New Crowdin updates (#409)
* Update source file en.json

* New translations en.json (Romanian)

* New translations en.json (French)

* New translations en.json (Spanish)

* New translations en.json (Afrikaans)

* New translations en.json (Catalan)

* New translations en.json (Czech)

* New translations en.json (Danish)

* New translations en.json (German)

* New translations en.json (Greek)

* New translations en.json (Finnish)

* New translations en.json (Hungarian)

* New translations en.json (Italian)

* New translations en.json (Japanese)

* New translations en.json (Korean)

* New translations en.json (Dutch)

* New translations en.json (Norwegian)

* New translations en.json (Polish)

* New translations en.json (Portuguese)

* New translations en.json (Russian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Swedish)

* New translations en.json (Turkish)

* New translations en.json (Ukrainian)

* New translations en.json (Chinese Simplified)

* New translations en.json (Chinese Traditional)

* New translations en.json (English)

* New translations en.json (Vietnamese)

* New translations en.json (Portuguese, Brazilian)

* New translations en.json (Romanian)
2023-05-17 20:48:30 +02:00
Nicolas Meienberger
1de2d13d26 fix: docker build failing due to missing external dependencies in esbuild.js 2023-05-17 19:05:56 +02:00
Nicolas Meienberger
7b4833f1d7
New Crowdin updates (#407)
* New translations en.json (Japanese)

* New translations en.json (Japanese)

* New translations en.json (Chinese Simplified)

* New translations en.json (Chinese Traditional)
2023-05-17 18:59:02 +02:00
Nicolas Meienberger
a81e478527 New translations en.json (Polish) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
2f80d2e283 New translations en.json (Polish) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
14b0c54d93 New translations en.json (French) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
3ae29b53c3 New translations en.json (Romanian) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
518bebe261 New translations en.json (Russian) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
01e72c48c5 New translations en.json (Portuguese, Brazilian) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
896fe6c47f New translations en.json (Vietnamese) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
a54edc6556 New translations en.json (English) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
f069170c7d New translations en.json (Chinese Traditional) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
1d8d709848 New translations en.json (Chinese Simplified) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
a6bffa8df0 New translations en.json (Ukrainian) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
cf8c44d101 New translations en.json (Turkish) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
4744ca0a2a New translations en.json (Swedish) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
c28a31fdd5 New translations en.json (Serbian (Cyrillic)) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
f27f5076ff New translations en.json (Russian) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
7e37c4dca5 New translations en.json (Portuguese) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
15b3c40474 New translations en.json (Polish) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
df0bf9f62e New translations en.json (Norwegian) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
f3dd07ee27 New translations en.json (Dutch) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
2686f72148 New translations en.json (Korean) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
aa36c0a2f4 New translations en.json (Japanese) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
7af9c9da5e New translations en.json (Italian) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
349dc7ee39 New translations en.json (Hungarian) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
68a8bfb0c4 New translations en.json (Finnish) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
64856b3db1 New translations en.json (Greek) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
91d80b8f5d New translations en.json (German) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
18122a4b31 New translations en.json (Danish) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
d806845ec2 New translations en.json (Czech) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
3a90cb2a13 New translations en.json (Catalan) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
2e8b3f715a New translations en.json (Afrikaans) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
0fe34a275e New translations en.json (Spanish) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
5baa2dc571 New translations en.json (French) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
2283fdc62a New translations en.json (Romanian) 2023-05-16 20:44:11 +02:00
Nicolas Meienberger
84d593e986 feat: add language selector settings 2023-05-15 22:18:44 +02:00
Nicolas Meienberger
abc6d0b6ae New translations en.json (Romanian) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
fbc6d9801f New translations en.json (Romanian) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
ba6aac7ef3 New translations en.json (Chinese Simplified) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
fcf7733590 New translations en.json (Chinese Simplified) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
03e0e17307 New translations en.json (Russian) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
16c2cd93b9 New translations en.json (Russian) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
415d52a473 New translations en.json (French) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
dece1682d3 New translations en.json (Portuguese, Brazilian) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
4f7b349b29 New translations en.json (Vietnamese) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
db4017a64a New translations en.json (English) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
815ee36de2 New translations en.json (Chinese Traditional) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
f8d69f97c4 New translations en.json (Chinese Simplified) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
882d8ec451 New translations en.json (Ukrainian) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
0549070d9c New translations en.json (Turkish) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
5e80447a41 New translations en.json (Swedish) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
69759310b2 New translations en.json (Serbian (Cyrillic)) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
8eb1d54cef New translations en.json (Russian) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
744c803572 New translations en.json (Portuguese) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
86ad0ec695 New translations en.json (Polish) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
6a18326d39 New translations en.json (Norwegian) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
000282edd2 New translations en.json (Dutch) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
26100e57f1 New translations en.json (Korean) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
0319ab4614 New translations en.json (Japanese) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
a4831f9177 New translations en.json (Italian) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
670fb949fc New translations en.json (Hungarian) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
b7f071691d New translations en.json (Finnish) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
ae118ee465 New translations en.json (Greek) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
e4fbed384a New translations en.json (German) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
f5ec57594d New translations en.json (Danish) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
9dd1141864 New translations en.json (Czech) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
2eac300897 New translations en.json (Catalan) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
2f6f3e3eb2 New translations en.json (Afrikaans) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
a85c19c217 New translations en.json (Spanish) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
98d234a0ea New translations en.json (French) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
0bac42d031 New translations en.json (Romanian) 2023-05-15 20:48:53 +02:00
Nicolas Meienberger
600ea47213 tests: fix test relying on old hard coded english messages 2023-05-15 08:25:22 +02:00
Nicolas Meienberger
8f11174376 feat: translate app-store page 2023-05-15 08:25:22 +02:00
Nicolas Meienberger
f0c17e4af3 feat: translate settings page 2023-05-15 08:25:22 +02:00
allcontributors[bot]
f121288653 docs: update .all-contributorsrc [skip ci] 2023-05-15 06:43:13 +02:00
allcontributors[bot]
59e981126c docs: update README.md [skip ci] 2023-05-15 06:43:13 +02:00
Nicolas Meienberger
e006cc3ca4 New translations en.json (Russian) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
346f858f9f New translations en.json (Portuguese, Brazilian) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
382ce87fec New translations en.json (Vietnamese) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
b7dcc0e344 New translations en.json (English) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
9bb2cb7f0e New translations en.json (Chinese Traditional) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
4276fc7c31 New translations en.json (Chinese Simplified) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
54c22196df New translations en.json (Ukrainian) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
1d4a5d704c New translations en.json (Turkish) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
fbeac8b5e6 New translations en.json (Swedish) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
a890f78bfc New translations en.json (Serbian (Cyrillic)) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
77e02c272d New translations en.json (Russian) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
7e01a6eb30 New translations en.json (Portuguese) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
6121f8e479 New translations en.json (Polish) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
59bcd17b71 New translations en.json (Norwegian) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
eedb16eae9 New translations en.json (Dutch) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
5c0f949151 New translations en.json (Korean) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
533d2708ae New translations en.json (Japanese) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
ad558eca0a New translations en.json (Italian) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
a5349a4b5f New translations en.json (Hungarian) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
a92de0252d New translations en.json (Finnish) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
3bbccfdaa6 New translations en.json (Greek) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
7104f009ac New translations en.json (German) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
ebfcecd120 New translations en.json (Danish) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
c696a72141 New translations en.json (Czech) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
a126f52efd New translations en.json (Catalan) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
7af4b7c371 New translations en.json (Afrikaans) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
778cca7c78 New translations en.json (Spanish) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
e62874d168 New translations en.json (French) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
4cc11150d3 New translations en.json (Romanian) 2023-05-14 20:30:08 +02:00
Nicolas Meienberger
7dfaf56887 refactor: adapt frontend error handling to support translated error variables 2023-05-14 18:19:48 +02:00
Nicolas Meienberger
d69078d73f feat: add server error strings for apps.service 2023-05-14 18:19:48 +02:00
Nicolas Meienberger
7103898c88 New translations en.json (Russian) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
9bf0d4a7ea New translations en.json (English) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
b0c896fc29 New translations en.json (Chinese Traditional) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
1c1bcd60a1 New translations en.json (English) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
0f62101336 New translations en.json (Russian) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
6d0188285e New translations en.json (Romanian) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
5988d1345f New translations en.json (Romanian) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
75cbbcfa48 New translations en.json (Chinese Traditional) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
7615513b81 New translations en.json (Chinese Simplified) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
4ea27ab938 New translations en.json (Japanese) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
28f39383c1 New translations en.json (Japanese) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
4891a02a24 New translations en.json (French) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
546c9c8ddb New translations en.json (Portuguese, Brazilian) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
0d27cb33ed New translations en.json (Vietnamese) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
f6bc9df459 New translations en.json (English) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
5b73aa8aed New translations en.json (Chinese Traditional) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
f2a34ae5c4 New translations en.json (Chinese Simplified) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
747b31102c New translations en.json (Ukrainian) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
24b28cd921 New translations en.json (Turkish) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
d70cdea66c New translations en.json (Swedish) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
3ef4b2904e New translations en.json (Serbian (Cyrillic)) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
96603d61e6 New translations en.json (Russian) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
9b491b1a09 New translations en.json (Portuguese) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
8c05f680fa New translations en.json (Polish) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
8c7aadf69e New translations en.json (Norwegian) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
987b9ffb60 New translations en.json (Dutch) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
d533edb39a New translations en.json (Korean) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
9ee6adafcf New translations en.json (Japanese) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
56d6cd8413 New translations en.json (Italian) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
0dc3494669 New translations en.json (Hungarian) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
33ba1dc6ea New translations en.json (Finnish) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
0745c44fed New translations en.json (Greek) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
af7638b9d0 New translations en.json (German) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
3935beb55d New translations en.json (Danish) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
88e62947ea New translations en.json (Czech) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
74ea8a6634 New translations en.json (Catalan) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
0777ac6638 New translations en.json (Afrikaans) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
a21fadc202 New translations en.json (Spanish) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
191cef0322 New translations en.json (French) 2023-05-10 21:10:01 +02:00
Nicolas Meienberger
197b0cf785 New translations en.json (Romanian) 2023-05-10 21:10:01 +02:00
allcontributors[bot]
b2ffab2942 docs: update .all-contributorsrc [skip ci] 2023-05-10 20:59:28 +02:00
allcontributors[bot]
ff4706c9c4 docs: update README.md [skip ci] 2023-05-10 20:59:28 +02:00
Nicolas Meienberger
91e48f8e01 feat: add translations strings for my-apps page 2023-05-09 22:53:31 +02:00
Nicolas Meienberger
3b239e9b00 fix: use config.json placeholder in install form field 2023-05-09 20:29:05 +02:00
Nicolas Meienberger
afe8223e68 New translations en.json (Russian) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
d28375180f New translations en.json (Chinese Traditional) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
81edaced46 New translations en.json (Chinese Simplified) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
bb07e158a9 New translations en.json (Japanese) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
645e2d747d New translations en.json (Romanian) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
8f51177c0f New translations en.json (French) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
730d6b763f New translations en.json (Portuguese, Brazilian) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
9fa5ab2cdf New translations en.json (Vietnamese) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
3d5916c50c New translations en.json (English) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
6c60556e50 New translations en.json (Chinese Traditional) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
e6fb599386 New translations en.json (Chinese Simplified) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
5883f0bd8e New translations en.json (Ukrainian) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
3b3389a8e2 New translations en.json (Turkish) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
65498f3cc1 New translations en.json (Swedish) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
12421a4db1 New translations en.json (Serbian (Cyrillic)) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
1c4b643647 New translations en.json (Russian) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
716d9360ad New translations en.json (Portuguese) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
1826ee4b65 New translations en.json (Polish) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
b98f5d014f New translations en.json (Norwegian) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
36fc25aa64 New translations en.json (Dutch) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
3270d859e9 New translations en.json (Korean) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
fbcc87e7f3 New translations en.json (Japanese) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
dfb50e139a New translations en.json (Italian) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
658b91b4d7 New translations en.json (Hungarian) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
94ac70833a New translations en.json (Finnish) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
f1c1c02d01 New translations en.json (Greek) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
8de4a6eb6e New translations en.json (German) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
58b0ac3c7d New translations en.json (Danish) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
927b9ccb17 New translations en.json (Czech) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
e3b95f9de7 New translations en.json (Catalan) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
2966d0ca44 New translations en.json (Afrikaans) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
7bd62221fe New translations en.json (Spanish) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
82e98a7c76 New translations en.json (French) 2023-05-09 20:27:30 +02:00
Nicolas Meienberger
a17b7f8a52 New translations en.json (Romanian) 2023-05-09 20:27:30 +02:00
allcontributors[bot]
96a7b300bf docs: update .all-contributorsrc [skip ci] 2023-05-09 20:26:40 +02:00
allcontributors[bot]
f76aaad34b docs: update README.md [skip ci] 2023-05-09 20:26:40 +02:00
Nicolas Meienberger
17dd675035 feat: use translation keys for the dashboard 2023-05-09 08:56:26 +02:00
Nicolas Meienberger
f19508bdf2 feat: add ja, ro, ru, zh as app locales 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
a8bbd718a0 New translations en.json (Russian) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
494d307aac tests: improve coverage on newly created code 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
05496ed2f3 New translations en.json (French) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
ac47fead61 New translations en.json (Chinese Simplified) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
7736a25524 New translations en.json (Romanian) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
f5fc3ef054 New translations en.json (Chinese Traditional) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
9867f9315f New translations en.json (Japanese) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
ea75e8ec57 New translations en.json (Portuguese, Brazilian) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
a53259df73 New translations en.json (Vietnamese) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
80cf539700 New translations en.json (English) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
767c7aea30 New translations en.json (Chinese Traditional) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
c998f37083 New translations en.json (Chinese Simplified) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
9d4769b3fe New translations en.json (Ukrainian) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
4f5fdd97b4 New translations en.json (Turkish) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
5a3565222a New translations en.json (Swedish) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
c1928f09a0 New translations en.json (Serbian (Cyrillic)) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
d0bc244504 New translations en.json (Russian) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
72d695111e New translations en.json (Portuguese) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
15abf8c1cb New translations en.json (Polish) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
04ddc26136 New translations en.json (Norwegian) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
dbf9c3acb8 New translations en.json (Dutch) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
aca17222ed New translations en.json (Korean) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
3d254be8f9 New translations en.json (Japanese) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
137f786d94 New translations en.json (Italian) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
a19e82ea26 New translations en.json (Hungarian) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
bb5671fcf2 New translations en.json (Finnish) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
bcb2163e00 New translations en.json (Greek) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
10d16915a7 New translations en.json (German) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
6fafd12755 New translations en.json (Danish) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
654a6c5fc9 New translations en.json (Czech) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
c691b2ee36 New translations en.json (Catalan) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
03915462c0 New translations en.json (Afrikaans) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
83fb2a5aa7 New translations en.json (Spanish) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
10ca2e8ca7 New translations en.json (French) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
2e3670a8f2 New translations en.json (Romanian) 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
29b6e4ebd3 feat: localize authentication flow 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
5d06a6ae5e feat: create useLocale hook to get user locale 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
1fca513c75 feat: setup next-intl with initial page props 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
c52684e08e feat(auth): create routes to change locale and set initial locale 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
7d4e583d79 feat: create locale shared utils 2023-05-09 08:29:35 +02:00
Nicolas Meienberger
0a4d7b38ff feat(db): create locale column in user table 2023-05-09 08:29:35 +02:00
allcontributors[bot]
2816e9d6a9 docs: update .all-contributorsrc [skip ci] 2023-05-09 08:07:34 +02:00
allcontributors[bot]
77a273c6cc docs: update README.md [skip ci] 2023-05-09 08:07:34 +02:00
Nicolas Meienberger
acdeb0f416 chore: update codecov.yml 2023-05-08 22:06:01 +02:00
Nicolas Meienberger
3f3d671350 chore: add codecov.yml 2023-05-08 22:03:54 +02:00
Nicolas Meienberger
e16d07665b
Update README.md 2023-05-08 19:34:58 +02:00
allcontributors[bot]
9c170c3649 docs: update .all-contributorsrc [skip ci] 2023-05-08 19:15:29 +02:00
allcontributors[bot]
9796279a58 docs: update README.md [skip ci] 2023-05-08 19:15:29 +02:00
allcontributors[bot]
4649066084 docs: update .all-contributorsrc [skip ci] 2023-05-08 18:57:14 +02:00
allcontributors[bot]
e19bc0a714 docs: update README.md [skip ci] 2023-05-08 18:57:14 +02:00
allcontributors[bot]
9d96c9225a docs: update .all-contributorsrc [skip ci] 2023-05-08 18:54:34 +02:00
allcontributors[bot]
5031984c12 docs: update README.md [skip ci] 2023-05-08 18:54:34 +02:00
allcontributors[bot]
cbdaba58fe docs: update .all-contributorsrc [skip ci] 2023-05-08 18:53:46 +02:00
allcontributors[bot]
09cc4f30f5 docs: update README.md [skip ci] 2023-05-08 18:53:46 +02:00
allcontributors[bot]
2409db51b4 docs: update .all-contributorsrc [skip ci] 2023-05-08 18:49:50 +02:00
allcontributors[bot]
5fb0875f30 docs: update README.md [skip ci] 2023-05-08 18:49:50 +02:00
allcontributors[bot]
976b8f37a6 docs: update .all-contributorsrc [skip ci] 2023-05-08 18:49:23 +02:00
allcontributors[bot]
dfd8f00f22 docs: update README.md [skip ci] 2023-05-08 18:49:23 +02:00
Nicolas Meienberger
b7bb09a770 test: session.middleware 2023-05-05 22:21:12 +02:00
Nicolas Meienberger
10f3c9efcf test: re-test previously decreased coverage because of new implementation 2023-05-05 22:21:12 +02:00
Nicolas Meienberger
8f18a76120 refactor: remove all sessions when changing password 2023-05-05 22:21:12 +02:00
Nicolas Meienberger
bce8b35d81 refactor(client): remove useless client session state 2023-05-05 22:21:12 +02:00
Nicolas Meienberger
c709128bba feat(client): implement server-side redirect to authenticated pages 2023-05-05 22:21:12 +02:00
Nicolas Meienberger
4eaf727ef8 refactor(server): move from jwt session to cookie based session 2023-05-05 22:21:12 +02:00
Nicolas Meienberger
e0363829b3 test(auth.service): fix wrong usage of class instance 2023-05-03 08:00:21 +02:00
Nicolas Meienberger
0fbf77ab6a fix: check user's existence on token refresh 2023-05-02 19:24:57 +02:00
Nicolas Meienberger
e5d9bca6ae chore: bump version 1.3.0 2023-04-23 11:43:31 +02:00
Nicolas Meienberger
5d185ba365
Merge pull request #369 from meienberger/release/1.3.0
release: 1.3.0
2023-04-23 10:44:39 +02:00
Nicolas Meienberger
86fab3c0d8 chore: bump version 1.3.0 2023-04-21 21:48:00 +02:00
Nicolas Meienberger
3c6a1cb315 chore(readme.md): add vercel banner 2023-04-21 21:16:09 +02:00
Nicolas Meienberger
96e510721b chore(readme.md): add vercel banner 2023-04-21 21:15:27 +02:00
Nicolas Meienberger
53902a025c test: refactor apps.helper.test with a cleaner and more atomic approach 2023-04-20 20:59:41 +02:00
Nicolas Meienberger
4dd01eb31b feat: allow apps to generate their own vapid key pair 2023-04-20 20:59:41 +02:00
Nicolas Meienberger
3e9e7ce808 chore: bump node to 18.15 2023-04-20 08:10:56 +02:00
Nicolas Meienberger
2e5cb6b2b0 fix: remove onsettled callback after restart/update and set loader to false only in case of error 2023-04-20 08:10:56 +02:00
Nicolas Meienberger
06099c0ae4 refactor: extract all db queries into their own class 2023-04-19 20:40:18 +02:00
Nicolas Meienberger
f22e49f920 chore: remove everything prisma related 2023-04-19 20:40:18 +02:00
Nicolas Meienberger
4f8519b271 refactor: migrate app.service to use drizzle 2023-04-19 20:40:18 +02:00
Nicolas Meienberger
ea7ad75e18 feat(client): make force_exposed react accordingly in install form 2023-04-17 21:39:33 +02:00
Nicolas Meienberger
0e81ced999 feat(server): add the force_expose option and logic to app config 2023-04-17 21:39:33 +02:00
Nicolas Meienberger
a3b2facdd2 fix: return default values of 0 when system-info.json fails to parse 2023-04-17 08:18:23 +02:00
Nicolas Meienberger
edec96bc90 feat: migrate user.service to use drizzle 2023-04-16 17:07:31 +02:00
Nicolas Meienberger
bf89c24702 feat: create db connector for drizzle and generate schema 2023-04-16 17:07:31 +02:00
Nicolas Meienberger
19da1623a1 chore: add drizzle-orm dependencies 2023-04-16 17:07:31 +02:00
Nicolas Meienberger
f2b33965e1 feat: add app website info in details tab 2023-04-15 15:39:15 +02:00
Nicolas Meienberger
c54becbd24 refactor: fix eslint issues in tests 2023-04-15 15:38:53 +02:00
Nicolas Meienberger
40420054bc chore: add eslint-plugin-jest-dom and eslint-plugin-testing-library 2023-04-15 15:38:11 +02:00
Nicolas Meienberger
d3bd0b0cf9 refactor: use text as default field type to avoid breaking when future field types are added 2023-04-15 14:28:12 +02:00
Nicolas Meienberger
f35bdb7611 feat: allow regex pattern matchin for any field 2023-04-15 14:28:12 +02:00
Nicolas Meienberger
5472b769da feat: add new form field type "boolean" and "options" field 2023-04-15 14:28:12 +02:00
Nicolas Meienberger
fc7f4b8358 feat: create Select component with radix-ui primitives 2023-04-15 14:28:12 +02:00
Nicolas Meienberger
84ac086678 chore: log redis errors to file 2023-04-13 23:45:19 +02:00
Nicolas Meienberger
4a9fed80ff tests: category select component 2023-04-13 23:44:36 +02:00
Nicolas Meienberger
41863f364a style: add an icon for each category in the dropdown select 2023-04-13 23:44:36 +02:00
Nicolas Meienberger
db60483b1c merge branch master into develop 2023-04-13 21:54:40 +02:00
Nicolas Meienberger
0c14b1424b chore: update demo url 2023-04-13 21:26:25 +02:00
Nicolas Meienberger
e12d342288 feat: add docker healthcheck to redis service 2023-04-13 08:43:42 +02:00
Nicolas Meienberger
3ac74129fd chore: bump version 1.2.1 2023-04-12 23:04:59 +02:00
Nicolas Meienberger
b753a6ec5f chore: bump version 1.2.1 2023-04-12 23:04:27 +02:00
Nicolas Meienberger
944597f123 feat: make demo mode availble as settings to use in settings.json 2023-04-12 23:04:27 +02:00
Nicolas Meienberger
3c108e8d44 test: add coverage on helper function 2023-04-12 23:04:27 +02:00
Nicolas Meienberger
e79e9f17a6 feat: make demo mode availble as settings to use in settings.json 2023-04-12 22:26:32 +02:00
Nicolas Meienberger
ef04defc4e test: add coverage on helper function 2023-04-12 20:40:42 +02:00
Nicolas Meienberger
7dafaee124
Merge pull request #351 from meienberger/release/1.2.0
Release/1.2.0
2023-04-11 22:24:00 +02:00
Nicolas Meienberger
69386778a7
Merge pull request #350 from meienberger/release/1.2.0
Release: 1.2.0
2023-04-11 22:18:10 +02:00
Nicolas Meienberger
8585321322 refactor: use disclosure hook instead of react usestate for otp modal 2023-04-11 22:08:52 +02:00
Nicolas Meienberger
b8c3a7de03 fix: tooltips mixed content in app status 2023-04-11 22:08:44 +02:00
Nicolas Meienberger
521f73f5f3 chore: bump version 1.2.0 2023-04-11 22:08:32 +02:00
Nicolas Meienberger
d6e27dfde4 refactor: use disclosure hook instead of react usestate for otp modal 2023-04-11 21:59:12 +02:00
Nicolas Meienberger
564827a76f fix: tooltips mixed content in app status 2023-04-11 08:31:33 +02:00
Nicolas Meienberger
cbc5a4593d chore: bump version 1.2.0 2023-04-10 12:11:04 +02:00
Nicolas Meienberger
436a6875cd feat: display release notes card when update is available 2023-04-10 12:10:13 +02:00
Nicolas Meienberger
363b663525 feat: add github release body to getVersion query 2023-04-10 12:10:13 +02:00
Nicolas Meienberger
64aef3d127 chore: remove ToastProvider and toastStore 2023-04-08 20:44:18 +02:00
Nicolas Meienberger
18a09fb5b5 refactor: replace usages of custom toaster with react-hot-toast 2023-04-08 20:44:18 +02:00
Nicolas Meienberger
55cd8dc29a chore: install react-hot-toast and setup global Toaster 2023-04-08 20:44:18 +02:00
Nicolas Meienberger
6dbc831624 chore: fix eslint warinings 2023-04-08 13:19:49 +02:00
Nicolas Meienberger
2f0f4bd498 refactor: upgrade react-tooltip to v5 2023-04-08 12:46:15 +02:00
Nicolas Meienberger
adbe91be46 feat: create change password frontend form 2023-04-07 23:49:03 +02:00
Nicolas Meienberger
0068a17ec3 feat: delete all sessions for the user when changing password 2023-04-07 23:49:03 +02:00
Nicolas Meienberger
fb9251d16e refactor: include session ids prefix to have distinct tokens 2023-04-07 23:49:03 +02:00
Nicolas Meienberger
5e991ca7e5 feat: create reset password backend service and route 2023-04-07 23:49:03 +02:00
Nicolas Meienberger
2c2843f926 chore: move 2fa related code into it's own OtpForm component 2023-04-07 23:49:03 +02:00
Nicolas Meienberger
d841c43b77 feat: add 2fa form on login if user has it enabled 2023-04-07 21:04:16 +02:00
Nicolas Meienberger
904d2c5adc feat: create security container and frontend for 2fa settings 2023-04-07 21:04:16 +02:00
Nicolas Meienberger
866bee4491 feat: create OtpInput component 2023-04-07 21:04:16 +02:00
Nicolas Meienberger
ffc7db8ecc feat: create backend service and router for totp functions
disable totp
2023-04-07 21:04:16 +02:00
Nicolas Meienberger
6dfa2f76ae feat: create encryption and otp utils 2023-04-07 21:04:16 +02:00
Nicolas Meienberger
b6de8a9aa2 chore: add otplib dependency 2023-04-07 21:04:16 +02:00
Nicolas Meienberger
762ccd1a15 feat(db): add totp_secret, totp_enabled and salt to user table 2023-04-07 21:04:16 +02:00
Nicolas Meienberger
98c931ed4c refactor: switch component using radix-ui primitives 2023-04-07 13:24:49 +02:00
Nicolas Meienberger
f398958a8f chore: remove now un-used modal component 2023-04-07 13:18:04 +02:00
Nicolas Meienberger
794091302c refactor: replace old modals with new dialog component 2023-04-07 13:18:04 +02:00
Nicolas Meienberger
7172d6f8d6 feat: create new dialog component using radix-ui primitives 2023-04-07 13:18:04 +02:00
DrMxrcy
5f0ffbf6dc Update install.sh 2023-04-04 20:27:47 +02:00
Nicolas Meienberger
8eb5116b85 fix(docker-compose): pass demo_mode env var to container 2023-04-02 09:25:39 +02:00
Nicolas Meienberger
dea93ef3fd merge master into develop 2023-04-02 09:22:42 +02:00
Nicolas Meienberger
2b5b6f1312
Merge pull request #340 from meienberger/release/1.1.2
Release/1.1.2
2023-03-31 00:22:50 +02:00
Nicolas Meienberger
43d6fb292c chore: bump version 1.1.2 2023-03-31 00:06:47 +02:00
Nicolas Meienberger
c85d8246b1 feat: add demo mode option to start script 2023-03-31 00:06:47 +02:00
Nicolas Meienberger
0e750e6130 fix(settings): make sure that storage path has a value before replacing the one form settings.json 2023-03-31 00:06:47 +02:00
Nicolas Meienberger
006d5a88b0 chore: bump version 1.1.1 2023-03-30 23:39:10 +02:00
Nicolas Meienberger
843645aaf9
Merge pull request #338 from meienberger/fix/empty-storage-path-error
fix: empty storage path error
2023-03-30 23:37:47 +02:00
Nicolas Meienberger
018db408da feat: add demo mode option to start script 2023-03-30 22:42:27 +02:00
Nicolas Meienberger
d5210a78a1 fix(settings): make sure that storage path has a value before replacing the one form settings.json 2023-03-30 12:36:36 +02:00
Nicolas Meienberger
1827ad3cca
Merge pull request #336 from meienberger/release/1.1.1
Release 1.1.1
2023-03-30 08:58:23 +02:00
Nicolas Meienberger
d358f88132 chore: bump version 1.1.1 2023-03-30 08:28:52 +02:00
Nicolas Meienberger
3460596966 fix(app.sh): add the force-recreate option when starting a container 2023-03-30 08:26:31 +02:00
Nicolas Meienberger
d05efcc4ce include master commits into develop 2023-03-29 21:19:56 +02:00
Nicolas Meienberger
48cee9d23d fix(apps): update all apps in a stuck state to "stopped" upon restart 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
5397a551de fix(apps): always list my apps ordered by id 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
44dce81b87 style: change size of icons 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
da4891ca28 fix(breadcrumbs): use actual router instead of server side props to determine ancestors 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
f7ff85d771 chore: update lock file 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
45f6d83f9e chore: bump version 1.1.0 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
6b690ac3f7 feat(install.sh): create default folders for usenet 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
2aa5180c51 chore: change base image from node-buster-slim to node alpine 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
0abdf70ef2 chore(docker-compose): remove reverse-proxy when in dev mode 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
f5d141bcad chore: create ts path aliases and add ts-reset 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
ac0ffb0823 feat(dashboard): add new settings form in settings page 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
eef500306c feat(components): create new tabs component with radix-ui primitive 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
38f979b55a feat(system.service): create routes for get settings and update settings 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
23db6c3fec chore(zustand): replace default export by named expor 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
6e643c6342 chore: add react-query dev tools and update lock file 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
28648288ad chore: updated outdated dependencies 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
91e5948645 chore: update @tabler/core and replace @tabler/icons with @tabler/react-icons 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
3c01ed1249 test(tabler.helpers): limt text and sort table functions 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
c872f1e22c test: adapt tests to use dynamic props for breadcrumbs 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
1c91e181d8 fix(app-store): incorrect breadcrumbs displayed in app store nested routes 2023-03-29 21:15:32 +02:00
Nicolas Meienberger
54eddd57c3 chore: bump version 1.1.0 2023-03-29 20:54:01 +02:00
Nicolas Meienberger
2242f9dec4 chore: update lock file 2023-03-29 20:53:55 +02:00
Nicolas Meienberger
2a246460ea fix(breadcrumbs): use actual router instead of server side props to determine ancestors 2023-03-29 20:53:43 +02:00
Nicolas Meienberger
3215f70ec2 style: change size of icons 2023-03-29 20:53:36 +02:00
Nicolas Meienberger
7dd83dd913 fix(apps): update all apps in a stuck state to "stopped" upon restart 2023-03-29 20:53:15 +02:00
Nicolas Meienberger
8e73730d8d fix(apps): always list my apps ordered by id 2023-03-29 20:53:08 +02:00
Nicolas Meienberger
48baba8cdc chore: change base image from node-buster-slim to node alpine 2023-03-28 22:44:03 +02:00
Nicolas Meienberger
b157e0ec2f chore(docker-compose): remove reverse-proxy when in dev mode 2023-03-28 22:44:03 +02:00
Nicolas Meienberger
2571d96e11 chore: create ts path aliases and add ts-reset 2023-03-28 22:44:03 +02:00
Nicolas Meienberger
d18d50814e feat(dashboard): add new settings form in settings page 2023-03-28 22:44:03 +02:00
Nicolas Meienberger
7915192aae feat(components): create new tabs component with radix-ui primitive 2023-03-28 22:44:03 +02:00
Nicolas Meienberger
b19d30cce3 feat(system.service): create routes for get settings and update settings 2023-03-28 22:44:03 +02:00
Nicolas Meienberger
43612cb78f chore(zustand): replace default export by named expor 2023-03-26 00:22:38 +01:00
Nicolas Meienberger
53b1e0f61c chore: add react-query dev tools and update lock file 2023-03-26 00:22:38 +01:00
Nicolas Meienberger
a4a6e900f0 chore: updated outdated dependencies 2023-03-26 00:22:38 +01:00
Nicolas Meienberger
e0dadde2ce chore: update @tabler/core and replace @tabler/icons with @tabler/react-icons 2023-03-26 00:22:38 +01:00
DrMxrcy
4034c0b835 Update Read Me to Reflect new Website 2023-03-25 23:57:53 +01:00
DrMxrcy
4624a2f2b3 Update install.sh 2023-03-25 23:56:43 +01:00
Nicolas Meienberger
3dff1c856f
doc(readme): remove instructions and add link to website [skip ci]
Remove installation instructions from README and add a link to our website runtipi.io
2023-03-22 23:41:30 +01:00
Nicolas Meienberger
60f15cbd49 test(tabler.helpers): limt text and sort table functions 2023-03-18 16:23:45 +01:00
Nicolas Meienberger
477e9d4cfc test: adapt tests to use dynamic props for breadcrumbs 2023-03-18 16:23:45 +01:00
Nicolas Meienberger
0bbe7e897f fix(app-store): incorrect breadcrumbs displayed in app store nested routes 2023-03-18 16:23:45 +01:00
Nicolas Meienberger
9cfd9d208a doc: clarify parts with copyrighted code [skip ci] 2023-03-08 18:53:16 +01:00
Nicolas Meienberger
029b9a7ec2
Merge pull request #322 from meienberger/release/1.0.1
release: 1.0.1
2023-03-06 00:08:35 +01:00
Nicolas Meienberger
21cba176e9 chore: bump version 1.0.1 2023-03-06 00:03:41 +01:00
Nicolas Meienberger
8af93f5744 fix: pass base .env to container 2023-03-06 00:03:41 +01:00
Nicolas Meienberger
0fc43e8780 fix(events): correctly assign global.eventdispatcher 2023-03-06 00:03:41 +01:00
Nicolas Meienberger
baa4b63387 fix(app): don't refetch periodically 2023-03-02 21:25:55 +01:00
Nicolas Meienberger
d9ed205168 Merge branch 'master' into develop 2023-03-02 21:24:26 +01:00
Nicolas Meienberger
2239b44574
Update release.yml 2023-03-02 20:42:33 +01:00
Nicolas Meienberger
c9aefc347f
Update release.yml 2023-03-02 20:39:01 +01:00
Nicolas Meienberger
041626291f
Update release.yml 2023-03-02 20:33:27 +01:00
Nicolas Meienberger
ea2ad85f8b
Update release.yml 2023-03-02 20:30:18 +01:00
Nicolas Meienberger
e2869b1759
ci(release): add workflow dispatch option
[skip ci]
2023-03-02 20:23:27 +01:00
Nicolas Meienberger
c04b2b870c
ci(rc): add workflow dispatch option
[skip ci]
2023-03-02 20:22:36 +01:00
Nicolas Meienberger
3925cfa7bb
Release/1.0.0 (#316)
* fix: create default media folder structure on install

* feat: add link to open exposed app to domain

* [ImgBot] Optimize images

*Total -- 2,048.42kb -> 1,263.43kb (38.32%)

/screenshots/darkmode.png -- 998.43kb -> 609.77kb (38.93%)
/screenshots/appstore.png -- 1,006.73kb -> 620.12kb (38.4%)
/packages/dashboard/public/error.png -- 42.38kb -> 32.70kb (22.84%)
/packages/dashboard/public/empty.svg -- 0.87kb -> 0.85kb (2.35%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

* chore: bump version 0.8.1

* refactor: move all dashboard's files into a client folder

* feat: setup trpc and create system router

* test: split jest config for client and server

* refactor: replace grapqhl queries with trpc in the frontend

* refactor: remove now un-used system queries/mutations/resolvers from both client and server

* chore: bump dependencies

* feat: setup prisma and configure it for tests and development

* feat: create trpc router for auth service

* refactor: migrate client auth queries to trpc procedures

* refactor: cleanup now un-used graphql resolvers and services

* feat: create sql migrations by replicating typeorm ones in an idempotent manner

* feat: create server-preload script to run migrations upon server start

* chore: remove legacy migrations steps

* feat: add redis_host as an env variable

* refactor: remove prisma from context and use client directly in service

* feat: create trpc router & service for apps

* refactor: migrate client app queries/mutations to trpc

* refactor: removal and replace usage of old graphql generated types

* refactor: move from node --require to custom next server

* test: fix tests and bump various dependencies

* chore: cleanup system-api from now un-used files

* refactor(dashboard): remove code related to apollo

* refactor: serve static files through next's server instead of system-api

* refactor(server): move auth and system services to class

* refactor(client): remove layoutv2 abstraction

* fix: return correct update info

* chore: remove legacy system-api folder

* refactor: remove system-api from docker files

* feat: create scheduler to run cron jobs and setup periodic repo update

* fix: failing build caused by remark-mdx

* refactor: move migrations to server folder

* feat: compile server using esbuild

* refactor: ts issue mis-used file from client in server

* ci: make pipeline pass by cd into dashboard before each step (temp)

* chore: drop armv7 support

* refactor: move dashboard files in root folder

* feat(db): create migration to add operator field on user

* feat(user): create routes and services for password reset

* feat(auth): add reset password page, container & form

* refactor(dashboard): change layout and page of auth to be url based instead of state based

* feat(script): add reset-password script

* fix(dashboard): only check status if restart or update has been requested

* test: increase coverage for get-server-auth-session

* fix(start.sh): prompt for network interface only if there is not an internal ip set

* feat(script): support user docker-compose.yml and app.env

* chore: bump version

* fix: add missing postgres variables to start script

* fix: check for 32 bits before installing/starting

* fix: create default media folder structure on install

* Updated demo instance link

Changed demo.runtipi.com to https://demo.runtipi.com

* feat: adding config for codespaces

* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

---------

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: Freddie Sackur <github@dustyfox.uk>
Co-authored-by: Kieran Klukas <92754843+kcoderhtml@users.noreply.github.com>
Co-authored-by: alwerner <alexander.werner@bonprix.net>
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2023-03-02 20:19:20 +01:00
allcontributors[bot]
91c3162e3e docs: update .all-contributorsrc [skip ci] 2023-02-28 08:45:29 +01:00
allcontributors[bot]
c9104da8d0 docs: update README.md [skip ci] 2023-02-28 08:45:29 +01:00
Freddie Sackur
ba5d923578 feat(script): support user docker-compose.yml and app.env 2023-02-26 13:55:06 +01:00
Nicolas Meienberger
9c0f86eafe fix(start.sh): prompt for network interface only if there is not an internal ip set 2023-02-23 22:21:42 +01:00
allcontributors[bot]
662f9e1b41 docs: update .all-contributorsrc [skip ci] 2023-02-23 22:13:11 +01:00
allcontributors[bot]
23ad782078 docs: update README.md [skip ci] 2023-02-23 22:13:11 +01:00
Nicolas Meienberger
5b1aef7607 test: increase coverage for get-server-auth-session 2023-02-23 21:12:38 +01:00
Nicolas Meienberger
0825257a2e fix(dashboard): only check status if restart or update has been requested 2023-02-23 21:12:38 +01:00
Nicolas Meienberger
d802e515e9 feat(script): add reset-password script 2023-02-23 08:23:58 +01:00
Nicolas Meienberger
360a726893 refactor(dashboard): change layout and page of auth to be url based instead of state based 2023-02-23 08:23:58 +01:00
Nicolas Meienberger
f228f6d07d feat(auth): add reset password page, container & form 2023-02-23 08:23:58 +01:00
Nicolas Meienberger
57f05a80bd feat(user): create routes and services for password reset 2023-02-23 08:23:58 +01:00
Nicolas Meienberger
26fe881aa7 feat(db): create migration to add operator field on user 2023-02-23 08:23:58 +01:00
Nicolas Meienberger
9c340faecb refactor: move dashboard files in root folder 2023-02-20 08:41:59 +01:00
Nicolas Meienberger
7d255acdbb chore: drop armv7 support 2023-02-17 21:43:25 +01:00
Nicolas Meienberger
00d6f42928 ci: make pipeline pass by cd into dashboard before each step (temp) 2023-02-17 20:59:46 +01:00
Nicolas Meienberger
079e1e1bc7 refactor: ts issue mis-used file from client in server 2023-02-17 20:59:46 +01:00
Nicolas Meienberger
7e1af1069c feat: compile server using esbuild 2023-02-17 20:59:46 +01:00
Nicolas Meienberger
4cb9cfa6d2 refactor: move migrations to server folder 2023-02-17 20:59:46 +01:00
Nicolas Meienberger
dd0790157f fix: failing build caused by remark-mdx 2023-02-13 21:32:09 +01:00
Nicolas Meienberger
747fee006d feat: create scheduler to run cron jobs and setup periodic repo update 2023-02-13 21:32:09 +01:00
Nicolas Meienberger
90115b149f refactor: remove system-api from docker files 2023-02-13 21:32:09 +01:00
Nicolas Meienberger
88e0ccd7b9 chore: remove legacy system-api folder 2023-02-13 21:32:09 +01:00
Nicolas Meienberger
f1c295e84d fix: return correct update info 2023-02-12 18:29:25 +01:00
Nicolas Meienberger
a47606b472 refactor(client): remove layoutv2 abstraction 2023-02-12 00:55:23 +01:00
Nicolas Meienberger
5ff7451267 refactor(server): move auth and system services to class 2023-02-12 00:33:32 +01:00
Nicolas Meienberger
c42b96ae53 refactor: serve static files through next's server instead of system-api 2023-02-12 00:08:45 +01:00
Nicolas Meienberger
365f2fb1ab refactor(dashboard): remove code related to apollo 2023-02-12 00:01:56 +01:00
Nicolas Meienberger
36a6483ff7 chore: cleanup system-api from now un-used files 2023-02-04 15:08:17 +01:00
Nicolas Meienberger
79f1da00d0 test: fix tests and bump various dependencies 2023-02-04 15:08:17 +01:00
Nicolas Meienberger
29c7f98a69 refactor: move from node --require to custom next server 2023-02-04 15:08:17 +01:00
Nicolas Meienberger
d72526ab8a refactor: removal and replace usage of old graphql generated types 2023-02-04 15:08:17 +01:00
Nicolas Meienberger
783c80714b refactor: migrate client app queries/mutations to trpc 2023-02-04 15:08:17 +01:00
Nicolas Meienberger
fa8f178433 feat: create trpc router & service for apps 2023-02-04 15:08:17 +01:00
Nicolas Meienberger
3e67758d86 refactor: remove prisma from context and use client directly in service 2023-01-26 07:31:22 +01:00
alwerner
51ce8e2667 feat: adding config for codespaces 2023-01-25 20:28:36 +01:00
Nicolas Meienberger
71d106b39a feat: add redis_host as an env variable 2023-01-23 20:51:47 +01:00
Nicolas Meienberger
257966c18d chore: remove legacy migrations steps 2023-01-23 20:51:47 +01:00
Nicolas Meienberger
5eaa78a9e0 feat: create server-preload script to run migrations upon server start 2023-01-23 20:51:47 +01:00
Nicolas Meienberger
5f1ad108c6 feat: create sql migrations by replicating typeorm ones in an idempotent manner 2023-01-23 20:51:47 +01:00
Nicolas Meienberger
4609078894 refactor: cleanup now un-used graphql resolvers and services 2023-01-23 20:42:25 +01:00
Nicolas Meienberger
f6a6b85b60 refactor: migrate client auth queries to trpc procedures 2023-01-23 20:42:25 +01:00
Nicolas Meienberger
2e13666d80 feat: create trpc router for auth service 2023-01-23 20:42:25 +01:00
Nicolas Meienberger
7c9bd4fab3 feat: setup prisma and configure it for tests and development 2023-01-23 20:42:25 +01:00
Nicolas Meienberger
92c1a769c5 chore: bump dependencies 2023-01-23 20:04:29 +01:00
Nicolas Meienberger
7d9c8a75a0 refactor: remove now un-used system queries/mutations/resolvers from both client and server 2023-01-23 20:04:29 +01:00
Nicolas Meienberger
3cc3c9011e refactor: replace grapqhl queries with trpc in the frontend 2023-01-23 20:04:29 +01:00
Nicolas Meienberger
ce6662bef5 test: split jest config for client and server 2023-01-23 20:04:29 +01:00
Nicolas Meienberger
d4f507ced3 feat: setup trpc and create system router 2023-01-23 20:04:29 +01:00
Nicolas Meienberger
34e6ff33e1 refactor: move all dashboard's files into a client folder 2022-12-26 04:22:37 +01:00
Kieran Klukas
e921e52934 Updated demo instance link
Changed demo.runtipi.com to https://demo.runtipi.com
2022-12-22 00:28:32 +01:00
Nicolas Meienberger
68b88f90e8 chore: bump version 0.8.1 2022-12-20 22:24:41 +01:00
ImgBotApp
dfc0fe89e6 [ImgBot] Optimize images
*Total -- 2,048.42kb -> 1,263.43kb (38.32%)

/screenshots/darkmode.png -- 998.43kb -> 609.77kb (38.93%)
/screenshots/appstore.png -- 1,006.73kb -> 620.12kb (38.4%)
/packages/dashboard/public/error.png -- 42.38kb -> 32.70kb (22.84%)
/packages/dashboard/public/empty.svg -- 0.87kb -> 0.85kb (2.35%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2022-12-20 22:24:41 +01:00
Nicolas Meienberger
888b4abb9a feat: add link to open exposed app to domain 2022-12-20 22:24:41 +01:00
Nicolas Meienberger
79d405da9f fix: create default media folder structure on install 2022-12-20 22:24:41 +01:00
Nicolas Meienberger
80fbddaa9c chore: bump version 0.8.1 2022-12-20 20:52:45 +01:00
ImgBotApp
358d50cafd [ImgBot] Optimize images
*Total -- 2,048.42kb -> 1,263.43kb (38.32%)

/screenshots/darkmode.png -- 998.43kb -> 609.77kb (38.93%)
/screenshots/appstore.png -- 1,006.73kb -> 620.12kb (38.4%)
/packages/dashboard/public/error.png -- 42.38kb -> 32.70kb (22.84%)
/packages/dashboard/public/empty.svg -- 0.87kb -> 0.85kb (2.35%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2022-12-20 20:41:25 +01:00
Nicolas Meienberger
a46a02231c feat: add link to open exposed app to domain 2022-12-20 20:40:54 +01:00
Nicolas Meienberger
70e2ca67cb
Merge pull request #279 from meienberger/fix/default-folders
fix: create default media folder structure on install
2022-12-20 20:09:47 +01:00
Nicolas Meienberger
e0d6baf4f6 fix: create default media folder structure on install 2022-12-20 20:06:05 +01:00
Nicolas Meienberger
3ab108c919
Merge pull request #276 from meienberger/release/0.8.0
Release/0.8.0
2022-12-18 15:25:44 +01:00
Nicolas Meienberger
794512d511 chore: align release/0.8.0 with master 2022-12-18 00:05:50 +01:00
Nicolas Meienberger
d55dda39fd chore: bump version 2022-12-17 23:49:04 +01:00
Nicolas Meienberger
9afea45170 feat: install through bash script 2022-12-17 23:48:05 +01:00
Nicolas Meienberger
205b044aec
Create install.sh to test update via script [skip ci] 2022-12-17 00:23:07 +01:00
Nicolas Meienberger
f3dff9c576 fix: custom 404 page & styling fixes 2022-12-16 20:50:09 +01:00
Nicolas Meienberger
c4bda4eb07 test: front-end setup jest, testing-library, msw & test components 2022-12-16 07:59:10 +00:00
Nicolas Meienberger
59386e744a fix: remove user instruction in dockerfile 2022-12-15 23:13:58 +01:00
Nicolas Meienberger
ec8e422eb5 refactor(server): migrate to esbuild to have a smaller docker image size
Migrated the server build to esbuild in order to have one bundle for the whole app including the
used modules
2022-12-15 19:28:03 +00:00
Nicolas Meienberger
cd9ca3f608 chore: update screenshots 2022-12-07 21:45:04 +01:00
Nicolas Meienberger
8445c8adc7 refactor: use named exports & remove unused files 2022-12-07 20:29:12 +00:00
Nicolas Meienberger
59b12c2679 refactor(dashboard): move from chakra-ui to tabler
Complete redesign of the dashboard to use tabler as CSS
2022-12-07 20:29:12 +00:00
Nicolas Meienberger
937b709d75 docs: update readme 2022-12-07 10:17:24 +01:00
Nicolas Meienberger
69c308c9b7 update README [skip ci] 2022-12-07 09:35:05 +01:00
Nicolas Meienberger
8cafb1ee26 Release/0.7.4 (#266)
* feat: move from cookie base auth to jwt auth

test: mock redis

* test: auth.service & auth.resolver

test: auth.resolver

* fix: semver comparaison client side

* refactor: allow all origins

* feat: specify which app have no GUI and therefore don't show the "open" button

* feat(install form): add input placeholder

chore: fix code smells

* chore: update tests to cover invalid config.json

* fix(dashboard): refresh page when update is successful

* chore: bump version 0.7.4

* feat: use redis cache in apollo server

* feat: allow apps to configure a uid:gid for folder permissions

* test: correct broken test
2022-12-07 09:34:55 +01:00
Nicolas Meienberger
c277979b2f fix: pull images before starting 2022-12-06 14:20:47 +01:00
Nicolas Meienberger
cea3605e06 fix: don't start app before uninstalling it 2022-11-24 21:34:31 +01:00
Nicolas Meienberger
dbddf8ad1c Merge branch 'release/0.7.4' into develop 2022-11-20 20:55:23 +01:00
Nicolas Meienberger
6117bf837c
Release/0.7.4 (#266)
* feat: move from cookie base auth to jwt auth

test: mock redis

* test: auth.service & auth.resolver

test: auth.resolver

* fix: semver comparaison client side

* refactor: allow all origins

* feat: specify which app have no GUI and therefore don't show the "open" button

* feat(install form): add input placeholder

chore: fix code smells

* chore: update tests to cover invalid config.json

* fix(dashboard): refresh page when update is successful

* chore: bump version 0.7.4

* feat: use redis cache in apollo server

* feat: allow apps to configure a uid:gid for folder permissions

* test: correct broken test
2022-11-20 19:48:44 +00:00
Nicolas Meienberger
406a6925eb
update README [skip ci] 2022-11-18 18:02:09 +00:00
Nicolas Meienberger
5527f4c785 test: correct broken test 2022-11-18 13:39:47 +01:00
Nicolas Meienberger
7186630f4d feat: allow apps to configure a uid:gid for folder permissions 2022-11-18 13:36:04 +01:00
Nicolas Meienberger
e441836013 feat: use redis cache in apollo server 2022-11-18 13:35:53 +01:00
Nicolas Meienberger
dccbcdc461 chore: bump version 0.7.4 2022-11-18 13:35:40 +01:00
Nicolas Meienberger
1109661fba fix(dashboard): refresh page when update is successful 2022-11-18 13:35:40 +01:00
Nicolas Meienberger
ad4b4354a8 chore: update tests to cover invalid config.json 2022-11-18 13:35:40 +01:00
Nicolas Meienberger
f37ef84417 feat(install form): add input placeholder
chore: fix code smells
2022-11-18 13:35:39 +01:00
Nicolas Meienberger
12e0174ab0 feat: specify which app have no GUI and therefore don't show the "open" button 2022-11-18 13:35:39 +01:00
Nicolas Meienberger
270789190c refactor: allow all origins 2022-11-18 13:34:37 +01:00
Nicolas Meienberger
0a7bb5f2e3 fix: semver comparaison client side 2022-11-18 13:32:00 +01:00
Nicolas Meienberger
552bf02b10 test: auth.service & auth.resolver
test: auth.resolver
2022-11-18 13:30:15 +01:00
Nicolas Meienberger
694122c67a feat: move from cookie base auth to jwt auth
test: mock redis
2022-11-18 13:27:47 +01:00
Nicolas Meienberger
844a983048 test: correct broken test 2022-11-18 12:58:26 +01:00
Nicolas Meienberger
e04bdc52d6 feat: allow apps to configure a uid:gid for folder permissions 2022-11-18 12:55:13 +01:00
Nicolas Meienberger
8d1612ee46 feat: allow apps to configure a uid:gid for folder permissions 2022-11-18 12:52:17 +01:00
Nicolas Meienberger
30dc8e3e17 feat: use redis cache in apollo server 2022-11-17 23:00:41 +01:00
Nicolas Meienberger
69ed0fd028 fix(dashboard): refresh page when update is successful 2022-11-17 21:29:44 +00:00
Nicolas Meienberger
2dbddfc084 Merge branch 'master' into develop 2022-11-17 21:38:15 +01:00
Nicolas Meienberger
affbf10985 chore: update tests to cover invalid config.json 2022-11-17 20:37:39 +00:00
Nicolas Meienberger
722dfbf852 feat(install form): add input placeholder
chore: fix code smells
2022-11-17 20:37:39 +00:00
Nicolas Meienberger
5432c761ec feat: specify which app have no GUI and therefore don't show the "open" button 2022-11-17 20:37:39 +00:00
Nicolas Meienberger
598ca0046a fix(start.sh): default value for timezone [skip ci] 2022-11-13 21:20:08 +01:00
Nicolas Meienberger
6ae9efa8d0 fix(configure.sh): wrong check on dependency to install [skip ci] 2022-11-11 23:34:56 +01:00
Nicolas Meienberger
63c2af8c91 Merge branch 'master' into develop 2022-11-09 20:02:34 +01:00
Nicolas Meienberger
08b6b31884 fix: use direct path with same origin when calling api 2022-11-09 18:49:03 +01:00
Nicolas Meienberger
e081d3d4bd fix: ensure protocol is the same to avoid mixed content 2022-11-09 17:28:00 +01:00
Nicolas Meienberger
6e299eb832 chore: bump version 2022-11-09 08:38:15 +00:00
Nicolas Meienberger
b67e41995a feat: open apps from same domain in the dashboard 2022-11-09 08:38:15 +00:00
Nicolas Meienberger
1d9c631705 refactor: allow all origins 2022-11-09 08:38:15 +00:00
Nicolas Meienberger
f6efd94ed9 fix: linting warnings 2022-11-09 08:38:15 +00:00
Nicolas Meienberger
f6257d4ea0 chore: fix eslint rules 2022-11-09 08:38:15 +00:00
Nicolas Meienberger
65ff20387a fix: semver comparaison client side 2022-11-09 08:38:15 +00:00
Nicolas Meienberger
a7b97ed34c Merge branch 'release/0.7.3' into develop 2022-11-08 20:52:13 +01:00
Nicolas Meienberger
c505d418ea chore: bump version 2022-11-08 19:25:08 +01:00
Nicolas Meienberger
0bc2db058f feat: open apps from same domain in the dashboard 2022-11-08 19:09:00 +01:00
Nicolas Meienberger
c8dce109a2 refactor: allow all origins 2022-11-08 09:35:51 +01:00
Nicolas Meienberger
b201f99d49 fix: linting warnings 2022-11-08 00:23:14 +01:00
Nicolas Meienberger
35ebb1069a chore: fix eslint rules 2022-11-05 20:43:14 +01:00
Nicolas Meienberger
ef93cdd669 fix: semver comparaison client side 2022-11-05 12:31:33 +01:00
Ikko Ashimine
0ea17b7901 Fix typo in UpdateBanner.tsx
Github -> GitHub
2022-11-05 08:49:49 +00:00
Nicolas Meienberger
aec5f553ce
Update README.md 2022-11-04 08:04:31 +00:00
Nicolas Meienberger
8d766c82fe chore: merge conflicts 2022-11-04 08:59:31 +01:00
Nicolas Meienberger
48c1e2607f
Release/0.7.2 (#249)
* feat: move from cookie base auth to jwt auth

test: mock redis

* test: auth.service & auth.resolver

test: auth.resolver

* test: session middleware

* chore: bump version

fix: merge conflicts

* docs: update readme & trace start script

* fix: start script unbound variables [skip ci]

* fix: kill watcher function [skip ci]

* fix: register store token

* fix: don't delete token immediately after refresh. keep it for 6 sec to account for delays
2022-11-04 07:49:40 +00:00
Nicolas Meienberger
fda8a4d824 Merge branch 'master' into develop 2022-10-23 10:14:29 +02:00
Nicolas Meienberger
1f8dbf9c91
Merge pull request #246 from meienberger/feat/jwt-auth
feat: move from cookie base auth to jwt auth
2022-10-23 08:05:20 +00:00
Nicolas Meienberger
d287175b07 chore: ignore .vscode folder [skip ci] 2022-10-22 15:34:55 +02:00
Nicolas Meienberger
6682d8b3b9 test: session middleware 2022-10-22 15:24:32 +02:00
Nicolas Meienberger
d64337810b
Update FUNDING.yml 2022-10-22 13:10:19 +00:00
Nicolas Meienberger
7f58f19416 test: auth.service & auth.resolver
test: auth.resolver
2022-10-22 14:39:51 +02:00
Nicolas Meienberger
86f29b5754 feat: move from cookie base auth to jwt auth
test: mock redis
2022-10-20 23:40:11 +02:00
Nicolas Meienberger
83180709b6
Merge pull request #241 from meienberger/release/0.7.1
Release/0.7.1
2022-10-19 21:18:58 +02:00
Nicolas Meienberger
bc6e32db86 fix: check if all containers can be removed before update [skip ci] 2022-10-19 21:13:01 +02:00
Nicolas Meienberger
f5d1bb13a9 refactor: remove useless part of start script [skip ci] 2022-10-19 14:39:19 +02:00
Nicolas Meienberger
1c453982c1 feat: detect arch in start-dev.sh script [skip ci] 2022-10-19 14:39:19 +02:00
Nicolas Meienberger
5acb0bd651 fix: add missing env variable 2022-10-19 14:39:19 +02:00
Nicolas Meienberger
b9667f29f1 feat: hide apps which are not supported on the host architecture 2022-10-19 14:39:19 +02:00
Nicolas Meienberger
b29d6cc234 chore: bump version 2022-10-19 14:39:19 +02:00
Nicolas Meienberger
d102f18f91 fix: pull repositories from their current branch instead of master 2022-10-19 14:39:19 +02:00
Nicolas Meienberger
84ceb52088 feat: leverage next standalone output for smaller image size 2022-10-19 14:39:19 +02:00
Nicolas Meienberger
440cf635c3
Merge pull request #243 from andrewbrereton/master [skip ci]
fix: Use postgres:14 instead of postgres:latest [skip ci]
2022-10-16 13:28:37 +02:00
Andrew Brereton
7fa78a9953 fix: Use postgres:14 instead of postgres:latest (which resolves to postgres:15) because of a database version incompatibility error. This resolves #242 so master works again, however a better fix would be to upgrade from postgres 14 to 15. 2022-10-16 10:36:20 +11:00
Nicolas Meienberger
69ab04df15
Merge pull request #236 from meienberger/all-contributors/add-andrewbrereton
docs: add andrewbrereton as a contributor for content
2022-10-14 18:49:37 +02:00
allcontributors[bot]
cb672c33ab
docs: update .all-contributorsrc [skip ci] 2022-10-14 16:49:18 +00:00
allcontributors[bot]
3329af311d
docs: update README.md [skip ci] 2022-10-14 16:49:17 +00:00
Nicolas Meienberger
7b84227475
Merge pull request #234 from andrewbrereton/patch-1
Update app list in README [skip ci]
2022-10-14 18:47:48 +02:00
Andrew Brereton
dd3fb0a117
Update app list in README 2022-10-14 10:01:34 +11:00
Nicolas Meienberger
f6caa5c2a9
Merge pull request #232 from meienberger/all-contributors/add-iBicha [skip ci]
docs: add iBicha as a contributor for code
2022-10-13 22:07:35 +00:00
allcontributors[bot]
d9ec89c1c5
docs: update .all-contributorsrc [skip ci] 2022-10-13 22:03:52 +00:00
allcontributors[bot]
60b27df115
docs: update README.md [skip ci] 2022-10-13 22:03:51 +00:00
Nicolas Meienberger
5091bc4f6b Merge branch 'master' of github.com:meienberger/runtipi 2022-10-13 19:58:28 +02:00
Nicolas Meienberger
00eba02767 refactor: simplify dev setup [skip ci] 2022-10-13 19:57:58 +02:00
Nicolas Meienberger
a057f64774
Merge pull request #231 from mawise/patch-1 [skip ci]
Add Haven to list of apps in readme [skip ci]
2022-10-13 17:46:44 +00:00
mawise
7cf73540b1
Add Haven to list of apps in readme 2022-10-13 08:11:32 -05:00
Nicolas Meienberger
a2fb8895ee fix: run system-info.sh before changing permissions [skip ci] 2022-10-12 00:20:51 +02:00
Nicolas Meienberger
82ad17082a fix: generate seed before trying to use it [skip ci] 2022-10-11 23:18:24 +02:00
Nicolas Meienberger
5332172293 fix: .gitignore exclusion [skip ci] 2022-10-11 23:04:27 +02:00
Nicolas Meienberger
cac5a9c37d fix: re-add ignored media folder [skip ci] 2022-10-11 23:01:36 +02:00
Nicolas Meienberger
3ed46448ac
docs: precise settings.json instructions [skip ci] 2022-10-10 19:32:55 +00:00
Nicolas Meienberger
7aabf0de7b
Merge pull request #223 from meienberger/release/0.7.0
Release/0.7.0
2022-10-10 18:50:40 +00:00
Nicolas Meienberger
680152b63a fix: map .env file to container [skip ci] 2022-10-10 08:25:25 +02:00
Nicolas Meienberger
606555a1cc chore: merge master 2022-10-09 23:02:32 +02:00
Nicolas Meienberger
98c86e0bcf fix: create default folders [skip ci] 2022-10-09 17:43:52 +02:00
Nicolas Meienberger
9f8e68b4ba fix: remove driver opts in docker network 2022-10-09 16:29:55 +02:00
Nicolas Meienberger
c67d92bdec fix: dockerfile issue 2022-10-08 02:15:52 +02:00
Nicolas Meienberger
8d15b0c29f fix: fetcher [skip ci] 2022-10-07 22:50:02 +02:00
Nicolas Meienberger
c44b6ae7f8 fix: make client-side env vriable being loadad at runtime-n 2022-10-07 19:47:09 +02:00
Nicolas Meienberger
4a5eb2d430 fix: release tests 2022-10-07 13:36:29 +02:00
Nicolas Meienberger
0e16295dc3 chore: bump version to 0.7.0 2022-10-06 18:42:32 +02:00
Nicolas Meienberger
3c10575b46
Merge pull request #221 from meienberger/chore/cleanup
Chore/cleanup
2022-10-06 18:39:34 +02:00
Nicolas Meienberger
5aa050a7d6 feat: add donate button in side menu 2022-10-06 18:33:02 +02:00
Nicolas Meienberger
31d9cc565f docs: describe usage of settings.json in readm 2022-10-06 18:30:23 +02:00
Nicolas Meienberger
55beac4477 chore: remove unused dependencies and files client & server 2022-10-06 18:29:12 +02:00
Nicolas Meienberger
ecca216c0b fix: various issues in scripts 2022-10-06 18:28:29 +02:00
Nicolas Meienberger
56ede19cae refactor: use native alpine instead of node:alpine 2022-10-06 18:27:17 +02:00
Nicolas Meienberger
d91dedc580 fix: add make dependency in dockerfile 2022-10-05 23:39:38 +02:00
Nicolas Meienberger
09ebeb02bd fix: add g++ dependency in dockerfile 2022-10-05 23:21:11 +02:00
Nicolas Meienberger
e227e2fb2e fix(dockerfile): remove useless ubuntu commands 2022-10-05 22:49:43 +02:00
Nicolas Meienberger
4f265151f8 chore: bump version 2022-10-05 22:46:29 +02:00
Nicolas Meienberger
0aa930ebb1
Merge pull request #219 from meienberger/refactor/scripts
Refactor/scripts - Event based actions
2022-10-05 20:43:28 +00:00
Nicolas Meienberger
b6e41bbfb6 test: event dispatcher 2022-10-05 22:30:29 +02:00
Nicolas Meienberger
a024b03508 refactor: make event dispatcher a singleton and update app accordingly 2022-10-05 19:18:11 +02:00
Nicolas Meienberger
3b0fc56563 feat: event base dispatcher to run commands from the host 2022-10-05 19:18:11 +02:00
Nicolas Meienberger
e11569a4ab
Merge pull request #218 from meienberger/production-build
refactore: change production to use ubuntu instead of alpine image
2022-09-29 20:36:06 +00:00
Nicolas Meienberger
59a2b5cd8b
Merge pull request #217 from meienberger/feature/storage-path
feat: customize applications storage-path
2022-09-29 20:34:18 +00:00
Nicolas Meienberger
fad2f70064 refactore: change production to use ubuntu instead of alpine image 2022-09-29 22:28:41 +02:00
Nicolas Meienberger
7adc37ab26 test: apps.helpers.ts 2022-09-29 21:20:46 +02:00
Nicolas Meienberger
b3611a4cb1
Merge pull request #216 from meienberger/feature/inapp-update
feat(settings): in app update and restart
2022-09-29 17:41:30 +00:00
Nicolas Meienberger
bb5a50e143 feat: customize applications storage-path 2022-09-29 18:33:34 +02:00
Nicolas Meienberger
164635d33b test: system.resolver 2022-09-26 22:56:05 +02:00
Nicolas Meienberger
ba0996a1f2 test: system.service 2022-09-26 22:00:12 +02:00
Nicolas Meienberger
aa518c660f feat(settings): in app update and restart 2022-09-26 22:00:12 +02:00
Nicolas Meienberger
3a472d7097 chore: update .gitignore 2022-09-24 20:18:52 +02:00
Nicolas Meienberger
86fda6250c chore: update .gitignore 2022-09-24 20:17:55 +02:00
Nicolas Meienberger
a8db7bd179
Merge pull request #212 from meienberger/feature/inapp-config
feature: runtime config
2022-09-24 20:15:06 +02:00
Nicolas Meienberger
9d4cdf6f77 test: cron jobs 2022-09-24 16:02:33 +02:00
Nicolas Meienberger
7a444698b8 test: repo-helpers.ts 2022-09-22 22:55:25 +02:00
Nicolas Meienberger
dd62fcdde0 test(config): add unit testing
test: add unhappy path
2022-09-22 22:12:23 +02:00
Nicolas Meienberger
ddfc6eff34 refactor: add logs volume to retrive logs as files
refactor(url-helper.ts): remove empty block statement
2022-09-22 20:45:50 +02:00
Nicolas Meienberger
0196a33c14 Merge branch 'dextreem-feature/select-network-interface' 2022-09-22 19:59:33 +02:00
Nicolas Meienberger
4f7b251256 refactor(start.sh): use -r flag to prevent mangle backslashes 2022-09-22 19:58:08 +02:00
Nicolas Meienberger
57f64675eb Merge branch 'feature/select-network-interface' of https://github.com/dextreem/runtipi into dextreem-feature/select-network-interface 2022-09-22 17:54:42 +02:00
Nicolas Meienberger
b5fdac47c8 refactor(scripts): refactor bash scripts 2022-09-21 23:18:30 +02:00
Nicolas Meienberger
f4ec85ed15 refactor: remove now useless api routes on client 2022-09-21 22:59:33 +02:00
Nicolas Meienberger
78cb3c36ad refactor: replace usage of config with new runtime config
wip: make script executable from everywhere
2022-09-21 22:59:33 +02:00
Nicolas Meienberger
bd881711f8 test: update execfile calls 2022-09-21 22:57:26 +02:00
Nicolas Meienberger
aa7ad1e645 refactor: use ubuntu image for development docker image 2022-09-21 22:57:26 +02:00
Nicolas Meienberger
ae2dd8d364 feat(config): make the config as a singleton class overridable by a json config 2022-09-21 22:57:26 +02:00
Seth For Privacy
b3f143da57 Properly install Docker Compose plugin on Arch Linux 2022-09-21 22:54:00 +02:00
Seth For Privacy
7b88133b61 Fix one more usage of docker-compose to the new docker compose 2022-09-21 22:54:00 +02:00
Seth For Privacy
41c1a14f70 Fully migrate to Docker Compose plugin and ensure it is installed and up to date at each run of start.sh 2022-09-21 22:54:00 +02:00
Justin Moy
6a2f708f22 Add ability to specify custom listen ip 2022-09-21 22:52:49 +02:00
Justin Moy
ffa0515cd6 Fix installation of docker-compose on armv7l 2022-09-21 22:52:49 +02:00
hqwuzhaoyi
b48f28d8bc fix: Incorrect memory variables
MEM_TOTAL_BYTES not found for other system languages
2022-09-21 22:52:49 +02:00
dextreem
cff22abfdc Offers option to choose between network interfaces for the case multiple defaults were found 2022-09-21 22:05:45 +02:00
Nicolas Meienberger
634278dad2 revert(stop.sh): use gt instead of ge [skip ci] 2022-09-21 19:48:57 +02:00
Nicolas Meienberger
47db5ccb28 Merge branch 'master' of github.com:meienberger/runtipi 2022-09-21 19:46:30 +02:00
Nicolas Meienberger
4fbfb8cd98 revert(stop.sh): use gt instead of ge [skip ci]
@dextreem: It should be -gt. That find command will always return the base path (app) as well, i.e.,
wc -l returns 1 or more. Using -ge would break this part again :-)
2022-09-21 19:45:22 +02:00
allcontributors[bot]
049d9ed191 update .all-contributorsrc [skip ci]
revert(stop.sh): use gt instead of ge [skip ci]

@dexrtreem: It should be -gt. That find command will always return the base path (app) as well,
i.e., wc -l returns 1 or more. Using -ge would break this part again :-)
2022-09-21 19:42:15 +02:00
allcontributors[bot]
5bc51bb87b update README.md [skip ci] 2022-09-21 19:42:15 +02:00
Nicolas Meienberger
cf034f2092
Merge pull request #209 from meienberger/all-contributors/add-dextreem [skip ci]
add dextreem as a contributor
2022-09-21 06:56:02 +00:00
Nicolas Meienberger
10f67ab97d
fix: use -ge instead of -gt in stop script [skip ci]
Should check if number of apps is greater or equal to 1
2022-09-21 06:55:14 +00:00
Nicolas Meienberger
86e4ddfc53
Merge pull request #208 from dextreem/fix/start-stop [skip ci]
Fixing minor issues in start and stop scripts [skip ci]
2022-09-21 06:52:51 +00:00
allcontributors[bot]
e47724cecb
update .all-contributorsrc [skip ci] 2022-09-21 06:48:29 +00:00
allcontributors[bot]
c0d71bf6f9
update README.md [skip ci] 2022-09-21 06:48:28 +00:00
dextreem
8acc835704 Fixed 'please run as root' note. 2022-09-21 08:00:17 +02:00
dextreem
ddbc0df7e6 If there are no apps installed, the stop script won't fail anymore. 2022-09-21 07:58:50 +02:00
dextreem
eb08dd4021 Start script now works for all relative paths ensuring runtipi is the current working directory. 2022-09-21 07:33:55 +02:00
Nicolas Meienberger
aa79e49f18
Update issue template [skip ci] 2022-09-19 04:56:13 +00:00
Nicolas Meienberger
b3783bdb8c
Update bug_report.md 2022-09-19 04:54:21 +00:00
Nicolas Meienberger
0102c9eff8 chore: add more logs to debug start script [skip ci] 2022-09-17 04:31:38 +02:00
Nicolas Meienberger
b95e745728
Merge pull request #206 from meienberger/all-contributors/add-justincmoy [skip ci]
add justincmoy as a contributor [skip ci]
2022-09-17 01:49:44 +00:00
allcontributors[bot]
641b7b58cb
update .all-contributorsrc [skip ci] 2022-09-17 01:48:52 +00:00
allcontributors[bot]
1320aa9819
update README.md [skip ci] 2022-09-17 01:48:51 +00:00
Nicolas Meienberger
9938fb99c3
Merge pull request #202 from meienberger/all-contributors/add-hqwuzhaoyi [skip ci]
add hqwuzhaoyi as a contributor [skip ci]
2022-09-17 01:38:05 +00:00
allcontributors[bot]
03c7125f3c
update .all-contributorsrc [skip ci] 2022-09-16 18:11:29 +00:00
allcontributors[bot]
7aa0463e4a
update README.md [skip ci] 2022-09-16 18:11:28 +00:00
Nicolas Meienberger
a178eaa23f
Merge pull request #189 from sethforprivacy/master [skip ci]
Add support for Pop_OS to configure/start scripts [skip ci]
2022-09-14 02:02:38 +00:00
Nicolas Meienberger
537b403661
Add required notice [skip ci] 2022-09-13 19:38:27 -06:00
Nicolas Meienberger
a9008dccf0
Add required notice [skip ci] 2022-09-13 19:37:32 -06:00
Nicolas Meienberger
b446703c97
Update README [skip ci]
[skip ci]
2022-09-13 10:27:40 -06:00
sethforprivacy
32d222d6ca
Add support for Pop_OS to configure/start scripts 2022-09-13 08:46:10 -04:00
Nicolas Meienberger
7f5acf1ac5
Merge pull request #179 from meienberger/release/0.6.1
Release/0.6.1
2022-09-11 14:32:25 +00:00
Nicolas Meienberger
a3e615f181 chore: remove mapped port for production [skip ci] 2022-09-11 14:48:47 +02:00
Nicolas Meienberger
acac8bc14c chore: bump version 2022-09-11 13:03:48 +02:00
Nicolas Meienberger
7e70c82226
Merge pull request #178 from meienberger/fix/api-custom-port
fix: add port to api url if it is not 80
2022-09-11 11:02:54 +00:00
Nicolas Meienberger
68191d95b1 fix: add port to api url if it is not 80 2022-09-11 12:58:11 +02:00
Nicolas Meienberger
ebbae9ece5 Merge branch 'rblaine95-check-jq-installed' into develop 2022-09-10 16:42:22 +02:00
Nicolas Meienberger
3a77d21b36 refactor: remove jq installation from docker part 2022-09-10 16:42:09 +02:00
Nicolas Meienberger
84360e738e Merge branch 'check-jq-installed' of https://github.com/rblaine95/runtipi into rblaine95-check-jq-installed 2022-09-10 16:38:19 +02:00
Nicolas Meienberger
21cec26e06 fix(apps.helpers.ts): check folder existense before accesing it 2022-09-10 16:37:07 +02:00
Nicolas Meienberger
51a75546e1 ci(ci.yml): add missing env var 2022-09-10 11:42:48 +02:00
Nicolas Meienberger
8916424088
Merge pull request #174 from meienberger/all-contributors/add-sethforprivacy [skip ci]
docs: add sethforprivacy as a contributor for code [skip ci]
2022-09-10 09:41:49 +00:00
allcontributors[bot]
813b8ae331
docs: update .all-contributorsrc [skip ci] 2022-09-10 09:41:28 +00:00
allcontributors[bot]
24c009f740
docs: update README.md [skip ci] 2022-09-10 09:41:27 +00:00
Nicolas Meienberger
4a3c8db0ad
Merge pull request #173 from meienberger/all-contributors/add-rblaine95 [skip ci]
docs: add rblaine95 as a contributor for code [skip ci]
2022-09-10 09:40:40 +00:00
allcontributors[bot]
96981ba84a
docs: update .all-contributorsrc [skip ci] 2022-09-10 09:40:13 +00:00
allcontributors[bot]
51702d08cf
docs: update README.md [skip ci] 2022-09-10 09:40:12 +00:00
Nicolas Meienberger
5b1b5f92c3 chore: update all-contributors config [skip ci] 2022-09-10 11:38:36 +02:00
Nicolas Meienberger
f6bd298ff3 test: adapt tests to support new APP_DOMAIN 2022-09-10 02:53:22 +02:00
Nicolas Meienberger
aa43437a4e Merge branch 'sethforprivacy-add_http_protocol' into develop 2022-09-10 02:43:12 +02:00
Nicolas Meienberger
25acb235c8 feat: includ internalip:port as app_domain if app is not exposed 2022-09-10 02:42:54 +02:00
Seth For Privacy
8eae068220
Set APP_DOMAIN to INTERNAL_IP:APP_PORT if unexposed 2022-09-09 16:52:50 -04:00
Seth For Privacy
39a824947d
Set APP_DOMAIN to INTERNAL_IP:APP_PORT if unexposed 2022-09-09 16:52:44 -04:00
Seth For Privacy
1106b693c2
Add APP_PROTOCOL env var when exposing apps 2022-09-09 16:19:24 -04:00
Robbie Blaine
401e3e2022
Use local os variable in functions 2022-09-09 19:39:32 +02:00
Robbie Blaine
4d294c09f0
Install jq if it's not installed 2022-09-09 19:24:15 +02:00
Robbie Blaine
83077d3de0
Check if JQ is installed 2022-09-09 10:27:00 +02:00
Nicolas Meienberger
e59648d517
Merge pull request #168 from meienberger/release/0.6.0
Release/0.6.0
2022-09-08 19:11:18 +00:00
Nicolas Meienberger
bbdee4a42b fix(apps.service): updating an app config was throwing an error if domain was unchanged 2022-09-08 08:41:19 +02:00
Nicolas Meienberger
d196b8ff10 feat: display domain link if app is exposed 2022-09-07 21:55:22 +02:00
Nicolas Meienberger
bbe774857a feat: don't allow multiple apps with same domain 2022-09-07 21:29:58 +02:00
Nicolas Meienberger
26ba5c9656 fix: set cookie same-site to lax in production 2022-09-07 18:22:50 +02:00
Nicolas Meienberger
8ed04f07f4 fix: various small bugs 2022-09-06 13:52:19 +02:00
Nicolas Meienberger
655096a77f ci(dockerfile): revert to multi step build
Image size was doubled with the new Dockerfile -> revert
2022-09-06 13:51:38 +02:00
Nicolas Meienberger
4e19aad2f0 ci(release): move to node 18 image
SWC is not working anymore in alpine arm/v7
2022-09-06 08:25:25 +02:00
Nicolas Meienberger
52e275b1ec chore: bump version 2022-09-05 21:54:54 +02:00
Nicolas Meienberger
c6338d2deb
Merge pull request #167 from meienberger/feature/link-domain
Feature/link domain
2022-09-05 19:53:14 +00:00
Nicolas Meienberger
5e7563240a test(auth): test auth resolvers 2022-09-05 21:41:19 +02:00
Nicolas Meienberger
60ef5816a7 test(apps): test domain linking
test(apps): test linking domain
2022-09-05 21:41:16 +02:00
Nicolas Meienberger
95c9196e37 chore: update categories 2022-09-04 15:11:03 +02:00
Nicolas Meienberger
583a0c4631 chore: update client side types 2022-09-04 15:06:36 +02:00
Nicolas Meienberger
e7a6a55194 chore: improve api response typing 2022-09-04 14:54:11 +02:00
Nicolas Meienberger
33099de6f1 fix: don't watch data.ip 2022-09-04 14:54:11 +02:00
Nicolas Meienberger
97bb074ae5 feat(update front-end to support a custom domain api): n 2022-09-04 14:54:11 +02:00
Nicolas Meienberger
b483a284bd test(apps.resolvers): update tests to implement new mandatory fields 2022-09-04 14:54:11 +02:00
Nicolas Meienberger
fc73184fa0 feat(dashboard): frontend domain & tls configuration 2022-09-04 14:54:11 +02:00
Nicolas Meienberger
c0584c75ae chore(dashboard): generate types for client 2022-09-04 14:53:20 +02:00
Nicolas Meienberger
075dd516a0 feat: traefik ssl configuration with acme provider 2022-09-04 14:52:39 +02:00
Nicolas Meienberger
714a0d3af9 feat(apps): api to enable domain and expose 2022-09-04 14:52:39 +02:00
Nicolas Meienberger
015e168634 feat(app.entity): add exposed and domain fields 2022-09-04 14:51:58 +02:00
Nicolas Meienberger
f0607b5db0 chore: cleanup testing code 2022-09-04 14:51:58 +02:00
Nicolas Meienberger
4cb2462dfb wip: traefik api 2022-09-04 14:51:24 +02:00
Nicolas Meienberger
4eacfa23d0
Merge pull request #166 from Stetsed/master [skip ci]
Slight update to Readme.md [skip ci]
2022-09-02 13:45:30 +00:00
Stetsed
a9c4c4e547
Update README.md 2022-09-02 15:33:43 +02:00
Nicolas Meienberger
c076648662
Merge pull request #165 from meienberger/fix/ensure-app-folder
Fix/ensure app folder
2022-08-30 06:15:41 +00:00
Nicolas Meienberger
80148c5ae3
Merge pull request #164 from meienberger/feature/improve-docker-build
Feature/improve docker build
2022-08-30 06:10:48 +00:00
Nicolas Meienberger
33ce277710 fix(fs.helpers.ts): ensure folder exists before cleaning up 2022-08-29 21:12:18 +02:00
Nicolas Meienberger
14ee8a3493 chore(dashboard): add missing jest deps 2022-08-29 21:05:25 +02:00
Nicolas Meienberger
96b86aabbf
Create FUNDING.yml [skip ci] 2022-08-29 18:59:06 +00:00
Nicolas Meienberger
bc95544846 refactor(docker): improve build for optimized caching
Only use one step inside the Dockerfile to avoid re-running everything in each pipeline
2022-08-25 10:23:35 +02:00
Nicolas Meienberger
73d369442a
Merge pull request #161 from meienberger/fix/cleanup-before-install
feat: cleanup folder before install
2022-08-25 06:12:05 +00:00
Nicolas Meienberger
36264cd9de
Merge pull request #162 from meienberger/feature/open-app-https
feat(apps): allow https protocol
2022-08-25 06:09:49 +00:00
Nicolas Meienberger
d8fdf224f6 ci(ci.yml): bump codecov version @v3 2022-08-23 23:12:45 +02:00
Nicolas Meienberger
0978338905 refactor(fs-extra): remove console.log 2022-08-23 22:58:12 +02:00
Nicolas Meienberger
b73844b24a test(fs.helpers): unit tests 2022-08-23 22:56:19 +02:00
Nicolas Meienberger
64c39ce23d feat(apps): allow https protocol
Some apps like portainer require the https protocol to open then. New config option to allow setting
the https protocol
2022-08-23 21:40:57 +02:00
Nicolas Meienberger
a92b5857f8 feat: cleanup folder before install
If an app gets installed insure that any existing folder in apps gets deleted. This will prevent the
user from getting in a limbo if an installation fails and the files are copied already
2022-08-23 21:16:14 +02:00
Nicolas Meienberger
f9e015531e
Update issue template [skip ci] 2022-08-18 06:25:33 +00:00
Nicolas Meienberger
88c66fa168
Update app submission guide link [skip ci]
[skip ci]
2022-08-17 21:00:00 +00:00
Nicolas Meienberger
9c2bcc2280 fix(migration): user query runner for broken entities recovery to avoid type issues 2022-08-17 07:31:55 +02:00
653 changed files with 36130 additions and 17854 deletions

View file

@ -2,13 +2,6 @@
"files": [
"README.md"
],
"types": {
"app": {
"symbol": "📦",
"description": "Contributed by adding apps to Tipi.",
"link": "[<%= symbol %>](<%= url %> \"<%= description %>\"),"
}
},
"imageSize": 100,
"commit": false,
"contributors": [
@ -21,8 +14,7 @@
"code",
"infra",
"test",
"doc",
"app"
"doc"
]
},
{
@ -44,7 +36,11 @@
"contributions": [
"code",
"ideas",
"test"
"test",
"content",
"promotion",
"question",
"review"
]
},
{
@ -91,12 +87,327 @@
"contributions": [
"code"
]
},
{
"login": "rblaine95",
"name": "Robert Blaine",
"avatar_url": "https://avatars.githubusercontent.com/u/4052340?v=4",
"profile": "https://github.com/rblaine95",
"contributions": [
"code"
]
},
{
"login": "sethforprivacy",
"name": "Seth For Privacy",
"avatar_url": "https://avatars.githubusercontent.com/u/40500387?v=4",
"profile": "https://sethforprivacy.com",
"contributions": [
"code"
]
},
{
"login": "hqwuzhaoyi",
"name": "Prajna",
"avatar_url": "https://avatars.githubusercontent.com/u/44605072?v=4",
"profile": "https://github.com/hqwuzhaoyi",
"contributions": [
"code"
]
},
{
"login": "justincmoy",
"name": "Justin Moy",
"avatar_url": "https://avatars.githubusercontent.com/u/14875982?v=4",
"profile": "https://github.com/justincmoy",
"contributions": [
"code"
]
},
{
"login": "dextreem",
"name": "dextreem",
"avatar_url": "https://avatars.githubusercontent.com/u/11060652?v=4",
"profile": "https://github.com/dextreem",
"contributions": [
"code"
]
},
{
"login": "iBicha",
"name": "Brahim Hadriche",
"avatar_url": "https://avatars.githubusercontent.com/u/17722782?v=4",
"profile": "https://github.com/iBicha",
"contributions": [
"code"
]
},
{
"login": "andrewbrereton",
"name": "Andrew Brereton",
"avatar_url": "https://avatars.githubusercontent.com/u/682893?v=4",
"profile": "https://andrewbrereton.com",
"contributions": [
"content"
]
},
{
"login": "fsackur",
"name": "Freddie Sackur",
"avatar_url": "https://avatars.githubusercontent.com/u/3678789?v=4",
"profile": "https://fsackur.github.io/",
"contributions": [
"code",
"doc"
]
},
{
"login": "innocentius",
"name": "Innocentius",
"avatar_url": "https://avatars.githubusercontent.com/u/5344432?v=4",
"profile": "http://innocentius.github.io",
"contributions": [
"translation"
]
},
{
"login": "TetrisIQ",
"name": "Alex",
"avatar_url": "https://avatars.githubusercontent.com/u/24246993?v=4",
"profile": "https://github.com/TetrisIQ",
"contributions": [
"code"
]
},
{
"login": "ruibaby",
"name": "Ryan Wang",
"avatar_url": "https://avatars.githubusercontent.com/u/21301288?v=4",
"profile": "https://ryanc.cc",
"contributions": [
"code"
]
},
{
"login": "simonandr",
"name": "simonandr",
"avatar_url": "https://avatars.githubusercontent.com/u/48092304?v=4",
"profile": "https://github.com/simonandr",
"contributions": [
"content"
]
},
{
"login": "demizeu",
"name": "iepure",
"avatar_url": "https://avatars.githubusercontent.com/u/121183951?v=4",
"profile": "https://github.com/demizeu",
"contributions": [
"translation"
]
},
{
"login": "SergeyKodolov",
"name": "Sergey Kodolov",
"avatar_url": "https://avatars.githubusercontent.com/u/35339452?v=4",
"profile": "https://github.com/SergeyKodolov",
"contributions": [
"translation",
"code"
]
},
{
"login": "sclaren",
"name": "sclaren",
"avatar_url": "https://avatars.githubusercontent.com/u/915292?v=4",
"profile": "https://github.com/sclaren",
"contributions": [
"code"
]
},
{
"login": "mcmeel",
"name": "mcmeel",
"avatar_url": "https://avatars.githubusercontent.com/u/13773536?v=4",
"profile": "https://github.com/mcmeel",
"contributions": [
"question",
"ideas",
"code",
"doc"
]
},
{
"login": "NoisyFridge",
"name": "NoisyFridge",
"avatar_url": "https://avatars.githubusercontent.com/u/73795785?v=4",
"profile": "https://github.com/NoisyFridge",
"contributions": [
"translation"
]
},
{
"login": "Bvoxl",
"name": "Bvoxl",
"avatar_url": "https://avatars.githubusercontent.com/u/67489519?v=4",
"profile": "https://github.com/Bvoxl",
"contributions": [
"translation"
]
},
{
"login": "m-lab-0",
"name": "m-lab-0",
"avatar_url": "https://avatars.githubusercontent.com/u/116570617?v=4",
"profile": "https://github.com/m-lab-0",
"contributions": [
"translation"
]
},
{
"login": "dannkunt",
"name": "dannkunt",
"avatar_url": "https://avatars.githubusercontent.com/u/32395839?v=4",
"profile": "https://github.com/dannkunt",
"contributions": [
"translation"
]
},
{
"login": "Schmanko",
"name": "Schmanko",
"avatar_url": "https://avatars.githubusercontent.com/u/94195393?v=4",
"profile": "https://github.com/Schmanko",
"contributions": [
"translation"
]
},
{
"login": "nghialele",
"name": "Nghia Lele",
"avatar_url": "https://avatars.githubusercontent.com/u/129353223?v=4",
"profile": "https://micro.nghialele.com",
"contributions": [
"translation"
]
},
{
"login": "amusingimpala75",
"name": "amusingimpala75",
"avatar_url": "https://avatars.githubusercontent.com/u/69653100?v=4",
"profile": "https://github.com/amusingimpala75",
"contributions": [
"code"
]
},
{
"login": "M1n-4d316e",
"name": "David",
"avatar_url": "https://avatars.githubusercontent.com/u/54779580?v=4",
"profile": "http://m1n.omg.lol",
"contributions": [
"translation"
]
},
{
"login": "steveiliop56",
"name": "Stavros Iliopoulos",
"avatar_url": "https://avatars.githubusercontent.com/u/106091011?v=4",
"profile": "https://github.com/steveiliop56",
"contributions": [
"translation",
"code",
"test"
]
},
{
"login": "loxiry",
"name": "loxiry",
"avatar_url": "https://avatars.githubusercontent.com/u/86959495?v=4",
"profile": "https://github.com/loxiry",
"contributions": [
"translation"
]
},
{
"login": "JigSawFr",
"name": "JigSaw",
"avatar_url": "https://avatars.githubusercontent.com/u/5781907?v=4",
"profile": "https://github.com/JigSawFr",
"contributions": [
"code"
]
},
{
"login": "DireMunchkin",
"name": "DireMunchkin",
"avatar_url": "https://avatars.githubusercontent.com/u/1665676?v=4",
"profile": "https://github.com/DireMunchkin",
"contributions": [
"code"
]
},
{
"login": "FabioCingottini",
"name": "Fabio Cingottini",
"avatar_url": "https://avatars.githubusercontent.com/u/32102735?v=4",
"profile": "https://github.com/FabioCingottini",
"contributions": [
"translation"
]
},
{
"login": "itsrllyhim",
"name": "him",
"avatar_url": "https://avatars.githubusercontent.com/u/143047010?v=4",
"profile": "https://github.com/itsrllyhim",
"contributions": [
"code"
]
},
{
"login": "cchalop1",
"name": "CHALOPIN Clément",
"avatar_url": "https://avatars.githubusercontent.com/u/28163855?v=4",
"profile": "http://cchalop1.com",
"contributions": [
"code"
]
},
{
"login": "geetansh",
"name": "Geetansh Jindal",
"avatar_url": "https://avatars.githubusercontent.com/u/9976198?v=4",
"profile": "https://github.com/geetansh",
"contributions": [
"code"
]
},
{
"login": "0livier",
"name": "Olivier Garcia",
"avatar_url": "https://avatars.githubusercontent.com/u/10607?v=4",
"profile": "https://github.com/0livier",
"contributions": [
"code"
]
},
{
"login": "qcoudeyr",
"name": "qcoudeyr",
"avatar_url": "https://avatars.githubusercontent.com/u/124463277?v=4",
"profile": "https://github.com/qcoudeyr",
"contributions": [
"code"
]
}
],
"contributorsPerLine": 7,
"projectName": "runtipi",
"projectOwner": "meienberger",
"projectOwner": "runtipi",
"repoType": "github",
"repoHost": "https://github.com",
"skipCi": true
"skipCi": true,
"commitConvention": "angular",
"commitType": "docs"
}

View file

@ -0,0 +1,15 @@
{
"image": "mcr.microsoft.com/vscode/devcontainers/javascript-node",
"features": {
"ghcr.io/devcontainers/features/docker-in-docker": {
"version": "latest",
"moby": true
}
},
"extensions": [
"ms-azuretools.vscode-docker",
"ms-vscode.vscode-typescript-next",
"waderyan.gitblame"
],
"postCreateCommand": "./.devcontainer/postCreateCommand.sh"
}

5
.devcontainer/filewatcher.sh Executable file
View file

@ -0,0 +1,5 @@
#!/usr/bin/env bash
# We need to change the owner of the files in the app-data folder
# if this failes we have to change the permission your self
fswatch --event=Created /workspaces/runtipi/app-data/ | \
xargs -l1 sh -c 'echo "$1" && sudo chown node "$1" -R' -- &

View file

@ -0,0 +1,12 @@
#!/usr/bin/env bash
echo '{
"appsRepoUrl": "https://github.com/runtipi/runtipi-appstore.git/"
}' > state/settings.json
npm i -g pnpm
pnpm i
sudo apt-get update
sudo apt-get install jq fswatch -y
mkdir logs
mkdir data
sudo chown node logs
sudo chown node data

View file

@ -5,5 +5,22 @@
node_modules
.next
dist/
**/dist/
**/next/
# all docker-compose files
docker-compose*.yml
Dockerfile*
.dockerignore
# Tipi folder
logs/
state/
templates/
scripts/
screenshots/
repos/
media/
data/
apps/
app-data/
.github/
__mocks__/

22
.env.example Normal file
View file

@ -0,0 +1,22 @@
APPS_REPO_ID=7a92c8307e0a8074763c80be1fcfa4f87da6641daea9211aea6743b0116aba3b
APPS_REPO_URL=https://github.com/runtipi/runtipi-appstore
TZ=Etc/UTC
INTERNAL_IP=localhost
DNS_IP=9.9.9.9
ARCHITECTURE=arm64
TIPI_VERSION=1.5.2
JWT_SECRET=secret
ROOT_FOLDER_HOST=/path/to/runtipi
STORAGE_PATH=/path/to/runtipi
NGINX_PORT=7000
NGINX_PORT_SSL=443
DOMAIN=tipi.localhost
POSTGRES_HOST=tipi-db
POSTGRES_DBNAME=tipi
POSTGRES_USERNAME=tipi
POSTGRES_PASSWORD=postgres
POSTGRES_PORT=5432
REDIS_HOST=tipi-redis
REDIS_PASSWORD=redis
DEMO_MODE=false
LOCAL_DOMAIN=tipi.lan

14
.env.test Normal file
View file

@ -0,0 +1,14 @@
POSTGRES_HOST=localhost
POSTGRES_DBNAME=postgres
POSTGRES_USERNAME=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_PORT=5433
APPS_REPO_ID=repo-id
APPS_REPO_URL=https://test.com/test
REDIS_HOST=localhost
REDIS_PASSWORD=redis
INTERNAL_IP=localhost
TIPI_VERSION=1
JWT_SECRET=secret
DOMAIN=tipi.localhost
LOCAL_DOMAIN=tipi.lan

View file

@ -2,3 +2,4 @@
.eslintrc.js
next.config.js
jest.config.js
packages/

80
.eslintrc.js Normal file
View file

@ -0,0 +1,80 @@
module.exports = {
plugins: ['@typescript-eslint', 'import', 'react', 'jest', 'jsx-a11y', 'testing-library', 'jest-dom'],
extends: [
'plugin:@typescript-eslint/recommended',
'next/core-web-vitals',
'next',
'airbnb',
'airbnb-typescript',
'eslint:recommended',
'plugin:import/typescript',
'prettier',
'plugin:react/recommended',
'plugin:jsx-a11y/recommended',
],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: './tsconfig.json',
tsconfigRootDir: __dirname,
},
rules: {
'no-restricted-exports': 0,
'no-redeclare': 0, // already handled by @typescript-eslint/no-redeclare
'react/display-name': 0,
'react/prop-types': 0,
'react/function-component-definition': 0,
'react/require-default-props': 0,
'import/prefer-default-export': 0,
'react/jsx-props-no-spreading': 0,
'react/no-unused-prop-types': 0,
'react/button-has-type': 0,
'import/no-extraneous-dependencies': [
'error',
{
devDependencies: [
'esbuild.js',
'e2e/**',
'**/*.test.{ts,tsx}',
'**/*.spec.{ts,tsx}',
'**/*.factory.{ts,tsx}',
'**/mocks/**',
'**/__mocks__/**',
'tests/**',
'**/*.d.ts',
'**/*.workspace.ts',
'**/*.setup.{ts,js}',
'**/*.config.{ts,js}',
],
},
],
'no-underscore-dangle': 0,
'arrow-body-style': 0,
'class-methods-use-this': 0,
'import/extensions': [
'error',
'ignorePackages',
{
'': 'never',
js: 'never',
jsx: 'never',
ts: 'never',
tsx: 'never',
},
],
},
overrides: [
{
files: ['*.test.ts', '*.test.tsx'],
extends: ['plugin:jest-dom/recommended', 'plugin:testing-library/react'],
},
],
globals: {
JSX: true,
NodeJS: true,
},
env: {
'jest/globals': true,
},
};

13
.github/FUNDING.yml vendored Normal file
View file

@ -0,0 +1,13 @@
# These are supported funding model platforms
github: [meienberger] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: meienberger # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

View file

@ -1,17 +1,13 @@
---
name: App Request
about: Suggest an app to be added
title: "[REQUEST]"
title: "[APP REQUEST]"
labels: app request
assignees: meienberger
---
**Describe app**
A clear and concise description of what the app consists of and how it would benefit the users of Tipi.
## Read before submitting
Apps are now hosted in a secondary repository. Please open your app request issues [there](https://github.com/meienberger/runtipi-appstore)
**Links**
Include links to all the available resources for the app. (eg: github repo, website, license)
**Additional context**
Add any other context or screenshots about the app request here.
You can also easily contribute and propose a new app or update. Please check out our [Wiki](https://github.com/meienberger/runtipi/wiki/Adding-your-own-app) on how to do so

View file

@ -7,6 +7,12 @@ assignees: meienberger
---
### Checklist
Before opening your issue be sure to have completed all those tasks.
- [ ] I have searched for an already existing issue with similar context and errors. My issue has not yet been reported.
- [ ] I have included a clear description and steps to reproduce.
- [ ] I have included logs from the file `runtipi/logs/error.log` if relevant
**Describe the bug**
A clear and concise description of what the bug is.
@ -23,16 +29,10 @@ A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Server (please complete the following information):**
- OS: [e.g. Ubuntu 20.04]
- Tipi Version [e.g. 2.0.5] (can be found in settings page)
**Additional context**
Add any other context about the problem here.
Please include logs here `runtipi/logs/error.log` and add any other context about the problem here. Like results of the `start` script or container logs `docker logs ...`

20
.github/dependabot.yml vendored Normal file
View file

@ -0,0 +1,20 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: 'npm'
directory: '/'
versioning-strategy: increase
schedule:
interval: 'daily'
open-pull-requests-limit: 10
rebase-strategy: 'auto'
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: 'daily'
rebase-strategy: 'auto'

17
.github/stale.yml vendored Normal file
View file

@ -0,0 +1,17 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 30
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
- security
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions. If you feel this issue should remain open, please
add a comment with the requested information and we will keep it open.
closeComment: false

165
.github/workflows/alpha-release.yml vendored Normal file
View file

@ -0,0 +1,165 @@
name: Alpha Release
on:
workflow_dispatch:
inputs:
tag:
description: 'Alpha version tag (1, 2, 3, ...)'
required: true
jobs:
create-tag:
runs-on: ubuntu-latest
outputs:
tagname: ${{ steps.get_tag.outputs.tagname }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Get tag from package.json
id: get_tag
run: |
VERSION=$(npm run version --silent)
echo "tagname=v${VERSION}-alpha.${{ github.event.inputs.tag }}" >> $GITHUB_OUTPUT
- uses: rickstaa/action-create-tag@v1
with:
tag: ${{ steps.get_tag.outputs.tagname }}
build-worker:
runs-on: ubuntu-latest
needs: create-tag
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push images
uses: docker/build-push-action@v5
with:
context: .
file: ./packages/worker/Dockerfile
platforms: linux/amd64
push: true
tags: ghcr.io/${{ github.repository_owner }}/worker:${{ needs.create-tag.outputs.tagname }}
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/worker:buildcache
cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/worker:buildcache,mode=max
build-images:
runs-on: ubuntu-latest
needs: create-tag
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push images
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64
push: true
tags: ghcr.io/${{ github.repository_owner }}/runtipi:${{ needs.create-tag.outputs.tagname }}
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/runtipi:buildcache
cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/runtipi:buildcache,mode=max
build-cli:
runs-on: ubuntu-latest
needs: create-tag
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- uses: pnpm/action-setup@v2.4.0
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Set version
run: pnpm -r --filter cli set-version ${{ needs.create-tag.outputs.tagname }}
- name: Build CLI
run: pnpm -r --filter cli package
- name: Upload CLI
uses: actions/upload-artifact@v3
with:
name: cli
path: packages/cli/dist
publish-release:
runs-on: ubuntu-latest
needs: [create-tag, build-images, build-cli, build-worker]
steps:
- name: Download CLI
uses: actions/download-artifact@v3
with:
name: cli
path: cli
- name: Rename CLI
run: |
mv cli/bin/cli-x64 ./runtipi-cli-linux-x64
- name: Create alpha release
id: create_release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
body: |
**${{ needs.create-tag.outputs.tagname }}**
tag_name: ${{ needs.create-tag.outputs.tagname }}
name: ${{ needs.create-tag.outputs.tagname }}
draft: false
prerelease: true
files: |
runtipi-cli-linux-x64

175
.github/workflows/beta-release.yml vendored Normal file
View file

@ -0,0 +1,175 @@
name: Beta Release
on:
workflow_dispatch:
inputs:
tag:
description: 'Beta version tag (1, 2, 3, ...)'
required: true
jobs:
create-tag:
runs-on: ubuntu-latest
outputs:
tagname: ${{ steps.get_tag.outputs.tagname }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Get tag from package.json
id: get_tag
run: |
VERSION=$(npm run version --silent)
echo "tagname=v${VERSION}-beta.${{ github.event.inputs.tag }}" >> $GITHUB_OUTPUT
- uses: rickstaa/action-create-tag@v1
with:
tag: ${{ steps.get_tag.outputs.tagname }}
build-worker:
runs-on: ubuntu-latest
needs: create-tag
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push images
uses: docker/build-push-action@v5
with:
context: .
file: ./packages/worker/Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ghcr.io/${{ github.repository_owner }}/worker:${{ needs.create-tag.outputs.tagname }}
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/worker:buildcache
cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/worker:buildcache,mode=max
build-images:
needs: create-tag
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push images
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ghcr.io/${{ github.repository_owner }}/runtipi:${{ needs.create-tag.outputs.tagname }}
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/runtipi:buildcache
cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/runtipi:buildcache,mode=max
build-cli:
runs-on: ubuntu-latest
needs: create-tag
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- uses: pnpm/action-setup@v2.4.0
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Set version
run: pnpm -r --filter cli set-version ${{ needs.create-tag.outputs.tagname }}
- name: Build CLI
run: pnpm -r --filter cli package
- name: Upload CLI
uses: actions/upload-artifact@v3
with:
name: cli
path: packages/cli/dist
publish-release:
runs-on: ubuntu-latest
needs: [create-tag, build-images, build-cli, build-worker]
outputs:
id: ${{ steps.create_release.outputs.id }}
steps:
- name: Download CLI
uses: actions/download-artifact@v3
with:
name: cli
path: cli
- name: Rename CLI
run: |
mv cli/bin/cli-x64 ./runtipi-cli-linux-x64
mv cli/bin/cli-arm64 ./runtipi-cli-linux-arm64
- name: Create beta release
id: create_release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
body: |
**${{ needs.create-tag.outputs.tagname }}**
tag_name: ${{ needs.create-tag.outputs.tagname }}
name: ${{ needs.create-tag.outputs.tagname }}
draft: false
prerelease: true
files: |
runtipi-cli-linux-x64
runtipi-cli-linux-arm64
e2e-tests:
needs: [create-tag, publish-release]
uses: './.github/workflows/e2e.yml'
secrets: inherit
with:
version: ${{ needs.create-tag.outputs.tagname }}

View file

@ -1,19 +1,31 @@
name: Tipi CI
on:
push:
pull_request:
env:
ROOT_FOLDER: /test
JWT_SECRET: "secret"
ROOT_FOLDER_HOST: /tipi
ROOT_FOLDER: /runtipi
JWT_SECRET: 'secret'
ROOT_FOLDER_HOST: /runtipi
APPS_REPO_ID: repo-id
INTERNAL_IP: localhost
REDIS_HOST: redis
REDIS_PASSWORD: redis
APPS_REPO_URL: https://repo.github.com/
DOMAIN: localhost
LOCAL_DOMAIN: tipi.lan
TIPI_VERSION: 0.0.1
POSTGRES_HOST: localhost
POSTGRES_DBNAME: postgres
POSTGRES_USERNAME: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_PORT: 5433
jobs:
ci:
tests:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:latest
image: postgres:14
env:
POSTGRES_PASSWORD: postgres
ports:
@ -26,24 +38,24 @@ jobs:
--health-retries 5
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Install Node.js
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 16
node-version: 20
- uses: pnpm/action-setup@v2.2.2
- uses: pnpm/action-setup@v2.4.0
name: Install pnpm
id: pnpm-install
with:
version: 7
version: 8
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
@ -56,16 +68,74 @@ jobs:
- name: Install dependencies
run: pnpm install
- name: Build packages
run: pnpm -r build
- name: Run linter
run: pnpm -r lint
- name: Run tests
run: pnpm -r test
run: pnpm run lint
- uses: codecov/codecov-action@v2
- name: Run linter on packages
run: pnpm -r run lint
- name: Get number of CPU cores
id: cpu-cores
uses: SimenB/github-actions-cpu-cores@v2
- name: Run tests
run: pnpm run test --max-workers ${{ steps.cpu-cores.outputs.count }}
- uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./packages/system-api/coverage/clover.xml,./packages/dashboard/coverage/clover.xml
files: ./coverage/lcov.info
flags: app
- name: Run packages tests
run: pnpm -r test
- name: Upload CLI coverage
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./packages/cli/coverage/lcov.info
flags: cli
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- uses: pnpm/action-setup@v2.4.0
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Build client
run: npm run build
- name: Run tsc
run: pnpm run tsc
- name: Run packages tsc
run: pnpm -r run tsc

View file

@ -15,6 +15,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: 'Dependency Review'
uses: actions/dependency-review-action@v1
uses: actions/dependency-review-action@v3

203
.github/workflows/e2e.yml vendored Normal file
View file

@ -0,0 +1,203 @@
name: E2E Tests
on:
workflow_call:
inputs:
version:
required: true
type: string
description: 'Version to test (e.g. v1.6.0-beta.1)'
outputs:
page_url:
description: 'URL of the deployed report'
value: ${{ jobs.report-deployment.outputs.page_url }}
workflow_dispatch:
inputs:
version:
required: true
type: string
description: 'Version to test (e.g. v1.6.0-beta.1)'
jobs:
deploy:
timeout-minutes: 15
runs-on: ubuntu-latest
outputs:
droplet_id: ${{ steps.create-droplet.outputs.droplet_id }}
droplet_ip: ${{ steps.get-droplet-ip.outputs.droplet_ip }}
postgres_password: ${{ steps.get-postgres-password.outputs.postgres_password }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_KEY }}
known_hosts: unnecessary
name: id_rsa
- name: Get sha of last commit
id: get-sha
run: echo "sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Install doctl
uses: digitalocean/action-doctl@v2
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
- name: Create new Droplet
id: create-droplet
run: |
droplet_id=$(doctl compute droplet create runtipi-${{ steps.get-sha.outputs.sha }} \
--image ubuntu-20-04-x64 \
--size s-1vcpu-1gb \
--format ID \
--no-header \
--ssh-keys ${{ secrets.SSH_KEY_FINGERPRINT }})
echo "droplet_id=$droplet_id" >> $GITHUB_OUTPUT
- name: Wait for Droplet to become active
run: |
while ! doctl compute droplet get ${{ steps.create-droplet.outputs.droplet_id }} --format Status --no-header | grep -q "active"; do sleep 5; done
- name: Get Droplet IP address
id: get-droplet-ip
run: |
droplet_ip=$(doctl compute droplet get ${{ steps.create-droplet.outputs.droplet_id }} --format PublicIPv4 --no-header)
echo "droplet_ip=$droplet_ip" >> $GITHUB_OUTPUT
- name: Wait for SSH to be ready on Droplet
run: |
while ! ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa root@${{ steps.get-droplet-ip.outputs.droplet_ip }} "echo 'SSH is ready'"; do sleep 5; done
- name: Create docker group on Droplet
uses: fifsky/ssh-action@master
with:
command: |
groupadd docker
usermod -aG docker root
host: ${{ steps.get-droplet-ip.outputs.droplet_ip }}
user: root
key: ${{ secrets.SSH_KEY }}
- name: Wait 90 seconds for Docker to be ready on Droplet
run: sleep 90
- name: Deploy app to Droplet
uses: fifsky/ssh-action@master
with:
command: |
echo 'Downloading install script from GitHub'
curl -s https://raw.githubusercontent.com/runtipi/runtipi/${{ inputs.version }}/scripts/install.sh > install.sh
chmod +x install.sh
echo 'Running install script'
./install.sh --version ${{ inputs.version }}
echo 'App deployed'
host: ${{ steps.get-droplet-ip.outputs.droplet_ip }}
user: root # TODO: use non-root user
key: ${{ secrets.SSH_KEY }}
- name: Get POSTGRES_PASSWORD from .env file
id: get-postgres-password
run: |
postgres_password=$(ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa root@${{ steps.get-droplet-ip.outputs.droplet_ip }} "cat ./runtipi/.env | grep POSTGRES_PASSWORD | cut -d '=' -f2")
echo "postgres_password=$postgres_password" >> $GITHUB_OUTPUT
e2e:
timeout-minutes: 30
runs-on: ubuntu-latest
needs: [deploy]
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2.4.0
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Create .env.e2e file with Droplet IP
run: |
echo "SERVER_IP=${{ needs.deploy.outputs.droplet_ip }}" > .env.e2e
echo "POSTGRES_PASSWORD=${{ needs.deploy.outputs.postgres_password }}" >> .env.e2e
- name: Install dependencies
run: pnpm install
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Run Playwright tests
id: run-e2e
run: npm run test:e2e
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 7
report-deployment:
runs-on: ubuntu-latest
needs: [e2e]
outputs:
page_url: ${{ steps.deployment.outputs.page_url }}
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
if: always()
steps:
- name: Download report artifact
uses: actions/download-artifact@v3
with:
name: playwright-report
path: playwright-report/
- name: Setup Pages
uses: actions/configure-pages@v3
- name: Upload artifact
uses: actions/upload-pages-artifact@v2
with:
path: playwright-report/
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
teardown:
runs-on: ubuntu-latest
if: always()
needs: [e2e, deploy]
steps:
- name: Install doctl
uses: digitalocean/action-doctl@v2
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
- name: Delete Droplet
run: doctl compute droplet delete ${{ needs.deploy.outputs.droplet_id }} --force

View file

@ -1,43 +0,0 @@
name: Release candidate
on:
push:
branches:
- release/*
jobs:
# Build images and publish RCs to DockerHub
build-images:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Get tag from VERSION file
id: meta
run: |
VERSION=$(npm run version --silent)
TAG=${VERSION}
echo "::set-output name=tag::${TAG}"
- name: Build and push images
uses: docker/build-push-action@v3
with:
context: .
platforms: linux/amd64,linux/arm64,linux/arm/v7
push: true
tags: meienberger/runtipi:rc-${{ steps.meta.outputs.TAG }}
cache-from: type=registry,ref=meienberger/runtipi:buildcache
cache-to: type=registry,ref=meienberger/runtipi:buildcache,mode=max

View file

@ -1,62 +1,192 @@
name: Publish release
on:
push:
branches:
- master
workflow_dispatch:
jobs:
release:
if: github.repository == 'meienberger/runtipi'
create-tag:
runs-on: ubuntu-latest
needs: [build-images, build-cli]
outputs:
tagname: ${{ steps.get_tag.outputs.tagname }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Get tag from package.json
id: get_tag
run: |
VERSION=$(npm run version --silent)
echo "tagname=v${VERSION}" >> $GITHUB_OUTPUT
- uses: rickstaa/action-create-tag@v1
with:
tag: ${{ steps.get_tag.outputs.tagname }}
build-images:
if: github.repository == 'runtipi/runtipi'
needs: create-tag
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v2
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Get tag from VERSION file
id: meta
run: |
VERSION=$(npm run version --silent)
TAG=${VERSION}
echo "::set-output name=tag::${TAG}"
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push images
uses: docker/build-push-action@v3
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64,linux/arm64,linux/arm/v7
platforms: linux/amd64,linux/arm64
push: true
tags: meienberger/runtipi:latest,meienberger/runtipi:${{ steps.meta.outputs.TAG }}
cache-from: type=registry,ref=meienberger/runtipi:buildcache
cache-to: type=registry,ref=meienberger/runtipi:buildcache,mode=max
tags: ghcr.io/${{ github.repository_owner }}/runtipi:${{ needs.create-tag.outputs.tagname }},ghcr.io/${{ github.repository_owner }}/runtipi:latest
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/runtipi:buildcache
cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/runtipi:buildcache,mode=max
- name: Create Tag
id: create_tag
uses: jaywcjlove/create-tag-action@v1.1.5
build-worker:
runs-on: ubuntu-latest
needs: create-tag
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
package-path: ./package.json
- name: Create Release
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push images
uses: docker/build-push-action@v5
with:
context: .
file: ./packages/worker/Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ghcr.io/${{ github.repository_owner }}/worker:${{ needs.create-tag.outputs.tagname }},ghcr.io/${{ github.repository_owner }}/worker:latest
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/worker:buildcache
cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/worker:buildcache,mode=max
build-cli:
runs-on: ubuntu-latest
timeout-minutes: 10
needs: create-tag
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- uses: pnpm/action-setup@v2.4.0
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Set version
run: pnpm -r --filter cli set-version ${{ needs.create-tag.outputs.tagname }}
- name: Build CLI
run: pnpm -r --filter cli package
- name: Upload CLI
uses: actions/upload-artifact@v3
with:
name: cli
path: packages/cli/dist
publish-release:
runs-on: ubuntu-latest
needs: [create-tag, build-images, build-worker, build-cli]
outputs:
id: ${{ steps.create_release.outputs.id }}
steps:
- name: Download CLI
uses: actions/download-artifact@v3
with:
name: cli
path: cli
- name: Rename CLI
run: |
mv cli/bin/cli-x64 ./runtipi-cli-linux-x64
mv cli/bin/cli-arm64 ./runtipi-cli-linux-arm64
- name: Create release
id: create_release
uses: actions/create-release@latest
if: steps.create_tag.outputs.successful
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.create_tag.outputs.version }}
release_name: ${{ steps.create_tag.outputs.version }}
body: |
**${{ needs.create-tag.outputs.tagname }}**
tag_name: ${{ needs.create-tag.outputs.tagname }}
name: ${{ needs.create-tag.outputs.tagname }}
draft: false
prerelease: false
prerelease: true
files: |
runtipi-cli-linux-x64
runtipi-cli-linux-arm64
e2e-tests:
needs: [create-tag, publish-release]
uses: './.github/workflows/e2e.yml'
secrets: inherit
with:
version: ${{ needs.create-tag.outputs.tagname }}
# Promote release if e2e tests succeed
promote:
needs: [publish-release, e2e-tests]
runs-on: ubuntu-latest
steps:
- name: Promote release
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const id = '${{ needs.publish-release.outputs.id }}';
github.rest.repos.updateRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: id,
draft: false,
prerelease: false
});

91
.gitignore vendored
View file

@ -1,36 +1,69 @@
*.swo
*.swp
.DS_Store
.vscode
.idea
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
/dist
server-preload.js
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# local env files
.env*.local
# vercel
.vercel
# typescript
*.tsbuildinfo
logs
.pnpm-debug.log
.env*
!.env.example
!.env.test
github.secrets
node_modules/
app-data/*
data/postgres
traefik/ssl/*
!traefik/ssl/.gitkeep
!app-data/.gitkeep
repos/*
!repos/.gitkeep
apps/*
!apps/.gitkeep
/app-data/
/data/
/repos/
/apps/
/traefik/
scripts/pacapt
# media folder
media
state/*
!state/.gitkeep
/state/
/test-results/
/playwright-report/
/playwright/.cache/
temp
media/data/movies/*
media/data/tv/*
media/data/books/spoken/*
media/data/books/ebooks/*
!media/data/movies/.gitkeep
!media/data/tv/.gitkeep
!media/data/books/metadata.db
!media/data/books/ebooks/.gitkeep
!media/data/books/spoken/.gitkeep
media/torrents/complete/*
!media/torrents/complete/.gitkeep
media/torrents/incomplete/*
!media/torrents/incomplete/.gitkeep
media/torrents/watch/*
!media/torrents/watch/.gitkeep
packages/dashboard/package-lock.json
./traefik/
/user-config/

View file

@ -1,4 +0,0 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no -- commitlint --edit $1

View file

@ -1,2 +0,0 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

View file

@ -1,10 +0,0 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# If test-db is not running with docker
if ! docker ps | grep -q test-db; then
npm run start:pg
fi
pnpm -r test
pnpm -r lint:fix

View file

@ -1,5 +0,0 @@
{
"yaml.schemas": {
"https://raw.githubusercontent.com/ansible-community/schemas/main/f/ansible-playbook.json": "file:///Users/nicolas/Projects/runtipi/ansible/playbooks/install-dependencies.yml"
}
}

View file

@ -1,45 +1,49 @@
FROM node:18 AS build
ARG NODE_VERSION="20.10"
ARG ALPINE_VERSION="3.18"
RUN npm install node-gyp -g
FROM node:${NODE_VERSION}-alpine${ALPINE_VERSION} AS node_base
WORKDIR /api
COPY ./packages/system-api/package.json /api/package.json
RUN npm i
# ---
WORKDIR /dashboard
COPY ./packages/dashboard/package.json /dashboard/package.json
RUN npm i
FROM node_base AS builder_base
RUN npm install pnpm -g
# BUILDER
FROM builder_base AS builder
WORKDIR /app
COPY ./pnpm-lock.yaml ./
COPY ./pnpm-workspace.yaml ./
COPY ./patches ./patches
RUN pnpm fetch --no-scripts
COPY ./package*.json ./
COPY ./packages/shared ./packages/shared
RUN pnpm install -r --prefer-offline
COPY ./src ./src
COPY ./tsconfig.json ./tsconfig.json
COPY ./next.config.mjs ./next.config.mjs
COPY ./public ./public
COPY ./tests ./tests
WORKDIR /api
COPY ./packages/system-api /api
RUN npm run build
# ---
WORKDIR /dashboard
COPY ./packages/dashboard /dashboard
RUN npm run build
# APP
FROM node_base AS app
FROM alpine:3.16.0 as app
ENV NODE_ENV production
WORKDIR /
USER node
# Install dependencies
RUN apk --no-cache add docker-compose nodejs npm bash g++ make git
WORKDIR /app
RUN npm install node-gyp -g
COPY --from=builder /app/next.config.mjs ./
COPY --from=builder /app/public ./public
COPY --from=builder /app/package.json ./package.json
COPY --from=builder --chown=node:node /app/.next/standalone ./
COPY --from=builder --chown=node:node /app/.next/static ./.next/static
WORKDIR /api
COPY ./packages/system-api/package*.json /api/
RUN npm install --production
EXPOSE 3000
WORKDIR /dashboard
COPY ./packages/dashboard/package*.json /dashboard/
RUN npm install --production
COPY --from=build /api/dist /api/dist
COPY ./packages/system-api /api
COPY --from=build /dashboard/.next /dashboard/.next
COPY ./packages/dashboard /dashboard
WORKDIR /
CMD ["npm", "run", "start"]

View file

@ -1,21 +1,23 @@
FROM alpine:3.16.0 as app
ARG NODE_VERSION="20.10"
ARG ALPINE_VERSION="3.18"
WORKDIR /
FROM node:${NODE_VERSION}-alpine${ALPINE_VERSION}
# Install docker
RUN apk --no-cache add docker-compose nodejs npm bash g++ make git
RUN npm install pnpm -g
RUN npm install node-gyp -g
WORKDIR /app
WORKDIR /api
COPY ./packages/system-api/package*.json /api/
RUN npm install
COPY ./pnpm-lock.yaml ./
COPY ./patches ./patches
RUN pnpm fetch --ignore-scripts
WORKDIR /dashboard
COPY ./packages/dashboard/package*.json /dashboard/
RUN npm install
COPY ./package*.json ./
COPY ./packages/shared ./packages/shared
COPY ./packages/system-api /api
COPY ./packages/dashboard /dashboard
RUN pnpm install -r --prefer-offline
WORKDIR /
COPY ./tsconfig.json ./tsconfig.json
COPY ./next.config.mjs ./next.config.mjs
COPY ./public ./public
CMD ["npm", "run", "dev"]

178
README.md
View file

@ -1,109 +1,63 @@
# ⛺️ Tipi — A personal homeserver for everyone
# Tipi — A personal homeserver for everyone
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-8-orange.svg?style=flat-square)](#contributors-)
[![All Contributors](https://img.shields.io/badge/all_contributors-42-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END -->
[![License](https://img.shields.io/github/license/meienberger/runtipi)](https://github.com/meienberger/runtipi/blob/master/LICENSE)
[![Version](https://img.shields.io/github/v/release/meienberger/runtipi?color=%235351FB&label=version)](https://github.com/meienberger/runtipi/releases)
![Issues](https://img.shields.io/github/issues/meienberger/runtipi)
[![License](https://img.shields.io/github/license/runtipi/runtipi)](https://github.com/runtipi/runtipi/blob/master/LICENSE)
[![Version](https://img.shields.io/github/v/release/runtipi/runtipi?color=%235351FB&label=version)](https://github.com/runtipi/runtipi/releases)
![Issues](https://img.shields.io/github/issues/runtipi/runtipi)
[![Docker Pulls](https://badgen.net/docker/pulls/meienberger/runtipi?icon=docker&label=pulls)](https://hub.docker.com/r/meienberger/runtipi/)
[![Docker Image Size](https://badgen.net/docker/size/meienberger/runtipi?icon=docker&label=image%20size)](https://hub.docker.com/r/meienberger/runtipi/)
![Build](https://github.com/meienberger/runtipi/workflows/Tipi%20CI/badge.svg)
[![codecov](https://codecov.io/gh/meienberger/runtipi/branch/master/graph/badge.svg?token=FZGO7ZOPSF)](https://codecov.io/gh/meienberger/runtipi)
![Build](https://github.com/runtipi/runtipi/workflows/Tipi%20CI/badge.svg)
[![Crowdin](https://badges.crowdin.net/runtipi/localized.svg)](https://crowdin.com/project/runtipi)
> 💡 Tipi is built with TypeScript, Next.js app router and Drizzle ORM! If you want to collaborate on a cool project, join the discussion on Discord!
#### Join the discussion
[![Discord](https://img.shields.io/discord/976934649643294750?label=discord&logo=discord)](https://discord.gg/Bu9qEPnHsc)
[![Matrix](https://img.shields.io/matrix/runtipi:matrix.org?label=matrix&logo=matrix)](https://matrix.to/#/#runtipi:matrix.org)
![Preview](https://raw.githubusercontent.com/meienberger/runtipi/develop/screenshots/appstore.png)
![Preview](https://raw.githubusercontent.com/runtipi/runtipi/develop/screenshots/appstore.png)
> ⚠️ Tipi is still at an early stage of development and issues are to be expected. Feel free to open an issue or pull request if you find a bug.
Tipi is a personal homeserver orchestrator. It is running docker containers under the hood and provides a simple web interface to manage them. Every service comes with an opinionated configuration in order to remove the need for manual configuration and network setup.
Tipi is a personal homeserver orchestrator that makes it easy to manage and run multiple services on a single server. It is based on Docker and comes with a simple web interface to manage your services. Tipi is designed to be easy to use, so you don't have to worry about manual configuration or networking. Simply install Tipi on your server and use the web interface to add and manage services. You can see a list of available services in the [App Store repo](https://github.com/runtipi/runtipi-appstore) and request new ones if you don't see what you need. To get started, follow the installation instructions below.
Check our demo instance : **95.179.210.152** / username: **user@runtipi.com** / password: **runtipi**
## Getting started
## Apps available
- [Adguard Home](https://github.com/AdguardTeam/AdGuardHome) - Adguard Home DNS adblocker
- [Booksonic](https://github.com/popeen) - A server for streaming your audiobooks
- [Calibre-Web](https://github.com/janeczku/calibre-web) - Web Ebook Reader
- [Code-Server](https://github.com/coder/code-server) - Web VS Code
- [Filebrowser](https://github.com/filebrowser/filebrowser) - Web File Browser
- [Firefly III](https://github.com/firefly-iii/firefly-iii) - A personal finances manager
- [Freshrss](https://github.com/FreshRSS/FreshRSS) - A free, self-hostable RSS aggregator
- [Gitea](https://github.com/go-gitea/gitea) - Gitea - A painless self-hosted Git service
- [Ghost](https://github.com/TryGhost/Ghost) - Ghost - Turn your audience into a business
- [Homarr](https://github.com/ajnart/homarr) - A homepage for your server
- [Home Assistant](https://github.com/home-assistant/core) - Open source home automation that puts local control and privacy first
- [Invidious](https://github.com/iv-org/invidious) - An alternative front-end to YouTube
- [Jackett](https://github.com/Jackett/Jackett) - API Support for your favorite torrent trackers
- [Jellyfin](https://github.com/jellyfin/jellyfin) - A media server for your home collection
- [Joplin](https://github.com/laurent22/joplin) - Privacy focused note-taking app
- [Libreddit](https://github.com/spikecodes/libreddit) - Private front-end for Reddit
- [Mealie](https://github.com/hay-kot/mealie) - Self-hosted recipe manager and meal planner.
- [n8n](https://github.com/n8n-io/n8n) - Workflow Automation Tool
- [Nextcloud](https://github.com/nextcloud/server) - A safe home for all your data
- [Nitter](https://github.com/zedeus/nitter) - Alternative Twitter front-end
- [Node-RED](https://github.com/node-red/node-red) - Low-code programming for event-driven applications
- [Overseerr](https://github.com/sct/overseerr) - Request management and media discovery tool for the Plex ecosystem
- [Photoprism](https://github.com/photoprism/photoprism) - AI-Powered Photos App for the Decentralized Web. We are on a mission to protect your freedom and privacy.
- [Pihole](https://github.com/pi-hole/pi-hole) - A black hole for Internet advertisements
- [Plex](https://github.com/plexinc/pms-docker) - Stream Movies & TV Shows
- [Portainer](https://github.com/portainer/portainer) - Making Docker and Kubernetes management easy.
- [Prowlarr](https://github.com/Prowlarr/Prowlarr/) - A torrent/usenet indexer manager/proxy
- [Radarr](https://github.com/Radarr/Radarr) - Movie collection manager for Usenet and BitTorrent users
- [Readarr](https://github.com/Readarr/Readarr) - Book Manager and Automation (Sonarr for Ebooks)
- [Resilio Sync](https://github.com/bt-sync) - Fast, reliable, and simple file sync and share solution
- [Sonarr](https://github.com/Sonarr/Sonarr) - TV show manager for Usenet and BitTorrent
- [Syncthing](https://github.com/syncthing/syncthing) - Continuous File Synchronization
- [Tailscale](https://github.com/tailscale/tailscale) - The easiest, most secure way to use WireGuard and 2FA
- [Tautulli](https://github.com/Tautulli/Tautulli) - A Python based monitoring and tracking tool for Plex Media Server
- [Transmission](https://github.com/transmission/transmission) - Fast, easy, and free BitTorrent client
- [Wireguard Easy](https://github.com/WeeJeWel/wg-easy) - WireGuard VPN + Web-based Admin UI
- [Vaultwarden](https://github.com/dani-garcia/vaultwarden) - Unofficial Bitwarden compatible server
Visit our website [runtipi.io](https://www.runtipi.io/docs/getting-started/installation?utm_source=github&utm_medium=README&utm_campaign=getting-started) for installation instructions, documentation and guides.
## 🛠 Installation
## Demo
### Installation Requirements
Ubuntu 18.04 LTS or higher is recommended. However other major Linux distribution are supported but may lead to installation issues. Please file an issue if you encounter one.
You can try out a demo of Tipi at [demo.runtipi.io](https://demo.runtipi.io) using the following credentials:
### Step 1. Download Tipi
Run this in an empty directory where you want to install Tipi.
username: user@runtipi.io
password: password
```bash
git clone https://github.com/meienberger/runtipi.git
```
## 📚 Documentation
### Step 2. Run Tipi
cd into the downloaded directory and run the start script.
For a detailed guide on how to install Tipi. This amazing article by @kycfree [Running a Home Server with Tipi](https://kyc3.life/running-a-home-server-with-tipi/)
```bash
cd runtipi
sudo ./scripts/start.sh
```
The script will prompt you the ip address of the dashboard once configured.
Tipi will run by default on port 80. To select another port you can run the start script with the `--port` argument
```bash
sudo ./scripts/start.sh --port 7000
```
To stop Tipi, run the stop script.
```bash
sudo ./scripts/stop.sh
```
You can find more documentation and tutorials / FAQ on [runtipi.io](https://www.runtipi.io/docs/introduction?utm_source=github&utm_medium=README&utm_campaign=main-repo-docs)
## ❤️ Contributing
Tipi is made to be very easy to plug in new apps. We welcome and appreciate new contributions.
If you want to add a new app or feature, you can follow the [Contribution guide](https://github.com/meienberger/runtipi/wiki/Contributing-to-Tipi) for instructions on how to do so.
If you want to add a new app or feature, you can follow the [Contribution guide](https://www.runtipi.io/docs/contributing/adding-a-new-app) for instructions on how to do so.
We are looking for contributions of all kinds. If you know design, development, or have ideas for new features, please get in touch.
## 📜 License
[![License](https://img.shields.io/github/license/meienberger/runtipi)](https://github.com/meienberger/runtipi/blob/master/LICENSE)
[![License](https://img.shields.io/github/license/runtipi/runtipi)](https://github.com/runtipi/runtipi/blob/master/LICENSE)
Tipi is licensed under the GNU General Public License v3.0. TL;DR — You may copy, distribute and modify the software as long as you track changes/dates in source files. Any modifications to or software including (via compiler) GPL-licensed code must also be made available under the GPL along with build & install instructions.
## 🗣 Community
- [Matrix](https://matrix.to/#/#runtipi:matrix.org)<br />
- [Twitter](https://twitter.com/runtipi)
- [Telegram](https://t.me/+72-y10MnLBw2ZGI0)
@ -117,18 +71,62 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="https://meienberger.dev/"><img src="https://avatars.githubusercontent.com/u/47644445?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nicolas Meienberger</b></sub></a><br /><a href="https://github.com/meienberger/runtipi/commits?author=meienberger" title="Code">💻</a> <a href="#infra-meienberger" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/meienberger/runtipi/commits?author=meienberger" title="Tests">⚠️</a> <a href="https://github.com/meienberger/runtipi/commits?author=meienberger" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/ArneNaessens"><img src="https://avatars.githubusercontent.com/u/16622722?v=4?s=100" width="100px;" alt=""/><br /><sub><b>ArneNaessens</b></sub></a><br /><a href="https://github.com/meienberger/runtipi/commits?author=ArneNaessens" title="Code">💻</a> <a href="#ideas-ArneNaessens" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/meienberger/runtipi/commits?author=ArneNaessens" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/DrMxrcy"><img src="https://avatars.githubusercontent.com/u/58747968?v=4?s=100" width="100px;" alt=""/><br /><sub><b>DrMxrcy</b></sub></a><br /><a href="https://github.com/meienberger/runtipi/commits?author=DrMxrcy" title="Code">💻</a> <a href="#ideas-DrMxrcy" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/meienberger/runtipi/commits?author=DrMxrcy" title="Tests">⚠️</a></td>
<td align="center"><a href="https://cobre.dev"><img src="https://avatars.githubusercontent.com/u/36574329?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Cooper</b></sub></a><br /><a href="https://github.com/meienberger/runtipi/commits?author=CobreDev" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/JTruj1ll0923"><img src="https://avatars.githubusercontent.com/u/6656643?v=4?s=100" width="100px;" alt=""/><br /><sub><b>JTruj1ll0923</b></sub></a><br /><a href="https://github.com/meienberger/runtipi/commits?author=JTruj1ll0923" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Stetsed"><img src="https://avatars.githubusercontent.com/u/33891782?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Stetsed</b></sub></a><br /><a href="https://github.com/meienberger/runtipi/commits?author=Stetsed" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/blushell"><img src="https://avatars.githubusercontent.com/u/3621606?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jones_Town</b></sub></a><br /><a href="https://github.com/meienberger/runtipi/commits?author=blushell" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://rushichaudhari.github.io/"><img src="https://avatars.githubusercontent.com/u/6279035?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rushi Chaudhari</b></sub></a><br /><a href="https://github.com/meienberger/runtipi/commits?author=rushic24" title="Code">💻</a></td>
</tr>
<tbody>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://meienberger.dev/"><img src="https://avatars.githubusercontent.com/u/47644445?v=4?s=100" width="100px;" alt="Nicolas Meienberger"/><br /><sub><b>Nicolas Meienberger</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=meienberger" title="Code">💻</a> <a href="#infra-meienberger" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/runtipi/runtipi/commits?author=meienberger" title="Tests">⚠️</a> <a href="https://github.com/runtipi/runtipi/commits?author=meienberger" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ArneNaessens"><img src="https://avatars.githubusercontent.com/u/16622722?v=4?s=100" width="100px;" alt="ArneNaessens"/><br /><sub><b>ArneNaessens</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=ArneNaessens" title="Code">💻</a> <a href="#ideas-ArneNaessens" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/runtipi/runtipi/commits?author=ArneNaessens" title="Tests">⚠️</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DrMxrcy"><img src="https://avatars.githubusercontent.com/u/58747968?v=4?s=100" width="100px;" alt="DrMxrcy"/><br /><sub><b>DrMxrcy</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=DrMxrcy" title="Code">💻</a> <a href="#ideas-DrMxrcy" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/runtipi/runtipi/commits?author=DrMxrcy" title="Tests">⚠️</a> <a href="#content-DrMxrcy" title="Content">🖋</a> <a href="#promotion-DrMxrcy" title="Promotion">📣</a> <a href="#question-DrMxrcy" title="Answering Questions">💬</a> <a href="https://github.com/runtipi/runtipi/pulls?q=is%3Apr+reviewed-by%3ADrMxrcy" title="Reviewed Pull Requests">👀</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://cobre.dev"><img src="https://avatars.githubusercontent.com/u/36574329?v=4?s=100" width="100px;" alt="Cooper"/><br /><sub><b>Cooper</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=CobreDev" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/JTruj1ll0923"><img src="https://avatars.githubusercontent.com/u/6656643?v=4?s=100" width="100px;" alt="JTruj1ll0923"/><br /><sub><b>JTruj1ll0923</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=JTruj1ll0923" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Stetsed"><img src="https://avatars.githubusercontent.com/u/33891782?v=4?s=100" width="100px;" alt="Stetsed"/><br /><sub><b>Stetsed</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=Stetsed" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/blushell"><img src="https://avatars.githubusercontent.com/u/3621606?v=4?s=100" width="100px;" alt="Jones_Town"/><br /><sub><b>Jones_Town</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=blushell" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://rushichaudhari.github.io/"><img src="https://avatars.githubusercontent.com/u/6279035?v=4?s=100" width="100px;" alt="Rushi Chaudhari"/><br /><sub><b>Rushi Chaudhari</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=rushic24" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rblaine95"><img src="https://avatars.githubusercontent.com/u/4052340?v=4?s=100" width="100px;" alt="Robert Blaine"/><br /><sub><b>Robert Blaine</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=rblaine95" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://sethforprivacy.com"><img src="https://avatars.githubusercontent.com/u/40500387?v=4?s=100" width="100px;" alt="Seth For Privacy"/><br /><sub><b>Seth For Privacy</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=sethforprivacy" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/hqwuzhaoyi"><img src="https://avatars.githubusercontent.com/u/44605072?v=4?s=100" width="100px;" alt="Prajna"/><br /><sub><b>Prajna</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=hqwuzhaoyi" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/justincmoy"><img src="https://avatars.githubusercontent.com/u/14875982?v=4?s=100" width="100px;" alt="Justin Moy"/><br /><sub><b>Justin Moy</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=justincmoy" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dextreem"><img src="https://avatars.githubusercontent.com/u/11060652?v=4?s=100" width="100px;" alt="dextreem"/><br /><sub><b>dextreem</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=dextreem" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/iBicha"><img src="https://avatars.githubusercontent.com/u/17722782?v=4?s=100" width="100px;" alt="Brahim Hadriche"/><br /><sub><b>Brahim Hadriche</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=iBicha" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://andrewbrereton.com"><img src="https://avatars.githubusercontent.com/u/682893?v=4?s=100" width="100px;" alt="Andrew Brereton"/><br /><sub><b>Andrew Brereton</b></sub></a><br /><a href="#content-andrewbrereton" title="Content">🖋</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://fsackur.github.io/"><img src="https://avatars.githubusercontent.com/u/3678789?v=4?s=100" width="100px;" alt="Freddie Sackur"/><br /><sub><b>Freddie Sackur</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=fsackur" title="Code">💻</a> <a href="https://github.com/runtipi/runtipi/commits?author=fsackur" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://innocentius.github.io"><img src="https://avatars.githubusercontent.com/u/5344432?v=4?s=100" width="100px;" alt="Innocentius"/><br /><sub><b>Innocentius</b></sub></a><br /><a href="#translation-innocentius" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/TetrisIQ"><img src="https://avatars.githubusercontent.com/u/24246993?v=4?s=100" width="100px;" alt="Alex"/><br /><sub><b>Alex</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=TetrisIQ" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://ryanc.cc"><img src="https://avatars.githubusercontent.com/u/21301288?v=4?s=100" width="100px;" alt="Ryan Wang"/><br /><sub><b>Ryan Wang</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=ruibaby" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/simonandr"><img src="https://avatars.githubusercontent.com/u/48092304?v=4?s=100" width="100px;" alt="simonandr"/><br /><sub><b>simonandr</b></sub></a><br /><a href="#content-simonandr" title="Content">🖋</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/demizeu"><img src="https://avatars.githubusercontent.com/u/121183951?v=4?s=100" width="100px;" alt="iepure"/><br /><sub><b>iepure</b></sub></a><br /><a href="#translation-demizeu" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SergeyKodolov"><img src="https://avatars.githubusercontent.com/u/35339452?v=4?s=100" width="100px;" alt="Sergey Kodolov"/><br /><sub><b>Sergey Kodolov</b></sub></a><br /><a href="#translation-SergeyKodolov" title="Translation">🌍</a> <a href="https://github.com/runtipi/runtipi/commits?author=SergeyKodolov" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sclaren"><img src="https://avatars.githubusercontent.com/u/915292?v=4?s=100" width="100px;" alt="sclaren"/><br /><sub><b>sclaren</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=sclaren" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mcmeel"><img src="https://avatars.githubusercontent.com/u/13773536?v=4?s=100" width="100px;" alt="mcmeel"/><br /><sub><b>mcmeel</b></sub></a><br /><a href="#question-mcmeel" title="Answering Questions">💬</a> <a href="#ideas-mcmeel" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/runtipi/runtipi/commits?author=mcmeel" title="Code">💻</a> <a href="https://github.com/runtipi/runtipi/commits?author=mcmeel" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/NoisyFridge"><img src="https://avatars.githubusercontent.com/u/73795785?v=4?s=100" width="100px;" alt="NoisyFridge"/><br /><sub><b>NoisyFridge</b></sub></a><br /><a href="#translation-NoisyFridge" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Bvoxl"><img src="https://avatars.githubusercontent.com/u/67489519?v=4?s=100" width="100px;" alt="Bvoxl"/><br /><sub><b>Bvoxl</b></sub></a><br /><a href="#translation-Bvoxl" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/m-lab-0"><img src="https://avatars.githubusercontent.com/u/116570617?v=4?s=100" width="100px;" alt="m-lab-0"/><br /><sub><b>m-lab-0</b></sub></a><br /><a href="#translation-m-lab-0" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dannkunt"><img src="https://avatars.githubusercontent.com/u/32395839?v=4?s=100" width="100px;" alt="dannkunt"/><br /><sub><b>dannkunt</b></sub></a><br /><a href="#translation-dannkunt" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Schmanko"><img src="https://avatars.githubusercontent.com/u/94195393?v=4?s=100" width="100px;" alt="Schmanko"/><br /><sub><b>Schmanko</b></sub></a><br /><a href="#translation-Schmanko" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://micro.nghialele.com"><img src="https://avatars.githubusercontent.com/u/129353223?v=4?s=100" width="100px;" alt="Nghia Lele"/><br /><sub><b>Nghia Lele</b></sub></a><br /><a href="#translation-nghialele" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/amusingimpala75"><img src="https://avatars.githubusercontent.com/u/69653100?v=4?s=100" width="100px;" alt="amusingimpala75"/><br /><sub><b>amusingimpala75</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=amusingimpala75" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://m1n.omg.lol"><img src="https://avatars.githubusercontent.com/u/54779580?v=4?s=100" width="100px;" alt="David"/><br /><sub><b>David</b></sub></a><br /><a href="#translation-M1n-4d316e" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/steveiliop56"><img src="https://avatars.githubusercontent.com/u/106091011?v=4?s=100" width="100px;" alt="Stavros Iliopoulos"/><br /><sub><b>Stavros Iliopoulos</b></sub></a><br /><a href="#translation-steveiliop56" title="Translation">🌍</a> <a href="https://github.com/runtipi/runtipi/commits?author=steveiliop56" title="Code">💻</a> <a href="https://github.com/runtipi/runtipi/commits?author=steveiliop56" title="Tests">⚠️</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/loxiry"><img src="https://avatars.githubusercontent.com/u/86959495?v=4?s=100" width="100px;" alt="loxiry"/><br /><sub><b>loxiry</b></sub></a><br /><a href="#translation-loxiry" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/JigSawFr"><img src="https://avatars.githubusercontent.com/u/5781907?v=4?s=100" width="100px;" alt="JigSaw"/><br /><sub><b>JigSaw</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=JigSawFr" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DireMunchkin"><img src="https://avatars.githubusercontent.com/u/1665676?v=4?s=100" width="100px;" alt="DireMunchkin"/><br /><sub><b>DireMunchkin</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=DireMunchkin" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FabioCingottini"><img src="https://avatars.githubusercontent.com/u/32102735?v=4?s=100" width="100px;" alt="Fabio Cingottini"/><br /><sub><b>Fabio Cingottini</b></sub></a><br /><a href="#translation-FabioCingottini" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/itsrllyhim"><img src="https://avatars.githubusercontent.com/u/143047010?v=4?s=100" width="100px;" alt="him"/><br /><sub><b>him</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=itsrllyhim" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://cchalop1.com"><img src="https://avatars.githubusercontent.com/u/28163855?v=4?s=100" width="100px;" alt="CHALOPIN Clément"/><br /><sub><b>CHALOPIN Clément</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=cchalop1" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/geetansh"><img src="https://avatars.githubusercontent.com/u/9976198?v=4?s=100" width="100px;" alt="Geetansh Jindal"/><br /><sub><b>Geetansh Jindal</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=geetansh" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/0livier"><img src="https://avatars.githubusercontent.com/u/10607?v=4?s=100" width="100px;" alt="Olivier Garcia"/><br /><sub><b>Olivier Garcia</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=0livier" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qcoudeyr"><img src="https://avatars.githubusercontent.com/u/124463277?v=4?s=100" width="100px;" alt="qcoudeyr"/><br /><sub><b>qcoudeyr</b></sub></a><br /><a href="https://github.com/runtipi/runtipi/commits?author=qcoudeyr" title="Code">💻</a></td>
</tr>
</tbody>
</table>
<!-- markdownlint-restore -->
@ -136,4 +134,4 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!

35
__mocks__/fs-extra.ts Normal file
View file

@ -0,0 +1,35 @@
import { fs, vol } from 'memfs';
const copyFolderRecursiveSync = (src: string, dest: string) => {
const exists = vol.existsSync(src);
const stats = vol.statSync(src);
const isDirectory = exists && stats.isDirectory();
if (isDirectory) {
vol.mkdirSync(dest, { recursive: true });
vol.readdirSync(src).forEach((childItemName) => {
copyFolderRecursiveSync(`${src}/${childItemName}`, `${dest}/${childItemName}`);
});
} else {
vol.copyFileSync(src, dest);
}
};
export default {
...fs,
copySync: (src: string, dest: string) => {
copyFolderRecursiveSync(src, dest);
},
__resetAllMocks: () => {
vol.reset();
},
__applyMockFiles: (newMockFiles: Record<string, string>) => {
// Create folder tree
vol.fromJSON(newMockFiles, 'utf8');
},
__createMockFiles: (newMockFiles: Record<string, string>) => {
vol.reset();
// Create folder tree
vol.fromJSON(newMockFiles, 'utf8');
},
__printVol: () => console.log(vol.toTree()),
};

29
__mocks__/redis.ts Normal file
View file

@ -0,0 +1,29 @@
const values = new Map();
const expirations = new Map();
export const createClient = jest.fn(() => {
return {
isOpen: true,
connect: jest.fn(),
set: (key: string, value: string, exp: number) => {
values.set(key, value);
expirations.set(key, exp);
},
get: (key: string) => values.get(key),
quit: jest.fn(),
del: (key: string) => values.delete(key),
ttl: (key: string) => expirations.get(key),
on: jest.fn(),
keys: (key: string) => {
const keyprefix = key.substring(0, key.length - 1);
const keys = [];
// eslint-disable-next-line no-restricted-syntax
for (const [k] of values) {
if (k.startsWith(keyprefix)) {
keys.push(k);
}
}
return keys;
},
};
});

12
codecov.yml Normal file
View file

@ -0,0 +1,12 @@
ignore:
- 'public'
- 'scripts'
- 'templates'
- 'screenshots'
- '**/*.json'
- '**/tests/**'
coverage:
status:
project:
default:
informational: true

View file

@ -1,3 +0,0 @@
module.exports = {
extends: ["@commitlint/config-conventional"],
};

3
crowdin.yml Normal file
View file

@ -0,0 +1,3 @@
files:
- source: /src/client/messages/en.json
translation: /src/client/messages/%locale%.json

View file

@ -1,13 +1,29 @@
version: "3.7"
version: '3.7'
services:
tipi-reverse-proxy:
container_name: tipi-reverse-proxy
image: traefik:v2.8
restart: on-failure
ports:
- 80:80
- 443:443
- 8080:8080
command: --providers.docker
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${PWD}/traefik:/root/.config
- ${PWD}/traefik/shared:/shared
networks:
- tipi_main_network
tipi-db:
container_name: tipi-db
image: postgres:latest
restart: on-failure
image: postgres:14
restart: unless-stopped
stop_grace_period: 1m
volumes:
- ./data/postgres:/var/lib/postgresql/data
- pgdata:/var/lib/postgresql/data
ports:
- 5432:5432
environment:
@ -15,72 +31,119 @@ services:
POSTGRES_USER: tipi
POSTGRES_DB: tipi
healthcheck:
test: ["CMD-SHELL", "pg_isready -d tipi -U tipi"]
test: ['CMD-SHELL', 'pg_isready -d tipi -U tipi']
interval: 5s
timeout: 10s
retries: 120
networks:
- tipi_main_network
api:
build:
context: .
dockerfile: Dockerfile.dev
command: /bin/sh -c "cd /api && npm run build && npm run dev"
depends_on:
tipi-db:
condition: service_healthy
container_name: api
tipi-redis:
container_name: tipi-redis
image: redis:7.2.0
restart: unless-stopped
command: redis-server --requirepass ${REDIS_PASSWORD}
ports:
- 3001:3001
- 6379:6379
volumes:
## Docker sock
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${PWD}:/tipi
- ${PWD}/packages/system-api/src:/api/src
# - /api/node_modules
environment:
INTERNAL_IP: ${INTERNAL_IP}
TIPI_VERSION: ${TIPI_VERSION}
JWT_SECRET: ${JWT_SECRET}
ROOT_FOLDER_HOST: ${ROOT_FOLDER_HOST}
NGINX_PORT: ${NGINX_PORT}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_USERNAME: tipi
POSTGRES_DBNAME: tipi
POSTGRES_HOST: tipi-db
APPS_REPO_ID: ${APPS_REPO_ID}
APPS_REPO_URL: ${APPS_REPO_URL}
- redisdata:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 10s
retries: 120
networks:
- tipi_main_network
dashboard:
tipi-worker:
build:
context: .
dockerfile: ./packages/worker/Dockerfile.dev
container_name: tipi-worker
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:3000/healthcheck']
interval: 5s
timeout: 10s
retries: 120
start_period: 5s
depends_on:
tipi-db:
condition: service_healthy
tipi-redis:
condition: service_healthy
env_file:
- .env
environment:
NODE_ENV: development
volumes:
# Dev mode
- ${PWD}/packages/worker/src:/app/packages/worker/src
# Production mode
- /proc:/host/proc:ro
- /var/run/docker.sock:/var/run/docker.sock
- ${PWD}/.env:/app/.env
- ${PWD}/state:/app/state
- ${PWD}/repos:/app/repos
- ${PWD}/apps:/app/apps
- ${STORAGE_PATH:-$PWD}/app-data:/storage/app-data
- ${PWD}/logs:/app/logs
- ${PWD}/traefik:/app/traefik
- ${PWD}/user-config:/app/user-config
networks:
- tipi_main_network
tipi-dashboard:
build:
context: .
dockerfile: Dockerfile.dev
command: /bin/sh -c "cd /dashboard && npm run dev"
container_name: dashboard
ports:
- 3000:3000
container_name: tipi-dashboard
depends_on:
tipi-db:
condition: service_healthy
tipi-redis:
condition: service_healthy
tipi-worker:
condition: service_healthy
env_file:
- .env
environment:
NODE_ENV: development
networks:
- tipi_main_network
environment:
- INTERNAL_IP=${INTERNAL_IP}
ports:
- 3000:3000
volumes:
- ${PWD}/packages/dashboard/src:/dashboard/src
# - /dashboard/node_modules
# - /dashboard/.next
- ${PWD}/.env:/runtipi/.env
- ${PWD}/src:/app/src
- ${PWD}/packages:/app/packages
- ${PWD}/state:/runtipi/state
- ${PWD}/repos:/runtipi/repos:ro
- ${PWD}/apps:/runtipi/apps
- ${PWD}/logs:/app/logs
- ${PWD}/traefik:/runtipi/traefik
- ${STORAGE_PATH:-$PWD}:/app/storage
labels:
traefik.enable: true
traefik.http.routers.dashboard.rule: PathPrefix("/") # Host(`tipi.local`) &&
traefik.http.routers.dashboard.entrypoints: webinsecure
traefik.http.routers.dashboard.service: dashboard
traefik.http.services.dashboard.loadbalancer.server.port: 3000
traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: https
# Local domain
traefik.http.routers.dashboard-local-insecure.rule: Host(`${LOCAL_DOMAIN}`)
traefik.http.routers.dashboard-local-insecure.entrypoints: web
traefik.http.routers.dashboard-local-insecure.service: dashboard
traefik.http.routers.dashboard-local-insecure.middlewares: redirect-to-https
# secure
traefik.http.routers.dashboard-local.rule: Host(`${LOCAL_DOMAIN}`)
traefik.http.routers.dashboard-local.entrypoints: websecure
traefik.http.routers.dashboard-local.tls: true
traefik.http.routers.dashboard-local.service: dashboard
networks:
tipi_main_network:
driver: bridge
ipam:
driver: default
config:
- subnet: 10.21.21.0/24
name: runtipi_tipi_main_network
volumes:
pgdata:
redisdata:

146
docker-compose.prod.yml Normal file
View file

@ -0,0 +1,146 @@
version: '3.7'
services:
tipi-reverse-proxy:
container_name: tipi-reverse-proxy
image: traefik:v2.8
restart: on-failure
ports:
- 80:80
- 443:443
- 8080:8080
command: --providers.docker
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${PWD}/traefik:/root/.config
- ${PWD}/traefik/shared:/shared
networks:
- tipi_main_network
tipi-db:
container_name: tipi-db
image: postgres:14
restart: unless-stopped
stop_grace_period: 1m
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- 5432:5432
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_USER: tipi
POSTGRES_DB: tipi
healthcheck:
test: ['CMD-SHELL', 'pg_isready -d tipi -U tipi']
interval: 5s
timeout: 10s
retries: 120
networks:
- tipi_main_network
tipi-redis:
container_name: tipi-redis
image: redis:7.2.0
restart: unless-stopped
command: redis-server --requirepass ${REDIS_PASSWORD}
ports:
- 6379:6379
volumes:
- redisdata:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 10s
retries: 120
networks:
- tipi_main_network
tipi-worker:
build:
context: .
dockerfile: ./packages/worker/Dockerfile
container_name: tipi-worker
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:3000/healthcheck']
interval: 5s
timeout: 10s
retries: 120
start_period: 5s
depends_on:
tipi-db:
condition: service_healthy
tipi-redis:
condition: service_healthy
env_file:
- .env
environment:
NODE_ENV: production
volumes:
- /proc:/host/proc
- /var/run/docker.sock:/var/run/docker.sock
- ${PWD}/.env:/app/.env
- ${PWD}/state:/app/state
- ${PWD}/repos:/app/repos
- ${PWD}/apps:/app/apps
- ${STORAGE_PATH:-$PWD}/app-data:/storage/app-data
- ${PWD}/logs:/app/logs
- ${PWD}/traefik:/app/traefik
- ${PWD}/user-config:/app/user-config
networks:
- tipi_main_network
tipi-dashboard:
build:
context: .
dockerfile: Dockerfile
container_name: tipi-dashboard
depends_on:
tipi-db:
condition: service_healthy
tipi-redis:
condition: service_healthy
tipi-worker:
condition: service_healthy
env_file:
- .env
environment:
NODE_ENV: development
networks:
- tipi_main_network
ports:
- 3000:3000
volumes:
- ${PWD}/.env:/runtipi/.env
- ${PWD}/state:/runtipi/state
- ${PWD}/repos:/runtipi/repos:ro
- ${PWD}/apps:/runtipi/apps
- ${PWD}/logs:/app/logs
- ${PWD}/traefik:/runtipi/traefik
- ${STORAGE_PATH}:/app/storage
labels:
traefik.enable: true
traefik.http.services.dashboard.loadbalancer.server.port: 3000
traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: https
# Local ip
traefik.http.routers.dashboard.rule: PathPrefix("/")
traefik.http.routers.dashboard.service: dashboard
traefik.http.routers.dashboard.entrypoints: web
# Local domain
traefik.http.routers.dashboard-local-insecure.rule: Host(`${LOCAL_DOMAIN}`)
traefik.http.routers.dashboard-local-insecure.entrypoints: web
traefik.http.routers.dashboard-local-insecure.service: dashboard
traefik.http.routers.dashboard-local-insecure.middlewares: redirect-to-https
# secure
traefik.http.routers.dashboard-local.rule: Host(`${LOCAL_DOMAIN}`)
traefik.http.routers.dashboard-local.entrypoints: websecure
traefik.http.routers.dashboard-local.tls: true
traefik.http.routers.dashboard-local.service: dashboard
networks:
tipi_main_network:
driver: bridge
name: runtipi_tipi_main_network
volumes:
pgdata:
redisdata:

View file

@ -1,97 +0,0 @@
version: "3.7"
services:
reverse-proxy:
container_name: reverse-proxy
image: traefik:v2.6
restart: always
ports:
- ${NGINX_PORT-80}:80
- ${PROXY_PORT-8080}:8080
command: --api.insecure=true --providers.docker
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${PWD}/traefik:/root/.config
networks:
- tipi_main_network
tipi-db:
container_name: tipi-db
image: postgres:latest
restart: on-failure
stop_grace_period: 1m
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:
- 5432:5432
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_USER: tipi
POSTGRES_DB: tipi
healthcheck:
test: ["CMD-SHELL", "pg_isready -d tipi -U tipi"]
interval: 5s
timeout: 10s
retries: 120
networks:
- tipi_main_network
api:
image: meienberger/runtipi:rc-${TIPI_VERSION}
command: /bin/sh -c "cd /api && npm run start"
container_name: api
ports:
- 3001:3001
depends_on:
tipi-db:
condition: service_healthy
volumes:
## Docker sock
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${PWD}:/tipi
environment:
INTERNAL_IP: ${INTERNAL_IP}
TIPI_VERSION: ${TIPI_VERSION}
JWT_SECRET: ${JWT_SECRET}
ROOT_FOLDER_HOST: ${ROOT_FOLDER_HOST}
NGINX_PORT: ${NGINX_PORT}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_USERNAME: tipi
POSTGRES_DBNAME: tipi
POSTGRES_HOST: tipi-db
NODE_ENV: production
APPS_REPO_ID: ${APPS_REPO_ID}
APPS_REPO_URL: ${APPS_REPO_URL}
dns:
- ${DNS_IP}
networks:
- tipi_main_network
dashboard:
image: meienberger/runtipi:rc-${TIPI_VERSION}
command: /bin/sh -c "cd /dashboard && npm run start"
container_name: dashboard
ports:
- 3000:3000
networks:
- tipi_main_network
environment:
INTERNAL_IP: ${INTERNAL_IP}
NODE_ENV: production
labels:
traefik.enable: true
traefik.http.routers.dashboard.rule: PathPrefix("/") # Host(`tipi.local`) &&
traefik.http.routers.dashboard.entrypoints: webinsecure
traefik.http.routers.dashboard.service: dashboard
traefik.http.services.dashboard.loadbalancer.server.port: 3000
networks:
tipi_main_network:
driver: bridge
driver_opts:
com.docker.network.bridge.enable_ip_masquerade: "true"
com.docker.network.bridge.enable_icc: "true"
ipam:
driver: default
config:
- subnet: 10.21.21.0/24

View file

@ -1,99 +0,0 @@
version: "3.9"
services:
reverse-proxy:
container_name: reverse-proxy
image: traefik:v2.6
restart: always
ports:
- ${NGINX_PORT-80}:80
- ${PROXY_PORT-8080}:8080
command: --api.insecure=true --providers.docker
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${PWD}/traefik:/root/.config
networks:
- tipi_main_network
tipi-db:
container_name: tipi-db
image: postgres:latest
restart: on-failure
stop_grace_period: 1m
volumes:
- ${PWD}/data/postgres:/var/lib/postgresql/data
ports:
- 5432:5432
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_USER: tipi
POSTGRES_DB: tipi
healthcheck:
test: ["CMD-SHELL", "pg_isready -d tipi -U tipi"]
interval: 5s
timeout: 10s
retries: 120
networks:
- tipi_main_network
api:
image: meienberger/runtipi:${TIPI_VERSION}
command: /bin/sh -c "cd /api && npm run start"
restart: unless-stopped
container_name: api
ports:
- 3001:3001
depends_on:
tipi-db:
condition: service_healthy
volumes:
## Docker sock
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${PWD}:/tipi
environment:
INTERNAL_IP: ${INTERNAL_IP}
TIPI_VERSION: ${TIPI_VERSION}
JWT_SECRET: ${JWT_SECRET}
ROOT_FOLDER_HOST: ${ROOT_FOLDER_HOST}
NGINX_PORT: ${NGINX_PORT}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_USERNAME: tipi
POSTGRES_DBNAME: tipi
POSTGRES_HOST: tipi-db
NODE_ENV: production
APPS_REPO_ID: ${APPS_REPO_ID}
APPS_REPO_URL: ${APPS_REPO_URL}
dns:
- ${DNS_IP}
networks:
- tipi_main_network
dashboard:
image: meienberger/runtipi:${TIPI_VERSION}
command: /bin/sh -c "cd /dashboard && npm run start"
restart: unless-stopped
container_name: dashboard
ports:
- 3000:3000
networks:
- tipi_main_network
environment:
INTERNAL_IP: ${INTERNAL_IP}
NODE_ENV: production
labels:
traefik.enable: true
traefik.http.routers.dashboard.rule: PathPrefix("/") # Host(`tipi.local`) &&
traefik.http.routers.dashboard.entrypoints: webinsecure
traefik.http.routers.dashboard.service: dashboard
traefik.http.services.dashboard.loadbalancer.server.port: 3000
networks:
tipi_main_network:
driver: bridge
driver_opts:
com.docker.network.bridge.enable_ip_masquerade: "true"
com.docker.network.bridge.enable_icc: "true"
ipam:
driver: default
config:
- subnet: 10.21.21.0/24

29
e2e/0001-register.spec.ts Normal file
View file

@ -0,0 +1,29 @@
import { test, expect } from '@playwright/test';
import { testUser } from './helpers/constants';
import { clearDatabase } from './helpers/db';
test.beforeEach(async () => {
await clearDatabase();
});
test('user should be redirected to /register', async ({ page }) => {
await page.goto('/');
await page.waitForURL(/register/);
await expect(page.getByRole('heading', { name: 'Register your account' })).toBeVisible();
});
test('user can register a new account', async ({ page }) => {
await page.goto('/register');
await page.getByPlaceholder('you@example.com').click();
await page.getByPlaceholder('you@example.com').fill(testUser.email);
await page.getByPlaceholder('Enter your password', { exact: true }).fill(testUser.password);
await page.getByPlaceholder('Confirm your password').fill(testUser.password);
await page.getByRole('button', { name: 'Register' }).click();
await expect(page).toHaveTitle(/Dashboard/);
});

26
e2e/0002-login.spec.ts Normal file
View file

@ -0,0 +1,26 @@
import { test, expect } from '@playwright/test';
import { loginUser, createTestUser } from './fixtures/fixtures';
import { testUser } from './helpers/constants';
import { clearDatabase } from './helpers/db';
test.beforeEach(async () => {
await clearDatabase();
});
test('user can login and is redirected to the dashboard', async ({ page }) => {
await createTestUser();
await page.goto('/login');
await page.getByPlaceholder('you@example.com').fill(testUser.email);
await page.getByPlaceholder('Your password').fill(testUser.password);
await page.getByRole('button', { name: 'Login' }).click();
await expect(page.getByRole('heading', { name: 'Dashboard' })).toBeVisible();
});
test('user can logout', async ({ page }) => {
await loginUser(page);
await page.getByTestId('logout-button').click();
await expect(page.getByText('Login to your account')).toBeVisible();
});

57
e2e/0003-apps.spec.ts Normal file
View file

@ -0,0 +1,57 @@
import { test, expect } from '@playwright/test';
import { loginUser } from './fixtures/fixtures';
import { clearDatabase } from './helpers/db';
test.beforeEach(async ({ page, isMobile }) => {
await clearDatabase();
await loginUser(page);
if (isMobile) {
// TODO: Fix mobile accessibility for the dropdown menu
// await page.getByRole('button', { name: 'Menu' }).click();
await page.goto('/app-store');
} else {
await page.getByRole('link', { name: 'App store' }).click();
}
await page.getByPlaceholder('Search').fill('hello');
await page.getByRole('link', { name: 'Hello World' }).click();
});
test('user can install and uninstall app', async ({ page, context }) => {
// Install app
await page.getByRole('button', { name: 'Install' }).click();
await expect(page.getByText('Install Hello World')).toBeVisible();
await page.getByRole('button', { name: 'Install' }).click();
await expect(page.getByText('Installing')).toBeVisible();
await expect(page.getByText('Running')).toBeVisible({ timeout: 60000 });
await expect(page.getByText('App installed successfully')).toBeVisible();
await page.getByTestId('app-details').getByRole('button', { name: 'Open' }).press('ArrowDown');
const [newPage] = await Promise.all([context.waitForEvent('page'), await page.getByRole('menuitem', { name: `${process.env.SERVER_IP}:8000` }).click()]);
await newPage.waitForLoadState();
await expect(newPage.getByText('Hello World')).toBeVisible();
await newPage.close();
// Stop app
await page.getByRole('button', { name: 'Stop' }).click();
await expect(page.getByText('Stop Hello World')).toBeVisible();
await page.getByRole('button', { name: 'Stop' }).click();
await expect(page.getByText('Stopping')).toBeVisible();
await expect(page.getByText('App stopped successfully')).toBeVisible({ timeout: 60000 });
// Uninstall app
await page.getByRole('button', { name: 'Remove' }).click();
await expect(page.getByText('Uninstall Hello World?')).toBeVisible();
await page.getByRole('button', { name: 'Uninstall' }).click();
await expect(page.getByText('Uninstalling')).toBeVisible();
await expect(page.getByText('App uninstalled successfully')).toBeVisible({ timeout: 60000 });
});

View file

@ -0,0 +1,81 @@
import { test, expect } from '@playwright/test';
import { loginUser } from './fixtures/fixtures';
import { clearDatabase } from './helpers/db';
import { testUser } from './helpers/constants';
import { setSettings } from './helpers/settings';
test.beforeEach(async ({ page }) => {
await setSettings({});
await clearDatabase();
await loginUser(page);
await page.goto('/settings');
});
test('user can change their password', async ({ page }) => {
// Change password
await page.getByRole('tab', { name: 'Security' }).click();
await page.getByPlaceholder('Current password').click();
await page.getByPlaceholder('Current password').fill(testUser.password);
await page.getByPlaceholder('New password', { exact: true }).click();
await page.getByPlaceholder('New password', { exact: true }).fill('password2');
await page.getByPlaceholder('Confirm new password').click();
await page.getByPlaceholder('Confirm new password').fill('password2');
await page.getByRole('button', { name: 'Change password' }).click();
await expect(page.getByText('Password changed successfully')).toBeVisible();
// Login with new password
await page.getByPlaceholder('you@example.com').fill(testUser.email);
await page.getByPlaceholder('Your password').fill('password2');
await page.getByRole('button', { name: 'Login' }).click();
await expect(page.getByRole('heading', { name: 'Dashboard' })).toBeVisible();
});
test('user can change their email', async ({ page }) => {
// Change email
const newEmail = 'tester2@test.com';
await page.getByRole('tab', { name: 'Security' }).click();
await page.getByRole('button', { name: 'Change username' }).click();
await page.getByPlaceholder('New username').click();
await page.getByPlaceholder('New username').fill(newEmail);
// Wrong password
await page.getByPlaceholder('Password', { exact: true }).click();
await page.getByPlaceholder('Password', { exact: true }).fill('incorrect');
await page.getByRole('button', { name: 'Change username' }).click();
await expect(page.getByText('Invalid password')).toBeVisible();
// Wrong email
await page.getByPlaceholder('Password', { exact: true }).click();
await page.getByPlaceholder('Password', { exact: true }).fill(testUser.password);
await page.getByPlaceholder('New username').click();
await page.getByPlaceholder('New username').fill('incorrect');
await page.getByRole('button', { name: 'Change username' }).click();
await expect(page.getByText('Must be a valid email address')).toBeVisible();
// Correct email and password
await page.getByPlaceholder('New username').click();
await page.getByPlaceholder('New username').fill(newEmail);
await page.getByRole('button', { name: 'Change username' }).click();
await expect(page.getByText('Username changed successfully')).toBeVisible();
// Login with new email
await page.getByPlaceholder('you@example.com').click();
await page.getByPlaceholder('you@example.com').fill(newEmail);
await page.getByPlaceholder('Your password').click();
await page.getByPlaceholder('Your password').fill(testUser.password);
await page.getByRole('button', { name: 'Login' }).click();
await expect(page.getByRole('heading', { name: 'Dashboard' })).toBeVisible();
});

View file

@ -0,0 +1,58 @@
import { test, expect } from '@playwright/test';
import { appTable } from '@/server/db/schema';
import { setSettings } from './helpers/settings';
import { loginUser } from './fixtures/fixtures';
import { clearDatabase, db } from './helpers/db';
test.beforeEach(async () => {
await clearDatabase();
await setSettings({});
});
test('user can activate the guest dashboard and see it when logged out', async ({ page }) => {
await loginUser(page);
await page.goto('/settings');
await page.getByRole('tab', { name: 'Settings' }).click();
await page.getByLabel('guestDashboard').setChecked(true);
await page.getByRole('button', { name: 'Save' }).click();
await page.getByTestId('logout-button').click();
await expect(page.getByText('No apps to display')).toBeVisible();
});
test('logged out users can see the apps on the guest dashboard', async ({ browser }) => {
await setSettings({ guestDashboard: true });
await db.insert(appTable).values({ config: {}, isVisibleOnGuestDashboard: true, id: 'hello-world', exposed: true, domain: 'duckduckgo.com', status: 'running' });
await db.insert(appTable).values({ config: {}, isVisibleOnGuestDashboard: false, id: 'actual-budget', exposed: false, status: 'running' });
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('/');
await expect(page.getByText(/Hello World web server/)).toBeVisible();
const locator = page.locator('text=Actual Budget');
expect(locator).not.toBeVisible();
const [newPage] = await Promise.all([context.waitForEvent('page'), await page.getByRole('link', { name: /Hello World/ }).click()]);
await newPage.waitForLoadState();
expect(newPage.url()).toBe('https://duckduckgo.com/');
await newPage.close();
await context.close();
});
test('user can deactivate the guest dashboard and not see it when logged out', async ({ page }) => {
await loginUser(page);
await page.goto('/settings');
await page.getByRole('tab', { name: 'Settings' }).click();
await page.getByLabel('guestDashboard').setChecked(false);
await page.getByRole('button', { name: 'Save' }).click();
await page.getByTestId('logout-button').click();
await page.goto('/');
// We should be redirected to the login page
await expect(page.getByRole('heading', { name: 'Login' })).toBeVisible();
});

25
e2e/fixtures/fixtures.ts Normal file
View file

@ -0,0 +1,25 @@
import * as argon2 from 'argon2';
import { expect, Page } from '@playwright/test';
import { userTable } from '@/server/db/schema';
import { db } from '../helpers/db';
import { testUser } from '../helpers/constants';
export const createTestUser = async () => {
// Create user in database
const password = await argon2.hash(testUser.password);
await db.insert(userTable).values({ password, username: testUser.email, operator: true });
};
export const loginUser = async (page: Page) => {
// Create user in database
await createTestUser();
// Login flow
await page.goto('/login');
await page.getByPlaceholder('you@example.com').fill(testUser.email);
await page.getByPlaceholder('Your password').fill(testUser.password);
await page.getByRole('button', { name: 'Login' }).click();
await expect(page.getByRole('heading', { name: 'Dashboard' })).toBeVisible();
};

4
e2e/helpers/constants.ts Normal file
View file

@ -0,0 +1,4 @@
export const testUser = {
email: 'tester@test.com',
password: 'password',
};

17
e2e/helpers/db.ts Normal file
View file

@ -0,0 +1,17 @@
import { Pool } from 'pg';
import { drizzle } from 'drizzle-orm/node-postgres';
import * as schema from '../../src/server/db/schema';
const connectionString = `postgresql://tipi:${process.env.POSTGRES_PASSWORD}@${process.env.SERVER_IP}:5432/tipi?connect_timeout=300`;
const pool = new Pool({
connectionString,
});
export const db = drizzle(pool, { schema });
export const clearDatabase = async () => {
// delete all data in table user
await db.delete(schema.userTable);
await db.delete(schema.appTable);
};

View file

@ -0,0 +1,12 @@
import { clearDatabase } from './db';
import { setSettings } from './settings';
/**
*
*/
async function globalSetup() {
await clearDatabase();
await setSettings({});
}
export default globalSetup;

8
e2e/helpers/settings.ts Normal file
View file

@ -0,0 +1,8 @@
import { promises } from 'fs';
import path from 'path';
import { z } from 'zod';
import { settingsSchema } from '@runtipi/shared';
export const setSettings = async (settings: z.infer<typeof settingsSchema>) => {
await promises.writeFile(path.join(__dirname, '../../state/settings.json'), JSON.stringify(settings));
};

2
global.d.ts vendored Normal file
View file

@ -0,0 +1,2 @@
type Messages = typeof import('./src/client/messages/en.json');
type IntlMessages = Messages;

View file

@ -1,7 +0,0 @@
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
module.exports = {
preset: "ts-jest",
testEnvironment: "node",
testMatch: ["**/__tests__/**/*.test.ts"],
testPathIgnorePatterns: ["/node_modules/", "/packages/"],
};

40
jest.config.ts Normal file
View file

@ -0,0 +1,40 @@
import nextJest from 'next/jest';
const createJestConfig = nextJest({
// Provide the path to your Next.js app to load next.config.js and .env files in your test environment
dir: './',
});
const customClientConfig = {
testEnvironment: 'jest-environment-jsdom',
setupFilesAfterEnv: ['<rootDir>/tests/client/jest.setup.tsx'],
testMatch: ['<rootDir>/src/client/**/*.{spec,test}.{ts,tsx}', '!<rootDir>/src/server/**/*.{spec,test}.{ts,tsx}'],
};
const customServerConfig = {
testEnvironment: 'node',
testMatch: ['<rootDir>/src/server/**/*.test.ts'],
setupFilesAfterEnv: ['<rootDir>/tests/server/jest.setup.ts'],
};
export default async () => {
const clientConfig = await createJestConfig(customClientConfig)();
const serverConfig = await createJestConfig(customServerConfig)();
return {
randomize: true,
verbose: true,
collectCoverage: true,
collectCoverageFrom: ['src/server/**/*.{ts,tsx}', 'src/client/**/*.{ts,tsx}', '!src/**/mocks/**/*.{ts,tsx}', '!**/*.{spec,test}.{ts,tsx}', '!**/index.{ts,tsx}'],
projects: [
{
displayName: 'client',
...clientConfig,
},
{
displayName: 'server',
...serverConfig,
},
],
};
};

Binary file not shown.

View file

35
next.config.mjs Normal file
View file

@ -0,0 +1,35 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
swcMinify: true,
output: 'standalone',
reactStrictMode: true,
transpilePackages: ['@runtipi/shared'],
experimental: {
serverComponentsExternalPackages: ['bullmq'],
},
serverRuntimeConfig: {
INTERNAL_IP: process.env.INTERNAL_IP,
TIPI_VERSION: process.env.TIPI_VERSION,
JWT_SECRET: process.env.JWT_SECRET,
POSTGRES_PASSWORD: process.env.POSTGRES_PASSWORD,
POSTGRES_USERNAME: process.env.POSTGRES_USERNAME,
POSTGRES_DBNAME: process.env.POSTGRES_DBNAME,
POSTGRES_HOST: process.env.POSTGRES_HOST,
APPS_REPO_ID: process.env.APPS_REPO_ID,
APPS_REPO_URL: process.env.APPS_REPO_URL,
DOMAIN: process.env.DOMAIN,
ARCHITECTURE: process.env.ARCHITECTURE,
NODE_ENV: process.env.NODE_ENV,
REDIS_HOST: process.env.REDIS_HOST,
},
async rewrites() {
return [
{
source: '/apps/:id',
destination: '/app-store/:id',
},
];
},
};
export default nextConfig;

View file

@ -1,48 +1,156 @@
{
"name": "runtipi",
"version": "0.5.0",
"version": "2.2.1",
"description": "A homeserver for everyone",
"scripts": {
"test": "jest",
"prepare": "husky install",
"commit": "git-cz",
"act:test-install": "act --container-architecture linux/amd64 -j test-install",
"act:docker": "act --container-architecture linux/amd64 --secret-file github.secrets -j build-images",
"start:dev": "docker-compose -f docker-compose.dev.yml --env-file .env.dev up --build",
"start:rc": "docker-compose -f docker-compose.rc.yml --env-file .env up --build",
"start:prod": "docker-compose --env-file .env up --build",
"build:common": "cd packages/common && npm run build",
"start:pg": "docker run --name test-db -p 5433:5432 -d --rm -e POSTGRES_PASSWORD=postgres postgres",
"version": "echo $npm_package_version"
"knip": "knip",
"prepare": "mkdir -p state && echo \"{}\" > state/system-info.json && echo \"random-seed\" > state/seed",
"test": "dotenv -e .env.test -- jest --colors",
"test:e2e": "NODE_ENV=test dotenv -e .env -e .env.e2e -- playwright test",
"test:e2e:ui": "NODE_ENV=test dotenv -e .env -e .env.e2e -- playwright test --ui",
"test:client": "jest --colors --selectProjects client --",
"test:server": "jest --colors --selectProjects server --",
"test:vite": "dotenv -e .env.test -- vitest run --coverage",
"dev": "next dev",
"dev:watcher": "pnpm -r --filter cli dev",
"db:migrate": "NODE_ENV=development dotenv -e .env.local -- tsx ./src/server/run-migrations-dev.ts",
"lint": "next lint",
"lint:fix": "next lint --fix",
"build": "next build",
"start": "NODE_ENV=production node server.js",
"start:dev-container": "./.devcontainer/filewatcher.sh && npm run start:dev",
"start:rc": "docker compose -f docker-compose.rc.yml --env-file .env up --build",
"start:dev": "npm run prepare && docker compose -f docker-compose.dev.yml up --build",
"start:prod": "npm run prepare && docker compose --env-file ./.env -f docker-compose.prod.yml up --build",
"start:pg": "docker run --name test-db -p 5433:5432 -d --rm -e POSTGRES_PASSWORD=postgres postgres:14",
"version": "echo $npm_package_version",
"release:rc": "./scripts/deploy/release-rc.sh",
"test:build": "docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t meienberger/runtipi:test .",
"test:build:arm64": "docker buildx build --platform linux/arm64 -t meienberger/runtipi:test .",
"test:build:arm7": "docker buildx build --platform linux/arm/v7 -t meienberger/runtipi:test .",
"test:build:amd64": "docker buildx build --platform linux/amd64 -t meienberger/runtipi:test .",
"tsc": "tsc"
},
"dependencies": {
"@hookform/resolvers": "^3.3.2",
"@otplib/core": "^12.0.1",
"@otplib/plugin-crypto": "^12.0.1",
"@otplib/plugin-thirty-two": "^12.0.1",
"@radix-ui/react-dialog": "^1.0.5",
"@radix-ui/react-dropdown-menu": "^2.0.6",
"@radix-ui/react-scroll-area": "^1.0.5",
"@radix-ui/react-select": "^2.0.0",
"@radix-ui/react-switch": "^1.0.3",
"@radix-ui/react-tabs": "^1.0.4",
"@runtipi/postgres-migrations": "^5.3.0",
"@runtipi/shared": "workspace:^",
"@tabler/core": "1.0.0-beta20",
"@tabler/icons-react": "^2.42.0",
"argon2": "^0.31.2",
"bullmq": "^4.13.0",
"clsx": "^2.0.0",
"connect-redis": "^7.1.0",
"drizzle-orm": "^0.28.6",
"fs-extra": "^11.1.1",
"geist": "^1.2.0",
"let-it-go": "^1.0.0",
"lodash.merge": "^4.6.2",
"next": "14.0.1",
"next-client-cookies": "^1.0.6",
"next-intl": "^2.22.1",
"next-safe-action": "^5.0.2",
"pg": "^8.11.3",
"qrcode.react": "^3.1.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-hook-form": "^7.48.2",
"react-hot-toast": "^2.4.1",
"react-markdown": "^9.0.0",
"react-select": "^5.8.0",
"react-tooltip": "^5.25.0",
"redaxios": "^0.5.1",
"redis": "^4.6.10",
"rehype-raw": "^7.0.0",
"remark-breaks": "^4.0.0",
"remark-gfm": "^4.0.0",
"sass": "^1.69.5",
"semver": "^7.5.4",
"sharp": "0.32.6",
"swr": "^2.2.4",
"tslib": "^2.6.2",
"uuid": "^9.0.1",
"validator": "^13.11.0",
"winston": "^3.11.0",
"zod": "^3.22.4",
"zustand": "^4.4.6"
},
"devDependencies": {
"@types/jest": "^27.5.0",
"@types/js-yaml": "^4.0.5",
"@types/node": "17.0.31",
"husky": "^8.0.1",
"jest": "^28.1.0",
"js-yaml": "^4.1.0",
"ts-jest": "^28.0.2",
"typescript": "4.6.4",
"@commitlint/cli": "^17.0.3",
"@commitlint/config-conventional": "^17.0.3",
"@commitlint/cz-commitlint": "^17.0.3",
"commitizen": "^4.2.4"
"@babel/core": "^7.23.2",
"@faker-js/faker": "^8.2.0",
"@playwright/test": "^1.39.0",
"@testing-library/dom": "^9.3.3",
"@testing-library/jest-dom": "^6.1.4",
"@testing-library/react": "^14.0.0",
"@testing-library/user-event": "^14.5.1",
"@total-typescript/shoehorn": "^0.1.1",
"@total-typescript/ts-reset": "^0.5.1",
"@types/fs-extra": "^11.0.4",
"@types/jest": "^29.5.11",
"@types/lodash.merge": "^4.6.8",
"@types/node": "20.8.10",
"@types/pg": "^8.10.7",
"@types/react": "18.2.39",
"@types/react-dom": "18.2.14",
"@types/semver": "^7.5.4",
"@types/uuid": "^9.0.6",
"@types/validator": "^13.11.5",
"@typescript-eslint/eslint-plugin": "^6.13.1",
"@typescript-eslint/parser": "^6.10.0",
"@vitejs/plugin-react": "^4.1.1",
"@vitest/coverage-v8": "^0.34.6",
"dotenv-cli": "^7.3.0",
"eslint": "8.52.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-typescript": "^17.1.0",
"eslint-config-next": "14.0.3",
"eslint-config-prettier": "^9.0.0",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-import": "^2.29.0",
"eslint-plugin-jest": "^27.6.0",
"eslint-plugin-jest-dom": "^5.1.0",
"eslint-plugin-jsx-a11y": "^6.8.0",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-testing-library": "^6.1.0",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"knip": "^2.41.3",
"memfs": "^4.6.0",
"msw": "^1.3.2",
"next-router-mock": "^0.9.10",
"prettier": "^3.0.3",
"ts-jest": "^29.1.1",
"ts-node": "^10.9.1",
"tsx": "^3.14.0",
"typescript": "5.2.2",
"vite-tsconfig-paths": "^4.2.1",
"vitest": "^0.34.6",
"wait-for-expect": "^3.0.2"
},
"msw": {
"workerDirectory": "public"
},
"repository": {
"type": "git",
"url": "git+https://github.com/meienberger/runtipi.git"
"url": "git+https://github.com/runtipi/runtipi.git"
},
"author": "",
"license": "GNU General Public License v3.0",
"bugs": {
"url": "https://github.com/meienberger/runtipi/issues"
"url": "https://github.com/runtipi/runtipi/issues"
},
"homepage": "https://github.com/meienberger/runtipi#readme",
"dependencies": {},
"config": {
"commitizen": {
"path": "@commitlint/cz-commitlint"
}
"homepage": "https://github.com/runtipi/runtipi#readme",
"pnpm": {
"patchedDependencies": {}
}
}

13
packages/cli/.env.test Normal file
View file

@ -0,0 +1,13 @@
INTERNAL_IP=localhost
ARCHITECTURE=arm64
APPS_REPO_ID=repo-id
APPS_REPO_URL=https://test.com/test
ROOT_FOLDER_HOST=/runtipi
STORAGE_PATH=/runtipi
TIPI_VERSION=1
REDIS_PASSWORD=redis
POSTGRES_HOST=localhost
POSTGRES_DBNAME=postgres
POSTGRES_USERNAME=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_PORT=5433

View file

@ -0,0 +1 @@
.eslintrc.js

39
packages/cli/.eslintrc.js Normal file
View file

@ -0,0 +1,39 @@
module.exports = {
root: true,
plugins: ['@typescript-eslint', 'import'],
extends: ['plugin:@typescript-eslint/recommended', 'airbnb', 'airbnb-typescript', 'eslint:recommended', 'plugin:import/typescript', 'prettier'],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: './tsconfig.json',
tsconfigRootDir: __dirname,
},
rules: {
'import/prefer-default-export': 0,
'class-methods-use-this': 0,
'import/extensions': [
'error',
'ignorePackages',
{
'': 'never',
js: 'never',
jsx: 'never',
ts: 'never',
tsx: 'never',
},
],
'import/no-extraneous-dependencies': [
'error',
{
devDependencies: ['build.js', '**/*.test.{ts,tsx}', '**/mocks/**', '**/__mocks__/**', '**/*.setup.{ts,js}', '**/*.config.{ts,js}', '**/tests/**'],
},
],
'arrow-body-style': 0,
'no-underscore-dangle': 0,
'no-console': 0,
},
globals: {
NodeJS: true,
},
};

4
packages/cli/.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
dev
dist/
coverage/
assets/VERSION

View file

@ -0,0 +1,150 @@
version: '3.7'
services:
tipi-reverse-proxy:
container_name: tipi-reverse-proxy
image: traefik:v2.8
restart: unless-stopped
depends_on:
- tipi-dashboard
ports:
- ${NGINX_PORT:-80}:80
- ${NGINX_PORT_SSL:-443}:443
command: --providers.docker
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik:/root/.config
- ./traefik/shared:/shared
networks:
- tipi_main_network
tipi-db:
container_name: tipi-db
image: postgres:14
restart: unless-stopped
stop_grace_period: 1m
ports:
- ${POSTGRES_PORT:-5432}:5432
volumes:
- ./data/postgres:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_USER: tipi
POSTGRES_DB: tipi
healthcheck:
test: ['CMD-SHELL', 'pg_isready -d tipi -U tipi']
interval: 5s
timeout: 10s
retries: 120
networks:
- tipi_main_network
tipi-redis:
container_name: tipi-redis
image: redis:7.2.0
restart: unless-stopped
command: redis-server --requirepass ${REDIS_PASSWORD}
ports:
- 6379:6379
volumes:
- ./data/redis:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 10s
retries: 120
networks:
- tipi_main_network
tipi-worker:
container_name: tipi-worker
image: ghcr.io/runtipi/worker:${TIPI_VERSION}
restart: unless-stopped
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:3000/healthcheck']
interval: 5s
timeout: 10s
retries: 120
start_period: 5s
depends_on:
tipi-db:
condition: service_healthy
tipi-redis:
condition: service_healthy
env_file:
- .env
environment:
NODE_ENV: production
volumes:
# Core
- /proc:/host/proc
- /var/run/docker.sock:/var/run/docker.sock
# App
- ./.env:/app/.env
- ./state:/app/state
- ./repos:/app/repos
- ./apps:/app/apps
- ./logs:/app/logs
- ./traefik:/app/traefik
- ./user-config:/app/user-config
- ./media:/app/media
- ${STORAGE_PATH:-.}:/storage
networks:
- tipi_main_network
tipi-dashboard:
image: ghcr.io/runtipi/runtipi:${TIPI_VERSION}
restart: unless-stopped
container_name: tipi-dashboard
networks:
- tipi_main_network
depends_on:
tipi-db:
condition: service_healthy
tipi-redis:
condition: service_healthy
tipi-worker:
condition: service_healthy
volumes:
- ./.env:/runtipi/.env:ro
- ./state:/runtipi/state
- ./repos:/runtipi/repos:ro
- ./apps:/runtipi/apps
- ./logs:/app/logs
- ${STORAGE_PATH:-.}:/app/storage
env_file:
- .env
environment:
NODE_ENV: production
labels:
# Main
traefik.enable: true
traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: https
traefik.http.services.dashboard.loadbalancer.server.port: 3000
# Local ip
traefik.http.routers.dashboard.rule: PathPrefix("/")
traefik.http.routers.dashboard.service: dashboard
traefik.http.routers.dashboard.entrypoints: web
# Websecure
traefik.http.routers.dashboard-insecure.rule: Host(`${DOMAIN}`) && PathPrefix(`/`)
traefik.http.routers.dashboard-insecure.service: dashboard
traefik.http.routers.dashboard-insecure.entrypoints: web
traefik.http.routers.dashboard-insecure.middlewares: redirect-to-https
traefik.http.routers.dashboard-secure.rule: Host(`${DOMAIN}`) && PathPrefix(`/`)
traefik.http.routers.dashboard-secure.service: dashboard
traefik.http.routers.dashboard-secure.entrypoints: websecure
traefik.http.routers.dashboard-secure.tls.certresolver: myresolver
# Local domain
traefik.http.routers.dashboard-local-insecure.rule: Host(`${LOCAL_DOMAIN}`)
traefik.http.routers.dashboard-local-insecure.entrypoints: web
traefik.http.routers.dashboard-local-insecure.service: dashboard
traefik.http.routers.dashboard-local-insecure.middlewares: redirect-to-https
traefik.http.routers.dashboard-local.rule: Host(`${LOCAL_DOMAIN}`)
traefik.http.routers.dashboard-local.entrypoints: websecure
traefik.http.routers.dashboard-local.tls: true
traefik.http.routers.dashboard-local.service: dashboard
networks:
tipi_main_network:
driver: bridge
name: runtipi_tipi_main_network

21
packages/cli/build.js Normal file
View file

@ -0,0 +1,21 @@
const { build } = require('esbuild');
const commandArgs = process.argv.slice(2);
async function bundle() {
const start = Date.now();
const options = {
entryPoints: ['./src/index.ts'],
outfile: './dist/index.js',
platform: 'node',
target: 'node20',
bundle: true,
color: true,
sourcemap: commandArgs.includes('--sourcemap'),
};
await build({ ...options, minify: true });
console.log(`Build time: ${Date.now() - start}ms`);
}
bundle();

View file

@ -0,0 +1,5 @@
{
"watch": ["src"],
"exec": "NODE_ENV=development npx tsx ./src/index.ts watch",
"ext": "js ts"
}

60
packages/cli/package.json Normal file
View file

@ -0,0 +1,60 @@
{
"name": "@runtipi/cli",
"version": "2.1.0",
"description": "",
"main": "index.js",
"bin": "dist/index.js",
"scripts": {
"test": "dotenv -e .env.test vitest -- --coverage --watch=false --passWithNoTests",
"test:watch": "dotenv -e .env.test vitest",
"package": "npm run build && pkg package.json && chmod +x dist/bin/cli-x64 && chmod +x dist/bin/cli-arm64",
"package:m1": "npm run build && pkg package.json -t node20-darwin-arm64",
"set-version": "node -e \"require('fs').writeFileSync('assets/VERSION', process.argv[1])\"",
"build": "node build.js",
"build:meta": "esbuild ./src/index.ts --bundle --platform=node --target=node20 --outfile=dist/index.js --metafile=meta.json --analyze",
"dev": "dotenv -e ../../.env nodemon",
"lint": "eslint . --ext .ts",
"tsc": "tsc --noEmit",
"knip": "knip"
},
"pkg": {
"assets": "assets/**/*",
"targets": [
"node20-linux-x64",
"node20-linux-arm64"
],
"outputPath": "dist/bin"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@faker-js/faker": "^8.2.0",
"@types/cli-progress": "^3.11.5",
"@types/node": "20.8.10",
"dotenv-cli": "^7.3.0",
"esbuild": "^0.19.4",
"eslint-config-prettier": "^9.0.0",
"knip": "^2.41.3",
"memfs": "^4.6.0",
"nodemon": "^3.0.1",
"pkg": "^5.8.1",
"vite": "^4.5.0",
"vite-tsconfig-paths": "^4.2.1",
"vitest": "^0.34.6"
},
"dependencies": {
"@runtipi/shared": "workspace:^",
"axios": "^1.6.0",
"boxen": "^7.1.1",
"bullmq": "^4.13.0",
"chalk": "^5.3.0",
"cli-progress": "^3.12.0",
"cli-spinners": "^2.9.1",
"commander": "^11.1.0",
"dotenv": "^16.3.1",
"log-update": "^5.0.1",
"semver": "^7.5.4",
"zod": "^3.22.4"
}
}

View file

@ -0,0 +1,73 @@
import { Queue, QueueEvents } from 'bullmq';
import { SystemEvent, eventSchema } from '@runtipi/shared';
import { getEnv } from '@/utils/environment/environment';
import { logger } from '@/utils/logger/logger';
import { TerminalSpinner } from '@/utils/logger/terminal-spinner';
export class AppExecutors {
private readonly logger;
constructor() {
this.logger = logger;
}
private getQueue = () => {
const { redisPassword } = getEnv();
const queue = new Queue('events', { connection: { host: '127.0.0.1', port: 6379, password: redisPassword } });
const queueEvents = new QueueEvents('events', { connection: { host: '127.0.0.1', port: 6379, password: redisPassword } });
return { queue, queueEvents };
};
private generateJobId = (event: Record<string, unknown>) => {
const { appId, action } = event;
return `${appId}-${action}`;
};
/**
* Stops an app
* @param {string} appId - The id of the app to stop
*/
public stopApp = async (appId: string) => {
const spinner = new TerminalSpinner(`Stopping app ${appId}`);
spinner.start();
const jobid = this.generateJobId({ appId, action: 'stop' });
const { queue, queueEvents } = this.getQueue();
const event = { type: 'app', command: 'stop', appid: appId, form: {}, skipEnv: true } satisfies SystemEvent;
const job = await queue.add(jobid, eventSchema.parse(event));
const result = await job.waitUntilFinished(queueEvents, 1000 * 60 * 5);
await queueEvents.close();
await queue.close();
if (!result?.success) {
this.logger.error(result?.message);
spinner.fail(`Failed to stop app ${appId} see logs for more details (logs/error.log)`);
} else {
spinner.done(`App ${appId} stopped`);
}
};
public startApp = async (appId: string) => {
const spinner = new TerminalSpinner(`Starting app ${appId}`);
spinner.start();
const jobid = this.generateJobId({ appId, action: 'start' });
const { queue, queueEvents } = this.getQueue();
const event = { type: 'app', command: 'start', appid: appId, form: {}, skipEnv: true } satisfies SystemEvent;
const job = await queue.add(jobid, eventSchema.parse(event));
const result = await job.waitUntilFinished(queueEvents, 1000 * 60 * 5);
await queueEvents.close();
await queue.close();
if (!result.success) {
spinner.fail(`Failed to start app ${appId} see logs for more details (logs/error.log)`);
} else {
spinner.done(`App ${appId} started`);
}
};
}

View file

@ -0,0 +1,2 @@
export { AppExecutors } from './app/app.executors';
export { SystemExecutors } from './system/system.executors';

View file

@ -0,0 +1,322 @@
/* eslint-disable no-restricted-syntax */
/* eslint-disable no-await-in-loop */
import fs from 'fs';
import cliProgress from 'cli-progress';
import semver from 'semver';
import axios from 'axios';
import boxen from 'boxen';
import path from 'path';
import { spawn } from 'child_process';
import { Stream } from 'stream';
import dotenv from 'dotenv';
import { pathExists } from '@runtipi/shared';
import { AppExecutors } from '../app/app.executors';
import { copySystemFiles, generateSystemEnvFile } from './system.helpers';
import { TerminalSpinner } from '@/utils/logger/terminal-spinner';
import { getEnv } from '@/utils/environment/environment';
import { logger } from '@/utils/logger/logger';
import { execAsync } from '@/utils/exec-async/execAsync';
export class SystemExecutors {
private readonly rootFolder: string;
private readonly envFile: string;
private readonly logger;
constructor() {
this.rootFolder = process.cwd();
this.logger = logger;
this.envFile = path.join(this.rootFolder, '.env');
}
private handleSystemError = (err: unknown) => {
if (err instanceof Error) {
this.logger.error(`An error occurred: ${err.message}`);
return { success: false, message: err.message };
}
this.logger.error(`An error occurred: ${err}`);
return { success: false, message: `An error occurred: ${err}` };
};
public cleanLogs = async () => {
try {
await this.logger.flush();
this.logger.info('Logs cleaned successfully');
return { success: true, message: '' };
} catch (e) {
return this.handleSystemError(e);
}
};
/**
* This method will stop Tipi
* It will stop all the apps and then stop the main containers.
*/
public stop = async () => {
const spinner = new TerminalSpinner('Stopping Tipi...');
try {
if (await pathExists(path.join(this.rootFolder, 'apps'))) {
const apps = await fs.promises.readdir(path.join(this.rootFolder, 'apps'));
const appExecutor = new AppExecutors();
// eslint-disable-next-line no-restricted-syntax
for (const app of apps) {
spinner.setMessage(`Stopping ${app}...`);
spinner.start();
await appExecutor.stopApp(app);
spinner.done(`${app} stopped`);
}
}
spinner.setMessage('Stopping containers...');
spinner.start();
this.logger.info('Stopping main containers...');
await execAsync('docker compose down --remove-orphans --rmi local');
spinner.done('Tipi successfully stopped');
return { success: true, message: 'Tipi stopped' };
} catch (e) {
spinner.fail('Tipi failed to stop. Please check the logs for more details (logs/error.log)');
return this.handleSystemError(e);
}
};
/**
* This method will start Tipi.
* It will copy the system files, generate the system env file, pull the images and start the containers.
*/
public start = async () => {
const spinner = new TerminalSpinner('Starting Tipi...');
try {
await this.logger.flush();
// Check if user is in docker group
spinner.setMessage('Checking docker permissions...');
spinner.start();
const { stdout: dockerVersion } = await execAsync('docker --version');
if (!dockerVersion) {
spinner.fail('Your user is not allowed to run docker commands. Please add your user to the docker group or run Tipi as root.');
return { success: false, message: 'You need to be in the docker group to run Tipi' };
}
spinner.done('User allowed to run docker commands');
spinner.setMessage('Copying system files...');
spinner.start();
this.logger.info('Copying system files...');
await copySystemFiles();
spinner.done('System files copied');
spinner.setMessage('Generating system env file...');
spinner.start();
this.logger.info('Generating system env file...');
const envMap = await generateSystemEnvFile();
spinner.done('System env file generated');
// Reload env variables after generating the env file
this.logger.info('Reloading env variables...');
dotenv.config({ path: this.envFile, override: true });
// Pull images
spinner.setMessage('Pulling images...');
spinner.start();
this.logger.info('Pulling new images...');
await execAsync(`docker compose --env-file ${this.envFile} pull`);
spinner.done('Images pulled');
// Start containers
spinner.setMessage('Starting containers...');
spinner.start();
this.logger.info('Starting containers...');
await execAsync(`docker compose --env-file ${this.envFile} up --detach --remove-orphans --build`);
spinner.done('Containers started');
console.log(
boxen(
`Visit: http://${envMap.get('INTERNAL_IP')}:${envMap.get(
'NGINX_PORT',
)} to access the dashboard\n\nFind documentation and guides at: https://runtipi.io\n\nTipi is entierly written in TypeScript and we are looking for contributors!`,
{
title: 'Tipi successfully started 🎉',
titleAlignment: 'center',
textAlignment: 'center',
padding: 1,
borderStyle: 'double',
borderColor: 'green',
width: 80,
margin: { top: 1 },
},
),
);
return { success: true, message: 'Tipi started' };
} catch (e) {
spinner.fail('Tipi failed to start. Please check the logs for more details (logs/error.log)');
return this.handleSystemError(e);
}
};
/**
* This method will stop and start Tipi.
*/
public restart = async () => {
try {
await this.stop();
await this.start();
return { success: true, message: '' };
} catch (e) {
return this.handleSystemError(e);
}
};
/**
* This method will create a password change request file in the state folder.
*/
public resetPassword = async () => {
try {
const { rootFolderHost } = getEnv();
await fs.promises.writeFile(path.join(rootFolderHost, 'state', 'password-change-request'), '');
return { success: true, message: '' };
} catch (e) {
return this.handleSystemError(e);
}
};
/**
* Given a target version, this method will download the corresponding release from GitHub and replace the current
* runtipi-cli binary with the new one.
* @param {string} target
*/
public update = async (target: string) => {
const spinner = new TerminalSpinner('Evaluating target version...');
try {
spinner.start();
let targetVersion = target;
this.logger.info(`Updating Tipi to version ${targetVersion}`);
if (!targetVersion || targetVersion === 'latest') {
spinner.setMessage('Fetching latest version...');
const { data } = await axios.get<{ tag_name: string }>('https://api.github.com/repos/runtipi/runtipi/releases/latest');
this.logger.info(`Getting latest version from GitHub: ${data.tag_name}`);
targetVersion = data.tag_name;
}
if (!semver.valid(targetVersion)) {
this.logger.error(`Invalid version: ${targetVersion}`);
spinner.fail(`Invalid version: ${targetVersion}`);
throw new Error(`Invalid version: ${targetVersion}`);
}
const { rootFolderHost, arch } = getEnv();
let assetName = 'runtipi-cli-linux-x64';
if (arch === 'arm64') {
assetName = 'runtipi-cli-linux-arm64';
}
const fileName = `runtipi-cli-${targetVersion}`;
const savePath = path.join(rootFolderHost, fileName);
const fileUrl = `https://github.com/runtipi/runtipi/releases/download/${targetVersion}/${assetName}`;
this.logger.info(`Downloading Tipi ${targetVersion} from ${fileUrl}`);
spinner.done(`Target version: ${targetVersion}`);
spinner.done(`Download url: ${fileUrl}`);
await this.stop();
this.logger.info(`Downloading Tipi ${targetVersion}...`);
const bar = new cliProgress.SingleBar({}, cliProgress.Presets.rect);
bar.start(100, 0);
await new Promise((resolve, reject) => {
axios<Stream>({
method: 'GET',
url: fileUrl,
responseType: 'stream',
onDownloadProgress: (progress) => {
this.logger.info(`Download progress: ${Math.round((progress.loaded / (progress.total || 0)) * 100)}%`);
bar.update(Math.round((progress.loaded / (progress.total || 0)) * 100));
},
}).then((response) => {
const writer = fs.createWriteStream(savePath);
response.data.pipe(writer);
writer.on('error', (err) => {
bar.stop();
this.logger.error(`Failed to download Tipi: ${err}`);
spinner.fail(`\nFailed to download Tipi ${targetVersion}`);
reject(err);
});
writer.on('finish', () => {
this.logger.info('Download complete');
bar.stop();
resolve('');
});
});
}).catch((e) => {
this.logger.error(`Failed to download Tipi: ${e}`);
spinner.fail(`\nFailed to download Tipi ${targetVersion}. Please make sure this version exists on GitHub.`);
throw e;
});
spinner.done(`Tipi ${targetVersion} downloaded`);
this.logger.info(`Changing permissions on ${savePath}`);
await fs.promises.chmod(savePath, 0o755);
spinner.setMessage('Replacing old cli...');
spinner.start();
// Delete old cli
if (await pathExists(path.join(rootFolderHost, 'runtipi-cli'))) {
this.logger.info('Deleting old cli...');
await fs.promises.unlink(path.join(rootFolderHost, 'runtipi-cli'));
}
// Delete VERSION file
if (await pathExists(path.join(rootFolderHost, 'VERSION'))) {
this.logger.info('Deleting VERSION file...');
await fs.promises.unlink(path.join(rootFolderHost, 'VERSION'));
}
// Rename downloaded cli to runtipi-cli
this.logger.info('Renaming new cli to runtipi-cli...');
await fs.promises.rename(savePath, path.join(rootFolderHost, 'runtipi-cli'));
spinner.done('Old cli replaced');
// Wait for 3 second to make sure the old cli is gone
// eslint-disable-next-line no-promise-executor-return
await new Promise((resolve) => setTimeout(resolve, 3000));
this.logger.info('Starting new cli...');
const childProcess = spawn('./runtipi-cli', [process.argv[1] as string, 'start']);
childProcess.stdout.on('data', (data) => {
process.stdout.write(data);
});
childProcess.stderr.on('data', (data) => {
process.stderr.write(data);
});
spinner.done(`Tipi ${targetVersion} successfully updated. Tipi is now starting, wait for this process to finish...`);
return { success: true, message: 'Tipi updated' };
} catch (e) {
spinner.fail('Tipi update failed, see logs for more details (logs/error.log)');
return this.handleSystemError(e);
}
};
}

View file

@ -0,0 +1,182 @@
import crypto from 'crypto';
import fs from 'fs';
import path from 'path';
import os from 'os';
import { envMapToString, envStringToMap, pathExists, settingsSchema } from '@runtipi/shared';
import { logger } from '@/utils/logger/logger';
type EnvKeys =
| 'APPS_REPO_ID'
| 'APPS_REPO_URL'
| 'TZ'
| 'INTERNAL_IP'
| 'DNS_IP'
| 'ARCHITECTURE'
| 'TIPI_VERSION'
| 'JWT_SECRET'
| 'ROOT_FOLDER_HOST'
| 'NGINX_PORT'
| 'NGINX_PORT_SSL'
| 'DOMAIN'
| 'STORAGE_PATH'
| 'POSTGRES_PORT'
| 'POSTGRES_HOST'
| 'POSTGRES_DBNAME'
| 'POSTGRES_PASSWORD'
| 'POSTGRES_USERNAME'
| 'REDIS_HOST'
| 'REDIS_PASSWORD'
| 'LOCAL_DOMAIN'
| 'DEMO_MODE'
| 'GUEST_DASHBOARD'
| 'TIPI_GID'
| 'TIPI_UID'
// eslint-disable-next-line @typescript-eslint/ban-types
| (string & {});
/**
* Reads and returns the generated seed
*/
const getSeed = async () => {
const rootFolder = process.cwd();
const seedFilePath = path.join(rootFolder, 'state', 'seed');
if (!(await pathExists(seedFilePath))) {
throw new Error('Seed file not found');
}
const seed = await fs.promises.readFile(seedFilePath, 'utf-8');
return seed;
};
/**
* Derives a new entropy value from the provided entropy and the seed
* @param {string} entropy - The entropy value to derive from
*/
const deriveEntropy = async (entropy: string) => {
const seed = await getSeed();
const hmac = crypto.createHmac('sha256', seed);
hmac.update(entropy);
return hmac.digest('hex');
};
/**
* Generates a random seed if it does not exist yet
*/
const generateSeed = async (rootFolder: string) => {
if (!(await pathExists(path.join(rootFolder, 'state', 'seed')))) {
const randomBytes = crypto.randomBytes(32);
const seed = randomBytes.toString('hex');
await fs.promises.writeFile(path.join(rootFolder, 'state', 'seed'), seed);
}
};
/**
* Will return the first internal IP address of the current system
*/
const getInternalIp = () => {
const interfaces = os.networkInterfaces();
for (let i = 0; i < Object.keys(interfaces).length; i += 1) {
const devName = Object.keys(interfaces)[i];
const iface = interfaces[devName || ''];
const length = iface?.length || 0;
for (let j = 0; j < length; j += 1) {
const alias = iface?.[j];
if (alias && alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) return alias.address;
}
}
return '0.0.0.0';
};
/**
* Returns the architecture of the current system
*/
const getArchitecture = () => {
const arch = os.arch();
if (arch === 'arm64') return 'arm64';
if (arch === 'x64') return 'amd64';
throw new Error(`Unsupported architecture: ${arch}`);
};
/**
* Generates a valid .env file from the settings.json file
*/
export const generateSystemEnvFile = async () => {
const rootFolder = process.cwd();
await fs.promises.mkdir(path.join(rootFolder, 'state'), { recursive: true });
const settingsFilePath = path.join(rootFolder, 'state', 'settings.json');
const envFilePath = path.join(rootFolder, '.env');
if (!(await pathExists(envFilePath))) {
await fs.promises.writeFile(envFilePath, '');
}
const envFile = await fs.promises.readFile(envFilePath, 'utf-8');
const envMap: Map<EnvKeys, string> = envStringToMap(envFile);
if (!(await pathExists(settingsFilePath))) {
await fs.promises.writeFile(settingsFilePath, JSON.stringify({}));
}
const settingsFile = await fs.promises.readFile(settingsFilePath, 'utf-8');
const settings = settingsSchema.safeParse(JSON.parse(settingsFile));
if (!settings.success) {
throw new Error(`Invalid settings.json file: ${settings.error.message}`);
}
await generateSeed(rootFolder);
const { data } = settings;
const postgresPassword = envMap.get('POSTGRES_PASSWORD') || (await deriveEntropy('postgres_password'));
const redisPassword = envMap.get('REDIS_PASSWORD') || (await deriveEntropy('redis_password'));
const version = await fs.promises.readFile(path.join(rootFolder, 'VERSION'), 'utf-8');
envMap.set('INTERNAL_IP', data.listenIp || getInternalIp());
envMap.set('ARCHITECTURE', getArchitecture());
envMap.set('TIPI_VERSION', version);
envMap.set('ROOT_FOLDER_HOST', rootFolder);
envMap.set('NGINX_PORT', String(data.port || 80));
envMap.set('NGINX_PORT_SSL', String(data.sslPort || 443));
envMap.set('STORAGE_PATH', data.storagePath || rootFolder);
envMap.set('POSTGRES_PASSWORD', postgresPassword);
envMap.set('POSTGRES_PORT', String(data.postgresPort || 5432));
envMap.set('REDIS_HOST', 'tipi-redis');
envMap.set('REDIS_PASSWORD', redisPassword);
envMap.set('NODE_ENV', 'production');
envMap.set('DOMAIN', data.domain || 'example.com');
envMap.set('LOCAL_DOMAIN', data.localDomain || 'tipi.lan');
await fs.promises.writeFile(envFilePath, envMapToString(envMap));
return envMap;
};
/**
* Copies the system files from the assets folder to the current working directory
*/
export const copySystemFiles = async () => {
// Remove old unused files
const assetsFolder = path.join('/snapshot', 'runtipi', 'packages', 'cli', 'assets');
// Copy docker-compose.yml file
logger.info('Copying file docker-compose.yml');
await fs.promises.copyFile(path.join(assetsFolder, 'docker-compose.yml'), path.join(process.cwd(), 'docker-compose.yml'));
// Copy VERSION file
logger.info('Copying file VERSION');
await fs.promises.copyFile(path.join(assetsFolder, 'VERSION'), path.join(process.cwd(), 'VERSION'));
};

92
packages/cli/src/index.ts Normal file
View file

@ -0,0 +1,92 @@
#!/usr/bin/env node
import { program } from 'commander';
import chalk from 'chalk';
import { description, version } from '../package.json';
import { AppExecutors, SystemExecutors } from './executors';
const main = async () => {
program.description(description).version(version);
program.name('./runtipi-cli').usage('<command> [options]');
program
.command('start')
.description('Start tipi')
.addHelpText('after', '\nExample call: sudo ./runtipi-cli start')
.action(async () => {
const systemExecutors = new SystemExecutors();
await systemExecutors.start();
});
program
.command('stop')
.description('Stop tipi')
.action(async () => {
const systemExecutors = new SystemExecutors();
await systemExecutors.stop();
});
program
.command('restart')
.description('Restart tipi')
.action(async () => {
const systemExecutors = new SystemExecutors();
await systemExecutors.restart();
});
program
.command('update')
.description('Update tipi')
.argument('<target>', 'Target to update')
.action(async (target) => {
const systemExecutors = new SystemExecutors();
await systemExecutors.update(target);
});
program
.command('reset-password')
.description('Reset password')
.action(async () => {
const systemExecutors = new SystemExecutors();
await systemExecutors.resetPassword();
console.log(chalk.green('✓'), 'Password reset request created. Head back to the dashboard to set a new password.');
});
program
.command('clean-logs')
.description('Clean logs')
.action(async () => {
const systemExecutors = new SystemExecutors();
await systemExecutors.cleanLogs();
});
// Start app: ./cli app start <app>
// Stop app: ./cli app stop <app>
program
.command('app [command] <app>')
.addHelpText('after', '\nExample call: sudo ./runtipi-cli app start <app>')
.description('App management')
.action(async (command, app) => {
const appExecutors = new AppExecutors();
switch (command) {
case 'start':
await appExecutors.startApp(app);
break;
case 'stop':
await appExecutors.stopApp(app);
break;
default:
console.log(chalk.red('✗'), 'Unknown command');
}
});
program.parse(process.argv);
};
try {
console.log(chalk.green('Welcome to Tipi CLI ✨'));
main();
} catch (e) {
console.error('An error occurred:', e);
}

View file

@ -0,0 +1,44 @@
import { z } from 'zod';
import dotenv from 'dotenv';
if (process.env.NODE_ENV === 'development') {
dotenv.config({ path: '.env.dev', override: true });
} else {
dotenv.config({ override: true });
}
const environmentSchema = z
.object({
STORAGE_PATH: z.string(),
ROOT_FOLDER_HOST: z.string(),
APPS_REPO_ID: z.string(),
ARCHITECTURE: z.enum(['arm64', 'amd64']),
INTERNAL_IP: z.string().ip().or(z.literal('localhost')),
TIPI_VERSION: z.string(),
REDIS_PASSWORD: z.string(),
POSTGRES_PORT: z.string(),
POSTGRES_USERNAME: z.string(),
POSTGRES_PASSWORD: z.string(),
POSTGRES_DBNAME: z.string(),
})
.transform((env) => {
const { STORAGE_PATH, ARCHITECTURE, ROOT_FOLDER_HOST, APPS_REPO_ID, INTERNAL_IP, TIPI_VERSION, REDIS_PASSWORD, POSTGRES_DBNAME, POSTGRES_PASSWORD, POSTGRES_USERNAME, POSTGRES_PORT, ...rest } =
env;
return {
storagePath: STORAGE_PATH,
rootFolderHost: ROOT_FOLDER_HOST,
appsRepoId: APPS_REPO_ID,
arch: ARCHITECTURE,
tipiVersion: TIPI_VERSION,
internalIp: INTERNAL_IP,
redisPassword: REDIS_PASSWORD,
postgresPort: POSTGRES_PORT,
postgresUsername: POSTGRES_USERNAME,
postgresPassword: POSTGRES_PASSWORD,
postgresDatabase: POSTGRES_DBNAME,
...rest,
};
});
export const getEnv = () => environmentSchema.parse(process.env);

View file

@ -0,0 +1,19 @@
import { exec } from 'child_process';
import { promisify } from 'util';
type ExecAsyncParams = [command: string];
type ExecResult = { stdout: string; stderr: string };
export const execAsync = async (...args: ExecAsyncParams): Promise<ExecResult> => {
try {
const { stdout, stderr } = await promisify(exec)(...args);
return { stdout, stderr };
} catch (error) {
if (error instanceof Error) {
return { stderr: error.message, stdout: '' };
}
return { stderr: String(error), stdout: '' };
}
};

View file

@ -0,0 +1,4 @@
import { FileLogger } from '@runtipi/shared';
import path from 'node:path';
export const logger = new FileLogger('cli', path.join(process.cwd(), 'logs'));

View file

@ -0,0 +1,61 @@
import logUpdate from 'log-update';
import chalk from 'chalk';
import { dots } from 'cli-spinners';
export class TerminalSpinner {
message: string;
frame = 0;
interval: NodeJS.Timeout | null = null;
start() {
this.interval = setInterval(() => {
// eslint-disable-next-line no-plusplus
this.frame = ++this.frame % dots.frames.length;
logUpdate(`${dots.frames[this.frame]} ${this.message}`);
}, dots.interval);
}
constructor(message: string) {
this.message = message;
}
setMessage(message: string) {
this.message = message;
}
done(message?: string) {
if (this.interval) {
clearInterval(this.interval);
}
if (message) {
logUpdate(chalk.green('✓'), message);
} else {
logUpdate.clear();
}
logUpdate.done();
}
fail(message?: string) {
if (this.interval) {
clearInterval(this.interval);
}
if (message) {
logUpdate(chalk.red('✗'), message);
} else {
logUpdate.clear();
}
logUpdate.done();
}
log(message: string) {
logUpdate(message);
logUpdate.done();
}
}

View file

@ -0,0 +1,40 @@
import { faker } from '@faker-js/faker';
import fs from 'fs';
import { APP_CATEGORIES, AppInfo, appInfoSchema } from '@runtipi/shared';
import { getEnv } from '@/utils/environment/environment';
export const createAppConfig = (props?: Partial<AppInfo>, isInstalled = true) => {
const { rootFolderHost, storagePath } = getEnv();
const appInfo = appInfoSchema.parse({
id: faker.string.alphanumeric(32),
available: true,
port: faker.number.int({ min: 30, max: 65535 }),
name: faker.string.alphanumeric(32),
description: faker.string.alphanumeric(32),
tipi_version: 1,
short_desc: faker.string.alphanumeric(32),
author: faker.string.alphanumeric(32),
source: faker.internet.url(),
categories: [APP_CATEGORIES.AUTOMATION],
...props,
});
const mockFiles: Record<string, string | string[]> = {};
mockFiles[`${rootFolderHost}/.env`] = 'TEST=test';
mockFiles[`${rootFolderHost}/repos/repo-id/apps/${appInfo.id}/config.json`] = JSON.stringify(appInfoSchema.parse(appInfo));
mockFiles[`${rootFolderHost}/repos/repo-id/apps/${appInfo.id}/docker-compose.yml`] = 'compose';
mockFiles[`${rootFolderHost}/repos/repo-id/apps/${appInfo.id}/metadata/description.md`] = 'md desc';
if (isInstalled) {
mockFiles[`${rootFolderHost}/apps/${appInfo.id}/config.json`] = JSON.stringify(appInfoSchema.parse(appInfo));
mockFiles[`${rootFolderHost}/apps/${appInfo.id}/docker-compose.yml`] = 'compose';
mockFiles[`${rootFolderHost}/apps/${appInfo.id}/metadata/description.md`] = 'md desc';
mockFiles[`${storagePath}/app-data/${appInfo.id}/data/test.txt`] = 'data';
}
// @ts-expect-error - custom mock method
fs.__applyMockFiles(mockFiles);
return appInfo;
};

View file

@ -0,0 +1,41 @@
import { fs, vol } from 'memfs';
const copyFolderRecursiveSync = (src: string, dest: string) => {
const exists = vol.existsSync(src);
const stats = vol.statSync(src);
const isDirectory = exists && stats.isDirectory();
if (isDirectory) {
vol.mkdirSync(dest, { recursive: true });
vol.readdirSync(src).forEach((childItemName) => {
copyFolderRecursiveSync(`${src}/${childItemName}`, `${dest}/${childItemName}`);
});
} else {
vol.copyFileSync(src, dest);
}
};
export const fsMock = {
default: {
...fs,
promises: {
...fs.promises,
cp: copyFolderRecursiveSync,
},
copySync: (src: string, dest: string) => {
copyFolderRecursiveSync(src, dest);
},
__resetAllMocks: () => {
vol.reset();
},
__applyMockFiles: (newMockFiles: Record<string, string>) => {
// Create folder tree
vol.fromJSON(newMockFiles, 'utf8');
},
__createMockFiles: (newMockFiles: Record<string, string>) => {
vol.reset();
// Create folder tree
vol.fromJSON(newMockFiles, 'utf8');
},
__printVol: () => console.log(vol.toTree()),
},
};

View file

@ -0,0 +1,34 @@
import fs from 'fs';
import path from 'path';
import { vi, beforeEach } from 'vitest';
import { getEnv } from '@/utils/environment/environment';
vi.mock('@runtipi/shared', async (importOriginal) => {
const mod = (await importOriginal()) as object;
return {
...mod,
createLogger: vi.fn().mockReturnValue({
info: vi.fn(),
error: vi.fn(),
}),
};
});
vi.mock('fs', async () => {
const { fsMock } = await import('@/tests/mocks/fs');
return {
...fsMock,
};
});
beforeEach(async () => {
// @ts-expect-error - custom mock method
fs.__resetAllMocks();
const { rootFolderHost, appsRepoId } = getEnv();
await fs.promises.mkdir(path.join(rootFolderHost, 'state'), { recursive: true });
await fs.promises.writeFile(path.join(rootFolderHost, 'state', 'seed'), 'seed');
await fs.promises.mkdir(path.join(rootFolderHost, 'repos', appsRepoId, 'apps'), { recursive: true });
});

View file

@ -0,0 +1,52 @@
{
"compilerOptions": {
"target": "es2017",
"baseUrl": ".",
"outDir": "./dist",
"paths": {
"@/utils/*": [
"./src/utils/*"
],
"@/executors": [
"./src/executors"
],
"@/tests/*": [
"./tests/*"
],
},
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "CommonJS",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"incremental": true,
"strictNullChecks": true,
"allowSyntheticDefaultImports": true,
"noUncheckedIndexedAccess": true,
"types": [
"node"
],
"experimentalDecorators": true
},
"include": [
"**/*.ts",
"**/*.tsx",
"**/*.mjs",
"**/*.js",
"**/*.jsx"
],
"exclude": [
"node_modules"
]
}

View file

@ -0,0 +1,10 @@
import { defineConfig } from 'vitest/config';
import tsconfigPaths from 'vite-tsconfig-paths';
export default defineConfig({
plugins: [tsconfigPaths()],
test: {
setupFiles: ['./tests/vite.setup.ts'],
coverage: { all: true, reporter: ['lcov', 'text-summary'] },
},
});

View file

@ -1,5 +0,0 @@
node_modules/
.next/
dist/
sessions/
logs/

View file

@ -1,20 +0,0 @@
module.exports = {
extends: ['next/core-web-vitals', 'airbnb-typescript', 'eslint:recommended', 'plugin:import/typescript'],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: './tsconfig.json',
tsconfigRootDir: __dirname,
},
plugins: ['@typescript-eslint', 'import'],
rules: {
'arrow-body-style': 0,
'no-restricted-exports': 0,
'max-len': [1, { code: 200 }],
'import/extensions': ['error', 'ignorePackages', { js: 'never', jsx: 'never', ts: 'never', tsx: 'never' }],
},
globals: {
JSX: true,
},
};

View file

@ -1,35 +0,0 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# local env files
.env*.local
# vercel
.vercel
# typescript
*.tsbuildinfo

View file

@ -1,34 +0,0 @@
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
## Getting Started
First, run the development server:
```bash
npm run dev
# or
yarn dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file.
[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.
The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
## Learn More
To learn more about Next.js, take a look at the following resources:
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
## Deploy on Vercel
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.

View file

@ -1,9 +0,0 @@
overwrite: true
schema: "http://localhost:3001/graphql"
documents: "src/graphql/**/*.graphql"
generates:
src/generated/graphql.tsx:
plugins:
- "typescript"
- "typescript-operations"
- "typescript-react-apollo"

View file

@ -1,12 +0,0 @@
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
module.exports = {
preset: 'ts-jest',
verbose: true,
// testEnvironment: 'node',
testMatch: ['**/__tests__/**/*.test.ts'],
// setupFiles: ['<rootDir>/tests/dotenv-config.ts'],
collectCoverage: true,
collectCoverageFrom: ['src/**/*.{ts,tsx}'],
// coverageProvider: 'v8',
passWithNoTests: true,
};

View file

@ -1,18 +0,0 @@
/** @type {import('next').NextConfig} */
const { NODE_ENV, INTERNAL_IP } = process.env;
const nextConfig = {
webpackDevMiddleware: (config) => {
config.watchOptions = {
poll: 1000,
aggregateTimeout: 300,
};
return config;
},
reactStrictMode: true,
env: {
INTERNAL_IP: INTERNAL_IP,
},
};
module.exports = nextConfig;

View file

@ -1,67 +0,0 @@
{
"name": "dashboard",
"version": "0.5.0",
"private": true,
"scripts": {
"test": "jest --colors",
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint",
"lint:fix": "next lint --fix",
"gen": "graphql-codegen --config codegen.yml"
},
"dependencies": {
"@apollo/client": "^3.6.8",
"@chakra-ui/react": "^2.1.2",
"@emotion/react": "^11",
"@emotion/styled": "^11",
"@fontsource/open-sans": "^4.5.8",
"axios": "^0.26.1",
"clsx": "^1.1.1",
"final-form": "^4.20.6",
"framer-motion": "^6",
"graphql": "^15.8.0",
"graphql-tag": "^2.12.6",
"immer": "^9.0.12",
"js-cookie": "^3.0.1",
"next": "12.1.6",
"react": "18.1.0",
"react-dom": "18.1.0",
"react-final-form": "^6.5.9",
"react-icons": "^4.3.1",
"react-markdown": "^8.0.3",
"react-select": "^5.3.2",
"remark-breaks": "^3.0.2",
"remark-gfm": "^3.0.1",
"remark-mdx": "^2.1.1",
"swr": "^1.3.0",
"systeminformation": "^5.11.9",
"tslib": "^2.4.0",
"validator": "^13.7.0",
"zustand": "^3.7.2"
},
"devDependencies": {
"@babel/core": "^7.0.0",
"@graphql-codegen/cli": "^2.6.2",
"@graphql-codegen/typescript": "^2.5.1",
"@graphql-codegen/typescript-operations": "^2.4.2",
"@graphql-codegen/typescript-react-apollo": "^3.2.16",
"@types/js-cookie": "^3.0.2",
"@types/node": "17.0.31",
"@types/react": "18.0.8",
"@types/react-dom": "18.0.3",
"@types/react-slick": "^0.23.8",
"@types/validator": "^13.7.2",
"@typescript-eslint/eslint-plugin": "^5.18.0",
"@typescript-eslint/parser": "^5.0.0",
"autoprefixer": "^10.4.4",
"eslint": "8.12.0",
"eslint-config-airbnb-typescript": "^17.0.0",
"eslint-config-next": "12.1.4",
"eslint-plugin-import": "^2.25.3",
"postcss": "^8.4.12",
"tailwindcss": "^3.0.23",
"typescript": "4.6.4"
}
}

View file

@ -1,6 +0,0 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

View file

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/mstile-150x150.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>
</browserconfig>

Some files were not shown because too many files have changed in this diff Show more