Making version bumps easier

This commit is contained in:
Jason Swartz 2026-06-15 18:15:47 -07:00
parent d4275a4795
commit cffdd945a2
6 changed files with 90 additions and 66 deletions

69
CHANGELOG.md Normal file
View file

@ -0,0 +1,69 @@
# Changelog
Changes to the Settings Float plugin for Obsidian.
# [0.2.0](https://github.com/swartzrock/obsidian-settings-float-plugin/releases/tag/0.2.0)
Maintenance release for Obsidian community plugin submission feedback and release workflow cleanup.
## Fixed
- Uses Obsidian's `setCssStyles` helper for dynamic modal styles instead of assigning inline style properties directly.
- Uses Obsidian's `Setting(...).setHeading()` pattern for the plugin settings heading.
- Removes an unsafe iterator return in the open-enhancer lookup.
- Keeps numeric release tags aligned with `manifest.json` and `versions.json` instead of requiring a `v` prefix.
- Makes the narrow-window setting actually disable modal enhancement below the configured threshold.
- Corrects package repository, issues, and homepage metadata to the published repository URL.
- Uses Obsidian theme variables and focus-visible outlines for plugin controls.
## Changed
- Updates the plugin description to explicitly mention Settings, Theme, and Community Plugins dialogs.
- Adds test coverage support for Obsidian DOM helper methods in the JSDOM test environment.
## Compatibility
- Desktop-only release.
- Minimum Obsidian app version remains `1.6.0`.
- `versions.json` maps `0.2.0` to `1.6.0`.
## Release Artifacts
- `manifest.json`
- `main.js`
- `styles.css`
# [0.1.0](https://github.com/swartzrock/obsidian-settings-float-plugin/releases/tag/0.1.0)
Initial desktop release for moving and resizing the core Obsidian Settings modal.
## Added
- Detects and enhances only the main Obsidian Settings modal.
- Detects and enhances Obsidian's theme and community plugin browser dialogs.
- Moves Settings by dragging non-interactive empty space inside the dialog.
- Resizes Settings from a bottom-right corner grip.
- Persists valid Settings geometry per vault and restores it on reopen.
- Clamps geometry to the visible Obsidian window on open, resize, and host-window resize.
- Adds a plugin settings tab for movement, resizing, persistence, narrow-window, mobile, and reset controls.
- Leaves nested child dialogs, such as font pickers, untouched.
## Compatibility
- Desktop-only release.
- Mobile behavior is disabled.
- Settings modal selectors are centralized for future Obsidian DOM changes.
- Theme compatibility uses isolated CSS classes and Obsidian CSS variables, but custom themes still need manual validation.
## Release Artifacts
- `manifest.json`
- `main.js`
- `styles.css`

View file

@ -1,31 +0,0 @@
# Settings Float 0.1.0 Release Notes
Initial desktop release for moving and resizing the core Obsidian Settings modal.
## Added
- Detects and enhances only the main Obsidian Settings modal.
- Detects and enhances Obsidian's theme and community plugin browser dialogs.
- Moves Settings by dragging non-interactive empty space inside the dialog.
- Resizes Settings from a bottom-right corner grip.
- Persists valid Settings geometry per vault and restores it on reopen.
- Clamps geometry to the visible Obsidian window on open, resize, and host-window resize.
- Adds a plugin settings tab for movement, resizing, persistence, narrow-window, mobile, and reset controls.
- Leaves nested child dialogs, such as font pickers, untouched.
## Compatibility
- Desktop-only release.
- Mobile behavior is disabled.
- Settings modal selectors are centralized for future Obsidian DOM changes.
- Theme compatibility uses isolated CSS classes and Obsidian CSS variables, but custom themes still need manual validation.
## Release Artifacts
- `manifest.json`
- `main.js`
- `styles.css`
## Manual QA Required
Before publishing, verify Settings movement, resizing, persistence, nested dialogs, and host-window resize behavior in a real Obsidian vault.

View file

@ -1,34 +0,0 @@
# Settings Float 0.2.0 Release Notes
Maintenance release for Obsidian community plugin submission feedback and release workflow cleanup.
## Fixed
- Uses Obsidian's `setCssStyles` helper for dynamic modal styles instead of assigning inline style properties directly.
- Uses Obsidian's `Setting(...).setHeading()` pattern for the plugin settings heading.
- Removes an unsafe iterator return in the open-enhancer lookup.
- Keeps numeric release tags aligned with `manifest.json` and `versions.json` instead of requiring a `v` prefix.
- Makes the narrow-window setting actually disable modal enhancement below the configured threshold.
- Corrects package repository, issues, and homepage metadata to the published repository URL.
- Uses Obsidian theme variables and focus-visible outlines for plugin controls.
## Changed
- Updates the plugin description to explicitly mention Settings, Theme, and Community Plugins dialogs.
- Adds test coverage support for Obsidian DOM helper methods in the JSDOM test environment.
## Compatibility
- Desktop-only release.
- Minimum Obsidian app version remains `1.6.0`.
- `versions.json` maps `0.2.0` to `1.6.0`.
## Release Artifacts
- `manifest.json`
- `main.js`
- `styles.css`
## Manual QA Required
Before publishing, verify Settings, Theme, and Community Plugins dialogs can still be moved and resized in a real Obsidian vault.

View file

@ -30,7 +30,7 @@ export default defineConfig([
},
...obsidianmd.configs.recommended,
{
files: ["*.config.mjs"],
files: ["*.config.mjs", "version-bump.mjs"],
rules: typeAwareObsidianRules,
},
{

View file

@ -25,6 +25,7 @@
"build": "node esbuild.config.mjs production",
"eslint": "eslint .",
"lint": "eslint .",
"version": "node version-bump.mjs && git add manifest.json versions.json",
"typecheck": "tsc --noEmit",
"test": "vitest run --environment jsdom"
},

19
version-bump.mjs Normal file
View file

@ -0,0 +1,19 @@
import { readFileSync, writeFileSync } from 'fs';
const targetVersion = process.env.npm_package_version;
// read minAppVersion from manifest.json and bump version to target version
const manifest = JSON.parse(readFileSync('manifest.json', 'utf8'));
const { minAppVersion } = manifest;
manifest.version = targetVersion;
writeFileSync('manifest.json', JSON.stringify(manifest, null, ' '));
// update versions.json with target version and minAppVersion from manifest.json
// but only if the target version is not already in versions.json
const versions = JSON.parse(readFileSync('versions.json', 'utf8'));
if (!(targetVersion in versions)) {
versions[targetVersion] = minAppVersion;
writeFileSync('versions.json', JSON.stringify(versions, null, ' '));
}