Skip to content

Import work items and Copilot frames from Microsoft Whiteboard (1.7.4) - #178

Merged
marcosqlbi merged 1 commit into
mainfrom
feature/ms-whiteboard-work-items-and-frames
Sep 30, 2026
Merged

marcosqlbi merged 1 commit into
mainfrom
feature/ms-whiteboard-work-items-and-frames

Conversation

@marcosqlbi

Copy link
Copy Markdown
Collaborator

Azure DevOps work items (WorkItem) and frames that Copilot draws around the objects it groups (Frame) were reported as left out. No sample holds either, so the markup was read from the Microsoft Whiteboard web client's public code, as for #174 to #177.

Work items. WorkItemConnected draws a div.WorkItem card, 220 × 145 pixels in the exported stylesheet, when the web client's EnableWorkItems flag is on. A span.WorkItemTextField holds a strong with the type's img.WorkItemIcon (its alt names the type) and the ID, then the title; after it come the assignee and, in span.WorkItemText, the localized word State and the state. The importer makes it a Markdown text container titled Work item: the type and ID in bold before the title, then the assignee and the state, as wide as the card.

The title follows </strong>, and HtmlTags kept only the text that follows a start tag. It now also yields the non-blank text that follows an end tag as a tag named #text. No reader matches that name, and all 19 samples import with the same items before and after the change.

Copilot frames. The frame component draws a section.whiteboardFrame with its size and a theme class (neutral, blue, green, purple, orange) when EnableFrames is on. The stylesheet gives it a 3-pixel border, a translucent fill, 14-pixel corners, and a 44-pixel title bar with bold 15-pixel text. The importer makes it a rectangle with the theme's border and fill and its title as a bold label in the theme's text color. It is square rather than rounded, because 14 pixels on a frame is close to square while the board's rounded rectangle scales its corners with the shape and crowded the title. The sources are left out: the export keeps only the first one's name in a pill, and the list is a popover drawn only when open.

A work item or a frame drawn as a placeholder is still reported.

A new Core smoke test covers a work item card, a blue frame with a source pill, and both drawn as placeholders; the page was also drawn through the application's renderer. The solution builds clean and both harnesses pass.

1.7.4 is not released yet, so its notes entry now covers work items and frames, and the version stays 1.7.4. The import doc and the site's export page describe them.

🤖 Generated with Claude Code

An Azure DevOps work item card becomes Markdown titled Work item with its type, ID,
title, owner, and state. A frame Copilot drew becomes a rectangle in its theme's border
and translucent fill with its title as a bold label. The tokenizer now yields text that
follows an end tag, because a work item's title comes after its bold ID.

Read from the web client's WorkItemConnected and frame component, because no sample
holds either. They join the 1.7.4 notes, which is not released yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@marcosqlbi
marcosqlbi merged commit 850a7a7 into main Sep 30, 2026
5 checks passed
@marcosqlbi
marcosqlbi deleted the feature/ms-whiteboard-work-items-and-frames branch September 30, 2026 17:16
marcosqlbi added a commit that referenced this pull request Sep 30, 2026
Custom objects (`CustomElement`) were the last object type in the
Microsoft Whiteboard web client that the importer reported as left out.
No sample holds one, so the markup was read from the web client's public
code, as for #174 to #178.

A custom object is a widget from a plug-in, named by its kind in
`data-custom-widget-kind`. The web client registers only two examples,
`example.counter` and `example.embed`. For any other kind, and for every
kind when its `EnableCustomElement` flag is off, it draws a gray box
that fills the object and says the widget is not available or disabled.
The box is at least 120 × 80 pixels, and its own size is `100%`. The
export therefore holds the box and the kind, not the widget.

The importer makes a custom object a rectangle of its size in the gray
the web client draws, with *Custom object* and the kind as its text. Its
size is the first one given in pixels, because a percentage is the
widget filling its box; without one it takes the smallest box. A custom
object without a kind is still reported.

A new Core smoke test covers a sized, disabled `example.counter`, a
centered widget with only percentage sizes, and one without a kind. All
19 samples still import unchanged. The solution builds clean and both
harnesses pass.

With this, every `data-whiteboard-type` the web client names has a
reader; what stays reported is content drawn as a placeholder or missing
the element that identifies it. 1.7.4 is not released yet, so its notes
entry now includes custom objects and the version stays 1.7.4. The
import doc describes them.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant