sotashimozono_obsidian-remo.../plugin
sotashimozono 7d1830d549
build: root devDeps + obsidian pin so the validator passes (no workflow changes) (#393)
* build(workspaces): root npm-workspaces so the validator resolves plugin types

ObsidianReviewBot scans from the repo ROOT (getManifest reads cwd/manifest.json),
installs at the root, and type-checks plugin/src via ./tsconfig.json with
@typescript-eslint/no-unsafe-member-access. The plugin lives in plugin/ with deps in
plugin/node_modules, so a root install resolved nothing -> @types/node + obsidian
unresolved -> false "unsafe member access" warnings. #392 (typeRoots) couldn't help
because plugin/node_modules doesn't exist in the validator's root-only install.

Declare the root as an npm workspace ({ workspaces: ["plugin"] }). A root install now
hoists the plugin's deps into root/node_modules; the root tsconfig's typeRoots picks
them up. Verified by simulating the validator (rm plugin/node_modules; install at root
only): @types/node + obsidian hoisted, eslint from cwd=root -> 0 unsafe-member-access.

CI unaffected: cd plugin; npm ci still works (plugin/package-lock.json retained, 439
packages, 0 vuln) -- no workflow changes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* build(deps): pin obsidian to ~1.12.3 so the validator type-checks deprecation-free

With the workspace root now resolving types, a root install pulled obsidian "latest"
= 1.13.0, which deprecates SettingTab.display() and ButtonComponent.setWarning(). The
validator's @typescript-eslint/no-deprecated then flagged 9 errors in SettingsTab.ts
that the plugin's own CI never saw (plugin lock pinned 1.12.3).

"obsidian": "latest" is a non-reproducible anti-pattern regardless. Pin to ~1.12.3
(the last release before those APIs were deprecated). Verified by simulating the
validator (root install -> obsidian 1.12.3; eslint from cwd=root): 0 no-deprecated,
0 unsafe-member-access, EXIT 0.

The declarative getSettingDefinitions()/setDestructive() migration is deferred until
we intentionally raise the obsidian floor.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* build: plain root devDeps instead of workspaces (keeps CI green)

The workspaces approach broke CI: npm hoists the plugin's deps into
root/node_modules, but the plugin's CI invokes binaries by direct path
(`node node_modules/typescript/bin/tsc`, `node node_modules/vitest/...`),
which are then absent from plugin/node_modules. Hoisting is intrinsic to
workspaces, so any workspaces setup would require workflow changes.

Instead, make the root package.json a plain (non-workspace) manifest that
declares only the deps the validator needs to type-check plugin/src from
the repo root. A root `npm install` populates root/node_modules and the
root tsconfig resolves types there. The plugin's own `cd plugin; npm ci`
is untouched (no hoisting) -> CI stays green with zero workflow changes.

Verified: move plugin/node_modules aside, eslint from cwd=root with root
deps only -> 0 unsafe-member-access, 0 no-deprecated, 0 cannot-be-resolved.

Trade-off: type-dep versions are duplicated between root and plugin and
must be kept in sync (noted in the root package.json description).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 14:38:19 +09:00
..
e2e test(e2e): quarantine flaky reflect modify/large-image tests (#376) (#377) 2026-06-08 17:59:44 +09:00
scripts feat(release): formalize next=beta / main=stable two-channel model 2026-05-10 12:11:35 +09:00
src fix(plugin): fix root tsconfig paths to resolve Obsidian/xterm types for bot (#387) 2026-06-09 00:08:05 +09:00
tests fix(connect): address #352 review — failed-spawn lockout + double Notice 2026-05-18 01:47:03 +09:00
esbuild.config.mjs fix(plugin): resolve Obsidian reviewer findings (CSS / disclosure / dynamic-exec) — 1.1.1-beta.2 (#373) 2026-06-08 17:17:41 +09:00
eslint.config.mjs chore(lint): tighten local config to mirror more of ObsidianReviewBot's checklist (0.4.76) 2026-04-29 20:50:14 +09:00
manifest.json build: root devDeps + obsidian pin so the validator passes (no workflow changes) (#393) 2026-06-09 14:38:19 +09:00
package-lock.json build: root devDeps + obsidian pin so the validator passes (no workflow changes) (#393) 2026-06-09 14:38:19 +09:00
package.json build: root devDeps + obsidian pin so the validator passes (no workflow changes) (#393) 2026-06-09 14:38:19 +09:00
styles.css fix(styles): resolve xterm CSS bot warnings — drop !important, use longhand text-decoration (#383) 2026-06-08 23:06:02 +09:00
tsconfig.json fix(plugin): add node types to tsconfig to resolve unsafe-member warnings (#380) 2026-06-08 21:48:02 +09:00
versions.json release: prepare 1.1.1 promotion (drop -beta suffix) (#374) 2026-06-08 17:34:40 +09:00
vitest.config.ts fix(tests): repair 6 CI failures + bump 1.0.36 (#278) 2026-05-09 23:26:01 +09:00
vitest.integration.config.ts chore(plugin): satisfy ObsidianReviewBot's stricter ruleset, round 2 (0.4.75) 2026-04-29 20:19:10 +09:00
vitest.replay.config.ts ci(replay): replay previous release tag's tests against current source 2026-04-30 17:54:22 +09:00
vitest.setup.ts chore(deps-dev): integrate dev-deps group + prefer-window-timers fix (1.1.1-beta.1) (#371) 2026-06-08 13:18:07 +09:00