diff --git a/apps/cli/markforge/assets/company-logo.png b/apps/cli/markforge/assets/company-logo.png
new file mode 100644
index 0000000..ff9f5a8
Binary files /dev/null and b/apps/cli/markforge/assets/company-logo.png differ
diff --git a/apps/cli/markforge/docs/full-all-properties.md b/apps/cli/markforge/docs/full-all-properties.md
index b760f18..730fc54 100644
--- a/apps/cli/markforge/docs/full-all-properties.md
+++ b/apps/cli/markforge/docs/full-all-properties.md
@@ -76,7 +76,49 @@ def check_environment():
> Use `--watch` flag during local authoring for instant live updates.
> [!IMPORTANT]
-> Both Word Twips and CSS `@page` dimensions are accurately synchronized.
+> Both Word Twips and CSS `@page` dimensions are accurately synchronized.## Heading 2### Heading 3
+| Column 1 | Column 2 | Column 3 |
+| :--- | :---: | ---: |
+| Data A | Data B | Data C |
+| Data D | Data E | Data F |
+
+| Column 1 | Column 2 | Column 3 |
+| :--- | :---: | ---: |
+| Data A | Data B | Data C |
+| Data D | Data E | Data F |
+
+| Column 1 | Column 2 | Column 3 |
+| :--- | :---: | ---: |
+| Data A | Data B | Data C |
+| Data D | Data E | Data F |
+
+
+---
+
+# Mathematical Foundations
+
+MarkForge provides native KaTeX math compilation for both inline physics equations such as $E = mc^2$ and complex display block proofs[^euler]:
+
+$$\oint_C \mathbf{B} \cdot d\mathbf{l} = \mu_0 \left( I_{\text{enc}} + \varepsilon_0 \frac{d\Phi_E}{dt} \right)$$
+
+---
+
+# Multi-Column Comparison
+
+:::columns 2
+:::col
+### Cloud Architecture
+- Globally distributed edge routing
+- Low-latency WebSocket connections
+- Automatic failover clustering
+:::
+:::col
+### On-Premises Security
+- Air-gapped deployment support
+- Hardware Security Module (HSM) keys
+- Strict local audit logging
+:::
+:::
---
@@ -84,6 +126,8 @@ def check_environment():
| Pipeline Component | Target Output | Processing Time | Quality Level |
| :--- | :--- | :---: | :---: |
-| Native DOCX Packager | `sample.docx` | 45ms | Pixel-Perfect Word Layout |
-| Headless Chromium | `sample.pdf` | 650ms | 300 DPI Vector PDF |
-| HTML5 Bundler | `sample.html` | 18ms | Single Self-Contained File |
+| Native DOCX Packager | `full-all-properties.docx` | 45ms | Pixel-Perfect Word Layout |
+| Headless Chromium | `full-all-properties.pdf` | 650ms | 300 DPI Vector PDF |
+| HTML5 Bundler | `full-all-properties.html` | 18ms | Single Self-Contained File |
+
+[^euler]: Maxwell, J. C. (1865). A Dynamical Theory of the Electromagnetic Field. Philosophical Transactions of the Royal Society of London.
diff --git a/apps/cli/markforge/examples/5-preview-server.ts b/apps/cli/markforge/examples/5-preview-server.ts
new file mode 100644
index 0000000..252fff4
--- /dev/null
+++ b/apps/cli/markforge/examples/5-preview-server.ts
@@ -0,0 +1,29 @@
+/**
+ * Example 5: Interactive Live-Reload Preview Server
+ * Demonstrates starting the programmatic preview server with SSE auto-reload.
+ *
+ * Author: Ma'sum (@masumrpg)
+ */
+import * as path from "node:path";
+import { startPreviewServer } from "@masumdev/markforge";
+
+async function main() {
+ const filePath = path.resolve(__dirname, "../docs/full-all-properties.md");
+ const port = 3000;
+
+ console.log("Starting MarkForge Live-Reload Preview Server...");
+ const server = await startPreviewServer({
+ filePath,
+ port,
+ open: true, // Automatically opens your default web browser
+ });
+
+ console.log(`Server is running at: ${server.url}`);
+ console.log(`Watching file: ${filePath}`);
+ console.log("Press Ctrl+C to terminate the server.");
+}
+
+main().catch((err) => {
+ console.error("Failed to start preview server:", err);
+ process.exit(1);
+});
diff --git a/apps/cli/markforge/examples/6-bulk-generation.ts b/apps/cli/markforge/examples/6-bulk-generation.ts
new file mode 100644
index 0000000..2b0cc16
--- /dev/null
+++ b/apps/cli/markforge/examples/6-bulk-generation.ts
@@ -0,0 +1,170 @@
+/**
+ * Example 6: Bulk & Batch Document Generation
+ * Demonstrates compiling multiple documents in parallel from dynamic data and templates.
+ *
+ * Author: Ma'sum (@masumrpg)
+ */
+import * as path from "node:path";
+import * as fs from "node:fs";
+import { compileMarkdown, Theme, OutputFormat } from "@masumdev/markforge";
+
+// Sample dataset: 5 enterprise quarterly department reports
+const departmentReports = [
+ {
+ dept: "Engineering",
+ lead: "Alexander Wright",
+ budget: "$1,450,000",
+ status: "On Track",
+ kpis: ["99.99% Uptime", "38 Releases Shipped", "0 Security Breaches"],
+ },
+ {
+ dept: "Product Design",
+ lead: "Sarah Jenkins",
+ budget: "$620,000",
+ status: "Completed",
+ kpis: ["Design System 2.0", "14 Usability Labs", "NPS Score 78"],
+ },
+ {
+ dept: "Infrastructure & Security",
+ lead: "David Chen",
+ budget: "$890,000",
+ status: "On Track",
+ kpis: ["Multi-Region Failover", "Zero-Trust mTLS", "SOC2 Compliance"],
+ },
+ {
+ dept: "Finance & Operations",
+ lead: "Ma'sum",
+ budget: "$2,100,000",
+ status: "Reviewed",
+ kpis: ["18% Cost Optimization", "Clean Audit Report", "Automated Payroll"],
+ },
+ {
+ dept: "Customer Success",
+ lead: "Elena Rostova",
+ budget: "$480,000",
+ status: "Exceeded",
+ kpis: ["< 15min SLA Response", "96% CSAT Score", "Zero Churn Key Accounts"],
+ },
+];
+
+async function main() {
+ const outputDir = path.resolve(__dirname, "../.temp/bulk-reports");
+ if (!fs.existsSync(outputDir)) {
+ fs.mkdirSync(outputDir, { recursive: true });
+ }
+
+ console.log(`Starting bulk compilation of ${departmentReports.length} department reports...`);
+ const startTime = Date.now();
+
+ // Parallel Batch Compilation using Promise.all
+ const results = await Promise.all(
+ departmentReports.map(async (data, index) => {
+ // 1. Construct dynamic Markdown template for each record
+ const markdown = `---
+title: "${data.dept} - Quarterly Performance Report"
+subtitle: "Executive Summary & Operational Review — Q3 2026"
+author: "${data.lead}"
+company: "Enterprise Global Holdings"
+version: "1.0.${index + 1}"
+date: "${new Date().toISOString().split("T")[0]}"
+theme: "corporate"
+toc: true
+coverPage:
+ enabled: true
+ preset: "modern"
+ badge: "${data.status.toUpperCase()}"
+ badgeColor: "#ECFDFD"
+ badgeTextColor: "#0D998D"
+ footerText: "Confidential Internal Report — Masum Dev Monorepo"
+numberHeadings:
+ enabled: true
+ depth: 2
+---
+
+# Executive Summary
+
+This document presents the Q3 operational review for the **${data.dept}** division. Under the leadership of **${data.lead}**, the department maintained an allocated operating budget of **${data.budget}**.
+
+> [!NOTE]
+> Operational status for this period is verified as **${data.status}**.
+
+---
+
+# Key Performance Indicators
+
+Below is the summary table of verified achievements for Q3:
+
+| Metric Indicator | Status | Quarter Goal |
+| :--- | :---: | ---: |
+${data.kpis.map((kpi, i) => `| KPI #${i + 1}: ${kpi} | Passed | 100% |`).join("\n")}
+
+---
+
+# Strategic Architecture & Workflow
+
+\`\`\`mermaid
+graph LR
+ A[Planning] --> B(${data.dept} Pipeline)
+ B --> C{Review}
+ C -->|Approved| D[Execution]
+ C -->|Revisions| B
+\`\`\`
+
+---
+
+:::columns 2
+:::col
+### Department Lead
+- Name: ${data.lead}
+- Role: Division Principal
+- Office: Global HQ
+:::
+:::col
+### Operational Metrics
+- Budget: ${data.budget}
+- Fiscal Period: Q3 2026
+- Compliance: ISO 27001
+:::
+:::
+
+---
+
+# Signatures & Verification
+
+Academic and administrative sign-off verification[^audit].
+
+[^audit]: Verified by independent internal audit procedures pursuant to enterprise bylaws.
+`;
+
+ const fileBaseName = `Report-${data.dept.toLowerCase().replace(/[^a-z0-9]+/g, "-")}.md`;
+ const tempMdPath = path.join(outputDir, fileBaseName);
+ fs.writeFileSync(tempMdPath, markdown, "utf-8");
+
+ // 2. Compile directly to DOCX, PDF, and HTML
+ const compileRes = await compileMarkdown(tempMdPath, {
+ to: [OutputFormat.DOCX, OutputFormat.PDF, OutputFormat.HTML],
+ outputDir,
+ theme: Theme.CORPORATE,
+ });
+
+ console.log(`[OK] Generated: ${data.dept} (${compileRes.files.length} files in ${compileRes.durationMs}ms)`);
+ return compileRes;
+ })
+ );
+
+ const totalDuration = Date.now() - startTime;
+ const totalFiles = results.reduce((acc, r) => acc + r.files.length, 0);
+
+ console.log("======================================================");
+ console.log(`Bulk generation completed successfully!`);
+ console.log(`Total Documents : ${departmentReports.length}`);
+ console.log(`Total Files : ${totalFiles} files (.docx, .pdf, .html)`);
+ console.log(`Total Time : ${totalDuration}ms (average ${Math.round(totalDuration / departmentReports.length)}ms/doc)`);
+ console.log(`Output Folder : ${outputDir}`);
+ console.log("======================================================");
+}
+
+main().catch((err) => {
+ console.error("Bulk generation error:", err);
+ process.exit(1);
+});
diff --git a/apps/cli/markforge/markforge.config.ts b/apps/cli/markforge/markforge.config.ts
index c6f5e24..075dda5 100644
--- a/apps/cli/markforge/markforge.config.ts
+++ b/apps/cli/markforge/markforge.config.ts
@@ -20,4 +20,12 @@ export default defineConfig({
},
toc: true,
embedImages: true,
+
+ // Optional enterprise features (uncomment to activate):
+ // coverPage: { enabled: true, preset: "modern", logo: "./assets/company-logo.png", badge: "SPECIFICATION" },
+ // backCover: { enabled: true, preset: "corporate", logo: "./assets/company-logo.png" },
+ // numberHeadings: { enabled: true, depth: 3 },
+ // watermark: "CONFIDENTIAL",
+ // security: { userPassword: "open_password", ownerPassword: "admin_password", permissions: { modifying: false, copying: false } },
+ // math: true,
});
diff --git a/apps/cli/markforge/markforge.full-config.ts b/apps/cli/markforge/markforge.full-config.ts
index 434ae88..63ab842 100644
--- a/apps/cli/markforge/markforge.full-config.ts
+++ b/apps/cli/markforge/markforge.full-config.ts
@@ -11,24 +11,42 @@ import {
/**
* MarkForge Complete Specification Configuration Sample
* Demonstrates 100% of all configurable properties in MarkforgeConfig with full Enum autocompletion.
+ * Any property that is optional or alternative is also presented as a commented line for quick toggling.
*/
export default defineConfig({
- // Target output formats (using OutputFormat enum or strings)
+ // Target output formats (using OutputFormat enum or strings: "docx" | "pdf" | "html" | "png")
to: [OutputFormat.DOCX, OutputFormat.PDF, OutputFormat.HTML],
+ // to: [OutputFormat.PDF], // Single target compilation
- // Output directory
+ // Output directory where compiled documents will be saved
outputDir: ".temp/output-full-spec",
- // Visual document theme (using Theme.CORPORATE preset or a custom ThemeProps object)
+ // Visual document theme (preset enum: CORPORATE, ACADEMIC, MODERN, MINIMAL, DRACULA, NORD, etc. or custom ThemeProps object)
theme: Theme.CORPORATE,
+ // Custom theme palette example (uncomment to override completely):
+ // theme: {
+ // primaryColor: "#0D998D",
+ // primaryDark: "#0B7A70",
+ // primaryLight: "#ECFDFD",
+ // backgroundColor: "#FFFFFF",
+ // textColor: "#0F172A",
+ // textMuted: "#64748B",
+ // borderColor: "#E2E8F0",
+ // cardBackground: "#F8FAFC",
+ // codeBackground: "#1E293B",
+ // codeText: "#38BDF8",
+ // fontFamily: "Inter, -apple-system, sans-serif",
+ // fontMono: "Fira Code, monospace",
+ // },
- // Page orientation (using Orientation enum or strings)
+ // Page orientation (Orientation.PORTRAIT or Orientation.LANDSCAPE)
orientation: Orientation.PORTRAIT,
+ // orientation: Orientation.LANDSCAPE,
- // Standard paper size (using PaperSizeEnum or strings)
+ // Standard paper size (A4, Letter, Legal, A3, A5)
paperSize: PaperSizeEnum.A4,
- // Page margins with CSS unit or pt numbers
+ // Page margins (supports CSS units: "3cm", "25mm", "1in", or numbers in pt)
margins: {
top: "3cm",
bottom: "2.5cm",
@@ -88,6 +106,53 @@ export default defineConfig({
// Automatic Table of Contents generation
toc: true,
+ // Dedicated Standalone Front Cover Page Builder
+ coverPage: {
+ enabled: true,
+ preset: "modern", // Options: "modern" | "corporate-split" | "minimal" | "card"
+ title: "{title}",
+ subtitle: "{subtitle}",
+ author: "{author}",
+ company: "{company}",
+ version: "v{version}",
+ date: "{date}",
+ badge: "CONFIDENTIAL SPECIFICATION",
+ badgeColor: "#ECFDFD",
+ badgeTextColor: "#0D998D",
+ logo: "./assets/company-logo.png", // Company logo path or Base64 data URI
+ logoWidth: 120, // Logo display width in px
+ footerText: "Proprietary & Confidential — Masum Dev Technologies",
+ },
+ // coverPage: false, // Set to false to disable front cover page entirely
+
+ // Hierarchical decimal section numbering (e.g. 1., 1.1, 1.1.1)
+ numberHeadings: {
+ enabled: true,
+ depth: 3, // Max heading depth to number (H1..H3)
+ skipH1: false, // Number from H1 downwards (set true if H1 is document title)
+ prefix: "", // Optional prefix (e.g. "Section ")
+ },
+ // numberHeadings: false, // Set to false to disable section numbering
+
+ // LaTeX Math Equation rendering ($inline$ and $$block$$)
+ math: true,
+
+ // PDF Document Security & Password Encryption
+ security: {
+ userPassword: "masumdev_secret", // Password required to open document
+ ownerPassword: "masumdev_admin", // Master password required to modify permissions
+ permissions: {
+ printing: "highResolution", // "highResolution" | "lowResolution" | false
+ modifying: false,
+ copying: true,
+ annotating: true,
+ fillingForms: true,
+ contentAccessibility: true,
+ documentAssembly: false,
+ },
+ },
+ // security: undefined, // Omit or leave undefined for unrestricted standard PDF
+
// Watermark configuration (using WatermarkPosition enum or strings)
watermark: {
text: "CONFIDENTIAL DRAFT",
@@ -95,11 +160,13 @@ export default defineConfig({
opacity: 0.1,
fontSize: 52,
rotate: -45,
- position: WatermarkPosition.DIAGONAL,
+ position: WatermarkPosition.DIAGONAL, // "diagonal" | "center" | "top-right" | "bottom-right"
},
+ // watermark: false, // Set to false to disable watermark
// Code block syntax highlighting theme (using SyntaxTheme enum or strings)
syntaxTheme: SyntaxTheme.DRACULA,
+ // syntaxTheme: "github-dark", // "github-dark" | "github-light" | "dracula" | "monokai" | "nord"
// Assets and bundling flags
embedImages: true,
@@ -107,14 +174,15 @@ export default defineConfig({
// Document signature & approval blocks (1 to 4 signatory slots with customizable style and alignment)
signatures: {
- align: "space-between",
- style: "line",
+ align: "space-between", // "space-between" | "center" | "left" | "right"
+ style: "line", // "line" | "box" | "clean"
items: [
{
title: "Prepared by",
name: "{author}",
role: "Lead Platform Architect",
date: "{date}",
+ // signatureImage: "./assets/signatures/author.png", // Optional signature image
},
{
title: "Reviewed by",
@@ -130,6 +198,29 @@ export default defineConfig({
},
],
},
+ // signatures: undefined, // Omit or set to undefined if no approval blocks required
+
+ // Dedicated Standalone Back Cover / Closing Page
+ backCover: {
+ enabled: true,
+ preset: "corporate", // Options: "modern" | "corporate" | "minimal" | "contact-card"
+ title: "Thank You",
+ subtitle: "Masum Dev Technologies — Next-Gen Cross-Platform Engineering",
+ logo: "./assets/company-logo.png",
+ logoWidth: 120,
+ company: "{company}",
+ address: "Jakarta, Indonesia",
+ email: "contact@masumdev.com",
+ phone: "+62 812 3456 7890",
+ website: "https://react-native-library-docs.netlify.app",
+ social: {
+ github: "https://github.com/masumrpg",
+ // twitter: "https://x.com/masumdev",
+ // linkedin: "https://linkedin.com/in/masumdev",
+ },
+ copyright: "Copyright (c) {year} {company}. All Rights Reserved.",
+ },
+ // backCover: false, // Set to false to disable back cover closing page
// Fallback metadata dictionary
metadata: {
@@ -141,4 +232,13 @@ export default defineConfig({
date: "2026-08-29",
lang: "en",
},
+
+ // Custom external stylesheet path(s) to inject into HTML and PDF documents
+ // css: ["./custom-styles.css"],
+
+ // Live preview & watch development options
+ watch: false, // Set to true to automatically re-compile when markdown files change
+ serve: false, // Set to true to start the interactive Web Studio Preview server
+ port: 4000, // Custom port for live studio (default: 4000)
+ open: false, // Set to true to automatically launch the default browser
});
diff --git a/apps/cli/markforge/package.json b/apps/cli/markforge/package.json
index ca42c1d..e3cca6b 100644
--- a/apps/cli/markforge/package.json
+++ b/apps/cli/markforge/package.json
@@ -14,11 +14,15 @@
"build:sample": "bun ../../../packages/markforge/dist/cli.mjs ./docs/sample.md --to docx,pdf,html -o .temp/output",
"build:spec": "bun ../../../packages/markforge/dist/cli.mjs ./docs/full-specification.md --to docx,pdf,html -o .temp/output",
"watch": "bun ../../../packages/markforge/dist/cli.mjs ./docs/sample.md --watch -o .temp/output",
+ "serve": "bun ../../../packages/markforge/dist/cli.mjs ./docs/sample.md --serve 3000 --open",
+ "serve:spec": "bun ../../../packages/markforge/dist/cli.mjs ./docs/full-all-properties.md -c ./markforge.full-config.ts --serve 3000 --open",
"example:minimal": "bun ./examples/1-minimal.ts",
"example:intermediate": "bun ./examples/2-intermediate.ts",
"example:full": "bun ./examples/3-full-custom.ts",
"example:ast": "bun ./examples/4-low-level-ast.ts",
- "example:all": "bun run example:minimal && bun run example:intermediate && bun run example:full && bun run example:ast"
+ "example:serve": "bun ./examples/5-preview-server.ts",
+ "example:bulk": "bun ./examples/6-bulk-generation.ts",
+ "example:all": "bun run example:minimal && bun run example:intermediate && bun run example:full && bun run example:ast && bun run example:bulk"
},
"dependencies": {
"@masumdev/markforge": "workspace:*"
diff --git a/apps/docs/src/content/docs/markforge/changelog.mdx b/apps/docs/src/content/docs/markforge/changelog.mdx
index 97e5bc0..3d2b49d 100644
--- a/apps/docs/src/content/docs/markforge/changelog.mdx
+++ b/apps/docs/src/content/docs/markforge/changelog.mdx
@@ -6,14 +6,53 @@ sidebar:
description: Release history and version notes for @masumdev/markforge.
---
+## [0.4.0] - 2026-08-29
+
+### Major Enterprise Features & Security Release
+
+- **ISO 32000-2 AES-256 PDF Security & Password Encryption (`security`)**:
+ - Native standard PDF encryption with independent `userPassword` (password required to open the document) and `ownerPassword` (master password required to modify document permissions).
+ - Granular permissions enforcement: `printing`, `modifying`, `copying`, `annotating`, `fillingForms`, `contentAccessibility`, and `documentAssembly`.
+ - Supports permission-only protection mode when `userPassword` is left empty.
+- **100% Unselectable Image XObject Watermark**:
+ - Replaced live text glyphs with transparent Chromium-rendered PNG buffers embedded via `pdfDoc.drawImage()` as PDF Image XObjects.
+ - Eliminates 100% of selectable text stream tokens (`Tj`/`TJ`), preventing any cursor interference or unwanted text highlights during document review.
+ - Automatically centered diagonally (`rotate: -45`) across content pages and excluded from Front Cover and Back Cover.
+- **Cover Page Builder with Company Logo Embedding (`coverPage`)**:
+ - Four enterprise design presets: `modern`, `corporate-split`, `minimal`, and `card`.
+ - Native image embedding for brand logos across DOCX, PDF, and HTML with configurable `logoWidth`.
+ - Generates dedicated unnumbered first sections in Microsoft Word DOCX and suppresses running headers/footers via CSS `@page :first` in PDF.
+- **Back Cover / Closing Page Builder (`backCover`)**:
+ - Four closing design presets: `modern`, `corporate`, `minimal`, and `contact-card`.
+ - Full-bleed edge-to-edge dark closing card in PDF and isolated final section in DOCX.
+ - Company profile grid including address, email, phone, website, and social links.
+- **Math & LaTeX Equation Rendering (`math`)**:
+ - Native KaTeX in-memory math parsing for inline formulas (`$E=mc^2$`) and display block equations (`$$\int e^x dx$$`).
+ - Self-contained inlined KaTeX CSS for zero-network HTML and PDF generation.
+ - Cambria Math typography and shaded equation containers in Microsoft Word DOCX.
+- **Multi-Column Container Directives (`:::columns`, `:::col`)**:
+ - Multi-column container syntax with configurable columns count and gap (`:::columns 2` or `:::columns [cols=3 gap=2rem]`).
+ - Emitted as CSS Grid layouts in HTML/PDF and native borderless multi-cell table structures in DOCX.
+- **Hierarchical Section Numbering (`numberHeadings`)**:
+ - Automated decimal heading prefixes (`1.`, `1.1.`, `1.1.1.`) with configurable depth and optional H1 skip.
+ - Synchronized Table of Contents entries and anchor slugs.
+- **Footnotes & Endnotes (`[^1]`, `[^1]: text`)**:
+ - Markdown footnote references (`[^id]`) and bottom definition parsing.
+ - Formatted as superscripts with return links in HTML/PDF and dedicated numbered sections in Word DOCX.
+- **Windows Enterprise & Strict Corporate Policy Compliance**:
+ - Prioritizes Microsoft Edge (`msedge.exe`) with AppLocker and GPO whitelist compatibility.
+ - Isolated process arguments without suspicious flags (`--disable-sync`, isolated temp profile).
+ - Added `windowsHide: true` on child processes to eliminate console prompt flashes on Windows.
+- **Interactive Live-Reload Preview Server (`markforge --serve`)**:
+ - Real-time Server-Sent Events (SSE) `/events` broadcast on file or config changes.
+ - Automatic scroll position and reading preservation across live reloads.
+
+---
+
## [0.3.0] - 2026-08-29
### Features & Enhancements
-- **100% Unselectable Vector Watermarks in PDF**:
- - Replaced SVG text nodes with dynamic high-DPI HTML5 Canvas 2D rasterization (`canvas.toDataURL('image/png')` at 3x DPR).
- - Emitted as a pure PNG Image XObject background layer in Chromium PDF, completely eliminating selectable text layer glyphs.
- - Ensures clean cursor dragging and text selection across all PDF reader applications.
- **Comprehensive Programmatic API Suite**:
- Added full programmatic compilation examples in `apps/cli/markforge/examples/`:
- `1-minimal.ts`: Zero-configuration Markdown-to-MultiFormat execution.
@@ -25,7 +64,7 @@ description: Release history and version notes for @masumdev/markforge.
- Added author attribution (`Author: Ma'sum (@masumrpg)`) and direct repository links.
- Removed all emojis across CLI terminal outputs for maximum shell compatibility.
- **Author Identity & Workspace Normalization**:
- - Replaced all legacy author references with `Ma'sum` and updated GitHub profiles to `https://github.com/masumrpg`.
+ - Normalized author identity to `Ma'sum` and updated GitHub profiles to `https://github.com/masumrpg`.
---
@@ -34,126 +73,45 @@ description: Release history and version notes for @masumdev/markforge.
### Features & Enhancements
- **Document Signatures & Approval Blocks (`signatures`)**:
- - Add formal approval and sign-off blocks (*Lembar Pengesahan / Tanda Tangan*) with 1 to 4 signatory slots.
+ - Add formal approval and sign-off blocks with 1 to 4 signatory slots.
- Multi-alignment support (`left`, `center`, `right`, `space-between`).
- Multiple visual styles: `line` (classic underline divider), `box` (bordered card), and `clean` (borderless).
- - Dynamic token interpolation (`{author}`, `{company}`, `{date}`, etc.) and optional digital signature image/seal embedding.
- - Consistent and responsive rendering across **DOCX (Word)**, **Chromium PDF**, and **HTML**.
-- **Native Word Paragraph TabStops for Running Headers & Footers**: Replaced 3-column table headers and footers with native Microsoft Word OpenXML `TabStopType.CENTER` and `TabStopType.RIGHT` paragraph architecture. Eliminates 100% of table gridline boundaries/box outlines in LibreOffice Writer, Google Docs, and Microsoft Word when dividers are disabled.
-- **Synchronized Header & Footer Divider Lines**: Solid horizontal separator lines render cleanly via `border.bottom` / `border.top` on Word paragraphs and fixed print dividers (`@media print`) on Chromium PDF.
+ - Dynamic token interpolation (`{author}`, `{company}`, `{date}`) and optional digital signature image/seal embedding.
+- **Native Word Paragraph TabStops for Running Headers & Footers**:
+ - Replaced 3-column table headers and footers with native Microsoft Word OpenXML `TabStopType.CENTER` and `TabStopType.RIGHT` paragraph architecture.
+ - Eliminates 100% of table gridline boundaries in LibreOffice Writer, Google Docs, and Microsoft Word when dividers are disabled.
+- **Synchronized Header & Footer Divider Lines**:
+ - Solid horizontal separator lines render cleanly via `border.bottom` / `border.top` on Word paragraphs and fixed print dividers (`@media print`) on Chromium PDF.
- **DOCX Visual & Typography Overhaul**:
- - **Cover & Title Area**: 22pt bold title, 12pt subtitle, and metadata row with bottom border.
- - **Table of Contents (TOC) Card**: Auto-generated shaded card box (`#F8FAFC`, border `#E2E8F0`, header `TABLE OF CONTENTS`, indented H1-H3 in `primaryDark`).
- - **Headings**: H1 with cyan solid bottom border (`#33CDCF`), H2 with subtle bottom border (`#E2E8F0`), and H3.
- - **Paragraphs & Lists**: Charcoal `#334155` text with comfortable line spacing (`line: 280` / `260`).
- - **Callout Alert Boxes**: 20pt left border in alert color, tinted background fill (`#ECFDFD`, `#ECFDF5`, etc.), bold badge `[NOTE]`, and padded body text.
- - **Zebra Tables**: Shaded header `#F1F5F9` with `#CBD5E1` border and alternating rows (`#FFFFFF` and `#F8FAFC`).
- - **Code Blocks**: Formatted table card with `#33CDCF` left accent border, `#F8FAFC` background, monospace `Consolas` text, and syntax token colors.
+ - Enhanced title area with 22pt bold title, 12pt subtitle, and bottom border.
+ - Auto-generated Table of Contents card with shaded container (`#F8FAFC`, border `#E2E8F0`).
+ - Shaded zebra table rows with alternating fills.
---
## [0.2.4] - 2026-08-29
-### 🚀 Features & Enhancements
-
-- **Granular Header & Footer Slot Customization (`HeaderFooterSlot`)**: Each running header and footer zone (`left`, `center`, `right`) can now be individually styled with custom `color`, `fontSize` (in points), `fontFamily`, `bold`, and `italic`. Fully implemented across DOCX TextRuns and PDF CSS Paged Media (`@top-*` and `@bottom-*`).
-- **Flagship `Theme.CORPORATE` Preset & `ThemeProps` Interface**: Simplified built-in themes to `Theme.CORPORATE` while providing the typed `ThemeProps` interface for total custom document theming (`backgroundColor`, `textColor`, `primaryColor`, `fontFamily`, `fontMono`, `customCss`).
-- **TypeScript Enums**: Full autocompletion and type-safety with `OutputFormat`, `Theme`, `Orientation`, `PaperSizeEnum`, `SyntaxTheme`, and `WatermarkPosition`.
-- **Background-Layered Watermark**: Watermarks are positioned strictly at the background layer (`z-index: 0`) under content to avoid obscuring tables, text, or images.
-- **Enterprise Windows Sandboxing**: Headless Chromium runner is sandboxed with `--disable-sync`, isolated temp directory, and zero Google network requests, prioritizing `msedge.exe` on Windows.
-
----
-
-## [0.2.3] - 2026-08-28
-
-### 🛠️ Fixed
-
-- **Node.js 22/25 `--localstorage-file` warning**: Eliminated the webstorage warning caused by `docx` checking `globalThis.localStorage` by using dynamic imports in the CLI entry point.
-- **CLI Compilation Error**: Resolved the `expected input to be a string or buffer` error caused by an `inputPath` vs `inputFile` prop mismatch in `