Compare commits

..
6 Commits
Author SHA1 Message Date
alam00000 f638f8e4db Release v2.8.11 2026-10-31 16:50:27 +05:30
Alam 24b060a134 Merge pull request #919 from kelseyjmw/fix-crop-scroll
Fix crop scroll
2026-10-31 16:38:58 +05:30
alam00000 6dca41aeb4 revert ICLA.md changes 2026-10-31 16:26:50 +05:30
alam00000 2a8ce12b6e add support for GFM inline math delimiters 2026-10-31 16:16:23 +05:30
Kelsey White a25c6511ce Signed ICLA.md 2026-10-16 13:19:17 -03:00
Kelsey White 6d8ef7d694 Fix for issue 903: Crop tool now moves page focus to top after use 2026-10-16 13:09:32 -03:00
7 changed files with 2038 additions and 1652 deletions

No files matched your search

+2 -2
View File
@@ -7,10 +7,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.0.9
version: 1.0.10
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: '2.8.10'
appVersion: '2.8.11'
+1956 -1598
View File
File diff suppressed because it is too large. Load diff
+50 -50
View File
@@ -1,7 +1,7 @@
{
"name": "bento-pdf",
"private": true,
"version": "2.8.10",
"version": "2.8.11",
"license": "AGPL-3.0-only",
"type": "module",
"scripts": {
@@ -44,44 +44,44 @@
},
"devDependencies": {
"@eslint/js": "^10.0.1",
"@testing-library/dom": "^10.4.2",
"@testing-library/dom": "^10.4.1",
"@types/blob-stream": "^0.1.33",
"@types/html2canvas": "^1.0.0",
"@types/pdfkit": "^0.17.7",
"@types/pdfkit": "^0.17.5",
"@types/sortablejs": "^1.15.8",
"@types/utif": "^3.0.6",
"@vitejs/plugin-basic-ssl": "^2.3.0",
"@vitest/coverage-v8": "^5.0.5",
"@vitest/ui": "^5.0.5",
"eslint": "^10.13.0",
"@vitejs/plugin-basic-ssl": "^2.1.4",
"@vitest/coverage-v8": "^4.0.18",
"@vitest/ui": "^4.0.18",
"eslint": "^10.0.2",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-no-unsanitized": "^4.1.5",
"eslint-plugin-security": "^4.2.0",
"globals": "^17.13.0",
"eslint-plugin-security": "^4.0.0",
"globals": "^17.4.0",
"husky": "^9.1.7",
"jsdom": "^30.1.3",
"lint-staged": "^17.6.0",
"marked": "^18.1.2",
"prettier": "^3.9.10",
"typescript": "~7.0.2",
"typescript-eslint": "^8.72.1",
"jsdom": "^28.1.0",
"lint-staged": "^16.3.1",
"marked": "^16.4.2",
"prettier": "^3.8.1",
"typescript": "~5.9.3",
"typescript-eslint": "^8.56.1",
"vite": "^8.3.5",
"vite-plugin-handlebars": "^2.0.0",
"vite-plugin-node-polyfills": "^0.28.0",
"vite-plugin-node-polyfills": "^0.26.0",
"vitepress": "^1.6.4",
"vitest": "^5.0.5",
"vitest": "^4.0.18",
"vue": "^3.5.29"
},
"dependencies": {
"@fontsource/cedarville-cursive": "^5.3.0",
"@fontsource/dancing-script": "^5.3.0",
"@fontsource/dm-sans": "^5.3.0",
"@fontsource/great-vibes": "^5.3.0",
"@fontsource/kalam": "^5.3.0",
"@fontsource/lato": "^5.3.0",
"@fontsource/merriweather": "^5.3.0",
"@kenjiuno/msgreader": "^1.29.0",
"@matbee/libreoffice-converter": "^2.7.2",
"@fontsource/cedarville-cursive": "^5.2.7",
"@fontsource/dancing-script": "^5.2.8",
"@fontsource/dm-sans": "^5.2.8",
"@fontsource/great-vibes": "^5.2.8",
"@fontsource/kalam": "^5.2.8",
"@fontsource/lato": "^5.2.7",
"@fontsource/merriweather": "^5.2.11",
"@kenjiuno/msgreader": "^1.28.0",
"@matbee/libreoffice-converter": "^2.5.0",
"@mdit/plugin-abbr": "^1.1.3",
"@mdit/plugin-anchor": "^2.2.3",
"@mdit/plugin-dl": "^1.1.3",
@@ -96,56 +96,56 @@
"@neslinesli93/qpdf-wasm": "^0.3.0",
"@pdf-lib/fontkit": "^1.1.1",
"@phosphor-icons/web": "^2.1.2",
"@retejs/lit-plugin": "^2.0.8",
"@tailwindcss/vite": "^4.3.3",
"@retejs/lit-plugin": "^2.0.7",
"@tailwindcss/vite": "^4.2.1",
"@types/node-forge": "^1.3.14",
"@types/papaparse": "^5.5.2",
"archiver": "^8.0.0",
"archiver": "^7.0.1",
"bentopdf-pdfium": "file:vendor/bentopdf-pdfium/bentopdf-pdfium-3f6b6114b166.tgz",
"bentopdf-viewer": "file:vendor/bentopdf-viewer/bentopdf-viewer-3f6b6114b166.tgz",
"blob-stream": "^0.1.3",
"bwip-js": "^4.11.4",
"cropperjs": "^2.3.1",
"diff": "^9.0.0",
"bwip-js": "^4.8.0",
"cropperjs": "^1.6.2",
"diff": "^8.0.3",
"dompurify": "^3.4.17",
"fast-xml-parser": "^5.11.2",
"fast-xml-parser": "^5.7.1",
"heic2any": "^0.0.4",
"highlight.js": "^11.12.0",
"html2canvas": "^1.4.1",
"hyper-compress-wasm": "file:vendor/hyper-compress-wasm/hyper-compress-wasm-1.0.3.tgz",
"i18next": "^26.5.11",
"i18next-browser-languagedetector": "^8.2.3",
"i18next-http-backend": "^4.0.6",
"i18next": "^25.8.13",
"i18next-browser-languagedetector": "^8.2.1",
"i18next-http-backend": "^4.0.2",
"jspdf": "^4.2.1",
"jspdf-autotable": "^5.0.9",
"jszip": "^3.10.2",
"jspdf-autotable": "^5.0.2",
"jszip": "^3.10.1",
"katex": "^0.19.1",
"lit": "^3.3.3",
"lucide": "^1.63.0",
"lit": "^3.3.2",
"lucide": "^0.575.0",
"markdown-it": "^15.0.3",
"markdown-it-table-of-contents": "^1.2.0",
"mermaid": "^12.2.0",
"microdiff": "^1.6.0",
"microdiff": "^1.5.0",
"node-forge": "^1.4.0",
"papaparse": "^5.7.0",
"papaparse": "^5.5.3",
"pdf-lib": "^1.17.1",
"pdfjs-dist": "^6.4.299",
"pdfkit": "^0.20.2",
"pixelmatch": "^8.0.0",
"postal-mime": "^4.1.4",
"pdfjs-dist": "^5.4.624",
"pdfkit": "^0.17.2",
"pixelmatch": "^7.1.0",
"postal-mime": "^2.7.3",
"rete": "^2.0.6",
"rete-area-plugin": "^2.3.2",
"rete-area-plugin": "^2.1.5",
"rete-connection-plugin": "^2.0.5",
"rete-engine": "^2.1.1",
"rete-render-utils": "^2.0.3",
"sortablejs": "^1.15.7",
"tailwindcss": "^4.1.14",
"terser": "^5.51.2",
"terser": "^5.46.0",
"tesseract.js": "^7.0.0",
"tiff": "^7.1.2",
"utif": "^3.1.0",
"vite-plugin-static-copy": "^4.1.1",
"wasm-vips": "^0.0.19",
"vite-plugin-static-copy": "^3.2.0",
"wasm-vips": "^0.0.17",
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
"zgapdfsigner": "^2.7.5"
},
+3 -1
View File
@@ -424,7 +424,7 @@ async function performFlatteningCrop(
return newPdfDoc.save();
}
function resetState() {
export function resetState() {
if (cropperState.cropper) {
cropperState.cropper.destroy();
cropperState.cropper = null;
@@ -447,4 +447,6 @@ function resetState() {
const cropBtn = document.getElementById('crop-button') as HTMLButtonElement;
if (cropBtn) cropBtn.disabled = true;
window.scrollTo({ top: 0, behavior: 'smooth' });
}
+1
View File
@@ -84,6 +84,7 @@ const ESCAPED_MATH: ReadonlyArray<[string, string, boolean]> = [
['\\\\[', '\\\\]', true],
['\\\\(', '\\\\)', false],
['\\[', '\\]', true],
['$`', '`$', false],
];
function escapedMath(state: StateInline, silent: boolean): boolean {
+18
View File
@@ -0,0 +1,18 @@
import { describe, it, expect, vi, beforeEach } from 'vitest';
import { resetState } from '../js/logic/crop-pdf-page.ts';
// Test resetState function for cropping
describe('resetState', () => {
beforeEach(() => {
vi.spyOn(window, 'scrollTo').mockImplementation(() => {});
});
it('scrolls the page to the top after resetting', () => {
resetState();
expect(window.scrollTo).toHaveBeenCalledWith({
top: 0,
behavior: 'smooth',
});
});
});
+8 -1
View File
@@ -58,10 +58,17 @@ describe('Markdown to PDF rendering', () => {
'',
'```math\n\\int x\n```',
'',
'GitHub $`\\sqrt{3}`$ inline.',
'',
'Price $5 and $10, escaped \\$3, code `$q$`.',
].join('\n')
);
expect(root.querySelectorAll('.katex').length).toBe(8);
expect(root.querySelectorAll('.katex').length).toBe(9);
const github = [...root.querySelectorAll('p')].find((p) =>
p.textContent?.startsWith('GitHub')
);
expect(github?.querySelector('.katex')).not.toBeNull();
expect(github?.textContent).not.toMatch(/[$`‘’]/);
expect(root.querySelectorAll('.katex-display').length).toBe(5);
expect(root.querySelector('em')).toBeNull();
expect(root.textContent).toContain('Price $5 and $10, escaped $3');