- Redesigned the settings tab to support structured categories (General, PDF Export, TikZJax, Custom Notes, and What's New)
- Implemented a search-based filter in settings that dynamically hides/shows items and highlights matching terms
- Added i18n support with `en.json` and a type-safe `t()` utility to handle localized sentence-case labels
- Integrated a startup check and "What's New" modal to display the latest updates on first launch or version updates
- Declared global `activeDocument` and `activeWindow` properties on the Window interface to ensure strict TypeScript type-safety
- Fixed all ESLint issues including deprecated `display()` calls, manual HTML headings, sentence case warnings, and unused variables
- Added documentation links support and a feedback footer at the bottom of the settings tab
- Adds a `tightenColumn` helper to override and clear margins/paddings on all inner elements (paragraphs, math blocks, code wrappers, SVGs, MathJax containers).
- Executes spacing compression at delayed intervals (0ms, 50ms, 150ms, 500ms) to ensure late-rendered asynchronous elements are properly shrunk.
- Pulls surrounding paragraph text closer by setting the row element margin to `-0.5em 0`.
- Ensures proper component cleanups via `ctx.addChild` and `destroy()` to prevent memory leaks.
- Implements support for `;;;row: [widths]` and `;;` columns to render side-by-side layouts dynamically.
- Integrates a CodeMirror 6 `StateField` using `Decoration.replace` for Live Preview, enabling seamless inline layout folding.
- Adds click-to-edit handling which dispatches selection to the raw source code when clicking a rendered layout.
- Ensures robust component lifecycle management: tracks and unloads rendering components via `destroy()` in Live Preview widgets and `ctx.addChild` in Reading View to prevent memory leaks.
- Bumps manifest.json to v2.3.0.
- Added a modular `TikzRenderer` in `src/features/tikz/renderer.ts` to process `tikz` code blocks.
- Fetches and caches the offline-friendly, self-contained 7MB TikZJax JS engine from artisticat1/obsidian-tikzjax.
- Dynamically patches the engine's initialization to execute immediately (bypassing window.onload and document.readyState race conditions).
- Implements a programmatic `TikzJaxCleanup` function that terminates WebAssembly worker pools and disconnects MutationObservers when the plugin unloads, supporting safe Hot Reloads.
- Simplifies block element styling to render transparently and center-aligned, matching standard notes.
- Added Settings UI controls (`enableTikzjax` and `invertColorsInDarkMode`) to manage diagram color inversion and toggle rendering status.
- Integrated `TikzRenderer` setup and cleanup into the main plugin lifecycle.
- Refactor export modal to use a 2-column flex layout (preview left, settings right).
- Increase modal dimensions to 90vw width and 90vh height for better visibility.
- Fix PDF preview sizing to ensure full width and height are visible by calculating webview height from physical page dimensions.
- Remove padding and alignment constraints from the preview container to maximize space.
- Add `Snippet` interface and persistent storage in settings
- Implement `SnippetManager` to handle snippet logic and command registration
- Add settings UI for creating, editing, and deleting snippets
- Add `SnippetSuggestModal` for fuzzy searching and inserting snippets
- Register "Insert Snippet" command and individual commands for each snippet to enable custom hotkey assignments
- Added new modules for Quick Preview:
- `hoverParent.ts`, `patcher.ts`, `popoverManager.ts`, `types.ts`, and `utils.ts`.
- Updated `declarations.d.ts` with reusable `Suggestions` interface for type safety.
- Removed `obsidian-quick-preview` dependency from `main.ts`.
- Integrated internal Quick Preview patcher for `LinkAutocomplete` and `MathSearchModal`.
- Improved item normalization for precise linking via block IDs.
- Enhanced modularity and user experience with better hover popover management.
- Deleted unused CSS/SCSS files: generated-styles.css, obsidian-styles.css, styles.scss, framed.scss, plain.scss, mathwiki.scss, vivid.scss, and main.css.
- Introduced new `main.css` with optimized styles for equation numbering, theorem callouts, and dependency validation.
- Updated esbuild.config.mjs to copy `main.css` to the development vault.
- Simplified `renderSuggestion` in `core-search.ts` and removed redundant class logic in `modal.ts`.
- Streamlined styling and improved maintainability while enhancing search behavior.
- Removed unused module declaration in `src/declarations.d.ts`.
- Cleaned up `live-preview-equations.ts` by removing unused imports and the `EquationNumberWidget` class.
- Simplified `editor.ts` by removing redundant utility functions.
- Streamlined `general.ts` by eliminating unused helper functions.
- Refactored `obsidian.ts` to remove obsolete file utilities, cache/metadata handlers, and markdown view helpers.
- Deleted the `parseLatexComment` function from `parse.ts`.
- Removed the `render.ts` file, which contained unused rendering utilities.
- Overall, reduced code clutter and improved maintainability.
- Deleted `numbering.ts`, `reading-view.ts`, and `core.ts`, removing outdated logic for equation numbering and search.
- Updated `main.ts` to use new import paths under `features/` directory.
- Removed references to deleted modules and ensured all imports reflect the reorganized feature-based structure.
- Internal refactor to modularize and modernize the codebase; no user-facing features affected.
- Deleted `cleveref.ts` and removed `CleverefProvider` class.
- Removed `obsidian-mathlinks` dependency from package.json.
- Cleaned up `main.ts` by removing MathLinks imports, registration logic, and user notices.
- Refactored `live-preview-link-renderer.ts` to simplify link decoration logic and remove verbose debug logs.
- Removed all MathLinks-related code paths and settings.
- Plugin now fully relies on its own equation reference logic for rendering and linking.
- Updated reference parsing to support sub-equation links (e.g., [[#^eq-abc-2]]).
- Enhanced tag manager to handle multi-tagging with sub-indices (e.g., \tag{1.2}).
- Improved single-tag logic for consistent cleanup and insertion.
- Propagated sub-index data through numbering.ts and provider.ts.
- Extended `EquationBlock` with `$subIndices?: Set<number>` for granular tracking.
- Modified reading view to suppress numbering for sub-indexed equations.
- Refactored block ID insertion to use comment format (`% id: eq-...`) before closing $$.
- Cleaned up legacy code and improved comments for clarity and consistency.
- Rewrote live preview equation numbering using `EquationInfo` and a robust math block parser.
- Added `TagManager` to manage `\tag{...}` commands based on reference counts and settings.
- Injected unique internal IDs into all math blocks.
- Enhanced `processActiveNoteEquations` to support both legacy and new-style equation links.
- Refactored reading view processor to read file content directly, supporting embeds, hover preview, and PDF export.
- Improved mapping of math block positions to equation numbers, avoiding duplicates.
- Ensured consistent equation referencing and numbering across all plugin views.
- Cleaned up and modularized code for better maintainability and future extensibility
Simplified plugin settings:
- Replaced multi-profile settings with a single `PluginSettings` object.
- Removed legacy fields and logic (e.g., `extraSettings`, `indexManager`, theorem/proof callouts).
- Flattened settings structure for easier loading/saving.
Standardized equation types:
- Unified all equation-related types to use `EquationBlock` from `types`.
- Updated imports across cleveref.ts, provider.ts, numbering.ts, live-preview.ts, and core.ts.
- Refactored `processActiveNoteEquations` to use plugin settings directly.
Refactored provider and equation number logic:
- Simplified `CleverefProvider` by removing index-based logic.
- Updated equation number widget and reading view to use new types and settings.
Improved search and suggestions:
- Refactored `ActiveNoteSearchCore` to use updated provider and settings.
- Unified suggestion rendering and link insertion logic.
General cleanup:
- Removed dead, commented, and obsolete code.
- Reduced indirection and legacy compatibility layers for better maintainability.
- Introduced `numbering.ts` with `processActiveNoteEquations` to process equations, count backlinks, and assign print/reference names.
- Refactored `provider.ts` to accept file content as string instead of Editor instance, improving reliability in Live Preview.
- Updated `live-preview.ts` to use CodeMirror decorations and new equation processing logic;
removed index dependency.
- Simplified `reading-view.ts` by removing `EquationNumberRenderer` and using new processor.
- Refactored `cleveref.ts` to resolve block references and equation names via new utility;
improved block link and note title handling.
- Updated `core.ts` to pass editor content string to equation provider.
- Enhanced `main.ts` with debug logging and error handling for MathLinks provider registration.
This refactor improves accuracy and reliability of equation handling across views
by operating directly on file content and unifying equation processing logic.