Commit Graph
3838 Commits
Author SHA1 Message Date
mtlcl410andClaude Opus 5.5 c2251a4e16 M5: a pop-up /Rect too large for f32 reads as no pop-up; reversed corners are tested (#2137 review)
A file's huge number became infinite as f32 and reached the window's
place. Both readers (annot summaries and the render inspector) now take
such a rectangle as no pop-up, as one that isn't four numbers; opening it
gives it a new place. Reversed corners were already put in order; tests
now cover both, read from a file and saved through set_popup.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pq7HyCfwzyRXj4VfQAVVdv
2026-11-01 16:38:13 +08:00
mtlcl410andClaude Opus 5.5 b115a8a098 M5: test that closing a pop-up saves its typed text (#2137 review)
Text typed into a pop-up's box and not yet saved is saved when the window's
x is clicked: the click takes the focus from the box and closes the window
in one frame, as one undo step.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pq7HyCfwzyRXj4VfQAVVdv
2026-11-01 10:33:48 +08:00
mtlcl410andClaude Opus 5.5 f508fdf053 M5: pop-up rectangles read alike, edits in one frame kept, pop-up drafts follow their comment (#2137 review)
- The render path reads a pop-up as none unless its /Rect is four numbers,
  as pdfcraft_annot::summaries does; set_popup gives a comment's own pop-up
  without one the place a new pop-up gets, so opening it shows it again.
- The composer's edit and a pop-up's, landing in one frame, are queued
  together in one batch instead of the pop-up's replacing the composer's.
- A pop-up's unsaved text, reply draft, drag and resize follow their comment
  when a deletion moves it, are dropped on undo/redo, and are dropped after
  any other edit that leaves their (page, index) naming another comment
  (pages moved, inserted or deleted).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pq7HyCfwzyRXj4VfQAVVdv
2026-11-01 10:22:55 +08:00
mtlcl410andClaude Opus 5.5 b1c2c4cafe M5: comment pop-up windows laid out as reply threads, fixed in size, scrolling and resizable (comment.popups)
The pop-up window now reads as the common readers' do:

- a one-line title bar with the comment's kind and author, its date and x,
  in the comment's colour; the body in a lighter tint, with fixed ink so it
  reads in either app theme;
- the comment's text, and each reply's, in a box typed in place;
- the replies as panels in thread order, each inside the panel of the reply
  it answers (/IRT), nesting at most eight deep;
- a Reply button under the comment and each reply, opening a box that
  answers that comment or reply (Enter starts a new line; Post or
  Ctrl/Cmd+Enter posts; Cancel closes it).

The window keeps the size of its pop-up's /Rect in points on screen as the
page zooms, instead of growing with the zoom; the text and replies scroll
inside it, with a scroll bar shown whenever there is more. Dragging its
lower right corner resizes it; the new size is saved as the pop-up's /Rect,
the window's upper left corner kept in place on screen (on a page turned a
quarter too), in one undo step. A /Rect with non-finite numbers gives the
least size.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pq7HyCfwzyRXj4VfQAVVdv
2026-11-01 09:16:30 +08:00
mtlcl410andClaude Opus 5.5 1b9930e612 M5: a comment's connector is a faint wedge to its pop-up (comment.connector-lines)
The connector from a comment to its open pop-up window was a one-pixel line.
It is now a faint wedge in the comment's colour: a point on the comment's
edge nearest the window, widening to a base on the window's side that faces
the comment, as the common readers draw it. Shown, as before, while the
pointer is on the comment or the window, or the comment is selected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pq7HyCfwzyRXj4VfQAVVdv
2026-11-01 09:16:03 +08:00
mtlcl410andClaude Opus 5.5 002b7bf4ff M5: opening, closing or moving a pop-up keeps the page's raster (#2137)
Review on #2137 (nitpick): a SetAnnotationPopup edit marked its page
stale, so its tiles were rendered again, its text cache dropped and its
selection cleared, though nothing in the raster changes: the window is
drawn over the page and a /Popup annotation paints nothing. Edits that
also change the comment (a batch) still invalidate as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pq7HyCfwzyRXj4VfQAVVdv
2026-11-01 09:16:03 +08:00
mtlcl410andClaude Opus 5.5 6aea7318f3 M5: comment.connector-lines cites a test that reads the painted line (#2137)
Review on #2137: the cited test opened, moved and closed a pop-up but
never looked at the connector line. The new test reads the frame's
shapes: a line in the comment's colour from the comment's edge to the
window's, nearest points at each end, shown with the pointer on the
comment or the window or with the comment selected, and not otherwise.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pq7HyCfwzyRXj4VfQAVVdv
2026-11-01 09:16:03 +08:00
mtlcl410andClaude Opus 5.5 65eb3257c5 M5: a pop-up is its comment's when /Annots lists the comment through a reference to it (#2137)
Review on #2137: when /Annots holds 5 0 R and object 5 is only a
reference to the comment 6 0 R, the pop-up's /Parent names 6 0 R, but
the ownership check compared it with 5 0 R. The comment's pop-up was
then missing from both the on-open listing (render inspect) and the
summaries after an edit (annot). Both now compare the references they
resolve to.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pq7HyCfwzyRXj4VfQAVVdv
2026-11-01 09:16:03 +08:00
mtlcl410andClaude Opus 5.5 45f5a3c591 M5: a pop-up reads its thread by /IRT reference, as the Comments panel does (#2137)
Rebased onto main's reference-based threading (#4061, #4566). The pop-up
matched replies by /NM (in_reply_to == name), which need not be unique:
two notes sharing PyMuPDF's fitz-A0 both showed one note's replies, and a
reply to a reply was missing. It now files replies under a comment with
thread_tops over the settled parent links, as comments_panel does, and
has_popup asks Annotation::is_comment rather than in_reply_to (a reply
whose parent has no /NM read as a comment of its own).

Regression test a_pop_up_lists_its_replies_by_reference_when_names_repeat,
seen to fail with the /NM filter restored.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0175FWj4xFhMhSH3UpMU8DSC
2026-11-01 09:16:03 +08:00
mtlcl410andClaude Opus 5.5 34871b61a5 M5: Catalan, Finnish and Romanian for the pop-up undo labels (#2137)
These catalogues were added on main after this branch began. AI-assisted,
marked as not reviewed by a native speaker.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pq7HyCfwzyRXj4VfQAVVdv
2026-11-01 09:16:03 +08:00
mtlcl410andClaude Opus 5.5 479390cd50 M4: a pop-up lists a comment's text replies, not its status or checkmark replies (#2137)
The pop-up's reply list kept every annotation in reply to the comment,
so a review status (/StateModel /Review) and the private checkmark reply
Mark writes (/StateModel /Marked) showed as replies with their generated
text. It now lists replies without a /State, as the Comments panel does
(comments_panel.rs).

Raised by CodeRabbit on #2137.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R3niW7kVeT8mi7TpWc8eAJ
2026-11-01 09:16:03 +08:00
mtlcl410andClaude Opus 5.5 a7fd7f27ae M4: a pop-up counts as a comment's only when it is a pop-up of that comment (#2137)
Review on #2137. set_popup accepted a pop-up whose /Parent was present but
not a reference, and the comment list (pdfcraft_annot::summaries and the
inspector) reported whatever /Popup named: another annotation's rectangle
and open state. One check, own_popup, now decides for both: /Subtype
/Popup, and /Parent absent or a reference to the comment (ISO 32000-2:2020
12.5.6.14, Table 186: "Optional; shall be an indirect reference").

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Gv2WwdgjmBz33GWkwgNn3Q
2026-11-01 09:16:03 +08:00
mtlcl410andClaude Opus 5.5 7a916ae703 M6: pop-ups: a /Popup that isn't the comment's own is replaced, edits follow comment permission, selected markup shows its connector
Review follow-ups on #2137.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Gv2WwdgjmBz33GWkwgNn3Q
2026-11-01 09:16:03 +08:00
mtlcl410andClaude Fable 5.1 d1e1357775 M5: comment pop-up windows on the page, with connector lines
A double-click on a comment opens its pop-up window as in Acrobat:
author, date, the text edited in place, the replies; the title bar
drags it, x closes it, each an undo step saved in /Popup (/Open, /Rect)
and a note's own /Open. A connector line in the comment's colour joins
the comment to its open window on roll-over or selection. comment_popup
does the same headlessly; comment_list reports the pop-up. Three undo
labels in 22 catalogues (Vietnamese included).

Ported onto main's split modules: set_popup lives in annot's modify.rs
and PopupInfo in info.rs; the pop-up windows are their own module,
ui-egui tools/comments/popups.rs, listed with the page modules that
read the pointer and set the cursor themselves; the hover tip filter is
in comments::describe. PageCx's pointer and redaction look, the
tests/it evidence paths and the Annotation test fixtures follow main
(formerly fcd33e131, c68e5d902, 0a7fb530b, 8af2c338e, 345c1573d), and
labels are logical text now that egui shapes bidi itself.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pq7HyCfwzyRXj4VfQAVVdv
2026-11-01 09:16:02 +08:00
FredApps eea00a6186 Merge pull request #2088 from srt8hellcat2-ui/fix/1577-optional-page-edge-shadows-integration
M3: Add optional page-edge shadows setting (fixes #1577)
2026-10-31 23:42:20 +01:00
FredApps f2e1a8ce29 Merge branch 'main' into fix/1577-optional-page-edge-shadows-integration 2026-10-31 23:38:40 +01:00
FredApps a471cb1664 Merge pull request #1433 from srt8hellcat2-ui/feature/two-paged-cli-1354
M3: add optional --two-paged CLI flag (fixes #1354)
2026-10-31 23:35:31 +01:00
FredApps 19c96011b2 Merge pull request #2212 from srt8hellcat2-ui/feat/license-check-stage1
Add automated licensing validation for bundled assets (#2175)
2026-10-31 23:27:03 +01:00
FredApps 2e853c5fe0 Merge pull request #4279 from srt8hellcat2-ui/fix-3407-rewrite-after-page-delete
Rewrite an unsigned file in full when saving after deleting pages
2026-10-31 23:24:48 +01:00
FredApps 9af62ceb38 Isolate UI frame-budget measurements under nextest 2026-10-31 23:07:05 +01:00
Combiler01 b77699a22b test(optimize): accept Flate or CCITT compression in monochrome scan test 2026-10-31 22:50:50 +01:00
Combiler01 af03f08494 test(optimize): accept Flate or CCITT compression in monochrome scan test 2026-10-31 22:50:50 +01:00
Combiler01 0475725247 test(optimize): accept Flate or CCITT compression in monochrome scan test 2026-10-31 22:50:50 +01:00
Combiler01 9a655ddb2d test(optimize): accept Flate or CCITT compression in monochrome scan test 2026-10-31 22:50:50 +01:00
FredApps e5f21f2dbb Keep licensing checks below the current complexity gate 2026-10-31 22:26:16 +01:00
FredApps 1d5ce9d7a9 Update shadow regression wheel events and retain upstream parity notes 2026-10-31 22:26:16 +01:00
FredApps fdcf66d5f6 Apply licensing validation to newly added upstream Lucide icons 2026-10-31 22:16:52 +01:00
FredApps 50780519e3 Merge current main into PR2212 and reconcile license inventory and shared CI 2026-10-31 22:14:35 +01:00
FredApps bad4c81800 Merge current main into PR2088 and port shadow preference to split UI modules 2026-10-31 22:13:25 +01:00
FredApps 286a3c6eee Merge current main into PR1433 and preserve launch override across module splits 2026-10-31 22:12:05 +01:00
FredApps 7165ff1ace Merge current main into PR4279 and retain unsigned delete-save policy 2026-10-31 22:09:56 +01:00
Dylan M. Taylor 13655d0992 packaging(flatpak): add OCI image build and GHCR publishing helper (#5526) 2026-10-31 15:33:25 -04:00
Dylan M. Taylor f137a289ba Merge pull request #5522 from aiongg/docs-tidy
docs: tidy agent, contributor and asset docs
2026-10-31 01:06:25 -04:00
Dylan M. Taylor 4a5f9ced2d Merge pull request #5527 from aiongg/update-result-dialog
Updates: shared check-result dialog from craft-update
2026-10-31 01:05:42 -04:00
aiongg 635a840164 updates: show check results with craft-update's CheckResultDialog 2026-10-31 04:43:07 +00:00
aiongg da4cc2c145 docs: tidy wording 2026-10-31 04:25:36 +00:00
aiongg 44ddb348a9 docs: tidy agent, contributor and asset docs 2026-10-31 04:17:20 +00:00
Brandon ThomasandClaude Opus 5.5 24bb85308e Release 0.16.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.16.1
2026-10-30 23:25:37 -04:00
Brandon ThomasandClaude Opus 5.5 35c187ff19 Flatpak bundle: skip the debuginfo pass manifest-wide (runner has no eu-strip)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 23:25:35 -04:00
Brandon ThomasandClaude Opus 5.5 8f16855097 Release 0.16.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 23:22:57 -04:00
Brandon ThomasandClaude Opus 5.5 4b70916883 Flatpak bundle: skip the debuginfo pass for cups-client (runner has no eu-strip)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 23:22:50 -04:00
skylar taylor-barrick 65ff3a00c0 Merge pull request #4172 from songzhihui/fix/windows-cjk-viewer
M2: continue CJK viewer fallback for Windows GBK PDFs
2026-10-30 18:45:08 -06:00
Dylan M. Taylor ec33924e80 fix(flatpak): allow reading launcher version pins (#5490)
* fix(flatpak): allow reading launcher version pins

* fix(flatpak): allow reading launcher version pins
2026-10-30 20:12:04 -04:00
songzhihui a57095c872 M2: assert exact GBK glyph rasters for installed Chinese families 2026-10-31 01:39:00 +08:00
songzhihui 9447cdc810 M2: merge main and resolve CJK viewer integration conflicts 2026-10-31 01:14:02 +08:00
skylar taylor-barrick fa5f9f8c3b Merge pull request #5426 from FredApps/chore/parity-integration-20261030
Integrate 27 reviewed PDF editing, forms and optimizer PRs
2026-10-30 09:24:25 -06:00
FredApps 6772772440 test: accept preserved CCITT filter arrays in lossless regression 2026-10-30 15:52:18 +01:00
FredApps 7fe33d1cbd test: verify conservative review fixes across rendering and automation 2026-10-30 15:32:44 +01:00
FredApps 4791cacd2c test: qualify conservative tone retention and format review regressions 2026-10-30 14:55:44 +01:00
FredApps d7f3e67141 fix: bound backdrop edits and withhold unsafe integration behavior 2026-10-30 14:45:50 +01:00