diff --git a/docs/superpowers/plans/2026-08-02-issue-281-minimal-macos-menu.md b/docs/superpowers/plans/2026-08-02-issue-281-minimal-macos-menu.md deleted file mode 100644 index d930e13e..00000000 --- a/docs/superpowers/plans/2026-08-02-issue-281-minimal-macos-menu.md +++ /dev/null @@ -1,31 +0,0 @@ -# Issue 281: Minimal macOS application menu - -## Goal - -Provide only macOS application-level native actions while retaining Markpad's -in-window controls as the source of document and window actions. - -## Scope - -- Keep the application menu's About, Settings, update, Services, hide, and - quit actions. -- Give Settings the `Cmd+,` accelerator. -- Remove native File, Edit, and Window submenus. -- Route Settings only to the focused webview and open the modal; it must not - toggle an already-open modal or broadcast to other windows. - -## Implementation - -1. Build a `menu-app-settings` menu item in the existing macOS-only setup and - attach only the application submenu to the native menu bar. -2. Route `menu-app-settings` through the existing focused-window event path. -3. Listen for that event in `MarkdownViewer` and set `showSettings = true`, - matching the titlebar callback. -4. Remove now-unused native File action listeners and the macOS keyboard guard - for their old accelerators. - -## Validation - -- Add source-contract tests for the native menu shape and focused-window - Settings event wiring. -- Run `npm ci`, `npm run check`, `npm test`, and `cargo test`. diff --git a/docs/superpowers/plans/2026-08-02-youtube-external-fallback.md b/docs/superpowers/plans/2026-08-02-youtube-external-fallback.md deleted file mode 100644 index f498d9e0..00000000 --- a/docs/superpowers/plans/2026-08-02-youtube-external-fallback.md +++ /dev/null @@ -1,84 +0,0 @@ -# YouTube External Fallback Implementation Plan - -> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. - -**Goal:** Replace broken in-app YouTube embeds with thumbnail links that open the original video in the system browser. - -**Architecture:** The Markdown HTML post-processor already recognizes standalone YouTube links and linked images. It will replace each recognized element with an anchor containing a thumbnail image and accessible label. The existing preview click handler already routes external HTTP(S) anchors to Tauri's opener plugin, so the card shares the normal external-link path. - -**Tech Stack:** Svelte 5, TypeScript, DOM APIs, Node's built-in test runner, Tauri opener plugin. - -## Global Constraints - -- Support Windows, macOS, and Linux without platform-specific frontend code. -- Do not add a dependency or alter Markdown parsing outside recognized YouTube links. -- Preserve the source URL as the card anchor's `href`. -- Do not create an iframe or require a YouTube `frame-src` CSP allowance. - ---- - -### Task 1: Specify and implement the rendered fallback card - -**Files:** -- Modify: `scripts/youtubeExternalFallback.test.ts` -- Modify: `src/lib/utils/markdown.ts:42-65,518-535` -- Modify: `src-tauri/tauri.conf.json:15-22` - -**Interfaces:** -- Consumes: `processMarkdownHtml(html, filePath, collapsedHeaders)`. -- Produces: HTML anchors with class `youtube-link`, original video `href`, and a thumbnail URL derived from the validated ID. - -- [ ] **Step 1: Write the failing test** - -```ts -test('standalone YouTube links become thumbnail anchors to the original URL', () => { - const html = processMarkdownHtml( - '

Watch

', - '', - new Set(), - ); - - assert.match(html, /]+class="youtube-link"[^>]+href="https:\/\/youtu\.be\/dQw4w9WgXcQ"/); - assert.match(html, /https:\/\/i\.ytimg\.com\/vi\/dQw4w9WgXcQ\/hqdefault\.jpg/); - assert.doesNotMatch(html, /