* OpenAPI root url fix
* Journaling OSS setup
* feat: add preserve-original-file mode for email ingestion for GoBD compliance
- Add `preserveOriginalFile` option to ingestion sources and connectors
- Stream original EML/MBOX/PST emails to temp files instead of holding
full buffers in memory, reducing memory allocation during ingestion
- Skip attachment binary extraction and EML re-serialization when
preserve mode is enabled; use raw file on disk as source of truth
- Update `EmailObject` to use `tempFilePath` instead of in-memory `eml`
buffer across all connectors (EML, MBOX, PST)
- Add new database migration (0032) for `preserve_original_file` column
- Add frontend UI toggle with tooltip (tippy.js) for the new option
- Replace console.warn calls with structured pino logger in connectors
* add isjournaled property to archived_email
* feat(ingestion): add unmerge ingestion source functionality
Introduces the ability to detach a child ingestion source from its
merge group, making it a standalone root source. Changes include:
- Add `unmerge` controller method with auth and error handling
- Add POST `/v1/ingestion-sources/{id}/unmerge` route with OpenAPI docs
- Implement `IngestionService.unmerge` backend logic
- Add unmerge UI action and handler in the frontend ingestion view
- Fix bulk delete to also remove children of deleted root sources
- Update docs with new API operation and merging sources user guide
* code formatting
* Database migration file for enum `partially_active`
* Error handling improvement
* adding exports to backend package, page icons update
* Integrity report PDF generation
* Fixed inline attachment images not displaying in the email preview by modifying `EmailPreview.svelte`.
The email HTML references embedded images via `cid:` URIs (e.g., `src="cid:ii_19c6d5f8d5eee7bd6d91"`), but the component never resolved those `cid:` references to actual image data, even though `postal-mime` already parses inline attachments with their `contentId` and binary `content`.
The `emailHtml` derived value now calls `resolveContentIdReferences()` before rendering, so inline/embedded images display correctly in the iframe preview.
* feat: strip non-inline attachments from EML before storage
Add nodemailer dependency and emlUtils helper to remove non-inline
attachments from .eml buffers during ingestion. This avoids
double-storing attachment data since attachments are already stored
separately.
* upload error handing for file based ingestion
* Use Postgres for sync session management
* Google workspace / MS 365 duplicate check, avoid extra API call when previous ingestion fails
* OpenAPI specs for API docs
* code formatting
* ran duplicate check for IMAP import, optimize message listing
* Version update
* fix(api): correct API key generation and proxy handling
This commit resolves an issue where generating a new API key would fail. The root cause was improper handling of POST request bodies in the frontend proxy server.
- Refactored `ApiKeyController` methods to use arrow functions to ensure correct `this` binding.
* User profile/account page, change password, API
* docs(api): update ingestion source provider values
Update the `CreateIngestionSourceDto` documentation in `ingestion.md` to reflect the current set of supported providers.
* updating tag
* feat: add REDIS_USER env variable (#172)
* feat: add REDIS_USER env variable
fixes#171
* add proper type for bullmq config
* Bulgarian UI language strings added (backend+frontend) (#194)
* Bulgarian UI Support added
* BG language UI support - Create translation.json
* update redis config logic
* Update Bulgarian language setting, register language
* Allow specifying local file path for mbox/eml/pst (#214)
* Add agents AI doc
* Allow local file path for Mbox file ingestion
---------
Co-authored-by: Wei S. <5291640+wayneshn@users.noreply.github.com>
* feat(ingestion): add local file path support and optimize EML processing
- Frontend: Updated IngestionSourceForm to allow toggling between "Upload File" and "Local File Path" for PST, EML, and Mbox providers.
- Frontend: Added logic to clear irrelevant form data when switching import methods.
- Frontend: Added English translations for new form fields.
- Backend: Refactored EMLConnector to stream ZIP entries using yauzl instead of extracting the full archive to disk, significantly improving efficiency for large archives.
- Docs: Updated API documentation and User Guides (PST, EML, Mbox) to clarify "Local File Path" usage, specifically within Docker environments.
* docs: add meilisearch dumpless upgrade guide and snapshot config
Update `docker-compose.yml` to include the `MEILI_SCHEDULE_SNAPSHOT` environment variable, defaulting to 86400 seconds (24 hours), enabling periodic data snapshots for easier recovery. Shout out to @morph027 for the inspiration!
Additionally, update the Meilisearch upgrade documentation to include an experimental "dumpless" upgrade guide while marking the previous method as the standard recommended process.
* build(coolify): enable daily snapshots for meilisearch
Configure the Meilisearch service in `open-archiver.yml` to create snapshots every 86400 seconds (24 hours) by setting the `MEILI_SCHEDULE_SNAPSHOT` environment variable.
---------
Co-authored-by: Antonia Schwennesen <53372671+zophiana@users.noreply.github.com>
Co-authored-by: IT Creativity + Art Team <admin@it-playground.net>
Co-authored-by: Jan Berdajs <mrbrdo@gmail.com>
* fix(api): correct API key generation and proxy handling
This commit resolves an issue where generating a new API key would fail. The root cause was improper handling of POST request bodies in the frontend proxy server.
- Refactored `ApiKeyController` methods to use arrow functions to ensure correct `this` binding.
* User profile/account page, change password, API
* docs(api): update ingestion source provider values
Update the `CreateIngestionSourceDto` documentation in `ingestion.md` to reflect the current set of supported providers.