Complete changelog and release history for SquibView.
This release enhances the visual presentation of rendered content with proper paragraph spacing and fixes the Smart Linefeeds feature for better control over line break handling.
- Fixed Smart Linefeeds toggle - Corrected
toggleLinefeedView()to properly add<br>tags to rendered HTML for visual line breaks without modifying source markdown. This is a view-only toggle that preserves the original markdown text.
-
Enhanced typography - Added professional spacing for better readability:
- Paragraphs now have 1em bottom margin for clear visual separation
- Headings have 1.5em top and 0.5em bottom margins for proper hierarchy
- First/last elements have smart margin adjustments to avoid excess spacing
-
Smart Linefeeds clarification - The feature now correctly maintains two distinct functions:
fixLinefeedsInMarkdown()- Permanently modifies source markdown by adding two spaces at line ends (for portability)toggleLinefeedView()- View-only rendering toggle that adds visual line breaks without modifying the source
- The paragraph spacing improvements address rendering issues where text appeared too condensed
- Smart Linefeeds functions are now properly separated: source modification vs. view-only rendering
- All changes maintain full markdown compliance and backwards compatibility
Release Date: September 23, 2025
- **Making prerelease
- **Fixed spacing and cr issues
- **Minor clean ups
- Fixed list bullet positioning - List bullets (ul/ol) now properly display within the content area instead of appearing in the left margin/gutter. Added explicit CSS rules for list padding and margins in
.squibview-output. - Fixed CSS bundling issue - Removed external CSS imports (highlight.js, leaflet) from standalone build. These styles are now loaded dynamically via the autoload feature, reducing dist/squibview.css from 1400 to 645 lines.
- Fixed release tools - Updated
make-release.shandupdate-release-notes.shto usedocs/release-notes.mdinstead of root directory
- Cleaner CSS distribution - Core squibview.css now contains only SquibView styles. External library styles load on-demand.
- Better theme flexibility - Users can now provide custom highlight.js themes without conflicts
- Added unit test for list rendering structure validation
- Enhanced Headless Mode Example - Complete working example demonstrating all API methods with custom UI controls (
examples/example_headless.html) - Comprehensive API Documentation - Corrected and updated all API method documentation to reflect actual implementation
- Fixed headless mode Options toggles (Controls, Title, Lines) to actually recreate editor instance with new settings
- Fixed Copy functionality to use correct
copySource()andcopyHTML()methods - Fixed event system documentation to use
editor.events.on()instead ofeditor.on() - Fixed revision methods documentation (
revisionUndo(),revisionRedo(),revisionNumRevsions()) - Added JSDoc comments to all functions and key attributes in headless example
- API Methods Reference - Corrected method names and signatures in
docs/api/methods.md - Events Reference - Updated event names to use colons (e.g.,
content:change,view:change) indocs/api/events.md - Headless Mode Guide - Updated all code examples with correct API usage in
docs/guides/headless-mode.md - Added standard favicon to headless example
undo()/redo()→revisionUndo()/revisionRedo()getRevisionCount()→revisionNumRevsions()getRenderedHTML()→getHTMLSource()copyToClipboard(format)→copySource()orcopyHTML()- Event access via
editor.events.on()noteditor.on() - Event names use colons:
content:change,text:selected,revision:undo
Integrated Autoload Functionality - Autoload is now built into all SquibView builds
- No separate autoload builds needed - use
autoload_depsoption with any build - Configure with
autoload_deps: { all: true }for automatic loading - Fine-grained control per library available
- Libraries load automatically from CDN when content requires them
- Zero configuration required for standard use cases
Autoloaded Libraries
- Mermaid (377KB) - Loaded when mermaid fence blocks are detected
- Highlight.js (45KB) - Loaded when code blocks are present
- MathJax (1.3MB) - Loaded when math expressions or math fence blocks are found
- Leaflet (142KB) - Loaded when GeoJSON/TopoJSON content is rendered
- Three.js (1.1MB) - Loaded when STL 3D models are displayed
Math Rendering
- Reduced math formula size when copying to clipboard (scale factor 0.025)
- Math formulas now paste at appropriate inline size in external applications
- Fixed math rendering detection for both inline and display math
- Support for fenced math blocks using
```mathsyntax
Developer Experience
- Consolidated example CSS files into single
examples.cssfor easier maintenance - Optimized example layouts to fit content above the fold (80vh total height)
- Added favicon to all example HTML files
- Improved responsive design with proper horizontal margins
- Updated all examples to use consistent styling
- Fixed copy-rendered functionality in editors with contenteditable wrapper
- Fixed MathJax rendering with proper selector detection
- Fixed library reference errors by checking existence before use
- Fixed build size table detection in README updates
- Fixed STL loader dependency on global THREE object
- Resolved mermaid initialization errors in rollup builds
- Reorganized examples with autoload as the recommended starting point
- Added clear descriptions for all build configurations
- Updated build size tables with accurate measurements
- Improved responsive design for mobile devices
- Simplified build options to 3 main configurations
- Added line number support to source view
- Added examples for using themes with line numbers
- Dark theme styling improvements
- Improved CLI build system
- Resolved line number bugs and improved example
- Updated line numbers example with proper dependencies and formatting
- Removed container borders for cleaner appearance
- Updated bin path format to match npm requirements
- Added comprehensive documentation for line numbers feature
- Added theme usage examples
- Performance optimizations for large documents
- Better memory management for revision history
- Improved scrolling synchronization between panes
- Enhanced bidirectional editing reliability
- Updated API documentation with performance tips
- Added large document handling guide
Default Builds Now Include Dependencies
- ESM/UMD builds now bundle markdown-it, diff-match-patch, and tiny-emitter (~240KB)
- Eliminates import map configuration requirements for new users
- Existing applications continue to work without changes
New Lean Builds
- Added
-leanvariants for users who manage their own dependencies - Lean builds exclude bundled libraries for smaller size (126KB minified)
Standalone Builds
- Fixed ESM standalone build generation
- Resolved Leaflet icon side effects in standalone builds
- Fixed GeoJSON rendering without prototype pollution
- Standalone builds no longer modify global Leaflet prototype
| Build | Size | Description |
|---|---|---|
| squibview.esm.min.js | 245KB | Standard ESM with bundled dependencies |
| squibview.esm-lean.min.js | 126KB | Minimal ESM without dependencies |
| squibview.umd.min.js | 246KB | Standard UMD with bundled dependencies |
| squibview.umd-lean.min.js | 128KB | Minimal UMD without dependencies |
| squibview.standalone.*.min.js | 3.6-3.8MB | All features bundled |
- Updated all docs to reflect bundled dependencies in default builds
- Cleaned up examples to use best practices
- Removed duplicate Leaflet icon configuration from examples
- NEW:
getSourceDiff()method to get diff data between any two revisions - NEW:
getSourceDiffHTML()method for side-by-side diff visualization - NEW:
getSourceDiffInline()method for inline diff with blue additions/red deletions - NEW: CSS styling for diff views with proper colors and formatting
- NEW: Support for comparing any revision against any other (including initial state)
- NEW: Working example demos:
diff_view_inline.htmlanddiff_view_live.html
- NEW:
getContentAtRevision()method to retrieve content at any revision - NEW:
computeDiff()method for character-level diffs - NEW:
computeLineDiff()method for line-by-line comparisons - NEW:
getDiffStats()method to get additions/deletions/changes count - NEW:
getRevisionInfo()method for revision metadata
- NEW: Inline diff demo showing manual revision comparison
- NEW: Live diff demo showing real-time cumulative changes
- IMPROVED: ESM module loading in diff examples
- FIXED: Revision dropdown population and event handling
- FIXED: Baseline revision persistence in live diff mode
- Enhanced documentation structure
- Fixed badge copy errors for README.md generation
- Improved regex patterns in build scripts
- Fixed release script issues
- Updated demo GIF maker tool
- Fixed CORS errors on markdown badges rendering
- Incremental build improvements
- NEW: GeoJSON rendering with interactive Leaflet maps
- NEW: TopoJSON support for geographic visualizations
- NEW: ASCII STL support for 3D model rendering
- IMPROVED: Enhanced content type detection and rendering
- FIXED: Math equation copy-paste functionality with proper sizing
- FIXED: Image copy-paste sizing issues in rendered content
- IMPROVED: Content copying reliability across different content types
- IMPROVED: SVG content width handling during copy operations
- NEW: SquibV CLI tool for command-line Markdown to HTML conversion
- NEW: Standalone build support for CLI distribution
- FIXED: Syntax highlighting bugs in code blocks
- IMPROVED: Release tooling and version management
- IMPROVED: Integration testing for CLI functionality
- Convert Markdown files to HTML from command line
- Support for offline bundling with
--bundle-offlineoption - Watch mode for automatic rebuilding
- Comprehensive help and documentation
- IMPROVED: Release management tools for both library and CLI versions
- IMPROVED: Build tools and automation scripts
- UPDATED: Documentation for CLI usage and installation
- FIXED: Math rendering issues in various contexts
- IMPROVED: MathJax integration and reliability
- UPDATED: Documentation and examples for math support
- FIXED: Runtime version identification issues
- FIXED: Bidirectional rendering problems with SVG content
- FIXED: SVG roundtrip editing in rendered → source updates
- IMPROVED: Bidirectional editing reliability and accuracy
- UPDATED: Release instructions and documentation
- MILESTONE: First stable 1.0 release
- STABLE: All core features tested and production-ready
- COMPLETE: Bidirectional editing (source ↔ rendered) fully functional
- COMPLETE: Comprehensive content type support
- NEW: CSV, TSV, and PSV inline block support with table rendering
- NEW: Smart line feed handling for better text flow
- IMPROVED: GitHub Actions CI workflow optimization
- IMPROVED: Build performance and testing speed
- UPDATED: Examples and documentation content
- IMPROVED: Image handling to preserve URLs in source view by default
- FIXED: React example import issues
- UPDATED: Example content and documentation
- ENHANCED: Image workflow for better user experience
- NEW: Standalone ESM build for modern module systems
- IMPROVED: React build configuration and compatibility
- FIXED: All build targets (ESM, UMD, Standalone) working correctly
- ENHANCED: Build reliability across different environments
- NEW: Full React build support with standalone ESM
- FIXED: React build configuration issues
- IMPROVED: Build system reliability
- ADDED: React-specific examples and documentation
- Text selection API with events for detecting when text is selected in either panel
onTextSelected()method to register callbacks for text selection eventsgetCurrentSelection()method to get current text selection datareplaceSelectedText()method for replacing selected textsetSelectionEditable()method to make selected text non-editabletoggleSelectionLock()method to smartly toggle between locked/unlocked states- Visual indicators for locked content (lock icon, styling)
clearSelection()method to clear current selectiononReplaceSelectedTextgetter/setter for handling selections and automatic replacement- Comprehensive documentation in
/docsdirectory - New examples for text selection features
- Selection data caching for improved performance
- Updated version in package.json and static version property
- Improved event handling for text selections
- Support for undo/redo in both source and rendered panels
- RevisionManager with memory-efficient diff storage
- Bidirectional editing enhancements
- Various bug fixes related to content type handling
- Bidirectional editing support
- Enhanced content type handling
- Support for CSV, TSV, and other separator formats
- Plugin system for extending functionality
- Support for RevealJS presentations
- Custom renderer registration
- Enhanced clipboard operations
- Initial release with core features
- Markdown and HTML rendering
- Split view editing
- Basic clipboard support
✅ Automated tooling: tools/make-release.sh script handles git tagging and GitHub releases
✅ Version synchronization: Automatic sync between package.json and src/version.js
✅ Pre-flight checks: Validates git status, authentication, and branch
✅ Manual npm publish: Prevents accidental publishes with dry-run preview
- Update package.json version
- Run
npm run prerelease(runs tests and builds) - Add release notes entry to this file
- Run
./tools/make-release.sh "release notes" - Test npm package locally
- Publish to npm with
npm publish - Update documentation if needed
- v1.0.19: Added streaming mode for LLMs to stream docs in w/o partial fence rendering errors
- v1.0.18: Integrated autoload, improved math rendering, consolidated examples
- v1.0.17: Line numbers support, theme improvements
- v1.0.16: Performance optimizations for large documents
- v1.0.15: Bundled dependencies in default builds, lean build options
- v1.0.13-14: Comprehensive diff view support
- v1.0.10: GeoJSON and 3D model support
- v1.0.5: CLI tool introduction
- v1.0.0: First stable release
- v0.0.27-30: Foundation releases with core features