- Migrated build logic from npm scripts to a dedicated `esbuild.config.mjs` file.
- Separated code quality checks (linting) and type checking (`tsc --noEmit`) into distinct pre-build steps.
- Fixed TypeScript module resolution in `tsconfig.json` to properly support bundlers.
- Automated the `dev` environment to instantly compile and copy assets to the local Obsidian vault on file changes.
- Updated README.md developer instructions to reflect the new build configuration process.
- Replaced manual language selection with Obsidian's native `getLanguage()` API.
- Removed `settings.language` from `PluginSettings` and cleaned up its lifecycle in `main.ts`.
- Updated "Translations & Languages" UI to be automated while keeping translation tools accessible.
- Removed `src/core/migrations.ts` entirely to comply with Obsidian guidelines (preventing modification of system hotkeys.json and community-plugins.json).
- Cleaned up related legacy ID migration logic from `main.ts` and `types.ts`.
- Bumped `minAppVersion` to `1.8.7` in preparation for native `getLanguage()` implementation.
- Removed unused `Notice` import in `main.ts`.
- Remove `HTMLElement.prototype.setCssProps` polyfill from `utils.ts`.
- Introduce `setCssPropsSafe` helper using standard `style.setProperty` and `removeProperty`.
- Migrate all core engines (Style, Background, Notice) to use the new safe helper.
- Update UI components and modals to ensure secure CSS property manipulation.
- Ensure no direct calls to the legacy `setCssProps` remain in the codebase.
- Update README title and license year to 2026.
- Clean up settings labels by removing redundant "settings" word in multiple locales (en, ar, fa, fr).
- Refactor profile navigation and theme toggle to use `checkCallback` for better command palette integration.
- Replace custom debounce implementation with official Obsidian API across UI components and utils.
- Remove redundant debounce code from utils and background scripts.
- add core color variables for navigation, links, editor, tables, canvas, tabs, and scrollbar active state
- add full official callout color set
- introduce RGB_TRIPLET_VARS for callout RGB triplets
- add normalizeHexColor and hexToRgbTriplet to color-pickers
- convert RGB triplets back to HEX in settingsTab for correct picker rendering
- extend TEXT_TO_BG_MAP for new text-related variables
- 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
- Break down the monolithic modals.ts into src/ui/modals/
- Group related modals into subdirectories (settings, editors, common, profiles)
- Implement a centralized export system via src/ui/modals/index.ts
- Improve code maintainability and resolve circular dependency risks"
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`.