github papra-hq/papra @papra/app@26.2.0

7 hours ago
  • #894 77186da Thanks @CorentinTh! - Added a "Open with..." button for documents along with a complete PDF viewer page with standard features such as thumbnails, outline, attachments, and document properties.

  • #820 3fa398c Thanks @CorentinTh! - Replaced date-fns functions with in-house implementations to avoid pulling the 30MB lib (mainly due to locale data).

  • #852 71872db Thanks @CorentinTh! - Added explicit error when trying to update a tag with a name that already exists

  • #827 ca2ef28 Thanks @CorentinTh! - In the search queries, tag filters are now case-insensitive, so tag:Important and tag:important will match the same tag (as tags names are case-insensitive).

  • #883 63ddecf Thanks @CorentinTh! - Synchronized pagination state in the URL on the documents list page.

  • #826 494aa5b Thanks @CorentinTh! - Trim tag names and descriptions on creation and update to avoid leading/trailing spaces.

  • #829 393a155 Thanks @CorentinTh! - Added a button to generate a random color in the tag creation/edition modal.

  • #810 1d5ada8 Thanks @What-is-water93! - Significantly reduced the size of the rootless docker image by preventing file duplications due to chown operations, gaining ~230MB, more than 30% reduction in size.

  • #900 9058f9e Thanks @CorentinTh! - Added an option to limit the number of tags that can be created in an organization, defaulting to 200. Configurable via the MAX_TAGS_PER_ORGANIZATION environment variable.

  • #884 4c7da4b Thanks @CorentinTh! - Excluded Synology specific files for the ingestion folder

  • #896 fdd955e Thanks @CorentinTh! - Coerce MIME type of intake email attachments when declared as application/octet-stream or empty, using magic bytes detection with extension-based fallback.

  • #859 afcfcf7 Thanks @CorentinTh! - Fixed a race condition that could incorrectly show the "Email verified" page after successful login, even when email verification had not been completed or was not required.

  • #870 69633fb Thanks @CorentinTh! - Improved the document tag picker UI and UX, allowing tags to be managed from the document list.

  • #855 3f4ca07 Thanks @CorentinTh! - Added tagging rules creation/update loading states

  • #880 4f5b29b Thanks @CorentinTh! - Removed misleading "git missing" error log on app startup when git isn't available, like in Docker env.

  • #822 b6951ea Thanks @CorentinTh! - Tag names uniqueness enforced with case insensitivity per organization. Migration will ensure deduplication by appending prefixes in case of existing collisions.

  • #811 1eeb3df Thanks @CorentinTh! - Added small header in organization creation page to quickly access the invitations when first organization is being created

  • #903 d13c74f Thanks @CorentinTh! - The command palette state no longer resets when opening it, allowing to keep the search query and results when closing and reopening it.

  • #851 316a8c2 Thanks @CorentinTh! - Added tag creation/update button loading state

  • #892 1c1d273 Thanks @CorentinTh! - Enforced the length of the intake email webhook secret (INTAKE_EMAILS_WEBHOOK_SECRET) to be between 16 and 128 characters to match the OwlRelay API validation requirements.

  • #855 3f4ca07 Thanks @CorentinTh! - Prevented multiple tagging-rules creation attempts when clicking the create button quickly.

  • #851 316a8c2 Thanks @CorentinTh! - Prevented multiple tag creation attempts when clicking the create button quickly.

  • #899 d1eae05 Thanks @CorentinTh! - Api breaking change: removed the /api/organizations/:organizationId/documents/search endpoint in favor of the existing /api/organizations/:organizationId/documents with an optional searchQuery query parameter.
    The new /api/organizations/:organizationId/documents endpoint now behave as the old /search endpoint, with all documents being returned when searchQuery is empty. Note that the response field totalCount of the old /search endpoint has been renamed to documentsCount in the new endpoint.

    Before:

    GET /api/organizations/:organizationId/documents/search?searchQuery=invoice&pageIndex=1&pageSize=20
    Response: {
      documents: Document[];
      totalCount: number;
    }
    
    GET /api/organizations/:organizationId/documents?pageIndex=1&pageSize=20
    Response: {
      documents: Document[];
      documentsCount: number;
    }
    

    After:

    GET /api/organizations/:organizationId/documents?searchQuery=invoice&pageIndex=1&pageSize=20
    Response: {
      documents: Document[];
      documentsCount: number;
    }
    
  • #893 0c62716 Thanks @CorentinTh! - Security fix: prevented unauthorized listing to organization tags and webhooks. An authenticated user could list the tags and webhooks of an organization they are not a member of by sending requests to the corresponding endpoints by knowing the organization ID. Credit to Sergio Cabrera, security researcher, for responsibly disclosing this vulnerability.

Important

Support Papra's development
Papra is looking for sponsors to help fund the development and ensure the sustainability of the project. If you find Papra useful and want to support its development, please consider becoming a sponsor, even a small contribution can make a big difference. Company or organization can get in touch for sponsorship opportunities, like visibility benefits or custom partnerships.

Don't miss a new papra release

NewReleases is sending notifications on new releases.