Commit Graph
248 Commits
Author SHA1 Message Date
furqan a383bd8704 Merge pull request 'azeem' (#72) from azeem into dev
Reviewed-on: https://gitea.maskantech.in/gitea_admin/pdf/pulls/72
2026-07-01 09:39:29 +00:00
azeeee05 90027823e4 chore: remove obsolete feature inventory documentationl 2026-07-01 15:07:38 +05:30
azeeee05 5b034c97b8 Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into azeem 2026-07-01 15:06:08 +05:30
azeeee05 bc3ed20a8b done the signature module 2026-07-01 15:05:37 +05:30
furqan abcd407c35 Merge pull request 'furqan' (#71) from furqan into dev
Reviewed-on: https://gitea.maskantech.in/gitea_admin/pdf/pulls/71
2026-06-30 15:49:48 +00:00
Furqan-14 56f538214f Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into furqan 2026-06-30 21:19:09 +05:30
Furqan-14 17023abf27 feat: updated text handling bugs 2026-06-30 21:18:46 +05:30
azeeee05 afa8c0a702 feat: implement PDF toolbar, viewer components, and redaction support layer 2026-06-30 11:32:15 +05:30
furqan 8d4fa109ff Merge pull request 'furqan' (#70) from furqan into dev
Reviewed-on: https://gitea.maskantech.in/gitea_admin/pdf/pulls/70
2026-06-29 05:23:56 +00:00
Furqan-14 bc92adfb0c Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into furqan 2026-06-29 10:51:23 +05:30
Furqan-14 3b1c36d645 fix: code refactor 2026-06-29 10:51:04 +05:30
furqan a434607276 Merge pull request 'furqan' (#69) from furqan into dev
Reviewed-on: https://gitea.maskantech.in/gitea_admin/pdf/pulls/69
2026-06-26 06:04:37 +00:00
Furqan-14 e795eed63e feat: updated font handling in older pdfs, along with tables 2026-06-26 11:33:28 +05:30
Furqan-14 52b45d82ea Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into furqan 2026-06-24 10:42:26 +05:30
Furqan-14 e6e1e0ba7c fix: font handling in revista 2026-06-24 10:42:05 +05:30
furqan 6b5c22130f Merge pull request 'saqib' (#68) from saqib into dev
Reviewed-on: https://gitea.maskantech.in/gitea_admin/pdf/pulls/68
2026-06-22 11:25:33 +00:00
saqib mir 23b162f3c2 create the api for the display list 2026-06-22 16:23:59 +05:30
saqib mir caf3feea15 fix 2026-06-22 15:24:05 +05:30
saqib mir d290e65685 Path construction interpreter (m l c re S f B) 2026-06-22 15:21:39 +05:30
furqan 0ce4759e20 Merge pull request 'fix: code cleanup' (#67) from furqan into dev
Reviewed-on: https://gitea.maskantech.in/gitea_admin/pdf/pulls/67
2026-06-22 09:50:27 +00:00
Furqan-14 e8620947a5 fix: code cleanup 2026-06-22 15:18:47 +05:30
furqan f1b427d66e Merge pull request 'saqib' (#66) from saqib into dev
Reviewed-on: https://gitea.maskantech.in/gitea_admin/pdf/pulls/66
2026-06-22 05:22:32 +00:00
saqib mir ac5a1cc516 Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into saqib 2026-06-22 10:48:57 +05:30
furqan f4c4fc08d8 Merge pull request 'furqan' (#65) from furqan into dev
Reviewed-on: https://gitea.maskantech.in/gitea_admin/pdf/pulls/65
2026-06-22 05:18:42 +00:00
Furqan-14 c0bcfe47a2 fix: additional font handling, with operators font issues 2026-06-22 10:48:00 +05:30
saqib mir e7fad0f09d Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into saqib 2026-06-22 10:18:00 +05:30
saqib mir e1e1c91736 fix the issue 2026-06-22 10:17:51 +05:30
saqib mir 8e9b0c8dfb test: verify image xobjects 2026-06-19 17:08:36 +05:30
Furqan-14 c4f5012351 Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into furqan 2026-06-18 18:25:11 +05:30
Furqan-14 c46b462dd0 feat: implemented multiple new fonts 2026-06-18 18:25:05 +05:30
furqan a14b09b8ac Merge pull request 'saqib' (#64) from saqib into dev
Reviewed-on: https://gitea.maskantech.in/gitea_admin/pdf/pulls/64
2026-06-18 12:32:58 +00:00
saqib mir 7e6e7ef32d Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into saqib 2026-06-18 17:31:53 +05:30
furqan d77437b966 Merge pull request 'furqan' (#63) from furqan into dev
Reviewed-on: https://gitea.maskantech.in/gitea_admin/pdf/pulls/63
2026-06-18 11:30:30 +00:00
Furqan-14 edb991606e Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into furqan 2026-06-18 17:00:00 +05:30
Furqan-14 0e028e870a fix: plans cleanup 2026-06-18 16:59:53 +05:30
furqan 686d82ef01 Merge pull request 'furqan' (#62) from furqan into dev
Reviewed-on: https://gitea.maskantech.in/gitea_admin/pdf/pulls/62
2026-06-18 11:19:25 +00:00
Furqan-14 c8ec1feb7f Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into furqan 2026-06-18 16:48:55 +05:30
Furqan-14 a124a43877 feat: implemented multi page reflow 2026-06-18 16:48:29 +05:30
saqib mir e677da3064 Image XObject handler (Do operator) update 2026-06-18 16:14:50 +05:30
saqib mir b3d3ac4469 Image XObject handler (Do operator) 2026-06-18 16:14:29 +05:30
furqan 661600075a Merge pull request 'furqan' (#61) from furqan into dev
Reviewed-on: https://gitea.maskantech.in/gitea_admin/pdf/pulls/61
2026-06-18 04:34:08 +00:00
Furqan-14 ff0962b111 Merge branch 'dev' of https://gitea.maskantech.in/gitea_admin/pdf into furqan 2026-06-18 10:03:25 +05:30
Furqan-14 bd6ba9205f fix: updated text reflow bugs 2026-06-18 10:03:10 +05:30
Furqan-14andClaude Opus 4.8 63369d4259 fix(reflow): wrapped bullet continuation got bullet-gap spacing instead of wrap spacing
buildBulletItem computed `leading` as the median over ALL paragraph line gaps. In a bullet list
the bullet-to-bullet gap (~14.2pt) is larger than the within-bullet wrap gap (~12.2pt) and dominates
the median, so a newly-wrapped continuation line was placed ~2pt too low (visible extra spacing
between e.g. the Architecture line and its "Design Patterns…" continuation).

Use the WRAP spacing instead: prefer the edited item's own internal line gap (if it already wraps),
then any hanging-continuation gap in the block, then the all-lines median, then font*1.2. Only
affects multi-line (wrapped) bullet items; single-line edits emit no continuation so are unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 21:40:59 +05:30
Furqan-14andClaude Opus 4.8 6edec0cf22 fix(reflow): inserted bullet text picked up the bold label font
Typing at a run boundary (e.g. near "Async" in a bullet) often lands the new text in a
browser-created wrapper element whose only child is that text. resolveStyleEl's sibling-only
search then found no data-fid run and fell back to dominantFid — which for a bullet is the bold
LABEL run (its first run) — so the inserted text rendered bold.

Make resolveStyleEl CLIMB toward the editor root and scan siblings at each level (nearest
preceding run first, then following), so it reaches the real run spans alongside the wrapper and
the inserted text continues the adjacent run's font. data-advances is still read only from the
exact wrapping span, so inherited fonts correctly re-measure. Text typed inside an existing run
is unaffected (step 1 returns its span immediately).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 20:49:30 +05:30
Furqan-14andClaude Opus 4.8 839add269a fix(reflow): center/right edits 422'd and silently reverted
Two bugs made centered/right-aligned heading edits vanish on commit:

1. Gateway: ReflowParagraphData.align was Literal["left","justify"], so a center/right reflow
   commit failed Pydantic validation -> 422 Unprocessable Entity. Widened to include
   "center","right" (matches the frontend + engine, which already handle them).

2. Frontend: gatewayService.applyEdits caught ALL errors (incl. HTTP 422/403/500) and returned
   fake success with a phantom `${documentId}_edited` id. The app then adopted that id and 404'd
   on every fetch, so the edit silently reverted instead of showing an error. Now only genuine
   network failures use the offline fallback; real HTTP errors throw the gateway's detail so the
   caller toasts a clear message and stays on the current document.

Gateway runs with --reload (auto-picks up the model change); frontend needs a refresh.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 20:37:18 +05:30
Furqan-14andClaude Opus 4.8 ddbafbcd43 fix(build): build_wasm.ps1 builds the real wasm-pdfium engine + deploys pdfium-engine.{mjs,wasm}
build_wasm.ps1 built the `wasm` STUB preset (PDFENGINE_WITH_PDFIUM=OFF, reflow #ifdef'd out)
and deployed it to the UNUSED pdfengine.{mjs,wasm}. The frontend actually loads
pdfium-engine.{mjs,wasm} (the `wasm-pdfium` preset). So "rebuild the WASM" silently shipped a
reflow-less stub to the wrong file — engine changes never reached the browser.

- Build the `wasm-pdfium` preset (PDFium ON) into pdfeng-build/wasm-pdfium (outside OneDrive).
- Deploy bin/pdfengine.{mjs,wasm} -> public/pdfium-engine.{mjs,wasm} (the rename the frontend expects).
- Set EMSDK_QUIET before sourcing emsdk_env.ps1 (its stderr tripped $ErrorActionPreference='Stop').
- Run a new pdfium-engine.smoke.mjs (buildInfo + live-preview exports) instead of pdfengine.test.mjs,
  which targets the stub facade (mock render / engineHasSkia / getDocumentFonts) and can't pass here.
- Relax EAP around the smoke node call so a real failure reports cleanly, not as NativeCommandError.
- pdfengine.test.mjs: de-brittle the buildInfo assertion (was pinned to a stale exact phrase).

Verified: scripts/build_wasm.ps1 runs green end-to-end and deploys pdfium-engine.wasm (md5 53d1ec9f).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 19:24:45 +05:30
Furqan-14andClaude Opus 4.8 aff19ac027 build(wasm): deploy the REAL pdfium-engine.wasm with reflow fixes (caret x0, center/right)
The live-preview engine the frontend loads is pdfium-engine.wasm, built by the
`wasm-pdfium` CMake preset (PDFENGINE_WITH_PDFIUM=ON). The reflow code is inside
`#ifdef PDFENGINE_WITH_PDFIUM`, so the `wasm` stub preset (PDFium OFF) — which
scripts/build_wasm.ps1 builds and copies to the UNUSED pdfengine.wasm — never
contained reflow at all. Result: every prior "WASM rebuilt" step updated the wrong,
reflow-less artifact, so the caret x0 fix (and center/right) never reached the browser.

Rebuilt the wasm-pdfium preset and deployed bin/pdfengine.{mjs,wasm} ->
public/pdfium-engine.{mjs,wasm} (md5 now 53d1ec9f, reflow object 631KB vs the 18KB
stub). Bumped the cache-buster so browsers fetch the new engine.

Engine .pyd + overlay-diff gate unchanged (1.70%/1.69%, render identical); the x0
change is caret-only metadata.

Follow-up: build_wasm.ps1 builds the wrong (stub) preset and deploys the wrong file.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 19:12:44 +05:30
Furqan-14andClaude Opus 4.8 62c4aed48c fix(reflow): caret lands on wrong char in centered/right headings
The reflow caret layout hardcoded x0 = columnLeft. That matched only left-aligned
lines; for the new center/right headings the line renders at a shifted x (e.g. a
centered title starts ~215pt while columnLeft is the page margin ~54pt), so the
frontend mapped clicks and drew the caret ~160pt off the actual glyphs.

Record the line's true starting x (after lineX/center/right) as x0 instead. x0 is
caret-only metadata read by the live editor — it does not affect glyph emission or
the rendered page, so output is unchanged (overlay-diff gate identical: 1.70%/1.69%,
STRESS PASS). Rebuilt .pyd + WASM; cache version bumped.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 18:10:19 +05:30
Furqan-14andClaude Opus 4.8 660649a562 fix(reflow): kill bulge/merge + font-change on edit; add center/right, IME; harden Raw Text
Reflow (primary editor):
- Geometric backstop in reflow_paragraph: adopt any text object fully inside the paragraph
  bbox that the model's objectIndices omitted (PDFium glyph->object map can return -1), so it's
  deleted + its original font is resolved. Fixes both the leftover-glyph "bulge/merge" and the
  font-substitution-on-edit (same root cause). No-op on correctly-indexed paragraphs (gate-proven
  byte-identical: overlay diff unchanged at 1.69%/1.70%).
- Preserve data-fid on edited contentEditable nodes (extractFlatRuns climbs to nearest styled
  ancestor / inherits from adjacent run) so edits keep their real font instead of the dominant.
- Converge preview & commit through one buildReflowData (no preview-OK/commit-wrong drift).
- Center/right alignment: additive emission branch (greedy path only) + heading-align inference.
- IME composition handling (suppress render mid-composition; don't commit on composing Enter).
- Fix WASM document-handle leak (free superseded versions on documentId change/unmount).
- Quiet the backstop instrumentation (warn -> debug) now the root cause is confirmed.

Raw Text / StreamEditor (beta companion):
- Permission-gate both text_objects endpoints behind canModify; label tool "(beta)".
- P1a: preserve TJ kerning numbers for same-length edits (redistribute into original slots),
  fall back to single-string collapse otherwise (never worse than before).
- P1b: reject edits with characters unencodable in the run's font (clear 400 instead of corruption).
- P2a: commit Raw Text edits as a new document version (add_document) and adopt the id via
  pushHistory, so they join undo/redo instead of mutating in place.
- P2b: exact hit-boxes from real font metrics (re-measured once @font-face loads).

WASM preview rebuilt with the reflow changes; cache version bumped.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 17:12:53 +05:30