Compare commits

..

34 Commits

Author SHA1 Message Date
shamoon
37f836db2c Merge branch 'dev' 2024-11-03 05:28:57 -08:00
shamoon
d01192b81e Fix: fix dark mode icon blend mode in 2.13.3 (#8166) 2024-11-03 05:27:20 -08:00
shamoon
9655c89b69 Bump version to 2.13.4 2024-11-03 05:08:08 -08:00
shamoon
ccf1430f82 Merge branch 'dev' 2024-11-03 05:07:43 -08:00
shamoon
c2509ea439 Fix: fix clipped popup preview in 2.13.3 (#8165) 2024-11-03 05:06:39 -08:00
github-actions[bot]
3cd9bcebe6 Changelog v2.13.3 - GHA (#8160)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-11-02 22:47:15 -07:00
shamoon
2368fd15cb Bump version to 2.13.3 2024-11-02 22:19:03 -07:00
shamoon
cc35b321c5 Merge branch 'dev' 2024-11-02 22:18:35 -07:00
github-actions[bot]
1ddbc31c59 New Crowdin translations by GitHub Action (#8159)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-11-02 21:58:06 -07:00
github-actions[bot]
6ae8ab4af3 New Crowdin translations by GitHub Action (#8130)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-11-02 21:56:35 -07:00
shamoon
37dc791301 Fix: fix auto-clean PDFs, create parent dir for storing unmodified original (#8157) 2024-11-02 20:54:28 -07:00
Yichi Yang
5fed311ffc Fix: correctly handle "exists, false" in custom field query filter (#8158) 2024-11-02 18:40:50 -07:00
dependabot[bot]
e74f182662 Chore(deps-dev): Bump the frontend-eslint-dependencies group (#8145)
Bumps the frontend-eslint-dependencies group in /src-ui with 4 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser), [@typescript-eslint/utils](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/utils) and [eslint](https://github.com/eslint/eslint).


Updates `@typescript-eslint/eslint-plugin` from 8.8.0 to 8.12.2
- [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/v8.12.2/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.8.0 to 8.12.2
- [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/v8.12.2/packages/parser)

Updates `@typescript-eslint/utils` from 8.8.0 to 8.12.2
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/utils/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.12.2/packages/utils)

Updates `eslint` from 9.11.1 to 9.14.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/v9.11.1...v9.14.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-02 02:44:00 +00:00
dependabot[bot]
3f094c88bd Chore(deps-dev): Bump @types/node from 22.7.4 to 22.8.6 in /src-ui (#8148)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.7.4 to 22.8.6.
- [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>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 23:44:28 +00:00
dependabot[bot]
631eaa2109 Chore(deps-dev): Bump @playwright/test from 1.47.2 to 1.48.2 in /src-ui (#8147)
Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.47.2 to 1.48.2.
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](https://github.com/microsoft/playwright/compare/v1.47.2...v1.48.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 23:35:04 +00:00
dependabot[bot]
27fadf6963 Chore(deps): Bump uuid from 10.0.0 to 11.0.2 in /src-ui (#8146)
Bumps [uuid](https://github.com/uuidjs/uuid) from 10.0.0 to 11.0.2.
- [Release notes](https://github.com/uuidjs/uuid/releases)
- [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/uuidjs/uuid/compare/v10.0.0...v11.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 23:25:07 +00:00
dependabot[bot]
d53b300a7f Chore(deps): Bump tslib from 2.7.0 to 2.8.1 in /src-ui (#8149)
Bumps [tslib](https://github.com/Microsoft/tslib) from 2.7.0 to 2.8.1.
- [Release notes](https://github.com/Microsoft/tslib/releases)
- [Commits](https://github.com/Microsoft/tslib/compare/v2.7.0...v2.8.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 23:13:13 +00:00
dependabot[bot]
6cc626fd86 Chore(deps-dev): Bump @codecov/webpack-plugin in /src-ui (#8150)
Bumps @codecov/webpack-plugin from 1.2.0 to 1.2.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 23:01:54 +00:00
dependabot[bot]
8b8f1af513 Chore(deps-dev): Bump @types/jest (#8144)
Bumps the frontend-jest-dependencies group in /src-ui with 1 update: [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest).


Updates `@types/jest` from 29.5.13 to 29.5.14
- [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
  dependency-group: frontend-jest-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 22:45:03 +00:00
dependabot[bot]
4226a1bddc Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 21 updates (#8143)
* Chore(deps): Bump the frontend-angular-dependencies group

Bumps the frontend-angular-dependencies group in /src-ui with 21 updates:

| Package | From | To |
| --- | --- | --- |
| [@angular/cdk](https://github.com/angular/components) | `18.2.6` | `18.2.11` |
| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `18.2.6` | `18.2.10` |
| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `18.2.6` | `18.2.10` |
| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `18.2.6` | `18.2.10` |
| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `18.2.6` | `18.2.10` |
| [@angular/localize](https://github.com/angular/angular) | `18.2.6` | `18.2.10` |
| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `18.2.6` | `18.2.10` |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `18.2.6` | `18.2.10` |
| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `18.2.6` | `18.2.10` |
| [@ng-select/ng-select](https://github.com/ng-select/ng-select) | `13.9.0` | `13.9.1` |
| [ng2-pdf-viewer](https://github.com/VadimDez/ng2-pdf-viewer) | `10.3.1` | `10.3.4` |
| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `18.2.6` | `18.2.11` |
| [@angular-devkit/core](https://github.com/angular/angular-cli) | `18.2.6` | `18.2.11` |
| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `18.2.6` | `18.2.11` |
| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `18.3.1` | `18.4.0` |
| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `18.3.1` | `18.4.0` |
| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `18.3.1` | `18.4.0` |
| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `18.3.1` | `18.4.0` |
| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `18.3.1` | `18.4.0` |
| [@angular/cli](https://github.com/angular/angular-cli) | `18.2.6` | `18.2.11` |
| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `18.2.6` | `18.2.10` |


Updates `@angular/cdk` from 18.2.6 to 18.2.11
- [Release notes](https://github.com/angular/components/releases)
- [Changelog](https://github.com/angular/components/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/components/compare/18.2.6...18.2.11)

Updates `@angular/common` from 18.2.6 to 18.2.10
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.10/packages/common)

Updates `@angular/compiler` from 18.2.6 to 18.2.10
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.10/packages/compiler)

Updates `@angular/core` from 18.2.6 to 18.2.10
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.10/packages/core)

Updates `@angular/forms` from 18.2.6 to 18.2.10
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.10/packages/forms)

Updates `@angular/localize` from 18.2.6 to 18.2.10
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/compare/18.2.6...18.2.10)

Updates `@angular/platform-browser` from 18.2.6 to 18.2.10
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.10/packages/platform-browser)

Updates `@angular/platform-browser-dynamic` from 18.2.6 to 18.2.10
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.10/packages/platform-browser-dynamic)

Updates `@angular/router` from 18.2.6 to 18.2.10
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.10/packages/router)

Updates `@ng-select/ng-select` from 13.9.0 to 13.9.1
- [Release notes](https://github.com/ng-select/ng-select/releases)
- [Changelog](https://github.com/ng-select/ng-select/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ng-select/ng-select/compare/v13.9.0...v13.9.1)

Updates `ng2-pdf-viewer` from 10.3.1 to 10.3.4
- [Release notes](https://github.com/VadimDez/ng2-pdf-viewer/releases)
- [Changelog](https://github.com/VadimDez/ng2-pdf-viewer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/VadimDez/ng2-pdf-viewer/compare/10.3.1...10.3.4)

Updates `@angular-devkit/build-angular` from 18.2.6 to 18.2.11
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/18.2.6...18.2.11)

Updates `@angular-devkit/core` from 18.2.6 to 18.2.11
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/18.2.6...18.2.11)

Updates `@angular-devkit/schematics` from 18.2.6 to 18.2.11
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/18.2.6...18.2.11)

Updates `@angular-eslint/builder` from 18.3.1 to 18.4.0
- [Release notes](https://github.com/angular-eslint/angular-eslint/releases)
- [Changelog](https://github.com/angular-eslint/angular-eslint/blob/main/packages/builder/CHANGELOG.md)
- [Commits](https://github.com/angular-eslint/angular-eslint/commits/v18.4.0/packages/builder)

Updates `@angular-eslint/eslint-plugin` from 18.3.1 to 18.4.0
- [Release notes](https://github.com/angular-eslint/angular-eslint/releases)
- [Changelog](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/angular-eslint/angular-eslint/commits/v18.4.0/packages/eslint-plugin)

Updates `@angular-eslint/eslint-plugin-template` from 18.3.1 to 18.4.0
- [Release notes](https://github.com/angular-eslint/angular-eslint/releases)
- [Changelog](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/CHANGELOG.md)
- [Commits](https://github.com/angular-eslint/angular-eslint/commits/v18.4.0/packages/eslint-plugin-template)

Updates `@angular-eslint/schematics` from 18.3.1 to 18.4.0
- [Release notes](https://github.com/angular-eslint/angular-eslint/releases)
- [Changelog](https://github.com/angular-eslint/angular-eslint/blob/main/packages/schematics/CHANGELOG.md)
- [Commits](https://github.com/angular-eslint/angular-eslint/commits/v18.4.0/packages/schematics)

Updates `@angular-eslint/template-parser` from 18.3.1 to 18.4.0
- [Release notes](https://github.com/angular-eslint/angular-eslint/releases)
- [Changelog](https://github.com/angular-eslint/angular-eslint/blob/main/packages/template-parser/CHANGELOG.md)
- [Commits](https://github.com/angular-eslint/angular-eslint/commits/v18.4.0/packages/template-parser)

Updates `@angular/cli` from 18.2.6 to 18.2.11
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/18.2.6...18.2.11)

Updates `@angular/compiler-cli` from 18.2.6 to 18.2.10
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.10/packages/compiler-cli)

---
updated-dependencies:
- dependency-name: "@angular/cdk"
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/common"
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/compiler"
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/forms"
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/localize"
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/platform-browser"
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/platform-browser-dynamic"
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/router"
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: "@ng-select/ng-select"
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: ng2-pdf-viewer
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular-devkit/build-angular"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular-devkit/core"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular-devkit/schematics"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular-eslint/builder"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular-eslint/eslint-plugin-template"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular-eslint/schematics"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular-eslint/template-parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/cli"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/compiler-cli"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: frontend-angular-dependencies
...

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

* Change output name

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-11-01 22:32:12 +00:00
shamoon
289a7a2348 Documentation: re-add 2.13.0 changelog (#8135) 2024-10-31 12:18:32 -07:00
horvatkm
702ab1b77a Chore: update field in bug-report.yml (#8123) 2024-10-30 22:07:35 +00:00
shamoon
e22ccbda26 Fix: dont use filters for inverted thumbnails (#8121) 2024-10-30 11:43:02 -07:00
shamoon
56d296f04b Fix: use static object for activedisplayfields to prevent changes (#8120) 2024-10-30 11:21:01 -07:00
shamoon
11cfa0871e Fix: dont invert pdf colors in FF (#8110) 2024-10-30 00:54:19 -07:00
shamoon
159344f033 Fix: make mail account password and refresh token text fields (#8107) 2024-10-29 21:54:47 -07:00
github-actions[bot]
d8cfed5f5e Changelog v2.13.2 - GHA (#8103)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-29 12:45:11 -07:00
shamoon
94fe7a9e3d Bump version to 2.13.2 2024-10-29 11:09:19 -07:00
shamoon
9c9b4effe2 Merge branch 'dev' 2024-10-29 11:08:50 -07:00
github-actions[bot]
75f5007ede New Crowdin translations by GitHub Action (#8101)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-10-29 11:07:03 -07:00
github-actions[bot]
d95baf4e6b New Crowdin translations by GitHub Action (#8093)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-10-29 11:05:08 -07:00
shamoon
aac04e73b9 Fix: correct serializing of auth tokens for export (#8100) 2024-10-29 17:02:32 +00:00
shamoon
3af3484a00 Fix: cf query dropdown styling affecting other components (#8095) 2024-10-28 23:14:11 -07:00
github-actions[bot]
90e68af6cf Documentation: Add v2.13.1 changelog (#8085)
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-10-28 12:44:21 -07:00
49 changed files with 1977 additions and 3569 deletions

View File

@@ -98,7 +98,7 @@ body:
label: Browser
description: Which browser you are using, if relevant.
placeholder: e.g. Chrome, Safari
- type: input
- type: textarea
id: config-changes
attributes:
label: Configuration changes

View File

@@ -19,6 +19,8 @@ Options available to any installation of paperless:
export. Therefore, incremental backups with `rsync` are entirely
possible.
The exporter does not include API tokens and they will need to be re-generated after importing.
!!! caution
You cannot import the export generated with one version of paperless in

View File

@@ -1,5 +1,224 @@
# Changelog
## paperless-ngx 2.13.3
### Bug Fixes
- Fix: fix auto-clean PDFs, create parent dir for storing unmodified original [@shamoon](https://github.com/shamoon) ([#8157](https://github.com/paperless-ngx/paperless-ngx/pull/8157))
- Fix: correctly handle exists, false in custom field query filter @yichi-yang ([#8158](https://github.com/paperless-ngx/paperless-ngx/pull/8158))
- Fix: dont use filters for inverted thumbnails in Safari [@shamoon](https://github.com/shamoon) ([#8121](https://github.com/paperless-ngx/paperless-ngx/pull/8121))
- Fix: use static object for activedisplayfields to prevent changes [@shamoon](https://github.com/shamoon) ([#8120](https://github.com/paperless-ngx/paperless-ngx/pull/8120))
- Fix: dont invert pdf colors in FF [@shamoon](https://github.com/shamoon) ([#8110](https://github.com/paperless-ngx/paperless-ngx/pull/8110))
- Fix: make mail account password and refresh token text fields [@shamoon](https://github.com/shamoon) ([#8107](https://github.com/paperless-ngx/paperless-ngx/pull/8107))
### Dependencies
<details>
<summary>8 changes</summary>
- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 4 updates [@dependabot](https://github.com/dependabot) ([#8145](https://github.com/paperless-ngx/paperless-ngx/pull/8145))
- Chore(deps-dev): Bump @types/node from 22.7.4 to 22.8.6 in /src-ui [@dependabot](https://github.com/dependabot) ([#8148](https://github.com/paperless-ngx/paperless-ngx/pull/8148))
- Chore(deps-dev): Bump @playwright/test from 1.47.2 to 1.48.2 in /src-ui [@dependabot](https://github.com/dependabot) ([#8147](https://github.com/paperless-ngx/paperless-ngx/pull/8147))
- Chore(deps): Bump uuid from 10.0.0 to 11.0.2 in /src-ui [@dependabot](https://github.com/dependabot) ([#8146](https://github.com/paperless-ngx/paperless-ngx/pull/8146))
- Chore(deps): Bump tslib from 2.7.0 to 2.8.1 in /src-ui [@dependabot](https://github.com/dependabot) ([#8149](https://github.com/paperless-ngx/paperless-ngx/pull/8149))
- Chore(deps-dev): Bump @codecov/webpack-plugin from 1.2.0 to 1.2.1 in /src-ui [@dependabot](https://github.com/dependabot) ([#8150](https://github.com/paperless-ngx/paperless-ngx/pull/8150))
- Chore(deps-dev): Bump @types/jest from 29.5.13 to 29.5.14 in /src-ui in the frontend-jest-dependencies group [@dependabot](https://github.com/dependabot) ([#8144](https://github.com/paperless-ngx/paperless-ngx/pull/8144))
- Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 21 updates [@dependabot](https://github.com/dependabot) ([#8143](https://github.com/paperless-ngx/paperless-ngx/pull/8143))
</details>
### All App Changes
<details>
<summary>14 changes</summary>
- Fix: fix auto-clean PDFs, create parent dir for storing unmodified original [@shamoon](https://github.com/shamoon) ([#8157](https://github.com/paperless-ngx/paperless-ngx/pull/8157))
- Fix: correctly handle exists, false in custom field query filter @yichi-yang ([#8158](https://github.com/paperless-ngx/paperless-ngx/pull/8158))
- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 4 updates [@dependabot](https://github.com/dependabot) ([#8145](https://github.com/paperless-ngx/paperless-ngx/pull/8145))
- Chore(deps-dev): Bump @types/node from 22.7.4 to 22.8.6 in /src-ui [@dependabot](https://github.com/dependabot) ([#8148](https://github.com/paperless-ngx/paperless-ngx/pull/8148))
- Chore(deps-dev): Bump @playwright/test from 1.47.2 to 1.48.2 in /src-ui [@dependabot](https://github.com/dependabot) ([#8147](https://github.com/paperless-ngx/paperless-ngx/pull/8147))
- Chore(deps): Bump uuid from 10.0.0 to 11.0.2 in /src-ui [@dependabot](https://github.com/dependabot) ([#8146](https://github.com/paperless-ngx/paperless-ngx/pull/8146))
- Chore(deps): Bump tslib from 2.7.0 to 2.8.1 in /src-ui [@dependabot](https://github.com/dependabot) ([#8149](https://github.com/paperless-ngx/paperless-ngx/pull/8149))
- Chore(deps-dev): Bump @codecov/webpack-plugin from 1.2.0 to 1.2.1 in /src-ui [@dependabot](https://github.com/dependabot) ([#8150](https://github.com/paperless-ngx/paperless-ngx/pull/8150))
- Chore(deps-dev): Bump @types/jest from 29.5.13 to 29.5.14 in /src-ui in the frontend-jest-dependencies group [@dependabot](https://github.com/dependabot) ([#8144](https://github.com/paperless-ngx/paperless-ngx/pull/8144))
- Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 21 updates [@dependabot](https://github.com/dependabot) ([#8143](https://github.com/paperless-ngx/paperless-ngx/pull/8143))
- Fix: dont use filters for inverted thumbnails in Safari [@shamoon](https://github.com/shamoon) ([#8121](https://github.com/paperless-ngx/paperless-ngx/pull/8121))
- Fix: use static object for activedisplayfields to prevent changes [@shamoon](https://github.com/shamoon) ([#8120](https://github.com/paperless-ngx/paperless-ngx/pull/8120))
- Fix: dont invert pdf colors in FF [@shamoon](https://github.com/shamoon) ([#8110](https://github.com/paperless-ngx/paperless-ngx/pull/8110))
- Fix: make mail account password and refresh token text fields [@shamoon](https://github.com/shamoon) ([#8107](https://github.com/paperless-ngx/paperless-ngx/pull/8107))
</details>
## paperless-ngx 2.13.2
### Bug Fixes
- Fix: remove auth tokens from export [@shamoon](https://github.com/shamoon) ([#8100](https://github.com/paperless-ngx/paperless-ngx/pull/8100))
- Fix: cf query dropdown styling affecting other components [@shamoon](https://github.com/shamoon) ([#8095](https://github.com/paperless-ngx/paperless-ngx/pull/8095))
### All App Changes
<details>
<summary>2 changes</summary>
- Fix: remove auth tokens from export [@shamoon](https://github.com/shamoon) ([#8100](https://github.com/paperless-ngx/paperless-ngx/pull/8100))
- Fix: cf query dropdown styling affecting other components [@shamoon](https://github.com/shamoon) ([#8095](https://github.com/paperless-ngx/paperless-ngx/pull/8095))
</details>
## paperless-ngx 2.13.1
### Bug Fixes
- Fix: allow removing dead document links from UI, validate via API [@shamoon](https://github.com/shamoon) ([#8081](https://github.com/paperless-ngx/paperless-ngx/pull/8081))
- Fix: Removes whitenoise patches and upgrades it to 6.8.1 [@stumpylog](https://github.com/stumpylog) ([#8079](https://github.com/paperless-ngx/paperless-ngx/pull/8079))
- Fix: Make all document related objects soft delete, fix filepath when deleted [@shamoon](https://github.com/shamoon) ([#8067](https://github.com/paperless-ngx/paperless-ngx/pull/8067))
- Fix: handle uuid fields created under mariadb and Django 4 [@shamoon](https://github.com/shamoon) ([#8034](https://github.com/paperless-ngx/paperless-ngx/pull/8034))
- Fix: Update filename correctly if the document is in the trash [@stumpylog](https://github.com/stumpylog) ([#8066](https://github.com/paperless-ngx/paperless-ngx/pull/8066))
- Fix: Handle a special case where removing none marker could result in an absolute path [@stumpylog](https://github.com/stumpylog) ([#8060](https://github.com/paperless-ngx/paperless-ngx/pull/8060))
- Fix: disable custom field signals during import in 2.13.0 [@shamoon](https://github.com/shamoon) ([#8065](https://github.com/paperless-ngx/paperless-ngx/pull/8065))
- Fix: doc link documents search should exclude null [@shamoon](https://github.com/shamoon) ([#8064](https://github.com/paperless-ngx/paperless-ngx/pull/8064))
- Fix: fix custom field query empty element removal [@shamoon](https://github.com/shamoon) ([#8056](https://github.com/paperless-ngx/paperless-ngx/pull/8056))
- Fix / Enhancement: auto-rename document files when select type custom fields are changed [@shamoon](https://github.com/shamoon) ([#8045](https://github.com/paperless-ngx/paperless-ngx/pull/8045))
- Fix: dont try to load PAPERLESS_MODEL_FILE as env from file [@shamoon](https://github.com/shamoon) ([#8040](https://github.com/paperless-ngx/paperless-ngx/pull/8040))
- Fix: dont include all allauth urls [@shamoon](https://github.com/shamoon) ([#8010](https://github.com/paperless-ngx/paperless-ngx/pull/8010))
- Fix: oauth settings without base url [@shamoon](https://github.com/shamoon) ([#8020](https://github.com/paperless-ngx/paperless-ngx/pull/8020))
- Fix / Enhancement: include social accounts and api tokens in export [@shamoon](https://github.com/shamoon) ([#8016](https://github.com/paperless-ngx/paperless-ngx/pull/8016))
### Maintenance
- Fix: Removes whitenoise patches and upgrades it to 6.8.1 [@stumpylog](https://github.com/stumpylog) ([#8079](https://github.com/paperless-ngx/paperless-ngx/pull/8079))
### All App Changes
<details>
<summary>12 changes</summary>
- Fix: allow removing dead document links from UI, validate via API [@shamoon](https://github.com/shamoon) ([#8081](https://github.com/paperless-ngx/paperless-ngx/pull/8081))
- Fix: Make all document related objects soft delete, fix filepath when deleted [@shamoon](https://github.com/shamoon) ([#8067](https://github.com/paperless-ngx/paperless-ngx/pull/8067))
- Fix: handle uuid fields created under mariadb and Django 4 [@shamoon](https://github.com/shamoon) ([#8034](https://github.com/paperless-ngx/paperless-ngx/pull/8034))
- Fix: Update filename correctly if the document is in the trash [@stumpylog](https://github.com/stumpylog) ([#8066](https://github.com/paperless-ngx/paperless-ngx/pull/8066))
- Fix: Handle a special case where removing none marker could result in an absolute path [@stumpylog](https://github.com/stumpylog) ([#8060](https://github.com/paperless-ngx/paperless-ngx/pull/8060))
- Fix: disable custom field signals during import in 2.13.0 [@shamoon](https://github.com/shamoon) ([#8065](https://github.com/paperless-ngx/paperless-ngx/pull/8065))
- Fix: doc link documents search should exclude null [@shamoon](https://github.com/shamoon) ([#8064](https://github.com/paperless-ngx/paperless-ngx/pull/8064))
- Enhancement: auto-rename document files when select type custom fields are changed [@shamoon](https://github.com/shamoon) ([#8045](https://github.com/paperless-ngx/paperless-ngx/pull/8045))
- Fix: fix custom field query empty element removal [@shamoon](https://github.com/shamoon) ([#8056](https://github.com/paperless-ngx/paperless-ngx/pull/8056))
- Fix: dont include all allauth urls [@shamoon](https://github.com/shamoon) ([#8010](https://github.com/paperless-ngx/paperless-ngx/pull/8010))
- Enhancement / fix: include social accounts and api tokens in export [@shamoon](https://github.com/shamoon) ([#8016](https://github.com/paperless-ngx/paperless-ngx/pull/8016))
- Fix: oauth settings without base url [@shamoon](https://github.com/shamoon) ([#8020](https://github.com/paperless-ngx/paperless-ngx/pull/8020))
</details>
## paperless-ngx 2.13.0
### Notable Changes
- Feature: OAuth2 Gmail and Outlook email support [@shamoon](https://github.com/shamoon) ([#7866](https://github.com/paperless-ngx/paperless-ngx/pull/7866))
- Feature: Enhanced templating for filename format [@stumpylog](https://github.com/stumpylog) ([#7836](https://github.com/paperless-ngx/paperless-ngx/pull/7836))
- Feature: custom fields queries [@shamoon](https://github.com/shamoon) ([#7761](https://github.com/paperless-ngx/paperless-ngx/pull/7761))
- Chore: Drop Python 3.9 support [@stumpylog](https://github.com/stumpylog) ([#7774](https://github.com/paperless-ngx/paperless-ngx/pull/7774))
### Features
- Enhancement: QoL, auto-focus default select field in custom field dropdown [@shamoon](https://github.com/shamoon) ([#7961](https://github.com/paperless-ngx/paperless-ngx/pull/7961))
- Change: open not edit [@shamoon](https://github.com/shamoon) ([#7942](https://github.com/paperless-ngx/paperless-ngx/pull/7942))
- Enhancement: support retain barcode split pages [@shamoon](https://github.com/shamoon) ([#7912](https://github.com/paperless-ngx/paperless-ngx/pull/7912))
- Enhancement: don't wait for doc API to load preview [@shamoon](https://github.com/shamoon) ([#7894](https://github.com/paperless-ngx/paperless-ngx/pull/7894))
- Feature: OAuth2 Gmail and Outlook email support [@shamoon](https://github.com/shamoon) ([#7866](https://github.com/paperless-ngx/paperless-ngx/pull/7866))
- Enhancement: live preview of storage path [@shamoon](https://github.com/shamoon) ([#7870](https://github.com/paperless-ngx/paperless-ngx/pull/7870))
- Enhancement: management list button improvements [@shamoon](https://github.com/shamoon) ([#7848](https://github.com/paperless-ngx/paperless-ngx/pull/7848))
- Enhancement: check for mail destination directory, log post-consume errors [@mrichtarsky](https://github.com/mrichtarsky) ([#7808](https://github.com/paperless-ngx/paperless-ngx/pull/7808))
- Enhancement: workflow overview toggle enable button [@shamoon](https://github.com/shamoon) ([#7818](https://github.com/paperless-ngx/paperless-ngx/pull/7818))
- Enhancement: disable-able mail rules, add toggle to overview [@shamoon](https://github.com/shamoon) ([#7810](https://github.com/paperless-ngx/paperless-ngx/pull/7810))
- Feature: auto-clean some invalid pdfs [@shamoon](https://github.com/shamoon) ([#7651](https://github.com/paperless-ngx/paperless-ngx/pull/7651))
- Feature: page count [@s0llvan](https://github.com/s0llvan) ([#7750](https://github.com/paperless-ngx/paperless-ngx/pull/7750))
- Enhancement: use apt only when needed docker-entrypoint.sh [@gawa971](https://github.com/gawa971) ([#7756](https://github.com/paperless-ngx/paperless-ngx/pull/7756))
- Enhancement: set Django SESSION_EXPIRE_AT_BROWSER_CLOSE from PAPERLESS_ACCOUNT_SESSION_REMEMBER [@shamoon](https://github.com/shamoon) ([#7748](https://github.com/paperless-ngx/paperless-ngx/pull/7748))
- Enhancement: allow setting session cookie age [@shamoon](https://github.com/shamoon) ([#7743](https://github.com/paperless-ngx/paperless-ngx/pull/7743))
- Feature: copy workflows and mail rules, improve layout [@shamoon](https://github.com/shamoon) ([#7727](https://github.com/paperless-ngx/paperless-ngx/pull/7727))
### Bug Fixes
- Fix: remove space before my profile button in dropdown [@tooomm](https://github.com/tooomm) ([#7963](https://github.com/paperless-ngx/paperless-ngx/pull/7963))
- Fix: v2.13.0 RC1 - Handling of Nones when using custom fields in filepath templating [@stumpylog](https://github.com/stumpylog) ([#7933](https://github.com/paperless-ngx/paperless-ngx/pull/7933))
- Fix: v2.13.0 RC1 - trigger move and rename after CustomFieldInstance saved [@shamoon](https://github.com/shamoon) ([#7927](https://github.com/paperless-ngx/paperless-ngx/pull/7927))
- Fix: v2.13.0 RC1 - increase field max lengths to accommodate larger tokens [@shamoon](https://github.com/shamoon) ([#7916](https://github.com/paperless-ngx/paperless-ngx/pull/7916))
- Fix: preserve text linebreaks in doc edit [@shamoon](https://github.com/shamoon) ([#7908](https://github.com/paperless-ngx/paperless-ngx/pull/7908))
- Fix: only show colon on cards if correspondent and title shown [@shamoon](https://github.com/shamoon) ([#7893](https://github.com/paperless-ngx/paperless-ngx/pull/7893))
- Fix: Allow ASN values of 0 from barcodes [@stumpylog](https://github.com/stumpylog) ([#7878](https://github.com/paperless-ngx/paperless-ngx/pull/7878))
- Fix: fix auto-dismiss completed tasks on open document [@shamoon](https://github.com/shamoon) ([#7869](https://github.com/paperless-ngx/paperless-ngx/pull/7869))
- Fix: trigger change warning for saved views with default fields if changed [@shamoon](https://github.com/shamoon) ([#7865](https://github.com/paperless-ngx/paperless-ngx/pull/7865))
- Fix: hidden canvas element causes scroll bug [@shamoon](https://github.com/shamoon) ([#7770](https://github.com/paperless-ngx/paperless-ngx/pull/7770))
- Fix: handle overflowing dropdowns on mobile [@shamoon](https://github.com/shamoon) ([#7758](https://github.com/paperless-ngx/paperless-ngx/pull/7758))
- Fix: chrome scrolling in >= 129 [@shamoon](https://github.com/shamoon) ([#7738](https://github.com/paperless-ngx/paperless-ngx/pull/7738))
### Maintenance
- Enhancement: use apt only when needed docker-entrypoint.sh [@gawa971](https://github.com/gawa971) ([#7756](https://github.com/paperless-ngx/paperless-ngx/pull/7756))
### Dependencies
<details>
<summary>10 changes</summary>
- Chore(deps-dev): Bump @codecov/webpack-plugin from 1.0.1 to 1.2.0 in /src-ui [@dependabot](https://github.com/dependabot) ([#7830](https://github.com/paperless-ngx/paperless-ngx/pull/7830))
- Chore(deps-dev): Bump @types/node from 22.5.2 to 22.7.4 in /src-ui [@dependabot](https://github.com/dependabot) ([#7829](https://github.com/paperless-ngx/paperless-ngx/pull/7829))
- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 4 updates [@dependabot](https://github.com/dependabot) ([#7827](https://github.com/paperless-ngx/paperless-ngx/pull/7827))
- Chore(deps-dev): Bump the frontend-jest-dependencies group in /src-ui with 2 updates [@dependabot](https://github.com/dependabot) ([#7826](https://github.com/paperless-ngx/paperless-ngx/pull/7826))
- Chore(deps-dev): Bump @playwright/test from 1.46.1 to 1.47.2 in /src-ui [@dependabot](https://github.com/dependabot) ([#7828](https://github.com/paperless-ngx/paperless-ngx/pull/7828))
- Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 21 updates [@dependabot](https://github.com/dependabot) ([#7825](https://github.com/paperless-ngx/paperless-ngx/pull/7825))
- Chore: Upgrades OCRMyPDF to v16 [@stumpylog](https://github.com/stumpylog) ([#7815](https://github.com/paperless-ngx/paperless-ngx/pull/7815))
- Chore: Upgrades the Docker image to use Python 3.12 [@stumpylog](https://github.com/stumpylog) ([#7796](https://github.com/paperless-ngx/paperless-ngx/pull/7796))
- Chore: Upgrade Django to 5.1 [@stumpylog](https://github.com/stumpylog) ([#7795](https://github.com/paperless-ngx/paperless-ngx/pull/7795))
- Chore(deps-dev): Bump the development group with 2 updates [@dependabot](https://github.com/dependabot) ([#7723](https://github.com/paperless-ngx/paperless-ngx/pull/7723))
</details>
### All App Changes
<details>
<summary>43 changes</summary>
- Change: Use a TextField for the storage path field [@stumpylog](https://github.com/stumpylog) ([#7967](https://github.com/paperless-ngx/paperless-ngx/pull/7967))
- Fix: remove space before my profile button in dropdown [@tooomm](https://github.com/tooomm) ([#7963](https://github.com/paperless-ngx/paperless-ngx/pull/7963))
- Enhancement: QoL, auto-focus default select field in custom field dropdown [@shamoon](https://github.com/shamoon) ([#7961](https://github.com/paperless-ngx/paperless-ngx/pull/7961))
- Change: open not edit [@shamoon](https://github.com/shamoon) ([#7942](https://github.com/paperless-ngx/paperless-ngx/pull/7942))
- Fix: v2.13.0 RC1 - Handling of Nones when using custom fields in filepath templating [@stumpylog](https://github.com/stumpylog) ([#7933](https://github.com/paperless-ngx/paperless-ngx/pull/7933))
- Fix: v2.13.0 RC1 - trigger move and rename after CustomFieldInstance saved [@shamoon](https://github.com/shamoon) ([#7927](https://github.com/paperless-ngx/paperless-ngx/pull/7927))
- Fix: v2.13.0 RC1 - increase field max lengths to accommodate larger tokens [@shamoon](https://github.com/shamoon) ([#7916](https://github.com/paperless-ngx/paperless-ngx/pull/7916))
- Enhancement: support retain barcode split pages [@shamoon](https://github.com/shamoon) ([#7912](https://github.com/paperless-ngx/paperless-ngx/pull/7912))
- Fix: preserve text linebreaks in doc edit [@shamoon](https://github.com/shamoon) ([#7908](https://github.com/paperless-ngx/paperless-ngx/pull/7908))
- Enhancement: don't wait for doc API to load preview [@shamoon](https://github.com/shamoon) ([#7894](https://github.com/paperless-ngx/paperless-ngx/pull/7894))
- Fix: only show colon on cards if correspondent and title shown [@shamoon](https://github.com/shamoon) ([#7893](https://github.com/paperless-ngx/paperless-ngx/pull/7893))
- Feature: OAuth2 Gmail and Outlook email support [@shamoon](https://github.com/shamoon) ([#7866](https://github.com/paperless-ngx/paperless-ngx/pull/7866))
- Chore: Consolidate workflow logic [@shamoon](https://github.com/shamoon) ([#7880](https://github.com/paperless-ngx/paperless-ngx/pull/7880))
- Enhancement: live preview of storage path [@shamoon](https://github.com/shamoon) ([#7870](https://github.com/paperless-ngx/paperless-ngx/pull/7870))
- Fix: Allow ASN values of 0 from barcodes [@stumpylog](https://github.com/stumpylog) ([#7878](https://github.com/paperless-ngx/paperless-ngx/pull/7878))
- Fix: fix auto-dismiss completed tasks on open document [@shamoon](https://github.com/shamoon) ([#7869](https://github.com/paperless-ngx/paperless-ngx/pull/7869))
- Fix: trigger change warning for saved views with default fields if changed [@shamoon](https://github.com/shamoon) ([#7865](https://github.com/paperless-ngx/paperless-ngx/pull/7865))
- Feature: Enhanced templating for filename format [@stumpylog](https://github.com/stumpylog) ([#7836](https://github.com/paperless-ngx/paperless-ngx/pull/7836))
- Enhancement: management list button improvements [@shamoon](https://github.com/shamoon) ([#7848](https://github.com/paperless-ngx/paperless-ngx/pull/7848))
- Enhancement: check for mail destination directory, log post-consume errors [@mrichtarsky](https://github.com/mrichtarsky) ([#7808](https://github.com/paperless-ngx/paperless-ngx/pull/7808))
- Feature: custom fields queries [@shamoon](https://github.com/shamoon) ([#7761](https://github.com/paperless-ngx/paperless-ngx/pull/7761))
- Chore(deps-dev): Bump @codecov/webpack-plugin from 1.0.1 to 1.2.0 in /src-ui [@dependabot](https://github.com/dependabot) ([#7830](https://github.com/paperless-ngx/paperless-ngx/pull/7830))
- Chore(deps-dev): Bump @types/node from 22.5.2 to 22.7.4 in /src-ui [@dependabot](https://github.com/dependabot) ([#7829](https://github.com/paperless-ngx/paperless-ngx/pull/7829))
- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 4 updates [@dependabot](https://github.com/dependabot) ([#7827](https://github.com/paperless-ngx/paperless-ngx/pull/7827))
- Chore(deps-dev): Bump the frontend-jest-dependencies group in /src-ui with 2 updates [@dependabot](https://github.com/dependabot) ([#7826](https://github.com/paperless-ngx/paperless-ngx/pull/7826))
- Chore(deps-dev): Bump @playwright/test from 1.46.1 to 1.47.2 in /src-ui [@dependabot](https://github.com/dependabot) ([#7828](https://github.com/paperless-ngx/paperless-ngx/pull/7828))
- Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 21 updates [@dependabot](https://github.com/dependabot) ([#7825](https://github.com/paperless-ngx/paperless-ngx/pull/7825))
- Chore: Upgrades OCRMyPDF to v16 [@stumpylog](https://github.com/stumpylog) ([#7815](https://github.com/paperless-ngx/paperless-ngx/pull/7815))
- Enhancement: workflow overview toggle enable button [@shamoon](https://github.com/shamoon) ([#7818](https://github.com/paperless-ngx/paperless-ngx/pull/7818))
- Enhancement: disable-able mail rules, add toggle to overview [@shamoon](https://github.com/shamoon) ([#7810](https://github.com/paperless-ngx/paperless-ngx/pull/7810))
- Chore: Upgrades the Docker image to use Python 3.12 [@stumpylog](https://github.com/stumpylog) ([#7796](https://github.com/paperless-ngx/paperless-ngx/pull/7796))
- Chore: Upgrade Django to 5.1 [@stumpylog](https://github.com/stumpylog) ([#7795](https://github.com/paperless-ngx/paperless-ngx/pull/7795))
- Chore: Drop Python 3.9 support [@stumpylog](https://github.com/stumpylog) ([#7774](https://github.com/paperless-ngx/paperless-ngx/pull/7774))
- Feature: auto-clean some invalid pdfs [@shamoon](https://github.com/shamoon) ([#7651](https://github.com/paperless-ngx/paperless-ngx/pull/7651))
- Feature: page count [@s0llvan](https://github.com/s0llvan) ([#7750](https://github.com/paperless-ngx/paperless-ngx/pull/7750))
- Fix: hidden canvas element causes scroll bug [@shamoon](https://github.com/shamoon) ([#7770](https://github.com/paperless-ngx/paperless-ngx/pull/7770))
- Enhancement: compactify dates dropdown [@shamoon](https://github.com/shamoon) ([#7759](https://github.com/paperless-ngx/paperless-ngx/pull/7759))
- Fix: handle overflowing dropdowns on mobile [@shamoon](https://github.com/shamoon) ([#7758](https://github.com/paperless-ngx/paperless-ngx/pull/7758))
- Enhancement: set Django SESSION_EXPIRE_AT_BROWSER_CLOSE from PAPERLESS_ACCOUNT_SESSION_REMEMBER [@shamoon](https://github.com/shamoon) ([#7748](https://github.com/paperless-ngx/paperless-ngx/pull/7748))
- Enhancement: allow setting session cookie age [@shamoon](https://github.com/shamoon) ([#7743](https://github.com/paperless-ngx/paperless-ngx/pull/7743))
- Fix: chrome scrolling in >= 129 [@shamoon](https://github.com/shamoon) ([#7738](https://github.com/paperless-ngx/paperless-ngx/pull/7738))
- Feature: copy workflows and mail rules, improve layout [@shamoon](https://github.com/shamoon) ([#7727](https://github.com/paperless-ngx/paperless-ngx/pull/7727))
- Chore(deps-dev): Bump the development group with 2 updates [@dependabot](https://github.com/dependabot) ([#7723](https://github.com/paperless-ngx/paperless-ngx/pull/7723))
</details>
## paperless-ngx 2.12.1
### Bug Fixes

4081
src-ui/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -11,54 +11,54 @@
},
"private": true,
"dependencies": {
"@angular/cdk": "^18.2.6",
"@angular/common": "~18.2.6",
"@angular/compiler": "~18.2.6",
"@angular/core": "~18.2.6",
"@angular/forms": "~18.2.6",
"@angular/localize": "~18.2.6",
"@angular/platform-browser": "~18.2.6",
"@angular/platform-browser-dynamic": "~18.2.6",
"@angular/router": "~18.2.6",
"@angular/cdk": "^18.2.11",
"@angular/common": "~18.2.10",
"@angular/compiler": "~18.2.10",
"@angular/core": "~18.2.10",
"@angular/forms": "~18.2.10",
"@angular/localize": "~18.2.10",
"@angular/platform-browser": "~18.2.10",
"@angular/platform-browser-dynamic": "~18.2.10",
"@angular/router": "~18.2.10",
"@ng-bootstrap/ng-bootstrap": "^17.0.1",
"@ng-select/ng-select": "^13.9.0",
"@ng-select/ng-select": "^13.9.1",
"@ngneat/dirty-check-forms": "^3.0.3",
"@popperjs/core": "^2.11.8",
"bootstrap": "^5.3.3",
"file-saver": "^2.0.5",
"mime-names": "^1.0.0",
"ng2-pdf-viewer": "^10.3.1",
"ng2-pdf-viewer": "^10.3.4",
"ngx-bootstrap-icons": "^1.9.3",
"ngx-color": "^9.0.0",
"ngx-cookie-service": "^18.0.0",
"ngx-file-drop": "^16.0.0",
"ngx-ui-tour-ng-bootstrap": "^15.0.0",
"rxjs": "^7.8.1",
"tslib": "^2.7.0",
"uuid": "^10.0.0",
"tslib": "^2.8.1",
"uuid": "^11.0.2",
"zone.js": "^0.14.8"
},
"devDependencies": {
"@angular-builders/custom-webpack": "^18.0.0",
"@angular-builders/jest": "^18.0.0",
"@angular-devkit/build-angular": "^18.2.2",
"@angular-devkit/core": "^18.2.6",
"@angular-devkit/schematics": "^18.2.6",
"@angular-eslint/builder": "18.3.1",
"@angular-eslint/eslint-plugin": "18.3.1",
"@angular-eslint/eslint-plugin-template": "18.3.1",
"@angular-eslint/schematics": "18.3.1",
"@angular-eslint/template-parser": "18.3.1",
"@angular/cli": "~18.2.6",
"@angular-devkit/core": "^18.2.11",
"@angular-devkit/schematics": "^18.2.11",
"@angular-eslint/builder": "18.4.0",
"@angular-eslint/eslint-plugin": "18.4.0",
"@angular-eslint/eslint-plugin-template": "18.4.0",
"@angular-eslint/schematics": "18.4.0",
"@angular-eslint/template-parser": "18.4.0",
"@angular/cli": "~18.2.11",
"@angular/compiler-cli": "~18.2.2",
"@codecov/webpack-plugin": "^1.2.0",
"@playwright/test": "^1.47.2",
"@types/jest": "^29.5.13",
"@types/node": "^22.7.4",
"@typescript-eslint/eslint-plugin": "^8.8.0",
"@typescript-eslint/parser": "^8.8.0",
"@codecov/webpack-plugin": "^1.2.1",
"@playwright/test": "^1.48.2",
"@types/jest": "^29.5.14",
"@types/node": "^22.8.6",
"@typescript-eslint/eslint-plugin": "^8.12.2",
"@typescript-eslint/parser": "^8.12.2",
"@typescript-eslint/utils": "^8.0.0",
"eslint": "^9.11.1",
"eslint": "^9.14.0",
"jest": "29.7.0",
"jest-environment-jsdom": "^29.7.0",
"jest-preset-angular": "^14.2.4",

View File

@@ -5,26 +5,26 @@
}
}
::ng-deep .ng-select-container {
:host ::ng-deep .ng-select-container {
border-top-right-radius: 0 !important;
border-bottom-right-radius: 0 !important;
height: 100% !important;
}
::ng-deep .rounded-end .ng-select-container {
:host ::ng-deep .rounded-end .ng-select-container {
border-top-right-radius: var(--bs-border-radius) !important;
border-bottom-right-radius: var(--bs-border-radius) !important;
border-top-left-radius: 0 !important;
border-bottom-left-radius: 0 !important;
}
::ng-deep .ng-select {
:host ::ng-deep .ng-select {
max-width: 100px;
min-width: 35%;
font-size: 14px;
}
::ng-deep .doc-link-select {
:host ::ng-deep .doc-link-select {
padding-top: 0 !important;
border-top-right-radius: var(--bs-border-radius) !important;
border-bottom-right-radius: var(--bs-border-radius) !important;

View File

@@ -38,7 +38,7 @@
@for (item of selectionModel.itemsSorted | filter: filterText:'name'; track item; let i = $index) {
@if (allowSelectNone || item.id) {
<pngx-toggleable-dropdown-button
[item]="item" [hideCount]="hideCount(item)" [state]="selectionModel.get(item.id)" [count]="getUpdatedDocumentCount(item.id)" (toggle)="selectionModel.toggle(item.id)" (exclude)="excludeClicked(item.id)" (click)="setButtonItemIndex(i - 1)" [disabled]="disabled">
[item]="item" [hideCount]="hideCount(item)" [state]="selectionModel.get(item.id)" [count]="getUpdatedDocumentCount(item.id)" (toggled)="selectionModel.toggle(item.id)" (exclude)="excludeClicked(item.id)" (click)="setButtonItemIndex(i - 1)" [disabled]="disabled">
</pngx-toggleable-dropdown-button>
}
}

View File

@@ -58,7 +58,7 @@ describe('ToggleableDropdownButtonComponent', () => {
let toggleResult
component.state = ToggleableItemState.Selected
component.exclude.subscribe(() => (excludeResult = true))
component.toggle.subscribe(() => (toggleResult = true))
component.toggled.subscribe(() => (toggleResult = true))
const button = fixture.nativeElement.querySelector('button')
button.dispatchEvent(new MouseEvent('click'))
expect(excludeResult).toBeTruthy()
@@ -70,7 +70,7 @@ describe('ToggleableDropdownButtonComponent', () => {
let toggleResult
component.state = ToggleableItemState.Excluded
component.exclude.subscribe(() => (excludeResult = true))
component.toggle.subscribe(() => (toggleResult = true))
component.toggled.subscribe(() => (toggleResult = true))
const button = fixture.nativeElement.querySelector('button')
button.dispatchEvent(new MouseEvent('click'))
expect(excludeResult).toBeFalsy()

View File

@@ -30,7 +30,7 @@ export class ToggleableDropdownButtonComponent {
hideCount: boolean = false
@Output()
toggle = new EventEmitter()
toggled = new EventEmitter()
@Output()
exclude = new EventEmitter()
@@ -43,7 +43,7 @@ export class ToggleableDropdownButtonComponent {
if (this.state == ToggleableItemState.Selected) {
this.exclude.emit()
} else {
this.toggle.emit()
this.toggled.emit()
}
}

View File

@@ -5,7 +5,7 @@
</div>
} @else {
@if (renderAsObject) {
<object [data]="previewURL | safeUrl" width="100%" class="bg-light" [class.p-2]="!isPdf"></object>
<object [data]="previewURL | safeUrl" width="100%" class="bg-light" [class.p-2]="!isPdf" [class.pdf]="isPdf"></object>
} @else {
@if (requiresPassword) {
<div class="w-100 h-100 position-relative">

View File

@@ -17,7 +17,7 @@
background-color: #e7e7e7;
}
object {
object:not(.pdf) {
mix-blend-mode: difference;
&.p-2 {
padding: 0 !important;

View File

@@ -1,6 +1,6 @@
<div class="card mb-3 shadow-sm bg-light" [class.card-selected]="selected" [class.document-card]="selectable" [class.popover-hidden]="popoverHidden" (mouseleave)="mouseLeaveCard()">
<div class="row g-0">
<div class="col-md-2 doc-img-background rounded-start" [class.doc-img-background-selected]="selected" (click)="this.toggleSelected.emit($event)" (dblclick)="dblClickDocument.emit()">
<div class="col-md-2 doc-img-container rounded-start" (click)="this.toggleSelected.emit($event)" (dblclick)="dblClickDocument.emit()">
<img [src]="getThumbUrl()" class="card-img doc-img border-end rounded-start" [class.inverted]="getIsThumbInverted()">
<div class="border-end border-bottom bg-light document-card-check">

View File

@@ -2,7 +2,7 @@
overflow-wrap: anywhere;
}
.doc-img-background {
.doc-img-container {
position: relative;
}
@@ -11,7 +11,6 @@
object-position: top left;
height: 100%;
position: absolute;
mix-blend-mode: multiply;
}
.card-title {
@@ -49,18 +48,6 @@
display: block;
}
.card-selected {
border-color: var(--bs-primary);
.document-card-check {
display: block;
}
}
.doc-img-background-selected {
background-color: var(--pngx-primary-faded);
}
.card-info {
line-height: 1;

View File

@@ -1,7 +1,7 @@
<div class="col p-2 h-100">
<div class="card h-100 shadow-sm document-card" [class.card-selected]="selected" [class.popover-hidden]="popoverHidden" (mouseleave)="mouseLeaveCard()">
<div class="border-bottom doc-img-container" [class.doc-img-background-selected]="selected" (click)="this.toggleSelected.emit($event)" (dblclick)="dblClickDocument.emit(this)">
<img class="card-img doc-img rounded-top" [class.inverted]="getIsThumbInverted()" [src]="getThumbUrl()">
<div class="border-bottom doc-img-container" (click)="this.toggleSelected.emit($event)" (dblclick)="dblClickDocument.emit(this)">
<img class="card-img doc-img" [class.inverted]="getIsThumbInverted()" [src]="getThumbUrl()">
<div class="border-end border-bottom bg-light py-1 px-2 document-card-check">
<div class="form-check">

View File

@@ -6,7 +6,6 @@
object-fit: cover;
object-position: top left;
height: 180px;
mix-blend-mode: multiply;
}
.document-card-check {
@@ -40,18 +39,6 @@
top: 142px;
}
.card-selected {
border-color:var(--bs-primary);
.document-card-check {
display: block;
}
}
.doc-img-background-selected {
background-color: var(--pngx-primary-faded);
}
.card-info {
line-height: 1;

View File

@@ -1204,7 +1204,7 @@ describe('FilterEditorComponent', () => {
const tagButton = tagsFilterableDropdown.queryAll(
By.directive(ToggleableDropdownButtonComponent)
)[0]
tagButton.triggerEventHandler('toggle')
tagButton.triggerEventHandler('toggled')
fixture.detectChanges()
expect(component.filterRules).toEqual([
{
@@ -1222,8 +1222,8 @@ describe('FilterEditorComponent', () => {
const tagButtons = tagsFilterableDropdown.queryAll(
By.directive(ToggleableDropdownButtonComponent)
)
tagButtons[1].triggerEventHandler('toggle')
tagButtons[2].triggerEventHandler('toggle')
tagButtons[1].triggerEventHandler('toggled')
tagButtons[2].triggerEventHandler('toggled')
fixture.detectChanges()
expect(component.filterRules).toEqual([
{
@@ -1273,8 +1273,8 @@ describe('FilterEditorComponent', () => {
const correspondentButtons = correspondentsFilterableDropdown.queryAll(
By.directive(ToggleableDropdownButtonComponent)
)
correspondentButtons[1].triggerEventHandler('toggle')
correspondentButtons[2].triggerEventHandler('toggle')
correspondentButtons[1].triggerEventHandler('toggled')
correspondentButtons[2].triggerEventHandler('toggled')
fixture.detectChanges()
expect(component.filterRules).toEqual([
{
@@ -1312,7 +1312,7 @@ describe('FilterEditorComponent', () => {
const notAssignedButton = correspondentsFilterableDropdown.queryAll(
By.directive(ToggleableDropdownButtonComponent)
)[0]
notAssignedButton.triggerEventHandler('toggle')
notAssignedButton.triggerEventHandler('toggled')
fixture.detectChanges()
expect(component.filterRules).toEqual([
{
@@ -1330,8 +1330,8 @@ describe('FilterEditorComponent', () => {
const documentTypeButtons = documentTypesFilterableDropdown.queryAll(
By.directive(ToggleableDropdownButtonComponent)
)
documentTypeButtons[1].triggerEventHandler('toggle')
documentTypeButtons[2].triggerEventHandler('toggle')
documentTypeButtons[1].triggerEventHandler('toggled')
documentTypeButtons[2].triggerEventHandler('toggled')
fixture.detectChanges()
expect(component.filterRules).toEqual([
{
@@ -1369,7 +1369,7 @@ describe('FilterEditorComponent', () => {
const notAssignedButton = docTypesFilterableDropdown.queryAll(
By.directive(ToggleableDropdownButtonComponent)
)[0]
notAssignedButton.triggerEventHandler('toggle')
notAssignedButton.triggerEventHandler('toggled')
fixture.detectChanges()
expect(component.filterRules).toEqual([
{
@@ -1387,8 +1387,8 @@ describe('FilterEditorComponent', () => {
const storagePathButtons = storagePathFilterableDropdown.queryAll(
By.directive(ToggleableDropdownButtonComponent)
)
storagePathButtons[1].triggerEventHandler('toggle')
storagePathButtons[2].triggerEventHandler('toggle')
storagePathButtons[1].triggerEventHandler('toggled')
storagePathButtons[2].triggerEventHandler('toggled')
fixture.detectChanges()
expect(component.filterRules).toEqual([
{
@@ -1426,7 +1426,7 @@ describe('FilterEditorComponent', () => {
const notAssignedButton = storagePathsFilterableDropdown.queryAll(
By.directive(ToggleableDropdownButtonComponent)
)[0]
notAssignedButton.triggerEventHandler('toggle')
notAssignedButton.triggerEventHandler('toggled')
fixture.detectChanges()
expect(component.filterRules).toEqual([
{

View File

@@ -599,14 +599,17 @@ describe('DocumentListViewService', () => {
it('should not filter out custom fields if settings not initialized', () => {
const customFields = ['custom_field_1', 'custom_field_2']
documentListViewService.displayFields = customFields as any
settingsService.displayFieldsInitialized = false
expect(documentListViewService.displayFields).toEqual(customFields)
jest.spyOn(settingsService, 'allDisplayFields', 'get').mockReturnValue([
{ id: DisplayField.ADDED, name: 'Added' },
{ id: DisplayField.TITLE, name: 'Title' },
{ id: 'custom_field_1', name: 'Custom Field 1' },
] as any)
settingsService.displayFieldsInitialized = true
settingsService.displayFieldsInit.emit(true)
expect(documentListViewService.displayFields).toEqual(['custom_field_1'])
// will now filter on set
documentListViewService.displayFields = customFields as any
expect(documentListViewService.displayFields).toEqual(['custom_field_1'])
})
})

View File

@@ -20,6 +20,10 @@ import { paramsFromViewState, paramsToViewState } from '../utils/query-params'
import { DocumentService, SelectionData } from './rest/document.service'
import { SettingsService } from './settings.service'
const LIST_DEFAULT_DISPLAY_FIELDS: DisplayField[] = DEFAULT_DISPLAY_FIELDS.map(
(f) => f.id
).filter((f) => f !== DisplayField.ADDED)
/**
* Captures the current state of the list view.
*/
@@ -102,6 +106,8 @@ export class DocumentListViewService {
private _activeSavedViewId: number = null
private displayFieldsInitialized: boolean = false
get activeSavedViewId() {
return this._activeSavedViewId
}
@@ -134,6 +140,19 @@ export class DocumentListViewService {
localStorage.removeItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG)
}
}
this.settings.displayFieldsInit.subscribe(() => {
this.displayFieldsInitialized = true
if (this.activeListViewState.displayFields) {
this.activeListViewState.displayFields =
this.activeListViewState.displayFields.filter(
(field) =>
this.settings.allDisplayFields.find((f) => f.id === field) !==
undefined
)
this.saveDocumentListView()
}
})
}
private defaultListViewState(): ListViewState {
@@ -415,23 +434,17 @@ export class DocumentListViewService {
}
get displayFields(): DisplayField[] {
let fields =
this.activeListViewState.displayFields ??
DEFAULT_DISPLAY_FIELDS.map((f) => f.id)
if (!this.activeListViewState.displayFields) {
fields = fields.filter((f) => f !== DisplayField.ADDED)
}
return this.settings.displayFieldsInitialized
? fields.filter(
return this.activeListViewState.displayFields ?? LIST_DEFAULT_DISPLAY_FIELDS
}
set displayFields(fields: DisplayField[]) {
this.activeListViewState.displayFields = this.displayFieldsInitialized
? fields?.filter(
(field) =>
this.settings.allDisplayFields.find((f) => f.id === field) !==
undefined
)
: fields
}
set displayFields(fields: DisplayField[]) {
this.activeListViewState.displayFields = fields
this.saveDocumentListView()
}

View File

@@ -274,7 +274,7 @@ export class SettingsService {
public get allDisplayFields(): Array<{ id: DisplayField; name: string }> {
return this._allDisplayFields
}
public displayFieldsInitialized: boolean = false
public displayFieldsInit: EventEmitter<boolean> = new EventEmitter()
constructor(
rendererFactory: RendererFactory2,
@@ -382,10 +382,10 @@ export class SettingsService {
}
})
)
this.displayFieldsInitialized = true
this.displayFieldsInit.emit(true)
})
} else {
this.displayFieldsInitialized = true
this.displayFieldsInit.emit(true)
}
}

View File

@@ -5,7 +5,7 @@ export const environment = {
apiBaseUrl: document.baseURI + 'api/',
apiVersion: '5',
appTitle: 'Paperless-ngx',
version: '2.13.1',
version: '2.13.4',
webSocketHost: window.location.host,
webSocketProtocol: window.location.protocol == 'https:' ? 'wss:' : 'ws:',
webSocketBaseUrl: base_url.pathname + 'ws/',

View File

@@ -5348,7 +5348,7 @@
<context context-type="sourcefile">src/app/components/common/input/document-link/document-link.component.html</context>
<context context-type="linenumber">50</context>
</context-group>
<target state="needs-translation">Not found</target>
<target state="translated">No trobat</target>
</trans-unit>
<trans-unit id="5676637575587497817" datatype="html">
<source>Search for documents</source>

View File

@@ -3605,7 +3605,7 @@
</context-group>
<target state="final">Fehler beim Speichern des Feldes.</target>
</trans-unit>
<trans-unit id="4465085913683915434" datatype="html">
<trans-unit id="4465085913683915434" datatype="html" approved="yes">
<source>True</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
@@ -3619,9 +3619,9 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="translated">Wahr</target>
<target state="final">Wahr</target>
</trans-unit>
<trans-unit id="3800326155195149498" datatype="html">
<trans-unit id="3800326155195149498" datatype="html" approved="yes">
<source>False</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
@@ -3635,15 +3635,15 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">80</context>
</context-group>
<target state="translated">Falsch</target>
<target state="final">Falsch</target>
</trans-unit>
<trans-unit id="7551700625201096185" datatype="html">
<trans-unit id="7551700625201096185" datatype="html" approved="yes">
<source>Search docs...</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">96</context>
</context-group>
<target state="translated">Suche Dokumente...</target>
<target state="final">Suche Dokumente...</target>
</trans-unit>
<trans-unit id="3184700926171002527" datatype="html" approved="yes">
<source>Any</source>
@@ -3685,29 +3685,29 @@
</context-group>
<target state="final">Alle</target>
</trans-unit>
<trans-unit id="1496549861742963591" datatype="html">
<trans-unit id="1496549861742963591" datatype="html" approved="yes">
<source>Not</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">131</context>
</context-group>
<target state="translated">Nicht</target>
<target state="final">Nicht</target>
</trans-unit>
<trans-unit id="6548676277933116532" datatype="html">
<trans-unit id="6548676277933116532" datatype="html" approved="yes">
<source>Add query</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">150</context>
</context-group>
<target state="translated">Abfrage hinzufügen</target>
<target state="final">Abfrage hinzufügen</target>
</trans-unit>
<trans-unit id="5599577087865387184" datatype="html">
<trans-unit id="5599577087865387184" datatype="html" approved="yes">
<source>Add expression</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">153</context>
</context-group>
<target state="translated">Ausdruck hinzufügen</target>
<target state="final">Ausdruck hinzufügen</target>
</trans-unit>
<trans-unit id="6052766076365105714" datatype="html" approved="yes">
<source>now</source>
@@ -4513,13 +4513,13 @@
</context-group>
<target state="final">Pfad</target>
</trans-unit>
<trans-unit id="2816147949408898105" datatype="html">
<trans-unit id="2816147949408898105" datatype="html" approved="yes">
<source>See &lt;a target=&apos;_blank&apos; href=&apos;https://docs.paperless-ngx.com/advanced_usage/#file-name-handling&apos;&gt;the documentation&lt;/a&gt;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="translated">Siehe &lt;a target='_blank' href='https://docs.paperless-ngx.com/advanced_usage/#file-name-handling'&gt;Dokumentation&lt;/a&gt;.</target>
<target state="final">Siehe &lt;a target='_blank' href='https://docs.paperless-ngx.com/advanced_usage/#file-name-handling'&gt;Dokumentation&lt;/a&gt;.</target>
</trans-unit>
<trans-unit id="1295614462098694869" datatype="html" approved="yes">
<source>Preview</source>
@@ -4533,29 +4533,29 @@
</context-group>
<target state="final">Vorschau</target>
</trans-unit>
<trans-unit id="8057014866157903311" datatype="html">
<trans-unit id="8057014866157903311" datatype="html" approved="yes">
<source>Path test failed</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html</context>
<context context-type="linenumber">30</context>
</context-group>
<target state="translated">Pfadüberprüfung fehlgeschlagen</target>
<target state="final">Pfadüberprüfung fehlgeschlagen</target>
</trans-unit>
<trans-unit id="9116034231465034307" datatype="html">
<trans-unit id="9116034231465034307" datatype="html" approved="yes">
<source>No document selected</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html</context>
<context context-type="linenumber">32</context>
</context-group>
<target state="translated">Kein Dokument ausgewählt</target>
<target state="final">Kein Dokument ausgewählt</target>
</trans-unit>
<trans-unit id="2083498114116917092" datatype="html">
<trans-unit id="2083498114116917092" datatype="html" approved="yes">
<source>Search for a document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html</context>
<context context-type="linenumber">38</context>
</context-group>
<target state="translated">Ein Dokument suchen</target>
<target state="final">Ein Dokument suchen</target>
</trans-unit>
<trans-unit id="6423278459497515329" datatype="html" approved="yes">
<source>No documents found</source>
@@ -5342,21 +5342,21 @@
</context-group>
<target state="final">Link öffnen</target>
</trans-unit>
<trans-unit id="6595008830732269870" datatype="html">
<trans-unit id="6595008830732269870" datatype="html" approved="yes">
<source>Not found</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/document-link/document-link.component.html</context>
<context context-type="linenumber">50</context>
</context-group>
<target state="needs-translation">Not found</target>
<target state="final">Nicht gefunden</target>
</trans-unit>
<trans-unit id="5676637575587497817" datatype="html">
<trans-unit id="5676637575587497817" datatype="html" approved="yes">
<source>Search for documents</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/input/document-link/document-link.component.ts</context>
<context context-type="linenumber">53</context>
</context-group>
<target state="translated">Nach Dokumenten suchen</target>
<target state="final">Nach Dokumenten suchen</target>
</trans-unit>
<trans-unit id="8627133593113147800" datatype="html" approved="yes">
<source>Selected items</source>
@@ -8100,13 +8100,13 @@
</context-group>
<target state="final">Ohne Tag</target>
</trans-unit>
<trans-unit id="8644099678903817943" datatype="html">
<trans-unit id="8644099678903817943" datatype="html" approved="yes">
<source>Custom fields query</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">238</context>
</context-group>
<target state="translated">Benutzerdefinierte Feldabfrage</target>
<target state="final">Benutzerdefinierte Feldabfrage</target>
</trans-unit>
<trans-unit id="6523384805359286307" datatype="html" approved="yes">
<source>Title: <x id="PH" equiv-text="rule.value"/></source>
@@ -8296,7 +8296,7 @@
</context-group>
<target state="final">Datentyp</target>
</trans-unit>
<trans-unit id="6209318295562170730" datatype="html">
<trans-unit id="6209318295562170730" datatype="html" approved="yes">
<source>Filter Documents (<x id="INTERPOLATION" equiv-text="{{ field.document_count }}"/>)</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/custom-fields/custom-fields.component.html</context>
@@ -8318,7 +8318,7 @@
<context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.html</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="translated">Dokumente filtern (<x id="INTERPOLATION" equiv-text="{{ field.document_count }}"/>)</target>
<target state="final">Dokumente filtern (<x id="INTERPOLATION" equiv-text="{{ field.document_count }}"/>)</target>
</trans-unit>
<trans-unit id="651372623796033489" datatype="html" approved="yes">
<source>No fields defined.</source>
@@ -8408,21 +8408,21 @@
</context-group>
<target state="final">Konto hinzufügen</target>
</trans-unit>
<trans-unit id="5088684330574277786" datatype="html">
<trans-unit id="5088684330574277786" datatype="html" approved="yes">
<source>Connect Gmail Account</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/mail/mail.component.html</context>
<context context-type="linenumber">18</context>
</context-group>
<target state="translated">Gmail-Konto verbinden</target>
<target state="final">Gmail-Konto verbinden</target>
</trans-unit>
<trans-unit id="6630732552154686829" datatype="html">
<trans-unit id="6630732552154686829" datatype="html" approved="yes">
<source>Connect Outlook Account</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/mail/mail.component.html</context>
<context context-type="linenumber">23</context>
</context-group>
<target state="translated">Outlook-Konto verbinden</target>
<target state="final">Outlook-Konto verbinden</target>
</trans-unit>
<trans-unit id="2188854519574316630" datatype="html" approved="yes">
<source>Server</source>
@@ -8500,21 +8500,21 @@
</context-group>
<target state="final">Fehler beim Abrufen der E-Mail-Regeln</target>
</trans-unit>
<trans-unit id="763945516325093575" datatype="html">
<trans-unit id="763945516325093575" datatype="html" approved="yes">
<source>OAuth2 authentication success</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/mail/mail.component.ts</context>
<context context-type="linenumber">101</context>
</context-group>
<target state="translated">OAuth2-Authentifizierung erfolgreich</target>
<target state="final">OAuth2-Authentifizierung erfolgreich</target>
</trans-unit>
<trans-unit id="9022978370268070156" datatype="html">
<trans-unit id="9022978370268070156" datatype="html" approved="yes">
<source>OAuth2 authentication failed, see logs for details</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/mail/mail.component.ts</context>
<context context-type="linenumber">112</context>
</context-group>
<target state="translated">OAuth2-Authentifizierung fehlgeschlagen, siehe Protokolle für Details</target>
<target state="final">OAuth2-Authentifizierung fehlgeschlagen, siehe Protokolle für Details</target>
</trans-unit>
<trans-unit id="6327501535846658797" datatype="html" approved="yes">
<source>Saved account &quot;<x id="PH" equiv-text="newMailAccount.name"/>&quot;.</source>
@@ -9000,93 +9000,93 @@
</context-group>
<target state="final">Zur Startseite</target>
</trans-unit>
<trans-unit id="7088714514100361567" datatype="html">
<trans-unit id="7088714514100361567" datatype="html" approved="yes">
<source>Equal to</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/custom-field-query.ts</context>
<context context-type="linenumber">24</context>
</context-group>
<target state="translated">Ist gleich</target>
<target state="final">Ist gleich</target>
</trans-unit>
<trans-unit id="2841739558138901231" datatype="html">
<trans-unit id="2841739558138901231" datatype="html" approved="yes">
<source>In</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/custom-field-query.ts</context>
<context context-type="linenumber">25</context>
</context-group>
<target state="translated">In</target>
<target state="final">In</target>
</trans-unit>
<trans-unit id="6504828068656625171" datatype="html">
<trans-unit id="6504828068656625171" datatype="html" approved="yes">
<source>Is null</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/custom-field-query.ts</context>
<context context-type="linenumber">26</context>
</context-group>
<target state="translated">Ist null</target>
<target state="final">Ist null</target>
</trans-unit>
<trans-unit id="4112599358351148632" datatype="html">
<trans-unit id="4112599358351148632" datatype="html" approved="yes">
<source>Exists</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/custom-field-query.ts</context>
<context context-type="linenumber">27</context>
</context-group>
<target state="translated">Existiert</target>
<target state="final">Existiert</target>
</trans-unit>
<trans-unit id="6238291467288576076" datatype="html">
<trans-unit id="6238291467288576076" datatype="html" approved="yes">
<source>Contains</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/custom-field-query.ts</context>
<context context-type="linenumber">28</context>
</context-group>
<target state="translated">Enthält</target>
<target state="final">Enthält</target>
</trans-unit>
<trans-unit id="870133374397538941" datatype="html">
<trans-unit id="870133374397538941" datatype="html" approved="yes">
<source>Contains (case-insensitive)</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/custom-field-query.ts</context>
<context context-type="linenumber">29</context>
</context-group>
<target state="translated">Enthält (beachte Groß- und Kleinschreibung)</target>
<target state="final">Enthält (beachte Groß- und Kleinschreibung)</target>
</trans-unit>
<trans-unit id="7732309408488818531" datatype="html">
<trans-unit id="7732309408488818531" datatype="html" approved="yes">
<source>Greater than</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/custom-field-query.ts</context>
<context context-type="linenumber">30</context>
</context-group>
<target state="translated">Größer als</target>
<target state="final">Größer als</target>
</trans-unit>
<trans-unit id="9087788064443057357" datatype="html">
<trans-unit id="9087788064443057357" datatype="html" approved="yes">
<source>Greater than or equal to</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/custom-field-query.ts</context>
<context context-type="linenumber">31</context>
</context-group>
<target state="translated">Größer oder gleich</target>
<target state="final">Größer oder gleich</target>
</trans-unit>
<trans-unit id="5995604223909447366" datatype="html">
<trans-unit id="5995604223909447366" datatype="html" approved="yes">
<source>Less than</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/custom-field-query.ts</context>
<context context-type="linenumber">32</context>
</context-group>
<target state="translated">Kleiner als</target>
<target state="final">Kleiner als</target>
</trans-unit>
<trans-unit id="6989379963430864867" datatype="html">
<trans-unit id="6989379963430864867" datatype="html" approved="yes">
<source>Less than or equal to</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/custom-field-query.ts</context>
<context context-type="linenumber">33</context>
</context-group>
<target state="translated">Kleiner oder gleich</target>
<target state="final">Kleiner oder gleich</target>
</trans-unit>
<trans-unit id="2348971518300945764" datatype="html">
<trans-unit id="2348971518300945764" datatype="html" approved="yes">
<source>Range</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/custom-field-query.ts</context>
<context context-type="linenumber">34</context>
</context-group>
<target state="translated">Bereich</target>
<target state="final">Bereich</target>
</trans-unit>
<trans-unit id="969459137986754249" datatype="html" approved="yes">
<source>Boolean</source>

View File

@@ -5348,7 +5348,7 @@
<context context-type="sourcefile">src/app/components/common/input/document-link/document-link.component.html</context>
<context context-type="linenumber">50</context>
</context-group>
<target state="needs-translation">Not found</target>
<target state="translated">Non trouvé</target>
</trans-unit>
<trans-unit id="5676637575587497817" datatype="html">
<source>Search for documents</source>

View File

@@ -3619,7 +3619,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="needs-translation">True</target>
<target state="translated">Vero</target>
</trans-unit>
<trans-unit id="3800326155195149498" datatype="html">
<source>False</source>
@@ -3635,7 +3635,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">80</context>
</context-group>
<target state="needs-translation">False</target>
<target state="translated">Falso</target>
</trans-unit>
<trans-unit id="7551700625201096185" datatype="html">
<source>Search docs...</source>
@@ -3643,7 +3643,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">96</context>
</context-group>
<target state="needs-translation">Search docs...</target>
<target state="translated">Ricerca di documenti...</target>
</trans-unit>
<trans-unit id="3184700926171002527" datatype="html">
<source>Any</source>
@@ -3691,7 +3691,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">131</context>
</context-group>
<target state="needs-translation">Not</target>
<target state="translated">Non</target>
</trans-unit>
<trans-unit id="6548676277933116532" datatype="html">
<source>Add query</source>
@@ -3699,7 +3699,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">150</context>
</context-group>
<target state="needs-translation">Add query</target>
<target state="translated">Aggiungi query</target>
</trans-unit>
<trans-unit id="5599577087865387184" datatype="html">
<source>Add expression</source>
@@ -3707,7 +3707,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">153</context>
</context-group>
<target state="needs-translation">Add expression</target>
<target state="translated">Aggiungi espressione</target>
</trans-unit>
<trans-unit id="6052766076365105714" datatype="html">
<source>now</source>
@@ -4135,7 +4135,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
<context context-type="linenumber">19</context>
</context-group>
<target state="needs-translation">Order</target>
<target state="translated">Priorità</target>
</trans-unit>
<trans-unit id="4816216590591222133" datatype="html">
<source>Enabled</source>
@@ -4519,7 +4519,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">See &lt;a target='_blank' href='https://docs.paperless-ngx.com/advanced_usage/#file-name-handling'&gt;the documentation&lt;/a&gt;.</target>
<target state="translated">Vedi &lt;a target='_blank' href='https://docs.paperless-ngx.com/advanced_usage/#file-name-handling'&gt;la documentazione&lt;/a&gt;.</target>
</trans-unit>
<trans-unit id="1295614462098694869" datatype="html">
<source>Preview</source>
@@ -4539,7 +4539,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html</context>
<context context-type="linenumber">30</context>
</context-group>
<target state="needs-translation">Path test failed</target>
<target state="translated">Test percorso non riuscito</target>
</trans-unit>
<trans-unit id="9116034231465034307" datatype="html">
<source>No document selected</source>
@@ -4547,7 +4547,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html</context>
<context context-type="linenumber">32</context>
</context-group>
<target state="needs-translation">No document selected</target>
<target state="translated">Nessun documento selezionato</target>
</trans-unit>
<trans-unit id="2083498114116917092" datatype="html">
<source>Search for a document</source>
@@ -4555,7 +4555,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html</context>
<context context-type="linenumber">38</context>
</context-group>
<target state="needs-translation">Search for a document</target>
<target state="translated">Ricerca di un documento</target>
</trans-unit>
<trans-unit id="6423278459497515329" datatype="html">
<source>No documents found</source>
@@ -5348,7 +5348,7 @@
<context context-type="sourcefile">src/app/components/common/input/document-link/document-link.component.html</context>
<context context-type="linenumber">50</context>
</context-group>
<target state="needs-translation">Not found</target>
<target state="translated">Non trovato</target>
</trans-unit>
<trans-unit id="5676637575587497817" datatype="html">
<source>Search for documents</source>

View File

@@ -1743,7 +1743,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Table</target>
<target state="translated">Tabell</target>
</trans-unit>
<trans-unit id="4236040382842528005" datatype="html">
<source>Small Cards</source>
@@ -1771,7 +1771,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">17</context>
</context-group>
<target state="needs-translation">Show</target>
<target state="translated">Visa</target>
</trans-unit>
<trans-unit id="5607669932062416162" datatype="html">
<source>Default</source>
@@ -2303,7 +2303,7 @@
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">223</context>
</context-group>
<target state="needs-translation">Trash</target>
<target state="translated">Papperskorg</target>
</trans-unit>
<trans-unit id="3818027200170621545" datatype="html">
<source>Manage trashed documents that are pending deletion.</source>
@@ -3307,7 +3307,7 @@
<context context-type="sourcefile">src/app/components/app-frame/global-search/global-search.component.html</context>
<context context-type="linenumber">131</context>
</context-group>
<target state="needs-translation">Users</target>
<target state="translated">Användare</target>
</trans-unit>
<trans-unit id="searchResults.groups" datatype="html">
<source>Groups</source>
@@ -3315,7 +3315,7 @@
<context context-type="sourcefile">src/app/components/app-frame/global-search/global-search.component.html</context>
<context context-type="linenumber">138</context>
</context-group>
<target state="needs-translation">Groups</target>
<target state="translated">Grupper</target>
</trans-unit>
<trans-unit id="searchResults.customFields" datatype="html">
<source>Custom fields</source>
@@ -3471,7 +3471,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">7,8</context>
</context-group>
<target state="needs-translation">of <x id="INTERPOLATION" equiv-text="{{totalPages}}"/></target>
<target state="translated">av <x id="INTERPOLATION" equiv-text="{{totalPages}}"/></target>
</trans-unit>
<trans-unit id="6903610408081711391" datatype="html">
<source>Pages to remove</source>
@@ -3487,7 +3487,7 @@
<context context-type="sourcefile">src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="needs-translation">Documents:</target>
<target state="translated">Dokument:</target>
</trans-unit>
<trans-unit id="7508164375697837821" datatype="html">
<source>Use metadata from:</source>
@@ -3579,7 +3579,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
<context context-type="linenumber">21</context>
</context-group>
<target state="needs-translation">Create new field</target>
<target state="translated">Skapa nytt fält</target>
</trans-unit>
<trans-unit id="6973528734330066202" datatype="html">
<source>Saved field &quot;<x id="PH" equiv-text="newField.name"/>&quot;.</source>
@@ -3939,7 +3939,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts</context>
<context context-type="linenumber">84</context>
</context-group>
<target state="needs-translation">Edit custom field</target>
<target state="translated">Redigera anpassat fält</target>
</trans-unit>
<trans-unit id="6672809941092516947" datatype="html" approved="yes">
<source>Create new document type</source>
@@ -5356,7 +5356,7 @@
<context context-type="sourcefile">src/app/components/common/input/document-link/document-link.component.ts</context>
<context context-type="linenumber">53</context>
</context-group>
<target state="needs-translation">Search for documents</target>
<target state="translated">Sök efter dokument</target>
</trans-unit>
<trans-unit id="8627133593113147800" datatype="html">
<source>Selected items</source>
@@ -5653,7 +5653,7 @@
<context context-type="sourcefile">src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html</context>
<context context-type="linenumber">23</context>
</context-group>
<target state="needs-translation">Confirm Password</target>
<target state="translated">Bekräfta lösenord</target>
</trans-unit>
<trans-unit id="7554924397178347823" datatype="html">
<source>API Auth Token</source>
@@ -5905,7 +5905,7 @@
<context context-type="sourcefile">src/app/components/common/share-links-dropdown/share-links-dropdown.component.ts</context>
<context context-type="linenumber">94</context>
</context-group>
<target state="needs-translation">1 day</target>
<target state="translated">1 dag</target>
</trans-unit>
<trans-unit id="8542568275115626925" datatype="html">
<source>7 days</source>
@@ -5945,7 +5945,7 @@
<context context-type="sourcefile">src/app/components/common/share-links-dropdown/share-links-dropdown.component.ts</context>
<context context-type="linenumber">94</context>
</context-group>
<target state="needs-translation"><x id="PH" equiv-text="days"/> days</target>
<target state="translated"><x id="PH" equiv-text="days"/> dagar</target>
</trans-unit>
<trans-unit id="2897042887615940599" datatype="html">
<source>Error deleting link</source>
@@ -6025,7 +6025,7 @@
<context context-type="sourcefile">src/app/components/common/system-status-dialog/system-status-dialog.component.html</context>
<context context-type="linenumber">41</context>
</context-group>
<target state="needs-translation">Database</target>
<target state="translated">Databas</target>
</trans-unit>
<trans-unit id="5611592591303869712" datatype="html">
<source>Status</source>
@@ -6045,7 +6045,7 @@
<context context-type="sourcefile">src/app/components/manage/workflows/workflows.component.html</context>
<context context-type="linenumber">19</context>
</context-group>
<target state="needs-translation">Status</target>
<target state="translated">Status</target>
</trans-unit>
<trans-unit id="2256165083739630668" datatype="html">
<source>Migration Status</source>
@@ -6085,7 +6085,7 @@
<context context-type="sourcefile">src/app/components/common/system-status-dialog/system-status-dialog.component.html</context>
<context context-type="linenumber">83</context>
</context-group>
<target state="needs-translation">Tasks</target>
<target state="translated">Uppgifter</target>
</trans-unit>
<trans-unit id="6911698235105017958" datatype="html">
<source>Redis Status</source>
@@ -6157,7 +6157,7 @@
<context context-type="sourcefile">src/app/components/dashboard/dashboard.component.ts</context>
<context context-type="linenumber">40</context>
</context-group>
<target state="needs-translation">Welcome to <x id="PH" equiv-text="environment.appTitle"/></target>
<target state="translated">Välkommen till <x id="PH" equiv-text="environment.appTitle"/></target>
</trans-unit>
<trans-unit id="1325877348738783391" datatype="html">
<source>Dashboard updated</source>
@@ -6892,7 +6892,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">502</context>
</context-group>
<target state="needs-translation">Save document</target>
<target state="translated">Spara dokument</target>
</trans-unit>
<trans-unit id="5758784066858623886" datatype="html">
<source>Error retrieving metadata</source>
@@ -9142,7 +9142,7 @@
<context context-type="sourcefile">src/app/data/custom-field.ts</context>
<context context-type="linenumber">42</context>
</context-group>
<target state="needs-translation">Url</target>
<target state="translated">URL</target>
</trans-unit>
<trans-unit id="3650316326183661476" datatype="html">
<source>Document Link</source>
@@ -9295,7 +9295,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">83</context>
</context-group>
<target state="needs-translation">Language</target>
<target state="translated">Språk</target>
</trans-unit>
<trans-unit id="1713271461473302108" datatype="html">
<source>Mode</source>
@@ -9487,7 +9487,7 @@
<context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context>
<context context-type="linenumber">14</context>
</context-group>
<target state="needs-translation">%s year ago</target>
<target state="translated">%s år sedan</target>
</trans-unit>
<trans-unit id="3393387677918927062" datatype="html">
<source>%s years ago</source>
@@ -9495,7 +9495,7 @@
<context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context>
<context context-type="linenumber">15</context>
</context-group>
<target state="needs-translation">%s years ago</target>
<target state="translated">%s år sedan</target>
</trans-unit>
<trans-unit id="3053246523831285824" datatype="html">
<source>%s month ago</source>
@@ -9503,7 +9503,7 @@
<context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context>
<context context-type="linenumber">19</context>
</context-group>
<target state="needs-translation">%s month ago</target>
<target state="translated">%s månad sedan</target>
</trans-unit>
<trans-unit id="1158628882375251480" datatype="html">
<source>%s months ago</source>
@@ -9511,7 +9511,7 @@
<context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context>
<context context-type="linenumber">20</context>
</context-group>
<target state="needs-translation">%s months ago</target>
<target state="translated">%s månader sedan</target>
</trans-unit>
<trans-unit id="7039133412826927309" datatype="html">
<source>%s week ago</source>
@@ -9519,7 +9519,7 @@
<context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context>
<context context-type="linenumber">24</context>
</context-group>
<target state="needs-translation">%s week ago</target>
<target state="translated">%s vecka sedan</target>
</trans-unit>
<trans-unit id="2896962543647781653" datatype="html">
<source>%s weeks ago</source>
@@ -9527,7 +9527,7 @@
<context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context>
<context context-type="linenumber">25</context>
</context-group>
<target state="needs-translation">%s weeks ago</target>
<target state="translated">%s veckor sedan</target>
</trans-unit>
<trans-unit id="91416192007234700" datatype="html">
<source>%s day ago</source>
@@ -9535,7 +9535,7 @@
<context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context>
<context context-type="linenumber">29</context>
</context-group>
<target state="needs-translation">%s day ago</target>
<target state="translated">%s dag sedan</target>
</trans-unit>
<trans-unit id="5601594741748068208" datatype="html">
<source>%s days ago</source>
@@ -9543,7 +9543,7 @@
<context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context>
<context context-type="linenumber">30</context>
</context-group>
<target state="needs-translation">%s days ago</target>
<target state="translated">%s dagar sedan</target>
</trans-unit>
<trans-unit id="8387405724402999437" datatype="html">
<source>%s hour ago</source>
@@ -9551,7 +9551,7 @@
<context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context>
<context context-type="linenumber">34</context>
</context-group>
<target state="needs-translation">%s hour ago</target>
<target state="translated">%s timme sedan</target>
</trans-unit>
<trans-unit id="2008395012733474465" datatype="html">
<source>%s hours ago</source>
@@ -9559,7 +9559,7 @@
<context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context>
<context context-type="linenumber">35</context>
</context-group>
<target state="needs-translation">%s hours ago</target>
<target state="translated">%s timmar sedan</target>
</trans-unit>
<trans-unit id="5782387980670840884" datatype="html">
<source>%s minute ago</source>
@@ -9567,7 +9567,7 @@
<context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context>
<context context-type="linenumber">39</context>
</context-group>
<target state="needs-translation">%s minute ago</target>
<target state="translated">%s minut sedan</target>
</trans-unit>
<trans-unit id="7573942914011074807" datatype="html">
<source>%s minutes ago</source>
@@ -9575,7 +9575,7 @@
<context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context>
<context context-type="linenumber">40</context>
</context-group>
<target state="needs-translation">%s minutes ago</target>
<target state="translated">%s minuter sedan</target>
</trans-unit>
<trans-unit id="4272436583644511364" datatype="html">
<source>Just now</source>
@@ -9583,7 +9583,7 @@
<context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context>
<context context-type="linenumber">72</context>
</context-group>
<target state="needs-translation">Just now</target>
<target state="translated">Just nu</target>
</trans-unit>
<trans-unit id="7536524521722799066" datatype="html" approved="yes">
<source>(no title)</source>
@@ -9923,7 +9923,7 @@
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">166</context>
</context-group>
<target state="needs-translation">Norwegian</target>
<target state="translated">Norska</target>
</trans-unit>
<trans-unit id="792060551707690640" datatype="html" approved="yes">
<source>Polish</source>

View File

@@ -1743,7 +1743,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Table</target>
<target state="translated">表格</target>
</trans-unit>
<trans-unit id="4236040382842528005" datatype="html">
<source>Small Cards</source>
@@ -2371,7 +2371,7 @@
<context context-type="sourcefile">src/app/components/admin/trash/trash.component.html</context>
<context context-type="linenumber">89</context>
</context-group>
<target state="needs-translation">{VAR_PLURAL, plural, =1 {One document in trash} other {<x id="INTERPOLATION"/> total documents in trash}}</target>
<target state="translated">{VAR_PLURAL, plural, =1 {垃圾桶中有一份文件} other {垃圾桶中共有 <x id="INTERPOLATION"/> 份文件}}</target>
</trans-unit>
<trans-unit id="9021887951960049161" datatype="html">
<source>Confirm delete</source>
@@ -3619,7 +3619,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="needs-translation">True</target>
<target state="translated">真</target>
</trans-unit>
<trans-unit id="3800326155195149498" datatype="html">
<source>False</source>
@@ -3635,7 +3635,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">80</context>
</context-group>
<target state="needs-translation">False</target>
<target state="translated">假</target>
</trans-unit>
<trans-unit id="7551700625201096185" datatype="html">
<source>Search docs...</source>
@@ -3643,7 +3643,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">96</context>
</context-group>
<target state="needs-translation">Search docs...</target>
<target state="translated">搜索文档...</target>
</trans-unit>
<trans-unit id="3184700926171002527" datatype="html">
<source>Any</source>
@@ -3691,7 +3691,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">131</context>
</context-group>
<target state="needs-translation">Not</target>
<target state="translated">否</target>
</trans-unit>
<trans-unit id="6548676277933116532" datatype="html">
<source>Add query</source>
@@ -3699,7 +3699,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">150</context>
</context-group>
<target state="needs-translation">Add query</target>
<target state="translated">添加查询</target>
</trans-unit>
<trans-unit id="5599577087865387184" datatype="html">
<source>Add expression</source>
@@ -3707,7 +3707,7 @@
<context context-type="sourcefile">src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html</context>
<context context-type="linenumber">153</context>
</context-group>
<target state="needs-translation">Add expression</target>
<target state="translated">添加表达式</target>
</trans-unit>
<trans-unit id="6052766076365105714" datatype="html">
<source>now</source>
@@ -4135,7 +4135,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
<context context-type="linenumber">19</context>
</context-group>
<target state="needs-translation">Order</target>
<target state="translated">顺序</target>
</trans-unit>
<trans-unit id="4816216590591222133" datatype="html">
<source>Enabled</source>
@@ -4519,7 +4519,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">See &lt;a target='_blank' href='https://docs.paperless-ngx.com/advanced_usage/#file-name-handling'&gt;the documentation&lt;/a&gt;.</target>
<target state="translated">请参阅 &lt;a target='_blank' href='https://docs.paperless-ngx.com/advanced_usage/#file-name-handling'&gt;文档&lt;/a&gt;</target>
</trans-unit>
<trans-unit id="1295614462098694869" datatype="html">
<source>Preview</source>
@@ -4539,7 +4539,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html</context>
<context context-type="linenumber">30</context>
</context-group>
<target state="needs-translation">Path test failed</target>
<target state="translated">路径测试失败</target>
</trans-unit>
<trans-unit id="9116034231465034307" datatype="html">
<source>No document selected</source>
@@ -4547,7 +4547,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html</context>
<context context-type="linenumber">32</context>
</context-group>
<target state="needs-translation">No document selected</target>
<target state="translated">没有选择文档</target>
</trans-unit>
<trans-unit id="2083498114116917092" datatype="html">
<source>Search for a document</source>
@@ -4555,7 +4555,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html</context>
<context context-type="linenumber">38</context>
</context-group>
<target state="needs-translation">Search for a document</target>
<target state="translated">搜索文档</target>
</trans-unit>
<trans-unit id="6423278459497515329" datatype="html">
<source>No documents found</source>
@@ -4759,7 +4759,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">33</context>
</context-group>
<target state="needs-translation">Add Trigger</target>
<target state="translated">添加触发器</target>
</trans-unit>
<trans-unit id="6882912390704300247" datatype="html">
<source>Apply Actions:</source>
@@ -4767,7 +4767,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">73</context>
</context-group>
<target state="needs-translation">Apply Actions:</target>
<target state="translated">应用操作:</target>
</trans-unit>
<trans-unit id="51883444329775670" datatype="html">
<source>Add Action</source>
@@ -4775,7 +4775,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">75</context>
</context-group>
<target state="needs-translation">Add Action</target>
<target state="translated">添加动作</target>
</trans-unit>
<trans-unit id="3288318211116868972" datatype="html">
<source>Trigger type</source>
@@ -4783,7 +4783,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">121</context>
</context-group>
<target state="needs-translation">Trigger type</target>
<target state="translated">触发类型</target>
</trans-unit>
<trans-unit id="8727727835543352574" datatype="html">
<source>Trigger for documents that match <x id="START_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;em&gt;"/>all<x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> filters specified below.</source>
@@ -4791,7 +4791,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">122</context>
</context-group>
<target state="needs-translation">Trigger for documents that match <x id="START_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;em&gt;"/>all<x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> filters specified below.</target>
<target state="translated">触发匹配下面指定的 <x id="START_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;em&gt;"/>所有<x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> 过滤器的文档。</target>
</trans-unit>
<trans-unit id="7467799586957602479" datatype="html">
<source>Filter filename</source>
@@ -4831,7 +4831,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">128</context>
</context-group>
<target state="needs-translation">Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.&lt;/a&gt;</target>
<target state="translated">应用于匹配此路径的文档。允许指定为*的通配符。不区分大小写。&lt;/a&gt;</target>
</trans-unit>
<trans-unit id="7468453896129193641" datatype="html">
<source>Filter mail rule</source>
@@ -4847,7 +4847,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">129</context>
</context-group>
<target state="needs-translation">Apply to documents consumed via this mail rule.</target>
<target state="translated">应用于通过此邮件规则消费的文档。</target>
</trans-unit>
<trans-unit id="6840369584127435743" datatype="html">
<source>Content matching algorithm</source>
@@ -4855,7 +4855,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">132</context>
</context-group>
<target state="needs-translation">Content matching algorithm</target>
<target state="translated">内容匹配算法</target>
</trans-unit>
<trans-unit id="510635115034690805" datatype="html">
<source>Content matching pattern</source>
@@ -4863,7 +4863,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">134</context>
</context-group>
<target state="needs-translation">Content matching pattern</target>
<target state="translated">内容匹配模式</target>
</trans-unit>
<trans-unit id="3484236514968690689" datatype="html">
<source>Has any of tags</source>
@@ -4871,7 +4871,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">143</context>
</context-group>
<target state="needs-translation">Has any of tags</target>
<target state="translated">有任何标签</target>
</trans-unit>
<trans-unit id="5281365940563983618" datatype="html">
<source>Has correspondent</source>
@@ -4879,7 +4879,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">144</context>
</context-group>
<target state="needs-translation">Has correspondent</target>
<target state="translated">已有联系人</target>
</trans-unit>
<trans-unit id="4806713133917046341" datatype="html">
<source>Has document type</source>
@@ -4887,7 +4887,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">145</context>
</context-group>
<target state="needs-translation">Has document type</target>
<target state="translated">有文档类型</target>
</trans-unit>
<trans-unit id="6417103744331194518" datatype="html">
<source>Action type</source>
@@ -4895,7 +4895,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">155</context>
</context-group>
<target state="needs-translation">Action type</target>
<target state="translated">操作类型</target>
</trans-unit>
<trans-unit id="6019822389883736115" datatype="html">
<source>Assign title</source>
@@ -4911,7 +4911,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">160</context>
</context-group>
<target state="needs-translation">Can include some placeholders, see &lt;a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'&gt;documentation&lt;/a&gt;.</target>
<target state="translated">可以包含一些占位符,请参阅 &lt;a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'&gt;文档&lt;/a&gt;</target>
</trans-unit>
<trans-unit id="6528897010417701530" datatype="html">
<source>Assign tags</source>
@@ -4967,7 +4967,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">216</context>
</context-group>
<target state="needs-translation">Remove tags</target>
<target state="translated">移除标签</target>
</trans-unit>
<trans-unit id="7890599006071681081" datatype="html">
<source>Remove all</source>
@@ -4999,7 +4999,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">254</context>
</context-group>
<target state="needs-translation">Remove all</target>
<target state="translated">移除全部</target>
</trans-unit>
<trans-unit id="8636414563726517994" datatype="html">
<source>Remove correspondents</source>
@@ -5007,7 +5007,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">222</context>
</context-group>
<target state="needs-translation">Remove correspondents</target>
<target state="translated">移除所有通讯员</target>
</trans-unit>
<trans-unit id="5305293055593064952" datatype="html">
<source>Remove document types</source>
@@ -5015,7 +5015,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
<context context-type="linenumber">228</context>
</context-group>
<target state="needs-translation">Remove document types</target>
<target state="translated">移除所有文档类型</target>
</trans-unit>
<trans-unit id="2400388879708187" datatype="html">
<source>Remove storage paths</source>
@@ -5473,7 +5473,7 @@
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">41</context>
</context-group>
<target state="needs-translation">Filter documents with these Tags</target>
<target state="translated">按标签过滤</target>
</trans-unit>
<trans-unit id="5752465522295465624" datatype="html">
<source>What&apos;s this?</source>
@@ -5537,7 +5537,7 @@
<context context-type="sourcefile">src/app/components/common/permissions-dialog/permissions-dialog.component.ts</context>
<context context-type="linenumber">75</context>
</context-group>
<target state="needs-translation">Any and all existing owner, user and group permissions will be replaced.</target>
<target state="translated"/>
</trans-unit>
<trans-unit id="5947558132119506443" datatype="html">
<source>My documents</source>

View File

@@ -8,7 +8,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">Close</target>
<target state="translated">關閉</target>
</trans-unit>
<trans-unit id="ngb.timepicker.HH" datatype="html">
<source>HH</source>
@@ -16,7 +16,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">HH</target>
<target state="translated">HH</target>
</trans-unit>
<trans-unit id="ngb.toast.close-aria" datatype="html">
<source>Close</source>
@@ -24,7 +24,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">Close</target>
<target state="translated">關閉</target>
</trans-unit>
<trans-unit id="ngb.datepicker.select-month" datatype="html">
<source>Select month</source>
@@ -36,7 +36,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">Select month</target>
<target state="translated">選取月份</target>
</trans-unit>
<trans-unit id="ngb.pagination.first" datatype="html">
<source>««</source>
@@ -56,7 +56,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">Previous month</target>
<target state="translated">上個月</target>
</trans-unit>
<trans-unit id="ngb.progressbar.value" datatype="html">
<source>
@@ -82,7 +82,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">Hours</target>
<target state="translated">小時</target>
</trans-unit>
<trans-unit id="ngb.pagination.previous" datatype="html">
<source>«</source>
@@ -98,7 +98,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">Previous</target>
<target state="translated">上一個</target>
</trans-unit>
<trans-unit id="ngb.timepicker.MM" datatype="html">
<source>MM</source>
@@ -106,7 +106,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">MM</target>
<target state="translated">MM</target>
</trans-unit>
<trans-unit id="ngb.pagination.next" datatype="html">
<source>»</source>
@@ -126,7 +126,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">Select year</target>
<target state="translated">選擇年份</target>
</trans-unit>
<trans-unit id="ngb.datepicker.next-month" datatype="html">
<source>Next month</source>
@@ -138,7 +138,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">Next month</target>
<target state="translated">下一個月</target>
</trans-unit>
<trans-unit id="ngb.carousel.next" datatype="html">
<source>Next</source>
@@ -146,7 +146,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">Next</target>
<target state="translated">下一個</target>
</trans-unit>
<trans-unit id="ngb.timepicker.minutes" datatype="html">
<source>Minutes</source>
@@ -154,7 +154,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">Minutes</target>
<target state="translated">分鐘</target>
</trans-unit>
<trans-unit id="ngb.pagination.last" datatype="html">
<source>»»</source>
@@ -170,7 +170,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">First</target>
<target state="translated">第一頁</target>
</trans-unit>
<trans-unit id="ngb.timepicker.increment-hours" datatype="html">
<source>Increment hours</source>
@@ -186,7 +186,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">Previous</target>
<target state="translated">上一頁</target>
</trans-unit>
<trans-unit id="ngb.timepicker.decrement-hours" datatype="html">
<source>Decrement hours</source>
@@ -202,7 +202,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">Next</target>
<target state="translated">下一頁</target>
</trans-unit>
<trans-unit id="ngb.timepicker.increment-minutes" datatype="html">
<source>Increment minutes</source>
@@ -218,7 +218,7 @@
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
</context-group>
<target state="needs-translation">Last</target>
<target state="translated">最後一頁</target>
</trans-unit>
<trans-unit id="ngb.timepicker.decrement-minutes" datatype="html">
<source>Decrement minutes</source>

View File

@@ -490,9 +490,23 @@ ul.pagination {
.doc-img-container {
border: none !important;
border-top-left-radius: .25rem;
border-top-right-radius: .25rem;
overflow: hidden;
.doc-img {
overflow: visible;
}
}
.card-selected {
border-color:var(--bs-primary);
.document-card-check {
display: block;
}
.doc-img-container {
background-color: var(--pngx-primary-faded);
}
}
table.table {
@@ -705,6 +719,8 @@ i-bs svg {
vertical-align: text-bottom;
}
.document-card .card-footer i-bs svg {
vertical-align: middle;
.document-card {
.card-footer i-bs svg {
vertical-align: middle;
}
}

View File

@@ -183,7 +183,7 @@ $form-check-radio-checked-bg-image-dark: url("data:image/svg+xml,<svg xmlns='htt
}
.doc-img {
mix-blend-mode: normal !important;
mix-blend-mode: normal;
border-radius: 0;
border-color: var(--bs-border-color);
filter: invert(10%);
@@ -201,6 +201,24 @@ $form-check-radio-checked-bg-image-dark: url("data:image/svg+xml,<svg xmlns='htt
mix-blend-mode: luminosity;
}
@supports (hanging-punctuation: first) and (font: -apple-system-body) and (-webkit-appearance: none) {
// Safari does not like the filters on the image, see https://github.com/paperless-ngx/paperless-ngx/pull/8121
.doc-img-container {
background-color: #ffffff;
}
.doc-img {
filter: none !important;
box-shadow: inset 0px 0px 0px 10px rgba(0,0,0,1);
}
.doc-img.inverted {
filter: none !important;
mix-blend-mode: difference;
opacity: 0.95;
}
}
.paperless-input-select .ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option:not(.ng-option-selected):hover,
.paperless-input-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked {
background-color: var(--bs-light) !important;

View File

@@ -411,6 +411,7 @@ class ConsumerPlugin(
self.unmodified_original = (
Path(tempdir.name) / Path("uo") / Path(self.filename)
)
self.unmodified_original.parent.mkdir(exist_ok=True)
copy_file_with_basic_stats(
self.input_doc.original_file,
self.unmodified_original,

View File

@@ -424,20 +424,28 @@ class CustomFieldQueryParser:
value_field_name = "value_monetary_amount"
has_field = Q(custom_fields__field=custom_field)
# Our special exists operator.
if op == "exists":
field_filter = has_field if value else ~has_field
else:
field_filter = has_field & Q(
**{f"custom_fields__{value_field_name}__{op}": value},
)
# We need to use an annotation here because different atoms
# might be referring to different instances of custom fields.
annotation_name = f"_custom_field_filter_{len(self._annotations)}"
self._annotations[annotation_name] = Count("custom_fields", filter=field_filter)
return Q(**{f"{annotation_name}__gt": 0})
# Our special exists operator.
if op == "exists":
annotation = Count("custom_fields", filter=has_field)
# A Document should have > 0 match if it has this field, or 0 if doesn't.
query_op = "gt" if value else "exact"
query = Q(**{f"{annotation_name}__{query_op}": 0})
else:
# Check if 1) custom field name matches, and 2) value satisfies condition
field_filter = has_field & Q(
**{f"custom_fields__{value_field_name}__{op}": value},
)
# Annotate how many matching custom fields each document has
annotation = Count("custom_fields", filter=field_filter)
# Filter document by count
query = Q(**{f"{annotation_name}__gt": 0})
self._annotations[annotation_name] = annotation
return query
@handle_validation_prefix
def _get_custom_field(self, id_or_name):

View File

@@ -24,7 +24,6 @@ from django.utils import timezone
from filelock import FileLock
from guardian.models import GroupObjectPermission
from guardian.models import UserObjectPermission
from rest_framework.authtoken.models import Token
if TYPE_CHECKING:
from django.db.models import QuerySet
@@ -271,7 +270,6 @@ class Command(CryptMixin, BaseCommand):
"social_accounts": SocialAccount.objects.all(),
"social_apps": SocialApp.objects.all(),
"social_tokens": SocialToken.objects.all(),
"auth_tokens": Token.objects.all(),
}
if settings.AUDIT_LOG_ENABLED:
@@ -570,11 +568,7 @@ class Command(CryptMixin, BaseCommand):
value=manifest_record["fields"][field],
)
elif (
MailAccount.objects.count() > 0
or SocialToken.objects.count() > 0
or Token.objects.count() > 0
):
elif MailAccount.objects.count() > 0 or SocialToken.objects.count() > 0:
self.stdout.write(
self.style.NOTICE(
"No passphrase was given, sensitive fields will be in plaintext",

View File

@@ -108,13 +108,6 @@ class CryptMixin:
"token_secret",
],
},
{
"exporter_key": "auth_tokens",
"model_name": "authtoken.token",
"fields": [
"key",
],
},
]
def get_crypt_params(self) -> dict[str, dict[str, str | int]]:

View File

@@ -289,6 +289,12 @@ class TestCustomFieldsSearch(DirectoriesMixin, APITestCase):
lambda document: "string_field" in document,
)
def test_exists_false(self):
self._assert_query_match_predicate(
["string_field", "exists", False],
lambda document: "string_field" not in document,
)
def test_select(self):
# For select fields, you can either specify the index
# or the name of the option. They function exactly the same.

View File

@@ -8,6 +8,9 @@ from pathlib import Path
from unittest import mock
from zipfile import ZipFile
from allauth.socialaccount.models import SocialAccount
from allauth.socialaccount.models import SocialApp
from allauth.socialaccount.models import SocialToken
from django.contrib.auth.models import Group
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
@@ -874,6 +877,23 @@ class TestCryptExportImport(
password="mypassword",
)
app = SocialApp.objects.create(
provider="test",
name="test",
client_id="test",
)
account = SocialAccount.objects.create(
user=User.objects.first(),
provider="test",
uid="test",
)
SocialToken.objects.create(
app=app,
account=account,
token="test",
token_secret="test",
)
call_command(
"document_exporter",
"--no-progress-bar",
@@ -912,6 +932,9 @@ class TestCryptExportImport(
self.assertIsNotNone(account)
self.assertEqual(account.password, "mypassword")
social_token = SocialToken.objects.first()
self.assertIsNotNone(social_token)
def test_import_crypt_no_passphrase(self):
"""
GIVEN:

View File

@@ -8,7 +8,7 @@ class TestMigrateWorkflow(TestMigrations):
dependencies = (
(
"paperless_mail",
"0027_mailaccount_expiration_mailaccount_account_type_and_more",
"0028_alter_mailaccount_password_and_more",
),
)

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-19 22:56-0700\n"
"PO-Revision-Date: 2024-10-22 00:30\n"
"PO-Revision-Date: 2024-10-29 12:12\n"
"Last-Translator: \n"
"Language-Team: Catalan\n"
"Language: ca_ES\n"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-19 22:56-0700\n"
"PO-Revision-Date: 2024-10-20 12:11\n"
"PO-Revision-Date: 2024-11-02 00:29\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -47,7 +47,7 @@ msgstr "{name!r} ist kein gültiges benutzerdefiniertes Feld."
#: documents/filters.py:492
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} unterstützt Abfrage expr {expr!r} nicht."
msgstr "{data_type} unterstützt den Abfrageausdruck {expr!r} nicht."
#: documents/filters.py:600
msgid "Maximum nesting depth exceeded."
@@ -1547,11 +1547,11 @@ msgstr "IMAP"
#: paperless_mail/models.py:20
msgid "Gmail OAuth"
msgstr "Gmail OAuth"
msgstr "Gmail-OAuth"
#: paperless_mail/models.py:21
msgid "Outlook OAuth"
msgstr "Outlook OAuh"
msgstr "Outlook-OAuth"
#: paperless_mail/models.py:25
msgid "IMAP server"
@@ -1599,7 +1599,7 @@ msgstr "Aktualisierungstoken"
#: paperless_mail/models.py:71
msgid "The refresh token to use for token authentication e.g. with oauth2."
msgstr "Das Aktualisierungstoken für die Tokenauthentifizierung z.B. mit OAuth2."
msgstr "Das Aktualisierungstoken, das für die Tokenauthentifizierung (z.B. mit OAuth2) verwendet werden soll."
#: paperless_mail/models.py:80
msgid "The expiration date of the refresh token. "

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-19 22:56-0700\n"
"PO-Revision-Date: 2024-10-20 05:58\n"
"PO-Revision-Date: 2024-11-03 04:57\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -23,35 +23,35 @@ msgstr "Documentos"
#: documents/filters.py:334
msgid "Value must be valid JSON."
msgstr ""
msgstr "El valor debe ser JSON válido."
#: documents/filters.py:353
msgid "Invalid custom field query expression"
msgstr ""
msgstr "Expresión de consulta de campo personalizado no válida"
#: documents/filters.py:363
msgid "Invalid expression list. Must be nonempty."
msgstr ""
msgstr "Lista de expresiones no válida. Debe ser no vacía."
#: documents/filters.py:384
msgid "Invalid logical operator {op!r}"
msgstr ""
msgstr "Operador lógico inválido {op!r}"
#: documents/filters.py:398
msgid "Maximum number of query conditions exceeded."
msgstr ""
msgstr "Se ha superado el número máximo de condiciones de consulta."
#: documents/filters.py:455
msgid "{name!r} is not a valid custom field."
msgstr ""
msgstr "{nombre!r} no es un campo personalizado válido."
#: documents/filters.py:492
msgid "{data_type} does not support query expr {expr!r}."
msgstr ""
msgstr "{data_type} no admite la consulta expr {expr!r}."
#: documents/filters.py:600
msgid "Maximum nesting depth exceeded."
msgstr ""
msgstr "Profundidad máxima de nidificación superada."
#: documents/models.py:41 documents/models.py:802
msgid "owner"
@@ -192,11 +192,11 @@ msgstr "La cadena de verificación del documento archivado."
#: documents/models.py:211
msgid "page count"
msgstr ""
msgstr "número de páginas"
#: documents/models.py:218
msgid "The number of pages of the document."
msgstr ""
msgstr "El número de páginas del documento."
#: documents/models.py:222 documents/models.py:402 documents/models.py:722
#: documents/models.py:760 documents/models.py:831 documents/models.py:889
@@ -353,7 +353,7 @@ msgstr "ASN"
#: documents/models.py:431
msgid "Pages"
msgstr ""
msgstr "Páginas"
#: documents/models.py:437
msgid "show on dashboard"
@@ -561,7 +561,7 @@ msgstr "no tiene campo personalizado"
#: documents/models.py:525
msgid "custom fields query"
msgstr ""
msgstr "consulta de campos personalizados"
#: documents/models.py:535
msgid "rule type"
@@ -1543,7 +1543,7 @@ msgstr "Usar STARTTLS"
#: paperless_mail/models.py:19
msgid "IMAP"
msgstr ""
msgstr "IMAP"
#: paperless_mail/models.py:20
msgid "Gmail OAuth"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-19 22:56-0700\n"
"PO-Revision-Date: 2024-10-25 12:12\n"
"PO-Revision-Date: 2024-10-29 00:31\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-19 22:56-0700\n"
"PO-Revision-Date: 2024-10-20 05:58\n"
"PO-Revision-Date: 2024-11-03 00:33\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -23,11 +23,11 @@ msgstr "Documenti"
#: documents/filters.py:334
msgid "Value must be valid JSON."
msgstr ""
msgstr "Il valore deve essere un JSON valido."
#: documents/filters.py:353
msgid "Invalid custom field query expression"
msgstr ""
msgstr "Espressione della query del campo personalizzato non valida"
#: documents/filters.py:363
msgid "Invalid expression list. Must be nonempty."
@@ -35,7 +35,7 @@ msgstr ""
#: documents/filters.py:384
msgid "Invalid logical operator {op!r}"
msgstr ""
msgstr "Operatore logico non valido {op!r}"
#: documents/filters.py:398
msgid "Maximum number of query conditions exceeded."
@@ -43,7 +43,7 @@ msgstr ""
#: documents/filters.py:455
msgid "{name!r} is not a valid custom field."
msgstr ""
msgstr "{name!r} non è un campo personalizzato valido."
#: documents/filters.py:492
msgid "{data_type} does not support query expr {expr!r}."

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-19 22:56-0700\n"
"PO-Revision-Date: 2024-10-26 12:11\n"
"PO-Revision-Date: 2024-10-29 12:12\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -23,7 +23,7 @@ msgstr "Dokumenty"
#: documents/filters.py:334
msgid "Value must be valid JSON."
msgstr ""
msgstr "Wartość musi być prawidłowym JSON."
#: documents/filters.py:353
msgid "Invalid custom field query expression"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-19 22:56-0700\n"
"PO-Revision-Date: 2024-10-25 12:12\n"
"PO-Revision-Date: 2024-11-02 00:29\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -1015,7 +1015,7 @@ msgstr "Vänligen logga in."
#: documents/templates/account/login.html:12
#, python-format
msgid "Don't have an account yet? <a href=\"%(signup_url)s\">Sign up</a>"
msgstr ""
msgstr "Har du inget konto än? <a href=\"%(signup_url)s\">Registrera dig</a>"
#: documents/templates/account/login.html:19
#: documents/templates/account/signup.html:15
@@ -1117,7 +1117,7 @@ msgstr ""
#: documents/templates/account/signup.html:10
#, python-format
msgid "Already have an account? <a href=\"%(login_url)s\">Sign in</a>"
msgstr ""
msgstr "Har du redan ett konto? <a href=\"%(login_url)s\">Logga in</a>"
#: documents/templates/account/signup.html:16
#: documents/templates/socialaccount/signup.html:14
@@ -1131,7 +1131,7 @@ msgstr ""
#: documents/templates/account/signup.html:36
#: documents/templates/socialaccount/signup.html:27
msgid "Sign up"
msgstr ""
msgstr "Registrera dig"
#: documents/templates/index.html:61
msgid "Paperless-ngx is loading..."
@@ -1170,7 +1170,7 @@ msgstr ""
#: documents/templates/socialaccount/login.html:13
msgid "Continue"
msgstr ""
msgstr "Fortsätt"
#: documents/templates/socialaccount/signup.html:5
msgid "Paperless-ngx social account sign up"
@@ -1366,7 +1366,7 @@ msgstr "Belarusiska"
#: paperless/settings.py:688
msgid "Bulgarian"
msgstr ""
msgstr "Bulgariska"
#: paperless/settings.py:689
msgid "Catalan"
@@ -1386,7 +1386,7 @@ msgstr "Tyska"
#: paperless/settings.py:693
msgid "Greek"
msgstr ""
msgstr "Grekiska"
#: paperless/settings.py:694
msgid "English (GB)"
@@ -1414,7 +1414,7 @@ msgstr "Italienska"
#: paperless/settings.py:700
msgid "Japanese"
msgstr ""
msgstr "Japanska"
#: paperless/settings.py:701
msgid "Korean"
@@ -1426,7 +1426,7 @@ msgstr "Luxemburgiska"
#: paperless/settings.py:703
msgid "Norwegian"
msgstr ""
msgstr "Norska"
#: paperless/settings.py:704
msgid "Dutch"
@@ -1542,7 +1542,7 @@ msgstr "Använd STARTTLS"
#: paperless_mail/models.py:19
msgid "IMAP"
msgstr ""
msgstr "IMAP"
#: paperless_mail/models.py:20
msgid "Gmail OAuth"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-19 22:56-0700\n"
"PO-Revision-Date: 2024-10-20 05:58\n"
"PO-Revision-Date: 2024-10-31 12:12\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Language: th_TH\n"
@@ -23,35 +23,35 @@ msgstr "เอกสาร"
#: documents/filters.py:334
msgid "Value must be valid JSON."
msgstr ""
msgstr "ค่า ต้องอยู่ในรูปแบบ JSON ที่ถูกต้อง"
#: documents/filters.py:353
msgid "Invalid custom field query expression"
msgstr ""
msgstr "รูปแบบการค้นหาฟิลด์ที่กำหนดเองไม่ถูกต้อง"
#: documents/filters.py:363
msgid "Invalid expression list. Must be nonempty."
msgstr ""
msgstr "รายการคำสั่งไม่ถูกต้อง ต้องไม่เว้นว่าง"
#: documents/filters.py:384
msgid "Invalid logical operator {op!r}"
msgstr ""
msgstr "ตัวดำเนินการเชิงตรรกะ {op!r} ไม่ถูกต้อง"
#: documents/filters.py:398
msgid "Maximum number of query conditions exceeded."
msgstr ""
msgstr "จำนวนเงื่อนไขในการค้นหาเกินกำหนด"
#: documents/filters.py:455
msgid "{name!r} is not a valid custom field."
msgstr ""
msgstr "{name!r} ไม่ใช่ฟิลด์ที่กำหนดเองที่ถูกต้อง"
#: documents/filters.py:492
msgid "{data_type} does not support query expr {expr!r}."
msgstr ""
msgstr "{data_type} ไม่รองรับรูปแบบการค้นหา {expr!r}"
#: documents/filters.py:600
msgid "Maximum nesting depth exceeded."
msgstr ""
msgstr "จำนวนการซ้อนเงื่อนไขสูงสุดเกินขีดจำกัด"
#: documents/models.py:41 documents/models.py:802
msgid "owner"
@@ -192,11 +192,11 @@ msgstr "ค่า checksum ของเอกสารประเภทเก
#: documents/models.py:211
msgid "page count"
msgstr ""
msgstr "จำนวนหน้า"
#: documents/models.py:218
msgid "The number of pages of the document."
msgstr ""
msgstr "จำนวนหน้าทั้งหมดของเอกสาร"
#: documents/models.py:222 documents/models.py:402 documents/models.py:722
#: documents/models.py:760 documents/models.py:831 documents/models.py:889
@@ -301,11 +301,11 @@ msgstr "ตาราง"
#: documents/models.py:416
msgid "Small Cards"
msgstr ""
msgstr "การ์ดขนาดเล็ก"
#: documents/models.py:417
msgid "Large Cards"
msgstr ""
msgstr "การ์ดขนาดใหญ่"
#: documents/models.py:420
msgid "Title"
@@ -313,11 +313,11 @@ msgstr ""
#: documents/models.py:421
msgid "Created"
msgstr ""
msgstr "วันที่สร้าง"
#: documents/models.py:422
msgid "Added"
msgstr ""
msgstr "วันที่เพิ่ม"
#: documents/models.py:423
msgid "Tags"
@@ -333,7 +333,7 @@ msgstr "ประเภทเอกสาร"
#: documents/models.py:426
msgid "Storage Path"
msgstr ""
msgstr "ตำแหน่งจัดเก็บ"
#: documents/models.py:427
msgid "Note"
@@ -345,7 +345,7 @@ msgstr "เจ้าของ"
#: documents/models.py:429
msgid "Shared"
msgstr ""
msgstr "แชร์แล้ว"
#: documents/models.py:430
msgid "ASN"
@@ -353,7 +353,7 @@ msgstr ""
#: documents/models.py:431
msgid "Pages"
msgstr ""
msgstr "หน้า"
#: documents/models.py:437
msgid "show on dashboard"
@@ -373,15 +373,15 @@ msgstr "เรียงย้อนกลับ"
#: documents/models.py:452
msgid "View page size"
msgstr ""
msgstr "ขนาดการแสดงผลหน้า"
#: documents/models.py:460
msgid "View display mode"
msgstr ""
msgstr "โหมดการแสดงผล"
#: documents/models.py:467
msgid "Document display fields"
msgstr ""
msgstr "ฟิลด์การแสดงผลของเอกสาร"
#: documents/models.py:474 documents/models.py:532
msgid "saved view"
@@ -537,31 +537,31 @@ msgstr "ไม่มีเจ้าของเป็น"
#: documents/models.py:519
msgid "has custom field value"
msgstr ""
msgstr "มีค่าฟิลด์ที่กำหนดเอง"
#: documents/models.py:520
msgid "is shared by me"
msgstr ""
msgstr "แชร์โดยฉัน"
#: documents/models.py:521
msgid "has custom fields"
msgstr ""
msgstr "มีฟิลด์ที่กำหนดเอง"
#: documents/models.py:522
msgid "has custom field in"
msgstr ""
msgstr "มีฟิลด์ที่กำหนดเองใน"
#: documents/models.py:523
msgid "does not have custom field in"
msgstr ""
msgstr "ไม่มีฟิลด์ที่กำหนดเอง"
#: documents/models.py:524
msgid "does not have custom field"
msgstr ""
msgstr "ไม่มีฟิลด์ที่กำหนดเองใน"
#: documents/models.py:525
msgid "custom fields query"
msgstr ""
msgstr "การค้นหาฟิลด์ที่กำหนดเอง"
#: documents/models.py:535
msgid "rule type"
@@ -717,11 +717,11 @@ msgstr "Float"
#: documents/models.py:826
msgid "Monetary"
msgstr ""
msgstr "จำนวนเงิน"
#: documents/models.py:827
msgid "Document Link"
msgstr ""
msgstr "ลิงก์ของเอกสาร"
#: documents/models.py:828
msgid "Select"
@@ -733,23 +733,23 @@ msgstr "ชนิดข้อมูล"
#: documents/models.py:847
msgid "extra data"
msgstr ""
msgstr "ข้อมูลเพิ่มเติม"
#: documents/models.py:851
msgid "Extra data for the custom field, such as select options"
msgstr ""
msgstr "ข้อมูลเพิ่มเติมสำหรับฟิลด์ที่กำหนดเอง เช่น ตัวเลือก"
#: documents/models.py:857
msgid "custom field"
msgstr ""
msgstr "ฟิลด์ที่กำหนดเอง"
#: documents/models.py:858
msgid "custom fields"
msgstr ""
msgstr "ฟิลด์ที่กำหนดเอง"
#: documents/models.py:955
msgid "custom field instance"
msgstr ""
msgstr "ชุดข้อมูลฟิลด์ที่กำหนดเอง"
#: documents/models.py:956
msgid "custom field instances"
@@ -757,7 +757,7 @@ msgstr ""
#: documents/models.py:1017
msgid "Consumption Started"
msgstr ""
msgstr "เริ่มใช้งาน"
#: documents/models.py:1018
msgid "Document Added"
@@ -769,7 +769,7 @@ msgstr "ปรับปรุงเอกสารแล้ว"
#: documents/models.py:1022
msgid "Consume Folder"
msgstr ""
msgstr "โฟลเดอร์ใช้งาน"
#: documents/models.py:1023
msgid "Api Upload"

View File

@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-19 22:56-0700\n"
"PO-Revision-Date: 2024-10-24 12:12\n"
"PO-Revision-Date: 2024-11-03 04:57\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -1603,7 +1603,7 @@ msgstr ""
#: paperless_mail/models.py:80
msgid "The expiration date of the refresh token. "
msgstr ""
msgstr "刷新令牌的到期日期。 "
#: paperless_mail/models.py:90
msgid "mail rule"

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
from typing import Final
__version__: Final[tuple[int, int, int]] = (2, 13, 1)
__version__: Final[tuple[int, int, int]] = (2, 13, 4)
# Version string like X.Y.Z
__full_version_str__: Final[str] = ".".join(map(str, __version__))
# Version string like X.Y

View File

@@ -0,0 +1,31 @@
# Generated by Django 5.1.1 on 2024-10-30 04:31
from django.db import migrations
from django.db import models
class Migration(migrations.Migration):
dependencies = [
(
"paperless_mail",
"0027_mailaccount_expiration_mailaccount_account_type_and_more",
),
]
operations = [
migrations.AlterField(
model_name="mailaccount",
name="password",
field=models.TextField(verbose_name="password"),
),
migrations.AlterField(
model_name="mailaccount",
name="refresh_token",
field=models.TextField(
blank=True,
help_text="The refresh token to use for token authentication e.g. with oauth2.",
null=True,
verbose_name="refresh token",
),
),
]

View File

@@ -42,7 +42,7 @@ class MailAccount(document_models.ModelWithOwner):
username = models.CharField(_("username"), max_length=256)
password = models.CharField(_("password"), max_length=3072)
password = models.TextField(_("password"))
is_token = models.BooleanField(_("Is token authentication"), default=False)
@@ -62,9 +62,8 @@ class MailAccount(document_models.ModelWithOwner):
default=MailAccountType.IMAP,
)
refresh_token = models.CharField(
refresh_token = models.TextField(
_("refresh token"),
max_length=3072,
blank=True,
null=True,
help_text=_(