Commit Graph

5 Commits

Author SHA1 Message Date
James Montemagno 0976c94103 Improve Where Was I worktree context and Git history (#2342)
* Add worktree context collector

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2d224e01-e53f-46f8-beb2-0b8b64c5ee89

* Fix Where Was I worktree state

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2d224e01-e53f-46f8-beb2-0b8b64c5ee89

* Collect git graph and change details

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2d224e01-e53f-46f8-beb2-0b8b64c5ee89

* Add worktree git graph

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2d224e01-e53f-46f8-beb2-0b8b64c5ee89

* Add uncommitted change inspector

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2d224e01-e53f-46f8-beb2-0b8b64c5ee89

* Release Where Was I 1.1.0

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2d224e01-e53f-46f8-beb2-0b8b64c5ee89

* Normalize diff paths on Windows

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2d224e01-e53f-46f8-beb2-0b8b64c5ee89

* Fix change inspector clicks

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2d224e01-e53f-46f8-beb2-0b8b64c5ee89

* Collapse base branch graph history

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2d224e01-e53f-46f8-beb2-0b8b64c5ee89

* Keep diff drawer across context renders

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2d224e01-e53f-46f8-beb2-0b8b64c5ee89

* Fix Where Was I review feedback

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: c161d734-edb5-4707-a48c-966d4e83a2cf

* Address follow-up Where Was I review

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: c161d734-edb5-4707-a48c-966d4e83a2cf

* Harden Where Was I canvas against title injection and fix graph/diff edge cases

- Remove inline onclick handlers; PR/issue cards are buttons wired with addEventListener
  from data, the refresh/resume buttons use ids, and the page is served with a nonce-based
  CSP (script-src 'nonce-...', default-src 'none'). escapeHtml now also escapes apostrophes.
- Collapse only the graph suffix after the final branch commit (splitCommitGraph, computed
  server-side as baseGraphStart) so --topo-order interleaving never hides worktree commits.
- Preserve the selected status record through the UI, /file-diff, and get_file_diff so a path
  that appears twice (e.g. staged deletion + untracked re-creation) previews the right record.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 18350039-5e2b-40f0-b537-bc22cabcbb1b

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2d224e01-e53f-46f8-beb2-0b8b64c5ee89
Copilot-Session: c161d734-edb5-4707-a48c-966d4e83a2cf
Copilot-Session: 18350039-5e2b-40f0-b537-bc22cabcbb1b
2026-08-26 10:24:20 +10:00
James Montemagno cb2a6022d7 Fix installed canvas repo scope follow-up (#2230)
* Address canvas review feedback

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* Optimize arcade sprite sheet

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* Shrink arcade extension package files

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* Address backlog canvas API review

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* Compress arcade defender sounds

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-07 13:45:13 +10:00
James Montemagno e370b97107 Fix canvas repo detection and shrink oversized preview images (#2227)
Canvas extensions (accessibility-kanban, where-was-i) resolved git state
against the extension's install directory or the session-state folder
instead of the repo the session was opened in. This broke repo/branch
detection for user-scoped installs and worktrees ("unknown/unknown",
"detached HEAD"). Both now read the active session's working directory
from the canvas request context on open and on each action, so they
follow whichever project/worktree opened them.

where-was-i also re-gathers context on open when the saved branch is
blank, so it never opens stuck on stale data.

Also compress oversized extension preview images (pngquant, with a mild
resize for the photographic arcade-canvas art) so every preview.png is
comfortably under the installer's inline-byte cap that was blocking
release-notes-showcase from installing.

Update release-notes-showcase author to Kayla Cinnamon.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-07 10:54:51 +10:00
Aaron Powell 17b174fb0a Canvas manifest implementation for extensions (#2029)
* Add keyword display to extension cards on website

- Add .resource-keywords and .keyword-tag CSS styles for rendering keyword badges
- Update renderExtensionsHtml() to display keywords below extension description
- Keywords now visible on the website extensions page with styled badges
- Regenerate website data to include keyword metadata

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Canvas manifest implementation for all extensions

Add per-extension canvas manifests with:
- Structured canvas metadata (name, description, version, keywords)
- Screenshot definitions (icon and gallery with path/type)
- Relative paths for images within each extension directory

Enhance extension metadata:
- Generate meaningful descriptions from source analysis
- Extract and assign keywords for discoverability
- Store metadata in package.json and extension source files

Update website rendering and data generation:
- Include keywords in extension cards and search index
- Add per-extension canvas.json files for independent evolution
- Support screenshot metadata in manifest structure
- Generate extensions.json with full canonical paths for website

All 9 local canvas extensions now have complete manifests with descriptions, keywords, and screenshot references.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Tweaking some descriptions

* Fix description priority to prefer package.json over in-source metadata

Reverse the priority in canvasDescription so that package.json descriptions
(which contain the enhanced, manually-curated descriptions) take precedence
over older in-source descriptions extracted from createCanvas(...) calls.

This prevents regression when npm run website:data regenerates outputs,
ensuring that committed canvas.json files maintain the current descriptions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix canvas validation to skip external.json file

The validation script was treating extensions/external.json as if it were
a directory, causing false validation failures. Added check to skip files
(identified by presence of dot in filename) and only validate actual
canvas extension directories.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-17 15:28:15 +10:00
Aaron Powell 36cdc52037 Add Canvas Extensions website page (#1900)
Generate extensions data, add the extensions listing route/navigation, and include install URL copy actions pinned to the build commit SHA.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-02 11:17:56 -07:00