Appearance
Change Log
All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
5.0.1 (2026-06-19)
Bug Fixes
skill-scripts buildnow exits non-zero when a build fails. Previously a failed build (e.g. an unresolved import) was still reported as a success, so a broken build passed CI checks.- The success dialog's Dismiss button now uses the neutral
ghostvariant instead oflink, which had rendered the label in the primary (accent) color.
5.0.0 (2026-06-18)
Breaking Changes
- Removed the long-deprecated
$xandwaitForXPathmethods from thePageandFrametypes. Use$/waitForSelectorinstead;PageandFrameare now plain aliases of the underlying Puppeteer types. - Removed the long-deprecated
tagproperty fromContext. ReadskillEnvinstead. - Renamed the misspelled
WitForPageChangeOptionstype anddefaultWitForPageChangeOptionsvalue toWaitForPageChangeOptionsanddefaultWaitForPageChangeOptions. ThewaitForPageChange()function and its behaviour are unchanged. - Standardized the SharePoint API identifiers on the
Sharepointcapitalization (treating it as one word for camelCase readability, matching the existinggetSharepointApi/SharepointAPI/SharepointOptionsexports):getSharePointTokenUserAuth→getSharepointTokenUserAuth, and theSharepointHttpInterfacemethodgetSharePointUploadUrl→getSharepointUploadUrl. ButtonListbutton variants now follow a single naming set matching the design-system Button:primary,secondary,destructive,outline,ghost, andlink. The legacy aliases were removed — replacedefaultwithprimary,dangerwithdestructive,minimalwithghost, andlightwithoutline. Variants now render with the canonical Button styling (e.g.ghostno longer carries a border andlinkunderlines on hover).- Replaced the experimental
BlockResolverContextexport withuseBlockResolver()(read) andsetBlockResolver()(install). Blocks-in-data (e.g. a chat turn'sblocks) now resolve through a global store rather than a React context, so they render correctly across the SDK ↔ design-system package boundary (previously they could silently fail with React error #31). - Removed
chatTooland consolidated chat-tool authoring on a singletool(). A tool'sexecutenow takes(input, options)(matching the AI SDK) instead of({input, text}), and returnsreply(...)/ a bare value /ui(...)/plan(...)instead of a{reply, result, render}object. The exportedChatToolDef.execute/confirmsignatures changed to match. - All
./lib/assistant-ui/components/base/*export entries are removed from the SDK. Any skill or consumer importing from paths such as@matterway/sdk/lib/assistant-ui/components/base/button(or any otherbase/*sub-path) will receive a module-not-found error. - Use the
mw/*wrapper components via@matterway/sdk/lib/assistant-ui/components/mw/*instead. Thebase/directory is no longer mirrored into the SDK bundle.
Features
ButtonListgainssize('sm'|'default'|'lg'|'icon'), settable per button or once for the whole list (default'sm'). The button's icon scales with the size, and an icon-only button (an icon with no label) renders as a squareiconbutton automatically.ButtonListgainsalign('spread'|'start'|'center'|'end', default'spread') to group buttons against one edge or the center instead of always spreading to the full parent width, plus agapprop (pixels;0for a flush, segmented group).- New
chat()tool-authoring surface for rich, model-driven conversations — a single primitive,tool(), whose return value decides what the turn shows:tool({description, inputSchema, execute, confirm})— samedescription/inputSchema/execute(input, options)shape as the Vercel AI SDK, so tools are interchangeable;confirmand the richer returns are added on top.executereturns one of: a bare value (a string/object — the AI phrases the reply, exactly like an AI-SDK tool result);reply(text, …content)(the skill writes the text verbatim, with optional inline content);ui(…blocks)(render renderer blocks with no text); orplan(…)(an editable plan).- Inline content builders for
reply()/ui():code,sources,speech(on-device TTS),generatedImage,webPreview,task,reasoning— composable instead of a single options object. - On-device tool turns are multi-step: the model picks a tool → the tool runs → the model phrases the reply from a bare value, so on-device (Gemini Nano) tools produce real, grounded replies.
confirm— a hard human-approval gate: a tool'sexecuteonly fires after the user approves.agent— delegate to a subagent from inside a tool'sexecute(it arrives ready-bound as the secondoptionsargument, soctxis never threaded through); pass anoutputZod schema to get a parsed value back (e.g.z.array(z.string())for a plan's steps).plan({title, steps})/step(label, run)— propose an editable, runnable list of steps; the user edits, drag-and-drop reorders, adds/removes them, then presses Run (the plan card updates in place). Steps are typically AI-drafted viaagent({output}).nano()— the default on-device model.zis re-exported from@matterway/sdk/UIso skills can declare schemas without installing Zod separately.
Bug Fixes
- The
destructiveforeground token resolved to the same dark red as its background, so text and icons on destructive buttons were invisible. It now uses the light foreground (readable white-on-red). - Overrode vulnerable transitive dependencies flagged by
pnpm audit(dompurify,markdown-it,js-yaml,vite,form-data,tar,@babel/core); no behaviour change.
Chores
- Migrated vitest config to the shared root baseline; no runtime or API change.
- Enabled coverage collection in
pnpm test:coveragewith enforced baseline thresholds; the run now fails if coverage drops below the committed floors. - Added unit test coverage across SDK modules and utilities; no behaviour change.
Migration Guide
ButtonListvariants. Rename the variant on every button item. The replaced names map 1:1:Old variant New variant defaultprimaryprimaryprimary(unchanged)dangerdestructiveminimalghostlightoutlinets// Before ButtonList({ items: [ {label: 'Cancel', value: 'cancel', variant: 'light'}, {label: 'Delete', value: 'delete', variant: 'danger'}, {label: 'Save', value: 'save', variant: 'default'}, ], }); // After ButtonList({ items: [ {label: 'Cancel', value: 'cancel', variant: 'outline'}, {label: 'Delete', value: 'delete', variant: 'destructive'}, {label: 'Save', value: 'save', variant: 'primary'}, ], });If you previously leaned on
minimal/lightfor their exact look, noteghostis borderless andlinkonly underlines on hover — pickoutlinewhen you need a bordered, low-emphasis button.XPath helpers.
$x/waitForXPathwere removed:ts// Before const [el] = await page.$x('//button[text()="Submit"]'); // After const el = await page.$('button ::-p-text(Submit)'); // or a CSS/text selectorContext.tag. Readctx.skillEnvinstead ofctx.tag.waitForPageChangeoptions type. Rename the misspelled identifiers — behaviour is unchanged:ts// Before: WitForPageChangeOptions / defaultWitForPageChangeOptions // After: WaitForPageChangeOptions / defaultWaitForPageChangeOptionsSharePoint identifiers. Adopt the
Sharepoint(one-word) casing:ts// Before → After getSharePointTokenUserAuth → getSharepointTokenUserAuth sharepointHttp.getSharePointUploadUrl → sharepointHttp.getSharepointUploadUrlChat tools (
chatTool→tool). RenamechatTooltotool, takeinputas the first argument, and return a constructor instead of a{reply, result, render}object:ts// Before chatTool({ description: 'Current weather', inputSchema: z.object({city: z.string()}), execute: ({input}) => ({reply: `It's sunny in ${input.city}.`}), confirm: ({input}) => `Check ${input.city}?`, }); // After tool({ description: 'Current weather', inputSchema: z.object({city: z.string()}), execute: ({city}) => reply(`It's sunny in ${city}.`), confirm: ({city}) => `Check ${city}?`, });Map the old return fields:
{reply}→reply(text)(verbatim);{result}→ return a bare value (the AI phrases it);{render: {…}}→ inline content builders (code(),speech(), …) onreply(), orui(block)for blocks-only; a proposed plan →plan({title, steps}).BlockResolverContext→useBlockResolver/setBlockResolver. Read the resolver with the hook; install it once (no Provider):ts// Before import {BlockResolverContext} from '@matterway/design-system'; const renderBlocks = React.useContext(BlockResolverContext); <BlockResolverContext.Provider value={resolver}>{children}</BlockResolverContext.Provider>; // After import {useBlockResolver, setBlockResolver} from '@matterway/design-system'; const renderBlocks = useBlockResolver(); setBlockResolver(resolver); // install once at startup; no Provider needed
4.9.2 (2026-06-15)
Features
Five components are now accessible through the SDK's package exports:
Breadcrumb,FieldError,Logo,Separator, andSkeleton.Breadcrumbrenders a navigational hierarchy of links separated by a chevron or slash. Mark the current page withcurrent: true, and useellipsis: true(with anonClick) for collapsed ancestors:tsx<Breadcrumb items={[ {label: 'Home', href: '/'}, {label: 'Settings', href: '/settings'}, {label: 'Profile', current: true}, ]} separator="chevron" />FieldErrorshows a validation message in the destructive color beneath a form field; renders nothing whenchildrenis empty:tsx<FieldError>{field.validationMessage}</FieldError>Logorenders the Matterway brand mark as an inline SVG usingcurrentColor, or a custom tenant image whensrcis supplied:tsx<Logo name="matterway" size={32} /> <Logo src={tenantLogoUrl} alt="Acme Corp" size={40} />Separatordraws a 1 px dividing rule — horizontal by default, or vertical (give the parent a height). Setdecorative={false}to exposerole="separator"to assistive tech:tsx<Separator /> <Separator orientation="vertical" decorative={false} />Skeletonshows an animated, muted placeholder while content loads. Choose avariantthat matches the shape of the incoming content:tsx<Skeleton variant="card" lines={3} /> <Skeleton variant="text" lines={2} /> <Skeleton variant="default" lines={1} />
Chores
- Migrate lint and format tooling from ESLint + Prettier to oxlint + oxfmt.
4.9.0 (2026-06-11)
Features
- The
chat()template now collapses its suggestion chips pastmaxVisibleSuggestions(default 3) behind a+N more/Show lesstoggle, so chats with many seeded prompts stay compact. The visible chips are the most-recently-used ones. PassmaxVisibleSuggestions: 0to show every chip.
4.8.1 (2026-06-09)
Bug Fixes
- Pinned
pdfjs-distto an exact version so the PDF viewer's document API and its rendering worker stay in lockstep. The previous caret range let consumers resolve a newer pdfjs API than the bundled worker, which broke the viewer with "Failed to load PDF".
4.8.0 (2026-06-09)
Bug Fixes
- Skills that import
@matterway/design-systeminternally no longer end up with a second, isolated copy of the package. Previously, the chunk builder resolved design-system imports from the skill's own root, which required skills to declare it as a direct dependency and created a separate module instance — splitting the zustand session store from the one the SDK runtime uses, and breaking field state and cross-window sync. - The chunk builder now resolves all
@matterway/design-systemimports through the SDK's own copy, so there is a single shared store instance. Skills no longer need@matterway/design-systemas a dependency. - If the SDK's
@matterway/design-systemcopy cannot be resolved at chunk-build time (e.g. broken install), the builder now throws an explicit error instead of silently falling back to skill-root resolution and reintroducing the split-store bug.
Chores
- Add a "System" option to the Storybook theme toolbar and fix theme persistence so the decorator correctly drives the design-system's
MW_UI_THEMEmechanism on every toolbar change; dark canvas background is now applied viapreview-head.html. No runtime behaviour change.
4.7.5 (2026-06-08)
Bug Fixes
- ui: every
@matterway/design-systemexport is now re-exported from@matterway/sdk— e.g. theStatusItemtype used byStatusListandSuccess. The mirror previously covered only component barrels, so per-componenttypesmodules were unreachable from the SDK. - Code examples in the
NavigationBar,ButtonList, andSplitViewSDK docs used the wrongtextprop on button items; they now correctly uselabel, matching the actualButtonListItemPropstype.
4.7.4 (2026-06-05)
Bug Fixes
- Security hardening.
- Windows system proxy settings configured via the registry were silently ignored. The CSV response from PowerShell was never awaited before reading, so
datawas alwaysundefinedand the proxy agent was never created. Registry-based proxy detection on Windows now works correctly.
4.7.3 (2026-06-05)
Chores
- Enforce the previously-disabled
@typescript-eslint/member-orderingESLint rule across the SDK source tree; class and interface members are now consistently ordered. No runtime behaviour change.
4.7.2 (2026-06-04)
Features
ui: new
Logoblock — the official brand mark for headers, sidebars, and onboarding screens. Renders the brand SVG inline in the theme-adaptive brand primary color, or a custom logo image viasrc(e.g. a tenant's own brand).nameselects the built-in brand (currently'matterway') andsizethe px size;name,src, andhiddenaccept an async function of UI state.tsimport {Logo} from '@matterway/sdk/UI'; Logo({name: 'matterway', size: 64}); Logo({src: 'https://example.com/acme-logo.png', alt: 'Acme', size: 40});ui: new
Skeletonblock — an animated placeholder shown while content loads. Pick avariantto match the incoming content:'default'(avatar beside text lines),'card'(media block above text lines), or'text'(text lines only);linessets the number of text lines.variantandlinesaccept an async function of UI state.tsimport {Skeleton} from '@matterway/sdk/UI'; Skeleton({variant: 'card'}); Skeleton({variant: 'text', lines: 4});ui: new
Breadcrumbblock — shows the path to the current resource as a hierarchy of links separated by a chevron (default) or slash. Eachitemsentry is a link, the current page (last item orcurrent: true), or anellipsiscollapse affordance;itemsandhiddenaccept an async function of UI state.tsimport {Breadcrumb} from '@matterway/sdk/UI'; Breadcrumb({ items: [ {label: 'Home', href: '/'}, {label: 'Components', href: '/components'}, {label: 'Breadcrumb'}, ], });ui: new
Separatorblock — a thin rule that visually separates content.orientationis'horizontal'(default) or'vertical';orientationandhiddenaccept an async function of UI state.tsimport {Separator} from '@matterway/sdk/UI'; Separator(); Separator({orientation: 'vertical'});chat: new
chat()template +Chatblock — a complete, block-only conversational surface (replaces the bespoke client-component chat). One long-livedrender(): theChatblock renders the transcript from amessagesstate array and streams each reply, while aPromptInputandSuggestionchips bound to the same key seed user turns. Preserves the full chat feature set — streamed replies, suggestion seeding, per-message actions (copy/like/dislike), in-chat confirmations, attachments with click-to-download, voice input, and scripted rich-block augmentations (reasoning, chain-of-thought, tool calls, sources/citations, audio + transcript, generated images, web previews, tasks, code) — entirely from blocks, no React components in skill code.tsimport {chat} from '@matterway/sdk/UI'; const session = chat(ctx, { title: 'Assistant', suggestions: ['Summarize this', 'Draft a reply'], augment: ({text}) => /delete/i.test(text) ? {confirmation: {message: 'Delete it?'}} : null, onFeedback: ({kind}) => console.log('feedback:', kind), }); await session;chat()options:title,description,messagesKey,systemPrompt,locale,model,augment,tools,actions,emptyState,suggestions(string or{value, attachments}),placeholder,withSpeech,withAttachments,dismissLabel,onFeedback.chat: unified
modelAPI — pick the model, default stays on-device.chat({model: chromeAI()})(default) streams from Chrome's built-in Gemini Nano page-side;chat({model: aiSdk({model: 'gpt-4o-mini'})})streams from a cloud model (OpenAI / Anthropic / Bedrock) in the skill's Node context via the Vercel AI SDK, with the API key read at runtime fromctx.assistant.secrets(never hardcoded). The Node reply driver streams through the renderer's existingsession.statechannel.chromeAI+aiSdkare exported from@matterway/sdk/UI. Breaking (vs the@experimentalsurface): theprovider/generateoptions/props are replaced bymodel; theChatblock'smodelis'chrome-ai'(default) |'external'(render-only).LocalChatisChatwithmodelfixed to'chrome-ai'.chat: the agent can call tools. Pass
toolsas a map keyed by tool name —{search: chatTool({description, inputSchema, execute({input, text}) => {reply, render}})}(the key is the name the model selects, so names are unique by construction and never repeated as a field) — and the model picks at most one tool per turn. Each tool can declare a ZodinputSchemaso the model produces typed args (executereceives them as{input, text}, parsed + validated); omit it andinputis{prompt}. ThechatTool()helper infersinput's type from the schema (like the Vercel AI SDK'stool()).executeruns skill-side (real image-gen / TTS / search / fs APIs go here); itsrenderblocks appear with the reply. The user-facing text isreply;resultis the model-facing value fed back when a model runs after the tool. OnchromeAI()the choice + typed args use Gemini Nano's structured-output (it can't natively function-call);aiSdk()uses native multi-step function-calling.augmentremains the deterministic, skill-decided alternative.chat: tools get mandatory human-in-the-loop, enforced identically on chrome-ai and aiSdk. Add a
confirmto a tool and it gates:confirm: ({input}) => \Delete ${input.path}?`shows the prompt, and the tool'sexecuteruns **only after the user approves** (on reject it's skipped andrejectedReplyis shown). A shared tool bridge is the single chokepoint both model paths go through — the model can only ever trigger the preview, never the effect — so a destructive tool can't fire un-approved on either path. (Renamed the tool result'sack→reply`.)chat: tool callbacks fail gracefully — a throw in
execute/confirmis caught and surfaced as a friendlyreplyto the user and a taggedTOOL_ERROR(name): …resultto the model (aiSdk), so the chat never crashes and the model can recover.chat:
chat({locale})sets the assistant's reply language (BCP-47 tag or language name, e.g.'fr-FR') — appended to the system prompt so it applies to every model (chrome-ai + aiSdk).chat: a turn's augmentation now takes an arbitrary-
blocksescape hatch (augment/tool.render→{blocks: [Card({…}), DataTable({…})]}) — any renderer block can render in a chat turn, not only the curated slots (reasoning, code, sources, …). Display blocks render as-is (block props carrying callbacks aren't wired through, since blocks arrive as serialized message data). This is powered by a generalBlockResolverContexthost capability (alongsideSessionContext): the renderer already resolves blocks passed as children or props, and this covers the remaining case — blocks held in component state/data — so any data-driven component can adopt the sameblocks?: unknownpattern, not just chat.ui: the
Chatcomponent is now useful standalone (design-system, no SDK). It supports controlled (passmessages+on*) and uncontrolled modes, and a built-in composer:<Chat composer suggestions={[…]} />is a complete on-device chat with zero wiring. Importable from@matterway/design-system/assistant-ui/components. A custom page-sidemodel({stream(input) => AsyncIterable<string>}) lets DS-only consumers bring their own in-browser model.chat-sdk: integrate chat-sdk.dev (
chat).createMatterwayAdapter(session, {messagesKey})makes the chat UI achatplatform —thread.post(...)renders into the bubble and the user's turns fireonDirectMessage/onNewMention;createMemoryState()is a single-process state backend;ChatBotre-exportschat'sChat. All from@matterway/sdk/UI(or@matterway/sdk/chat-sdk). Runs in the skill's Node context — no server. Bumpsaito v6 to match the installed@ai-sdk/*providers.ui:
SuggestiongainspushTo(+ optionalattachments) — clicking appends a user message ({id, role: 'user', content, createdAt, attachments?}) tostate[pushTo], mirroringPromptInput.pushTo, so a suggestion can seed a conversation turn (optionally carrying files).ui: new
FileItemblock (@experimental) — a single file row with a file icon, title/subtitle, optional error message, and an optional action button (delete/download/view) whoseactioncallback fires on click. Previously an internal primitive; now exposed asUiFileItem+ aFileItemblock.sdk: add
@matterway/sdk/design-system— a single import surface that re-exports the whole design system, so skills never have to reach for@matterway/design-systemdirectly (import {Bubble} from '@matterway/sdk/design-system'). Every design-system subpath is mirrored under it (e.g.@matterway/sdk/design-system/UI/components/Bubble). The per-component deep-import paths that existed before the design-system was extracted keep resolving unchanged — the documented@matterway/sdk/UI/components/*pattern stays current, and the pre-extraction@matterway/sdk/lib/assistant-ui/components/*paths still work but now carry a@deprecatedhint pointing at@matterway/sdk/design-system.ui:
PromptInputgainswithAttachments— renders a file-attach button in the composer toolbar; picked files are read client-side (data URL + decoded text) and ride along on the next submitted message'sattachments. Pending files preview as removable chips above the textarea (newheaderslot on the underlying composer).
Bug Fixes
runJobsWithProgressnow renders the progress indicator while jobs run and removes it when they settle; previously it ran jobs silently with no UI.runJobsWithProgressListrenders its progress bubble once and updates rows viasession.stateinstead of re-rendering the whole tree on every tick, so rows now reliably appear and flip to done/failed as each job completes.GroupandNavigationBarwith a function-typedhiddenprop no longer flash visible for one frame while the value resolves.
Chores
- Internal utility package renamed from
@matterway/sharedto@matterway/sdk-shared; no change to any@matterway/sdkimport paths.
Refactors
- ui: unify Confirmation enums and flip
resolvedefault tofalse. Breaking (against the@experimental4.0.0 surface):CONFIRMATION_BUTTONremoved; the singleCONFIRMATIONfamily —'requested' | 'approved' | 'rejected'— is now used for the block's status, thestatusprop, and the resolve payload.CONFIRMATION.ACCEPTED→CONFIRMATION.APPROVED.acceptedMessageprop →approvedMessage; CSS classmw-confirmation-accepted→mw-confirmation-approved.resolveValueshape:{button, data}→{status, data}.UiConfirmationdefault flips fromresolve: truetoresolve: false— the click now flips the block face in place and firesonApprove/onRejectwithout ending the surroundingrender(...). Passresolve: trueto opt back into the old one-shot prompt behavior. Closes #2450.
4.1.3 (2026-06-02)
Features
- release: migrate SDK to shared release workflow (#2487)
Bug Fixes
- deps: resolve 1 vulnerability (#2505)
- progressList: ensure ui cleanup (#2498)
- changelog: attribute Confirmation refactor to 4.1.1, drop stranded Unreleased (#2506), closes #2487 #2495
4.1.1 (2026-05-27)
Refactors
- ui: unify Confirmation enums and flip
resolvedefault tofalse. Breaking (against the@experimental4.0.0 surface):CONFIRMATION_BUTTONremoved; the singleCONFIRMATIONfamily —'requested' | 'approved' | 'rejected'— is now used for the block's status, thestatusprop, and the resolve payload.CONFIRMATION.ACCEPTED→CONFIRMATION.APPROVED.acceptedMessageprop →approvedMessage; CSS classmw-confirmation-accepted→mw-confirmation-approved.resolveValueshape:{button, data}→{status, data}.UiConfirmationdefault flips fromresolve: truetoresolve: false— the click now flips the block face in place and firesonApprove/onRejectwithout ending the surroundingrender(...). Passresolve: trueto opt back into the old one-shot prompt behavior. Closes #2450.
4.0.0 (2026-05-26)
Features
ui: add
Confirmation(experimental) — an inline tri-state approval prompt for gating destructive or non-reversible actions. Shows a short message with Approve / Reject buttons, then re-renders as an "approved" or "rejected" status row once the user picks. Container-free — drop it insideBubble,Modal,Group, or anywhere else without lock-in:tsimport {Confirmation} from '@matterway/sdk/UI'; Confirmation({ name: 'deleteFile', message: 'Delete /tmp/example.txt?', onApprove: () => console.log('approved'), onReject: () => console.log('rejected'), });Persists the final status in
internalState[name]('accepted'/'rejected') and resolves the UI with{button: 'approve' | 'reject', data}, so the block reflects the decision after navigation. Closes #2450.ui: align
KeyValuewith Figma (size-12 muted label, size-14 foreground value, 12px row gap, 16px icon with 2px vertical pad). Vertical stacks label above value; horizontal puts the value on the right, withextrarendering as a right-side value (vertical) or a subtitle under the label (horizontal). TSDoc rewritten from the Figma usage rules. Issue #2107.tsimport {KeyValue} from '@matterway/sdk/UI'; // Stacked (default) KeyValue({icon: 'document', label: 'Order ID', value: 'BB-GE 350'}); // Inline + right-side extra KeyValue({ icon: 'document', label: 'Missing Order', value: 'BB-GE 350', extra: '+$39.00', layout: 'horizontal', });ui:
Layout/Verticalnow getsfirst:mt-0 mt-4so stackedVertical()siblings pick up the same 16px rhythm asText— first sibling has no top margin, every later one getsmt-4. Inner children are reset ([&>*]:!mt-0) so the layout's own gap stays in control.ui: add
LocalChat(experimental) — a working chat surface backed by Chrome's built-inLanguageModel(Gemini Nano via the Prompt API). Runs entirely locally in the browser, no external model needed. Pair with aPromptInputbound to the same state key to drive a real conversation:tsimport {LocalChat, PromptInput} from '@matterway/sdk/UI'; LocalChat({ name: 'messages', systemPrompt: 'You are a concise, friendly assistant.', }); PromptInput({name: 'message', pushTo: 'messages'});Requires Chrome 138+ with the Prompt API enabled (
chrome://flags#prompt-api-for-gemini-nano). When unavailable, the first assistant turn renders a friendly notice telling the user how to enable it.ui: add AI-elements voice tier (experimental) — five blocks for voice-driven assistant surfaces, using only commercial-safe deps:
tsimport { AudioPlayer, Transcription, MicSelector, VoiceSelector, SpeechInput, } from '@matterway/sdk/UI'; AudioPlayer({src: 'https://example.com/clip.mp3'}); Transcription({ segments: [ {speaker: 'Alice', words: [{text: 'hello', start: 0, end: 0.5}]}, ], currentTime: 0.2, }); MicSelector({name: 'micDeviceId'}); VoiceSelector({name: 'voiceURI'}); SpeechInput({name: 'message', language: 'en-US'});Deps:
AudioPlayerusesmedia-chrome— MIT-licensed web components.MicSelectorusesnavigator.mediaDevices.enumerateDevices().VoiceSelectorusesspeechSynthesis.getVoices()+SpeechSynthesisUtterancefor previews.SpeechInputuses the browser'sSpeechRecognitionAPI. Privacy note: Chrome's implementation streams audio to Google's servers for recognition — the API itself is royalty-free, but it is not a local model. Document this when surfacing the block in a skill.Transcriptionis presentational and ships no runtime dep beyond React.
ui: add AI-elements dev tier (experimental) — fifteen more blocks targeted at developer-assistant surfaces (terminals, tests, file trees, sandboxes, commits).
tsimport { Shimmer, Checkpoint, Terminal, StackTrace, FileTree, EnvVarList, Commit, TestResults, ApiSchema, PackageInfo, PlanList, PlanItem, Queue, WebPreview, Sandbox, AgentCard, } from '@matterway/sdk/UI'; Terminal({output: '$ npm test\nAll tests passed.', isStreaming: false}); TestResults({ results: [ {name: 'index › Bubble', status: 'passed', duration: 4}, {name: 'index › Modal', status: 'failed', message: 'expected 1 got 2'}, ], }); FileTree({ name: 'selectedPath', nodes: [ { id: '/src', name: 'src', children: [{id: '/src/index.ts', name: 'index.ts'}], }, ], }); PlanList({title: 'Steps'}, [ PlanItem({status: 'done'}, [Text({content: 'Read docs'})]), PlanItem({status: 'in-progress'}, [Text({content: 'Wire components'})]), PlanItem([Text({content: 'Open PR'})]), ]); AgentCard({ name: 'Helper', model: 'claude-opus-4-7', tools: [{name: 'search_web'}, {name: 'read_file'}], });Naming diverges from upstream
SchemaDisplay→ApiSchema,EnvironmentVariables→EnvVarList,Agent→AgentCard,Plan→PlanList/PlanItem(barePlanis too generic in our domain).ui: add AI-elements chat tier (experimental) — twenty new blocks for building chat-shaped UIs, ported from
vercel/ai-elementsand reworked to fit the Matterway 3-layer pattern (mw-*design tokens, session-scoped Zustand state,mw-<name>class names).Container / transcript:
tsimport { Conversation, Message, MessageBody, Response, Suggestion, SuggestionList, MessageAction, MessageActions, PromptInput, } from '@matterway/sdk/UI'; Conversation([ Message({from: 'assistant'}, [ MessageBody({content: 'Hi! How can I help?'}), ]), Message({from: 'user'}, [ MessageBody({content: 'Summarise this article.'}), ]), Message({from: 'assistant'}, [ Response({content: 'Streaming…', isStreaming: true}), ]), ]); SuggestionList([ Suggestion({value: 'Tell me a joke', resolve: true}), Suggestion({value: 'Summarize this', name: 'prompt'}), ]); MessageActions([ MessageAction({value: 'copy', label: 'Copy'}), MessageAction({value: 'regenerate', label: 'Regenerate'}), ]); PromptInput({name: 'message', placeholder: 'Ask anything…'});Code & citations:
tsimport { CodeBlock, Snippet, Sources, Source, InlineCitation, } from '@matterway/sdk/UI'; CodeBlock({code: 'console.log("hi")', language: 'javascript'}); Snippet({code: 'npm install @matterway/sdk'}); Sources([Source({href: 'https://example.com', title: 'Example article'})]); InlineCitation({sources: ['https://a.com', 'https://b.com']});Reasoning, tool calls, tasks:
tsimport { Reasoning, ChainOfThought, ChainOfThoughtStep, ToolInvocation, Task, TaskItem, TaskItemFile, } from '@matterway/sdk/UI'; Reasoning({content: 'First, I checked…', isStreaming: false, duration: 8}); ChainOfThought([ ChainOfThoughtStep([Text({content: 'Identify request'})]), ChainOfThoughtStep([Text({content: 'Fetch docs'})]), ]); ToolInvocation({ toolName: 'search_web', state: 'completed', input: {query: 'matterway'}, output: '5 results', }); Task({title: 'Updated files'}, [ TaskItem([TaskItemFile({name: 'index.ts'})]), ]);Attachments, model context, artifacts:
tsimport { Attachments, Attachment, TokenContext, Artifact, GeneratedImage, OpenInChat, ModelSelector, } from '@matterway/sdk/UI'; Attachments([ Attachment({name: 'doc.pdf', kind: 'document', size: 12_400}), Attachment({name: 'photo.png', kind: 'image', thumbnail: 'data:…'}), ]); TokenContext({usedTokens: 1234, maxTokens: 8000, modelId: 'claude-opus-4-7'}); Artifact({title: 'Generated image', closable: true}, [ GeneratedImage({base64: 'iVBOR…', mediaType: 'image/png', alt: 'logo'}), ]); OpenInChat({prompt: 'Summarize this article'}); ModelSelector({ name: 'model', defaultValue: 'claude-opus-4-7', models: [ {id: 'claude-opus-4-7', label: 'Opus 4.7', provider: 'Anthropic'}, {id: 'claude-sonnet-4-6', label: 'Sonnet 4.6', provider: 'Anthropic'}, ], });Naming differs from upstream where the bare name collided with the Matterway vocabulary or domain: upstream
Tool→ToolInvocation,Context→TokenContext,Image(AI-generated) →GeneratedImage,Loader→ reuse existingSpinner. Streaming-aware components (Response,Reasoning) acceptisStreaming: trueto render a CSS shimmer / blinking cursor; the streaming transport itself remains skill-driven for now.deps: migrate to React 19 — bump
react,react-dom, and@types/reactto^19.2.0, add@types/react-dom^19.2.0, and pin them via pnpm overrides so the whole transitive tree resolves to a single React 19; updatereact-day-pickerto v10 (caption→month_caption,IconLeft/IconRight→Chevron,initialFocus→autoFocus,DayPicker*Props→DayPickerProps); replace globalJSX.Element/JSX.IntrinsicElementswithReact.JSX.*(JSX is no longer global in React 19); widenuseDraggable'sRefObject<HTMLDivElement>to allownull; pass an explicit initial value touseRef<string>(undefined); drop the now-unused@ts-expect-erroronreact-dom/clientui: add camelCase block aliases for the renderer (
src/renderer/blocks/aliases.ts) so skill authors can reference blocks by their canonical camelCase namesui: consolidate the public UI surface into a single barrel at
src/UI/index.ts(replaces the previoussrc/UI/index.tsx)ui: promote five previously-internal
mwcomponents to first-class renderer blocks —Highlight,ImageViewer,SheetViewer,DocViewerList, andToastNotification— each with aUi<Name>shell insrc/UI/components/and a block factory insrc/renderer/blocks/index.ts. StackedHighlightblocks now space themselves with a top margin (first one flush) so consecutive callouts don't visually merge.tsimport { Highlight, ImageViewer, SheetViewer, DocViewerList, ToastNotification, } from '@matterway/sdk/UI'; Highlight({text: 'Verify the extracted invoice number'}); ImageViewer({src: 'data:image/png;base64,...', filename: 'invoice.png'}); SheetViewer({base64: '...xlsx-base64...'}); DocViewerList({ items: [ {filetype: FileType.IMAGE, src: '...', filename: 'a.png'}, {filetype: FileType.PDF, src: '...'}, ], }); ToastNotification({ title: 'Saved', text: 'Your changes are live.', duration: 4000, });The renderer-side
Highlightblock is distinct from the puppeteerHighlightclass exported from the top-level@matterway/sdkentry, which paints a DOM-level overlay around a live page element — same name, different module (@matterway/sdk/UIvs@matterway/sdk).highlight: new functional
Highlightblock exported fromsrc/highlight(replaces the legacyshowHighlightimperative API)context:
ctx.renderis now generic in its resolved value —ctx.render<T>((resolve) => …)returnsPromise<T>and typesresolveaccordingly. Defaults tounknownwhen the type argument is omitted, preserving existing call sites.tsconst choice = await ctx.render<'yes' | 'no'>((resolve) => { // render UI that eventually calls resolve('yes') or resolve('no') });
Bug Fixes
- calendar: restore nav button positioning under react-day-picker v10 — anchor the prev/next buttons to an absolute-positioned
navrow above the month caption so they no longer overlap the label after the v10 DOM/classname changes - ui: correct field callback prop return types (
hidden/disabled/required) onBadgeField,ButtonToggleField,CheckboxListField,CurrencyField,EmailField,PercentField,PhoneField,RadioListField, andSegmentedField— callbacks now type asPromise<boolean>instead of the unusablePromise<false> - ui: widen
BadgeField's staticwrapprop toboolean— was previously typed asfalse | callback, makingwrap: truea type error - renderer: rebuild
FileUploadvalidFilesArrayBuffers from page-side chunks onrender()resolution, not just inside thefileUpload()template helper — callers usingrender()directly with aFileUploadblock now receive realArrayBuffers onMwFile, so downstream consumers likeexceljsno longer fail withCan't read the data of 'the loaded zip file'.render()now awaits the chunk rebuild before resolving, closing a race where the resolved payload could be consumed beforevalidFileswas rewritten.
Chores
- lint: narrow the
src/assistant-ui/componentsESLint ignore tobase/**only so the rest of the tree (bubbles, doc, icons, mw, top-level barrel) is linted again —prefer-read-only-propsandno-restricted-globalsnow catch issues SonarCloud was flagging. Add a project-wideno-restricted-globalsrule (error) preferringglobalThisoverwindowfor cross-environment compatibility, plusNumber.parseInt/Number.parseFloat/Number.isNaNover their loose global counterparts (theNumber.*forms don't coerce —Number.isNaN("foo")isfalse, whereasisNaN("foo")istrue). Add a project-widecomplexityrule (warn, max 20) to mirror SonarCloud's cyclomatic-complexity threshold so over-complex functions surface locally without blocking the rule rollout. - lint: replace global
parseInt/parseFloat/isNaNcalls with theirNumber.*counterparts acrossscripts/build-tokens.js,scripts/generate-css.js,src/assistant-ui/components/mw/ImageViewer,src/assistant-ui/components/mw/PDFviewer,src/assistant-ui/library/legacyThemes/utils.ts,src/highlight/Highlight.tsx, andsrc/highlight/highlightElement.tsxto satisfy the newno-restricted-globalsrule — no behaviour change (theNumber.*forms don't coerce, but every call site already passes a string). - lint: finish the
globalThis-over-windowmigration. Convert SDK-internal global augmentations frominterface Window {...}todeclare global { var X: T }so the same globals (__MW,__mw_session_stores,__mw_events,__mw_pending_origin,__mw_outbox,__mw_inbox,__mw_events_refs,__MW_Vendors,MW_SKILL_STOP,mw_matcherObserver,mw_matcherBackup,_mw_matchers,mwFilesChunks) type-check via bothglobalThis.Xandwindow.X. Then replace everywindow.Xreference in the renderer (browser entry, bridge, RPC proxy, state persistence, core, render, events, groups, page-port, chunking, useBridge), hot-reload, highlight, mouse, file, themes, wait, utils, UI components (CodeBlock,Confetti,EnvVarList,LocalChat,OpenInChat,PDFviewer,Reasoning,Snippet,SpeechInput,Terminal,VoiceSelector), andcreateSkillMountRootwithglobalThis.X. With the migration done, theno-restricted-globalsrule forwindowflips from warn to error so futurewindowusages fail CI. - lint: add a
capitalized-commentsrule (error) that ignoresnosemgrep,eslint-*,ts-*,prettier-*, and@ts-*pragma prefixes (these tooling directives are conventionally lowercase) — and rewrite the existing// nosemgrep:directives inscripts/generate-index.js,src/skill-scripts/paths.ts,src/skill-scripts/utils.ts, andsrc/skill-scripts/vite-paths.tsas block comments so the inlineeslint-disable-next-line capitalized-commentsworkarounds can be dropped. - lint: sort Readonly prop members in
Failure,ButtonList,CheckboxField,Confetti,DownloadLink,FileBox,FileItem,GeneratedImage,Group,HighLight,ImageViewer,InlineCitation,Layout,OpenInChat,PackageInfo,Queue,Shimmer,SplitView,Terminal,useDropzoneWithLimit,getDataStoreFile,highlightSelector,Progressible,error-boundary,ChunkManifest,usePdfDocument,computeLockedHeight, andOcrOptionstypes — required props first, then optional props alphabetized — to satisfy the project's prop-ordering lint rule. No behaviour change. - ui: clean up bubble/mw component code style so the previously-warned rules (
no-inline-comments,@typescript-eslint/no-floating-promises,default-case,@matterway/stylistic/sort-imports) can stay at their default error level — converted inline// …to block comments where the explanation needed to stay, marked intentional fire-and-forget promises withvoid, and resorted imports — no behaviour change. - ui: refactor
UiDateField's effective-value resolution into a sharedresolveEffectiveValue<T>helper used by the multiple / range / single branches — replaces three near-identical ternary chains with one typed helper that takes a shape predicate and falls back todefaultValueonly when it matches the expected shape for the field'stype. No behaviour change. - ui: refactor
CodeBlocktokenizer into per-token-kind scanner helpers (scanLineComment,scanBlockComment,scanString,scanNumber,scanIdentifier) so the main loop stays under the project's cyclomatic-complexity ceiling — no behaviour change. - ui: rename the
HighLightmw folder toHighlight(src/assistant-ui/components/mw/HighLight/→src/assistant-ui/components/mw/Highlight/) and re-export via the matching./mw/Highlightbarrel — file casing now matches the component name and the public renderer block. - templates: extract
successtemplate's i18n defaults into aresolveSuccessCopyhelper so the main function stays under the project's cyclomatic-complexity ceiling — no behaviour change. - templates: extract
feedbacktemplate's i18n defaults into aresolveFeedbackCopyhelper so the main function stays under the project's cyclomatic-complexity ceiling — no behaviour change. - templates: collapse
fileUpload()template into a thin wrapper overrender()— thevalidFilesrebuild now happens inrender()itself, so the template stops callingupdateFileUploadStatedirectly. - chunking: split
buildChunksintoextractChunksFromRollup+buildDepsMapand break the singleton-invariants assertion intoindexModulesByChunk/assertNoDuplicateModules/logMissingCanarieshelpers to stay under the project's cognitive-complexity ceiling — no behaviour change. - chunking: refactor
collectPatternNamesiniife-wrapinto per-pattern helpers (collectObjectPatternNames,collectArrayPatternNames) driven by aswitchso the main dispatch stays under the project's cognitive-complexity ceiling — no behaviour change. - chunking: split
sdkRuntimeImportsandscanSdkComponentsin the SDK scanner into focused helpers (parseSdkImportTarget,yieldNamedImports,recordRendererImport,recordComponentImport,parseSourceFile) so each function stays under the project's cognitive-complexity ceiling — no behaviour change. - skill-scripts: extract
startscript's background/content/workflow watchers into focused helpers (startWorkflowBackgroundWatcher,startViteBackgroundWatcher,startContentWatcher,applyNewRendererBackgroundConfig,buildContentOverride) so the mainstart()function stays under the project's cognitive-complexity ceiling — no behaviour change. - skill-scripts: extract
workflow-prebuild's step-call discovery anduseStepCtxinjection into focused helpers (findWorkflowFile,collectRuntimeImports,extractWorkflowBody,resolveStepFilefor discovery;findEntryFunction,hasCtxFirstParam,isStepDirective,findInjectAfter,isAlreadyInjectedfor injection) so each function stays under the project's cognitive-complexity ceiling — no behaviour change. - scripts: refactor
generate-index.js'sresolveStarExportChaininto focused helpers (resolveStarSpecifierfor./other→ concrete path resolution,isExported/collectLocalExportNamesfor local export-name extraction) so the main walker stays under the project's cognitive-complexity ceiling — no behaviour change. - scripts: add
audit:blocksscript (scripts/audit-block-coverage.mjs) that enforces everysrc/assistant-ui/components/mw/<Name>/component has aUi<Name>shell insrc/UI/components/and acreateBlock('Ui<Name>', …)factory insrc/renderer/blocks/index.ts— internal-only primitives (layout, list, overlay, spinner, table, upload, file-box, file-item, single-checkbox) are tracked inscripts/block-audit-allowlist.jsonwith a documented reason. Chained intopnpm lint:allso new mw components can't land without going through the shell + factory pipeline. - utils: refactor
mergeDeepinto small helpers (shouldSkipKey,mergeEntry,mergeOneSource) to stay under the project's cyclomatic-complexity ceiling — no behaviour change. - renderer: refactor
ensureChunksinto small helpers (clearInjectedIfPageReset,computePendingChunks,injectChunk) to stay under the project's cyclomatic-complexity ceiling — no behaviour change. - renderer: add regression coverage for the FileUpload
validFilesArrayBufferrebuild — tests pin thatrender()awaitsupdateFileUploadStatebefore resolving, that callers observe the rewrittenArrayBuffers on the result, and that the helper runs even when the payload carries no FileUpload data. - package: register subpath exports for the new AI-elements
mwcomponents (AgentCard,ApiSchema,Artifact,Attachments,AudioPlayer,ChainOfThought,Checkpoint,CodeBlock,Commit,Conversation,EnvVarList,FileTree,GeneratedImage,InlineCitation,LocalChat,Message,MessageActions,MessageBody,MicSelector,ModelSelector,OpenInChat,PackageInfo,PlanList,PromptInput,Queue,Reasoning,Response,Sandbox,Shimmer,Snippet,Sources,SpeechInput,StackTrace,Suggestion,Task,Terminal,TestResults,TokenContext,ToolInvocation,Transcription,VoiceSelector,WebPreview) so deep@matterway/sdk/lib/assistant-ui/components/mw/*imports resolve.
Breaking Changes
The next release is a major API consolidation. The remainder of this section is a topical migration guide — group by area to find what applies to your skill.
Topics:
- React 19
- File API:
SdkFile/SDKFile→MwFile - Renderer block factories renamed to
*Field - XPath aliases removed; selector helpers are unified
$eval/$xEvalremoved from the public APIgetAssistantDataPathremovedButtonListitems:text→labelTiffcomponent removedHeaderBar/Modal/SplitView/DocViewer:descriptionprop removedrunJobsWithProgressListconsolidated under the renderer- Legacy imperative UI surfaces removed
- Subpath exports removed
- Dependency drops
React 19
react, react-dom, and @types/react move to ^19.2.0, pinned via pnpm overrides so the whole tree resolves to a single React 19. react-day-picker goes to v10. JSX is no longer global.
caption→month_caption,IconLeft/IconRight→Chevron,initialFocus→autoFocus,DayPicker*Props→DayPickerProps.- Replace global
JSX.Element/JSX.IntrinsicElementswithReact.JSX.*. useRef<string>()(no initial value) →useRef<string>(undefined).RefObject<HTMLDivElement>parameter types that can receivenullmust be widened (or useRefObject<HTMLDivElement | null>).
File API: SdkFile/SDKFile → MwFile
The base64-oriented file surface is gone. All loader/writer helpers, the type, and its conversion utilities have Mw* counterparts already shipped. MwFile.arrayBuffer is now an ArrayBuffer field; MwFile.base64() is a method.
| Removed | Replacement |
|---|---|
SdkFile, SDKFile | MwFile |
convertBase64ToFile | convertBase64ToMwFile |
convertBase64ToBuffer | convertBase64ToArrayBuffer (or Buffer.from(arrayBuffer)) |
fileFromDrive | mwFileFromDrive |
fileFromUrl | mwFileFromUrl |
fileFromInput | mwFileFromInput |
fileToDrive | mwFileToDrive |
downloadFile | fileDownload |
fileToInput | mwFileToInput |
Before:
ts
import {fileFromDrive, fileToInput, SdkFile} from '@matterway/sdk';
const file: SdkFile = await fileFromDrive(
'/tmp/invoice.pdf',
'application/pdf',
);
const bytes = await file.arrayBuffer(); // method
const base64 = file.data; // base64 string field
await fileToInput(ctx, '#upload', file);After:
ts
import {mwFileFromDrive, mwFileToInput, MwFile} from '@matterway/sdk';
const file: MwFile = await mwFileFromDrive(
'/tmp/invoice.pdf',
'application/pdf',
);
const bytes = file.arrayBuffer; // field
const base64 = file.base64(); // method
await mwFileToInput(ctx, '#upload', file);SharePoint API
The SharepointAPI returned by getSharepointApi(ctx, ...) now speaks MwFile:
getFileByNameresolves toMwFile(wasSdkFile).uploadFileacceptsMwFile.getItemAttachmentresolves to{file: MwFile, item}(was{response: base64string, item}).
Before:
ts
const {response, item} = await sp.getItemAttachment(listName, itemId);
const buffer = convertBase64ToBuffer(response);After:
ts
const {file, item} = await sp.getItemAttachment(listName, itemId);
const buffer = Buffer.from(file.arrayBuffer);(getSharepointApi itself remains @deprecated — the Graph API helpers in the same module are the long-term replacement.)
Renderer block factories renamed to *Field
The five pre-renamed factories and their camelCase aliases are gone — names now match the underlying Ui*Field shadcn components.
| Removed | Replacement |
|---|---|
Input / input | InputField / inputField |
Select / select | SelectField / selectField |
MultiSelect / multiSelect | MultiSelectField / multiSelectField |
CheckboxList / checkboxList | CheckboxListField / checkboxListField |
RadioList / radioList | RadioListField / radioListField |
Before:
ts
import {Input, Select} from '@matterway/sdk/UI';
render(
ctx,
Bubble([Input({name: 'firstName'}), Select({name: 'country', items})]),
);After:
ts
import {InputField, SelectField} from '@matterway/sdk/UI';
render(
ctx,
Bubble([
InputField({name: 'firstName'}),
SelectField({name: 'country', items}),
]),
);XPath aliases removed; selector helpers are unified
The selector-aware helpers already accept XPath strings (detected via isXPath) or the explicit ::-p-xpath(...) prefix. The XPath-named aliases are gone.
| Removed | Replacement |
|---|---|
waitForXPath | waitForSelector |
watchXPath | watchSelector (wrap xpath as `::-p-xpath(${xp})` if needed) |
highlightXPath | highlightSelector |
clickByXPath | click |
scrollToXPathSelector | scrollToSelector |
typeByXPath | type |
fillByXPath | fill |
getValueByXPath | getValue |
setValueByXPath | setValue |
focusByXPath | focus |
selectFrame | getFrame |
selectNestedFrame | getFrame (use >> separator for nesting) |
getNestedFrame | getFrame (use >> separator for nesting) |
Before:
ts
await waitForXPath(ctx, '//button[text()="Submit"]');
await clickByXPath(ctx, '//button[text()="Submit"]');After:
ts
await waitForSelector(ctx, '//button[text()="Submit"]');
await click(ctx, '//button[text()="Submit"]');For nested frames, replace getNestedFrame(ctx, [outer, inner]) with a single getFrame call using the >> separator:
ts
const inner = await getFrame(ctx, 'iframe#outer >> iframe#inner');$eval / $xEval removed from the public API
These were @deprecated @private helpers that nevertheless leaked through the @matterway/sdk barrel. They are now @internal and no longer re-exported from src/utils/index.ts. Skill authors should use the typed selector helpers (click, type, fill, getValue, setValue, focus, etc.) which cover the common cases. For ad-hoc evaluation, drop down to puppeteer's page.$eval / page.evaluate via the context's page handle.
getAssistantDataPath removed
The standalone helper that computed the per-platform assistant data directory is gone. The host runtime provides the same value via the injected assistant API — use ctx.assistant.getAssistantPath().
Before:
ts
import {getAssistantDataPath} from '@matterway/sdk';
const root = getAssistantDataPath();After:
ts
const root = ctx.assistant.getAssistantPath();ButtonList items: text → label
Affects every template that builds a navigation/button row (Failure, FileUpload, Success, ThumbsFeedback, etc.).
Before:
tsx
ButtonList({items: [{text: 'Submit', value: 'submit'}]});After:
tsx
ButtonList({items: [{label: 'Submit', value: 'submit'}]});Tiff component removed
Use ImageViewer, which renders TIFFs alongside other formats. With MwFile, pass file.base64() as src:
Before:
tsx
import {Tiff} from '@matterway/sdk';
<Tiff file={tiffFile} alt='scan' />;After:
tsx
import {ImageViewer} from '@matterway/sdk';
<ImageViewer src={tiffFile.base64()} filename={tiffFile.name} />;HeaderBar / Modal / SplitView / DocViewer: description prop removed
The prop was a no-op for some time. Drop it from call sites and from template options.
Before:
ts
HeaderBar({title: 'Upload', description: 'Pick a file'});
Modal({title: 'Confirm', description: 'Are you sure?'}, [...]);
message(ctx, {title: 'Done', description: 'Saved.', text: 'All good'});After:
ts
HeaderBar({title: 'Upload'});
Modal({title: 'Confirm'}, [...]);
message(ctx, {title: 'Done', text: 'All good'});runJobsWithProgressList consolidated under the renderer
The standalone runJobsWithProgressList re-export from @matterway/sdk emitted a deprecation warning and delegated to runProgressibleJobs. Import the renderer template instead.
Before:
ts
import {runJobsWithProgressList} from '@matterway/sdk';
await runJobsWithProgressList(ctx, jobs, {title: 'Working…'});After:
ts
import {runJobsWithProgressList} from '@matterway/sdk/UI';
await runJobsWithProgressList(ctx, jobs, {title: 'Working…'});Legacy imperative UI surfaces removed
The "show*" entry points and their bubble/template/component implementations are gone. Compose the renderer instead — render(ctx, blockTree) with the block factories in @matterway/sdk/UI.
| Removed API | Replacement |
|---|---|
showUI({ctx, element}) | render(ctx, blockTree) |
showMessage(ctx, options) | message(ctx, options) — renderer template |
showRequestUserAction(ctx, options) | requestUserAction(ctx, options) — renderer template |
showNotice / showSuccessNotice / showFailureNotice | success(ctx, options) / failure(ctx, options) / message(ctx, options) templates |
showWarningNotice | message(ctx, options) with icon: 'warning-circle-outline' |
showForm(ctx, schema, …) | render(ctx, Bubble([InputField, SelectField, …, NavigationBar])) — compose explicit field blocks |
showProgress / showProgressList | progressList(ctx, options) — renderer template |
showHighlight(ctx, selector, options) | Highlight(ctx, selector, options) block in @matterway/sdk/highlight |
showUploadFile / showFileUpload | fileUpload(ctx, options) — renderer template (returns MwFile[] | null) |
showDownloadFile / showFileDownload | Render a DownloadLink block, or compose your own using MwFile.base64() |
import {bubble, …} from '@matterway/sdk/UI/blocks' | import {bubble, …} from '@matterway/sdk/UI' — block factories are now part of the top-level UI barrel |
Component implementations under src/message, src/notice, src/progress/components, src/form/components, src/file/components, the entire Form* schema layer (yup types, Layouts, ListExtra, FormItem, FormBubble), and bubble-specific React components (MessageBubble, NoticeBubble, ProgressListBubble, UploadFileBubble, DownloadMwFile, …) are all gone — they were implementation details of the show* APIs and have no direct replacement; the renderer composes the same UI from block factories.
runProgressibleJobs, runJobsWithProgress, makeProgressiblePromise, Progressible, and showTabProgress remain unchanged. The pure file IO helpers (getMwFile, mwFileFromDrive/Url/Input, mwFileToDrive/Input, fileDownload, fetchFileChunks) remain.
Before:
ts
import {showUI, Bubble, Input} from '@matterway/sdk/UI';
const {data} = await showUI({ctx, element: Bubble([Input({name: 'q'})])});After:
ts
import {render, Bubble, InputField} from '@matterway/sdk/UI';
const {data} = await render(ctx, Bubble([InputField({name: 'q'})]));Form migration example:
ts
// Before
import {showForm} from '@matterway/sdk';
const {data} = await showForm(ctx, {
fields: [
{kind: 'input', name: 'email', label: 'Email'},
{kind: 'select', name: 'country', label: 'Country', items},
],
});
// After
import {
render,
Bubble,
InputField,
SelectField,
NavigationBar,
} from '@matterway/sdk/UI';
const {data} = await render(
ctx,
Bubble([
InputField({name: 'email', label: 'Email'}),
SelectField({name: 'country', label: 'Country', items}),
NavigationBar({buttons: [{label: 'Submit', value: 'submit'}]}),
]),
);Subpath exports removed
The corresponding ./lib/... subpath exports for the removed source trees are gone from package.json. If you imported from any of these deep paths, switch to the top-level barrels.
| Removed deep path | New import |
|---|---|
@matterway/sdk/lib/UI/blocks (or .../blocks/doc) | @matterway/sdk/UI — block factories live in the main UI barrel |
@matterway/sdk/lib/assistant-design-system/** | @matterway/sdk/lib/assistant-ui/components/mw/** (shadcn-based replacements) |
@matterway/sdk/lib/assistant-ui/components/mw/Tiff | @matterway/sdk/lib/assistant-ui/components/mw/ImageViewer |
@matterway/sdk/lib/file/components | @matterway/sdk/UI (file blocks FileUpload, DownloadLink) |
@matterway/sdk/lib/form/components (+ Fields, types, …) | @matterway/sdk/UI (field blocks InputField, SelectField, …) |
@matterway/sdk/lib/message (+ components) | @matterway/sdk/UI (message, requestUserAction templates) |
@matterway/sdk/lib/notice (+ components) | @matterway/sdk/UI (success, failure, message templates) |
@matterway/sdk/lib/progress/components | @matterway/sdk/UI (progressList, runJobsWithProgressList templates) |
Dependency drops
@matterway/background-react— gone. It was React-18-only (depended onReactCurrentDispatcher) and the last consumer of the legacy showUI path.shiki— gone.CodeBlocknow uses a built-in pattern-based tokenizer instead of shiki, eliminating the runtime grammar dynamic imports that the SDK's chunk-evaluation pipeline could not resolve.src/assistant-design-system— removed in its entirety (Bubble, Modal, Overlay, Shield, SplitView containers; Badge, Button, Callout, etc.; the ThemeContext / Root provider / classicTheme / DraggableIcons). Use the shadcn-based components under@matterway/sdk/lib/assistant-ui/components/mw.
3.23.1 (2026-05-20)
Bug Fixes
- renderer: self-heal chunk injection state when the page navigates or resets —
ensureChunksnow probeswindow.__MWand clears the trackedinjectedset only on an explicit "gone" signal (typeof __MW === 'undefined'or an adapter error), preventing a follow-uprender()from silently no-opping afterpage.reload()while staying safe under non-conforming adapters. - renderer: abort nav-replay mount if the session was cleaned up during chunk injection — avoids re-mounting a superseded session (e.g. a
progress()afterpage.reload()issuedcleanupOthers) and leaking anmw-ui-root-<sid>that never gets torn down.
3.23.0 (2026-05-18)
Features
- workflow: add workflow skill support, including
useStepCtx,cloud/localstep-location wrappers, theworkflow-build/workflow-prebuildpipeline, thesteps.jszip entry, and the@workflow/buildersdependency
Bug Fixes
workflow-build: replace regex-based step-dispatch rewriter with an AST-based transform using the TypeScript compiler API, eliminating regex backtracking concerns and improving robustness against whitespace and comment variations in generated
steps.jsworkflow-prebuild: replace regex-based
'use workflow'/'use step'directive injection with an AST-based transform using the TypeScript compiler API andmagic-string, eliminating ReDoS concerns and correctly handling type annotations, generics, comments, and nested function declarationschangelog: harden
update-changelog.shagainst user-level Stop hook leakage by passing--setting-sources project,local, rejecting Claude output that doesn't contain a recognized changelog section heading, and falling back tomain's Unreleased section when the local one is detected as corrupted — preventing rich entries from being silently replaced by placeholder bullets after a regenerationeslint: re-enable
curly: ['error', 'all']in the local ESLint config (previously disabled by bundledeslint-config-prettier) and enforcereact/prefer-read-only-propson.tsxfiles outsideassistant-design-system, ensuring consistent brace style and read-only React props across the codebasedeps: pin pnpm overrides to security-patched versions of
undici(>=7.24.0),devalue(>=5.8.1),fast-uri(>=3.1.2), and@babel/plugin-transform-modules-systemjs(>=7.29.4), and drop stale overrides forbasic-ftp,axios,ip-address, andtailwindcss
Chores
- workflow-build: expand single-line
if (!...) return undefined;guards into braced blocks inasTaggedCall/asRegisterCall/findStepDispatchMatchesto comply with the re-enabledcurly: allrule
3.20.0 (2026-05-13)
Features
card: add
Cardmw component with optional header, body, and prescriptive footer actionstsx// 1 action — full-width primary button <Card title="Upgrade plan" actions={[{label: 'Upgrade to Pro'}]} /> // 2 actions — secondary left, primary right <Card title="Unsaved changes" actions={[ {label: 'Discard', variant: 'outline'}, {label: 'Save changes'}, ]} />carousel: add
Carouselmw component (base + mw wrapper overembla-carousel-react) with built-in previous/next chevrons and configurable slide width viaslideBasistsCarousel({ slideBasis: '1/3', slides: [ {key: 'plan-basic', content: 'Basic'}, {key: 'plan-pro', content: 'Pro'}, {key: 'plan-team', content: 'Team'}, ], });tabs: add
Tabsmw component (mw wrapper over base/tabs) for switching between related content panels within a bounded sectiontsTabs({ defaultValue: 'overview', items: [ {value: 'overview', label: 'Overview', content: 'Overview panel'}, {value: 'activity', label: 'Activity', content: 'Activity panel'}, {value: 'settings', label: 'Settings', content: 'Settings panel'}, ], });tooltip: add
Tooltipmw component (base + mw wrapper) for short contextual hints on hover or focustsTooltip({ content: 'Permanently delete this conversation', children: 'Delete', });pagination: add
Paginationmw component (base + mw wrapper) with Previous/Next buttons, numbered page links, and ellipsis support for long page rangestsPagination({ page: 3, pageCount: 12, onPageChange: (page) => console.log('go to page', page), });navigationMenu: add
NavigationMenumw component (base + mw wrapper) — top-level horizontal nav with link items and trigger items that open rich content panels (distinct from existingNavigationBar)tsNavigationMenu({ items: [ {type: 'link', label: 'Docs', href: '/docs', active: true}, { type: 'trigger', label: 'Products', content: { variant: 'text', links: [ { label: 'Assistant', description: 'Build agentic skills', href: '/products/assistant', }, { label: 'Designer', description: 'Visual flow editor', href: '/products/designer', }, ], }, }, ], });dropdownMenu: add
DropdownMenumw component (base + mw wrapper) — context menu anchored to a trigger, supporting default, checkbox, radio, sub-menu, label, and separator item typestsDropdownMenu({ trigger: 'Actions', groups: [ { key: 'safe', items: [ {key: 'edit', label: 'Edit', onClick: () => console.log('edit')}, { key: 'duplicate', label: 'Duplicate', onClick: () => console.log('duplicate'), }, ], }, { key: 'destructive', items: [ { key: 'delete', label: 'Delete', onClick: () => console.log('delete'), }, ], }, ], });dataTable: add
DataTablemw component (base + mw wrapper) — sortable, filterable table with row selection, column visibility, and paginationtsDataTable({ columns: [ {accessorKey: 'name', header: 'Name'}, {accessorKey: 'status', header: 'Status'}, {accessorKey: 'role', header: 'Role'}, ], data: [ {name: 'Ada Lovelace', status: 'active', role: 'Admin'}, {name: 'Alan Turing', status: 'invited', role: 'Member'}, ], searchKey: 'name', });hoverCard: add
HoverCardmw component (base + mw wrapper) — floating card shown on hover over a trigger, for read-only previews like profiles, link summaries, or entity metadatatsHoverCard({ trigger: 'Ada Lovelace', children: 'First computer programmer (1815–1852).', });dateField: add
displayFormatprop to control how the date is shown and parsed in the text input (any date-fns format string). Default remainsdd.MM.yyyy; the value emitted viaonSelectstays in ISO form pertype.tsDateField({ name: 'birthday', label: 'Birthday', defaultValue: '2026-05-12', displayFormat: 'MM/dd/yyyy', });item: add
ItemandItemGroupmw components — list entries with optional media, title, description, and action slots;ItemGrouprenders a divider-separated listtsItemGroup({ items: [ {key: 'alice', title: 'Alice Johnson', description: 'alice@example.com'}, {key: 'bob', title: 'Bob Smith', description: 'bob@example.com'}, ], });popover: add
Popovermw component — floating panel anchored to a trigger for rich, interactive content (forms, settings, pickers). UseHoverCardfor hover-only previews; useDropdownMenufor action lists.tsPopover({ trigger: 'Filters', heading: 'Filter results', children: 'Filter controls go here.', });
3.6.3 (2026-05-08)
Bug Fixes
- renderer: lower z-index by 1 to allow render below assistant runner UI
3.6.2 (2026-05-08)
Features
renderer:
FileUploadblock now accepts avalidatefunction directly; the block fetches the file'sarrayBufferserver-side and supports returningundefined(valid), astring(error message), or the explicit{isValid, message, processedFile?}shape.tsFileUpload({ name: 'docs', validate: async (file) => { if (file.arrayBuffer.byteLength > 1_000_000) return 'File too large'; }, });renderer:
src/client/components are now discovered recursively at any depth, with clear errors for basename collisions, missing default exports, and non-PascalCase filenames.renderer: export
updateFileUploadStatefrom the package entry for hand-composedFileUploadflows viarender().
Bug Fixes
- renderer: styled-components now inserts styles into the per-session shadow root via
StyleSheetManager, sostyled.*components insrc/client/render with their styles instead of leaking todocument.headunstyled. - ui:
FileUploadnow surfaces files rejected duringonDrop(wrong type, too large) in the file list by syncing pre-validated files intovalidFiles. - renderer:
fileUploadtemplate no longer crashes when the result has nobutton(e.g. cancelled session).
3.6.1 (2026-05-07)
Chores
- deps: clean up pnpm overrides, removing entries no longer needed and tightening version ranges for
basic-ftp,axios,postcss, andip-address.
3.6.0 (2026-05-07)
Features
- success template: add
showConfettioption to opt out of the confetti animation (defaults totrue)
ts
await success(ctx, {
title: 'Done',
showConfetti: false,
});Bug Fixes
- assistant-ui: expand Tailwind v4 custom property defaults in Shadow DOM so utilities composing multiple
--tw-*vars (e.g.-translate-y-1/2, gradients, shadows, filters) render correctly in Chromium where@propertyregistrations don't apply at the shadow root - renderer:
render()now cleans up other active sessions on the same target by default. PasscleanupOthers: falseto opt out and stack multiple UIs on the same page.
ts
await render(ctx, StepOne()); // mounts
await render(ctx, StepTwo()); // StepOne cleans up
render(ctx, StatusBar(), {cleanupOthers: false}); // stacks on top3.5.3 (2026-05-06)
Chores
- deps: add Radix UI primitives for new MDS components (
accordion,alert-dialog,dropdown-menu,hover-card,navigation-menu,tooltip) - deps: add
@tanstack/react-tablefor table component - deps: add
embla-carousel-reactfor carousel component - deps: add
lucide-reactfor icon support
3.5.2 (2026-05-06)
Version bump only.
3.5.1 (2026-05-05)
Features
renderer/blocks: add
InputField,SelectField,MultiSelectField,CheckboxListField,RadioListFieldblock functions whose names match their underlyingUi*Fieldcomponentstsimport { InputField, SelectField, MultiSelectField, CheckboxListField, RadioListField, } from '@matterway/sdk/UI'; InputField({name: 'email', label: 'Email'}); SelectField({name: 'country', items: [{value: 'us', label: 'US'}]});renderer/react: new
@matterway/sdk/UI/reactentry point for hostingUi*components in regular React / Next.js apps without Puppeteer or the skill bridge. ExposesSessionRoot,RenderBlockTree, andregisterComponent/registerComponentsfor custom block typestsximport {SessionRoot, RenderBlockTree} from '@matterway/sdk/UI/react'; <SessionRoot onResolve={({data, button}) => console.log(data, button)}> <RenderBlockTree tree={treeFromServer} /> </SessionRoot>;renderer: add
fromBrowser(target)PagePort for same-realm rendering. Use when the renderer's "Node side" and "browser side" run in the same React processtsimport {fromBrowser} from '@matterway/sdk/UI/renderer'; const port = fromBrowser(rootElement);mw-scripts: new build-time CLI that scans a consumer's
src/for SDK block-factory imports and generates asdk-components.gen.tsregistry that the renderer uses to look upUi*components. Supports one-shot and watch modesshmw-scripts # one-shot scan + write mw-scripts --watch -- next dev # watch mode + spawn child cmdstyles: ship a second CSS bundle
@matterway/sdk/styles.csswith:rootpreserved (alongside the Shadow-DOM:host-rewrittenindex.css) for apps that mount SDK components directly into the document bodytsimport '@matterway/sdk/styles.css';exports: add subpath exports for
./UI/blocks,./UI/react,./UI/components,./UI/components/*, and./styles.cssui/buttonList: add canonical
labelfield on button items (deprecatestext);FileUploadandNavigationBarnow forwardlabelend-to-endtsNavigationBar({buttons: [{label: 'Submit', value: 'submit'}]});
Bug Fixes
- ui/button: disabled buttons no longer apply hover styles and now show a
not-allowedcursor; enabled buttons show apointercursor - ui/styles: set explicit
--tw-border-styleand--tw-outline-styledefaults so borders render correctly when styles are adopted into a Shadow DOM - ui/mdx: tighten paragraph spacing (
leading-5,my-0) and align callout content left with reduced padding (p-3,rounded-md) for more compact rendering - ui/modal: fix modal and splitview centering by using flexbox layout instead of absolute positioning with transform, so dragging composes cleanly with centering and
maxWidth: 90vwis respected - renderer/hydrate: convert Block-valued props (e.g.
SplitView'ssidebar) into React elements before passing to host components, preventing "Objects are not valid as a React child" errors - ui/statusList: align status icon spacing with
mt-0.5for consistent vertical rhythm
Chores
- renderer: exclude
rendererfrom the root barrel so block imports keep flowing through@matterway/sdk/UI(required for the chunking scanner to detect block usage) - deps: add
chokidarformw-scripts --watch
Deprecations
renderer/blocks:
Input,Select,MultiSelect,CheckboxList,RadioListare deprecated in favor of their*Fieldcounterparts. The old names still work but will be removed in a future release.ts// Before import { Input, Select, MultiSelect, CheckboxList, RadioList, } from '@matterway/sdk/UI'; // After import { InputField, SelectField, MultiSelectField, CheckboxListField, RadioListField, } from '@matterway/sdk/UI';ui/buttonList:
textfield on button items is deprecated in favor oflabelts// Before NavigationBar({buttons: [{text: 'Submit', value: 'submit'}]}); // After NavigationBar({buttons: [{label: 'Submit', value: 'submit'}]});
3.4.0 (2026-04-30)
Features
- PDFnative: add new PDFnative component export under
./lib/assistant-ui/components/mw/PDFnative - renderer: add
PdfNativeblock factory insrc/renderer/blocksfor the native browser PDF viewer (iframe-based, no pdf.js) - UI: add
pdfNativeblock andUiPDFnativecomponent for the legacyshowUIpath (deprecated — prefer the renderer block)
ts
import {PdfNative} from '@matterway/sdk/renderer/blocks';
PdfNative({
src: 'base64-or-data-url-or-blob-url',
showToolbar: false,
});Chores
- PDFviewer: extract sample PDF base64 into shared
samplePdf.tsfor reuse across PDF stories
3.3.0 (2026-04-29)
Version bump only.
3.2.4 (2026-04-28)
Features
Mdx: render GitHub-flavored markdown tables with header styling, column alignment, inline markdown in cells, and horizontal overflow scrolling. Tables inherit the surrounding text color when one is provided.
tsx<Mdx>{` | Name | Role | Location | |------|------|----------| | Alice | Engineer | Berlin | | Bob | Designer | Lisbon | `}</Mdx>
Bug Fixes
- PDFviewer: polyfill
Map.prototype.getOrInsertComputedon the main thread and prepend the same polyfill to the pdf.js worker source so PDFs render on older Chromium-based Edge versions that lack the TC39 upsert method. - ProgressList: move status icon to the start of each item and let the label flex to fill available space so long sublabels no longer push the icon off-screen.
3.2.3 (2026-04-28)
Chores
- build: migrate Tailwind CSS from v3 to v4, moving theme configuration from
tailwind.config.jsintosrc/assistant-ui/styles.cssvia@theme inline,@source, and@custom-variantdirectives. - build: replace
tailwindcss+autoprefixerPostCSS plugins with@tailwindcss/postcss; dropautoprefixerdependency. - test: loosen PDFviewer Tailwind compilation assertions to check for property presence rather than exact emitted values, since Tailwind v4 produces semantically-equivalent but textually-different output (e.g.
flex:1vsflex:1 1 0%,calc(var(--spacing)*0)vs0).
3.2.2 (2026-04-27)
Features
- pages: add
createWindowto open a separate, visible browser window (not a tab) and return a scoped Context — useful when two UIs need to be visible simultaneously (e.g. editor + live preview).
ts
import {createWindow} from '@matterway/sdk';
const previewCtx = await createWindow(ctx, 'https://example.com');
// ctx.page and previewCtx.page are visible side by side.renderer: Block children now accept components imported from
src/client/withoutas unknown as Blockcasts — the build transform rewrites client imports into Block-returning callables, and theChildBlocktype bridges theReactElementgap.PDFviewer: full rewrite on top of
pdfjs-dist— replaces the<iframe>preview with an in-SDK renderer that supports page-by-page canvas rendering, zoom (10%–500%), rotation, page navigation, filename display, and a download button. Pages render lazily viaIntersectionObserverand the viewer's outer height locks to the document's natural size so zooming scrolls inside rather than resizing the container.
tsx
<PDFviewer src={base64OrBlobOrDataUrl} filename='report.pdf' showToolbar />Bug Fixes
- renderer: prevent cross-window state-sync echo loops in session groups by relaying the Node-origin marker through
window.__mw_pending_originso browser-side persistence tags its echo correctly and Node skips re-broadcasting. - renderer: clear the per-render
sessionIdentry inwindow.__mw_session_storeson unmount while preserving the sharedstoreIdentry when other peers still need it. - renderer: reject raw React elements and untransformed React components inside Block trees with a clear error pointing to
src/client/as the fix, instead of rendering blank. - renderer: report the exact child path (e.g.
children[2].children[0]) when a React element is found in a Block tree, instead of the placeholderchildren[?]. - renderer: reuse the shared
isReactElementhelper in the browser hydrate path so React-element detection stays consistent with the tree walker and serializer. - skill-scripts: invalidate the chunk-manifest cache in Rollup watch mode when skill source files change, so adding a new block import is picked up without restarting
skill-scripts start. - render: patch for 3rd-party libs so chunks that import CJS/UMD packages (exceljs, handsontable) don't leak top-level
export/importafter IIFE wrapping. - pages: avoid double navigation in
createWindowwhen no URL is provided by creating the target directly at the destination instead ofabout:blank-then-goto. - chunking: defer
export *re-exports to runtime viaObject.assigninto the chunk's exports slot, so bulk re-exports from CJS/UMD vendor namespaces merge correctly instead of overwriting the shared__MW_Vendorsobject.
Chores
- chunking: rename the core chunk to
initand evaluate each chunk (init + vendors + components) in its own topologically-sortedport.evaluatecall, so partial failures don't lose track of chunks that already ran. - chunking: shared modules are now extracted into auto-generated
vendor-*chunks exposed viawindow.__MW_Vendors, replacing the hand-maintainedSHARED_GLOBALSallowlist and guaranteeing singleton identity across chunks. - chunking: add singleton-invariant tests and a jsdom integration test that exercises the CJS-wrapping path (UiSheet → exceljs/handsontable) to catch
export-leak regressions in the IIFE wrapper. - chunking: add a per-render isolation integration test that builds a fixture with
PdfClient(heavy, importsPDFviewer),TextClient(importsTextvia the same assistant-ui barrel that re-exportsPDFviewer), andPlainClient(no SDK imports), then asserts pdfjs only lands in thePdfClientchunk — never ininit, vendor chunks, or any chunk reachable from an unrelated render's dep graph. Replaces the ad-hocmeasure-sizes.test.tssize dump. - chunking:
virtual:mw-chunk-manifestnow default-exports the manifest only; runtime registration (setChunkManifest) moved to the background-entry injection plugin so the call site is controlled. - chunking: derive the block-fn → Ui-component map from
src/renderer/blocks/index.tsvia a sharedscripts/parse-blocks.jsAST parser consumed by bothgenerate-blocks-manifest.js(emitsblocks-manifest.generated.tsfor the chunker) andgenerate-templates-manifest.js, replacing the hand-maintainedBLOCK_FN_TO_COMPONENTandfileOverridesmaps that used to drift when new blocks landed. - build: treat
src/index.tsand the chunking manifests as auto-generated — regenerated bypnpm build:generated(run fromprepareandprepack) so the tree is reproducible from inputs + scripts and publish always includes fresh artifacts. - build: bundle the
pdfjs-distworker as a string constant viascripts/generate-pdfjs-worker.jsso skills don't need to ship a separate worker file; falls back to pdfjs's main-thread worker under strict CSPs that blockblob:workers. - deps: add
pdfjs-distfor the new PDFviewer renderer and@playwright/testfor real-browser layout tests (pnpm test:browser). - deps: add
acornandmagic-stringfor the IIFE-wrapping build plugin.
3.2.0 (2026-04-23)
Bug Fixes
- skill-scripts: restore
tsconfig.json::compilerOptions.baseUrl-only import resolution in the Vite build, fixing "Rollup failed to resolve import" for skills that use bare imports (e.g.import {initI18n} from 'locales') without declaringcompilerOptions.paths - skill-scripts: inline dynamic imports in the background bundle so skills relying on code-splitting produce a single executable chunk
3.1.0 (2026-04-22)
Features
package: declare package as ESM (
"type": "module") and expose subpath exports map — consumers can now import from@matterway/sdk/UI,@matterway/sdk/UI/renderer, and@matterway/sdk/clienttsimport {Bubble, Text, Input} from '@matterway/sdk/UI'; import {render} from '@matterway/sdk/UI/renderer'; import {useData, useBridge} from '@matterway/sdk/client';package: auto-generate explicit
./lib/<dir>export entries for everysrc/directory with anindex.ts(x)via newbuild:exportsstep — fixes ESM resolution for legacy skills that import directories (e.g.@matterway/sdk/lib/assistant-ui/library) which the./lib/*wildcard alone cannot resolverenderer/templates: add pre-built template builders (
failure,feedback,fileUpload,message,progress,progressList,requestUserAction,runJobsWithProgressList,success) — each returns a plain Block tree for common UI patternsdata-store: add data-store module for session-scoped data access
skill-scripts: auto-generate templates manifest via new
build:manifestsstep —templates-manifest.generated.tsis picked up by the chunk scanner to discover template entriesskill-scripts: add component chunking system — per-component Rollup builds produce IIFE chunks loaded on demand, with shared React/runtime singletons on
window.__MW_*globalsskill-scripts: auto-detect SDK UI component imports and generate virtual content entry importing only used components
skill-scripts: auto-discover client components from
src/client/directory viaimport.meta.globskill-scripts: transform
client/imports in background files to callable ref functions, keeping real component code out of Node.jsskill-scripts: validate client component filenames — basenames must be valid JavaScript identifiers (PascalCase recommended), with a clear error message pointing to the offending file
skill-scripts: read the skill's full
compilerOptions.pathsfromtsconfig.jsonwhen building Vite aliases — previously only a hardcoded set of five names (locales,components,shared,steps,skillRenderCheck) resolved againstbaseUrl, which broke skills usingmoduleResolution: bundler(nobaseUrl) or declaring custom aliases; now supports exact and globbed patterns with TS-compatible semanticstsconfig: include all
.tsxfiles and exclude stories from build outputrenderer: add block functions for composing UI in background context — returns plain
Blockdata objects with no JSX or React dependencytsimport {Bubble, Text, Input, NavigationBar} from '@matterway/sdk/UI'; const form = Bubble([ Text({content: 'Enter your email'}), Input({name: 'email', label: 'Email', required: true}), NavigationBar({buttons: [{text: 'Submit', value: 'submit'}]}), ]);renderer: add RPC bridge with signal+queue pattern for Node ↔ browser callback invocation, decoupled from Puppeteer/Playwright via
PagePortabstractionrenderer: add browser-side component registry for resolving serialized tree types to real React components
renderer: add
BlockErrorBoundarythat isolates render failures per session and shows a fallback UI with the underlying errorrenderer: add browser hydration and mount pipeline with Shadow DOM isolation per session
renderer: add state persistence layer that syncs Zustand store snapshots between Node and browser with origin-aware debouncing
renderer: add chunking runtime —
setChunkManifest+ on-demand chunk loading walk the tree and inject only needed component IIFEsrenderer: add client-side hooks
useDataanduseBridgefor accessing session state and calling background callbacks from client componentsrenderer: add cross-window/session groups — multiple sessions can share a Zustand store via
sessionIdaliasing with state relay across tabsrenderer: add observability events for session lifecycle, RPC traffic, and chunk loads
Chores
- build: migrate config and build scripts from CommonJS to ESM
- build: restrict
build:exportsdirectory scan to an explicit safe-name allowlist (^[A-Za-z0-9_][A-Za-z0-9._-]*$) — hardens against path traversal from unexpected directory names - build: annotate validated
path.joincall inbuild:exportsscanner with semgrep suppression — entry names are pre-validated against the safe-name allowlist - skill-scripts: rename jest transform files to
.cjsfor ESM compatibility - skill-scripts: annotate non-literal
RegExpconstruction invite-pathswith semgrep suppressions — patterns come from the skill's own developer-authoredtsconfig.jsonand are escaped before interpolation - deps: add
jsdomfor jsdom-based integration tests - deps: bump transitive dependencies via pnpm overrides to patch security advisories (
handlebars,path-to-regexp,lodash,@xmldom/xmldom,basic-ftp,brace-expansion,picomatch,yaml,follow-redirects,dompurify,axios)
3.0.51 (2026-04-15)
Features
- DateField: added controlled
valueprop to single, multiple, and range date field variants
Bug Fixes
- DateField: fixed default value re-initialization overwriting user-cleared selections
- DateField: fixed popover focus detection in Shadow DOM environments
- DateField: fixed popover not reopening on input click after closing
- DateField: fixed popover closing unexpectedly when clicking calendar content
- DateField: preserved caret position in single date input during typing
- DateField: close popover and blur input on Enter key press in single date mode
- deps: added axios
^1.15.0override for SSRF and header injection CVEs
3.0.50 (2026-04-08)
Features
- skill-scripts: add SDK version (
sdk_version) to skill manifest on build - components: add new Radix UI primitives — Accordion, AlertDialog, DropdownMenu, HoverCard, NavigationMenu, and Tooltip
- components: add
@tanstack/react-tablefor data table support - components: add
embla-carousel-reactfor carousel/slider support - components: add
lucide-reacticon library
Bug Fixes
- waitForPageChange: fix crypto issue by replacing
uniqueIdwithpseudoUniqueId
Chores
- ts: upgrade TypeScript to 6.0
- ci: remove BlackDuck and Checkmarx workflows
- ci: migrate
@matterwaypackages registry from npm to GitHub Packages - license: update copyright to Cognizant
- tsconfig: switch
moduleResolutiontobundler(main) andnodenext(skill-scripts) - deps: bump mammoth to ^1.12.0, vite to ^7.3.2, eslint to ^10.2.0, lerna to ^9.0.7, vitepress to ^2.0.0-alpha.17, @matterway/eslint-config to ^6.0.8
- deps: no-references security patches
- deps: restore pnpm security overrides for tar, ajv, minimatch, rollup, basic-ftp, underscore, svgo, dompurify, and flatted
- pnpm: remove redundant
yauzlsecurity override (now resolved by direct dependency) - githooks: source nvm in pre-commit and commit-msg for GUI app compatibility
- npmrc: remove vite from minimum-release-age exclusions
- deps: migrate @matterway packages to GitHub Packages registry
3.0.45 (2026-03-23)
Bug Fixes
- file: preserve error cause chain in
openFolder,openFile,moveFileOrFolder,selectFileOrFolder,renameFileOrFolder,deleteFileOrFolder, andcreateFileOrFolder - pdf: preserve error cause in
mergePdfs - hot-reload: preserve error cause when resolving assistant path
- hot-reload: use
consoleinstead ofloginsidepage.evaluate()calls in autostart and hot-reload toggle - jobs: preserve error cause in
runJobsandrunJobsSequentiallyfailure handling - ms-graph: preserve error cause in
getFileByPath - ms-graph: preserve error cause across all SharePoint eval functions (
getSiteIdEval,getDrivesEval,getDriveItemsEval,getFileByPathEval,uploadFileEval,getListsEval,getListItemsEval,getDriveFromFolderItemsEval,getFileEval,deleteFileEval,copyFileEval,moveFileEval) - ms-graph: use
consoleinstead ofloginsidepage.evaluate()calls in SharePoint HTTP functions
Chores
- lint: remove unused
preserve-caught-errorESLint rule override
3.0.44 (2026-03-23)
Chores
- ci: add
statuses: writepermission to Checkmarx SAST workflow - ci: capitalize Release workflow name
- deps: update
flattedoverride to enforce>=3.4.2
3.0.43 (2026-03-23)
Features
logger: add structured, filterable logging system with source tagging and level control
ts// Within SDK // ---------- // SDK log — all output prefixed with [SDK] log.debug('click: starting', {selector: '#btn'}); log.warn('deprecation notice'); log.error('unexpected failure', err); // Sub-loggers for Puppeteer and browser output log.puppeteer.debug('evaluate: getting page title'); log.browser.error('uncaught exception');ts// Create a custom sub-logger for your skill // ----------------------------------------- import {log, logger} from '@matterway/sdk'; const log = logger.create('my-skill'); log.info('fetchEmails: done'); // [my-skill] fetchEmails: done // Configure filtering at runtime logger.setConfig({level: 'warn'}); logger.setConfig({mute: ['retry', 'waitForSelector']}); logger.setConfig({enabledSources: ['my-skill']});logger: add
captureBrowserLogs(ctx)to route browser console messages and uncaught errors throughlog.browser.*tsimport {captureBrowserLogs} from '@matterway/sdk'; export async function start(ctx: Context) { captureBrowserLogs(ctx); // browser console.log / errors now flow through log.browser.* }logger: patch
debugpackage to routepuppeteer:*protocol logs throughlog.puppeteermdx: add
errorcallout type with destructive-colored icon alongside existinginfoandwarningtypesui: add
requiredprop toLabelcomponent that renders a styled destructive-colored asterisk
Bug Fixes
ui: move badge hover effects from base
Badgevariants to interactiveBadgeFieldonly, preventing hover styles on non-interactive badgesui: fix
destructive-foregroundtheme token fromred.50tored.800for proper error text contrastui: use
destructive-foregroundtoken for validation messages and error text across all form fields and viewersui: render required-field asterisk via
Labelrequiredprop with proper destructive styling instead of plain-text concatenationui: move validation messages directly below label in
RadioListFieldandCheckboxListFieldfor consistent layoutui: sync
InputandTextareabase components with design system — compacth-9height, consistenttext-smfont size,shadow-smui: increase
Labelfont weight from medium to semiboldui: reduce default icon size in
CompletionandFailurefrom 80px to 64px and center-alignCompletionlayoutui: use
text-foregroundforInputFieldprefix and suffix in default state instead oftext-muted-foregroundui: improve
Successconfetti height calculation usinggetBoundingClientRectand remove redundantRootwrapper
Chores
- logging: replace all
console.log/debug/warn/errorcalls with structuredlog.*calls across the SDK - scripts: increase
update-changelog.shClaude max-turns from 1 to 5 - ci: add
statuses: writepermission to Checkmarx SAST workflow - storybook: rewrite
Success,Failure,Feedback, andFileUploadbubble stories using composed mw primitives - storybook: remove
FileBoxstories, simplifyHeaderBarandCompletionstories - storybook: migrate story imports from
@storybook/reactto@storybook/react-vite - ui: mark
FileBoxcomponent as@internal
3.0.42 (2026-03-18)
Features
- icons: add
IconSearchicon component and register it in the icon map
Bug Fixes
- CheckboxField: fix checkbox and label vertical alignment by aligning items to start and tightening label line-height
- CommandInput: replace info circle icon with search icon for the command input search field
- DateField: replace CSS variable
--input-radiuswith fixedrounded-mdfor consistent border radius - HighLight: replace inner accent bar div with a
border-l-4on the container for simpler, full-height styling
3.0.41 (2026-03-18)
Features
- figma: add MDS design-token pipeline that resolves Figma token JSON into CSS custom propertiesbash
pnpm build:tokens # default: matterway brand pnpm build:tokens --brand cognizant - figma: add multi-brand token support (matterway, cognizant) with layered token sets (tailwind → brand → theme → mode)
- figma: inject resolved token CSS into the build automatically via
generate-css.js
Bug Fixes
- form:
getValuenow always returnsstring(nevernull); empty input values are correctly returned as""instead of falling through totextContent - form:
getValueinput detection now usesinstanceofchecks (HTMLInputElement,HTMLTextAreaElement,HTMLSelectElement) instead of duck-typing with'value' in el, preventing false positives on non-input elements - form:
getValuenow disposes element handles after use to prevent memory leaks - form:
getValueerror messages now distinguish between CSS selector and XPath lookup failures
Breaking Changes
- tokens: removed hardcoded
themes/dark.cssandthemes/light.css; theme variables are now generated fromsrc/assistant-ui/tokens/JSON files - tokens: removed
--radius,--input-radius, and--input-radius-innerCSS custom properties; components now use standard Tailwind radius classes (rounded-xl,rounded-md,rounded,rounded-sm) - tokens: removed
--container-shadow,--container-border-color,--slate-50,--slate-200,--badge-orange,--badge-yellow,--pdf-error,--info-callout,--info-callout-backgroundCSS custom properties; replaced by semantic token equivalents or Tailwind utilities - badge: border-radius changed from
rounded-fulltorounded-md - build:
build:sdkno longer copiesthemes/directory tolib/ - form:
getValuereturn type narrowed fromPromise<string | null>toPromise<string>
Chores
- icons: replace
IconLoaderwithIconLoader2in Spinner and icon map - components: replace all
rounded-[var(--input-radius)]/hsl(var(--...))patterns with standard Tailwind classes and semantic token names across 20+ components - deps: add
flatted(>=3.4.0) andyauzl(>=3.2.1) version overrides - tooling:
formatscript now runs Prettier on the entire project instead of onlysrc/
3.0.37 (2026-03-16)
Features
- DateField: single date mode now supports inline text entry (
dd.MM.yyyy) with a calendar popover, replacing the previous picker-only UI - DateField: range and multiple modes now use the same calendar-icon + popover pattern, replacing the previous
DatePickerUI - DateField: add
placeholderprop for all date input types - DateField: popover closes automatically after selecting a date in single mode
- popover: export
PopoverAnchorcomponent - Export
Timezone,TimezoneAbbreviation, andIanaTimezonetypes - tokens: add MDS design token system with multi-brand support (matterway, cognizant)
- tokens: add
build:tokensscript to resolve token JSON files into CSS custom propertiesbashpnpm build:tokens # default: matterway brand pnpm build:tokens --brand cognizant - tokens: integrate token resolution into CSS build pipeline via
generate-css.js - figma: sync design tokens from Figma, aligning component styles with MDS token definitions
Bug Fixes
- calendar: fix outside-day cells retaining accent background when not selected
- DateField: improve focus management so the calendar popover stays open when clicking between the input and calendar
Breaking Changes
- themes: remove hardcoded
themes/dark.cssandthemes/light.cssin favor of token-resolved CSS- Theme CSS variables are now resolved at build time from
src/assistant-ui/tokens/JSON files and inlined into the CSS bundle bygenerate-css.js - The
themes/directory is no longer shipped - No migration needed for SDK consumers — the generated CSS output is equivalent
- Theme CSS variables are now resolved at build time from
- styles: remove
--radius,--input-radius, and--input-radius-innerCSS custom properties; components now use Tailwind border-radius utilities directly - tailwind: redefine
borderRadiustheme scale with fixed pixel values (sm: 2px,DEFAULT: 4px,md: 6px,lg: 8px,xl: 12px,full: 9999px) replacing CSS variable-based values- Migration: replace
rounded-[var(--input-radius)]→rounded-md,rounded-[var(--input-radius-inner)]→rounded,rounded-[var(--radius)]→rounded-xl
- Migration: replace
- tokens: remove SDK extension tokens
info-callout,info-callout-background,badge-orange,badge-yellow,pdf-error,slate-50,slate-200,container-border-color,container-shadow- Components now use semantic Tailwind classes (
text-info,text-destructive,bg-info-background,border-border,shadow-2xl) instead ofhsl(var(...))references
- Components now use semantic Tailwind classes (
- badge: change default badge shape from pill (
rounded-full) to rounded rectangle (rounded-md) - icons: replace
IconLoaderwithIconLoader2in icon map and Spinner component
Chores
- ci: pin GitHub Actions to full commit SHAs for reproducibility (
pnpm/action-setup,browser-actions/setup-chrome,actions/create-github-app-token)
3.0.36 (2026-03-13)
Bug Fixes
- docs: fix Storybook navigation link to open within the docs site
Chores
- lint: enable
@typescript-eslint/no-floating-promisesrule and fix existing violations
3.0.34 (2026-03-11)
Bug Fixes
- ci: use
GH_PACKAGES_TOKENsecret and shared registry-setup action for GitHub Packages publish
Chores
- lint: remove
no-inline-commentsrule override and move all inline comments above their respective code lines - lint: convert inline property comments to TSDoc (
/** */) on public interfaces (SharepointOptions,PDFviewerProps,EmojiProps,FADE_DURATION,CHUNK_SIZE) - lint: remove
default-caseandno-fallthroughrule overrides and replaceswitchstatements withif/else ifchains - deps: bump
taroverride from^7.5.10to^7.5.11
3.0.32 (2026-03-10)
Features
- getTimestamp: add timezone support via
timezoneanduseLocalTimezoneoptionstsgetTimestamp({timezone: 'IST'}); // uses Asia/Kolkata getTimestamp({timezone: 'Asia/Tokyo'}); getTimestamp({useLocalTimezone: true});
Chores
- lint: enable
prefer-construle and fix violations across codebase - lint: enable
@typescript-eslint/no-unused-varsrule and remove unused imports/variables - pages: remove dead code branch in
connectToMinimizedWindow - changelog: pass current Unreleased section to changelog bot for incremental updates
- changelog: add migration example guidance for deprecations and breaking changes
3.0.31 (2026-03-10)
Bug Fixes
- ui: fix selectField autocomplete input visibility when popover opens above trigger (#2244)
Chores
- deps: add dompurify security patch override (>=3.3.2)
- deps: remove trailing newline from .npmrc
- lint: enable sort-imports rule and sort all imports across the codebase (#2242)
- lint: update index generator script to produce sorted import output (#2242)
3.0.29 (2026-03-06)
Bug Fixes
- lint: revert lint changes, keep linter updates
Chores
- eslint: add temporary rule overrides for incremental cleanup
- deps: update pnpm-lock.yaml with latest dependency versions
3.0.28 (2026-03-06)
Bug Fixes
- changelog: whitespace-aware stripping of Unreleased heading
Chores
- ci: guard version bump and push steps behind actual commit detection to prevent no-op pushes
- ci: use
--no-pushin lerna version and defer push to a single conditional step
3.0.26 (2026-03-05)
Bug Fixes
- security: replace Node.js
cryptowith Web Crypto API, removingellipticdependency - security: remove
crypto-browserifyandvite-plugin-node-polyfillsfrom build - ai: remove unused
fixBedrock.tscrypto shim
Chores
- changelog: add error handling fallback in changelog script
3.0.25 (2026-03-05)
Features
- changelog: add AI-generated changelog via Claude CLI pre-commit hook
Bug Fixes
- security: dependency security patches
Chores
- npmrc: remove redundant
@matterway:registryline
3.0.16 (2026-02-27)
Features
- ui: create
multiSelectFieldcomponent
Bug Fixes
- success: click on thumbs up first, no navbar flash
- upload:
showUI.fileUploadcancel should returnnull - upload:
showUI.fileUploadmax file limit default
Chores
- deps: update husky to v9
3.0.12 (2026-02-26)
Bug Fixes
- deps: eslint compatibility
3.0.11 (2026-02-26)
Bug Fixes
- deps: security patches
3.0.10 (2026-02-25)
Features
- skill-scripts: add skill-scripts CLI to SDK
- ci: add BlackDuck license scan
- docs: add Storybook reference to docs site
- docs: add SDK AI context (AGENTS.md, CLAUDE.md)
Bug Fixes
- showUI: fix
fileUploadreuse - scripts: make scripts run on both Windows and Mac
- deps: update dependencies and security patches
- deps: clean up resolutions and commitlint resolutions
- ci: BlackDuck scan blocks release
Chores
- docs: add TSDoc comments for exports
- tests: add tests and improve test runner
- commitlint: use shared
@matterway/commitlint-config
3.0.2 (2026-02-18)
Bug Fixes
- showUI: fix
fileUpload
Chores
- deps: security updates
- ci: update
actions/checkoutandactions/setup-nodeto v6
3.0.0 (2026-02-13)
Major version bump caused by a CI versioning fix. Includes all changes shipped during the 2.x series:
Features
- ui: add hidden field validation
- ui: use Matterway app icon as default headerbar icon
- ui: add select-all to checkboxListField and improve dynamic items props
- showUI: fix and improve
showUI.fileUploadreuse
Bug Fixes
- showUI: fix validation race condition
- showUI: fix file upload return value
- showUI: fix success statusList display
- ui: fix modal custom dimension default position
- ui: make error text selectable
- ui: fix segmentedField XL item label overlap
- form: add form validation to showForm
- build: reduce skill bundle size (restructured internal module exports)
- ci: fix production release versioning
⚠ BREAKING CHANGES
Note: these breaking changes shipped as patches during the 2.x series due to CI not detecting BREAKING CHANGE footers. The 3.0.0 bump corrected the version.
- showUI:
showUI.progressListno longer returns a value (changed fromPromise<result>tovoid) - showUI: removed
buttonsprop fromshowUI.progressList
2.0.16 (2026-02-13)
Version bump only.
2.0.15 (2026-02-13)
Bug Fixes
- build: reduce skill bundle size (restructured internal module exports)
- ci: fix production release versioning
⚠ BREAKING CHANGES
Note: these should have triggered a major version bump but didn't due to CI issues. The 3.0.0 bump corrected this.
- showUI:
showUI.progressListno longer returns a value (changed fromPromise<result>tovoid) - showUI: removed
buttonsprop fromshowUI.progressList
2.0.13 (2026-02-11)
Features
- ui: add hidden field validation
2.0.12 (2026-02-09)
Bug Fixes
- showUI: fix validation race condition
2.0.11 (2026-02-06)
Bug Fixes
- ui: fix modal custom dimension default position
2.0.10 (2026-02-05)
Features
- ui: use Matterway app icon as default headerbar icon
2.0.9 (2026-02-04)
Bug Fixes
- ui: make error text selectable
2.0.8 (2026-01-29)
Bug Fixes
- showUI: fix file upload return value
2.0.7 (2026-01-29)
Bug Fixes
- form: add form validation to showForm
2.0.6 (2026-01-28)
Bug Fixes
- ui: fix segmentedField XL item label overlap
2.0.5 (2026-01-28)
Bug Fixes
- showUI: fix success statusList display
2.0.4 (2026-01-27)
Features
- ui: add select-all to checkboxListField and improve dynamic items props
2.0.3 (2026-01-26)
Bug Fixes
- ci: suppress npm log output
2.0.2 (2026-01-23)
Version bump only.
2.0.1 (2026-01-23)
Version bump only. Major version bump caused by CI versioning issue (no actual breaking API changes from 1.78.7).
1.78.7 (2026-01-23)
Features
- showUI: add touched-state validation
- ui: consolidate UIv2 components into main UI package (major internal restructure)
⚠ BREAKING CHANGES
Note: these breaking changes should have triggered a major version bump but didn't due to CI issues. The 2.0.0 bump happened later as a CI fix.
- showUI:
invalidprop now returns validation messages (removesvalidationMessageprop) - showUI: dynamic props are now async:
({value, data}) => value - showUI: return value changed from
{state}to{data, button}
1.48.2 (2025-09-04)
Bug Fixes
- ui: fix types and standardise imports
1.48.1 (2025-09-04)
Features
- showUI: add
percentFieldcomponent for percentage inputs
1.48.0 (2025-09-03)
Features
- showUI: add badgeField
1.47.0 (2025-09-03)
Features
- showUI: add phoneField
1.46.0 (2025-09-03)
Features
- ui: checkbox label interaction
1.45.11 (2025-09-03)
Features
- showUI: add
emailFieldcomponent for email inputs
1.45.10 (2025-09-03)
Bug Fixes
- author: valid email value
1.45.9 (2025-09-03)
Version bump only.
1.45.8 (2025-09-03)
Version bump only.
1.45.7 (2025-09-03)
Version bump only.
1.45.6 (2025-09-03)
Bug Fixes
- ui: tighten input
1.45.5 (2025-09-03)
Bug Fixes
- readme: add readmeFilename
1.45.4 (2025-09-03)
Version bump only.
1.45.3 (2025-09-03)
Version bump only.
1.45.2 (2025-09-03)
Version bump only.
1.45.1 (2025-09-03)
Version bump only.
1.45.0 (2025-09-02)
Features
- showUI: add dateField
1.44.0 (2025-09-02)
Features
- showUI: add currencyField
1.43.4 (2025-09-02)
Bug Fixes
- ui: fix storybook
1.43.3 (2025-09-02)
Bug Fixes
- ui: date field consistency
1.43.2 (2025-09-02)
Bug Fixes
- showUI: items are async calc
1.43.1 (2025-09-02)
Bug Fixes
- fileUpload: fix file upload chunks
1.43.0 (2025-09-01)
Features
- ui: move content scripts
1.42.4 (2025-09-01)
Bug Fixes
- handsontable: update license
1.42.3 (2025-08-29)
Bug Fixes
- ui: progress items consistency
1.42.2 (2025-08-29)
Bug Fixes
- ui: radioListField items consistency
1.42.1 (2025-08-29)
Bug Fixes
- ui: use statusList for consistency
1.42.0 (2025-08-28)
Features
- showUI: upgrade message
1.41.0 (2025-08-28)
Features
- showUI: add completion to showUI
1.40.0 (2025-08-28)
Features
- ui: add completion component
1.39.0 (2025-08-28)
Features
- ui: add convenience callout component
1.38.0 (2025-08-28)
Features
- ui: add text highlight
1.37.0 (2025-08-27)
Features
- showUI: add image viewer
1.36.0 (2025-08-27)
Features
- showUI: add keyValue
1.35.0 (2025-08-27)
Features
- showUI: add icon
1.34.3 (2025-08-27)
Bug Fixes
- assistant-ui: legacy types, closes
1.34.2 (2025-08-26)
Bug Fixes
- assistant-ui: legacy types
1.34.1 (2025-08-25)
Bug Fixes
- assistant-ui: fix imports
1.34.0 (2025-08-22)
Features
- ui: add link and download file component
1.33.0 (2025-08-21)
Features
- ui: add field comparison
1.32.3 (2025-08-21)
Version bump only.
1.32.1 (2025-08-20)
Bug Fixes
- build: build SDK before packing in release workflow
1.32.0 (2025-08-20)
Features
- release: add alpha channel
1.31.4 (2025-08-20)
Version bump only.
1.31.3 (2025-08-19)
Bug Fixes
- content: createSkillMountRoot
1.31.2 (2025-08-19)
Version bump only.
1.31.1 (2025-08-19)
Bug Fixes
- security: fix tmp package issue
1.31.0 (2025-08-19)
Features
- ui: add showFileUpload to showUI
1.30.0 (2025-08-18)
Features
- ui: add showUISuccess, closes
1.29.0 (2025-08-18)
Features
- ui: add showFailureNotice to showUI
1.28.0 (2025-08-14)
Features
- ui: showUI.requestUserAction
1.27.0 (2025-08-14)
Features
- ui: add showProgress to showUI
1.26.0 (2025-08-14)
Features
- ui: add new radioList to showUI
1.25.0 (2025-08-14)
Features
- ui: add fileUpload to showUI
1.24.0 (2025-08-14)
Features
- ui: add showProgressList to showUI
1.23.0 (2025-08-13)
Features
- ui: add progressList to showUI
1.22.0 (2025-08-13)
Features
- ui: add checkboxList to showUI, closes
1.21.0 (2025-08-12)
Features
- ui: add segmentedField to showUI
1.20.0 (2025-08-12)
Features
- ui: add select to showUI
1.19.0 (2025-08-12)
Features
- ui: add statusList to showUI
1.18.0 (2025-08-11)
Features
- ui: add modal to showUI, closes
1.17.0 (2025-08-11)
Features
- ui: add vertical to showUI, closes
1.16.0 (2025-08-08)
Features
- assistant-ui: success bubble feedback state, closes
1.15.2 (2025-08-08)
Bug Fixes
- assistant-ui: storybook view
1.15.1 (2025-08-08)
Bug Fixes
- build: fix build
1.15.0 (2025-08-06)
Features
- hotReload: add ts docs for hot reload fns
1.14.3 (2025-08-01)
Bug Fixes
- assistant-ui: adjust upload bubble
1.14.2 (2025-07-31)
Bug Fixes
- assistant-ui: several fixes
1.14.1 (2025-07-31)
Bug Fixes
- showUI: require should affect navigation bar
1.14.0 (2025-07-30)
Features
- assistant-ui: add new key/value component
1.13.2 (2025-07-29)
Version bump only.
1.13.1 (2025-07-29)
Version bump only.
1.13.0 (2025-07-29)
Features
- assistant-ui: add ocr confidence score to input
1.12.0 (2025-07-28)
Features
- assistant-ui: toggle field
1.11.2 (2025-07-28)
Version bump only.
1.11.1 (2025-07-25)
Version bump only.
1.11.0 (2025-07-25)
Features
- assistant-ui: add doc viewer tabs
1.10.0 (2025-07-25)
Features
- assistant-ui: handsontable SheetViewer
1.9.0 (2025-07-25)
Features
- assistant-ui: tiff
1.8.1 (2025-07-24)
Version bump only.
1.8.0 (2025-07-24)
Features
- form: add root to getValue
1.7.1 (2025-07-24)
Bug Fixes
- assistant-ui: consistent naming
1.7.0 (2025-07-24)
Features
- assistant-ui: add new segmented field
1.6.0 (2025-07-24)
Features
- assistant-ui: group highlight
1.5.1 (2025-07-24)
Chores
- build: restructure SDK exports and convert file/form index files from
.tsxto.ts
1.5.0 (2025-07-23)
Features
- assistant-ui: add new image preview
1.4.28 (2025-07-22)
Bug Fixes
- ui: tailwind and dynamic colors
1.4.27 (2025-07-22)
Version bump only.
1.4.26 (2025-07-21)
Version bump only.
1.4.25 (2025-07-18)
Bug Fixes
- hot-reload: update hot reloads, closes
1.4.24 (2025-07-18)
Bug Fixes
- build: ignore generate in nodemon watch
1.4.23 (2025-07-17)
Bug Fixes
- assistant-ui: fix paddings and containers
1.4.22 (2025-07-17)
Bug Fixes
- assistant-ui: fix storybook
1.4.21 (2025-07-16)
Version bump only.
1.4.20 (2025-07-16)
Version bump only.
1.4.19 (2025-07-16)
Bug Fixes
- assistant-ui: fix style provider
1.4.18 (2025-07-15)
Reverts
- Revert "chore(deps): bump react-markdown from 9.1.0 to 10.1.0 (#1517)" (#1535), closes
1.4.17 (2025-07-15)
Bug Fixes
- build: fix paths and add more logs
1.4.16 (2025-07-15)
Version bump only.
1.4.15 (2025-07-15)
Version bump only.
1.4.14 (2025-07-14)
Version bump only.
1.4.13 (2025-07-14)
Version bump only.
1.4.12 (2025-07-11)
Version bump only.
1.4.11 (2025-07-11)
Version bump only.
1.4.10 (2025-07-11)
Version bump only.
1.4.9 (2025-07-11)
Version bump only.
1.4.8 (2025-07-11)
Version bump only.
1.4.7 (2025-07-11)
Features
- assistant-ui: add base UI component library (avatar, badge, button, calendar, card, checkbox, dialog, dropdown, input, label, popover, select, separator, switch, table, tabs, textarea, tooltip)
1.4.6 (2025-07-10)
Version bump only.
1.4.5 (2025-07-10)
Version bump only.
1.4.4 (2025-07-09)
Reverts
- packages: revert new packages migration (compatibility issues)
1.4.3 (2025-07-08)
Chores
- build: improve
createSkillMountRoot, add test mocks for background-react and pdf-parse
1.4.2 (2025-07-08)
Bug Fixes
- ms-graph: fix pagination for long SharePoint lists
1.4.1 (2025-07-08)
Bug Fixes
- ms-graph: fix
getListItemsAPI call
1.4.0 (2025-07-07)
Features
- fillOptions: add additional configuration options to
fillOptions
1.3.12 (2025-07-03)
Bug Fixes
- utils: harden
setutility against edge cases
1.3.11 (2025-07-03)
Bug Fixes
- utils: improve
mergeDeepsecurity hardening
1.3.10 (2025-07-03)
Bug Fixes
- utils: additional
setutility fixes
1.3.9 (2025-07-03)
Bug Fixes
- utils: harden
setutility against prototype pollution
1.3.8 (2025-07-03)
Bug Fixes
- utils: fix prototype pollution vulnerability in utility functions
1.3.7 (2025-07-03)
Bug Fixes
- gh-actions: add missing permissions to GitHub Actions workflows
1.3.6 (2025-07-02)
Bug Fixes
- offerMwFile: fix unsafe shell command construction (security)
1.3.5 (2025-07-02)
Version bump only.
1.3.4 (2025-07-02)
Bug Fixes
- mergeDeep: fix prototype pollution vulnerability in deep merge
1.3.3 (2025-07-02)
Bug Fixes
- utils: add tests and fixes for
setutility
1.3.2 (2025-07-02)
Bug Fixes
- waitForSelector: fix polynomial regex (ReDoS vulnerability)
1.3.1 (2025-06-30)
Version bump only.
1.3.0 (2025-06-24)
Features
- test: add test coverage for SDK modules
1.2.1 (2025-06-17)
Bug Fixes
- test: fix broken tests
1.2.0 (2025-06-17)
Features
- ui: add overlay backdrop to showUI containers
1.1.8 (2025-06-13)
Version bump only.
1.1.7 (2025-06-13)
Version bump only.
1.1.6 (2025-06-12)
Bug Fixes
- types: fix
runJobsTypeScript type definitions
1.1.5 (2025-06-10)
Bug Fixes
- dynamic-ui: fix dynamic field validity not updating when value changes
1.1.4 (2025-06-06)
Version bump only.
1.1.3 (2025-06-06)
Bug Fixes
- wait: fix
waitForTexthelper
1.1.2 (2025-06-03)
Bug Fixes
- highlight: fix
highlightSelectorelement highlighting
1.1.1 (2025-05-26)
Version bump only.
1.1.0 (2025-05-22)
Features
- showUI: add
showSuccessNoticefor success message display
1.0.6 (2025-05-22)
Version bump only.
1.0.5 (2025-05-22)
Bug Fixes
- build: fix skill build for MS Graph API integration
1.0.4 (2025-05-21)
Version bump only.
1.0.3 (2025-05-21)
Version bump only.
1.0.2 (2025-05-21)
Version bump only.
1.0.1 (2025-05-20)
Bug Fixes
- build: fix Lerna build error
0.127.0 (2025-05-20)
Features
- pages: add
GoToOptionssupport to navigation helpers
0.126.11 (2025-05-19)
Version bump only.
0.126.10 (2025-05-19)
Bug Fixes
- release: fix release script path
0.126.9 (2025-05-19)
Bug Fixes
- release: add debug logging to release script
0.126.8 (2025-05-18)
Version bump only.
0.126.7 (2025-05-16)
Bug Fixes
- release: fix release script path
0.126.6 (2025-05-16)
Version bump only.
0.126.5 (2025-05-16)
Bug Fixes
- release: fix copy path in release script
0.126.4 (2025-05-15)
Version bump only.
0.126.3 (2025-05-15)
Bug Fixes
- select: fix dropdown positioning
0.126.2 (2025-05-15)
Bug Fixes
- export: export missing
fileFromUrlfunction
0.126.1 (2025-05-14)
Bug Fixes
- form: fix
setTextto accept component values
0.126.0 (2025-05-14)
Features
- form: add support for dynamic field values
0.125.0 (2025-05-13)
Features
- getFrame: add nested iframe selector support
0.124.5 (2025-05-09)
Bug Fixes
- ci: fix Prettier configuration
0.124.4 (2025-05-05)
Bug Fixes
- sheet: refactor Handsontable license key to use constants, remove dotenv import
0.124.3 (2025-05-05)
Bug Fixes
- sheet: pass Handsontable license key through to Sheet component
0.124.2 (2025-05-02)
Version bump only.
0.124.1 (2025-05-02)
Bug Fixes
- deps: update unzipper
0.124.0 (2025-05-02)
Features
- dynamicUI: add file preview with Handsontable
0.123.6 (2025-04-30)
Version bump only.
0.123.5 (2025-04-30)
Version bump only.
0.123.4 (2025-04-30)
Bug Fixes
- colorRow: fix coloring empty cells
0.123.3 (2025-04-30)
Version bump only.
0.123.2 (2025-04-30)
Chores
- file: rename SdkFile to MwFile across codebase
0.123.1 (2025-04-30)
Bug Fixes
- progress: fix progress injects again after navigation
0.123.0 (2025-04-29)
Features
- highlight: use assistant or default color, make options optional
0.122.1 (2025-04-28)
Bug Fixes
- pdfExtractRanges: fix out of range pages
0.122.0 (2025-04-28)
Features
- dynamic-ui: add required fields validity support
0.121.3 (2025-04-28)
Version bump only.
0.121.2 (2025-04-28)
Bug Fixes
- file: update file reader
0.121.1 (2025-04-25)
Bug Fixes
- ui: fix persisting state
0.121.0 (2025-04-24)
Features
- dynamic-ui: update uploadFile to support MwFile
0.120.2 (2025-04-24)
Bug Fixes
- file: relax overly strict file path sanitization
0.120.1 (2025-04-23)
Bug Fixes
- highlights: fix removeAllHighlights breaking when highlight is missing
0.120.0 (2025-04-23)
Features
- file: add text content extraction from docx and pdf
0.119.3 (2025-04-22)
Bug Fixes
- excel: expose cell get/set helpers
0.119.2 (2025-04-22)
Features
- excel: export getWorksheet and 14 new excel utility functions
0.119.1 (2025-04-22)
Bug Fixes
- build: apply security patches
0.119.0 (2025-04-22)
Features
- dynamic-ui: add toggle field
0.118.0 (2025-04-22)
Features
- dynamic-ui: add progress item component
0.117.1 (2025-04-16)
Bug Fixes
- ui: add gap to vertical and horizontal layouts
0.117.0 (2025-04-16)
Features
- dynamic-ui: add documentation for new containers
0.116.2 (2025-04-16)
Features
- UI: add splitView block component
0.116.1 (2025-04-16)
Features
- UI: add state management and resolve logic to NavigationBar
0.116.0 (2025-04-15)
Features
- upload-file: add file upload to dynamic UI
0.115.0 (2025-04-15)
Features
- ui: add more dynamic UI containers
0.114.0 (2025-04-15)
Features
- dynamic-ui: add documentation to dynamic components
0.113.0 (2025-04-10)
Features
- statuses: move statuses to assistant design system and add to dynamic UI
Breaking Changes
- statuses: statuses component path changed — now imported from the assistant design system
0.112.0 (2025-04-08)
Features
- outlook: add more Outlook helper functions
0.111.16 (2025-04-08)
Version bump only.
0.111.15 (2025-04-08)
Bug Fixes
- themes: fix themes bug in showTabProgress
0.111.14 (2025-03-31)
Version bump only.
0.111.13 (2025-03-28)
Bug Fixes
- excel: add hide sheet by name, index, or regex
0.111.12 (2025-03-27)
Bug Fixes
- excel: implement workbookToSdkFile
0.111.11 (2025-03-27)
Bug Fixes
- Content: fix Content flex issue
0.111.10 (2025-03-24)
Bug Fixes
- SelectBase: fix default value not being selected in showForm select
0.111.9 (2025-03-24)
Bug Fixes
- file: expose fileFromDrive
0.111.8 (2025-03-24)
Version bump only.
0.111.7 (2025-03-24)
Bug Fixes
- xpath: handle negative xpath case
0.111.6 (2025-03-18)
Bug Fixes
- showFileUpload: fix skill not resolving when validate is not provided
0.111.5 (2025-03-18)
Version bump only.
0.111.4 (2025-03-17)
Bug Fixes
- bubble: remove extra space in bubble header and style scroll
0.111.3 (2025-03-14)
Bug Fixes
- fileDownload: fix zip files being downloaded corrupt
0.111.2 (2025-03-13)
Bug Fixes
- theme: fix themes for older assistant versions
0.111.1 (2025-03-13)
Bug Fixes
- colorRow: fix coloring every row in every sheet
0.111.0 (2025-03-13)
Features
- UI: dynamic UI proof of concept
0.110.9 (2025-03-13)
Bug Fixes
- openFile: handle case when file does not exist
0.110.8 (2025-03-13)
Chores
- ai: migrate SdkFile to MwFile in askFile and ocr modules
0.110.7 (2025-03-12)
Features
- form: add dynamic form documentation and examples
0.110.6 (2025-03-12)
Bug Fixes
- getFrame: fix getFrame theme
0.110.5 (2025-03-12)
Bug Fixes
- theme: remove scroll bar
0.110.4 (2025-03-11)
Version bump only.
0.110.3 (2025-03-11)
Bug Fixes
- page: fix reload
0.110.2 (2025-03-06)
Version bump only.
0.110.1 (2025-03-06)
Bug Fixes
- suggestionText: fix suggestion text
0.110.0 (2025-03-05)
Features
- package: add pdfjs dependency
0.109.4 (2025-03-05)
Bug Fixes
- segmented: fix SegmentedField text color styling
0.109.3 (2025-03-05)
Bug Fixes
- segmented: fix segmented checked state background color
0.109.2 (2025-03-05)
Version bump only.
0.109.1 (2025-03-05)
Features
- file: add allowedTypes validation to upload components
0.109.0 (2025-03-05)
Features
- pdf: implement mergePdfs and downloadPdf
0.108.1 (2025-03-05)
Bug Fixes
- file: export showUploadFile
0.108.0 (2025-03-04)
Features
- highlight: add show highlight feature
0.107.0 (2025-03-04)
Features
- page: add navigate helper
0.106.1 (2025-03-04)
Version bump only.
0.106.0 (2025-03-04)
Features
- build: minify SDK size — part 2 (content)
0.105.3 (2025-03-03)
Version bump only.
0.105.2 (2025-03-03)
Bug Fixes
- showSuccessNotice: fix event name sent by ctx.telemetry.sendEvent
0.105.1 (2025-03-03)
Bug Fixes
- showForm: fix date input not taking correct width
0.105.0 (2025-03-03)
Features
- theme: implement organization theme
0.104.0 (2025-03-03)
Features
- build: minify SDK size — part 1 (background)
0.103.4 (2025-03-03)
Version bump only.
0.103.3 (2025-02-28)
Bug Fixes
- ai: update AI secrets
0.103.2 (2025-02-28)
Version bump only.
0.103.1 (2025-02-28)
Bug Fixes
- select: fix multiple select
0.103.0 (2025-02-28)
Features
- AI: add askFile function
0.102.1 (2025-02-27)
Version bump only.
0.102.0 (2025-02-26)
Features
- ai: add basic OCR helper
0.101.0 (2025-02-26)
Features
- ai: add standard AI helpers
0.100.0 (2025-02-26)
Features
- file: add PDF pages extraction helpers
0.99.0 (2025-02-25)
Features
- file: add file and folder manipulation helpers
0.98.2 (2025-02-24)
Bug Fixes
- context: make assistant required in Context interface, update mock context
0.98.1 (2025-02-24)
Version bump only.
0.98.0 (2025-02-24)
Features
- file: add zip support
0.97.8 (2025-02-21)
Version bump only.
0.97.7 (2025-02-21)
Bug Fixes
- success: update colors in light mode
0.97.6 (2025-02-20)
Version bump only.
0.97.5 (2025-02-20)
Chores
- success: extend success notice props
0.97.4 (2025-02-20)
Bug Fixes
- notice: remove unused import in Thumbs component
0.97.3 (2025-02-20)
Version bump only.
0.97.2 (2025-02-20)
Features
- notice: redesign success bubble with feedback UI
0.97.1 (2025-02-19)
Version bump only.
0.97.0 (2025-02-17)
Features
- sanitizeFilePath: handle spaces in path and add tests
0.96.7 (2025-02-17)
Bug Fixes
- markdown: install and use remark-breaks
0.96.6 (2025-02-17)
Version bump only.
0.96.5 (2025-02-17)
Bug Fixes
- select: fix select returning default value even if default was cleared
0.96.4 (2025-02-17)
Features
- checkbox: add checkAll position support (top/bottom)
0.96.3 (2025-02-11)
Version bump only.
0.96.2 (2025-02-10)
Chores
- checkbox: add checkAll position type to form fields
0.96.1 (2025-01-31)
Version bump only.
0.96.0 (2025-01-31)
Features
- sharepoint: add user authentication for SharePoint
0.95.5 (2025-01-30)
Bug Fixes
- utils: fix $xEval to use element.evaluate instead of page.evaluate
0.95.4 (2025-01-30)
Bug Fixes
- select: fix position of select dropdown
0.95.3 (2025-01-28)
Bug Fixes
- license: fix license checker
0.95.2 (2025-01-23)
Bug Fixes
- storybook: remove unused story
0.95.1 (2025-01-22)
Version bump only.
0.95.0 (2025-01-20)
Features
- sharepoint: add getFileByPath function
0.94.5 (2025-01-15)
Version bump only.
0.94.4 (2025-01-15)
Features
- pages: add createMinimizedWindow extension API support
0.94.3 (2025-01-10)
Bug Fixes
- README: clean up test pack instructions
0.94.2 (2025-01-10)
Bug Fixes
- runJobs: fix background window concurrency
0.94.1 (2025-01-10)
Bug Fixes
- markdown: clean up callouts
0.94.0 (2025-01-10)
Features
- sharepoint: add SharePoint Graph API integration
0.93.3 (2025-01-10)
Chores
- tests: relocate test files to colocated paths
0.93.2 (2024-12-16)
Version bump only.
0.93.1 (2024-12-16)
Version bump only.
0.93.0 (2024-12-16)
Features
- utils: add getFormattedDate helper
0.92.6 (2024-12-16)
Bug Fixes
- form: fix masked input validation
0.92.5 (2024-12-16)
Version bump only.
0.92.4 (2024-12-12)
Version bump only.
0.92.3 (2024-12-12)
Bug Fixes
- checkbox: re-export checkboxField
0.92.2 (2024-12-11)
Bug Fixes
- fields: consider the
invalidprop in fields
0.92.1 (2024-12-11)
Bug Fixes
- select: fix select placeholder
0.92.0 (2024-12-11)
Features
- file: update file validation flow
0.91.4 (2024-12-10)
Version bump only.
0.91.3 (2024-12-10)
Version bump only.
0.91.2 (2024-12-10)
Version bump only.
0.91.1 (2024-12-10)
Version bump only.
0.91.0 (2024-12-09)
Features
- watchers: move watcher tests to separate files
0.90.1 (2024-12-09)
Version bump only.
0.90.0 (2024-12-06)
Features
- showForm: resolve showForm on Enter key press
0.89.0 (2024-12-04)
Features
- file: pre-validate file size
0.88.0 (2024-12-03)
Features
- uniqueId: use crypto instead of incremented ID
0.87.5 (2024-12-02)
Version bump only.
0.87.4 (2024-11-28)
Bug Fixes
- build: fix build issue with test imports
0.87.3 (2024-11-28)
Features
- form: add style prop to showForm
- modules: remove base64 module
0.87.2 (2024-11-28)
Version bump only.
0.87.1 (2024-11-27)
Chores
- progress: reorganize progress folder and add tests
0.87.0 (2024-11-26)
Features
- release: send Slack message when SDK build fails
0.86.0 (2024-11-26)
Chores
- tests: extract each helper and test into separate files
0.85.0 (2024-11-25)
Features
- select: add option select width
0.84.0 (2024-11-21)
Features
- race: add raceSelectors and racePromises helper functions
0.83.3 (2024-11-20)
Version bump only.
0.83.2 (2024-11-20)
Version bump only.
0.83.1 (2024-11-20)
Bug Fixes
- waiters: fix waitForSelector with hidden elements
0.83.0 (2024-11-19)
Features
- showForm: update showForm documentation
0.82.10 (2024-11-19)
Bug Fixes
- build: fix puppeteer error
0.82.9 (2024-11-19)
Version bump only.
0.82.8 (2024-11-19)
Bug Fixes
- test: fix test logs
0.82.7 (2024-11-19)
Bug Fixes
- waiters: fix waitForSelector
0.82.6 (2024-11-13)
Bug Fixes
- file: fix file upload text
0.82.5 (2024-11-05)
Bug Fixes
- fill: fix fill not working with xpath
0.82.4 (2024-10-30)
Bug Fixes
- form: add checked prop to radio list items
0.82.3 (2024-10-30)
Bug Fixes
- file: fix uploading corrupted files
0.82.2 (2024-10-16)
Bug Fixes
- uploadFile: remove extra overlay in showUploadFile
0.82.1 (2024-10-16)
Version bump only.
0.82.0 (2024-10-14)
Features
- list-item: add
extraprop to some showForm types
0.81.5 (2024-10-14)
Bug Fixes
- build: fix build tests
0.81.4 (2024-10-10)
Bug Fixes
- form: sonarcloud form
0.81.3 (2024-10-10)
Bug Fixes
- tabProgress: fix removing overlay
0.81.2 (2024-10-09)
Version bump only.
0.81.1 (2024-10-09)
Bug Fixes
- file: fix file upload
0.81.0 (2024-10-09)
Features
- bubble: specify position of the bubble
0.80.2 (2024-10-09)
Bug Fixes
- form: rollback form sonarcloud
0.80.1 (2024-10-09)
Bug Fixes
- formItem: fix formItem error
0.80.0 (2024-10-09)
Features
- progressList: add warning status to progresslist
0.79.1 (2024-10-07)
Bug Fixes
- maintainability: sonarcloud
0.79.0 (2024-10-07)
Features
- markdown: add support for tables in markdown
0.78.1 (2024-10-04)
Bug Fixes
- maintainability: sonarcloud
0.78.0 (2024-10-02)
Features
- sharepoint: add move, delete and copy function to sharpoint helper
0.77.2 (2024-10-02)
Bug Fixes
- maintainability: sonarcloud
0.77.1 (2024-09-27)
Bug Fixes
- reliability: sonarcloud cleanup medium reliability
0.77.0 (2024-09-27)
Features
- utils: get timestamp
0.76.0 (2024-09-26)
Features
- sharepoint: fix list files URL
0.75.17 (2024-09-26)
Version bump only.
0.75.16 (2024-09-26)
Version bump only.
0.75.15 (2024-09-25)
Bug Fixes
- theme: fix theme documentation
0.75.14 (2024-09-25)
Bug Fixes
- file: divide big files to chunks while uploading
0.75.13 (2024-09-24)
Bug Fixes
- themes: update the initialize theme function
0.75.12 (2024-09-24)
Version bump only.
0.75.11 (2024-09-19)
Version bump only.
0.75.10 (2024-09-19)
Bug Fixes
- deps: remove npm-watch
0.75.9 (2024-09-19)
Bug Fixes
- deps: patch semver
0.75.8 (2024-09-19)
Version bump only.
0.75.7 (2024-09-19)
Bug Fixes
- deps: patch ws
0.75.6 (2024-09-19)
Bug Fixes
- storybook: storybook upgrade
0.75.5 (2024-09-19)
Bug Fixes
- axios: axios update
0.75.4 (2024-09-18)
Bug Fixes
- lodash: remove lodash-es
0.75.3 (2024-09-10)
Bug Fixes
- selectField: fix select value overflow cut
0.75.2 (2024-08-14)
Bug Fixes
- import: fix errors about lodash
0.75.1 (2024-08-08)
Bug Fixes
- showNotice: fix subtitle color in dark theme
0.75.0 (2024-07-30)
Features
- showForm: deprecate initialData in showForm
0.74.0 (2024-07-30)
Features
- toast: update toast component docs
0.73.1 (2024-07-30)
Version bump only.
0.73.0 (2024-07-25)
Features
- showUploadFile: update showUploadFile docs
0.72.7 (2024-07-23)
Bug Fixes
- form: fix input mask
0.72.6 (2024-07-19)
Version bump only.
0.72.5 (2024-07-19)
Bug Fixes
- select: fix select component storybook page
0.72.4 (2024-07-11)
Bug Fixes
- form: fix select styles
0.72.1 (2024-07-10)
Version bump only.
0.72.0 (2024-07-09)
Features
- page: open multiple tabs in the same window in bg ctx
0.71.13 (2024-07-03)
Bug Fixes
- icons: restore play icon
0.71.12 (2024-07-03)
Bug Fixes
- release: fix slack msg
0.71.11 (2024-07-03)
Version bump only.
0.71.10 (2024-07-03)
Bug Fixes
- bubble: fix drag and drop on google pages
0.71.9 (2024-07-03)
Bug Fixes
- release: manual release
0.71.8 (2024-07-03)
Bug Fixes
- pages: await browser targets
0.71.7 (2024-07-01)
Bug Fixes
- form: styled components import
0.71.6 (2024-07-01)
Bug Fixes
- navigation: fix navigation and press conditions
0.71.5 (2024-06-26)
Bug Fixes
- release: slack notification
0.71.4 (2024-06-26)
Bug Fixes
- release: auto-release alpha
0.71.3 (2024-06-25)
Bug Fixes
- test: mock assistant API
0.71.2 (2024-06-25)
Bug Fixes
- themes: update get file path
0.71.1 (2024-06-24)
Bug Fixes
- theme: fix theme events
0.71.0 (2024-06-24)
Features
- callout: left align text in callout
0.70.0 (2024-06-21)
Features
- form: make groups collapsable optionally
0.69.4 (2024-06-13)
Bug Fixes
- designer: update skillcompletition
0.69.3 (2024-06-11)
Version bump only.
0.69.2 (2024-06-11)
Bug Fixes
- select: fix menu width
0.69.1 (2024-06-10)
Bug Fixes
- successNotice: add thumbs feedback comment
0.69.0 (2024-06-10)
Features
- successNotice: add thumbs feedback comment
0.68.4 (2024-06-10)
Bug Fixes
- docs: rm select from docs
0.68.3 (2024-06-10)
Bug Fixes
- release: rm commit msg
0.68.2 (2024-06-10)
Bug Fixes
- release: commit msg
0.68.1 (2024-06-10)
Bug Fixes
- release: test alpha release, closes
0.68.0 (2024-06-07)
Features
- release: add manual trigger and channel support to release workflow
0.67.0 (2024-06-07)
Features
- suggestionBox: add suggestion box to the success bubble
0.66.0 (2024-06-07)
Features
- xpath: refactor core modules to use XPath selectors as primary strategy
0.65.5 (2024-06-06)
Bug Fixes
- form: fix build
0.65.4 (2024-06-06)
Bug Fixes
- form: build fix
0.65.3 (2024-06-06)
Version bump only.
0.65.2 (2024-06-04)
Bug Fixes
- form: fix form validation for regex and custom
0.65.1 (2024-06-03)
Bug Fixes
- input: fix warnings/errors for multiple and defaultValue
0.65.0 (2024-05-31)
Features
- icons: readd some missing icons
0.64.0 (2024-05-31)
Features
- ads: add white overlay option
0.63.0 (2024-05-31)
Features
- icons: remove unused icons
0.62.0 (2024-05-30)
Features
- sdk: rename watcher module to wait, add getText, refactor form and DOM modules
0.61.7 (2024-05-29)
Bug Fixes
- build: update build-branch workflow to be manual
0.61.6 (2024-05-29)
Bug Fixes
- vertical: fix broken buttons space
0.61.4 (2024-05-29)
Bug Fixes
- markdown: fix opening link in a new tab in info and warn
0.61.3 (2024-05-29)
Bug Fixes
- select: update styles of select
0.61.2 (2024-05-28)
Version bump only.
0.61.1 (2024-05-28)
Bug Fixes
- ads: bubble position update
0.61.0 (2024-05-28)
Features
- sdk: add assistant type to Context
0.60.4 (2024-05-28)
Bug Fixes
- release: lerna, version, commit
0.53.1 (2024-04-29)
Version bump only.
0.53.0 (2024-04-29)
Features
- architecture: cut the size of the SDK and migrate to ES6
Bug Fixes
- form: add overlay option to showForm
0.52.2 (2024-04-17)
Bug Fixes
- form: add overlay option to showForm
0.52.1 (2024-04-05)
Bug Fixes
- form: if select is at the bottom of showForm, it will not show all items
0.52.0 (2024-03-25)
Features
- check-licenses: fix file drive
0.51.1 (2024-03-20)
Version bump only.
0.51.0 (2024-03-20)
Features
- check-licenses: add artifact
0.50.7 (2024-03-19)
Version bump only.
0.50.6 (2024-03-19)
Version bump only.
0.50.5 (2024-03-19)
Version bump only.
0.50.4 (2024-03-19)
Bug Fixes
- form: transformation doesn’t work
0.50.3 (2024-03-18)
Bug Fixes
- bubble: fix section's container radius
0.50.2 (2024-03-18)
Bug Fixes
- showForm: fix segmented type issues
0.50.1 (2024-03-14)
Version bump only.
0.50.0 (2024-03-12)
Features
- splitview: add split view component
0.49.3 (2024-03-12)
Version bump only.
0.49.2 (2024-03-12)
Reverts
- Revert "fix(form): #669 fix default values in form (#676)" (#692), closes
0.49.1 (2024-03-11)
Version bump only.
0.49.0 (2024-03-11)
Features
- tiff: tiff viewer
0.48.4 (2024-03-11)
Version bump only.
0.48.3 (2024-03-11)
Version bump only.
0.48.2 (2024-03-11)
Version bump only.
0.48.1 (2024-03-11)
Bug Fixes
- form: fix default values in form
0.48.0 (2024-03-06)
Features
- bubble: remove overflow hidden from Bubble
0.47.14 (2024-03-05)
Chores
- deps: update node-fetch
0.47.13 (2024-03-05)
Chores
- deps: update Prettier and reformat source
0.47.12 (2024-03-05)
Version bump only.
0.47.11 (2024-03-05)
Features
- form: add date range component
0.47.10 (2024-03-05)
Version bump only.
0.47.9 (2024-03-01)
Features
- xpath: rename xpath methods for consistency
0.47.8 (2024-02-20)
Reverts
- Revert "Fix/643 showform console errors (#645)" (#656), closes
0.47.7 (2024-02-20)
Bug Fixes
- form: add option to hide group in form
0.47.6 (2024-02-16)
Version bump only.
0.47.5 (2024-02-12)
Version bump only.
0.47.4 (2024-02-05)
Bug Fixes
- select: fix select not opening on click, add custom items to dropdown
0.47.3 (2024-01-29)
Bug Fixes
- deps: fix vulnerabilities
0.47.2 (2024-01-24)
Version bump only.
0.47.1 (2024-01-05)
Bug Fixes
- select: fix select not changing state
0.47.0 (2024-01-04)
Features
- form: alphabetic/alphanumeric validation
0.46.1 (2024-01-02)
Version bump only.
0.46.0 (2023-12-20)
Features
- analytics: send skill success event
0.45.0 (2023-12-20)
Features
- debug-logs: add [SDK] to console debug
0.44.0 (2023-12-18)
Features
- form: input mask
0.43.5 (2023-12-18)
Bug Fixes
- form: fix validation priority
0.43.4 (2023-12-18)
Bug Fixes
- checkboxlist: implement min/max/range selection validation
0.43.3 (2023-12-18)
Bug Fixes
- form: fix StringFormat export
0.43.2 (2023-12-13)
Bug Fixes
- skill-build: fix skill build
0.43.1 (2023-12-13)
Version bump only.
0.43.0 (2023-12-12)
Features
- form: transform fields on blur
0.42.2 (2023-12-11)
Version bump only.
0.42.1 (2023-12-11)
Version bump only.
0.42.0 (2023-12-11)
Features
- skill: fix webpack build
0.41.2 (2023-12-11)
Version bump only.
0.41.1 (2023-12-11)
Version bump only.
0.41.0 (2023-12-11)
Features
- release: add multi select
0.40.4 (2023-12-11)
Version bump only.
0.40.3 (2023-12-06)
Bug Fixes
- form: fix checked in checknoxList
0.40.2 (2023-12-05)
Bug Fixes
- release: fix undefined attributes
0.40.1 (2023-12-05)
Bug Fixes
- release: fix identifier
0.40.0 (2023-12-05)
Features
- release: add contextual bubble
0.39.2 (2023-12-04)
Bug Fixes
- form: fix validation for min/max | lessThan/moreThan
0.39.1 (2023-11-30)
Bug Fixes
- release: clean up
0.39.0 (2023-11-30)
Features
- release: update highlight to match themes
0.38.0 (2023-11-30)
Features
- theme: add rainbow theme
0.37.1 (2023-11-28)
Bug Fixes
- autosuggest: fix select autosuggest
0.37.0 (2023-11-27)
Features
- input: add color and onClick to prefix/suffix
0.36.5 (2023-11-22)
Bug Fixes
- ads: remove old widgets from ads
0.36.4 (2023-11-21)
Version bump only.
0.36.3 (2023-11-20)
Version bump only.
0.36.2 (2023-11-20)
Version bump only.
0.36.1 (2023-11-20)
Version bump only.
0.36.0 (2023-11-20)
Features
- page: get element from nested shadow root
0.35.3 (2023-11-17)
Version bump only.
0.35.2 (2023-11-10)
Bug Fixes
- sharepoint: throw error when status is not ok
0.35.1 (2023-11-07)
Version bump only.
0.35.0 (2023-11-07)
Features
- yalc: add yalc instructions
0.34.4 (2023-11-03)
Version bump only.
0.34.3 (2023-10-30)
Bug Fixes
- exports: fix skill build
0.34.2 (2023-10-26)
Bug Fixes
- select: useRef for FormSelect
0.34.1 (2023-10-25)
Version bump only.
0.34.0 (2023-10-24)
Features
- form: add support for dynamic components
0.33.38 (2023-10-24)
Bug Fixes
- form: fix nan validation message
0.33.37 (2023-10-23)
Bug Fixes
- form: do not validate hidden or disabled buttons
0.33.36 (2023-10-20)
Bug Fixes
- form: fix showForm text
0.33.35 (2023-10-19)
Bug Fixes
- scripts: downgrade background-react to work with scripts v1
0.33.34 (2023-10-18)
Bug Fixes
- release: revert pr 502
0.33.33 (2023-10-17)
Bug Fixes
- yarnlock: regenerate yarn lock
0.33.32 (2023-10-17)
Version bump only.
0.33.31 (2023-10-17)
Bug Fixes
- release: remove text border
0.33.30 (2023-10-13)
Version bump only.
0.33.29 (2023-10-12)
Version bump only.
0.33.28 (2023-10-12)
Version bump only.
0.33.27 (2023-10-11)
Bug Fixes
- file: open folder fix
0.33.26 (2023-10-05)
Bug Fixes
- form: fix group title and description
0.33.25 (2023-10-04)
Version bump only.
0.33.24 (2023-10-04)
Version bump only.
0.33.23 (2023-10-04)
Version bump only.
0.33.22 (2023-10-04)
Version bump only.
0.33.21 (2023-10-04)
Version bump only.
0.33.20 (2023-10-04)
Version bump only.
0.33.19 (2023-10-04)
Version bump only.
0.33.18 (2023-10-04)
Version bump only.
0.33.17 (2023-09-28)
Version bump only.
0.33.16 (2023-09-28)
Version bump only.
0.33.15 (2023-09-28)
Version bump only.
0.33.14 (2023-09-28)
Bug Fixes
- form: disable only submit button
0.33.13 (2023-09-28)
Version bump only.
0.33.12 (2023-09-27)
Version bump only.
0.33.11 (2023-09-27)
Version bump only.
0.33.10 (2023-09-27)
Version bump only.
0.33.9 (2023-09-27)
Version bump only.
0.33.8 (2023-09-27)
Version bump only.
0.33.7 (2023-09-26)
Version bump only.
0.33.6 (2023-09-26)
Version bump only.
0.33.5 (2023-09-26)
Chores
- tests: add file operation tests
0.33.4 (2023-09-26)
Features
- waiters: add waitForXPathSelector helper
0.33.3 (2023-09-25)
Chores
- tests: add clear and type tests
0.33.2 (2023-09-25)
Chores
- tests: add domClick tests
0.33.1 (2023-09-25)
Version bump only.
0.33.0 (2023-09-25)
Features
- automation: draftEmail
0.32.3 (2023-09-22)
Version bump only.
0.32.2 (2023-09-22)
Version bump only.
0.32.1 (2023-09-21)
Version bump only.
0.32.0 (2023-09-20)
Features
- tests: global config for mocks
0.31.21 (2023-09-20)
Version bump only.
0.31.20 (2023-09-20)
Bug Fixes
- form: clean values inside form after render
0.31.19 (2023-09-20)
Version bump only.
0.31.18 (2023-09-20)
Version bump only.
0.31.17 (2023-09-20)
Features
- form: update conditional fields
- waiters: add wait and waitForSelector unit tests
0.31.16 (2023-09-20)
Version bump only.
0.31.15 (2023-09-20)
Version bump only.
0.31.14 (2023-09-20)
Version bump only.
0.31.13 (2023-09-20)
Version bump only.
0.31.12 (2023-09-20)
Version bump only.
0.31.11 (2023-09-18)
Bug Fixes
- release: fix highlighter position
0.31.10 (2023-09-18)
Version bump only.
0.31.9 (2023-09-15)
Bug Fixes
- highlight: fix highlights position
0.31.8 (2023-09-13)
Version bump only.
0.31.7 (2023-09-13)
Version bump only.
0.31.6 (2023-09-13)
Version bump only.
0.31.5 (2023-09-08)
Bug Fixes
- config: fix build watcher
0.31.4 (2023-09-07)
Bug Fixes
- storage: tmp remove storage
0.31.3 (2023-09-07)
Version bump only.
0.31.2 (2023-09-06)
Bug Fixes
- storage: fix path
0.31.1 (2023-09-06)
Bug Fixes
- tests: fix local tests
0.31.0 (2023-09-06)
Features
- sdk: retry behaviour for mouse and keyboard helpers, closes
0.30.5 (2023-09-05)
Version bump only.
0.30.4 (2023-09-05)
Version bump only.
0.30.3 (2023-09-05)
Version bump only.
0.30.2 (2023-09-05)
Version bump only.
0.30.1 (2023-09-05)
Version bump only.
0.30.0 (2023-09-05)
Features
- storage: storage package
0.29.3 (2023-09-05)
Version bump only.
0.29.2 (2023-08-31)
Version bump only.
0.29.1 (2023-08-29)
Bug Fixes
- release: fix release
0.29.0 (2023-08-25)
Features
- automation: add mouseEvent hover helper
Chores
- deps: bump yup from 0.32.11 to 1.2.0
- deps: bump react from 17.0.2 to 18.2.0
0.28.13 (2023-08-29)
Version bump only.
0.28.12 (2023-08-29)
Version bump only.
0.28.11 (2023-08-29)
Version bump only.
0.28.10 (2023-08-29)
Version bump only.
0.28.9 (2023-08-28)
Bug Fixes
- file: fix UI
0.28.8 (2023-08-25)
Version bump only.
0.28.7 (2023-08-25)
Bug Fixes
- npm: fix dependencies
0.28.6 (2023-08-25)
Bug Fixes
- themes: fix path
0.28.5 (2023-08-25)
Version bump only.
0.28.4 (2023-08-25)
Version bump only.
0.28.3 (2023-08-25)
Bug Fixes
- release: fix lerna
0.28.2 (2023-08-25)
Bug Fixes
- release: fix lerna
0.28.1 (2023-08-25)
Version bump only.