Skip to content

Papra changelog

Here are the changelogs of the docker images released by Papra.
For version after v0.9.6, Papra uses Calver as a versioning system with the format YY.MM.N where N is the number of releases in the month starting at 0 (e.g. 25.06.0 is the first release of June 2025).

v26.0.0

  • API Breaking Change: Document search endpoint now returns complete documents along with total count matching the search query, and no longer nests results under searchResults.

    Before:

    // GET /api/organizations/:organizationId/documents/search?searchQuery=foobar
    {
      searchResults: {
        documents: [
          { id: 'doc_1', name: 'Document 1.pdf' },
          { id: 'doc_2', name: 'Document 2.pdf' },
        ],
      },
    }
    

    After:

    // GET /api/organizations/:organizationId/documents/search?searchQuery=foobar
    {
      documents: [
        { id: 'doc_1', name: 'Document 1.pdf', mimeType: 'application/pdf' /* ...otherProps */ },
        { id: 'doc_2', name: 'Document 2.pdf', mimeType: 'application/pdf' /* ...otherProps */ },
      ],
      totalCount: 42,
    }
    
  • Added a "Show more results" option in quick search when there is more document not displayed

  • Improved search speed by using document and organization ids in index The first restart after updating may take up to few minutes as the search index is rebuilt

  • The documents page can now be used with advanced search queries

  • Auto assign admin role to the first user registering

  • Added about page and modal with version informations

  • Added a dedicated increased timeout for the document upload route

  • Added a feedback message upon request timeout

  • Added support for two factor authentication

  • Organizations listing and details in the admin dashboard

  • Added advanced search syntax support

  • Properly cleanup orphan file when the same document exists in trash

  • Added query params sync for the search query in the documents search page for deep linking and browser state navigation

  • Removed the possibility to filter by tag in the /api/organizations/:organizationId/documents route, use the /api/organizations/:organizationId/documents/search route instead.

    # Before:
    GET /api/organizations/:organizationId/documents?tags=yourTagId
    
    # After:
    GET /api/organizations/:organizationId/documents/search?query=tag:yourTagNameOrId
    
  • Changed config key config.server.routeTimeoutMs to config.server.defaultRouteTimeoutMs (env variable remains the same)

  • Added api endpoint to check current API key (GET /api/api-keys/current)

v25.12.0

v25.11.0

v25.10.2

v25.10.1

v25.10.0

v0.9.6

v0.9.5

v0.9.4

v0.9.3

  • Added the possibility to define patterns for email intake username generation

  • Split the intake-email username generation from the email address creation, some changes regarding the configuration when using the random driver.

    # Old configuration
    INTAKE_EMAILS_DRIVER=random-username
    INTAKE_EMAILS_EMAIL_GENERATION_DOMAIN=mydomain.com
    
    # New configuration
    INTAKE_EMAILS_DRIVER=catch-all
    INTAKE_EMAILS_CATCH_ALL_DOMAIN=mydomain.com
    INTAKE_EMAILS_USERNAME_DRIVER=random
    
  • Added the possibility to configure OwlRelay domain

v0.9.2

v0.9.1

v0.9.0

v0.8.2

v0.8.1

v0.8.0

v0.7.0

v0.6.4

v0.6.3

v0.6.2

v0.6.1

v0.6.0

v0.5.1

v0.5.0

v0.4.0