Repository navigation
Releases: w0l1d/Universal-File-Viewer
Release list
v2.1.2
Changelog
All notable changes to the Universal File Viewer extension will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[Unreleased]
[2.1.0] - 2025-09-30
Added
- Search functionality in raw code view with highlighting
- Metadata display (Content-Type, Last-Modified, Encoding, ETag, line count)
- HTTP headers viewer for both success and error responses (403, 404, etc.)
- Synchronized hover highlighting between line numbers and code lines
- External CSS linking for better maintainability
Improved
- Fixed double scroll issue in raw code viewer
- Perfect line number alignment with code
- Reduced tree view spacing for compact display
- Enhanced hover highlights with 3px blue accent bar
- Better error handling - tabs disabled when content fails to load
Security
- Replaced innerHTML with DOM manipulation (createElement, textContent)
- Only show accessible request headers (User-Agent, Accept-Language, Referer)
- XSS protection improvements throughout codebase
Fixed
- Search not working in raw preview
- Headers not appearing on 403 errors
- View tabs remaining active on errors
- Prism.js duplicate line numbers
- Line number misalignment
Documentation
- Updated CLAUDE.md with accurate dual-mode architecture
- Comprehensive README rewrite with correct features and troubleshooting
[2.0.0] - 2025-01-25
Download Interception Architecture
BREAKING CHANGES
- Changed from content script enhancement to WebRequest interception
- Added
webRequestandwebRequestBlockingpermissions - Files display inline instead of downloading first
- Extension restart required after update
Added Features
Download Interception
- Intercepts requests using
webRequest.onBeforeRequestandonHeadersReceived - Detects files by extension (.json, .yaml, .xml, .csv, .toml) and MIME type
- Pre-fetches content during interception, stores in browser.storage.local
- 5-minute cache TTL with automatic cleanup
Native Firefox Interface
- Matches Firefox JSON viewer styling exactly
- Uses system fonts:
-apple-system, BlinkMacSystemFont, "Segoe UI" - Firefox color scheme:
#0060dfaccent,#0c0c0dtext - Automatic dark mode via
prefers-color-scheme
Tree View Renderer
- Recursive rendering for unlimited nesting depth
- Collapsible nodes with ▼/▶ disclosure triangles
- Type-specific styling: strings (#d73502), numbers (#0066cc), booleans (#8b008b)
- Shows
{n items}and[n items]summaries like native viewer
Multi-Format Parsers
- JSON: Native
JSON.parse() - YAML: js-yaml library integration
- XML:
DOMParserwith attribute support - CSV: Custom parser with header detection
- TOML: Regex-based section and key-value parsing
User Controls
- Copy URL button with Clipboard API +
document.execCommandfallback - Download button preserves original filename and MIME type
- Search with real-time highlighting via DOM traversal
- Pretty/Raw toggle between tree and text view
Keyboard Shortcuts
Ctrl+F: Focus search boxCtrl+R: Toggle Pretty/Raw viewCtrl+S: Download original fileCtrl+U: Copy original URL
Performance Improvements
- Initial render: <50ms (vs 500ms+ in v4.x)
- Memory usage: <1MB (vs 3-5MB in v4.x)
- File size support: 10MB+ (vs 1MB in v4.x)
- Network requests: 1 per file (vs 2+ in v4.x)
- CORS failures: 0% (vs 15-30% in v4.x)
Technical Changes
- New file:
viewer.html(386 lines) - Complete viewer interface - New file:
js/viewer.js(900+ lines) - Tree rendering and interactions - Rewritten:
js/background.js- WebRequest interception and caching - Updated:
manifest.json- Added webRequest permissions
Browser Compatibility
- Firefox 88+ (WebExtension Manifest v2)
- Windows, macOS, Linux
- Screen reader support (NVDA, JAWS, VoiceOver)
- CSP Level 2 compliant
[1.0.0] - 2024-01-XX
Added
- Professional Syntax Highlighting - Integrated Highlight.js for industry-standard syntax highlighting
- Interactive Tree View - Added JSON Viewer Web Component for collapsible tree structure display
- Dual View Mode - Toggle between tree view and syntax-highlighted code view
- Expand/Collapse All - Buttons to expand or collapse entire tree structure at once
- Enhanced File Operations
- Copy content to clipboard functionality
- Download files with proper filename and content type
- View raw file content in new tab
- Direct link access to original file URL
- Automated Dependency Management - Setup script downloads all required libraries
- Format Support
- JSON with tree view and syntax highlighting
- YAML with tree view and syntax highlighting
- XML parsing and syntax highlighting
- CSV formatting support
- TOML basic support
- Error Handling - Graceful handling of malformed files with user-friendly error messages
- File Information Display - Shows file size, type, and character count
- Professional UI - Clean, modern interface with proper theming
Technical Improvements
- Plugin Architecture - Extensible system for adding new file format support
- Service-Oriented Design - Separate services for detection, formatting, and highlighting
- Memory Management - Proper cleanup of blob URLs and resources
- State Management - Robust state handling for view transitions
- Event System - Custom event system for component communication
- Testing Framework - Jest-based testing with format-specific test organization
- Build System - NPM and Make-based build system with linting and testing
- CSP Compliance - Content Security Policy compliant code
Dependencies
- Runtime Dependencies (auto-downloaded):
- js-yaml 4.1.0 - YAML parsing and formatting
- Highlight.js 11.11.1 - Professional syntax highlighting
- JSON Viewer Web Component 2.1.0 - Interactive tree view
- Development Dependencies:
- web-ext - Firefox extension development tools
- jest - JavaScript testing framework
- eslint - Code linting and style checking
Security
- No eval() usage - All code avoids dynamic code execution
- Input validation - Comprehensive validation of all user inputs and file content
- CSP compliance - Works within Content Security Policy restrictions
- Minimal permissions - Requests only necessary browser permissions
Performance
- Lazy loading - Format handlers loaded only when needed
- Efficient rendering - Optimized highlighting and tree view rendering
- Memory optimization - Proper resource cleanup and memory management
- Caching - Parsed results and highlighted content cached during session
Bug Fixes
- Fixed expand all functionality that was incorrectly collapsing nodes
- Resolved syntax highlighting loss when toggling between views
- Fixed timing issues with Web Component method availability
- Improved error handling for malformed YAML and JSON files
Breaking Changes
- Replaced custom highlighting system with Highlight.js (affects custom themes)
- Changed file detection priority system (may affect format detection order)
- Updated manifest permissions (requires reinstallation for existing users)
Development Notes
Version Numbering
- Major version (X.0.0): Breaking changes, major new features
- Minor version (0.X.0): New features, backwards compatible
- Patch version (0.0.X): Bug fixes, minor improvements
Release Process
- Update version in
manifest.json - Update
CHANGELOG.mdwith release date and final changes - Run tests:
npm test - Build extension:
npm run build - Create GitHub release with built extension package
- Tag release in git:
git tag v1.0.0
Migration Guide
From Custom Highlighting to Highlight.js
If you were using custom highlighting themes, you'll need to:
- Update CSS to use Highlight.js classes (
.hljs-*) - Review color schemes for compatibility
- Test with all supported file formats
For Extension Developers
- Format handlers now use standardized token types
- Detection system uses priority-based ordering
- Error handling must return structured objects
- Tests should follow the new format in
test/formats/
Roadmap
Next Release (1.1.0)
- Support for more file formats (INI, ENV, LOG)
- Custom theme support
- Advanced search and filtering in tree view
- Performance improvements for large files
- Accessibility enhancements
Future Releases
- Binary file viewer (hex editor)
- Diff view for comparing files
- Export to different formats
- JSONPath/XPath query support
- Plugin marketplace for community formats
- Chrome extension port
- Offline documentation viewer
Contributors
- Initial development and architecture
- Professional highlighting integration
- Tree view implementation
- Testing framework setup
- Documentation and GitHub integration
Acknowledgments
- Highlight.js - Professional syntax highlighting
- JSON Viewer Web Component - Interactive tree view
- js-yaml - YAML parsing support
- Firefox Add-ons team for excellent documentation and tools
v2.1.1
Changelog
All notable changes to the Universal File Viewer extension will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[Unreleased]
[2.1.0] - 2025-09-30
Added
- Search functionality in raw code view with highlighting
- Metadata display (Content-Type, Last-Modified, Encoding, ETag, line count)
- HTTP headers viewer for both success and error responses (403, 404, etc.)
- Synchronized hover highlighting between line numbers and code lines
- External CSS linking for better maintainability
Improved
- Fixed double scroll issue in raw code viewer
- Perfect line number alignment with code
- Reduced tree view spacing for compact display
- Enhanced hover highlights with 3px blue accent bar
- Better error handling - tabs disabled when content fails to load
Security
- Replaced innerHTML with DOM manipulation (createElement, textContent)
- Only show accessible request headers (User-Agent, Accept-Language, Referer)
- XSS protection improvements throughout codebase
Fixed
- Search not working in raw preview
- Headers not appearing on 403 errors
- View tabs remaining active on errors
- Prism.js duplicate line numbers
- Line number misalignment
Documentation
- Updated CLAUDE.md with accurate dual-mode architecture
- Comprehensive README rewrite with correct features and troubleshooting
[2.0.0] - 2025-01-25
Download Interception Architecture
BREAKING CHANGES
- Changed from content script enhancement to WebRequest interception
- Added
webRequestandwebRequestBlockingpermissions - Files display inline instead of downloading first
- Extension restart required after update
Added Features
Download Interception
- Intercepts requests using
webRequest.onBeforeRequestandonHeadersReceived - Detects files by extension (.json, .yaml, .xml, .csv, .toml) and MIME type
- Pre-fetches content during interception, stores in browser.storage.local
- 5-minute cache TTL with automatic cleanup
Native Firefox Interface
- Matches Firefox JSON viewer styling exactly
- Uses system fonts:
-apple-system, BlinkMacSystemFont, "Segoe UI" - Firefox color scheme:
#0060dfaccent,#0c0c0dtext - Automatic dark mode via
prefers-color-scheme
Tree View Renderer
- Recursive rendering for unlimited nesting depth
- Collapsible nodes with ▼/▶ disclosure triangles
- Type-specific styling: strings (#d73502), numbers (#0066cc), booleans (#8b008b)
- Shows
{n items}and[n items]summaries like native viewer
Multi-Format Parsers
- JSON: Native
JSON.parse() - YAML: js-yaml library integration
- XML:
DOMParserwith attribute support - CSV: Custom parser with header detection
- TOML: Regex-based section and key-value parsing
User Controls
- Copy URL button with Clipboard API +
document.execCommandfallback - Download button preserves original filename and MIME type
- Search with real-time highlighting via DOM traversal
- Pretty/Raw toggle between tree and text view
Keyboard Shortcuts
Ctrl+F: Focus search boxCtrl+R: Toggle Pretty/Raw viewCtrl+S: Download original fileCtrl+U: Copy original URL
Performance Improvements
- Initial render: <50ms (vs 500ms+ in v4.x)
- Memory usage: <1MB (vs 3-5MB in v4.x)
- File size support: 10MB+ (vs 1MB in v4.x)
- Network requests: 1 per file (vs 2+ in v4.x)
- CORS failures: 0% (vs 15-30% in v4.x)
Technical Changes
- New file:
viewer.html(386 lines) - Complete viewer interface - New file:
js/viewer.js(900+ lines) - Tree rendering and interactions - Rewritten:
js/background.js- WebRequest interception and caching - Updated:
manifest.json- Added webRequest permissions
Browser Compatibility
- Firefox 88+ (WebExtension Manifest v2)
- Windows, macOS, Linux
- Screen reader support (NVDA, JAWS, VoiceOver)
- CSP Level 2 compliant
[1.0.0] - 2024-01-XX
Added
- Professional Syntax Highlighting - Integrated Highlight.js for industry-standard syntax highlighting
- Interactive Tree View - Added JSON Viewer Web Component for collapsible tree structure display
- Dual View Mode - Toggle between tree view and syntax-highlighted code view
- Expand/Collapse All - Buttons to expand or collapse entire tree structure at once
- Enhanced File Operations
- Copy content to clipboard functionality
- Download files with proper filename and content type
- View raw file content in new tab
- Direct link access to original file URL
- Automated Dependency Management - Setup script downloads all required libraries
- Format Support
- JSON with tree view and syntax highlighting
- YAML with tree view and syntax highlighting
- XML parsing and syntax highlighting
- CSV formatting support
- TOML basic support
- Error Handling - Graceful handling of malformed files with user-friendly error messages
- File Information Display - Shows file size, type, and character count
- Professional UI - Clean, modern interface with proper theming
Technical Improvements
- Plugin Architecture - Extensible system for adding new file format support
- Service-Oriented Design - Separate services for detection, formatting, and highlighting
- Memory Management - Proper cleanup of blob URLs and resources
- State Management - Robust state handling for view transitions
- Event System - Custom event system for component communication
- Testing Framework - Jest-based testing with format-specific test organization
- Build System - NPM and Make-based build system with linting and testing
- CSP Compliance - Content Security Policy compliant code
Dependencies
- Runtime Dependencies (auto-downloaded):
- js-yaml 4.1.0 - YAML parsing and formatting
- Highlight.js 11.11.1 - Professional syntax highlighting
- JSON Viewer Web Component 2.1.0 - Interactive tree view
- Development Dependencies:
- web-ext - Firefox extension development tools
- jest - JavaScript testing framework
- eslint - Code linting and style checking
Security
- No eval() usage - All code avoids dynamic code execution
- Input validation - Comprehensive validation of all user inputs and file content
- CSP compliance - Works within Content Security Policy restrictions
- Minimal permissions - Requests only necessary browser permissions
Performance
- Lazy loading - Format handlers loaded only when needed
- Efficient rendering - Optimized highlighting and tree view rendering
- Memory optimization - Proper resource cleanup and memory management
- Caching - Parsed results and highlighted content cached during session
Bug Fixes
- Fixed expand all functionality that was incorrectly collapsing nodes
- Resolved syntax highlighting loss when toggling between views
- Fixed timing issues with Web Component method availability
- Improved error handling for malformed YAML and JSON files
Breaking Changes
- Replaced custom highlighting system with Highlight.js (affects custom themes)
- Changed file detection priority system (may affect format detection order)
- Updated manifest permissions (requires reinstallation for existing users)
Development Notes
Version Numbering
- Major version (X.0.0): Breaking changes, major new features
- Minor version (0.X.0): New features, backwards compatible
- Patch version (0.0.X): Bug fixes, minor improvements
Release Process
- Update version in
manifest.json - Update
CHANGELOG.mdwith release date and final changes - Run tests:
npm test - Build extension:
npm run build - Create GitHub release with built extension package
- Tag release in git:
git tag v1.0.0
Migration Guide
From Custom Highlighting to Highlight.js
If you were using custom highlighting themes, you'll need to:
- Update CSS to use Highlight.js classes (
.hljs-*) - Review color schemes for compatibility
- Test with all supported file formats
For Extension Developers
- Format handlers now use standardized token types
- Detection system uses priority-based ordering
- Error handling must return structured objects
- Tests should follow the new format in
test/formats/
Roadmap
Next Release (1.1.0)
- Support for more file formats (INI, ENV, LOG)
- Custom theme support
- Advanced search and filtering in tree view
- Performance improvements for large files
- Accessibility enhancements
Future Releases
- Binary file viewer (hex editor)
- Diff view for comparing files
- Export to different formats
- JSONPath/XPath query support
- Plugin marketplace for community formats
- Chrome extension port
- Offline documentation viewer
Contributors
- Initial development and architecture
- Professional highlighting integration
- Tree view implementation
- Testing framework setup
- Documentation and GitHub integration
Acknowledgments
- Highlight.js - Professional syntax highlighting
- JSON Viewer Web Component - Interactive tree view
- js-yaml - YAML parsing support
- Firefox Add-ons team for excellent documentation and tools
v2.1.0
Changelog
All notable changes to the Universal File Viewer extension will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[Unreleased]
[2.1.0] - 2025-09-30
Added
- Search functionality in raw code view with highlighting
- Metadata display (Content-Type, Last-Modified, Encoding, ETag, line count)
- HTTP headers viewer for both success and error responses (403, 404, etc.)
- Synchronized hover highlighting between line numbers and code lines
- External CSS linking for better maintainability
Improved
- Fixed double scroll issue in raw code viewer
- Perfect line number alignment with code
- Reduced tree view spacing for compact display
- Enhanced hover highlights with 3px blue accent bar
- Better error handling - tabs disabled when content fails to load
Security
- Replaced innerHTML with DOM manipulation (createElement, textContent)
- Only show accessible request headers (User-Agent, Accept-Language, Referer)
- XSS protection improvements throughout codebase
Fixed
- Search not working in raw preview
- Headers not appearing on 403 errors
- View tabs remaining active on errors
- Prism.js duplicate line numbers
- Line number misalignment
Documentation
- Updated CLAUDE.md with accurate dual-mode architecture
- Comprehensive README rewrite with correct features and troubleshooting
[2.0.0] - 2025-01-25
Download Interception Architecture
BREAKING CHANGES
- Changed from content script enhancement to WebRequest interception
- Added
webRequestandwebRequestBlockingpermissions - Files display inline instead of downloading first
- Extension restart required after update
Added Features
Download Interception
- Intercepts requests using
webRequest.onBeforeRequestandonHeadersReceived - Detects files by extension (.json, .yaml, .xml, .csv, .toml) and MIME type
- Pre-fetches content during interception, stores in browser.storage.local
- 5-minute cache TTL with automatic cleanup
Native Firefox Interface
- Matches Firefox JSON viewer styling exactly
- Uses system fonts:
-apple-system, BlinkMacSystemFont, "Segoe UI" - Firefox color scheme:
#0060dfaccent,#0c0c0dtext - Automatic dark mode via
prefers-color-scheme
Tree View Renderer
- Recursive rendering for unlimited nesting depth
- Collapsible nodes with ▼/▶ disclosure triangles
- Type-specific styling: strings (#d73502), numbers (#0066cc), booleans (#8b008b)
- Shows
{n items}and[n items]summaries like native viewer
Multi-Format Parsers
- JSON: Native
JSON.parse() - YAML: js-yaml library integration
- XML:
DOMParserwith attribute support - CSV: Custom parser with header detection
- TOML: Regex-based section and key-value parsing
User Controls
- Copy URL button with Clipboard API +
document.execCommandfallback - Download button preserves original filename and MIME type
- Search with real-time highlighting via DOM traversal
- Pretty/Raw toggle between tree and text view
Keyboard Shortcuts
Ctrl+F: Focus search boxCtrl+R: Toggle Pretty/Raw viewCtrl+S: Download original fileCtrl+U: Copy original URL
Performance Improvements
- Initial render: <50ms (vs 500ms+ in v4.x)
- Memory usage: <1MB (vs 3-5MB in v4.x)
- File size support: 10MB+ (vs 1MB in v4.x)
- Network requests: 1 per file (vs 2+ in v4.x)
- CORS failures: 0% (vs 15-30% in v4.x)
Technical Changes
- New file:
viewer.html(386 lines) - Complete viewer interface - New file:
js/viewer.js(900+ lines) - Tree rendering and interactions - Rewritten:
js/background.js- WebRequest interception and caching - Updated:
manifest.json- Added webRequest permissions
Browser Compatibility
- Firefox 88+ (WebExtension Manifest v2)
- Windows, macOS, Linux
- Screen reader support (NVDA, JAWS, VoiceOver)
- CSP Level 2 compliant
[1.0.0] - 2024-01-XX
Added
- Professional Syntax Highlighting - Integrated Highlight.js for industry-standard syntax highlighting
- Interactive Tree View - Added JSON Viewer Web Component for collapsible tree structure display
- Dual View Mode - Toggle between tree view and syntax-highlighted code view
- Expand/Collapse All - Buttons to expand or collapse entire tree structure at once
- Enhanced File Operations
- Copy content to clipboard functionality
- Download files with proper filename and content type
- View raw file content in new tab
- Direct link access to original file URL
- Automated Dependency Management - Setup script downloads all required libraries
- Format Support
- JSON with tree view and syntax highlighting
- YAML with tree view and syntax highlighting
- XML parsing and syntax highlighting
- CSV formatting support
- TOML basic support
- Error Handling - Graceful handling of malformed files with user-friendly error messages
- File Information Display - Shows file size, type, and character count
- Professional UI - Clean, modern interface with proper theming
Technical Improvements
- Plugin Architecture - Extensible system for adding new file format support
- Service-Oriented Design - Separate services for detection, formatting, and highlighting
- Memory Management - Proper cleanup of blob URLs and resources
- State Management - Robust state handling for view transitions
- Event System - Custom event system for component communication
- Testing Framework - Jest-based testing with format-specific test organization
- Build System - NPM and Make-based build system with linting and testing
- CSP Compliance - Content Security Policy compliant code
Dependencies
- Runtime Dependencies (auto-downloaded):
- js-yaml 4.1.0 - YAML parsing and formatting
- Highlight.js 11.11.1 - Professional syntax highlighting
- JSON Viewer Web Component 2.1.0 - Interactive tree view
- Development Dependencies:
- web-ext - Firefox extension development tools
- jest - JavaScript testing framework
- eslint - Code linting and style checking
Security
- No eval() usage - All code avoids dynamic code execution
- Input validation - Comprehensive validation of all user inputs and file content
- CSP compliance - Works within Content Security Policy restrictions
- Minimal permissions - Requests only necessary browser permissions
Performance
- Lazy loading - Format handlers loaded only when needed
- Efficient rendering - Optimized highlighting and tree view rendering
- Memory optimization - Proper resource cleanup and memory management
- Caching - Parsed results and highlighted content cached during session
Bug Fixes
- Fixed expand all functionality that was incorrectly collapsing nodes
- Resolved syntax highlighting loss when toggling between views
- Fixed timing issues with Web Component method availability
- Improved error handling for malformed YAML and JSON files
Breaking Changes
- Replaced custom highlighting system with Highlight.js (affects custom themes)
- Changed file detection priority system (may affect format detection order)
- Updated manifest permissions (requires reinstallation for existing users)
Development Notes
Version Numbering
- Major version (X.0.0): Breaking changes, major new features
- Minor version (0.X.0): New features, backwards compatible
- Patch version (0.0.X): Bug fixes, minor improvements
Release Process
- Update version in
manifest.json - Update
CHANGELOG.mdwith release date and final changes - Run tests:
npm test - Build extension:
npm run build - Create GitHub release with built extension package
- Tag release in git:
git tag v1.0.0
Migration Guide
From Custom Highlighting to Highlight.js
If you were using custom highlighting themes, you'll need to:
- Update CSS to use Highlight.js classes (
.hljs-*) - Review color schemes for compatibility
- Test with all supported file formats
For Extension Developers
- Format handlers now use standardized token types
- Detection system uses priority-based ordering
- Error handling must return structured objects
- Tests should follow the new format in
test/formats/
Roadmap
Next Release (1.1.0)
- Support for more file formats (INI, ENV, LOG)
- Custom theme support
- Advanced search and filtering in tree view
- Performance improvements for large files
- Accessibility enhancements
Future Releases
- Binary file viewer (hex editor)
- Diff view for comparing files
- Export to different formats
- JSONPath/XPath query support
- Plugin marketplace for community formats
- Chrome extension port
- Offline documentation viewer
Contributors
- Initial development and architecture
- Professional highlighting integration
- Tree view implementation
- Testing framework setup
- Documentation and GitHub integration
Acknowledgments
- Highlight.js - Professional syntax highlighting
- JSON Viewer Web Component - Interactive tree view
- js-yaml - YAML parsing support
- Firefox Add-ons team for excellent documentation and tools