- extracted core logic into dedicated modules
- simplified main.ts and settingsTab.ts
- improved maintainability and separation of concerns
- no functional changes intended
- change manifest ID from color-master to theme-engine
- add first-run migration for settings, hotkeys, and enabled-plugin list
- refactor architecture and modularize UI
- migrate styles to structured SCSS setup
- clean lint configuration and remove deprecated eslint plugin
- update README, dev paths, and release metadata
Integrates Prettier into the build process for automatic code formatting
and refactors the SCSS file structure for better maintainability.
- Added `prettier` and `cpy-cli` as dev dependencies.
- Updated `package.json` scripts:
- `npm run format` now runs automatically before `dev` and `build`.
- `dev` script now uses `cpy-cli` for cross-platform compatibility instead of native `copy`.
- Refactored SCSS files:
- Consolidated all `@keyframes` into `_base.scss` and removed duplicates from `_components.scss` and `_modals.scss`.
- Moved modal-specific CSS from `_base.scss` to `_modals.scss`.
- Moved `.notice` styling from `_components.scss` to `_base.scss`.
- Fixed UI/UX issues:
- The snippet "Lock" button now correctly shows `cursor: pointer` and changes color based on its locked/unlocked state.
- The snippet drag handle (`.cm-snippet-drag-handle`) now correctly shows `cursor: not-allowed` when locked.
- Fixed text wrapping issues in modals by removing `max-width: 80%` from `.setting-item-description`.
This massive update introduces the plugin's most-requested feature: **Video Backgrounds**. We've also completely rebuilt the "Custom Variable" system and delivered major performance and user experience enhancements.
- **Video Background Support:** Fully supports `.mp4` and `.webm` video files as backgrounds.
- **Redesigned Settings Modal:** The "Background Settings" (⚙️) modal is now completely redesigned with dedicated **Image** and **Video** tabs.
- **Dedicated Video Settings:** Includes a **Video Opacity** slider and a **Mute Video** toggle.
- **Interactive Previews:** Video previews in the "Browse Backgrounds" modal are now interactive (click to play/pause).
- **Active Background Highlight:** The currently active background is now highlighted in the "Browse Backgrounds" modal.
- **Support for Multiple Data Types:** Rebuilt the feature to support 'Color', 'Size (px/em)', 'Text', and 'Number' types.
- **Context-Aware Controls:** The UI now renders the correct control for each custom variable type on both the creation modal and the main settings page.
- **Duplicate Prevention:** The modal intelligently checks against all existing variables to prevent duplicates.
- **Improved Search & Highlighting:** Custom variables are now fully searchable by their name *and* description, with highlighting on both.
- **Remember Settings State:** The plugin now remembers your last search query and scroll position in the settings tab.
- **Smarter Plugin Reset:** The "Reset All Data" function now preserves crucial data: Installation Date ("Days of Use"), Language, and RTL/LTR layout settings.
- **Fixed: Background Switching Flicker:** The visual flicker that occurred when switching between backgrounds has been eliminated.
- **Performance:** Includes the new **"Convert to JPG"** image conversion feature for better file size management.
---
[For full details on code changes and fixes, please see the CHANGELOG.md]
This major update introduces the highly requested Custom Backgrounds feature, allowing users to set per-profile background images.
**Features:**
- Add images via file upload, paste (URL/image), or drag & drop.
- Images are saved to profile-specific folders (`.obsidian/backgrounds/<ProfileName>`).
- New Image Browser modal to view, select, rename (with locked extension), and delete profile images.
- Added Enable/Disable toggle for background images in a new settings modal.
**Improvements:**
- Implemented smart transparency: Key UI variables are set to transparent when background is active and restored when disabled/removed.
- Enhanced UI/RTL consistency, fixing issues in modals and with the language icon.
This is a major quality-of-life release that introduces deep integration with the user's Obsidian environment, adds several powerful new features, and includes a significant code refactoring for better security and stability.
Key changes include:
- Implemented a quick theme toggle button (light/dark/auto) in the Profile Manager.
- Added a new command/hotkey to cycle the active profile's theme.
- Added a "Reset Plugin to Factory Defaults" feature.
- Redesigned the "Advanced Settings" section with a modern card-based UI.
- Major code refactoring to remove inline `.style` and `.innerHTML` usage, improving security and themability.
- Fixed a critical bug with multi-word tag rendering (e.g., #tag_with_words).
This release introduces Global CSS Snippets, new workflow hotkeys,
and a major UI overhaul for a cleaner and more intuitive experience.
Key features include:
- Global Snippets for styles that apply to all profiles.
- New hotkeys for cycling to the previous profile and opening settings.
- A dedicated ribbon icon for quick settings access.
- Flexible RTL layout control for RTL language users.
Fixes & Improvements:
- Redesigned and streamlined settings UI.
- Simplified CSS import workflow.
- Reorganized Iconize plugin settings into a dedicated modal.
For full details, see the CHANGELOG.md.