diff --git a/apps/docs/src/content/docs/markforge/changelog.mdx b/apps/docs/src/content/docs/markforge/changelog.mdx index 9561ae0..21a35e2 100644 --- a/apps/docs/src/content/docs/markforge/changelog.mdx +++ b/apps/docs/src/content/docs/markforge/changelog.mdx @@ -6,6 +6,17 @@ sidebar: description: Release history and version notes for @masumdev/markforge. --- +## [0.5.1] - 2026-09-11 + +### Cross-Platform PDF Back Cover Preservation + +- **CSS Height Standardizing**: + - Adjusted `.markforge-back-cover` print media CSS height to `calc(100vh - 2px)` with `overflow: hidden;` and `page-break-after: avoid; break-after: avoid;`, eliminating subpixel page overflow across Windows (DirectWrite / Edge / Chrome) and Linux (FreeType). +- **Eliminated Blind Page Truncation**: + - Removed trailing page deletion (`pdfDoc.removePage`) in the PDF builder pipeline that previously led to the back cover closing card being inadvertently deleted on Windows multi-page documents. + +--- + ## [0.5.0] - 2026-09-03 ### Plain Text (.txt) Document Publishing Engine diff --git a/apps/docs/src/content/docs/tscheck/changelog.mdx b/apps/docs/src/content/docs/tscheck/changelog.mdx index 9422e97..e604d69 100644 --- a/apps/docs/src/content/docs/tscheck/changelog.mdx +++ b/apps/docs/src/content/docs/tscheck/changelog.mdx @@ -6,6 +6,24 @@ sidebar: description: Release history and version notes for @masumdev/tscheck. --- +### v0.2.5 + +#### Bug Fixes & Clean Terminal Output +- **Node.js Typeless ESM Warning Suppression**: + - Filtered out Node.js v22+ `MODULE_TYPELESS_PACKAGE_JSON` warning during dynamic configuration module loading, ensuring a completely clean terminal experience across all project environments. + +--- + +### v0.2.4 + +#### Improvements & Fixes +- **Documentation & Homepage URLs**: + - Updated monorepo documentation links and repository homepage metadata to the new production URL: `https://react-native-library-docs.vercel.app/`. +- **Monorepo Configuration & Import Resolving**: + - Standardized `defineConfig` import resolution for TypeScript project configurations (`tscheck.config.ts`). + +--- + ### v0.2.3 #### Bug Fixes & Improvements diff --git a/package.json b/package.json index 36ccfdb..8eb44fb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "react-native-library", "private": true, + "type": "module", "scripts": { "dev": "turbo run dev", "dev:native": "turbo dev --filter='@masumdev/*' --filter=native", diff --git a/packages/markforge/CHANGELOG.md b/packages/markforge/CHANGELOG.md index 10e72ca..9dd5da1 100644 --- a/packages/markforge/CHANGELOG.md +++ b/packages/markforge/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to **@masumdev/markforge** will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.5.1] - 2026-09-11 + +### Fixed +- **Cross-Platform PDF Back Cover Preservation**: + - Standardized `.markforge-back-cover` print media CSS height to `calc(100vh - 2px)` with `overflow: hidden;` and explicit `page-break-after: avoid; break-after: avoid;`, eliminating subpixel page overflow across Windows (DirectWrite / Edge / Chrome) and Linux (FreeType). + - Removed blind trailing page truncation (`pdfDoc.removePage`) that previously caused the back cover page to be incorrectly deleted on Windows multi-page documents. + --- ## [0.5.0] - 2026-09-03 diff --git a/packages/markforge/package.json b/packages/markforge/package.json index 528465b..c74a9c4 100644 --- a/packages/markforge/package.json +++ b/packages/markforge/package.json @@ -1,6 +1,6 @@ { "name": "@masumdev/markforge", - "version": "0.5.0", + "version": "0.5.1", "description": "Modern, high-performance Markdown & MDX multi-format document publishing engine and CLI (DOCX, PDF, HTML, and Images) with embedded HTML/CSS, image inliner, and Ink terminal UI.", "main": "./dist/index.js", "module": "./dist/index.mjs", diff --git a/packages/markforge/src/core/html/htmlBuilder.ts b/packages/markforge/src/core/html/htmlBuilder.ts index 8db5ee1..630f4e5 100644 --- a/packages/markforge/src/core/html/htmlBuilder.ts +++ b/packages/markforge/src/core/html/htmlBuilder.ts @@ -522,9 +522,9 @@ export async function renderBackCoverHtml( break-before: page; page-break-after: avoid; break-after: avoid; - min-height: 100vh; - height: 100vh; - max-height: 100vh; + min-height: calc(100vh - 2px); + height: calc(100vh - 2px); + max-height: calc(100vh - 2px); margin: 0; box-sizing: border-box; overflow: hidden; diff --git a/packages/markforge/src/core/pdf/pdfBuilder.ts b/packages/markforge/src/core/pdf/pdfBuilder.ts index 8125ca6..aac77d0 100644 --- a/packages/markforge/src/core/pdf/pdfBuilder.ts +++ b/packages/markforge/src/core/pdf/pdfBuilder.ts @@ -309,11 +309,16 @@ export function injectPagedMediaStyles( } .markforge-back-cover { page: back-cover-page; - min-height: 100vh; - height: 100vh; + min-height: calc(100vh - 2px); + height: calc(100vh - 2px); + max-height: calc(100vh - 2px); + margin: 0; box-sizing: border-box; + overflow: hidden; break-before: page; + page-break-before: always; break-after: avoid; + page-break-after: avoid; }` : ""; @@ -511,12 +516,6 @@ export async function buildPdfDocument( - // When backCover is enabled, Chromium headless print generates a trailing overflow page after the 100vh back cover section. - // Remove this trailing blank page so the back cover is the true final page. - if (resolved.backCover?.enabled && pdfDoc.getPageCount() > 2) { - pdfDoc.removePage(pdfDoc.getPageCount() - 1); - } - if (resolved.watermark) { const wmPng = generateWatermarkPngBuffer(chromePath, resolved.watermark); if (wmPng) { diff --git a/packages/markforge/test/enterpriseFeatures.test.ts b/packages/markforge/test/enterpriseFeatures.test.ts index d43a798..0be9ec5 100644 --- a/packages/markforge/test/enterpriseFeatures.test.ts +++ b/packages/markforge/test/enterpriseFeatures.test.ts @@ -275,6 +275,9 @@ Body paragraph before closing page. const docxBuf = await buildDocxDocument(doc, {}); expect(docxBuf.length).toBeGreaterThan(1000); + + const pdfBuf = await buildPdfDocument(doc, {}); + expect(pdfBuf.length).toBeGreaterThan(500); }); it("Metadata Cascading Priority: Frontmatter vs Config File", () => { diff --git a/packages/tscheck/CHANGELOG.md b/packages/tscheck/CHANGELOG.md index 3f4211d..bfe5a9f 100644 --- a/packages/tscheck/CHANGELOG.md +++ b/packages/tscheck/CHANGELOG.md @@ -5,6 +5,24 @@ All notable changes to `@masumdev/tscheck` will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.2.5] - 2026-09-11 + +### Fixed +- **Node.js ESM Typeless Package Warning Suppression**: + - Filtered out Node.js v22+ `MODULE_TYPELESS_PACKAGE_JSON` warning during dynamic configuration module loading, ensuring a completely clean terminal experience across all project environments. + +--- + +## [0.2.4] - 2026-09-11 + +### Fixed +- **Documentation & Homepage URLs**: + - Updated all monorepo documentation portal URLs and repository links to the new production domain: `https://react-native-library-docs.vercel.app/`. +- **Monorepo Configuration & Import Resolving**: + - Standardized `defineConfig` import resolution for TypeScript project configurations. + +--- + ## [0.2.3] - 2026-09-11 ### Fixed diff --git a/packages/tscheck/package.json b/packages/tscheck/package.json index 61d8dcf..ec95990 100644 --- a/packages/tscheck/package.json +++ b/packages/tscheck/package.json @@ -1,6 +1,6 @@ { "name": "@masumdev/tscheck", - "version": "0.2.3", + "version": "0.2.5", "description": "Modern, high-performance TypeScript AST code audit CLI and engine with beautiful Ink terminal UI and type-safe config.", "main": "./dist/index.js", "module": "./dist/index.mjs", diff --git a/packages/tscheck/src/cli.tsx b/packages/tscheck/src/cli.tsx index f3143c8..b745614 100644 --- a/packages/tscheck/src/cli.tsx +++ b/packages/tscheck/src/cli.tsx @@ -10,6 +10,17 @@ import { generateAiPrompt } from "./core/aiPrompt.js"; import { startReportServer, openInBrowser } from "./core/server.js"; import { getTscheckVersion } from "./version.js"; +// Suppress Node.js v22+ typeless package.json ESM warning during dynamic config import +process.on("warning", (warning: Error & { code?: string }) => { + if ( + warning.name === "MODULE_TYPELESS_PACKAGE_JSON" || + warning.code === "MODULE_TYPELESS_PACKAGE_JSON" + ) { + return; + } + console.warn(warning); +}); + const VERSION = getTscheckVersion(); const program = new Command(); diff --git a/tscheck.config.ts b/tscheck.config.ts index 0e1dc68..0cd096a 100644 --- a/tscheck.config.ts +++ b/tscheck.config.ts @@ -1,4 +1,4 @@ -import { defineConfig } from "./packages/tscheck/src/index.js"; +import { defineConfig } from "@masumdev/tscheck"; export default defineConfig({ rootDir: process.cwd(),