├── .git-blame-ignore-revs ├── .github ├── release-drafter.yml ├── renovate.json └── workflows │ ├── auto-approve.yml │ ├── ci-docs.yml │ ├── ci.yml │ ├── release-drafter.yml │ ├── release-nightly.yml │ ├── release.yml │ ├── stale.yml │ └── website.yml ├── .gitignore ├── .mergify.yml ├── .projectile ├── .redocly.lint-ignore.yaml ├── .scala-steward.conf ├── .scalafix.conf ├── .scalafmt.conf ├── Changelog.md ├── Contributing.md ├── LICENSE.txt ├── NOTICE.txt ├── README.md ├── artwork ├── logo-400.png ├── logo-48.png ├── logo-96.png ├── logo-mc-400.png ├── logo-mc-96.png ├── logo-only-36.svg ├── logo-only-mc.svg ├── logo-only.svg ├── make-png.sh └── poster.svg ├── build.sbt ├── flake.lock ├── flake.nix ├── modules ├── addonlib │ └── src │ │ ├── main │ │ └── scala │ │ │ └── docspell │ │ │ └── addons │ │ │ ├── AddonArchive.scala │ │ │ ├── AddonExecutionResult.scala │ │ │ ├── AddonExecutor.scala │ │ │ ├── AddonExecutorConfig.scala │ │ │ ├── AddonLoggerExtension.scala │ │ │ ├── AddonMeta.scala │ │ │ ├── AddonRef.scala │ │ │ ├── AddonResult.scala │ │ │ ├── AddonRunner.scala │ │ │ ├── AddonTriggerType.scala │ │ │ ├── Context.scala │ │ │ ├── InputEnv.scala │ │ │ ├── Middleware.scala │ │ │ ├── RunnerType.scala │ │ │ ├── out │ │ │ ├── AddonOutput.scala │ │ │ ├── ItemFile.scala │ │ │ ├── NewFile.scala │ │ │ └── NewItem.scala │ │ │ ├── package.scala │ │ │ └── runner │ │ │ ├── CollectOut.scala │ │ │ ├── DockerBuilder.scala │ │ │ ├── DockerRunner.scala │ │ │ ├── NSpawnBuilder.scala │ │ │ ├── NixFlakeRunner.scala │ │ │ ├── RunnerUtil.scala │ │ │ └── TrivialRunner.scala │ │ └── test │ │ ├── resources │ │ ├── docspell-addon-single-file.zip │ │ ├── docspell-dummy-addon-master.zip │ │ └── minimal-addon.zip │ │ └── scala │ │ └── docspell │ │ └── addons │ │ ├── AddonArchiveTest.scala │ │ ├── AddonExecutorTest.scala │ │ ├── AddonGenerator.scala │ │ ├── AddonMetaTest.scala │ │ ├── AddonOutputTest.scala │ │ ├── AddonRunnerTest.scala │ │ └── Fixtures.scala ├── analysis │ └── src │ │ ├── main │ │ └── scala │ │ │ └── docspell │ │ │ └── analysis │ │ │ ├── NlpSettings.scala │ │ │ ├── TextAnalyser.scala │ │ │ ├── TextAnalysisConfig.scala │ │ │ ├── classifier │ │ │ ├── ClassifierModel.scala │ │ │ ├── StanfordTextClassifier.scala │ │ │ ├── TextClassifier.scala │ │ │ └── TextClassifierConfig.scala │ │ │ ├── contact │ │ │ ├── Contact.scala │ │ │ ├── Domain.scala │ │ │ └── Tld.scala │ │ │ ├── date │ │ │ ├── DateFind.scala │ │ │ └── MonthName.scala │ │ │ ├── nlp │ │ │ ├── Annotator.scala │ │ │ ├── BasicCRFAnnotator.scala │ │ │ ├── LabelConverter.scala │ │ │ ├── PipelineCache.scala │ │ │ ├── Properties.scala │ │ │ ├── StanfordNerAnnotator.scala │ │ │ └── StanfordNerSettings.scala │ │ │ └── split │ │ │ ├── TextSplitter.scala │ │ │ └── Word.scala │ │ └── test │ │ ├── resources │ │ └── test.ser.gz │ │ └── scala │ │ └── docspell │ │ └── analysis │ │ ├── Env.scala │ │ ├── classifier │ │ └── StanfordTextClassifierSuite.scala │ │ ├── contact │ │ └── ContactAnnotateSpec.scala │ │ ├── date │ │ └── DateFindTest.scala │ │ ├── nlp │ │ ├── BaseCRFAnnotatorSuite.scala │ │ └── StanfordNerAnnotatorSuite.scala │ │ └── split │ │ └── TestSplitterSpec.scala ├── backend │ └── src │ │ ├── main │ │ └── scala │ │ │ └── docspell │ │ │ └── backend │ │ │ ├── AttachedEvent.scala │ │ │ ├── BackendApp.scala │ │ │ ├── BackendCommands.scala │ │ │ ├── Common.scala │ │ │ ├── Config.scala │ │ │ ├── JobFactory.scala │ │ │ ├── MailAddressCodec.scala │ │ │ ├── PasswordCrypt.scala │ │ │ ├── auth │ │ │ ├── AuthToken.scala │ │ │ ├── Login.scala │ │ │ ├── RememberToken.scala │ │ │ ├── ShareToken.scala │ │ │ └── TokenUtil.scala │ │ │ ├── codec │ │ │ └── ItemQueryCodec.scala │ │ │ ├── fulltext │ │ │ └── CreateIndex.scala │ │ │ ├── item │ │ │ └── Merge.scala │ │ │ ├── joex │ │ │ ├── AddonEnvConfig.scala │ │ │ ├── AddonOps.scala │ │ │ ├── AddonPostProcess.scala │ │ │ ├── AddonPrepare.scala │ │ │ ├── FindJobOwnerAccount.scala │ │ │ └── LoggerExtension.scala │ │ │ ├── msg │ │ │ └── Topics.scala │ │ │ ├── ops │ │ │ ├── AddonRunConfigError.scala │ │ │ ├── AddonRunConfigValidate.scala │ │ │ ├── AddonValidate.scala │ │ │ ├── AddonValidationError.scala │ │ │ ├── OAddons.scala │ │ │ ├── OAttachment.scala │ │ │ ├── OClientSettings.scala │ │ │ ├── OCollective.scala │ │ │ ├── OCustomFields.scala │ │ │ ├── ODownloadAll.scala │ │ │ ├── OEquipment.scala │ │ │ ├── OFileRepository.scala │ │ │ ├── OFolder.scala │ │ │ ├── OFulltext.scala │ │ │ ├── OItem.scala │ │ │ ├── OItemLink.scala │ │ │ ├── OItemSearch.scala │ │ │ ├── OJob.scala │ │ │ ├── OJoex.scala │ │ │ ├── OMail.scala │ │ │ ├── ONode.scala │ │ │ ├── ONotification.scala │ │ │ ├── OOrganization.scala │ │ │ ├── OQueryBookmarks.scala │ │ │ ├── OShare.scala │ │ │ ├── OSource.scala │ │ │ ├── OTag.scala │ │ │ ├── OTotp.scala │ │ │ ├── OUpload.scala │ │ │ ├── OUserTask.scala │ │ │ ├── WildcardString.scala │ │ │ └── search │ │ │ │ ├── OSearch.scala │ │ │ │ └── QueryParseResult.scala │ │ │ ├── signup │ │ │ ├── Config.scala │ │ │ ├── ExternalAccount.scala │ │ │ ├── NewInviteResult.scala │ │ │ ├── OSignup.scala │ │ │ ├── RegisterData.scala │ │ │ └── SignupResult.scala │ │ │ └── task │ │ │ └── DownloadZipArgs.scala │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── backend │ │ └── auth │ │ └── AuthTokenTest.scala ├── common │ └── src │ │ ├── main │ │ └── scala │ │ │ └── docspell │ │ │ └── common │ │ │ ├── AccountId.scala │ │ │ ├── AccountInfo.scala │ │ │ ├── AccountSource.scala │ │ │ ├── AllPreviewsArgs.scala │ │ │ ├── Banner.scala │ │ │ ├── BaseJsonCodecs.scala │ │ │ ├── Binary.scala │ │ │ ├── ByteSize.scala │ │ │ ├── CollectiveId.scala │ │ │ ├── CollectiveState.scala │ │ │ ├── ContactKind.scala │ │ │ ├── ConvertAllPdfArgs.scala │ │ │ ├── CustomFieldType.scala │ │ │ ├── DataType.scala │ │ │ ├── Direction.scala │ │ │ ├── DocspellSystem.scala │ │ │ ├── DownloadAllType.scala │ │ │ ├── DownloadState.scala │ │ │ ├── Duration.scala │ │ │ ├── EmptyTrashArgs.scala │ │ │ ├── EnvMode.scala │ │ │ ├── EquipmentUse.scala │ │ │ ├── FileCategory.scala │ │ │ ├── FileCopyTaskArgs.scala │ │ │ ├── FileIntegrityCheckArgs.scala │ │ │ ├── FileKey.scala │ │ │ ├── FileKeyPart.scala │ │ │ ├── FileName.scala │ │ │ ├── FileStoreConfig.scala │ │ │ ├── FileStoreType.scala │ │ │ ├── Glob.scala │ │ │ ├── Hash.scala │ │ │ ├── IdRef.scala │ │ │ ├── Ident.scala │ │ │ ├── ItemAddonTaskArgs.scala │ │ │ ├── ItemQueryString.scala │ │ │ ├── ItemState.scala │ │ │ ├── JobState.scala │ │ │ ├── JvmInfo.scala │ │ │ ├── Language.scala │ │ │ ├── LearnClassifierArgs.scala │ │ │ ├── LenientUri.scala │ │ │ ├── ListType.scala │ │ │ ├── LogLevel.scala │ │ │ ├── MailSendConfig.scala │ │ │ ├── MakePageCountArgs.scala │ │ │ ├── MakePreviewArgs.scala │ │ │ ├── MetaProposal.scala │ │ │ ├── MetaProposalList.scala │ │ │ ├── MetaProposalType.scala │ │ │ ├── MimeType.scala │ │ │ ├── MimeTypeHint.scala │ │ │ ├── NerDateLabel.scala │ │ │ ├── NerLabel.scala │ │ │ ├── NerLabelSpan.scala │ │ │ ├── NerTag.scala │ │ │ ├── NlpMode.scala │ │ │ ├── NodeType.scala │ │ │ ├── OrgUse.scala │ │ │ ├── Password.scala │ │ │ ├── PersonRef.scala │ │ │ ├── PersonUse.scala │ │ │ ├── Pools.scala │ │ │ ├── Priority.scala │ │ │ ├── ProcessItemArgs.scala │ │ │ ├── ReIndexTaskArgs.scala │ │ │ ├── ReProcessItemArgs.scala │ │ │ ├── ScanMailboxArgs.scala │ │ │ ├── ScheduledAddonTaskArgs.scala │ │ │ ├── SearchMode.scala │ │ │ ├── TaskArguments.scala │ │ │ ├── ThreadFactories.scala │ │ │ ├── Timestamp.scala │ │ │ ├── UrlMatcher.scala │ │ │ ├── UrlReader.scala │ │ │ ├── UserState.scala │ │ │ ├── bc │ │ │ ├── AttachmentAction.scala │ │ │ ├── BackendCommand.scala │ │ │ ├── BackendCommandRunner.scala │ │ │ └── ItemAction.scala │ │ │ ├── exec │ │ │ ├── Args.scala │ │ │ ├── Env.scala │ │ │ ├── ExternalCommand.scala │ │ │ ├── SysCmd.scala │ │ │ └── SysExec.scala │ │ │ ├── syntax │ │ │ ├── EitherSyntax.scala │ │ │ ├── FileSyntax.scala │ │ │ ├── StreamSyntax.scala │ │ │ ├── StringSyntax.scala │ │ │ └── package.scala │ │ │ └── util │ │ │ ├── Directory.scala │ │ │ ├── File.scala │ │ │ ├── Random.scala │ │ │ ├── ResourceUse.scala │ │ │ ├── SignUtil.scala │ │ │ ├── Zip.scala │ │ │ └── ZipImpl.scala │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── common │ │ ├── FileNameTest.scala │ │ ├── GlobTest.scala │ │ ├── LenientUriTest.scala │ │ ├── MetaProposalListTest.scala │ │ ├── MimeTypeTest.scala │ │ ├── NerLabelSpanTest.scala │ │ ├── UrlMatcherTest.scala │ │ ├── bc │ │ └── BackendCommandTest.scala │ │ ├── exec │ │ └── ExternalCommandTest.scala │ │ └── util │ │ ├── DirectoryTest.scala │ │ └── SignUtilTest.scala ├── config │ └── src │ │ ├── main │ │ └── scala │ │ │ └── docspell │ │ │ └── config │ │ │ ├── ConfigFactory.scala │ │ │ ├── EnvConfig.scala │ │ │ ├── FtsType.scala │ │ │ ├── Implicits.scala │ │ │ ├── PgFtsConfig.scala │ │ │ └── Validation.scala │ │ └── test │ │ ├── resources │ │ └── reference.conf │ │ └── scala │ │ └── docspell │ │ └── config │ │ ├── EnvConfigTest.scala │ │ └── ValidationTest.scala ├── convert │ └── src │ │ ├── main │ │ └── scala │ │ │ └── docspell │ │ │ └── convert │ │ │ ├── Conversion.scala │ │ │ ├── ConversionResult.scala │ │ │ ├── ConvertConfig.scala │ │ │ ├── RemovePdfEncryption.scala │ │ │ ├── SanitizeHtml.scala │ │ │ ├── extern │ │ │ ├── ExternConv.scala │ │ │ ├── OcrMyPdf.scala │ │ │ ├── OcrMyPdfConfig.scala │ │ │ ├── Tesseract.scala │ │ │ ├── TesseractConfig.scala │ │ │ ├── Unoconv.scala │ │ │ ├── UnoconvConfig.scala │ │ │ ├── Weasyprint.scala │ │ │ ├── WeasyprintConfig.scala │ │ │ ├── WkHtmlPdf.scala │ │ │ └── WkHtmlPdfConfig.scala │ │ │ └── flexmark │ │ │ ├── Markdown.scala │ │ │ └── MarkdownConfig.scala │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── convert │ │ ├── ConversionTest.scala │ │ ├── FileChecks.scala │ │ ├── RemovePdfEncryptionTest.scala │ │ └── extern │ │ └── ExternConvTest.scala ├── extract │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── tika │ │ │ │ ├── exception │ │ │ │ └── WriteLimitReachedException.java │ │ │ │ ├── parser │ │ │ │ ├── odf │ │ │ │ │ ├── FlatOpenDocumentMacroHandler.java │ │ │ │ │ ├── NSNormalizerContentHandler.java │ │ │ │ │ ├── OpenDocumentBodyHandler.java │ │ │ │ │ ├── OpenDocumentContentParser.java │ │ │ │ │ ├── OpenDocumentMacroHandler.java │ │ │ │ │ ├── OpenDocumentManifestHandler.java │ │ │ │ │ ├── OpenDocumentMetaParser.java │ │ │ │ │ └── OpenDocumentParser.java │ │ │ │ └── xml │ │ │ │ │ ├── AbstractMetadataHandler.java │ │ │ │ │ ├── AttributeDependantMetadataHandler.java │ │ │ │ │ ├── AttributeMetadataHandler.java │ │ │ │ │ ├── DcXMLParser.java │ │ │ │ │ ├── ElementMetadataHandler.java │ │ │ │ │ ├── FictionBookParser.java │ │ │ │ │ ├── MetadataHandler.java │ │ │ │ │ ├── TextAndAttributeXMLParser.java │ │ │ │ │ └── XMLParser.java │ │ │ │ └── utils │ │ │ │ └── StringUtils.java │ │ └── scala │ │ │ └── docspell │ │ │ └── extract │ │ │ ├── ExtractConfig.scala │ │ │ ├── ExtractResult.scala │ │ │ ├── Extraction.scala │ │ │ ├── PdfConfig.scala │ │ │ ├── PdfExtract.scala │ │ │ ├── internal │ │ │ └── Text.scala │ │ │ ├── ocr │ │ │ ├── Ocr.scala │ │ │ ├── OcrConfig.scala │ │ │ ├── OcrType.scala │ │ │ └── TextExtract.scala │ │ │ ├── odf │ │ │ ├── OdfExtract.scala │ │ │ └── OdfType.scala │ │ │ ├── pdfbox │ │ │ ├── PdfLoader.scala │ │ │ ├── PdfMetaData.scala │ │ │ ├── PdfboxExtract.scala │ │ │ ├── PdfboxPreview.scala │ │ │ └── PreviewConfig.scala │ │ │ ├── poi │ │ │ ├── PoiExtract.scala │ │ │ └── PoiType.scala │ │ │ └── rtf │ │ │ └── RtfExtract.scala │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── extract │ │ ├── ocr │ │ └── TextExtractionSuite.scala │ │ ├── odf │ │ └── OdfExtractTest.scala │ │ ├── pdfbox │ │ ├── PdfMetaDataTest.scala │ │ ├── PdfboxExtractTest.scala │ │ └── PdfboxPreviewTest.scala │ │ ├── poi │ │ └── PoiExtractTest.scala │ │ └── rtf │ │ └── RtfExtractTest.scala ├── files │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── apache │ │ │ │ └── tika │ │ │ │ └── parser │ │ │ │ └── txt │ │ │ │ ├── IOUtils.java │ │ │ │ └── Icu4jEncodingDetector.java │ │ └── scala │ │ │ └── docspell │ │ │ └── files │ │ │ ├── Dimension.scala │ │ │ ├── FileSupport.scala │ │ │ ├── ImageSize.scala │ │ │ └── TikaMimetype.scala │ │ └── test │ │ ├── resources │ │ ├── bombs │ │ │ ├── 20K-gray.jpeg │ │ │ ├── 20K-gray.png │ │ │ ├── 20K-rgb.jpeg │ │ │ └── 20K-rgb.png │ │ ├── camera │ │ │ ├── letter-en.jpg │ │ │ ├── letter-en.png │ │ │ └── letter-en.tiff │ │ ├── examples │ │ │ ├── letter-ita.txt │ │ │ ├── sample.doc │ │ │ ├── sample.docx │ │ │ ├── sample.ods │ │ │ ├── sample.odt │ │ │ ├── sample.rtf │ │ │ ├── sample.xls │ │ │ └── sample.xlsx │ │ ├── keywords.pdf │ │ ├── large-file.pdf │ │ ├── letter-de.html │ │ ├── letter-de.md │ │ ├── letter-de.pdf │ │ ├── letter-de.txt │ │ ├── letter-en.pdf │ │ ├── letter-en.txt │ │ ├── letters.zip │ │ ├── scanner │ │ │ ├── jfif.jpg │ │ │ ├── pdf13.pdf │ │ │ └── pdfa14.pdf │ │ ├── secured │ │ │ ├── encrypted-test123.pdf │ │ │ └── protected-test123.pdf │ │ ├── zip-dirs-one.zip │ │ └── zip-dirs.zip │ │ └── scala │ │ └── docspell │ │ └── files │ │ ├── ExampleFilesSupport.scala │ │ ├── ImageSizeTest.scala │ │ ├── Playing.scala │ │ ├── TestFiles.scala │ │ ├── TikaMimetypeTest.scala │ │ └── ZipTest.scala ├── fts-client │ └── src │ │ └── main │ │ └── scala │ │ └── docspell │ │ └── ftsclient │ │ ├── FtsClient.scala │ │ ├── FtsMigration.scala │ │ ├── FtsQuery.scala │ │ ├── FtsResult.scala │ │ └── TextData.scala ├── fts-psql │ └── src │ │ ├── main │ │ ├── resources │ │ │ └── db │ │ │ │ └── psqlfts │ │ │ │ ├── V2.0.0__initial_schema.sql │ │ │ │ └── V2.1.0__collective_id.sql │ │ └── scala │ │ │ └── docspell │ │ │ └── ftspsql │ │ │ ├── DbMigration.scala │ │ │ ├── DoobieMeta.scala │ │ │ ├── FtsRecord.scala │ │ │ ├── FtsRepository.scala │ │ │ ├── PgQueryParser.scala │ │ │ ├── PsqlConfig.scala │ │ │ ├── PsqlFtsClient.scala │ │ │ ├── RankNormalization.scala │ │ │ ├── SearchResult.scala │ │ │ └── SearchSummary.scala │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── ftspsql │ │ ├── MigrationTest.scala │ │ ├── PgFixtures.scala │ │ └── PsqlFtsClientTest.scala ├── fts-solr │ └── src │ │ └── main │ │ └── scala │ │ └── docspell │ │ └── ftssolr │ │ ├── DocIdResult.scala │ │ ├── Field.scala │ │ ├── JsonCodec.scala │ │ ├── QueryData.scala │ │ ├── SetFields.scala │ │ ├── SetFolder.scala │ │ ├── SolrConfig.scala │ │ ├── SolrFtsClient.scala │ │ ├── SolrMigration.scala │ │ ├── SolrQuery.scala │ │ ├── SolrSetup.scala │ │ ├── SolrUpdate.scala │ │ └── VersionDoc.scala ├── joex │ └── src │ │ ├── main │ │ ├── resources │ │ │ └── reference.conf │ │ └── scala │ │ │ └── docspell │ │ │ └── joex │ │ │ ├── Config.scala │ │ │ ├── ConfigFile.scala │ │ │ ├── JoexApp.scala │ │ │ ├── JoexAppImpl.scala │ │ │ ├── JoexServer.scala │ │ │ ├── JoexTasks.scala │ │ │ ├── Main.scala │ │ │ ├── addon │ │ │ ├── AddonTaskExtension.scala │ │ │ ├── GenericItemAddonTask.scala │ │ │ ├── ItemAddonTask.scala │ │ │ ├── Result.scala │ │ │ └── ScheduledAddonTask.scala │ │ │ ├── analysis │ │ │ ├── NerFile.scala │ │ │ └── RegexNerFile.scala │ │ │ ├── download │ │ │ ├── DownloadZipTask.scala │ │ │ └── Result.scala │ │ │ ├── emptytrash │ │ │ ├── EmptyTrashTask.scala │ │ │ └── Result.scala │ │ │ ├── extract │ │ │ └── JsoupSanitizer.scala │ │ │ ├── filecopy │ │ │ ├── FileCopyTask.scala │ │ │ └── FileIntegrityCheckTask.scala │ │ │ ├── fts │ │ │ ├── FtsContext.scala │ │ │ ├── FtsWork.scala │ │ │ ├── Migration.scala │ │ │ ├── MigrationTask.scala │ │ │ ├── ReIndexTask.scala │ │ │ └── package.scala │ │ │ ├── hk │ │ │ ├── CheckNodesTask.scala │ │ │ ├── CleanupDownloadsTask.scala │ │ │ ├── CleanupInvitesTask.scala │ │ │ ├── CleanupJobsTask.scala │ │ │ ├── CleanupRememberMeTask.scala │ │ │ ├── CleanupResult.scala │ │ │ ├── HouseKeepingConfig.scala │ │ │ ├── HouseKeepingTask.scala │ │ │ └── IntegrityCheckTask.scala │ │ │ ├── learn │ │ │ ├── ClassifierName.scala │ │ │ ├── Classify.scala │ │ │ ├── LearnClassifierTask.scala │ │ │ ├── LearnItemEntities.scala │ │ │ ├── LearnTags.scala │ │ │ ├── SelectItems.scala │ │ │ └── StoreClassifierModel.scala │ │ │ ├── mail │ │ │ ├── EmilHeader.scala │ │ │ └── ReadMail.scala │ │ │ ├── multiupload │ │ │ ├── MultiUploadArchiveTask.scala │ │ │ └── Result.scala │ │ │ ├── notify │ │ │ ├── PeriodicDueItemsTask.scala │ │ │ ├── PeriodicQueryTask.scala │ │ │ ├── TaskOperations.scala │ │ │ └── YamuscaConverter.scala │ │ │ ├── pagecount │ │ │ ├── AllPageCountTask.scala │ │ │ └── MakePageCountTask.scala │ │ │ ├── pdfconv │ │ │ ├── ConvertAllPdfTask.scala │ │ │ └── PdfConvTask.scala │ │ │ ├── preview │ │ │ ├── AllPreviewsTask.scala │ │ │ └── MakePreviewTask.scala │ │ │ ├── process │ │ │ ├── AttachmentPageCount.scala │ │ │ ├── AttachmentPreview.scala │ │ │ ├── ConvertPdf.scala │ │ │ ├── CreateItem.scala │ │ │ ├── CrossCheckProposals.scala │ │ │ ├── DuplicateCheck.scala │ │ │ ├── EvalProposals.scala │ │ │ ├── ExtractArchive.scala │ │ │ ├── FindProposal.scala │ │ │ ├── ItemData.scala │ │ │ ├── ItemHandler.scala │ │ │ ├── LinkProposal.scala │ │ │ ├── ProcessItem.scala │ │ │ ├── ReProcessItem.scala │ │ │ ├── RemoveEmptyItem.scala │ │ │ ├── RunAddons.scala │ │ │ ├── SaveProposals.scala │ │ │ ├── SetGivenData.scala │ │ │ ├── TextAnalysis.scala │ │ │ └── TextExtraction.scala │ │ │ ├── routes │ │ │ ├── InfoRoutes.scala │ │ │ ├── InternalHeader.scala │ │ │ └── JoexRoutes.scala │ │ │ ├── scanmailbox │ │ │ └── ScanMailboxTask.scala │ │ │ └── updatecheck │ │ │ ├── MakeMail.scala │ │ │ ├── ThisVersion.scala │ │ │ ├── UpdateCheck.scala │ │ │ ├── UpdateCheckConfig.scala │ │ │ └── UpdateCheckTask.scala │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── joex │ │ ├── analysis │ │ └── NerFileTest.scala │ │ ├── extract │ │ └── JsoupSanitizerTest.scala │ │ └── updatecheck │ │ └── UpdateCheckTest.scala ├── joexapi │ └── src │ │ └── main │ │ ├── resources │ │ └── joex-openapi.yml │ │ └── scala │ │ └── docspell │ │ └── joexapi │ │ └── client │ │ └── JoexClient.scala ├── jsonminiq │ └── src │ │ ├── main │ │ └── scala │ │ │ └── docspell │ │ │ └── jsonminiq │ │ │ ├── Format.scala │ │ │ ├── JsonMiniQuery.scala │ │ │ └── Parser.scala │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── jsonminiq │ │ ├── Fixtures.scala │ │ ├── FormatTest.scala │ │ ├── JsonMiniQueryTest.scala │ │ └── ParserTest.scala ├── logging │ ├── api │ │ └── src │ │ │ ├── main │ │ │ └── scala │ │ │ │ └── docspell │ │ │ │ └── logging │ │ │ │ ├── AndThenLogger.scala │ │ │ │ ├── CapturedLogger.scala │ │ │ │ ├── LazyMap.scala │ │ │ │ ├── Level.scala │ │ │ │ ├── LogConfig.scala │ │ │ │ ├── LogEvent.scala │ │ │ │ ├── Logger.scala │ │ │ │ └── LoggerExtension.scala │ │ │ └── test │ │ │ └── scala │ │ │ └── docspell │ │ │ └── logging │ │ │ ├── CapturedLoggerTest.scala │ │ │ ├── LazyMapTest.scala │ │ │ └── TestLogger.scala │ └── scribe │ │ └── src │ │ ├── main │ │ └── scala │ │ │ └── docspell │ │ │ └── logging │ │ │ ├── impl │ │ │ ├── JsonWriter.scala │ │ │ ├── LogfmtWriter.scala │ │ │ ├── Record.scala │ │ │ ├── ScribeConfigure.scala │ │ │ └── ScribeWrapper.scala │ │ │ └── package.scala │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── logging │ │ └── TestLoggingConfig.scala ├── notification │ ├── api │ │ └── src │ │ │ └── main │ │ │ └── scala │ │ │ └── docspell │ │ │ └── notification │ │ │ └── api │ │ │ ├── Channel.scala │ │ │ ├── ChannelRef.scala │ │ │ ├── ChannelType.scala │ │ │ ├── Event.scala │ │ │ ├── EventContext.scala │ │ │ ├── EventExchange.scala │ │ │ ├── EventMessage.scala │ │ │ ├── EventReader.scala │ │ │ ├── EventSink.scala │ │ │ ├── NotificationBackend.scala │ │ │ ├── NotificationChannel.scala │ │ │ ├── NotificationModule.scala │ │ │ ├── PeriodicDueItemsArgs.scala │ │ │ └── PeriodicQueryArgs.scala │ └── impl │ │ └── src │ │ ├── main │ │ └── scala │ │ │ └── docspell │ │ │ └── notification │ │ │ └── impl │ │ │ ├── AbstractEventContext.scala │ │ │ ├── DbEventContext.scala │ │ │ ├── EmailBackend.scala │ │ │ ├── EventContextSyntax.scala │ │ │ ├── EventNotify.scala │ │ │ ├── ExampleEventContext.scala │ │ │ ├── GotifyBackend.scala │ │ │ ├── HttpPostBackend.scala │ │ │ ├── HttpSend.scala │ │ │ ├── Markdown.scala │ │ │ ├── MatrixBackend.scala │ │ │ ├── NotificationBackendImpl.scala │ │ │ ├── NotificationModuleImpl.scala │ │ │ └── context │ │ │ ├── BasicData.scala │ │ │ ├── DeleteFieldValueCtx.scala │ │ │ ├── ItemSelectionCtx.scala │ │ │ ├── JobDoneCtx.scala │ │ │ ├── JobSubmittedCtx.scala │ │ │ ├── SetFieldValueCtx.scala │ │ │ ├── Syntax.scala │ │ │ └── TagsChangedCtx.scala │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── notification │ │ └── impl │ │ └── context │ │ └── TagsChangedCtxTest.scala ├── oidc │ └── src │ │ ├── main │ │ └── scala │ │ │ └── docspell │ │ │ └── oidc │ │ │ ├── AccessToken.scala │ │ │ ├── CodeFlow.scala │ │ │ ├── CodeFlowConfig.scala │ │ │ ├── CodeFlowRoutes.scala │ │ │ ├── Jwt.scala │ │ │ ├── OnUserInfo.scala │ │ │ ├── ProviderConfig.scala │ │ │ ├── SignatureAlgo.scala │ │ │ ├── StateParam.scala │ │ │ └── UserInfoDecoder.scala │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── oidc │ │ └── StateParamTest.scala ├── pubsub │ ├── api │ │ └── src │ │ │ └── main │ │ │ └── scala │ │ │ └── docspell │ │ │ └── pubsub │ │ │ └── api │ │ │ ├── Message.scala │ │ │ ├── MessageHead.scala │ │ │ ├── PubSub.scala │ │ │ ├── PubSubT.scala │ │ │ ├── Topic.scala │ │ │ └── TypedTopic.scala │ └── naive │ │ └── src │ │ ├── main │ │ └── scala │ │ │ └── docspell │ │ │ └── pubsub │ │ │ └── naive │ │ │ ├── NaivePubSub.scala │ │ │ └── PubSubConfig.scala │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── pubsub │ │ └── naive │ │ ├── Fixtures.scala │ │ ├── HttpClientOps.scala │ │ ├── NaivePubSubTest.scala │ │ └── Topics.scala ├── query │ ├── js │ │ └── src │ │ │ └── main │ │ │ └── scala │ │ │ └── docspell │ │ │ └── query │ │ │ └── js │ │ │ └── JSItemQueryParser.scala │ └── shared │ │ └── src │ │ ├── main │ │ └── scala │ │ │ └── docspell │ │ │ └── query │ │ │ ├── Date.scala │ │ │ ├── FulltextExtract.scala │ │ │ ├── ItemQuery.scala │ │ │ ├── ItemQueryDsl.scala │ │ │ ├── ItemQueryParser.scala │ │ │ ├── ParseFailure.scala │ │ │ └── internal │ │ │ ├── AttrParser.scala │ │ │ ├── BasicParser.scala │ │ │ ├── Constants.scala │ │ │ ├── DateParser.scala │ │ │ ├── ExprParser.scala │ │ │ ├── ExprString.scala │ │ │ ├── ExprUtil.scala │ │ │ ├── MacroParser.scala │ │ │ ├── OperatorParser.scala │ │ │ ├── SimpleExprParser.scala │ │ │ └── StringUtil.scala │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── query │ │ ├── FulltextExtractTest.scala │ │ ├── ItemQueryGen.scala │ │ └── internal │ │ ├── AttrParserTest.scala │ │ ├── BasicParserTest.scala │ │ ├── DateParserTest.scala │ │ ├── ExprParserTest.scala │ │ ├── ExprStringTest.scala │ │ ├── ItemQueryParserTest.scala │ │ ├── MacroParserTest.scala │ │ ├── OperatorParserTest.scala │ │ ├── SimpleExprParserTest.scala │ │ └── ValueHelper.scala ├── restapi │ └── src │ │ └── main │ │ ├── resources │ │ └── docspell-openapi.yml │ │ └── scala │ │ └── docspell │ │ └── restapi │ │ ├── codec │ │ ├── ChannelEihterCodec.scala │ │ └── ItemQueryJson.scala │ │ └── model │ │ └── NotificationChannel.scala ├── restserver │ └── src │ │ ├── main │ │ ├── resources │ │ │ ├── docspell │ │ │ │ └── restserver │ │ │ │ │ └── no-preview.svg │ │ │ └── reference.conf │ │ ├── scala │ │ │ └── docspell │ │ │ │ └── restserver │ │ │ │ ├── Config.scala │ │ │ │ ├── ConfigFile.scala │ │ │ │ ├── Main.scala │ │ │ │ ├── RestApp.scala │ │ │ │ ├── RestAppImpl.scala │ │ │ │ ├── RestServer.scala │ │ │ │ ├── Subscriptions.scala │ │ │ │ ├── auth │ │ │ │ ├── CookieData.scala │ │ │ │ ├── OpenId.scala │ │ │ │ ├── RememberCookieData.scala │ │ │ │ └── ShareCookieData.scala │ │ │ │ ├── conv │ │ │ │ ├── AddonValidationSupport.scala │ │ │ │ ├── Conversions.scala │ │ │ │ ├── MultiIdSupport.scala │ │ │ │ └── NonEmptyListSupport.scala │ │ │ │ ├── http4s │ │ │ │ ├── BinaryUtil.scala │ │ │ │ ├── ClientRequestInfo.scala │ │ │ │ ├── ContentDisposition.scala │ │ │ │ ├── EnvMiddleware.scala │ │ │ │ ├── InternalHeader.scala │ │ │ │ ├── NoCacheMiddleware.scala │ │ │ │ ├── QueryParam.scala │ │ │ │ ├── ResponseGenerator.scala │ │ │ │ ├── Responses.scala │ │ │ │ └── ThrowableResponseMapper.scala │ │ │ │ ├── routes │ │ │ │ ├── AddonArchiveRoutes.scala │ │ │ │ ├── AddonRoutes.scala │ │ │ │ ├── AddonRunConfigRoutes.scala │ │ │ │ ├── AddonRunRoutes.scala │ │ │ │ ├── AdminAuth.scala │ │ │ │ ├── AttachmentMultiRoutes.scala │ │ │ │ ├── AttachmentRoutes.scala │ │ │ │ ├── Authenticate.scala │ │ │ │ ├── BookmarkRoutes.scala │ │ │ │ ├── CalEventCheckRoutes.scala │ │ │ │ ├── CheckFileRoutes.scala │ │ │ │ ├── ClientSettingsRoutes.scala │ │ │ │ ├── CollectiveRoutes.scala │ │ │ │ ├── CustomFieldRoutes.scala │ │ │ │ ├── DownloadAllRoutes.scala │ │ │ │ ├── EquipmentRoutes.scala │ │ │ │ ├── FileRepositoryRoutes.scala │ │ │ │ ├── FolderRoutes.scala │ │ │ │ ├── FullTextIndexRoutes.scala │ │ │ │ ├── InfoRoutes.scala │ │ │ │ ├── IntegrationEndpointRoutes.scala │ │ │ │ ├── ItemLinkRoutes.scala │ │ │ │ ├── ItemMultiRoutes.scala │ │ │ │ ├── ItemRoutes.scala │ │ │ │ ├── ItemSearchPart.scala │ │ │ │ ├── JobQueueRoutes.scala │ │ │ │ ├── LoginRoutes.scala │ │ │ │ ├── MailSendRoutes.scala │ │ │ │ ├── MailSettingsRoutes.scala │ │ │ │ ├── NotificationRoutes.scala │ │ │ │ ├── NotifyDueItemsRoutes.scala │ │ │ │ ├── OrganizationRoutes.scala │ │ │ │ ├── PeriodicQueryRoutes.scala │ │ │ │ ├── PersonRoutes.scala │ │ │ │ ├── RegisterRoutes.scala │ │ │ │ ├── ScanMailboxRoutes.scala │ │ │ │ ├── SentMailRoutes.scala │ │ │ │ ├── ShareAttachmentRoutes.scala │ │ │ │ ├── ShareAuth.scala │ │ │ │ ├── ShareItemRoutes.scala │ │ │ │ ├── ShareRoutes.scala │ │ │ │ ├── ShareSearchRoutes.scala │ │ │ │ ├── SourceRoutes.scala │ │ │ │ ├── TagRoutes.scala │ │ │ │ ├── TotpRoutes.scala │ │ │ │ ├── UploadRoutes.scala │ │ │ │ └── UserRoutes.scala │ │ │ │ ├── webapp │ │ │ │ ├── Flags.scala │ │ │ │ ├── TemplateRoutes.scala │ │ │ │ ├── Templates.scala │ │ │ │ └── WebjarRoutes.scala │ │ │ │ └── ws │ │ │ │ ├── Background.scala │ │ │ │ ├── InputMessage.scala │ │ │ │ ├── OutputEvent.scala │ │ │ │ ├── OutputEventEncoder.scala │ │ │ │ └── WebSocketRoutes.scala │ │ └── templates │ │ │ ├── doc.html │ │ │ ├── index.html │ │ │ └── sw.js │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── restserver │ │ └── http4s │ │ └── ContentDispositionTest.scala ├── scheduler │ ├── api │ │ └── src │ │ │ ├── main │ │ │ └── scala │ │ │ │ └── docspell │ │ │ │ └── scheduler │ │ │ │ ├── Context.scala │ │ │ │ ├── CountingScheme.scala │ │ │ │ ├── FindJobOwner.scala │ │ │ │ ├── Job.scala │ │ │ │ ├── JobStore.scala │ │ │ │ ├── JobStoreModule.scala │ │ │ │ ├── JobTask.scala │ │ │ │ ├── JobTaskRegistry.scala │ │ │ │ ├── JobTaskResult.scala │ │ │ │ ├── JobTaskResultEncoder.scala │ │ │ │ ├── PeriodicScheduler.scala │ │ │ │ ├── PeriodicSchedulerConfig.scala │ │ │ │ ├── PermanentError.scala │ │ │ │ ├── Scheduler.scala │ │ │ │ ├── SchedulerConfig.scala │ │ │ │ ├── SchedulerModule.scala │ │ │ │ ├── Task.scala │ │ │ │ ├── msg │ │ │ │ ├── CancelJob.scala │ │ │ │ ├── JobDone.scala │ │ │ │ ├── JobSubmitted.scala │ │ │ │ ├── JobsNotify.scala │ │ │ │ └── PeriodicTaskNotify.scala │ │ │ │ └── usertask │ │ │ │ ├── UserTask.scala │ │ │ │ ├── UserTaskScope.scala │ │ │ │ └── UserTaskStore.scala │ │ │ └── test │ │ │ └── scala │ │ │ └── docspell │ │ │ └── scheduler │ │ │ └── CountingSchemeSpec.scala │ └── impl │ │ └── src │ │ ├── main │ │ └── scala │ │ │ └── docspell │ │ │ └── scheduler │ │ │ └── impl │ │ │ ├── ContextImpl.scala │ │ │ ├── JobQueue.scala │ │ │ ├── JobStoreImpl.scala │ │ │ ├── JobStoreModuleBuilder.scala │ │ │ ├── JobStorePublish.scala │ │ │ ├── LogEvent.scala │ │ │ ├── LogSink.scala │ │ │ ├── Marked.scala │ │ │ ├── PeriodicSchedulerBuilder.scala │ │ │ ├── PeriodicSchedulerImpl.scala │ │ │ ├── PeriodicTaskStore.scala │ │ │ ├── QJob.scala │ │ │ ├── QUserTask.scala │ │ │ ├── QueueLogger.scala │ │ │ ├── SchedulerBuilder.scala │ │ │ ├── SchedulerImpl.scala │ │ │ ├── SchedulerModuleBuilder.scala │ │ │ └── UserTaskStoreImpl.scala │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── scheduler │ │ └── impl │ │ └── QJobTest.scala ├── store │ └── src │ │ ├── main │ │ ├── resources │ │ │ └── db │ │ │ │ ├── fixups │ │ │ │ ├── h2 │ │ │ │ │ └── V1.33.0__fix_reorganize_files.sql │ │ │ │ ├── mariadb │ │ │ │ │ └── V1.33.0__fix_reorganize_files.sql │ │ │ │ └── postgresql │ │ │ │ │ └── V1.33.0__fix_reorganize_files.sql │ │ │ │ └── migration │ │ │ │ ├── h2 │ │ │ │ ├── V1.0.0__initial_database.sql │ │ │ │ ├── V1.1.0__useremail.sql │ │ │ │ ├── V1.10.0__attachment_preview.sql │ │ │ │ ├── V1.11.0__pdf_pages.sql │ │ │ │ ├── V1.12.0__upload_data.sql │ │ │ │ ├── V1.13.0__custom_fields.sql │ │ │ │ ├── V1.14.0__person_org.sql │ │ │ │ ├── V1.15.0__rememberme.sql │ │ │ │ ├── V1.16.0__add_imap_oauth.sql │ │ │ │ ├── V1.17.0__meta_language.sql │ │ │ │ ├── V1.18.0__classifier_model.sql │ │ │ │ ├── V1.19.0__add_classify_meta.sql │ │ │ │ ├── V1.19.1__remove_enabled.sql │ │ │ │ ├── V1.2.0__origin_source.sql │ │ │ │ ├── V1.20.0__personuse.sql │ │ │ │ ├── V1.20.1__equipment_description.sql │ │ │ │ ├── V1.20.2__org_shortname.sql │ │ │ │ ├── V1.20.3__node_seen.sql │ │ │ │ ├── V1.20.4__source_lang.sql │ │ │ │ ├── V1.21.0__cast_function.sql │ │ │ │ ├── V1.21.1__equip_org_use.sql │ │ │ │ ├── V1.22.0__add_task_name.sql │ │ │ │ ├── V1.23.0__clientsettings.sql │ │ │ │ ├── V1.24.0__drop_fts_migration.sql │ │ │ │ ├── V1.25.0__add_empty_trash.sql │ │ │ │ ├── V1.25.1__fix_periodic_submitter_value.sql │ │ │ │ ├── V1.25.2__add_trash_min_age.sql │ │ │ │ ├── V1.25.3__delete_corrupt_trash_task.sql │ │ │ │ ├── V1.25.4__add_source_attachonly.sql │ │ │ │ ├── V1.26.0__missing_indexes.sql │ │ │ │ ├── V1.26.1__totp.sql │ │ │ │ ├── V1.26.2__openid.sql │ │ │ │ ├── V1.26.3__filestore.sql │ │ │ │ ├── V1.27.0__collective_passwords.sql │ │ │ │ ├── V1.27.1__item_share.sql │ │ │ │ ├── V1.28.0__pubsub.sql │ │ │ │ ├── V1.28.1__intern_settings.sql │ │ │ │ ├── V1.29.0__reset_classifier_file.sql │ │ │ │ ├── V1.29.1__notification.sql │ │ │ │ ├── V1.3.0__periodic_job.sql │ │ │ │ ├── V1.30.0__clientsettings_collective.sql │ │ │ │ ├── V1.31.0__query_bookmark.sql │ │ │ │ ├── V1.31.1__gotify_prio.sql │ │ │ │ ├── V1.32.0__notification_channel_name.sql │ │ │ │ ├── V1.32.1__notification_hook_multi_channel.sql │ │ │ │ ├── V1.33.0__reorganize_file_ids.sql │ │ │ │ ├── V1.34.0__item_relation.sql │ │ │ │ ├── V1.35.0__download_query.sql │ │ │ │ ├── V1.35.1__password_length.sql │ │ │ │ ├── V1.36.0__addons.sql │ │ │ │ ├── V1.38.0__more_indexes.sql │ │ │ │ ├── V1.38.1__remove_unused_column.sql │ │ │ │ ├── V1.38.2__rememberme.sql │ │ │ │ ├── V1.39.0__collective_id.sql │ │ │ │ ├── V1.39.1__file_meta_migration.sql │ │ │ │ ├── V1.39.3__rename_value.sql │ │ │ │ ├── V1.4.0__attachment_archive.sql │ │ │ │ ├── V1.5.0__userimap.sql │ │ │ │ ├── V1.6.0__integration_enabled.sql │ │ │ │ ├── V1.7.0__fts-migration.sql │ │ │ │ ├── V1.8.0__folders.sql │ │ │ │ ├── V1.9.0__updated_column.sql │ │ │ │ ├── V1.9.1__classifier.sql │ │ │ │ ├── V1.9.3__joblog_counter.sql │ │ │ │ └── V1.9.4__unique_equipments.sql │ │ │ │ ├── mariadb │ │ │ │ ├── V1.0.0__initial_database.sql │ │ │ │ ├── V1.1.0__useremail.sql │ │ │ │ ├── V1.10.0__attachment_preview.sql │ │ │ │ ├── V1.11.0__pdf_pages.sql │ │ │ │ ├── V1.12.0__upload_data.sql │ │ │ │ ├── V1.13.0__custom_fields.sql │ │ │ │ ├── V1.14.0__person_org.sql │ │ │ │ ├── V1.15.0__rememberme.sql │ │ │ │ ├── V1.16.0__add_imap_oauth.sql │ │ │ │ ├── V1.17.0__meta_language.sql │ │ │ │ ├── V1.18.0__classifier_model.sql │ │ │ │ ├── V1.19.0__add_classify_meta.sql │ │ │ │ ├── V1.19.1__remove_enabled.sql │ │ │ │ ├── V1.2.0__origin_source.sql │ │ │ │ ├── V1.20.0__personuse.sql │ │ │ │ ├── V1.20.1__equipment_description.sql │ │ │ │ ├── V1.20.2__org_shortname.sql │ │ │ │ ├── V1.20.3__node_seen.sql │ │ │ │ ├── V1.20.4__source_lang.sql │ │ │ │ ├── V1.21.0__cast_function.sql │ │ │ │ ├── V1.21.1__equip_org_use.sql │ │ │ │ ├── V1.22.0__add_task_name.sql │ │ │ │ ├── V1.23.0__clientsettings.sql │ │ │ │ ├── V1.24.0__drop_fts_migration.sql │ │ │ │ ├── V1.25.0__add_empty_trash.sql │ │ │ │ ├── V1.25.1__fix_periodic_submitter_value.sql │ │ │ │ ├── V1.25.2__add_trash_min_age.sql │ │ │ │ ├── V1.25.3__delete_corrupt_trash_task.sql │ │ │ │ ├── V1.25.4__add_source_attachonly.sql │ │ │ │ ├── V1.26.0__missing_indexes.sql │ │ │ │ ├── V1.26.1__totp.sql │ │ │ │ ├── V1.26.2__openid.sql │ │ │ │ ├── V1.26.3__filestore.sql │ │ │ │ ├── V1.27.0__collective_passwords.sql │ │ │ │ ├── V1.27.1__item_share.sql │ │ │ │ ├── V1.28.0__pubsub.sql │ │ │ │ ├── V1.28.1__intern_settings.sql │ │ │ │ ├── V1.29.0__reset_classifier_file.sql │ │ │ │ ├── V1.29.1__notification.sql │ │ │ │ ├── V1.3.0__periodic_job.sql │ │ │ │ ├── V1.30.0__clientsettings_collective.sql │ │ │ │ ├── V1.31.0__query_bookmark.sql │ │ │ │ ├── V1.31.1__gotify_prio.sql │ │ │ │ ├── V1.32.0__notification_channel_name.sql │ │ │ │ ├── V1.32.1__notification_hook_multi_channel.sql │ │ │ │ ├── V1.33.0__reorganize_file_ids.sql │ │ │ │ ├── V1.34.0__item_relation.sql │ │ │ │ ├── V1.35.0__download_query.sql │ │ │ │ ├── V1.35.1__password_length.sql │ │ │ │ ├── V1.36.0__addons.sql │ │ │ │ ├── V1.38.0__more_indexes.sql │ │ │ │ ├── V1.38.1__remove_unused_column.sql │ │ │ │ ├── V1.38.2__rememberme.sql │ │ │ │ ├── V1.39.0__collective_id.sql │ │ │ │ ├── V1.39.1__file_meta_migration.sql │ │ │ │ ├── V1.39.3__rename_value.sql │ │ │ │ ├── V1.4.0__attachment_archive.sql │ │ │ │ ├── V1.5.0__userimap.sql │ │ │ │ ├── V1.6.0__integration_enabled.sql │ │ │ │ ├── V1.6.1__fix_timestamp_columns.sql │ │ │ │ ├── V1.7.0__fts-migration.sql │ │ │ │ ├── V1.7.1__fix_item_date.sql │ │ │ │ ├── V1.8.0__folders.sql │ │ │ │ ├── V1.9.0__updated_column.sql │ │ │ │ ├── V1.9.1__classifier.sql │ │ │ │ ├── V1.9.2__fix_text_length.sql │ │ │ │ ├── V1.9.3__joblog_counter.sql │ │ │ │ └── V1.9.4__unique_equipments.sql │ │ │ │ └── postgresql │ │ │ │ ├── V1.0.0__initial_database.sql │ │ │ │ ├── V1.1.0__useremail.sql │ │ │ │ ├── V1.10.0__attachment_preview.sql │ │ │ │ ├── V1.11.0__pdf_pages.sql │ │ │ │ ├── V1.12.0__upload_data.sql │ │ │ │ ├── V1.13.0__custom_fields.sql │ │ │ │ ├── V1.14.0__person_org.sql │ │ │ │ ├── V1.15.0__rememberme.sql │ │ │ │ ├── V1.16.0__add_imap_oauth.sql │ │ │ │ ├── V1.17.0__meta_language.sql │ │ │ │ ├── V1.18.0__classifier_model.sql │ │ │ │ ├── V1.19.0__add_classify_meta.sql │ │ │ │ ├── V1.19.1__remove_enabled.sql │ │ │ │ ├── V1.2.0__origin_source.sql │ │ │ │ ├── V1.20.0__personuse.sql │ │ │ │ ├── V1.20.1__equipment_description.sql │ │ │ │ ├── V1.20.2__org_shortname.sql │ │ │ │ ├── V1.20.3__node_seen.sql │ │ │ │ ├── V1.20.4__source_lang.sql │ │ │ │ ├── V1.21.0__cast_function.sql │ │ │ │ ├── V1.21.1__equip_org_use.sql │ │ │ │ ├── V1.22.0__add_task_name.sql │ │ │ │ ├── V1.23.0__clientsettings.sql │ │ │ │ ├── V1.24.0__drop_fts_migration.sql │ │ │ │ ├── V1.25.0__add_empty_trash.sql │ │ │ │ ├── V1.25.1__fix_periodic_submitter_value.sql │ │ │ │ ├── V1.25.2__add_trash_min_age.sql │ │ │ │ ├── V1.25.3__delete_corrupt_trash_task.sql │ │ │ │ ├── V1.25.4__add_source_attachonly.sql │ │ │ │ ├── V1.26.0__missing_indexes.sql │ │ │ │ ├── V1.26.1__totp.sql │ │ │ │ ├── V1.26.2__openid.sql │ │ │ │ ├── V1.26.3__filestore.sql │ │ │ │ ├── V1.27.0__collective_passwords.sql │ │ │ │ ├── V1.27.1__item_share.sql │ │ │ │ ├── V1.28.0__pubsub.sql │ │ │ │ ├── V1.28.1__intern_settings.sql │ │ │ │ ├── V1.29.0__reset_classifier_file.sql │ │ │ │ ├── V1.29.1__notification.sql │ │ │ │ ├── V1.3.0__periodic_job.sql │ │ │ │ ├── V1.30.0__clientsettings_collective.sql │ │ │ │ ├── V1.31.0__query_bookmark.sql │ │ │ │ ├── V1.31.1__gotify_prio.sql │ │ │ │ ├── V1.32.0__notification_channel_name.sql │ │ │ │ ├── V1.32.1__notification_hook_multi_channel.sql │ │ │ │ ├── V1.33.0__reorganize_file_ids.sql │ │ │ │ ├── V1.34.0__item_relation.sql │ │ │ │ ├── V1.35.0__download_query.sql │ │ │ │ ├── V1.35.1__password_length.sql │ │ │ │ ├── V1.36.0__addons.sql │ │ │ │ ├── V1.38.0__more_indexes.sql │ │ │ │ ├── V1.38.1__remove_unused_column.sql │ │ │ │ ├── V1.38.2__rememberme.sql │ │ │ │ ├── V1.39.0__collective_id.sql │ │ │ │ ├── V1.39.1__file_meta_migration.sql │ │ │ │ ├── V1.39.3__rename_value.sql │ │ │ │ ├── V1.4.0__attachment_archive.sql │ │ │ │ ├── V1.5.0__userimap.sql │ │ │ │ ├── V1.6.0__integration_enabled.sql │ │ │ │ ├── V1.7.0__fts-migration.sql │ │ │ │ ├── V1.8.0__folders.sql │ │ │ │ ├── V1.9.0__updated_column.sql │ │ │ │ ├── V1.9.1__classifier.sql │ │ │ │ ├── V1.9.3__joblog_counter.sql │ │ │ │ └── V1.9.4__unique_equipments.sql │ │ └── scala │ │ │ ├── db │ │ │ └── migration │ │ │ │ ├── common │ │ │ │ ├── JsonCodecs.scala │ │ │ │ ├── MigrateCollectiveIdTaskArgs.scala │ │ │ │ ├── MigrateDueItemTasks.scala │ │ │ │ ├── MigrateNotifyTasks.scala │ │ │ │ └── TransactorSupport.scala │ │ │ │ ├── data │ │ │ │ ├── AllPreviewsArgs.scala │ │ │ │ ├── ConvertAllPdfArgs.scala │ │ │ │ ├── DownloadZipArgs.scala │ │ │ │ ├── EmptyTrashArgs.scala │ │ │ │ ├── FileIntegrityCheckArgs.scala │ │ │ │ ├── ItemAddonTaskArgs.scala │ │ │ │ ├── LearnClassifierArgs.scala │ │ │ │ ├── NotifyDueItemsArgs.scala │ │ │ │ ├── PeriodicDueItemsArgs.scala │ │ │ │ ├── PeriodicDueItemsArgsOld.scala │ │ │ │ ├── PeriodicQueryArgs.scala │ │ │ │ ├── PeriodicQueryArgsOld.scala │ │ │ │ ├── ProcessItemArgs.scala │ │ │ │ ├── ReIndexTaskArgs.scala │ │ │ │ ├── ScanMailboxArgs.scala │ │ │ │ ├── ScheduledAddonTaskArgs.scala │ │ │ │ └── package.scala │ │ │ │ ├── h2 │ │ │ │ ├── V1_29_2__MigrateNotifyTask.scala │ │ │ │ ├── V1_32_2__MigrateChannels.scala │ │ │ │ └── V1_39_2__MigrateTasks.scala │ │ │ │ ├── mariadb │ │ │ │ ├── V1_29_2__MigrateNotifyTask.scala │ │ │ │ ├── V1_32_2__MigrateChannels.scala │ │ │ │ └── V1_39_2__MigrateTasks.scala │ │ │ │ └── postgresql │ │ │ │ ├── V1_29_2__MigrateNotifyTask.scala │ │ │ │ ├── V1_32_2__MigrateChannels.scala │ │ │ │ └── V1_39_2__MigrateTasks.scala │ │ │ └── docspell │ │ │ └── store │ │ │ ├── AddResult.scala │ │ │ ├── Db.scala │ │ │ ├── JdbcConfig.scala │ │ │ ├── SchemaMigrateConfig.scala │ │ │ ├── Store.scala │ │ │ ├── UpdateResult.scala │ │ │ ├── file │ │ │ ├── AttributeStore.scala │ │ │ ├── BinnyUtils.scala │ │ │ ├── FileMetadata.scala │ │ │ ├── FileRepository.scala │ │ │ ├── FileRepositoryConfig.scala │ │ │ ├── FileRepositoryImpl.scala │ │ │ └── FileUrlReader.scala │ │ │ ├── fts │ │ │ ├── ContextEntry.scala │ │ │ ├── RFtsResult.scala │ │ │ └── TempFtsOps.scala │ │ │ ├── impl │ │ │ ├── DoobieLogging.scala │ │ │ ├── DoobieMeta.scala │ │ │ ├── StoreImpl.scala │ │ │ └── h2 │ │ │ │ └── CastNumericFun.scala │ │ │ ├── migrate │ │ │ └── FlywayMigrate.scala │ │ │ ├── qb │ │ │ ├── Batch.scala │ │ │ ├── Column.scala │ │ │ ├── Condition.scala │ │ │ ├── CteBind.scala │ │ │ ├── DBFunction.scala │ │ │ ├── DML.scala │ │ │ ├── DSL.scala │ │ │ ├── FromExpr.scala │ │ │ ├── GroupBy.scala │ │ │ ├── Operator.scala │ │ │ ├── OrderBy.scala │ │ │ ├── Select.scala │ │ │ ├── SelectExpr.scala │ │ │ ├── Setter.scala │ │ │ ├── TableDef.scala │ │ │ ├── generator │ │ │ │ ├── ItemQueryGenerator.scala │ │ │ │ └── Tables.scala │ │ │ └── impl │ │ │ │ ├── CommonBuilder.scala │ │ │ │ ├── ConditionBuilder.scala │ │ │ │ ├── DBFunctionBuilder.scala │ │ │ │ ├── FromExprBuilder.scala │ │ │ │ ├── SelectBuilder.scala │ │ │ │ └── SelectExprBuilder.scala │ │ │ ├── queries │ │ │ ├── AttachedFile.scala │ │ │ ├── AttachmentLight.scala │ │ │ ├── CategoryCount.scala │ │ │ ├── ChannelMap.scala │ │ │ ├── CustomValue.scala │ │ │ ├── FieldStats.scala │ │ │ ├── FolderCount.scala │ │ │ ├── FtsSupport.scala │ │ │ ├── IdRefCount.scala │ │ │ ├── ItemData.scala │ │ │ ├── ItemFieldValue.scala │ │ │ ├── ItemFileMeta.scala │ │ │ ├── ListItem.scala │ │ │ ├── ListItemWithTags.scala │ │ │ ├── QAttachment.scala │ │ │ ├── QCollective.scala │ │ │ ├── QCustomField.scala │ │ │ ├── QFolder.scala │ │ │ ├── QItem.scala │ │ │ ├── QJobQueue.scala │ │ │ ├── QLogin.scala │ │ │ ├── QMails.scala │ │ │ ├── QMoveAttachment.scala │ │ │ ├── QNotification.scala │ │ │ ├── QOrganization.scala │ │ │ ├── QPeriodicTask.scala │ │ │ ├── QUser.scala │ │ │ ├── Query.scala │ │ │ ├── QueryWildcard.scala │ │ │ ├── SearchSummary.scala │ │ │ ├── SelectedItem.scala │ │ │ ├── TagCount.scala │ │ │ └── TextAndTag.scala │ │ │ ├── records │ │ │ ├── AddonRunConfigData.scala │ │ │ ├── AddonRunConfigResolved.scala │ │ │ ├── RAddonArchive.scala │ │ │ ├── RAddonRunConfig.scala │ │ │ ├── RAddonRunConfigAddon.scala │ │ │ ├── RAddonRunConfigTrigger.scala │ │ │ ├── RAttachment.scala │ │ │ ├── RAttachmentArchive.scala │ │ │ ├── RAttachmentMeta.scala │ │ │ ├── RAttachmentPreview.scala │ │ │ ├── RAttachmentSource.scala │ │ │ ├── RClassifierModel.scala │ │ │ ├── RClassifierSetting.scala │ │ │ ├── RClientSettingsCollective.scala │ │ │ ├── RClientSettingsUser.scala │ │ │ ├── RCollective.scala │ │ │ ├── RCollectivePassword.scala │ │ │ ├── RContact.scala │ │ │ ├── RCustomField.scala │ │ │ ├── RCustomFieldValue.scala │ │ │ ├── RDownloadQuery.scala │ │ │ ├── REmptyTrashSetting.scala │ │ │ ├── REquipment.scala │ │ │ ├── RFileMeta.scala │ │ │ ├── RFolder.scala │ │ │ ├── RFolderMember.scala │ │ │ ├── RInternalSetting.scala │ │ │ ├── RInvitation.scala │ │ │ ├── RItem.scala │ │ │ ├── RItemLink.scala │ │ │ ├── RItemProposal.scala │ │ │ ├── RJob.scala │ │ │ ├── RJobGroupUse.scala │ │ │ ├── RJobLog.scala │ │ │ ├── RNode.scala │ │ │ ├── RNotificationChannel.scala │ │ │ ├── RNotificationChannelGotify.scala │ │ │ ├── RNotificationChannelHttp.scala │ │ │ ├── RNotificationChannelMail.scala │ │ │ ├── RNotificationChannelMatrix.scala │ │ │ ├── RNotificationHook.scala │ │ │ ├── RNotificationHookChannel.scala │ │ │ ├── RNotificationHookEvent.scala │ │ │ ├── ROrganization.scala │ │ │ ├── RPeriodicTask.scala │ │ │ ├── RPerson.scala │ │ │ ├── RPubSub.scala │ │ │ ├── RQueryBookmark.scala │ │ │ ├── RRememberMe.scala │ │ │ ├── RSentMail.scala │ │ │ ├── RSentMailItem.scala │ │ │ ├── RShare.scala │ │ │ ├── RSource.scala │ │ │ ├── RTag.scala │ │ │ ├── RTagItem.scala │ │ │ ├── RTagSource.scala │ │ │ ├── RTotp.scala │ │ │ ├── RUser.scala │ │ │ ├── RUserEmail.scala │ │ │ ├── RUserImap.scala │ │ │ ├── SourceData.scala │ │ │ └── TagItemName.scala │ │ │ └── syntax │ │ │ └── MimeTypes.scala │ │ └── test │ │ ├── resources │ │ └── docspell-0.24.0-dump-h2-1.24.0-2021-07-13-2307.sql │ │ └── scala │ │ └── docspell │ │ └── store │ │ ├── DatabaseTest.scala │ │ ├── Docker.scala │ │ ├── StoreFixture.scala │ │ ├── fts │ │ └── TempFtsOpsTest.scala │ │ ├── generator │ │ └── ItemQueryGeneratorTest.scala │ │ ├── migrate │ │ └── MigrateTest.scala │ │ ├── qb │ │ ├── QueryBuilderTest.scala │ │ ├── impl │ │ │ ├── ConditionBuilderTest.scala │ │ │ ├── DSLTest.scala │ │ │ └── SelectBuilderTest.scala │ │ └── model │ │ │ ├── CourseRecord.scala │ │ │ └── PersonRecord.scala │ │ └── queries │ │ └── QueryWildcardTest.scala ├── totp │ └── src │ │ ├── main │ │ └── scala │ │ │ └── docspell │ │ │ └── totp │ │ │ ├── Key.scala │ │ │ ├── Mac.scala │ │ │ ├── OnetimePassword.scala │ │ │ ├── PassLength.scala │ │ │ ├── Settings.scala │ │ │ └── Totp.scala │ │ └── test │ │ └── scala │ │ └── docspell │ │ └── totp │ │ ├── KeyTest.scala │ │ └── TotpTest.scala └── webapp │ ├── elm-analyse.json │ ├── elm-package.json │ ├── elm.json │ ├── package-lock.json │ ├── package.json │ ├── postcss.config.js │ ├── src │ └── main │ │ ├── elm │ │ ├── Api.elm │ │ ├── App │ │ │ ├── Data.elm │ │ │ ├── Update.elm │ │ │ └── View2.elm │ │ ├── Comp │ │ │ ├── AddonArchiveForm.elm │ │ │ ├── AddonArchiveManage.elm │ │ │ ├── AddonArchiveTable.elm │ │ │ ├── AddonRunConfigForm.elm │ │ │ ├── AddonRunConfigManage.elm │ │ │ ├── AddonRunConfigTable.elm │ │ │ ├── AddressForm.elm │ │ │ ├── AttachmentMeta.elm │ │ │ ├── Basic.elm │ │ │ ├── BasicSizeField.elm │ │ │ ├── BookmarkChooser.elm │ │ │ ├── BookmarkDropdown.elm │ │ │ ├── BookmarkManage.elm │ │ │ ├── BookmarkQueryForm.elm │ │ │ ├── BookmarkQueryManage.elm │ │ │ ├── BookmarkTable.elm │ │ │ ├── BoxEdit.elm │ │ │ ├── BoxMessageEdit.elm │ │ │ ├── BoxQueryEdit.elm │ │ │ ├── BoxQueryView.elm │ │ │ ├── BoxSearchQueryInput.elm │ │ │ ├── BoxStatsEdit.elm │ │ │ ├── BoxStatsView.elm │ │ │ ├── BoxUploadEdit.elm │ │ │ ├── BoxUploadView.elm │ │ │ ├── BoxView.elm │ │ │ ├── CalEventInput.elm │ │ │ ├── ChangePasswordForm.elm │ │ │ ├── ChannelForm.elm │ │ │ ├── ChannelMenu.elm │ │ │ ├── ChannelRefInput.elm │ │ │ ├── ClassifierSettingsForm.elm │ │ │ ├── CollectiveSettingsForm.elm │ │ │ ├── ColorTagger.elm │ │ │ ├── ConfirmModal.elm │ │ │ ├── ContactField.elm │ │ │ ├── CustomFieldForm.elm │ │ │ ├── CustomFieldInput.elm │ │ │ ├── CustomFieldManage.elm │ │ │ ├── CustomFieldMultiInput.elm │ │ │ ├── CustomFieldTable.elm │ │ │ ├── DashboardEdit.elm │ │ │ ├── DashboardManage.elm │ │ │ ├── DashboardView.elm │ │ │ ├── DatePicker.elm │ │ │ ├── DetailEdit.elm │ │ │ ├── DownloadAll.elm │ │ │ ├── Dropdown.elm │ │ │ ├── Dropzone.elm │ │ │ ├── DueItemsTaskForm.elm │ │ │ ├── DueItemsTaskList.elm │ │ │ ├── DueItemsTaskManage.elm │ │ │ ├── EmailInput.elm │ │ │ ├── EmailSettingsForm.elm │ │ │ ├── EmailSettingsManage.elm │ │ │ ├── EmailSettingsTable.elm │ │ │ ├── EmptyTrashForm.elm │ │ │ ├── EquipmentForm.elm │ │ │ ├── EquipmentManage.elm │ │ │ ├── EquipmentTable.elm │ │ │ ├── EventSample.elm │ │ │ ├── ExpandCollapse.elm │ │ │ ├── FieldListSelect.elm │ │ │ ├── FixedDropdown.elm │ │ │ ├── FolderDetail.elm │ │ │ ├── FolderManage.elm │ │ │ ├── FolderSelect.elm │ │ │ ├── FolderTable.elm │ │ │ ├── ImapSettingsForm.elm │ │ │ ├── ImapSettingsManage.elm │ │ │ ├── ImapSettingsTable.elm │ │ │ ├── IntField.elm │ │ │ ├── ItemCard.elm │ │ │ ├── ItemCardList.elm │ │ │ ├── ItemColumnDropdown.elm │ │ │ ├── ItemColumnView.elm │ │ │ ├── ItemDetail.elm │ │ │ ├── ItemDetail │ │ │ │ ├── AddFilesForm.elm │ │ │ │ ├── ConfirmModalView.elm │ │ │ │ ├── EditForm.elm │ │ │ │ ├── FieldTabState.elm │ │ │ │ ├── FormChange.elm │ │ │ │ ├── ItemInfoHeader.elm │ │ │ │ ├── Model.elm │ │ │ │ ├── MultiEditMenu.elm │ │ │ │ ├── Notes.elm │ │ │ │ ├── RunAddonForm.elm │ │ │ │ ├── ShowQrCode.elm │ │ │ │ ├── SingleAttachment.elm │ │ │ │ ├── Update.elm │ │ │ │ └── View2.elm │ │ │ ├── ItemLinkForm.elm │ │ │ ├── ItemMail.elm │ │ │ ├── ItemMerge.elm │ │ │ ├── ItemSearchInput.elm │ │ │ ├── KeyInput.elm │ │ │ ├── LinkTarget.elm │ │ │ ├── MarkdownInput.elm │ │ │ ├── MenuBar.elm │ │ │ ├── NotificationChannelManage.elm │ │ │ ├── NotificationChannelTable.elm │ │ │ ├── NotificationGotifyForm.elm │ │ │ ├── NotificationHookForm.elm │ │ │ ├── NotificationHookManage.elm │ │ │ ├── NotificationHookTable.elm │ │ │ ├── NotificationHttpForm.elm │ │ │ ├── NotificationMailForm.elm │ │ │ ├── NotificationMatrixForm.elm │ │ │ ├── NotificationTest.elm │ │ │ ├── OrgForm.elm │ │ │ ├── OrgManage.elm │ │ │ ├── OrgTable.elm │ │ │ ├── OtpSetup.elm │ │ │ ├── PasswordInput.elm │ │ │ ├── PeriodicQueryTaskForm.elm │ │ │ ├── PeriodicQueryTaskList.elm │ │ │ ├── PeriodicQueryTaskManage.elm │ │ │ ├── PersonForm.elm │ │ │ ├── PersonManage.elm │ │ │ ├── PersonTable.elm │ │ │ ├── PowerSearchInput.elm │ │ │ ├── Progress.elm │ │ │ ├── PublishItems.elm │ │ │ ├── ScanMailboxForm.elm │ │ │ ├── ScanMailboxList.elm │ │ │ ├── ScanMailboxManage.elm │ │ │ ├── SearchMenu.elm │ │ │ ├── SearchStatsView.elm │ │ │ ├── SentMails.elm │ │ │ ├── ShareForm.elm │ │ │ ├── ShareMail.elm │ │ │ ├── ShareManage.elm │ │ │ ├── SharePasswordForm.elm │ │ │ ├── ShareTable.elm │ │ │ ├── ShareView.elm │ │ │ ├── SimpleTextInput.elm │ │ │ ├── SourceForm.elm │ │ │ ├── SourceManage.elm │ │ │ ├── SourceTable.elm │ │ │ ├── StringListInput.elm │ │ │ ├── Tabs.elm │ │ │ ├── TagDropdown.elm │ │ │ ├── TagForm.elm │ │ │ ├── TagManage.elm │ │ │ ├── TagSelect.elm │ │ │ ├── TagTable.elm │ │ │ ├── UiSettingsForm.elm │ │ │ ├── UiSettingsManage.elm │ │ │ ├── UiSettingsMigrate.elm │ │ │ ├── UploadForm.elm │ │ │ ├── UrlCopy.elm │ │ │ ├── UserForm.elm │ │ │ ├── UserManage.elm │ │ │ ├── UserTable.elm │ │ │ └── YesNoDimmer.elm │ │ ├── Data │ │ │ ├── AccountScope.elm │ │ │ ├── AddonTrigger.elm │ │ │ ├── AppEvent.elm │ │ │ ├── BasicSize.elm │ │ │ ├── Bookmarks.elm │ │ │ ├── Box.elm │ │ │ ├── BoxContent.elm │ │ │ ├── CalEvent.elm │ │ │ ├── ChannelRef.elm │ │ │ ├── ChannelType.elm │ │ │ ├── Color.elm │ │ │ ├── ContactType.elm │ │ │ ├── CustomFieldChange.elm │ │ │ ├── CustomFieldOrder.elm │ │ │ ├── CustomFieldType.elm │ │ │ ├── Dashboard.elm │ │ │ ├── Dashboards.elm │ │ │ ├── Direction.elm │ │ │ ├── DownloadAllState.elm │ │ │ ├── DownloadFileType.elm │ │ │ ├── DropdownStyle.elm │ │ │ ├── Environment.elm │ │ │ ├── EquipmentOrder.elm │ │ │ ├── EquipmentUse.elm │ │ │ ├── EventType.elm │ │ │ ├── Fields.elm │ │ │ ├── Flags.elm │ │ │ ├── FolderOrder.elm │ │ │ ├── Icons.elm │ │ │ ├── ItemArrange.elm │ │ │ ├── ItemColumn.elm │ │ │ ├── ItemIds.elm │ │ │ ├── ItemNav.elm │ │ │ ├── ItemQuery.elm │ │ │ ├── ItemSelection.elm │ │ │ ├── ItemTemplate.elm │ │ │ ├── Items.elm │ │ │ ├── Language.elm │ │ │ ├── ListType.elm │ │ │ ├── Money.elm │ │ │ ├── NotificationChannel.elm │ │ │ ├── OrgUse.elm │ │ │ ├── OrganizationOrder.elm │ │ │ ├── Pdf.elm │ │ │ ├── PersonOrder.elm │ │ │ ├── PersonUse.elm │ │ │ ├── Priority.elm │ │ │ ├── QueryParseResult.elm │ │ │ ├── SSLType.elm │ │ │ ├── SearchMode.elm │ │ │ ├── ServerEvent.elm │ │ │ ├── SourceState.elm │ │ │ ├── TagOrder.elm │ │ │ ├── TimeZone.elm │ │ │ ├── UiSettings.elm │ │ │ ├── UiTheme.elm │ │ │ ├── UserState.elm │ │ │ └── Validated.elm │ │ ├── Main.elm │ │ ├── Messages.elm │ │ ├── Messages │ │ │ ├── App.elm │ │ │ ├── Basics.elm │ │ │ ├── Comp │ │ │ │ ├── AddonArchiveForm.elm │ │ │ │ ├── AddonArchiveManage.elm │ │ │ │ ├── AddonArchiveTable.elm │ │ │ │ ├── AddonRunConfigForm.elm │ │ │ │ ├── AddonRunConfigManage.elm │ │ │ │ ├── AddonRunConfigTable.elm │ │ │ │ ├── AddressForm.elm │ │ │ │ ├── AttachmentMeta.elm │ │ │ │ ├── BookmarkChooser.elm │ │ │ │ ├── BookmarkDropdown.elm │ │ │ │ ├── BookmarkManage.elm │ │ │ │ ├── BookmarkQueryForm.elm │ │ │ │ ├── BookmarkQueryManage.elm │ │ │ │ ├── BookmarkTable.elm │ │ │ │ ├── BoxEdit.elm │ │ │ │ ├── BoxMessageEdit.elm │ │ │ │ ├── BoxQueryEdit.elm │ │ │ │ ├── BoxQueryView.elm │ │ │ │ ├── BoxSearchQueryInput.elm │ │ │ │ ├── BoxStatsEdit.elm │ │ │ │ ├── BoxStatsView.elm │ │ │ │ ├── BoxUploadEdit.elm │ │ │ │ ├── BoxUploadView.elm │ │ │ │ ├── BoxView.elm │ │ │ │ ├── CalEventInput.elm │ │ │ │ ├── ChangePasswordForm.elm │ │ │ │ ├── ChannelForm.elm │ │ │ │ ├── ChannelRefInput.elm │ │ │ │ ├── ClassifierSettingsForm.elm │ │ │ │ ├── CollectiveSettingsForm.elm │ │ │ │ ├── CustomFieldForm.elm │ │ │ │ ├── CustomFieldInput.elm │ │ │ │ ├── CustomFieldManage.elm │ │ │ │ ├── CustomFieldMultiInput.elm │ │ │ │ ├── CustomFieldTable.elm │ │ │ │ ├── DashboardEdit.elm │ │ │ │ ├── DashboardManage.elm │ │ │ │ ├── DashboardView.elm │ │ │ │ ├── DetailEdit.elm │ │ │ │ ├── DownloadAll.elm │ │ │ │ ├── Dropzone.elm │ │ │ │ ├── DueItemsTaskForm.elm │ │ │ │ ├── DueItemsTaskList.elm │ │ │ │ ├── DueItemsTaskManage.elm │ │ │ │ ├── EmailSettingsForm.elm │ │ │ │ ├── EmailSettingsManage.elm │ │ │ │ ├── EmailSettingsTable.elm │ │ │ │ ├── EmptyTrashForm.elm │ │ │ │ ├── EquipmentForm.elm │ │ │ │ ├── EquipmentManage.elm │ │ │ │ ├── EquipmentTable.elm │ │ │ │ ├── EventSample.elm │ │ │ │ ├── ExpandCollapse.elm │ │ │ │ ├── FolderDetail.elm │ │ │ │ ├── FolderManage.elm │ │ │ │ ├── FolderSelect.elm │ │ │ │ ├── FolderTable.elm │ │ │ │ ├── HttpError.elm │ │ │ │ ├── ImapSettingsForm.elm │ │ │ │ ├── ImapSettingsManage.elm │ │ │ │ ├── ImapSettingsTable.elm │ │ │ │ ├── ItemCard.elm │ │ │ │ ├── ItemCardList.elm │ │ │ │ ├── ItemColumnDropdown.elm │ │ │ │ ├── ItemDetail.elm │ │ │ │ ├── ItemDetail │ │ │ │ │ ├── AddFilesForm.elm │ │ │ │ │ ├── ConfirmModal.elm │ │ │ │ │ ├── EditForm.elm │ │ │ │ │ ├── ItemInfoHeader.elm │ │ │ │ │ ├── MultiEditMenu.elm │ │ │ │ │ ├── Notes.elm │ │ │ │ │ ├── RunAddonForm.elm │ │ │ │ │ └── SingleAttachment.elm │ │ │ │ ├── ItemLinkForm.elm │ │ │ │ ├── ItemMail.elm │ │ │ │ ├── ItemMerge.elm │ │ │ │ ├── ItemSearchInput.elm │ │ │ │ ├── NotificationChannelManage.elm │ │ │ │ ├── NotificationChannelTable.elm │ │ │ │ ├── NotificationGotifyForm.elm │ │ │ │ ├── NotificationHookForm.elm │ │ │ │ ├── NotificationHookManage.elm │ │ │ │ ├── NotificationHookTable.elm │ │ │ │ ├── NotificationHttpForm.elm │ │ │ │ ├── NotificationMailForm.elm │ │ │ │ ├── NotificationMatrixForm.elm │ │ │ │ ├── OrgForm.elm │ │ │ │ ├── OrgManage.elm │ │ │ │ ├── OrgTable.elm │ │ │ │ ├── OtpSetup.elm │ │ │ │ ├── PeriodicQueryTaskForm.elm │ │ │ │ ├── PeriodicQueryTaskList.elm │ │ │ │ ├── PeriodicQueryTaskManage.elm │ │ │ │ ├── PersonForm.elm │ │ │ │ ├── PersonManage.elm │ │ │ │ ├── PersonTable.elm │ │ │ │ ├── PublishItems.elm │ │ │ │ ├── ScanMailboxForm.elm │ │ │ │ ├── ScanMailboxManage.elm │ │ │ │ ├── ScanMailboxTable.elm │ │ │ │ ├── SearchMenu.elm │ │ │ │ ├── SearchStatsView.elm │ │ │ │ ├── SentMails.elm │ │ │ │ ├── ShareForm.elm │ │ │ │ ├── ShareMail.elm │ │ │ │ ├── ShareManage.elm │ │ │ │ ├── SharePasswordForm.elm │ │ │ │ ├── ShareTable.elm │ │ │ │ ├── ShareView.elm │ │ │ │ ├── SourceForm.elm │ │ │ │ ├── SourceManage.elm │ │ │ │ ├── SourceTable.elm │ │ │ │ ├── TagDropdown.elm │ │ │ │ ├── TagForm.elm │ │ │ │ ├── TagManage.elm │ │ │ │ ├── TagSelect.elm │ │ │ │ ├── TagTable.elm │ │ │ │ ├── UiSettingsForm.elm │ │ │ │ ├── UiSettingsManage.elm │ │ │ │ ├── UploadForm.elm │ │ │ │ ├── UserForm.elm │ │ │ │ ├── UserManage.elm │ │ │ │ └── UserTable.elm │ │ │ ├── Data │ │ │ │ ├── AccountScope.elm │ │ │ │ ├── BoxContent.elm │ │ │ │ ├── ChannelType.elm │ │ │ │ ├── Color.elm │ │ │ │ ├── ContactType.elm │ │ │ │ ├── CustomFieldType.elm │ │ │ │ ├── Direction.elm │ │ │ │ ├── DownloadFileType.elm │ │ │ │ ├── EquipmentUse.elm │ │ │ │ ├── EventType.elm │ │ │ │ ├── Fields.elm │ │ │ │ ├── ItemColumn.elm │ │ │ │ ├── Language.elm │ │ │ │ ├── OrgUse.elm │ │ │ │ ├── PdfMode.elm │ │ │ │ ├── PersonUse.elm │ │ │ │ └── SSLType.elm │ │ │ ├── DateFormat.elm │ │ │ ├── Page │ │ │ │ ├── CollectiveSettings.elm │ │ │ │ ├── Dashboard.elm │ │ │ │ ├── DefaultDashboard.elm │ │ │ │ ├── ItemDetail.elm │ │ │ │ ├── Login.elm │ │ │ │ ├── ManageData.elm │ │ │ │ ├── NewInvite.elm │ │ │ │ ├── Queue.elm │ │ │ │ ├── Register.elm │ │ │ │ ├── Search.elm │ │ │ │ ├── SearchSideMenu.elm │ │ │ │ ├── Share.elm │ │ │ │ ├── ShareDetail.elm │ │ │ │ ├── Upload.elm │ │ │ │ └── UserSettings.elm │ │ │ └── UiLanguage.elm │ │ ├── Page.elm │ │ ├── Page │ │ │ ├── CollectiveSettings │ │ │ │ ├── Data.elm │ │ │ │ ├── Update.elm │ │ │ │ └── View2.elm │ │ │ ├── Dashboard │ │ │ │ ├── Data.elm │ │ │ │ ├── DefaultDashboard.elm │ │ │ │ ├── SideMenu.elm │ │ │ │ ├── Update.elm │ │ │ │ └── View.elm │ │ │ ├── ItemDetail │ │ │ │ ├── Data.elm │ │ │ │ ├── Update.elm │ │ │ │ └── View2.elm │ │ │ ├── Login │ │ │ │ ├── Data.elm │ │ │ │ ├── Update.elm │ │ │ │ └── View2.elm │ │ │ ├── ManageData │ │ │ │ ├── Data.elm │ │ │ │ ├── Update.elm │ │ │ │ └── View2.elm │ │ │ ├── NewInvite │ │ │ │ ├── Data.elm │ │ │ │ ├── Update.elm │ │ │ │ └── View2.elm │ │ │ ├── Queue │ │ │ │ ├── Data.elm │ │ │ │ ├── Update.elm │ │ │ │ └── View2.elm │ │ │ ├── Register │ │ │ │ ├── Data.elm │ │ │ │ ├── Update.elm │ │ │ │ └── View2.elm │ │ │ ├── Search │ │ │ │ ├── Data.elm │ │ │ │ ├── SideMenu.elm │ │ │ │ ├── Update.elm │ │ │ │ └── View2.elm │ │ │ ├── Share │ │ │ │ ├── Data.elm │ │ │ │ ├── LoadMore.elm │ │ │ │ ├── Menubar.elm │ │ │ │ ├── Results.elm │ │ │ │ ├── Sidebar.elm │ │ │ │ ├── TopContent.elm │ │ │ │ ├── Update.elm │ │ │ │ └── View.elm │ │ │ ├── ShareDetail │ │ │ │ ├── Data.elm │ │ │ │ ├── Update.elm │ │ │ │ └── View.elm │ │ │ ├── Upload │ │ │ │ ├── Data.elm │ │ │ │ ├── Update.elm │ │ │ │ └── View2.elm │ │ │ └── UserSettings │ │ │ │ ├── Data.elm │ │ │ │ ├── Update.elm │ │ │ │ └── View2.elm │ │ ├── Ports.elm │ │ ├── Styles.elm │ │ └── Util │ │ │ ├── Address.elm │ │ │ ├── Contact.elm │ │ │ ├── CustomField.elm │ │ │ ├── Duration.elm │ │ │ ├── File.elm │ │ │ ├── Folder.elm │ │ │ ├── Html.elm │ │ │ ├── Http.elm │ │ │ ├── Item.elm │ │ │ ├── ItemDragDrop.elm │ │ │ ├── List.elm │ │ │ ├── Maybe.elm │ │ │ ├── Person.elm │ │ │ ├── Result.elm │ │ │ ├── Size.elm │ │ │ ├── String.elm │ │ │ ├── Tag.elm │ │ │ └── Update.elm │ │ ├── styles │ │ ├── custom-components.css │ │ ├── custom-utilities.css │ │ ├── index.css │ │ └── keep.txt │ │ └── webjar │ │ ├── docspell.css │ │ ├── docspell.js │ │ ├── favicon │ │ ├── android-icon-144x144.png │ │ ├── android-icon-192x192.png │ │ ├── android-icon-36x36.png │ │ ├── android-icon-48x48.png │ │ ├── android-icon-512x512.png │ │ ├── android-icon-72x72.png │ │ ├── android-icon-96x96.png │ │ ├── apple-icon-114x114.png │ │ ├── apple-icon-120x120.png │ │ ├── apple-icon-144x144.png │ │ ├── apple-icon-152x152.png │ │ ├── apple-icon-180x180.png │ │ ├── apple-icon-57x57.png │ │ ├── apple-icon-60x60.png │ │ ├── apple-icon-72x72.png │ │ ├── apple-icon-76x76.png │ │ ├── apple-icon-precomposed.png │ │ ├── apple-icon.png │ │ ├── browserconfig.xml │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon-96x96.png │ │ ├── favicon.ico │ │ ├── manifest.json │ │ ├── ms-icon-144x144.png │ │ ├── ms-icon-150x150.png │ │ ├── ms-icon-310x310.png │ │ └── ms-icon-70x70.png │ │ └── img │ │ ├── logo-400.png │ │ ├── logo-96.png │ │ ├── logo-mc-400.png │ │ ├── logo-mc-96.png │ │ ├── logo-only-mc.svg │ │ └── logo-only.svg │ └── tailwind.config.js ├── nix ├── checks │ ├── configuration-test.nix │ ├── default.nix │ └── testScript.py ├── docker.nix ├── modules │ ├── joex.nix │ └── server.nix ├── pkg.nix └── test-vm.nix ├── project ├── Cmd.scala ├── Dependencies.scala ├── ElmCompileMode.scala ├── EnvConfig.scala ├── NerModelsPlugin.scala ├── StylesPlugin.scala ├── TestSettings.scala ├── ZolaPlugin.scala ├── build.properties ├── build.sbt ├── change-version.sh ├── dev-ui-build.sh ├── plugins.sbt └── redocly.yml ├── tools ├── README.md ├── exim │ ├── README.md │ ├── docker-compose.yml │ ├── exim.conf │ └── exim.dockerfile ├── h2-util.sh ├── import-paperless │ ├── README.md │ └── import-paperless.sh ├── start-local │ ├── README.md │ └── start-local.sh └── webextension │ ├── README.md │ ├── _locales │ ├── de │ │ └── messages.json │ └── en │ │ └── messages.json │ ├── docspell.js │ ├── icons │ ├── logo-48.png │ └── logo-96.png │ ├── make-xpi.sh │ ├── manifest.json │ └── native │ ├── app_manifest.json │ └── native.py ├── version.sbt └── website ├── README.md ├── elm-analyse.json ├── elm.json ├── elm ├── Demo.elm ├── ExtraAttr.elm ├── Feature.elm ├── GetStarted.elm ├── Icons.elm ├── Main.elm └── Search.elm ├── package.json ├── postcss.config.js ├── push-docs.sh ├── scripts ├── build.sh ├── run-elm.sh ├── run-styles.sh ├── screenshot.sh └── screenshot2.sh ├── site ├── config.toml ├── content │ ├── blog │ │ ├── 2021-01-09_scan-and-process-from-adf.md │ │ ├── 2022-01-17_alternative_upload_from_browser.md │ │ ├── 2022-01-31_create_post.md │ │ ├── 2022-05-16_audio_file_addon.md │ │ └── _index.md │ └── docs │ │ ├── _index.md │ │ ├── addons │ │ ├── _index.md │ │ ├── addon-install-01.png │ │ ├── addon-install-01_dark.png │ │ ├── addon-install-02.png │ │ ├── addon-install-02_dark.png │ │ ├── addon-install-03.png │ │ ├── addon-install-03_dark.png │ │ ├── addon-install-04.png │ │ ├── addon-install-04_dark.png │ │ ├── basics.md │ │ ├── control.md │ │ ├── using.md │ │ └── writing.md │ │ ├── api │ │ ├── _index.md │ │ ├── intro.md │ │ └── upload.md │ │ ├── configure │ │ ├── _index.md │ │ ├── admin-endpoint.md │ │ ├── authentication.md │ │ ├── baseurl.md │ │ ├── bind.md │ │ ├── custom-mapping.md │ │ ├── database.md │ │ ├── defaults.md │ │ ├── file-backends.md │ │ ├── file-processing.md │ │ ├── fulltext-search.md │ │ ├── main.md │ │ └── registration.md │ │ ├── dev │ │ ├── _index.md │ │ ├── add-language.md │ │ ├── adr │ │ │ ├── 0000_use_markdown_architectural_decision_records.md │ │ │ ├── 0001_components.md │ │ │ ├── 0002_component_interaction.md │ │ │ ├── 0003_encryption.md │ │ │ ├── 0004_iso8601vsEpoch.md │ │ │ ├── 0005_job-executor.md │ │ │ ├── 0006_more-file-types.md │ │ │ ├── 0007_convert_html_files.md │ │ │ ├── 0008_convert_plain_text.md │ │ │ ├── 0009_convert_office_docs.md │ │ │ ├── 0010_convert_image_files.md │ │ │ ├── 0011_extract_text.md │ │ │ ├── 0012_periodic_tasks.md │ │ │ ├── 0013_archive_files.md │ │ │ ├── 0014_fulltext_search_engine.md │ │ │ ├── 0015_convert_pdf_files.md │ │ │ ├── 0016_custom_fields.md │ │ │ ├── _index.md │ │ │ ├── example-docx-pandoc-context.jpg │ │ │ ├── example-docx-pandoc-html.jpg │ │ │ ├── example-docx-pandoc-latex.jpg │ │ │ ├── example-docx-pandoc-ms.jpg │ │ │ ├── example-docx-unoconv.jpg │ │ │ ├── example-html-native.jpg │ │ │ ├── example-html-pandoc-html.jpg │ │ │ ├── example-html-pandoc-latex.jpg │ │ │ ├── example-html-unoconv.jpg │ │ │ ├── example-html-wkhtmltopdf.jpg │ │ │ ├── example-md-java.jpg │ │ │ ├── example-md-pandoc-html.jpg │ │ │ ├── example-md-pandoc-latex.jpg │ │ │ ├── example-odt-abiword.jpg │ │ │ ├── example-odt-native.jpg │ │ │ ├── example-odt-pandoc-context.jpg │ │ │ ├── example-odt-pandoc-html.jpg │ │ │ ├── example-odt-pandoc-latex.jpg │ │ │ ├── example-odt-pandoc-ms.jpg │ │ │ ├── example-odt-unoconv.jpg │ │ │ ├── example-txt-java.jpg │ │ │ ├── example-txt-pandoc-html.jpg │ │ │ ├── example-txt-pandoc-latex.jpg │ │ │ ├── process-files.png │ │ │ ├── process-files.puml │ │ │ └── template.md │ │ ├── building.md │ │ ├── development.md │ │ ├── documentation.md │ │ └── translation.md │ │ ├── faq │ │ └── _index.md │ │ ├── features │ │ └── _index.md │ │ ├── feed │ │ ├── _index.md │ │ ├── scanmailbox.png │ │ ├── scanmailbox_dark.png │ │ ├── web-upload.png │ │ └── web-upload_dark.png │ │ ├── install │ │ ├── _index.md │ │ ├── docker.md │ │ ├── downgrading.md │ │ ├── download_run.md │ │ ├── nix.md │ │ ├── prereq.md │ │ ├── quickstart.md │ │ ├── reverseproxy.md │ │ └── rpi.md │ │ ├── intro │ │ └── _index.md │ │ ├── joex │ │ ├── _index.md │ │ ├── file-processing.md │ │ └── intro.md │ │ ├── jsonminiquery │ │ └── _index.md │ │ ├── query │ │ ├── _index.md │ │ └── enable-powersearch.png │ │ ├── tools │ │ ├── _index.md │ │ ├── android.md │ │ ├── cli.md │ │ ├── ds4e-01.png │ │ ├── ds4e-01_light.png │ │ ├── ds4e.md │ │ ├── exim-mail.png │ │ ├── get-it-on.png │ │ ├── paperless-import.md │ │ ├── screenshot-choose.jpg │ │ ├── screenshot-create.jpg │ │ ├── screenshot-default.jpg │ │ ├── screenshot-options.jpg │ │ ├── screenshot-share.jpg │ │ ├── screenshot-uploading.jpg │ │ └── smtpgateway.md │ │ └── webapp │ │ ├── _index.md │ │ ├── autotagging.md │ │ ├── bookmarks-01.png │ │ ├── bookmarks-01_dark.png │ │ ├── bookmarks-02.png │ │ ├── bookmarks-02_dark.png │ │ ├── bookmarks-03.png │ │ ├── bookmarks-03_dark.png │ │ ├── bookmarks-04.png │ │ ├── bookmarks-04_dark.png │ │ ├── bookmarks.md │ │ ├── collective-settings-autotag.png │ │ ├── collective-settings-autotag_dark.png │ │ ├── curate.md │ │ ├── custom-fields-01-dark.png │ │ ├── custom-fields-01.png │ │ ├── custom-fields-01_dark.png │ │ ├── custom-fields-02-dark.png │ │ ├── custom-fields-02.png │ │ ├── custom-fields-02_dark.png │ │ ├── custom-fields-03.png │ │ ├── custom-fields-03_dark.png │ │ ├── custom-fields-04.png │ │ ├── custom-fields-04_dark.png │ │ ├── custom-fields-05.png │ │ ├── custom-fields-05_dark.png │ │ ├── custom-fields-06.png │ │ ├── custom-fields-06_dark.png │ │ ├── custom-fields-07.png │ │ ├── custom-fields-07_dark.png │ │ ├── customfields.md │ │ ├── dashboards-01.png │ │ ├── dashboards-01_dark.png │ │ ├── dashboards-01d.png │ │ ├── dashboards-02.png │ │ ├── dashboards-02_dark.png │ │ ├── dashboards-03.png │ │ ├── dashboards-03_dark.png │ │ ├── dashboards-04.png │ │ ├── dashboards-04_dark.png │ │ ├── dashboards-05.png │ │ ├── dashboards-05_dark.png │ │ ├── dashboards.md │ │ ├── docspell-curate-1.png │ │ ├── docspell-curate-1_dark.png │ │ ├── docspell-curate-3.png │ │ ├── docspell-curate-3_dark.png │ │ ├── docspell-curate-5.png │ │ ├── docspell-curate-5_dark.png │ │ ├── docspell-curate-6.png │ │ ├── docspell-curate-6_dark.png │ │ ├── download-all-01-dark.png │ │ ├── download-all-01.png │ │ ├── download-all-02-dark.png │ │ ├── download-all-02.png │ │ ├── download-all-03-dark.png │ │ ├── download-all-03.png │ │ ├── download-all-04-dark.png │ │ ├── download-all-04.png │ │ ├── download-all.md │ │ ├── drop-tag.png │ │ ├── drop-tag_dark.png │ │ ├── emailsettings.md │ │ ├── finding.md │ │ ├── itemcard-customize-01.png │ │ ├── itemcard-customize-01_dark.png │ │ ├── itemcard-customize-02.png │ │ ├── itemcard-customize-03.png │ │ ├── itemcard-customize-04.png │ │ ├── itemcard-customize.md │ │ ├── mail-item-1.png │ │ ├── mail-item-1_dark.png │ │ ├── mail-item-2.png │ │ ├── mail-item-2_dark.png │ │ ├── mail-item-4.png │ │ ├── mail-item-4_dark.png │ │ ├── mail-settings-1.png │ │ ├── mail-settings-1_dark.png │ │ ├── mail-settings-2.png │ │ ├── mail-settings-2_dark.png │ │ ├── mailitem.md │ │ ├── merge-01.png │ │ ├── merge-01_dark.png │ │ ├── merge-02.png │ │ ├── merge-02_dark.png │ │ ├── merge-04.png │ │ ├── merge-04_dark.png │ │ ├── merge.md │ │ ├── metadata.md │ │ ├── multiedit-01.png │ │ ├── multiedit-01_dark.png │ │ ├── multiedit-02.png │ │ ├── multiedit-02_dark.png │ │ ├── multiedit-03.png │ │ ├── multiedit-03_dark.png │ │ ├── multiedit-04.png │ │ ├── multiedit-04_dark.png │ │ ├── multiedit.md │ │ ├── notification-01.png │ │ ├── notification-01_dark.png │ │ ├── notification-02.png │ │ ├── notification-02_dark.png │ │ ├── notification-03.png │ │ ├── notification-03_dark.png │ │ ├── notification-04.png │ │ ├── notification-04_dark.png │ │ ├── notification-05.png │ │ ├── notification-05_dark.png │ │ ├── notification-06.png │ │ ├── notification-06_dark.png │ │ ├── notification-07.png │ │ ├── notification-07_dark.png │ │ ├── notification.md │ │ ├── notifydueitems.md │ │ ├── processing-queue.png │ │ ├── processing.md │ │ ├── scanmailbox-detail-01.png │ │ ├── scanmailbox-detail-01_dark.png │ │ ├── scanmailbox-detail-02.png │ │ ├── scanmailbox-detail-02_dark.png │ │ ├── scanmailbox-detail-03.png │ │ ├── scanmailbox-detail-03_dark.png │ │ ├── scanmailbox-detail-04.png │ │ ├── scanmailbox-detail-04_dark.png │ │ ├── scanmailbox-detail-05.png │ │ ├── scanmailbox-detail-05_dark.png │ │ ├── scanmailbox-detail-06.png │ │ ├── scanmailbox-detail-06_dark.png │ │ ├── scanmailbox-list.png │ │ ├── scanmailbox-list_dark.png │ │ ├── scanmailbox.md │ │ ├── search-menu.png │ │ ├── search-menu_dark.png │ │ ├── share-01.png │ │ ├── share-01_dark.png │ │ ├── share-02.png │ │ ├── share-02_dark.png │ │ ├── share-03.png │ │ ├── share-03_dark.png │ │ ├── share-04.png │ │ ├── share-04_dark.png │ │ ├── share-05.png │ │ ├── share-06.png │ │ ├── share-06_dark.png │ │ ├── share-07.png │ │ ├── share-07_dark.png │ │ ├── share-08.png │ │ ├── share-08_dark.png │ │ ├── share-09.png │ │ ├── share-09_dark.png │ │ ├── share-10.png │ │ ├── share-10_dark.png │ │ ├── share-11.png │ │ ├── share-11_dark.png │ │ ├── share-12.png │ │ ├── share-12_dark.png │ │ ├── share.md │ │ ├── totp-01.png │ │ ├── totp-01_dark.png │ │ ├── totp-02.png │ │ ├── totp-02_dark.png │ │ ├── totp-03.png │ │ ├── totp-03_dark.png │ │ ├── totp.md │ │ ├── uploading-01.png │ │ ├── uploading-01_dark.png │ │ ├── uploading-02.png │ │ ├── uploading-02_dark.png │ │ └── uploading.md ├── static │ ├── CNAME │ ├── favicon-mc.ico │ ├── favicon.ico │ ├── icons │ │ ├── home-40.svg │ │ ├── logo-only-36.svg │ │ ├── logo-only-mc.svg │ │ └── logo-only.svg │ ├── img │ │ ├── analyze-feature.png │ │ ├── back-master-small.jpg │ │ ├── cassie-boca-x-tbVqkfQCU-unsplash.jpg │ │ ├── convertpdf-feature.svg │ │ ├── filetype-feature.svg │ │ ├── fts-feature.png │ │ ├── fts-feature_dark.png │ │ ├── jesse-gardner-EqdpXeemf58-unsplash.jpg │ │ ├── jf-martin-Ofs3LjEUcrk-unsplash.jpg │ │ ├── josh-rose-trYl7JYATH0-unsplash.jpg │ │ ├── notify-feature.png │ │ ├── ocr-feature.png │ │ ├── poster.png │ │ ├── scanmailbox-feature.png │ │ ├── sendmail-feature.png │ │ ├── tersius-van-rhyn-xcQWMPm9fG8-unsplash.jpg │ │ └── user-feature.png │ ├── js │ │ ├── light-switch.js │ │ └── searchhelper.js │ ├── screenshots │ │ └── mobile │ │ │ ├── Screenshot_2021-02-14-01-small.jpg │ │ │ ├── Screenshot_2021-02-14-01.jpg │ │ │ ├── Screenshot_2021-02-14-02-small.jpg │ │ │ ├── Screenshot_2021-02-14-02.jpg │ │ │ ├── Screenshot_2021-02-14-03-small.jpg │ │ │ ├── Screenshot_2021-02-14-03.jpg │ │ │ ├── Screenshot_2021-02-14-04-small.jpg │ │ │ ├── Screenshot_2021-02-14-04.jpg │ │ │ ├── Screenshot_2021-02-14-05-small.jpg │ │ │ ├── Screenshot_2021-02-14-05.jpg │ │ │ ├── Screenshot_2021-02-14-06-small.jpg │ │ │ ├── Screenshot_2021-02-14-06.jpg │ │ │ ├── Screenshot_2021-02-14-07-small.jpg │ │ │ ├── Screenshot_2021-02-14-07.jpg │ │ │ ├── Screenshot_2021-02-14-08-small.jpg │ │ │ ├── Screenshot_2021-02-14-08.jpg │ │ │ ├── Screenshot_2021-02-14-09-small.jpg │ │ │ ├── Screenshot_2021-02-14-09.jpg │ │ │ ├── Screenshot_2021-02-14-10-small.jpg │ │ │ └── Screenshot_2021-02-14-10.jpg │ └── videos │ │ ├── docspell-navigate-2020-11-14.mp4 │ │ ├── docspell-navigate-2021-01-11.mp4 │ │ ├── docspell-navigate-2021-02-19.mp4 │ │ ├── docspell-process-2020-11-14.mp4 │ │ ├── docspell-process-2021-01-11.mp4 │ │ ├── docspell-process-2021-02-19-dark.mp4 │ │ └── docspell-process-2021-02-19.mp4 └── templates │ ├── 404.html │ ├── base.html │ ├── blog.html │ ├── blog_page.html │ ├── docs.html │ ├── index.html │ ├── parts │ ├── fathom.html │ ├── footer.html │ ├── meta.html │ ├── search-head.html │ ├── search-part.html │ └── topnav.html │ └── shortcodes │ ├── buttonright.html │ ├── deb_files.html │ ├── figure.html │ ├── figure2.html │ ├── imgnormal.html │ ├── imgnormal2.html │ ├── imgright.html │ ├── imgright2.html │ ├── incl_conf.md │ ├── incl_json.md │ ├── infobubble.html │ ├── pversion.html │ ├── version.html │ ├── warningbubble.html │ └── zip_files.html ├── src └── main │ └── scala │ └── docspell │ └── website │ ├── AddonOutputExample.scala │ ├── AddonOutputMiniExample.scala │ ├── FileMetaExample.scala │ ├── Helper.scala │ ├── ItemArgsExample.scala │ ├── ItemDataExample.scala │ └── Main.scala ├── styles ├── content.css ├── custom-components.css ├── custom-utilities.css └── input.css ├── tailwind.config.js └── yarn.lock /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | # Scala Steward: Reformat with scalafmt 3.8.2 2 | 1c566cd5182d41f4cc06040fc347ddb4be617779 3 | 4 | # Scala Steward: Reformat with scalafmt 3.8.4 5 | f90502399d78e7a3eb07bd7a1d130e6ae9ba498c 6 | 7 | # Scala Steward: Reformat with scalafmt 3.9.0 8 | 4e66b2f9f7ffe02dd065ceeebb7060ed3478c6e7 9 | -------------------------------------------------------------------------------- /.github/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "automerge": true, 3 | "labels": ["dependencies"], 4 | "packageRules": [ 5 | { 6 | "matchManagers": [ 7 | "sbt" 8 | ], 9 | "enabled": false 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /.github/workflows/auto-approve.yml: -------------------------------------------------------------------------------- 1 | name: Auto approve 2 | 3 | on: 4 | pull_request_target 5 | 6 | jobs: 7 | auto-approve: 8 | runs-on: ubuntu-24.04 9 | steps: 10 | - uses: hmarr/auto-approve-action@v4.0.0 11 | if: github.actor == 'eikek-scala-steward' 12 | with: 13 | github-token: ${{ secrets.GITHUB_TOKEN }} 14 | -------------------------------------------------------------------------------- /.github/workflows/release-drafter.yml: -------------------------------------------------------------------------------- 1 | name: Release Drafter 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | update_release_draft: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: release-drafter/release-drafter@v6 13 | env: 14 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 15 | -------------------------------------------------------------------------------- /.projectile: -------------------------------------------------------------------------------- 1 | !/local 2 | !/local/dev.conf 3 | !/local/test.rest 4 | !/modules/restapi/target/scala-2.13 5 | !/modules/webapp/target/elm-src/Api/Model 6 | -------------------------------------------------------------------------------- /.redocly.lint-ignore.yaml: -------------------------------------------------------------------------------- 1 | # This file instructs Redocly's linter to ignore the rules contained for specific parts of your API. 2 | # See https://redoc.ly/docs/cli/ for more information. 3 | modules/restapi/src/main/resources/docspell-openapi.yml: 4 | spec: 5 | - '#/extraSchemas' 6 | -------------------------------------------------------------------------------- /.scala-steward.conf: -------------------------------------------------------------------------------- 1 | updates.ignore = [ 2 | { groupId = "org.apache.poi" }, 3 | ] 4 | -------------------------------------------------------------------------------- /.scalafix.conf: -------------------------------------------------------------------------------- 1 | rules = [ 2 | ProcedureSyntax 3 | OrganizeImports 4 | ] 5 | OrganizeImports { 6 | coalesceToWildcardImportThreshold = 3 7 | expandRelative = true 8 | groupedImports = Keep 9 | importsOrder = Ascii 10 | groups = ["re:javax?\\.", "scala.", "re:(cats|fs2)\\.", "docspell.", "*"] 11 | importSelectorsOrder = Ascii 12 | removeUnused = true 13 | } -------------------------------------------------------------------------------- /.scalafmt.conf: -------------------------------------------------------------------------------- 1 | version = "3.9.6" 2 | 3 | preset = default 4 | align.preset = some 5 | runner.dialect = scala213source3 6 | 7 | maxColumn = 90 8 | 9 | rewrite.rules = [ 10 | AvoidInfix 11 | RedundantBraces 12 | RedundantParens 13 | AsciiSortImports 14 | PreferCurlyFors 15 | SortModifiers 16 | ] 17 | 18 | assumeStandardLibraryStripMargin = true 19 | align.stripMargin = true 20 | 21 | docstrings.style = SpaceAsterisk 22 | docstrings.oneline = fold 23 | docstrings.wrap = "yes" -------------------------------------------------------------------------------- /artwork/logo-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/artwork/logo-400.png -------------------------------------------------------------------------------- /artwork/logo-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/artwork/logo-48.png -------------------------------------------------------------------------------- /artwork/logo-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/artwork/logo-96.png -------------------------------------------------------------------------------- /artwork/logo-mc-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/artwork/logo-mc-400.png -------------------------------------------------------------------------------- /artwork/logo-mc-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/artwork/logo-mc-96.png -------------------------------------------------------------------------------- /artwork/make-png.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | inkscape -z -e logo-48.png -w 48 -h 48 logo-only.svg 4 | inkscape -z -e logo-96.png -w 96 -h 96 logo-only.svg 5 | inkscape -z -e logo-400.png -w 400 -h 400 logo-only.svg 6 | 7 | inkscape -z -e logo-mc-96.png -w 96 -h 96 logo-only-mc.svg 8 | inkscape -z -e logo-mc-400.png -w 400 -h 400 logo-only-mc.svg 9 | -------------------------------------------------------------------------------- /modules/addonlib/src/main/scala/docspell/addons/AddonRef.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.addons 8 | 9 | case class AddonRef(archive: AddonArchive, args: String) 10 | -------------------------------------------------------------------------------- /modules/addonlib/src/main/scala/docspell/addons/package.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell 8 | 9 | import cats.data.Kleisli 10 | 11 | package object addons { 12 | 13 | type AddonExec[F[_]] = Kleisli[F, InputEnv, AddonExecutionResult] 14 | 15 | } 16 | -------------------------------------------------------------------------------- /modules/addonlib/src/test/resources/docspell-addon-single-file.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/addonlib/src/test/resources/docspell-addon-single-file.zip -------------------------------------------------------------------------------- /modules/addonlib/src/test/resources/docspell-dummy-addon-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/addonlib/src/test/resources/docspell-dummy-addon-master.zip -------------------------------------------------------------------------------- /modules/addonlib/src/test/resources/minimal-addon.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/addonlib/src/test/resources/minimal-addon.zip -------------------------------------------------------------------------------- /modules/analysis/src/main/scala/docspell/analysis/NlpSettings.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.analysis 8 | 9 | import fs2.io.file.Path 10 | 11 | import docspell.common._ 12 | 13 | case class NlpSettings(lang: Language, highRecall: Boolean, regexNer: Option[Path]) 14 | -------------------------------------------------------------------------------- /modules/analysis/src/main/scala/docspell/analysis/classifier/ClassifierModel.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.analysis.classifier 8 | 9 | import fs2.io.file.Path 10 | 11 | case class ClassifierModel(model: Path) 12 | -------------------------------------------------------------------------------- /modules/analysis/src/main/scala/docspell/analysis/classifier/TextClassifierConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.analysis.classifier 8 | 9 | import cats.data.NonEmptyList 10 | import fs2.io.file.Path 11 | 12 | case class TextClassifierConfig( 13 | workingDir: Path, 14 | classifierConfigs: NonEmptyList[Map[String, String]] 15 | ) 16 | -------------------------------------------------------------------------------- /modules/analysis/src/test/resources/test.ser.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/analysis/src/test/resources/test.ser.gz -------------------------------------------------------------------------------- /modules/analysis/src/test/scala/docspell/analysis/Env.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.analysis 8 | 9 | object Env { 10 | 11 | def isCI = bool("CI") 12 | 13 | def bool(key: String): Boolean = 14 | string(key).contains("true") 15 | 16 | def string(key: String): Option[String] = 17 | Option(System.getenv(key)).filter(_.nonEmpty) 18 | } 19 | -------------------------------------------------------------------------------- /modules/backend/src/main/scala/docspell/backend/Common.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.backend 8 | 9 | import cats.effect._ 10 | 11 | import org.mindrot.jbcrypt.BCrypt 12 | 13 | object Common { 14 | 15 | def genSaltString[F[_]: Sync]: F[String] = 16 | Sync[F].delay(BCrypt.gensalt()) 17 | } 18 | -------------------------------------------------------------------------------- /modules/backend/src/main/scala/docspell/backend/joex/AddonEnvConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.backend.joex 8 | 9 | import fs2.io.file.Path 10 | 11 | import docspell.addons.AddonExecutorConfig 12 | 13 | final case class AddonEnvConfig( 14 | workingDir: Path, 15 | cacheDir: Path, 16 | executorConfig: AddonExecutorConfig 17 | ) 18 | -------------------------------------------------------------------------------- /modules/backend/src/main/scala/docspell/backend/signup/RegisterData.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.backend.signup 8 | import docspell.common._ 9 | 10 | case class RegisterData( 11 | collName: Ident, 12 | login: Ident, 13 | password: Password, 14 | invite: Option[Ident] 15 | ) 16 | -------------------------------------------------------------------------------- /modules/common/src/main/scala/docspell/common/MailSendConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.common 8 | 9 | case class MailSendConfig(listId: String) 10 | -------------------------------------------------------------------------------- /modules/common/src/main/scala/docspell/common/NerDateLabel.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.common 8 | 9 | import java.time.LocalDate 10 | 11 | case class NerDateLabel(date: LocalDate, label: NerLabel) {} 12 | -------------------------------------------------------------------------------- /modules/common/src/main/scala/docspell/common/Pools.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.common 8 | 9 | import scala.concurrent.ExecutionContext 10 | 11 | /** Captures thread pools to use in an application. */ 12 | case class Pools( 13 | connectEC: ExecutionContext 14 | // httpClientEC: ExecutionContext, 15 | // restEC: ExecutionContext 16 | ) 17 | -------------------------------------------------------------------------------- /modules/common/src/main/scala/docspell/common/TaskArguments.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.common 8 | 9 | /** A marker trait for task arguments. 10 | * 11 | * Arguments for tasks are stored as a JSON blob in the database. Changes in structure 12 | * requires a corresponding database migration. 13 | */ 14 | trait TaskArguments 15 | -------------------------------------------------------------------------------- /modules/common/src/main/scala/docspell/common/bc/BackendCommandRunner.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.common.bc 8 | 9 | import docspell.common.CollectiveId 10 | 11 | trait BackendCommandRunner[F[_], A] { 12 | 13 | def run(collective: CollectiveId, cmd: BackendCommand): F[A] 14 | 15 | def runAll(collective: CollectiveId, cmds: List[BackendCommand]): F[A] 16 | 17 | } 18 | -------------------------------------------------------------------------------- /modules/common/src/main/scala/docspell/common/syntax/package.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.common 8 | 9 | package object syntax { 10 | 11 | val either = EitherSyntax 12 | val stream = StreamSyntax 13 | val string = StringSyntax 14 | val file = FileSyntax 15 | 16 | object all extends EitherSyntax with StreamSyntax with StringSyntax with FileSyntax 17 | 18 | } 19 | -------------------------------------------------------------------------------- /modules/config/src/test/resources/reference.conf: -------------------------------------------------------------------------------- 1 | docspell.server { 2 | bind { 3 | port = 7880 4 | } 5 | } -------------------------------------------------------------------------------- /modules/convert/src/main/scala/docspell/convert/extern/OcrMyPdfConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.convert.extern 8 | 9 | import fs2.io.file.Path 10 | 11 | import docspell.common.exec.ExternalCommand 12 | 13 | case class OcrMyPdfConfig( 14 | enabled: Boolean, 15 | command: ExternalCommand, 16 | workingDir: Path 17 | ) 18 | -------------------------------------------------------------------------------- /modules/convert/src/main/scala/docspell/convert/extern/TesseractConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.convert.extern 8 | 9 | import fs2.io.file.Path 10 | 11 | import docspell.common.exec.ExternalCommand 12 | 13 | case class TesseractConfig(command: ExternalCommand, workingDir: Path) 14 | -------------------------------------------------------------------------------- /modules/convert/src/main/scala/docspell/convert/extern/UnoconvConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.convert.extern 8 | 9 | import fs2.io.file.Path 10 | 11 | import docspell.common.exec.ExternalCommand 12 | 13 | case class UnoconvConfig(command: ExternalCommand, workingDir: Path) 14 | -------------------------------------------------------------------------------- /modules/convert/src/main/scala/docspell/convert/extern/WeasyprintConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.convert.extern 8 | 9 | import fs2.io.file.Path 10 | 11 | import docspell.common.exec.ExternalCommand 12 | 13 | case class WeasyprintConfig(command: ExternalCommand, workingDir: Path) 14 | -------------------------------------------------------------------------------- /modules/convert/src/main/scala/docspell/convert/extern/WkHtmlPdfConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.convert.extern 8 | 9 | import fs2.io.file.Path 10 | 11 | import docspell.common.exec.ExternalCommand 12 | 13 | case class WkHtmlPdfConfig(command: ExternalCommand, workingDir: Path) 14 | -------------------------------------------------------------------------------- /modules/convert/src/main/scala/docspell/convert/flexmark/MarkdownConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.convert.flexmark 8 | 9 | case class MarkdownConfig(internalCss: String) 10 | -------------------------------------------------------------------------------- /modules/extract/src/main/scala/docspell/extract/ExtractConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.extract 8 | 9 | import docspell.extract.ocr.OcrConfig 10 | import docspell.extract.pdfbox.PreviewConfig 11 | 12 | case class ExtractConfig(ocr: OcrConfig, pdf: PdfConfig, preview: PreviewConfig) 13 | -------------------------------------------------------------------------------- /modules/extract/src/main/scala/docspell/extract/PdfConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.extract 8 | 9 | case class PdfConfig(minTextLen: Int) 10 | -------------------------------------------------------------------------------- /modules/extract/src/main/scala/docspell/extract/pdfbox/PreviewConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.extract.pdfbox 8 | 9 | case class PreviewConfig(dpi: Float) 10 | -------------------------------------------------------------------------------- /modules/files/src/main/java/org/apache/tika/parser/txt/IOUtils.java: -------------------------------------------------------------------------------- 1 | package org.apache.tika.parser.txt; 2 | 3 | import java.io.InputStream; 4 | import java.io.IOException; 5 | 6 | public final class IOUtils { 7 | 8 | public static long readFully(InputStream in, byte[] buffer) throws IOException { 9 | return in.read(buffer, 0, buffer.length); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /modules/files/src/main/scala/docspell/files/Dimension.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.files 8 | 9 | case class Dimension(width: Int, height: Int) { 10 | 11 | def product = width * height 12 | 13 | def toAwtDimension: java.awt.Dimension = 14 | new java.awt.Dimension(width, height) 15 | } 16 | -------------------------------------------------------------------------------- /modules/files/src/test/resources/bombs/20K-gray.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/bombs/20K-gray.jpeg -------------------------------------------------------------------------------- /modules/files/src/test/resources/bombs/20K-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/bombs/20K-gray.png -------------------------------------------------------------------------------- /modules/files/src/test/resources/bombs/20K-rgb.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/bombs/20K-rgb.jpeg -------------------------------------------------------------------------------- /modules/files/src/test/resources/bombs/20K-rgb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/bombs/20K-rgb.png -------------------------------------------------------------------------------- /modules/files/src/test/resources/camera/letter-en.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/camera/letter-en.jpg -------------------------------------------------------------------------------- /modules/files/src/test/resources/camera/letter-en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/camera/letter-en.png -------------------------------------------------------------------------------- /modules/files/src/test/resources/camera/letter-en.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/camera/letter-en.tiff -------------------------------------------------------------------------------- /modules/files/src/test/resources/examples/letter-ita.txt: -------------------------------------------------------------------------------- 1 | Pontremoli, 9 aprile 2013 2 | 3 | Spettabile Villa Albicocca 4 | Via Francigena, 9 5 | 55100 Pontetetto (LU) 6 | 7 | Oggetto: Prenotazione 8 | 9 | Gentile Direttore, 10 | 11 | Vorrei prenotare una camera matrimoniale ……. 12 | 13 | In attesa di una Sua pronta risposta, La saluto cordialmente 14 | -------------------------------------------------------------------------------- /modules/files/src/test/resources/examples/sample.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/examples/sample.doc -------------------------------------------------------------------------------- /modules/files/src/test/resources/examples/sample.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/examples/sample.docx -------------------------------------------------------------------------------- /modules/files/src/test/resources/examples/sample.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/examples/sample.ods -------------------------------------------------------------------------------- /modules/files/src/test/resources/examples/sample.odt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/examples/sample.odt -------------------------------------------------------------------------------- /modules/files/src/test/resources/examples/sample.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/examples/sample.xls -------------------------------------------------------------------------------- /modules/files/src/test/resources/examples/sample.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/examples/sample.xlsx -------------------------------------------------------------------------------- /modules/files/src/test/resources/keywords.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/keywords.pdf -------------------------------------------------------------------------------- /modules/files/src/test/resources/large-file.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/large-file.pdf -------------------------------------------------------------------------------- /modules/files/src/test/resources/letter-de.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/letter-de.pdf -------------------------------------------------------------------------------- /modules/files/src/test/resources/letter-en.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/letter-en.pdf -------------------------------------------------------------------------------- /modules/files/src/test/resources/letters.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/letters.zip -------------------------------------------------------------------------------- /modules/files/src/test/resources/scanner/jfif.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/scanner/jfif.jpg -------------------------------------------------------------------------------- /modules/files/src/test/resources/scanner/pdf13.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/scanner/pdf13.pdf -------------------------------------------------------------------------------- /modules/files/src/test/resources/scanner/pdfa14.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/scanner/pdfa14.pdf -------------------------------------------------------------------------------- /modules/files/src/test/resources/secured/encrypted-test123.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/secured/encrypted-test123.pdf -------------------------------------------------------------------------------- /modules/files/src/test/resources/secured/protected-test123.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/secured/protected-test123.pdf -------------------------------------------------------------------------------- /modules/files/src/test/resources/zip-dirs-one.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/zip-dirs-one.zip -------------------------------------------------------------------------------- /modules/files/src/test/resources/zip-dirs.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/files/src/test/resources/zip-dirs.zip -------------------------------------------------------------------------------- /modules/files/src/test/scala/docspell/files/ExampleFilesSupport.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.files 8 | 9 | import docspell.common._ 10 | 11 | trait ExampleFilesSupport { 12 | 13 | def createUrl(resource: String): LenientUri = 14 | Option(getClass.getResource("/" + resource)) match { 15 | case Some(u) => LenientUri.fromJava(u) 16 | case None => sys.error(s"Resource '$resource' not found") 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /modules/fts-psql/src/main/scala/docspell/ftspsql/SearchSummary.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.ftspsql 8 | 9 | case class SearchSummary(count: Long, maxScore: Double) 10 | -------------------------------------------------------------------------------- /modules/fts-solr/src/main/scala/docspell/ftssolr/DocIdResult.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.ftssolr 8 | 9 | import docspell.common._ 10 | 11 | final case class DocIdResult(ids: List[Ident]) { 12 | 13 | def toSetFolder(folder: Option[Ident]): List[SetFolder] = 14 | ids.map(id => SetFolder(id, folder)) 15 | } 16 | -------------------------------------------------------------------------------- /modules/fts-solr/src/main/scala/docspell/ftssolr/SetFields.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.ftssolr 8 | 9 | import docspell.ftsclient._ 10 | 11 | final case class SetFields(td: TextData) 12 | -------------------------------------------------------------------------------- /modules/fts-solr/src/main/scala/docspell/ftssolr/SetFolder.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.ftssolr 8 | 9 | import docspell.common._ 10 | 11 | final case class SetFolder(docId: Ident, folder: Option[Ident]) 12 | -------------------------------------------------------------------------------- /modules/fts-solr/src/main/scala/docspell/ftssolr/SolrConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.ftssolr 8 | 9 | import docspell.common._ 10 | 11 | final case class SolrConfig( 12 | url: LenientUri, 13 | commitWithin: Int, 14 | logVerbose: Boolean, 15 | defType: String, 16 | qOp: String 17 | ) 18 | 19 | object SolrConfig {} 20 | -------------------------------------------------------------------------------- /modules/fts-solr/src/main/scala/docspell/ftssolr/VersionDoc.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.ftssolr 8 | 9 | final case class VersionDoc(id: String, currentVersion: Int) 10 | 11 | object VersionDoc { 12 | 13 | object Fields { 14 | val id = Field("id") 15 | val currentVersion = Field("current_version_i") 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/joex/src/main/scala/docspell/joex/fts/package.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.joex 8 | 9 | import cats.data.Kleisli 10 | 11 | package object fts { 12 | 13 | /** Some work that must be done to advance the schema of the fulltext index. */ 14 | type FtsWork[F[_]] = Kleisli[F, FtsContext[F], Unit] 15 | 16 | } 17 | -------------------------------------------------------------------------------- /modules/notification/api/src/main/scala/docspell/notification/api/EventMessage.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.notification.api 8 | 9 | final case class EventMessage(title: String, body: String) 10 | 11 | object EventMessage { 12 | val empty: EventMessage = EventMessage("", "") 13 | } 14 | -------------------------------------------------------------------------------- /modules/notification/api/src/main/scala/docspell/notification/api/EventReader.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.notification.api 8 | 9 | import cats.data.Kleisli 10 | import fs2.Stream 11 | 12 | trait EventReader[F[_]] { 13 | 14 | /** Stream to allow processing of events offered via a `EventSink` */ 15 | def consume(maxConcurrent: Int)(run: Kleisli[F, Event, Unit]): Stream[F, Nothing] 16 | 17 | } 18 | -------------------------------------------------------------------------------- /modules/notification/impl/src/main/scala/docspell/notification/impl/context/Syntax.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.notification.impl.context 8 | 9 | import docspell.notification.api.Event 10 | 11 | object Syntax { 12 | 13 | implicit final class EventOps(ev: Event) { 14 | 15 | def itemUrl: Option[String] = 16 | ev.baseUrl.map(_ / "app" / "item").map(_.asString) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/pubsub/naive/src/main/scala/docspell/pubsub/naive/PubSubConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.pubsub.naive 8 | 9 | import docspell.common.{Ident, LenientUri} 10 | 11 | import org.http4s.Header 12 | 13 | case class PubSubConfig( 14 | nodeId: Ident, 15 | url: LenientUri, 16 | subscriberQueueSize: Int, 17 | reqHeader: Header.Raw 18 | ) 19 | -------------------------------------------------------------------------------- /modules/restserver/src/main/scala/docspell/restserver/http4s/EnvMiddleware.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.restserver.http4s 8 | 9 | import cats.Functor 10 | 11 | import docspell.common._ 12 | 13 | import org.http4s._ 14 | 15 | object EnvMiddleware { 16 | 17 | def apply[F[_]: Functor](in: HttpRoutes[F]): HttpRoutes[F] = 18 | NoCacheMiddleware.route(EnvMode.current.isDev)(in) 19 | } 20 | -------------------------------------------------------------------------------- /modules/restserver/src/main/scala/docspell/restserver/ws/InputMessage.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.restserver.ws 8 | 9 | sealed trait InputMessage 10 | 11 | object InputMessage {} 12 | -------------------------------------------------------------------------------- /modules/restserver/src/main/scala/docspell/restserver/ws/OutputEventEncoder.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.restserver.ws 8 | 9 | trait OutputEventEncoder[A] { 10 | def encode(a: A): OutputEvent 11 | } 12 | 13 | object OutputEventEncoder { 14 | def apply[A](implicit e: OutputEventEncoder[A]): OutputEventEncoder[A] = e 15 | 16 | def instance[A](f: A => OutputEvent): OutputEventEncoder[A] = 17 | (a: A) => f(a) 18 | } 19 | -------------------------------------------------------------------------------- /modules/scheduler/api/src/main/scala/docspell/scheduler/JobStoreModule.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.scheduler 8 | 9 | import docspell.scheduler.usertask.UserTaskStore 10 | 11 | trait JobStoreModule[F[_]] { 12 | 13 | def userTasks: UserTaskStore[F] 14 | def jobs: JobStore[F] 15 | } 16 | -------------------------------------------------------------------------------- /modules/scheduler/api/src/main/scala/docspell/scheduler/PeriodicSchedulerConfig.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.scheduler 8 | 9 | import docspell.common._ 10 | 11 | case class PeriodicSchedulerConfig( 12 | name: Ident, 13 | wakeupPeriod: Duration 14 | ) 15 | 16 | object PeriodicSchedulerConfig { 17 | def default(id: Ident): PeriodicSchedulerConfig = 18 | PeriodicSchedulerConfig(id, Duration.minutes(10)) 19 | } 20 | -------------------------------------------------------------------------------- /modules/scheduler/api/src/main/scala/docspell/scheduler/SchedulerModule.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.scheduler 8 | 9 | trait SchedulerModule[F[_]] { 10 | def scheduler: Scheduler[F] 11 | def periodicScheduler: PeriodicScheduler[F] 12 | } 13 | -------------------------------------------------------------------------------- /modules/scheduler/api/src/main/scala/docspell/scheduler/msg/JobsNotify.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.scheduler.msg 8 | 9 | import docspell.pubsub.api.{Topic, TypedTopic} 10 | 11 | /** A generic notification to the job executors to look for new work. */ 12 | object JobsNotify { 13 | def apply(): TypedTopic[Unit] = 14 | TypedTopic[Unit](Topic("jobs-notify")) 15 | } 16 | -------------------------------------------------------------------------------- /modules/scheduler/api/src/main/scala/docspell/scheduler/msg/PeriodicTaskNotify.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.scheduler.msg 8 | 9 | import docspell.pubsub.api.{Topic, TypedTopic} 10 | 11 | /** A generic notification to the periodic task scheduler to look for new work. */ 12 | object PeriodicTaskNotify { 13 | def apply(): TypedTopic[Unit] = 14 | TypedTopic[Unit](Topic("periodic-task-notify")) 15 | } 16 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.10.0__attachment_preview.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "attachment_preview" ( 2 | "id" varchar(254) not null primary key, 3 | "file_id" varchar(254) not null, 4 | "filename" varchar(254), 5 | "created" timestamp not null, 6 | foreign key ("file_id") references "filemeta"("id"), 7 | foreign key ("id") references "attachment"("attachid") 8 | ); 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.11.0__pdf_pages.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "attachmentmeta" 2 | ADD COLUMN "page_count" smallint; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.12.0__upload_data.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "source" 2 | ADD COLUMN "file_filter" varchar(254) NULL; 3 | 4 | CREATE TABLE "tagsource" ( 5 | "id" varchar(254) not null primary key, 6 | "source_id" varchar(254) not null, 7 | "tag_id" varchar(254) not null, 8 | unique ("source_id", "tag_id"), 9 | foreign key ("source_id") references "source"("sid"), 10 | foreign key ("tag_id") references "tag"("tid") 11 | ); 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.14.0__person_org.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "person" 2 | ADD COLUMN "oid" varchar(254); 3 | 4 | ALTER TABLE "person" 5 | ADD CONSTRAINT fk_person_organization 6 | FOREIGN KEY ("oid") 7 | REFERENCES "organization"("oid"); 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.15.0__rememberme.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "rememberme" ( 2 | "id" varchar(254) not null primary key, 3 | "cid" varchar(254) not null, 4 | "login" varchar(254) not null, 5 | "created" timestamp not null, 6 | "uses" int not null, 7 | FOREIGN KEY ("cid","login") REFERENCES "user_"("cid","login") 8 | ); 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.16.0__add_imap_oauth.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "userimap" 2 | ADD COLUMN "imap_oauth2" boolean NULL; 3 | 4 | UPDATE "userimap" SET "imap_oauth2" = false; 5 | 6 | ALTER TABLE "userimap" 7 | ALTER COLUMN "imap_oauth2" SET NOT NULL; 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.19.0__add_classify_meta.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "item_proposal" ( 2 | "itemid" varchar(254) not null primary key, 3 | "classifier_proposals" text not null, 4 | "classifier_tags" text not null, 5 | "created" timestamp not null, 6 | foreign key ("itemid") references "item"("itemid") 7 | ); 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.19.1__remove_enabled.sql: -------------------------------------------------------------------------------- 1 | alter table "classifier_setting" 2 | drop column "enabled"; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.2.0__origin_source.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "attachment_source" ( 2 | "id" varchar(254) not null primary key, 3 | "file_id" varchar(254) not null, 4 | "filename" varchar(254), 5 | "created" timestamp not null, 6 | foreign key ("file_id") references "filemeta"("id"), 7 | foreign key ("id") references "attachment"("attachid") 8 | ); 9 | 10 | INSERT INTO "attachment_source" 11 | SELECT "attachid","filemetaid","name","created" FROM "attachment"; 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.20.0__personuse.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "person" 2 | ADD COLUMN "person_use" varchar(254); 3 | 4 | UPDATE "person" SET "person_use" = 'concerning' where "concerning" = true; 5 | UPDATE "person" SET "person_use" = 'correspondent' where "concerning" = false; 6 | UPDATE "person" SET "person_use" = 'both' where "concerning" is null; 7 | 8 | ALTER TABLE "person" 9 | DROP COLUMN "concerning"; 10 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.20.1__equipment_description.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "equipment" 2 | ADD COLUMN "notes" text; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.20.2__org_shortname.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "organization" 2 | ADD COLUMN "short_name" varchar(254); 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.20.3__node_seen.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "node" 2 | ADD COLUMN "not_found" int not null default 0; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.20.4__source_lang.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "source" 2 | ADD COLUMN "doc_lang" varchar(254); 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.21.0__cast_function.sql: -------------------------------------------------------------------------------- 1 | DROP ALIAS IF EXISTS CAST_TO_NUMERIC; 2 | CREATE ALIAS CAST_TO_NUMERIC FOR "docspell.store.impl.h2.CastNumericFun.castToNumeric"; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.21.1__equip_org_use.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "equipment" 2 | ADD COLUMN "equip_use" varchar(254); 3 | 4 | UPDATE "equipment" SET "equip_use" = 'concerning'; 5 | 6 | ALTER TABLE "equipment" 7 | ALTER COLUMN "equip_use" SET NOT NULL; 8 | 9 | 10 | ALTER TABLE "organization" 11 | ADD COLUMN "org_use" varchar(254); 12 | 13 | UPDATE "organization" SET "org_use" = 'correspondent'; 14 | 15 | ALTER TABLE "organization" 16 | ALTER COLUMN "org_use" SET NOT NULL; 17 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.22.0__add_task_name.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "periodic_task" 2 | ADD COLUMN "summary" varchar(254); 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.23.0__clientsettings.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "client_settings" ( 2 | "id" varchar(254) not null primary key, 3 | "client_id" varchar(254) not null, 4 | "user_id" varchar(254) not null, 5 | "settings_data" text not null, 6 | "created" timestamp not null, 7 | "updated" timestamp not null, 8 | foreign key ("user_id") references "user_"("uid") on delete cascade, 9 | unique ("client_id", "user_id") 10 | ); 11 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.24.0__drop_fts_migration.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE "fts_migration"; 2 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.25.0__add_empty_trash.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "empty_trash_setting" ( 2 | "cid" varchar(254) not null primary key, 3 | "schedule" varchar(254) not null, 4 | "created" timestamp not null, 5 | foreign key ("cid") references "collective"("cid") 6 | ); 7 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.25.1__fix_periodic_submitter_value.sql: -------------------------------------------------------------------------------- 1 | UPDATE "periodic_task" 2 | SET submitter = group_ 3 | WHERE submitter = 'learn-classifier'; 4 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.25.2__add_trash_min_age.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "empty_trash_setting" 2 | ADD COLUMN "min_age" bigint; 3 | 4 | UPDATE "empty_trash_setting" 5 | SET "min_age" = 604800000; 6 | 7 | ALTER TABLE "empty_trash_setting" 8 | ALTER COLUMN "min_age" SET NOT NULL; 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.25.3__delete_corrupt_trash_task.sql: -------------------------------------------------------------------------------- 1 | -- note this is only for users of nightly releases 2 | DELETE FROM "periodic_task" 3 | WHERE "task" = 'empty-trash'; 4 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.25.4__add_source_attachonly.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "source" 2 | ADD COLUMN "attachments_only" BOOLEAN NULL; 3 | 4 | UPDATE "source" 5 | SET "attachments_only" = FALSE; 6 | 7 | ALTER TABLE "source" 8 | ALTER COLUMN "attachments_only" SET NOT NULL; 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.26.0__missing_indexes.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX "joblog_id_created_idx" ON "joblog"("jid", "created"); 2 | -- H2 doesn't support coalesce in create index 3 | --CREATE INDEX "item_itemdate_created_idx" ON "item"(coalesce("itemdate", "created")); 4 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.26.1__totp.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "totp" ( 2 | "user_id" varchar(254) not null primary key, 3 | "enabled" boolean not null, 4 | "secret" varchar(254) not null, 5 | "created" timestamp not null, 6 | FOREIGN KEY ("user_id") REFERENCES "user_"("uid") ON DELETE CASCADE 7 | ); 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.26.2__openid.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "user_" 2 | ADD COLUMN "account_source" varchar(254); 3 | 4 | UPDATE "user_" 5 | SET "account_source" = 'local'; 6 | 7 | ALTER TABLE "user_" 8 | ALTER COLUMN "account_source" SET NOT NULL; 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.27.0__collective_passwords.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "collective_password" ( 2 | "id" varchar(254) not null primary key, 3 | "cid" varchar(254) not null, 4 | "pass" varchar(254) not null, 5 | "created" timestamp not null, 6 | foreign key ("cid") references "collective"("cid") on delete cascade 7 | ) 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.27.1__item_share.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "item_share" ( 2 | "id" varchar(254) not null primary key, 3 | "user_id" varchar(254) not null, 4 | "name" varchar(254), 5 | "query" varchar(2000) not null, 6 | "enabled" boolean not null, 7 | "pass" varchar(254), 8 | "publish_at" timestamp not null, 9 | "publish_until" timestamp not null, 10 | "views" int not null, 11 | "last_access" timestamp, 12 | foreign key ("user_id") references "user_"("uid") on delete cascade 13 | ) 14 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.28.0__pubsub.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "pubsub" ( 2 | "id" varchar(254) not null primary key, 3 | "node_id" varchar(254) not null, 4 | "url" varchar(254) not null, 5 | "topic" varchar(254) not null, 6 | "counter" int not null, 7 | unique("url", "topic") 8 | ) 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.28.1__intern_settings.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "internal_setting" ( 2 | "id" varchar(254) not null primary key, 3 | "internal_route_key" varchar(254) not null 4 | ) 5 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.30.0__clientsettings_collective.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "client_settings" RENAME TO "client_settings_user"; 2 | 3 | CREATE TABLE "client_settings_collective" ( 4 | "id" varchar(254) not null primary key, 5 | "client_id" varchar(254) not null, 6 | "cid" varchar(254) not null, 7 | "settings_data" text not null, 8 | "created" timestamp not null, 9 | "updated" timestamp not null, 10 | foreign key ("cid") references "collective"("cid") on delete cascade, 11 | unique ("client_id", "cid") 12 | ); 13 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.31.1__gotify_prio.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "notification_channel_gotify" 2 | ADD COLUMN "priority" integer; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.32.0__notification_channel_name.sql: -------------------------------------------------------------------------------- 1 | alter table "notification_channel_mail" 2 | add column "name" varchar(254); 3 | 4 | alter table "notification_channel_gotify" 5 | add column "name" varchar(254); 6 | 7 | alter table "notification_channel_matrix" 8 | add column "name" varchar(254); 9 | 10 | alter table "notification_channel_http" 11 | add column "name" varchar(254); 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.35.0__download_query.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "download_query"( 2 | "id" varchar(254) not null primary key, 3 | "cid" varchar(254) not null, 4 | "file_id" varchar(254) not null, 5 | "file_count" int not null, 6 | "created" timestamp not null, 7 | "last_access" timestamp, 8 | "access_count" int not null, 9 | foreign key ("cid") references "collective"("cid"), 10 | foreign key ("file_id") references "filemeta"("file_id") 11 | ); 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.35.1__password_length.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "userimap" 2 | ALTER COLUMN "imap_password" TYPE varchar; 3 | 4 | ALTER TABLE "useremail" 5 | ALTER COLUMN "smtp_password" TYPE varchar; 6 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.38.1__remove_unused_column.sql: -------------------------------------------------------------------------------- 1 | alter table "item" drop column "inreplyto"; 2 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.39.3__rename_value.sql: -------------------------------------------------------------------------------- 1 | alter table "contact" rename column "value" to "value_"; 2 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.4.0__attachment_archive.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "attachment_archive" ( 2 | "id" varchar(254) not null primary key, 3 | "file_id" varchar(254) not null, 4 | "filename" varchar(254), 5 | "message_id" varchar(254), 6 | "created" timestamp not null, 7 | foreign key ("file_id") references "filemeta"("id"), 8 | foreign key ("id") references "attachment"("attachid") 9 | ); 10 | 11 | CREATE INDEX "attachment_archive_message_id_idx" 12 | ON "attachment_archive"("message_id"); 13 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.5.0__userimap.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "userimap" ( 2 | "id" varchar(254) not null primary key, 3 | "uid" varchar(254) not null, 4 | "name" varchar(254) not null, 5 | "imap_host" varchar(254) not null, 6 | "imap_port" int, 7 | "imap_user" varchar(254), 8 | "imap_password" varchar(254), 9 | "imap_ssl" varchar(254) not null, 10 | "imap_certcheck" boolean not null, 11 | "created" timestamp not null, 12 | unique ("uid", "name"), 13 | foreign key ("uid") references "user_"("uid") 14 | ); 15 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.6.0__integration_enabled.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "collective" 2 | ADD COLUMN "integration_enabled" BOOLEAN; 3 | 4 | UPDATE "collective" SET "integration_enabled" = true; 5 | 6 | ALTER TABLE "collective" 7 | ALTER COLUMN "integration_enabled" SET NOT NULL; 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.7.0__fts-migration.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "fts_migration" ( 2 | "id" varchar(254) not null primary key, 3 | "version" int not null, 4 | "fts_engine" varchar(254) not null, 5 | "description" varchar(254) not null, 6 | "created" timestamp not null 7 | ); 8 | 9 | CREATE UNIQUE INDEX "fts_migration_version_engine_idx" 10 | ON "fts_migration"("version", "fts_engine"); 11 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.9.1__classifier.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "classifier_setting" ( 2 | "cid" varchar(254) not null primary key, 3 | "enabled" boolean not null, 4 | "schedule" varchar(254) not null, 5 | "category" varchar(254) not null, 6 | "item_count" int not null, 7 | "file_id" varchar(254), 8 | "created" timestamp not null, 9 | foreign key ("cid") references "collective"("cid"), 10 | foreign key ("file_id") references "filemeta"("id") 11 | ); 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.9.3__joblog_counter.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "joblog" 2 | ADD COLUMN "counter" bigint generated always as identity; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/h2/V1.9.4__unique_equipments.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "equipment" 2 | ADD CONSTRAINT "equipment_cid_name_key" 3 | UNIQUE ("cid", "name"); 4 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.10.0__attachment_preview.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `attachment_preview` ( 2 | `id` varchar(254) not null primary key, 3 | `file_id` varchar(254) not null, 4 | `filename` varchar(254), 5 | `created` timestamp not null, 6 | foreign key (`file_id`) references `filemeta`(`id`), 7 | foreign key (`id`) references `attachment`(`attachid`) 8 | ); 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.11.0__pdf_pages.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `attachmentmeta` 2 | ADD COLUMN (`page_count` SMALLINT); 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.12.0__upload_data.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `source` 2 | ADD COLUMN `file_filter` varchar(254) NULL; 3 | 4 | CREATE TABLE `tagsource` ( 5 | `id` varchar(254) not null primary key, 6 | `source_id` varchar(254) not null, 7 | `tag_id` varchar(254) not null, 8 | unique (`source_id`, `tag_id`), 9 | foreign key (`source_id`) references `source`(`sid`), 10 | foreign key (`tag_id`) references `tag`(`tid`) 11 | ); 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.14.0__person_org.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `person` 2 | ADD COLUMN `oid` varchar(254); 3 | 4 | ALTER TABLE `person` 5 | ADD CONSTRAINT fk_person_organization 6 | FOREIGN KEY (`oid`) 7 | REFERENCES `organization`(`oid`); 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.15.0__rememberme.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `rememberme` ( 2 | `id` varchar(254) not null primary key, 3 | `cid` varchar(254) not null, 4 | `login` varchar(254) not null, 5 | `created` timestamp not null, 6 | `uses` int not null, 7 | FOREIGN KEY (`cid`,`login`) REFERENCES `user_`(`cid`,`login`) 8 | ); 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.16.0__add_imap_oauth.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `userimap` 2 | ADD COLUMN (`imap_oauth2` boolean); 3 | 4 | UPDATE `userimap` SET `imap_oauth2` = false; 5 | 6 | ALTER TABLE `userimap` 7 | MODIFY `imap_oauth2` boolean NOT NULL; 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.19.0__add_classify_meta.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `item_proposal` ( 2 | `itemid` varchar(254) not null primary key, 3 | `classifier_proposals` mediumtext not null, 4 | `classifier_tags` mediumtext not null, 5 | `created` timestamp not null, 6 | foreign key (`itemid`) references `item`(`itemid`) 7 | ); 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.19.1__remove_enabled.sql: -------------------------------------------------------------------------------- 1 | alter table `classifier_setting` 2 | drop column `enabled`; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.2.0__origin_source.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `attachment_source` ( 2 | `id` varchar(254) not null primary key, 3 | `file_id` varchar(254) not null, 4 | `filename` varchar(254), 5 | `created` timestamp not null, 6 | foreign key (`file_id`) references `filemeta`(`id`), 7 | foreign key (`id`) references `attachment`(`attachid`) 8 | ); 9 | 10 | INSERT INTO `attachment_source` 11 | SELECT `attachid`,`filemetaid`,`name`,`created` FROM `attachment`; 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.20.0__personuse.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `person` 2 | ADD COLUMN `person_use` varchar(254); 3 | 4 | UPDATE `person` SET `person_use` = 'concerning' where `concerning` = true; 5 | UPDATE `person` SET `person_use` = 'correspondent' where `concerning` = false; 6 | UPDATE `person` SET `person_use` = 'both' where `concerning` is null; 7 | 8 | ALTER TABLE `person` 9 | DROP COLUMN `concerning`; 10 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.20.1__equipment_description.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `equipment` 2 | ADD COLUMN `notes` mediumtext; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.20.2__org_shortname.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `organization` 2 | ADD COLUMN `short_name` varchar(254); 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.20.3__node_seen.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `node` 2 | ADD COLUMN `not_found` int not null default 0; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.20.4__source_lang.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `source` 2 | ADD COLUMN `doc_lang` varchar(254); 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.21.0__cast_function.sql: -------------------------------------------------------------------------------- 1 | -- Create a function to cast to a numeric, if an error occurs return null 2 | -- Could not get it working with decimal type, so using double 3 | create or replace function CAST_TO_NUMERIC (s char(255)) 4 | returns double deterministic 5 | return cast(s as double); 6 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.21.1__equip_org_use.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `equipment` 2 | ADD COLUMN `equip_use` varchar(254); 3 | 4 | UPDATE `equipment` SET `equip_use` = 'concerning'; 5 | 6 | ALTER TABLE `equipment` 7 | MODIFY COLUMN `equip_use` varchar(254) NOT NULL; 8 | 9 | 10 | ALTER TABLE `organization` 11 | ADD COLUMN `org_use` varchar(254); 12 | 13 | UPDATE `organization` SET `org_use` = 'correspondent'; 14 | 15 | ALTER TABLE `organization` 16 | MODIFY COLUMN `org_use` varchar(254) NOT NULL; 17 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.22.0__add_task_name.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `periodic_task` 2 | ADD COLUMN `summary` varchar(254); 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.23.0__clientsettings.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `client_settings` ( 2 | `id` varchar(254) not null primary key, 3 | `client_id` varchar(254) not null, 4 | `user_id` varchar(254) not null, 5 | `settings_data` longtext not null, 6 | `created` timestamp not null, 7 | `updated` timestamp not null, 8 | foreign key (`user_id`) references `user_`(`uid`) on delete cascade, 9 | unique (`client_id`, `user_id`) 10 | ); 11 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.24.0__drop_fts_migration.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE `fts_migration`; 2 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.25.0__add_empty_trash.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `empty_trash_setting` ( 2 | `cid` varchar(254) not null primary key, 3 | `schedule` varchar(254) not null, 4 | `created` timestamp not null, 5 | foreign key (`cid`) references `collective`(`cid`) 6 | ); 7 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.25.1__fix_periodic_submitter_value.sql: -------------------------------------------------------------------------------- 1 | UPDATE `periodic_task` 2 | SET submitter = group_ 3 | WHERE submitter = 'learn-classifier'; 4 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.25.2__add_trash_min_age.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `empty_trash_setting` 2 | ADD COLUMN (`min_age` bigint); 3 | 4 | UPDATE `empty_trash_setting` 5 | SET `min_age` = 604800000; 6 | 7 | ALTER TABLE `empty_trash_setting` 8 | MODIFY `min_age` bigint NOT NULL; 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.25.3__delete_corrupt_trash_task.sql: -------------------------------------------------------------------------------- 1 | -- note this is only for users of nightly releases 2 | DELETE FROM `periodic_task` 3 | WHERE `task` = 'empty-trash'; 4 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.25.4__add_source_attachonly.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `source` 2 | ADD COLUMN (`attachments_only` BOOLEAN); 3 | 4 | UPDATE `source` 5 | SET `attachments_only` = false; 6 | 7 | ALTER TABLE `source` 8 | MODIFY `attachments_only` BOOLEAN NOT NULL; 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.26.0__missing_indexes.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX `joblog_id_created_idx` ON `joblog`(`jid`, `created`); 2 | -- MariaDB doesn't support coalesce in index 3 | --CREATE INDEX `item_itemdate_created_idx` ON `item`(coalesce(`itemdate`, `created`)); 4 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.26.1__totp.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `totp` ( 2 | `user_id` varchar(254) not null primary key, 3 | `enabled` boolean not null, 4 | `secret` varchar(254) not null, 5 | `created` timestamp not null, 6 | FOREIGN KEY (`user_id`) REFERENCES `user_`(`uid`) ON DELETE CASCADE 7 | ); 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.26.2__openid.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `user_` 2 | ADD COLUMN (`account_source` varchar(254)); 3 | 4 | UPDATE `user_` 5 | SET `account_source` = 'local'; 6 | 7 | ALTER TABLE `user_` 8 | MODIFY `account_source` varchar(254) NOT NULL; 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.27.0__collective_passwords.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `collective_password` ( 2 | `id` varchar(254) not null primary key, 3 | `cid` varchar(254) not null, 4 | `pass` varchar(254) not null, 5 | `created` timestamp not null, 6 | foreign key (`cid`) references `collective`(`cid`) on delete cascade 7 | ) 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.27.1__item_share.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `item_share` ( 2 | `id` varchar(254) not null primary key, 3 | `user_id` varchar(254) not null, 4 | `name` varchar(254), 5 | `query` varchar(2000) not null, 6 | `enabled` boolean not null, 7 | `pass` varchar(254), 8 | `publish_at` timestamp not null, 9 | `publish_until` timestamp not null, 10 | `views` int not null, 11 | `last_access` timestamp, 12 | foreign key (`user_id`) references `user_`(`uid`) on delete cascade 13 | ) 14 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.28.0__pubsub.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `pubsub` ( 2 | `id` varchar(254) not null primary key, 3 | `node_id` varchar(254) not null, 4 | `url` varchar(254) not null, 5 | `topic` varchar(254) not null, 6 | `counter` int not null, 7 | unique(`url`, `topic`) 8 | ) 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.28.1__intern_settings.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `internal_setting` ( 2 | `id` varchar(254) not null primary key, 3 | `internal_route_key` varchar(254) not null 4 | ) 5 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.30.0__clientsettings_collective.sql: -------------------------------------------------------------------------------- 1 | RENAME TABLE `client_settings` TO `client_settings_user`; 2 | 3 | CREATE TABLE `client_settings_collective` ( 4 | `id` varchar(254) not null primary key, 5 | `client_id` varchar(254) not null, 6 | `cid` varchar(254) not null, 7 | `settings_data` text not null, 8 | `created` timestamp not null, 9 | `updated` timestamp not null, 10 | foreign key (`cid`) references `collective`(`cid`) on delete cascade, 11 | unique (`client_id`, `cid`) 12 | ); 13 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.31.1__gotify_prio.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `notification_channel_gotify` 2 | ADD COLUMN `priority` tinyint unsigned; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.32.0__notification_channel_name.sql: -------------------------------------------------------------------------------- 1 | alter table `notification_channel_mail` 2 | add column `name` varchar(254); 3 | 4 | alter table `notification_channel_gotify` 5 | add column `name` varchar(254); 6 | 7 | alter table `notification_channel_matrix` 8 | add column `name` varchar(254); 9 | 10 | alter table `notification_channel_http` 11 | add column `name` varchar(254); 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.35.0__download_query.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `download_query`( 2 | `id` varchar(254) not null primary key, 3 | `cid` varchar(254) not null, 4 | `file_id` varchar(254) not null, 5 | `file_count` int not null, 6 | `created` timestamp not null, 7 | `last_access` timestamp, 8 | `access_count` int not null, 9 | foreign key (`cid`) references `collective`(`cid`), 10 | foreign key (`file_id`) references `filemeta`(`file_id`) 11 | ); 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.35.1__password_length.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `userimap` 2 | MODIFY `imap_password` mediumtext; 3 | 4 | ALTER TABLE `useremail` 5 | MODIFY `smtp_password` mediumtext; 6 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.38.1__remove_unused_column.sql: -------------------------------------------------------------------------------- 1 | alter table `item` drop foreign key item_ibfk_1; 2 | alter table `item` drop column `inreplyto` cascade; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.39.3__rename_value.sql: -------------------------------------------------------------------------------- 1 | alter table `contact` rename column `value` to `value_`; 2 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.4.0__attachment_archive.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `attachment_archive` ( 2 | `id` varchar(254) not null primary key, 3 | `file_id` varchar(254) not null, 4 | `filename` varchar(254), 5 | `message_id` varchar(254), 6 | `created` timestamp not null, 7 | foreign key (`file_id`) references `filemeta`(`id`), 8 | foreign key (`id`) references `attachment`(`attachid`) 9 | ); 10 | 11 | CREATE INDEX `attachment_archive_message_id_idx` 12 | ON `attachment_archive`(`message_id`); 13 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.6.0__integration_enabled.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `collective` 2 | ADD COLUMN (`integration_enabled` BOOLEAN); 3 | 4 | UPDATE `collective` SET `integration_enabled` = true; 5 | 6 | ALTER TABLE `collective` 7 | MODIFY `integration_enabled` BOOLEAN NOT NULL; 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.6.1__fix_timestamp_columns.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `item` 2 | MODIFY `itemdate` TIMESTAMP NULL; 3 | 4 | ALTER TABLE `item` 5 | MODIFY `duedate` TIMESTAMP NULL; 6 | 7 | ALTER TABLE `user_` 8 | MODIFY `lastlogin` TIMESTAMP NULL; 9 | 10 | ALTER TABLE `job` 11 | MODIFY `started` TIMESTAMP NULL; 12 | 13 | ALTER TABLE `job` 14 | MODIFY `finished` TIMESTAMP NULL; 15 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.7.0__fts-migration.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `fts_migration` ( 2 | `id` varchar(254) not null primary key, 3 | `version` int not null, 4 | `fts_engine` varchar(254) not null, 5 | `description` varchar(254) not null, 6 | `created` timestamp not null 7 | ); 8 | 9 | CREATE UNIQUE INDEX `fts_migration_version_engine_idx` 10 | ON `fts_migration`(`version`, `fts_engine`); 11 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.7.1__fix_item_date.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `item` 2 | MODIFY `itemdate` DATETIME NULL; 3 | 4 | ALTER TABLE `item` 5 | MODIFY `duedate` DATETIME NULL; 6 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.9.1__classifier.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `classifier_setting` ( 2 | `cid` varchar(254) not null primary key, 3 | `enabled` boolean not null, 4 | `schedule` varchar(254) not null, 5 | `category` varchar(254) not null, 6 | `item_count` int not null, 7 | `file_id` varchar(254), 8 | `created` timestamp not null, 9 | foreign key (`cid`) references `collective`(`cid`), 10 | foreign key (`file_id`) references `filemeta`(`id`) 11 | ); 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.9.2__fix_text_length.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `attachmentmeta` 2 | MODIFY COLUMN `content` longtext; 3 | 4 | ALTER TABLE `attachmentmeta` 5 | MODIFY COLUMN `nerlabels` longtext; 6 | 7 | ALTER TABLE `attachmentmeta` 8 | MODIFY COLUMN `itemproposals` longtext; 9 | 10 | ALTER TABLE `job` 11 | MODIFY COLUMN `args` mediumtext; 12 | 13 | ALTER TABLE `joblog` 14 | MODIFY COLUMN `message` mediumtext; 15 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.9.3__joblog_counter.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `joblog` 2 | ADD COLUMN `counter` mediumint auto_increment unique; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/mariadb/V1.9.4__unique_equipments.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `equipment` 2 | ADD CONSTRAINT `equipment_cid_name_key` 3 | UNIQUE (`cid`, `name`); 4 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.10.0__attachment_preview.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "attachment_preview" ( 2 | "id" varchar(254) not null primary key, 3 | "file_id" varchar(254) not null, 4 | "filename" varchar(254), 5 | "created" timestamp not null, 6 | foreign key ("file_id") references "filemeta"("id"), 7 | foreign key ("id") references "attachment"("attachid") 8 | ); 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.11.0__pdf_pages.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "attachmentmeta" 2 | ADD COLUMN "page_count" smallint; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.12.0__upload_data.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "source" 2 | ADD COLUMN "file_filter" varchar(254) NULL; 3 | 4 | CREATE TABLE "tagsource" ( 5 | "id" varchar(254) not null primary key, 6 | "source_id" varchar(254) not null, 7 | "tag_id" varchar(254) not null, 8 | unique ("source_id", "tag_id"), 9 | foreign key ("source_id") references "source"("sid"), 10 | foreign key ("tag_id") references "tag"("tid") 11 | ); 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.14.0__person_org.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "person" 2 | ADD COLUMN "oid" varchar(254); 3 | 4 | ALTER TABLE "person" 5 | ADD CONSTRAINT fk_person_organization 6 | FOREIGN KEY ("oid") 7 | REFERENCES "organization"("oid"); 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.15.0__rememberme.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "rememberme" ( 2 | "id" varchar(254) not null primary key, 3 | "cid" varchar(254) not null, 4 | "login" varchar(254) not null, 5 | "created" timestamp not null, 6 | "uses" int not null, 7 | FOREIGN KEY ("cid","login") REFERENCES "user_"("cid","login") 8 | ); 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.16.0__add_imap_oauth.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "userimap" 2 | ADD COLUMN "imap_oauth2" boolean NULL; 3 | 4 | UPDATE "userimap" SET "imap_oauth2" = false; 5 | 6 | ALTER TABLE "userimap" 7 | ALTER COLUMN "imap_oauth2" SET NOT NULL; 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.19.0__add_classify_meta.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "item_proposal" ( 2 | "itemid" varchar(254) not null primary key, 3 | "classifier_proposals" text not null, 4 | "classifier_tags" text not null, 5 | "created" timestamp not null, 6 | foreign key ("itemid") references "item"("itemid") 7 | ); 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.19.1__remove_enabled.sql: -------------------------------------------------------------------------------- 1 | alter table "classifier_setting" 2 | drop column "enabled"; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.2.0__origin_source.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "attachment_source" ( 2 | "id" varchar(254) not null primary key, 3 | "file_id" varchar(254) not null, 4 | "filename" varchar(254), 5 | "created" timestamp not null, 6 | foreign key ("file_id") references "filemeta"("id"), 7 | foreign key ("id") references "attachment"("attachid") 8 | ); 9 | 10 | INSERT INTO "attachment_source" 11 | SELECT "attachid","filemetaid","name","created" FROM "attachment"; 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.20.0__personuse.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "person" 2 | ADD COLUMN "person_use" varchar(254); 3 | 4 | UPDATE "person" SET "person_use" = 'concerning' where "concerning" = true; 5 | UPDATE "person" SET "person_use" = 'correspondent' where "concerning" = false; 6 | UPDATE "person" SET "person_use" = 'both' where "concerning" is null; 7 | 8 | ALTER TABLE "person" 9 | DROP COLUMN "concerning"; 10 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.20.1__equipment_description.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "equipment" 2 | ADD COLUMN "notes" text; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.20.2__org_shortname.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "organization" 2 | ADD COLUMN "short_name" varchar(254); 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.20.3__node_seen.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "node" 2 | ADD COLUMN "not_found" int not null default 0; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.20.4__source_lang.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "source" 2 | ADD COLUMN "doc_lang" varchar(254); 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.21.0__cast_function.sql: -------------------------------------------------------------------------------- 1 | -- Create a function to cast to a numeric, if an error occurs return null 2 | create or replace function CAST_TO_NUMERIC(text) returns numeric as $$ 3 | begin 4 | return cast($1 as numeric); 5 | exception 6 | when invalid_text_representation then 7 | return null; 8 | end; 9 | $$ language plpgsql immutable; 10 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.21.1__equip_org_use.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "equipment" 2 | ADD COLUMN "equip_use" varchar(254); 3 | 4 | UPDATE "equipment" SET "equip_use" = 'concerning'; 5 | 6 | ALTER TABLE "equipment" 7 | ALTER COLUMN "equip_use" SET NOT NULL; 8 | 9 | 10 | ALTER TABLE "organization" 11 | ADD COLUMN "org_use" varchar(254); 12 | 13 | UPDATE "organization" SET "org_use" = 'correspondent'; 14 | 15 | ALTER TABLE "organization" 16 | ALTER COLUMN "org_use" SET NOT NULL; 17 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.22.0__add_task_name.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "periodic_task" 2 | ADD COLUMN "summary" varchar(254); 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.23.0__clientsettings.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "client_settings" ( 2 | "id" varchar(254) not null primary key, 3 | "client_id" varchar(254) not null, 4 | "user_id" varchar(254) not null, 5 | "settings_data" text not null, 6 | "created" timestamp not null, 7 | "updated" timestamp not null, 8 | foreign key ("user_id") references "user_"("uid") on delete cascade, 9 | unique ("client_id", "user_id") 10 | ); 11 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.24.0__drop_fts_migration.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE "fts_migration"; 2 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.25.0__add_empty_trash.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "empty_trash_setting" ( 2 | "cid" varchar(254) not null primary key, 3 | "schedule" varchar(254) not null, 4 | "created" timestamp not null, 5 | foreign key ("cid") references "collective"("cid") 6 | ); 7 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.25.1__fix_periodic_submitter_value.sql: -------------------------------------------------------------------------------- 1 | UPDATE "periodic_task" 2 | SET submitter = group_ 3 | WHERE submitter = 'learn-classifier'; 4 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.25.2__add_trash_min_age.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "empty_trash_setting" 2 | ADD COLUMN "min_age" bigint; 3 | 4 | UPDATE "empty_trash_setting" 5 | SET "min_age" = 604800000; 6 | 7 | ALTER TABLE "empty_trash_setting" 8 | ALTER COLUMN "min_age" SET NOT NULL; 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.25.3__delete_corrupt_trash_task.sql: -------------------------------------------------------------------------------- 1 | -- note this is only for users of nightly releases 2 | DELETE FROM "periodic_task" 3 | WHERE "task" = 'empty-trash'; 4 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.25.4__add_source_attachonly.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "source" 2 | ADD COLUMN "attachments_only" BOOLEAN NULL; 3 | 4 | UPDATE "source" 5 | SET "attachments_only" = FALSE; 6 | 7 | ALTER TABLE "source" 8 | ALTER COLUMN "attachments_only" SET NOT NULL; 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.26.0__missing_indexes.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX "joblog_id_created_idx" ON "joblog"("jid", "created"); 2 | CREATE INDEX "item_itemdate_created_idx" ON "item"(coalesce("itemdate", "created")); 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.26.1__totp.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "totp" ( 2 | "user_id" varchar(254) not null primary key, 3 | "enabled" boolean not null, 4 | "secret" varchar(254) not null, 5 | "created" timestamp not null, 6 | FOREIGN KEY ("user_id") REFERENCES "user_"("uid") ON DELETE CASCADE 7 | ); 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.26.2__openid.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "user_" 2 | ADD COLUMN "account_source" varchar(254); 3 | 4 | UPDATE "user_" 5 | SET "account_source" = 'local'; 6 | 7 | ALTER TABLE "user_" 8 | ALTER COLUMN "account_source" SET NOT NULL; 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.27.0__collective_passwords.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "collective_password" ( 2 | "id" varchar(254) not null primary key, 3 | "cid" varchar(254) not null, 4 | "pass" varchar(254) not null, 5 | "created" timestamp not null, 6 | foreign key ("cid") references "collective"("cid") on delete cascade 7 | ) 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.27.1__item_share.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "item_share" ( 2 | "id" varchar(254) not null primary key, 3 | "user_id" varchar(254) not null, 4 | "name" varchar(254), 5 | "query" varchar(2000) not null, 6 | "enabled" boolean not null, 7 | "pass" varchar(254), 8 | "publish_at" timestamp not null, 9 | "publish_until" timestamp not null, 10 | "views" int not null, 11 | "last_access" timestamp, 12 | foreign key ("user_id") references "user_"("uid") on delete cascade 13 | ) 14 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.28.0__pubsub.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "pubsub" ( 2 | "id" varchar(254) not null primary key, 3 | "node_id" varchar(254) not null, 4 | "url" varchar(254) not null, 5 | "topic" varchar(254) not null, 6 | "counter" int not null, 7 | unique("url", "topic") 8 | ) 9 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.28.1__intern_settings.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "internal_setting" ( 2 | "id" varchar(254) not null primary key, 3 | "internal_route_key" varchar(254) not null 4 | ) 5 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.31.1__gotify_prio.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "notification_channel_gotify" 2 | ADD COLUMN "priority" smallint; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.32.0__notification_channel_name.sql: -------------------------------------------------------------------------------- 1 | alter table "notification_channel_mail" 2 | add column "name" varchar(254); 3 | 4 | alter table "notification_channel_gotify" 5 | add column "name" varchar(254); 6 | 7 | alter table "notification_channel_matrix" 8 | add column "name" varchar(254); 9 | 10 | alter table "notification_channel_http" 11 | add column "name" varchar(254); 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.35.0__download_query.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "download_query"( 2 | "id" varchar(254) not null primary key, 3 | "cid" varchar(254) not null, 4 | "file_id" varchar(254) not null, 5 | "file_count" int not null, 6 | "created" timestamp not null, 7 | "last_access" timestamp, 8 | "access_count" int not null, 9 | foreign key ("cid") references "collective"("cid"), 10 | foreign key ("file_id") references "filemeta"("file_id") 11 | ); 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.35.1__password_length.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "userimap" 2 | ALTER COLUMN "imap_password" TYPE varchar; 3 | 4 | ALTER TABLE "useremail" 5 | ALTER COLUMN "smtp_password" TYPE varchar; 6 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.38.1__remove_unused_column.sql: -------------------------------------------------------------------------------- 1 | alter table "item" drop column "inreplyto"; 2 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.39.3__rename_value.sql: -------------------------------------------------------------------------------- 1 | alter table "contact" rename column "value" to "value_"; 2 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.4.0__attachment_archive.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "attachment_archive" ( 2 | "id" varchar(254) not null primary key, 3 | "file_id" varchar(254) not null, 4 | "filename" varchar(254), 5 | "message_id" varchar(254), 6 | "created" timestamp not null, 7 | foreign key ("file_id") references "filemeta"("id"), 8 | foreign key ("id") references "attachment"("attachid") 9 | ); 10 | 11 | CREATE INDEX "attachment_archive_message_id_idx" 12 | ON "attachment_archive"("message_id"); 13 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.6.0__integration_enabled.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "collective" 2 | ADD COLUMN "integration_enabled" BOOLEAN; 3 | 4 | UPDATE "collective" SET "integration_enabled" = true; 5 | 6 | ALTER TABLE "collective" 7 | ALTER COLUMN "integration_enabled" SET NOT NULL; 8 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.7.0__fts-migration.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "fts_migration" ( 2 | "id" varchar(254) not null primary key, 3 | "version" int not null, 4 | "fts_engine" varchar(254) not null, 5 | "description" varchar(254) not null, 6 | "created" timestamp not null 7 | ); 8 | 9 | CREATE UNIQUE INDEX "fts_migration_version_engine_idx" 10 | ON "fts_migration"("version", "fts_engine"); 11 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.9.1__classifier.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE "classifier_setting" ( 2 | "cid" varchar(254) not null primary key, 3 | "enabled" boolean not null, 4 | "schedule" varchar(254) not null, 5 | "category" varchar(254) not null, 6 | "item_count" int not null, 7 | "file_id" varchar(254), 8 | "created" timestamp not null, 9 | foreign key ("cid") references "collective"("cid"), 10 | foreign key ("file_id") references "filemeta"("id") 11 | ); 12 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.9.3__joblog_counter.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "joblog" 2 | ADD COLUMN "counter" bigserial; 3 | -------------------------------------------------------------------------------- /modules/store/src/main/resources/db/migration/postgresql/V1.9.4__unique_equipments.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "equipment" 2 | ADD CONSTRAINT "equipment_cid_name_key" 3 | UNIQUE ("cid", "name"); 4 | -------------------------------------------------------------------------------- /modules/store/src/main/scala/docspell/store/file/FileMetadata.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.store.file 8 | 9 | import docspell.common._ 10 | 11 | import scodec.bits.ByteVector 12 | 13 | final case class FileMetadata( 14 | id: FileKey, 15 | created: Timestamp, 16 | mimetype: MimeType, 17 | length: ByteSize, 18 | checksum: ByteVector 19 | ) 20 | -------------------------------------------------------------------------------- /modules/store/src/main/scala/docspell/store/impl/h2/CastNumericFun.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.store.impl.h2 8 | 9 | import java.math.BigDecimal 10 | 11 | /** This is used from within the H2 database! */ 12 | object CastNumericFun { 13 | def castToNumeric(str: String): BigDecimal = 14 | try new BigDecimal(str) 15 | catch { 16 | case _: Throwable => null 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/store/src/main/scala/docspell/store/qb/Column.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.store.qb 8 | 9 | case class Column[A](name: String, table: TableDef) { 10 | def inTable(t: TableDef): Column[A] = 11 | copy(table = t) 12 | 13 | def cast[B]: Column[B] = 14 | this.asInstanceOf[Column[B]] 15 | 16 | } 17 | 18 | object Column {} 19 | -------------------------------------------------------------------------------- /modules/store/src/main/scala/docspell/store/queries/AttachmentLight.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.store.queries 8 | 9 | import docspell.common._ 10 | 11 | case class AttachmentLight( 12 | id: Ident, 13 | position: Int, 14 | name: Option[String], 15 | pageCount: Option[Int] 16 | ) 17 | -------------------------------------------------------------------------------- /modules/store/src/main/scala/docspell/store/queries/CategoryCount.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.store.queries 8 | 9 | final case class CategoryCount(category: Option[String], count: Int) 10 | -------------------------------------------------------------------------------- /modules/store/src/main/scala/docspell/store/queries/CustomValue.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.store.queries 8 | 9 | import docspell.common._ 10 | 11 | case class CustomValue(field: Ident, value: String) 12 | -------------------------------------------------------------------------------- /modules/store/src/main/scala/docspell/store/queries/FolderCount.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.store.queries 8 | 9 | import docspell.common._ 10 | 11 | case class FolderCount(id: Ident, name: String, owner: IdRef, count: Int) 12 | -------------------------------------------------------------------------------- /modules/store/src/main/scala/docspell/store/queries/IdRefCount.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.store.queries 8 | 9 | import docspell.common._ 10 | 11 | final case class IdRefCount(ref: IdRef, count: Int) {} 12 | -------------------------------------------------------------------------------- /modules/store/src/main/scala/docspell/store/queries/ItemFieldValue.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.store.queries 8 | 9 | import docspell.common._ 10 | 11 | case class ItemFieldValue( 12 | fieldId: Ident, 13 | fieldName: Ident, 14 | fieldLabel: Option[String], 15 | fieldType: CustomFieldType, 16 | value: String 17 | ) 18 | -------------------------------------------------------------------------------- /modules/store/src/main/scala/docspell/store/queries/ListItemWithTags.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.store.queries 8 | 9 | import docspell.common.Ident 10 | import docspell.store.records.RTag 11 | 12 | case class ListItemWithTags( 13 | item: ListItem, 14 | tags: List[RTag], 15 | attachments: List[AttachmentLight], 16 | customfields: List[ItemFieldValue], 17 | relatedItems: List[Ident] 18 | ) 19 | -------------------------------------------------------------------------------- /modules/store/src/main/scala/docspell/store/queries/SelectedItem.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.store.queries 8 | 9 | import docspell.common._ 10 | 11 | /** Some preselected item from a fulltext search. */ 12 | case class SelectedItem(itemId: Ident, weight: Double) 13 | -------------------------------------------------------------------------------- /modules/store/src/main/scala/docspell/store/queries/TagCount.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.store.queries 8 | 9 | import docspell.store.records.RTag 10 | 11 | final case class TagCount(tag: RTag, count: Int) 12 | -------------------------------------------------------------------------------- /modules/store/src/main/scala/docspell/store/queries/TextAndTag.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 Eike K. & Contributors 3 | * 4 | * SPDX-License-Identifier: AGPL-3.0-or-later 5 | */ 6 | 7 | package docspell.store.queries 8 | 9 | import docspell.common._ 10 | 11 | case class TextAndTag(itemId: Ident, text: String, tag: Option[TextAndTag.TagName]) 12 | 13 | object TextAndTag { 14 | case class TagName(id: Ident, name: String) 15 | } 16 | -------------------------------------------------------------------------------- /modules/webapp/elm-analyse.json: -------------------------------------------------------------------------------- 1 | { 2 | "excludedPaths": [ 3 | "modules/webapp/target/elm-src/" 4 | ], 5 | "checks" : { 6 | "ImportAll": false, 7 | "SingleFieldRecord": false 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /modules/webapp/elm-package.json: -------------------------------------------------------------------------------- 1 | elm.json -------------------------------------------------------------------------------- /modules/webapp/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "docspell-css", 3 | "version": "1.0.0", 4 | "private": true, 5 | "devDependencies": { 6 | "@fortawesome/fontawesome-free": "^6.0.0", 7 | "@tailwindcss/forms": "^0.5.0", 8 | "flag-icons": "^7.2.0" 9 | }, 10 | "dependencies": { 11 | "tailwindcss": "^3.4.1" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /modules/webapp/postcss.config.js: -------------------------------------------------------------------------------- 1 | //postcss.config.js 2 | 3 | module.exports = (ctx) => ({ 4 | plugins: [ 5 | require('postcss-import'), 6 | require('tailwindcss'), 7 | require('autoprefixer'), 8 | require('cssnano'), 9 | ] 10 | }) 11 | -------------------------------------------------------------------------------- /modules/webapp/src/main/elm/Data/AppEvent.elm: -------------------------------------------------------------------------------- 1 | {- 2 | Copyright 2020 Eike K. & Contributors 3 | 4 | SPDX-License-Identifier: AGPL-3.0-or-later 5 | -} 6 | 7 | 8 | module Data.AppEvent exposing (AppEvent(..)) 9 | 10 | 11 | type AppEvent 12 | = AppNothing 13 | | AppReloadUiSettings 14 | -------------------------------------------------------------------------------- /modules/webapp/src/main/elm/Data/EquipmentOrder.elm: -------------------------------------------------------------------------------- 1 | {- 2 | Copyright 2020 Eike K. & Contributors 3 | 4 | SPDX-License-Identifier: AGPL-3.0-or-later 5 | -} 6 | 7 | 8 | module Data.EquipmentOrder exposing (EquipmentOrder(..), asString) 9 | 10 | 11 | type EquipmentOrder 12 | = NameAsc 13 | | NameDesc 14 | 15 | 16 | asString : EquipmentOrder -> String 17 | asString order = 18 | case order of 19 | NameAsc -> 20 | "name" 21 | 22 | NameDesc -> 23 | "-name" 24 | -------------------------------------------------------------------------------- /modules/webapp/src/main/elm/Data/OrganizationOrder.elm: -------------------------------------------------------------------------------- 1 | {- 2 | Copyright 2020 Eike K. & Contributors 3 | 4 | SPDX-License-Identifier: AGPL-3.0-or-later 5 | -} 6 | 7 | 8 | module Data.OrganizationOrder exposing (OrganizationOrder(..), asString) 9 | 10 | 11 | type OrganizationOrder 12 | = NameAsc 13 | | NameDesc 14 | 15 | 16 | asString : OrganizationOrder -> String 17 | asString order = 18 | case order of 19 | NameAsc -> 20 | "name" 21 | 22 | NameDesc -> 23 | "-name" 24 | -------------------------------------------------------------------------------- /modules/webapp/src/main/elm/Data/QueryParseResult.elm: -------------------------------------------------------------------------------- 1 | {- 2 | Copyright 2020 Eike K. & Contributors 3 | 4 | SPDX-License-Identifier: AGPL-3.0-or-later 5 | -} 6 | 7 | 8 | module Data.QueryParseResult exposing (QueryParseResult, success) 9 | 10 | 11 | type alias QueryParseResult = 12 | { success : Bool 13 | , input : String 14 | , index : Int 15 | , messages : List String 16 | } 17 | 18 | 19 | success : QueryParseResult 20 | success = 21 | QueryParseResult True "" 0 [] 22 | -------------------------------------------------------------------------------- /modules/webapp/src/main/elm/Messages/UiLanguage.elm: -------------------------------------------------------------------------------- 1 | {- 2 | Copyright 2020 Eike K. & Contributors 3 | 4 | SPDX-License-Identifier: AGPL-3.0-or-later 5 | -} 6 | 7 | 8 | module Messages.UiLanguage exposing 9 | ( UiLanguage(..) 10 | , all 11 | ) 12 | 13 | {-| This module defines the languages supported in the web app. 14 | -} 15 | 16 | 17 | type UiLanguage 18 | = English 19 | | German 20 | | French 21 | 22 | 23 | all : List UiLanguage 24 | all = 25 | [ English 26 | , German 27 | , French 28 | ] 29 | -------------------------------------------------------------------------------- /modules/webapp/src/main/elm/Util/Address.elm: -------------------------------------------------------------------------------- 1 | {- 2 | Copyright 2020 Eike K. & Contributors 3 | 4 | SPDX-License-Identifier: AGPL-3.0-or-later 5 | -} 6 | 7 | 8 | module Util.Address exposing (toString) 9 | 10 | import Api.Model.Address exposing (Address) 11 | 12 | 13 | toString : Address -> String 14 | toString a = 15 | [ a.street, a.zip, a.city, a.country ] 16 | |> List.filter (String.isEmpty >> not) 17 | |> List.intersperse ", " 18 | |> String.concat 19 | -------------------------------------------------------------------------------- /modules/webapp/src/main/elm/Util/Contact.elm: -------------------------------------------------------------------------------- 1 | {- 2 | Copyright 2020 Eike K. & Contributors 3 | 4 | SPDX-License-Identifier: AGPL-3.0-or-later 5 | -} 6 | 7 | 8 | module Util.Contact exposing (toString) 9 | 10 | import Api.Model.Contact exposing (Contact) 11 | 12 | 13 | toString : List Contact -> String 14 | toString contacts = 15 | List.map (\c -> c.kind ++ ": " ++ c.value) contacts 16 | |> List.intersperse ", " 17 | |> String.concat 18 | -------------------------------------------------------------------------------- /modules/webapp/src/main/elm/Util/File.elm: -------------------------------------------------------------------------------- 1 | {- 2 | Copyright 2020 Eike K. & Contributors 3 | 4 | SPDX-License-Identifier: AGPL-3.0-or-later 5 | -} 6 | 7 | 8 | module Util.File exposing (makeFileId) 9 | 10 | import File exposing (File) 11 | import Util.String 12 | 13 | 14 | makeFileId : File -> String 15 | makeFileId file = 16 | File.name file 17 | ++ "-" 18 | ++ (File.size file |> String.fromInt) 19 | |> Util.String.crazyEncode 20 | -------------------------------------------------------------------------------- /modules/webapp/src/main/styles/index.css: -------------------------------------------------------------------------------- 1 | @import "@fortawesome/fontawesome-free/css/all"; 2 | @import "flag-icons/css/flag-icons.min"; 3 | 4 | @import "tailwindcss/base"; 5 | @import "tailwindcss/components"; 6 | @import "tailwindcss/utilities"; 7 | 8 | @import "./custom-components.css"; 9 | @import "./custom-utilities.css"; 10 | -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/android-icon-144x144.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/android-icon-192x192.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/android-icon-36x36.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/android-icon-48x48.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/android-icon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/android-icon-512x512.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/android-icon-72x72.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/android-icon-96x96.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/apple-icon-114x114.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/apple-icon-120x120.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/apple-icon-144x144.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/apple-icon-152x152.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/apple-icon-180x180.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/apple-icon-57x57.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/apple-icon-60x60.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/apple-icon-72x72.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/apple-icon-76x76.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/apple-icon-precomposed.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/apple-icon.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/favicon-96x96.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/favicon.ico -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/ms-icon-144x144.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/ms-icon-150x150.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/ms-icon-310x310.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/favicon/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/modules/webapp/src/main/webjar/favicon/ms-icon-70x70.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/img/logo-400.png: -------------------------------------------------------------------------------- 1 | ../../../../../../artwork/logo-400.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/img/logo-96.png: -------------------------------------------------------------------------------- 1 | ../../../../../../artwork/logo-96.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/img/logo-mc-400.png: -------------------------------------------------------------------------------- 1 | ../../../../../../artwork/logo-mc-400.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/img/logo-mc-96.png: -------------------------------------------------------------------------------- 1 | ../../../../../../artwork/logo-mc-96.png -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/img/logo-only-mc.svg: -------------------------------------------------------------------------------- 1 | ../../../../../../artwork/logo-only-mc.svg -------------------------------------------------------------------------------- /modules/webapp/src/main/webjar/img/logo-only.svg: -------------------------------------------------------------------------------- 1 | ../../../../../../artwork/logo-only.svg -------------------------------------------------------------------------------- /nix/checks/default.nix: -------------------------------------------------------------------------------- 1 | {...}: { 2 | imports = [ 3 | ./configuration-test.nix 4 | ]; 5 | } 6 | -------------------------------------------------------------------------------- /nix/checks/testScript.py: -------------------------------------------------------------------------------- 1 | with subtest("services are up"): 2 | machine.wait_for_unit("docspell-restserver") 3 | machine.wait_for_unit("docspell-joex") 4 | -------------------------------------------------------------------------------- /project/ElmCompileMode.scala: -------------------------------------------------------------------------------- 1 | trait ElmCompileMode { 2 | def flags: Seq[String] 3 | } 4 | object ElmCompileMode { 5 | case object Production extends ElmCompileMode { 6 | val flags = Seq("--optimize") 7 | } 8 | case object Debug extends ElmCompileMode { 9 | val flags = Seq("--debug") 10 | } 11 | case object Dev extends ElmCompileMode { 12 | val flags = Seq.empty 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=1.11.1 2 | -------------------------------------------------------------------------------- /project/build.sbt: -------------------------------------------------------------------------------- 1 | libraryDependencies ++= Seq( 2 | "com.typesafe" % "config" % "1.4.3" 3 | ) 4 | -------------------------------------------------------------------------------- /project/redocly.yml: -------------------------------------------------------------------------------- 1 | extends: 2 | - recommended 3 | -------------------------------------------------------------------------------- /tools/README.md: -------------------------------------------------------------------------------- 1 | # Tools 2 | 3 | This is a place for some arbitrary tools. These are not packaged 4 | within a release and are also not tested regularily and may be out of 5 | date. But they may serve as input for ideas or as a starting point. 6 | -------------------------------------------------------------------------------- /tools/exim/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.7' 2 | services: 3 | smtp: 4 | image: ds-exim:latest 5 | ports: 6 | - "25:25" 7 | environment: 8 | # This is the configured header value for the integration-endpoint 9 | - DS_HEADER=test123 10 | # This is the URL to docspell 11 | - DS_URL=http://192.168.1.95:7880 12 | # Use host network for demo purposes 13 | network_mode: host 14 | -------------------------------------------------------------------------------- /tools/exim/exim.dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:latest 2 | 3 | RUN apk add --no-cache exim curl 4 | USER exim 5 | COPY ./exim.conf /etc/exim/ 6 | EXPOSE 25 7 | ENTRYPOINT ["exim"] 8 | CMD ["-bdf", "-v", "-q1m"] 9 | -------------------------------------------------------------------------------- /tools/webextension/icons/logo-48.png: -------------------------------------------------------------------------------- 1 | ../../../artwork/logo-48.png -------------------------------------------------------------------------------- /tools/webextension/icons/logo-96.png: -------------------------------------------------------------------------------- 1 | ../../../artwork/logo-96.png -------------------------------------------------------------------------------- /tools/webextension/make-xpi.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | zip -9r docspell.xpi _locales/ docspell.js icons/ manifest.json 4 | -------------------------------------------------------------------------------- /tools/webextension/native/app_manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "docspell", 3 | "description": "Docspell Uploads", 4 | "path": "/usr/local/share/docspell/native.py", 5 | "type": "stdio", 6 | "allowed_extensions": [ "docspell@eikek.github.io" ] 7 | } 8 | -------------------------------------------------------------------------------- /version.sbt: -------------------------------------------------------------------------------- 1 | ThisBuild / version := "0.44.0-SNAPSHOT" 2 | -------------------------------------------------------------------------------- /website/elm-analyse.json: -------------------------------------------------------------------------------- 1 | { 2 | "excludedPaths": [ 3 | "modules/webapp/target/elm-src/" 4 | ], 5 | "checks" : { 6 | "ImportAll": false, 7 | "SingleFieldRecord": false 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /website/postcss.config.js: -------------------------------------------------------------------------------- 1 | //postcss.config.js 2 | 3 | module.exports = (ctx) => ({ 4 | plugins: [ 5 | require('postcss-import'), 6 | require('tailwindcss'), 7 | require('autoprefixer'), 8 | require('cssnano'), 9 | ] 10 | }) 11 | -------------------------------------------------------------------------------- /website/scripts/build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | yarn install 6 | npx tailwindcss -i ./styles/input.css -o ./site/public/styles.css --config ./tailwind.config.js --postcss ./postcss.config.js 7 | elm make --output site/static/js/bundle.js --optimize elm/Main.elm 8 | cd site && zola build 9 | cd .. 10 | 11 | echo "Site is in site/public." 12 | -------------------------------------------------------------------------------- /website/scripts/run-elm.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | CMD="elm make --output site/static/js/bundle.js --optimize elm/Main.elm elm/Search.elm" 4 | $CMD 5 | 6 | inotifywait -m -e close_write -r elm/ | 7 | while read f; do 8 | $CMD 9 | done 10 | -------------------------------------------------------------------------------- /website/scripts/run-styles.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | mkdir -p ./site/public/files 4 | mkdir -p ./site/public/webfonts 5 | 6 | echo "Copy webfonts…" 7 | cp node_modules/@fontsource/*/files/* ./site/public/files/ 8 | cp node_modules/@fortawesome/fontawesome-free/webfonts/* ./site/public/webfonts/ 9 | 10 | echo "Running tailwind…" 11 | npx tailwindcss -i ./styles/input.css -o ./site/public/styles.css --config ./tailwind.config.js --postcss ./postcss.config.js "$1" 12 | -------------------------------------------------------------------------------- /website/site/content/blog/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Main" 3 | description = "Random collection of stuff around Docspell" 4 | template = "blog.html" 5 | page_template = "blog_page.html" 6 | sort_by = "date" 7 | insert_anchor_links = "right" 8 | +++ 9 | 10 | # Blog 11 | 12 | This is a place to collect random tips and knowledge around Docspell. 13 | This is organized as a log, where entries can be added by whoever 14 | likes to share something. Check [this 15 | page](@/blog/2022-01-31_create_post.md) for creating content here. 16 | -------------------------------------------------------------------------------- /website/site/content/docs/addons/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Addons" 3 | insert_anchor_links = "right" 4 | description = "Describes how addons work." 5 | weight = 55 6 | template = "pages.html" 7 | sort_by = "weight" 8 | redirect_to = "docs/addons/basics" 9 | +++ 10 | 11 | No content here. 12 | -------------------------------------------------------------------------------- /website/site/content/docs/addons/addon-install-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/addons/addon-install-01.png -------------------------------------------------------------------------------- /website/site/content/docs/addons/addon-install-01_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/addons/addon-install-01_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/addons/addon-install-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/addons/addon-install-02.png -------------------------------------------------------------------------------- /website/site/content/docs/addons/addon-install-02_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/addons/addon-install-02_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/addons/addon-install-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/addons/addon-install-03.png -------------------------------------------------------------------------------- /website/site/content/docs/addons/addon-install-03_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/addons/addon-install-03_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/addons/addon-install-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/addons/addon-install-04.png -------------------------------------------------------------------------------- /website/site/content/docs/addons/addon-install-04_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/addons/addon-install-04_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/api/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Api" 3 | description = "Contains documentation about the REST API." 4 | weight = 70 5 | insert_anchor_links = "right" 6 | template = "docs.html" 7 | sort_by = "weight" 8 | +++ 9 | -------------------------------------------------------------------------------- /website/site/content/docs/configure/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Configuration" 3 | insert_anchor_links = "right" 4 | description = "Describes the configuration file and shows all default settings." 5 | weight = 40 6 | template = "pages.html" 7 | sort_by = "weight" 8 | redirect_to = "docs/configure/main" 9 | +++ 10 | 11 | No content here. 12 | -------------------------------------------------------------------------------- /website/site/content/docs/dev/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Development" 3 | description = "Contains build instructions and other internal notes." 4 | weight = 300 5 | sort_by = "weight" 6 | insert_anchor_links = "right" 7 | template = "pages.html" 8 | redirect_to = "/docs/dev/building" 9 | +++ 10 | -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "ADRs" 3 | description = "Contains some ADRs, which are internal notes on decisions made." 4 | weight = 300 5 | sort_by = "weight" 6 | insert_anchor_links = "right" 7 | template = "docs.html" 8 | page_template = "docs.html" 9 | [extra] 10 | page_list = true 11 | +++ 12 | 13 | # ADR 14 | 15 | This contains a list of ADRs, most of them are from very early. It 16 | often just contains notes that could go nowhere else, but still should 17 | be captured. 18 | -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-docx-pandoc-context.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-docx-pandoc-context.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-docx-pandoc-html.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-docx-pandoc-html.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-docx-pandoc-latex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-docx-pandoc-latex.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-docx-pandoc-ms.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-docx-pandoc-ms.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-docx-unoconv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-docx-unoconv.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-html-native.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-html-native.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-html-pandoc-html.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-html-pandoc-html.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-html-pandoc-latex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-html-pandoc-latex.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-html-unoconv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-html-unoconv.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-html-wkhtmltopdf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-html-wkhtmltopdf.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-md-java.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-md-java.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-md-pandoc-html.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-md-pandoc-html.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-md-pandoc-latex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-md-pandoc-latex.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-odt-abiword.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-odt-abiword.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-odt-native.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-odt-native.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-odt-pandoc-context.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-odt-pandoc-context.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-odt-pandoc-html.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-odt-pandoc-html.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-odt-pandoc-latex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-odt-pandoc-latex.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-odt-pandoc-ms.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-odt-pandoc-ms.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-odt-unoconv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-odt-unoconv.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-txt-java.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-txt-java.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-txt-pandoc-html.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-txt-pandoc-html.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/example-txt-pandoc-latex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/example-txt-pandoc-latex.jpg -------------------------------------------------------------------------------- /website/site/content/docs/dev/adr/process-files.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/dev/adr/process-files.png -------------------------------------------------------------------------------- /website/site/content/docs/feed/scanmailbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/feed/scanmailbox.png -------------------------------------------------------------------------------- /website/site/content/docs/feed/scanmailbox_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/feed/scanmailbox_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/feed/web-upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/feed/web-upload.png -------------------------------------------------------------------------------- /website/site/content/docs/feed/web-upload_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/feed/web-upload_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/install/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Installation" 3 | description = "There are multiple ways to install Docspell. This section contains detailed instructions." 4 | weight = 5 5 | sort_by = "weight" 6 | insert_anchor_links = "right" 7 | template = "docs.html" 8 | page_template = "docs.html" 9 | redirect_to = "/docs/install/quickstart" 10 | +++ 11 | -------------------------------------------------------------------------------- /website/site/content/docs/intro/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Introduction" 3 | weight = 0 4 | description = "Gives a short introduction to the goals of docspell and an overview of the components involved." 5 | insert_anchor_links = "right" 6 | redirect_to = "/docs/" 7 | [extra] 8 | mktoc = true 9 | hidden = true 10 | +++ 11 | -------------------------------------------------------------------------------- /website/site/content/docs/joex/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Joex" 3 | description = "More information about the job executor component." 4 | weight = 90 5 | insert_anchor_links = "right" 6 | template = "pages.html" 7 | sort_by = "weight" 8 | redirect_to = "docs/joex/intro" 9 | +++ 10 | 11 | No content here. 12 | -------------------------------------------------------------------------------- /website/site/content/docs/query/enable-powersearch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/query/enable-powersearch.png -------------------------------------------------------------------------------- /website/site/content/docs/tools/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Tools" 3 | description = "There are several tools distributed with docspell, like a program to watch a folder and import files or a simple android app." 4 | weight = 60 5 | insert_anchor_links = "right" 6 | template = "pages.html" 7 | redirect_to = "docs/tools/cli/" 8 | sort_by = "weight" 9 | +++ 10 | -------------------------------------------------------------------------------- /website/site/content/docs/tools/ds4e-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/tools/ds4e-01.png -------------------------------------------------------------------------------- /website/site/content/docs/tools/ds4e-01_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/tools/ds4e-01_light.png -------------------------------------------------------------------------------- /website/site/content/docs/tools/exim-mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/tools/exim-mail.png -------------------------------------------------------------------------------- /website/site/content/docs/tools/get-it-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/tools/get-it-on.png -------------------------------------------------------------------------------- /website/site/content/docs/tools/screenshot-choose.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/tools/screenshot-choose.jpg -------------------------------------------------------------------------------- /website/site/content/docs/tools/screenshot-create.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/tools/screenshot-create.jpg -------------------------------------------------------------------------------- /website/site/content/docs/tools/screenshot-default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/tools/screenshot-default.jpg -------------------------------------------------------------------------------- /website/site/content/docs/tools/screenshot-options.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/tools/screenshot-options.jpg -------------------------------------------------------------------------------- /website/site/content/docs/tools/screenshot-share.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/tools/screenshot-share.jpg -------------------------------------------------------------------------------- /website/site/content/docs/tools/screenshot-uploading.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/tools/screenshot-uploading.jpg -------------------------------------------------------------------------------- /website/site/content/docs/webapp/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Web-UI" 3 | description = "This section describes the features of the web application." 4 | weight = 50 5 | insert_anchor_links = "right" 6 | template = "pages.html" 7 | sort_by = "weight" 8 | redirect_to = "docs/webapp/uploading" 9 | +++ 10 | 11 | No content here. 12 | -------------------------------------------------------------------------------- /website/site/content/docs/webapp/bookmarks-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/bookmarks-01.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/bookmarks-01_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/bookmarks-01_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/bookmarks-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/bookmarks-02.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/bookmarks-02_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/bookmarks-02_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/bookmarks-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/bookmarks-03.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/bookmarks-03_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/bookmarks-03_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/bookmarks-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/bookmarks-04.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/bookmarks-04_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/bookmarks-04_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/collective-settings-autotag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/collective-settings-autotag.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/collective-settings-autotag_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/collective-settings-autotag_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-01-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-01-dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-01.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-01_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-01_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-02-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-02-dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-02.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-02_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-02_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-03.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-03_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-03_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-04.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-04_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-04_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-05.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-05_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-05_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-06.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-06_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-06_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-07.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/custom-fields-07_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/custom-fields-07_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/dashboards-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/dashboards-01.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/dashboards-01_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/dashboards-01_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/dashboards-01d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/dashboards-01d.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/dashboards-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/dashboards-02.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/dashboards-02_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/dashboards-02_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/dashboards-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/dashboards-03.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/dashboards-03_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/dashboards-03_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/dashboards-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/dashboards-04.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/dashboards-04_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/dashboards-04_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/dashboards-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/dashboards-05.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/dashboards-05_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/dashboards-05_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/docspell-curate-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/docspell-curate-1.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/docspell-curate-1_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/docspell-curate-1_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/docspell-curate-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/docspell-curate-3.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/docspell-curate-3_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/docspell-curate-3_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/docspell-curate-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/docspell-curate-5.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/docspell-curate-5_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/docspell-curate-5_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/docspell-curate-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/docspell-curate-6.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/docspell-curate-6_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/docspell-curate-6_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/download-all-01-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/download-all-01-dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/download-all-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/download-all-01.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/download-all-02-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/download-all-02-dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/download-all-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/download-all-02.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/download-all-03-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/download-all-03-dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/download-all-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/download-all-03.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/download-all-04-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/download-all-04-dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/download-all-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/download-all-04.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/drop-tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/drop-tag.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/drop-tag_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/drop-tag_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/itemcard-customize-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/itemcard-customize-01.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/itemcard-customize-01_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/itemcard-customize-01_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/itemcard-customize-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/itemcard-customize-02.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/itemcard-customize-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/itemcard-customize-03.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/itemcard-customize-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/itemcard-customize-04.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/mail-item-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/mail-item-1.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/mail-item-1_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/mail-item-1_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/mail-item-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/mail-item-2.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/mail-item-2_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/mail-item-2_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/mail-item-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/mail-item-4.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/mail-item-4_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/mail-item-4_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/mail-settings-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/mail-settings-1.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/mail-settings-1_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/mail-settings-1_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/mail-settings-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/mail-settings-2.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/mail-settings-2_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/mail-settings-2_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/merge-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/merge-01.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/merge-01_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/merge-01_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/merge-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/merge-02.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/merge-02_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/merge-02_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/merge-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/merge-04.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/merge-04_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/merge-04_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/multiedit-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/multiedit-01.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/multiedit-01_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/multiedit-01_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/multiedit-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/multiedit-02.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/multiedit-02_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/multiedit-02_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/multiedit-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/multiedit-03.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/multiedit-03_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/multiedit-03_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/multiedit-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/multiedit-04.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/multiedit-04_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/multiedit-04_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/notification-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/notification-01.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/notification-01_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/notification-01_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/notification-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/notification-02.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/notification-02_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/notification-02_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/notification-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/notification-03.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/notification-03_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/notification-03_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/notification-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/notification-04.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/notification-04_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/notification-04_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/notification-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/notification-05.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/notification-05_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/notification-05_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/notification-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/notification-06.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/notification-06_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/notification-06_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/notification-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/notification-07.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/notification-07_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/notification-07_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/processing-queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/processing-queue.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/scanmailbox-detail-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/scanmailbox-detail-01.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/scanmailbox-detail-01_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/scanmailbox-detail-01_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/scanmailbox-detail-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/scanmailbox-detail-02.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/scanmailbox-detail-02_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/scanmailbox-detail-02_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/scanmailbox-detail-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/scanmailbox-detail-03.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/scanmailbox-detail-03_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/scanmailbox-detail-03_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/scanmailbox-detail-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/scanmailbox-detail-04.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/scanmailbox-detail-04_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/scanmailbox-detail-04_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/scanmailbox-detail-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/scanmailbox-detail-05.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/scanmailbox-detail-05_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/scanmailbox-detail-05_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/scanmailbox-detail-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/scanmailbox-detail-06.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/scanmailbox-detail-06_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/scanmailbox-detail-06_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/scanmailbox-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/scanmailbox-list.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/scanmailbox-list_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/scanmailbox-list_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/search-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/search-menu.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/search-menu_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/search-menu_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-01.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-01_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-01_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-02.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-02_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-02_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-03.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-03_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-03_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-04.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-04_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-04_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-05.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-06.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-06_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-06_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-07.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-07_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-07_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-08.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-08_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-08_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-09.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-09_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-09_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-10.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-10_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-10_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-11.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-11_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-11_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-12.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/share-12_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/share-12_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/totp-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/totp-01.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/totp-01_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/totp-01_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/totp-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/totp-02.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/totp-02_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/totp-02_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/totp-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/totp-03.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/totp-03_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/totp-03_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/uploading-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/uploading-01.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/uploading-01_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/uploading-01_dark.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/uploading-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/uploading-02.png -------------------------------------------------------------------------------- /website/site/content/docs/webapp/uploading-02_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/content/docs/webapp/uploading-02_dark.png -------------------------------------------------------------------------------- /website/site/static/CNAME: -------------------------------------------------------------------------------- 1 | docspell.org -------------------------------------------------------------------------------- /website/site/static/favicon-mc.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/favicon-mc.ico -------------------------------------------------------------------------------- /website/site/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/favicon.ico -------------------------------------------------------------------------------- /website/site/static/icons/home-40.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /website/site/static/img/analyze-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/analyze-feature.png -------------------------------------------------------------------------------- /website/site/static/img/back-master-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/back-master-small.jpg -------------------------------------------------------------------------------- /website/site/static/img/cassie-boca-x-tbVqkfQCU-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/cassie-boca-x-tbVqkfQCU-unsplash.jpg -------------------------------------------------------------------------------- /website/site/static/img/fts-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/fts-feature.png -------------------------------------------------------------------------------- /website/site/static/img/fts-feature_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/fts-feature_dark.png -------------------------------------------------------------------------------- /website/site/static/img/jesse-gardner-EqdpXeemf58-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/jesse-gardner-EqdpXeemf58-unsplash.jpg -------------------------------------------------------------------------------- /website/site/static/img/jf-martin-Ofs3LjEUcrk-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/jf-martin-Ofs3LjEUcrk-unsplash.jpg -------------------------------------------------------------------------------- /website/site/static/img/josh-rose-trYl7JYATH0-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/josh-rose-trYl7JYATH0-unsplash.jpg -------------------------------------------------------------------------------- /website/site/static/img/notify-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/notify-feature.png -------------------------------------------------------------------------------- /website/site/static/img/ocr-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/ocr-feature.png -------------------------------------------------------------------------------- /website/site/static/img/poster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/poster.png -------------------------------------------------------------------------------- /website/site/static/img/scanmailbox-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/scanmailbox-feature.png -------------------------------------------------------------------------------- /website/site/static/img/sendmail-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/sendmail-feature.png -------------------------------------------------------------------------------- /website/site/static/img/tersius-van-rhyn-xcQWMPm9fG8-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/tersius-van-rhyn-xcQWMPm9fG8-unsplash.jpg -------------------------------------------------------------------------------- /website/site/static/img/user-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/img/user-feature.png -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-01-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-01-small.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-01.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-02-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-02-small.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-02.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-03-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-03-small.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-03.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-04-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-04-small.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-04.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-05-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-05-small.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-05.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-06-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-06-small.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-06.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-07-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-07-small.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-07.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-08-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-08-small.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-08.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-09-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-09-small.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-09.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-10-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-10-small.jpg -------------------------------------------------------------------------------- /website/site/static/screenshots/mobile/Screenshot_2021-02-14-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/screenshots/mobile/Screenshot_2021-02-14-10.jpg -------------------------------------------------------------------------------- /website/site/static/videos/docspell-navigate-2020-11-14.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/videos/docspell-navigate-2020-11-14.mp4 -------------------------------------------------------------------------------- /website/site/static/videos/docspell-navigate-2021-01-11.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/videos/docspell-navigate-2021-01-11.mp4 -------------------------------------------------------------------------------- /website/site/static/videos/docspell-navigate-2021-02-19.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/videos/docspell-navigate-2021-02-19.mp4 -------------------------------------------------------------------------------- /website/site/static/videos/docspell-process-2020-11-14.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/videos/docspell-process-2020-11-14.mp4 -------------------------------------------------------------------------------- /website/site/static/videos/docspell-process-2021-01-11.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/videos/docspell-process-2021-01-11.mp4 -------------------------------------------------------------------------------- /website/site/static/videos/docspell-process-2021-02-19-dark.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/videos/docspell-process-2021-02-19-dark.mp4 -------------------------------------------------------------------------------- /website/site/static/videos/docspell-process-2021-02-19.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eikek/docspell/7f2ce7d58457844c6856c5c354736732369d9263/website/site/static/videos/docspell-process-2021-02-19.mp4 -------------------------------------------------------------------------------- /website/site/templates/404.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %}Not Found :({% endblock title %} 4 | 5 | {% block sidebar %} 6 | {% endblock sidebar %} 7 | {% block rightToc %} 8 | {% endblock rightToc %} 9 | 10 | {% block mainContent %} 11 | 12 |
13 |

14 |

Not Found

15 |
16 | 17 | {% endblock mainContent %} 18 | -------------------------------------------------------------------------------- /website/site/templates/parts/search-head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /website/site/templates/parts/search-part.html: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /website/site/templates/shortcodes/buttonright.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | {{ text }} 4 | 5 |
6 | -------------------------------------------------------------------------------- /website/site/templates/shortcodes/deb_files.html: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /website/site/templates/shortcodes/figure.html: -------------------------------------------------------------------------------- 1 |
2 | {% if page is defined %} 3 | {% set len = page.components | length %} 4 | {% set p = page.components | slice(end=len - 1) | join(sep='/') %} 5 | {% else %} 6 | {% set p = section.components | join(sep='/') %} 7 | {% endif %} 8 | 9 | 10 |
11 | -------------------------------------------------------------------------------- /website/site/templates/shortcodes/figure2.html: -------------------------------------------------------------------------------- 1 | {% if page is defined %} 2 | {% set len = page.components | length %} 3 | {% set p = page.components | slice(end=len - 1) | join(sep='/') %} 4 | {% else %} 5 | {% set p = section.components | join(sep='/') %} 6 | {% endif %} 7 | 8 | 9 |
10 | 11 |
12 |
13 | 14 |
15 | -------------------------------------------------------------------------------- /website/site/templates/shortcodes/imgnormal.html: -------------------------------------------------------------------------------- 1 | {% set len = page.components | length %} 2 | {% set p = page.components | slice(end=len - 1) | join(sep='/') %} 3 | 4 | -------------------------------------------------------------------------------- /website/site/templates/shortcodes/imgnormal2.html: -------------------------------------------------------------------------------- 1 | {% set len = page.components | length %} 2 | {% set p = page.components | slice(end=len - 1) | join(sep='/') %} 3 | 4 | 5 | -------------------------------------------------------------------------------- /website/site/templates/shortcodes/imgright.html: -------------------------------------------------------------------------------- 1 | {% set len = page.components | length %} 2 | {% set p = page.components | slice(end=len - 1) | join(sep='/') %} 3 | 4 | -------------------------------------------------------------------------------- /website/site/templates/shortcodes/imgright2.html: -------------------------------------------------------------------------------- 1 | {% set len = page.components | length %} 2 | {% set p = page.components | slice(end=len - 1) | join(sep='/') %} 3 | 4 | 5 | -------------------------------------------------------------------------------- /website/site/templates/shortcodes/incl_conf.md: -------------------------------------------------------------------------------- 1 | {% set data = load_data(path=path) %} 2 | ``` bash 3 | {{ data | safe }} 4 | ``` 5 | -------------------------------------------------------------------------------- /website/site/templates/shortcodes/incl_json.md: -------------------------------------------------------------------------------- 1 | {% set data = load_data(path=path) %} 2 | ``` json 3 | {{ data | safe }} 4 | ``` 5 | -------------------------------------------------------------------------------- /website/site/templates/shortcodes/pversion.html: -------------------------------------------------------------------------------- 1 | {{ config.extra.version | replace(from='.', to='_') }} 2 | -------------------------------------------------------------------------------- /website/site/templates/shortcodes/version.html: -------------------------------------------------------------------------------- 1 | {{ config.extra.version }} 2 | -------------------------------------------------------------------------------- /website/site/templates/shortcodes/zip_files.html: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /website/styles/custom-utilities.css: -------------------------------------------------------------------------------- 1 | @layer utilities { 2 | .disabled { 3 | @apply opacity-50 cursor-not-allowed; 4 | } 5 | .h-screen-12 { 6 | height: calc(100vh - 3rem); 7 | } 8 | .max-h-screen-12 { 9 | max-height: calc(100vh - 3rem); 10 | } 11 | 12 | .dark-block { 13 | @apply hidden dark:block; 14 | } 15 | .light-block { 16 | @apply block dark:hidden; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /website/tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | darkMode: 'class', 3 | content: ["./site/**/*.{html,md}", "elm/**/*.elm"], 4 | theme: { 5 | fontFamily: { 6 | 'serif': ['Spectral', 'serif'], 7 | 'mono': ['"Source Code Pro"', 'mono'], 8 | 'sans': ['"Montserrat"', 'sans-serif'] 9 | }, 10 | extend: { 11 | }, 12 | }, 13 | variants: { 14 | extend: { 15 | display: ['dark'] 16 | } 17 | }, 18 | plugins: [ 19 | require('@tailwindcss/forms') 20 | ], 21 | } 22 | --------------------------------------------------------------------------------