Feature checklist

Quirewright 0.1.0 · updated 2026-10-03

What people expect from a desktop PDF editor, and where this project stands. Checked items are implemented and covered by tests.

Viewing & navigation

  • ✓ Open PDFs (including password-protected), drag-and-drop, recent files
  • ✓ Zoom (in/out/fit page/fit width/actual size, Ctrl+wheel), pan (Hand tool, middle mouse)
  • ✓ Page thumbnails with multi-select and drag-to-reorder
  • ✓ Go to page by number, first/previous/next/last
  • ✓ Outline (bookmarks) panel with add/rename/delete
  • ✓ Find text (Ctrl+F) with hit highlighting and next/previous across pages
  • ✓ Light and dark themes, system theme detection
  • ✓ Welcome screen when no document is open
  • ✓ Continuous (multi-page) scrolling view (single-page mode available)
  • ✓ Tabs for several open documents

Content editing (Inkscape-like)

  • ✓ Select objects on the rendered page (click, Shift+click, rubber band)
  • ✓ Move, resize with handles, rotate, exact geometry in the Inspector
  • ✓ Edit path nodes and bezier handles
  • ✓ Fill / stroke colour, stroke width, toggle fill or stroke
  • ✓ Edit text in place (whole visual line), size, colour; font substitution when glyphs are missing
  • ✓ Draw rectangles, ellipses, lines, polylines; add text; insert images
  • ✓ Duplicate, bring to front / send to back, flip horizontal / vertical
  • ✓ Align (left/centre/right/top/middle/bottom) and distribute multiple objects
  • ✓ Copy selected text to the clipboard
  • ✓ Nudge with arrow keys, delete, undo/redo for everything
  • ✓ Multi-line text boxes with wrapping; paragraph editing with re-wrap
  • ✓ Curves in the Pen tool (click-drag for handles)
  • ✓ Grouping (as form XObjects) and editing inside any form XObject, nested
  • ✓ Snapping to page, objects, guides and grid; rulers; draggable guides

Pages

  • ✓ Rotate, delete, duplicate, move, reverse order
  • ✓ Insert blank pages (paper sizes) or pages from another PDF (ranges)
  • ✓ Extract pages to a file, split document into chunks
  • ✓ Crop by margins, crop to a dragged rectangle, reset crop
  • ✓ Add page numbers (position, format, start value, range)
  • ✓ Add a text watermark (opacity, rotation, size, colour)
  • ✓ Export a page as PNG / JPEG / SVG
  • ✓ Page labels (roman numerals, letters, prefixes)
  • ○ N-up / booklet imposition

Forms

  • ✓ Create text fields, checkboxes, radio buttons, dropdowns, list boxes, push buttons
  • ✓ Move, resize, delete fields; edit name, value, options, fonts, colours, flags
  • ✓ Fill forms (set values)
  • ✓ Flatten forms and annotations into page content
  • ✓ Radio buttons (shared name = group; created via a checkbox workaround for a PyMuPDF limitation)
  • ✓ Calculation, format and validation scripts (Acrobat-compatible), evaluated locally for preview

Annotations (comments)

  • ✓ Highlight, underline, strike-out text (drag over words)
  • ✓ Sticky notes with editable contents and colour
  • ✓ Select, move (notes), delete annotations; flatten
  • ○ Free-hand ink, shapes, free text, stamps, replies

Document

  • ✓ Metadata editing (title, author, subject, keywords, creator, producer, dates)
  • ✓ Security: set user/owner passwords, permissions, AES-256; remove security
  • ✓ Resources browser: images, fonts, attachments — extract any of them
  • ✓ Attach files to the document, remove attachments
  • ✓ Reduce file size (garbage collection, stream compression, image recompression)
  • ✓ Redact an area (removes underlying text and images)
  • ✓ Print
  • ✓ Digital signatures: sign with PKCS#12 certificates (invisible, visible stamp, or existing field), create self-signed certificates, verify signatures, personal trust store
  • ✓ OCR via Tesseract (invisible text layer)

Quality of life

  • ✓ Keyboard shortcuts for every tool; shortcut reference dialog; in-app help viewer (F1)
  • ✓ Preferences: theme, units (pt / mm / in), stroke scaling
  • ✓ Status bar hints per tool, unsaved-changes guard, save-in-place safety (atomic write)
  • ✓ Desktop integration files (launcher, icon); AppImage and Flatpak packaging; CI with lint and cross-platform tests
  • ○ Autosave / crash recovery
  • ✓ Localisation (gettext; complete German, French and Spanish catalogues; Qt dialog translations)