From d3a461b17dc04f31d04f1683120eedfb05841f26 Mon Sep 17 00:00:00 2001 From: formax68 Date: Sun, 17 May 2026 16:41:38 +0300 Subject: [PATCH] docs(phase-08): evolve PROJECT.md after phase completion --- .planning/PROJECT.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.planning/PROJECT.md b/.planning/PROJECT.md index f25384d..43e7eac 100644 --- a/.planning/PROJECT.md +++ b/.planning/PROJECT.md @@ -77,7 +77,7 @@ Show the user's calendar inside Obsidian and let them turn any event into a stru **Directory scorecard findings (Obsidian Review):** -- [ ] **DIR-01**: Console logging — flagged sites in `CalendarService.ts` (~3) and `SettingsTab.ts` (~1) removed or gated; full codebase audit completed +- [x] **DIR-01**: Console logging — 33 sites deleted, 6 forensic sites gated behind `const DEBUG = false` in `CalendarService.ts` and `timezoneUtils.ts` — Validated in Phase 8 (Type Hygiene & Conventions) - [x] **DIR-02**: `innerHTML` / `outerHTML` writes replaced with `createEl` / `createDiv` / `setText` / DOM API at every site — Validated in Phase 6 (DOM API Refactor) - [x] **DIR-03**: `element.style.*` inline assignments (border, color, cursor, display, fontSize, height, left, margin, marginTop, opacity, padding, position, textAlign, top, width) replaced with CSS classes or `setCssProps` — Validated in Phase 6 (DOM API Refactor) - [x] **DIR-04**: String-literal element-creation patterns replaced with the Obsidian `createEl({ cls, text })` / `createDiv({ cls })` helpers across views (calendar grid, agenda, settings, embedded views) — Validated in Phase 6 (DOM API Refactor) @@ -85,8 +85,8 @@ Show the user's calendar inside Obsidian and let them turn any event into a stru - [x] **DIR-06**: Popout-window compatibility — `document` → `activeDocument`, timers prefixed with `window.*` (per amendment A2) — Validated in Phase 7 (Lifecycle & Compatibility) - [x] **DIR-07**: `instanceof TFile` narrowing replaces all `as TFile` casts — Validated in Phase 7 (Lifecycle & Compatibility) - [x] **DIR-08**: Promise hygiene — no floating promises; methods overriding `MarkdownRenderChild` lifecycle return the declared type; `.catch` / `void` annotations at fire-and-forget sites — Validated in Phase 7 (Lifecycle & Compatibility) -- [ ] **DIR-09**: TypeScript hygiene — eliminate `any`, fix nullish-on-lhs of `??`, lexical declarations in `case` blocks, unnecessary escape characters -- [ ] **DIR-10**: Unused vars/imports cleaned up (~21 named symbols flagged by ESLint via the directory scorecard) +- [x] **DIR-09**: TypeScript hygiene — 16 `any` sites closed, `no-case-declarations` fixed, `no-useless-escape` fixed, `??`-with-constant-LHS audit clean; `(window as any).moment` migrated to typed `import { moment } from "obsidian"` — Validated in Phase 8 (Type Hygiene & Conventions) +- [x] **DIR-10**: 18 `@typescript-eslint/no-unused-vars` sites resolved (all 21 scorecard-named symbols deleted or genuinely consumed); 2 catch bindings converted to `catch { }` — Validated in Phase 8 (Type Hygiene & Conventions) - [ ] **DIR-11**: `manifest.json` `description` ends with terminating punctuation (`.`, `!`, or `?`) - [ ] **DIR-12**: GitHub release workflow attaches artifact attestation to `manifest.json`, `main.js`, `styles.css` @@ -95,7 +95,7 @@ Show the user's calendar inside Obsidian and let them turn any event into a stru **Documentation & guardrails:** - [ ] **DOC-01**: `.eslintrc` (or `eslint.config.js`) installed and wired with rules matching the directory scorecard (no `innerHTML`, no inline styles, no `console.log`, no `as TFile`, no `Promise`-returning `MarkdownRenderChild` overrides, no floating promises, no `any`); `npm run lint` script added; CI runs lint -- [ ] **DOC-02**: `CLAUDE.md` and `.planning/codebase/CONVENTIONS.md` updated with the directory-compliance rules (do/don't list with one-line rationale per rule) so future plans land compliant by default +- [x] **DOC-02**: `## Directory Compliance` section landed in `.planning/codebase/CONVENTIONS.md` (4 clusters, 16 rule blocks in `Don't:`/`Do:`/`Why:`/`Docs:` format); `CLAUDE.md` pointer section replaces stale TODO block; `### Beta Release Strategy` and `### Memory Reminders` preserved verbatim — Validated in Phase 8 (Type Hygiene & Conventions) ### Out of Scope @@ -167,4 +167,4 @@ This document evolves at phase transitions and milestone boundaries. 4. Update Context with current state --- -*Last updated: 2026-05-15 — Phase 7 (Lifecycle & Compatibility) complete: DIR-05 / DIR-06 / DIR-07 / DIR-08 closed and ESLint override block deleted (now enforceable); BUG-07 closed Obsidian-side per `BUG-07-CLOSURE.md`* +*Last updated: 2026-05-17 — Phase 8 (Type Hygiene & Conventions) complete: DIR-01 / DIR-09 / DIR-10 / DOC-02 closed; Phase-8 ESLint override block deleted and replaced with narrow D-08-extension `no-unsafe-*: off` for ical.js consumption-site cascade (FRAG-02 still deferred); `## Directory Compliance` section now canonical in `.planning/codebase/CONVENTIONS.md` with `CLAUDE.md` pointer. Milestone v1.15 closed — ready to tag release.*