Repository navigation
Releases: AIDotNet/TKCode.Arc
Release list
v0.3.0-preview.5
Highlights / 亮点
New package TKCode.Arc.Workflow — WorkflowCanvas shows a graph of steps and plays its runs: pan and zoom, editing, connections with validation, undo/redo, copy/paste, node templates, a minimap, virtualization for 500+ steps.
新包 TKCode.Arc.Workflow —— WorkflowCanvas 显示步骤图并播放运行过程:平移缩放、编辑、带校验的连线、撤销重做、复制粘贴、节点模板、小地图,500+ 步骤虚拟化。
Blocks › Auth — SignIn, SignupForm, LoginSplit, LoginCentered, LoginImmersive, OtpInput, OnboardingIllustration, MultiStepForm.
Blocks › 认证 —— 以上八个登录/注册/验证码/引导区块。
Core — PanZoomTransform, WheelRouter, LayeredGraphLayout.
Fixes / 修复 — many controls no longer keep their page in memory after leaving the window; closed menu sheets no longer leave a scrim; ChatThread no longer logs debug lines; cheaper Accordion/ExpandableCard dividers; StreamMark 0.1.0. The web Gallery is now AOT-compiled.
许多控件离开窗口后不再让页面滞留内存;关闭的菜单面板不再残留遮罩;ChatThread 不再输出调试日志;Accordion/ExpandableCard 分隔线更省;StreamMark 0.1.0;网页 Gallery 改为 AOT 编译。
dotnet add package TKCode.Arc --version 0.3.0-preview.5
dotnet add package TKCode.Arc.Workflow --version 0.3.0-preview.5Full list: CHANGELOG.md · Compare: v0.3.0-preview.4...v0.3.0-preview.5
v0.3.0-preview.4
安装 / Install
dotnet add package TKCode.Arc --version 0.3.0-preview.4TKCode.Arc.Blocks、TKCode.Arc.AdvancedCharts、TKCode.Arc.Special、TKCode.Arc.Fonts、TKCode.Arc.Icons.Lucide 同版本发布。
The other packages (TKCode.Arc.Blocks, TKCode.Arc.AdvancedCharts, TKCode.Arc.Special, TKCode.Arc.Fonts, TKCode.Arc.Icons.Lucide) ship with the same version.
中文
新增
- 特别组件 › AI:
TKCode.Arc.Special中的五个智能体界面组件:AgentStatus(实时状态胶囊,可展开查看最近的步骤)、ToolCall与ToolCallGroup(显示输入与输出的工具调用行,可批准和重试)、AgentPlan(可编辑的计划草稿,批准后成为实时清单)、AgentTimeline(在同一时间轴上回放多智能体运行)和ContextWindow(带压缩阈值的 200 格令牌预算网格)。 - Blocks › 页眉与页脚:
SiteHeader、SiteFooter、CtaSection和NewsletterSignup,移植自 Arc 的免费区块。 - Blocks › AI:模型竞技场(
ModelArena,两个模型的盲测:流式回答、投票和排行)和文档提取(DocumentExtraction,文档旁的表单随模型阅读逐项填写,每个值都链接到其来源文本)。九个 AI 区块现已全部可用。 - AnnouncementBar:
DismissalDuration让记住的关闭状态在一段时间后失效。
变更
- Gallery:语言在顶栏有了独立的菜单,首次启动跟随系统语言并会被记住。首页新增友情链接,文档页加载时显示占位内容。
修复
- Combobox(#9):聚焦时不再显示深色的环,只把边框变为
BorderStrong,与 Arc 一致。 - Gallery(#8、#10):示例不再切掉行内编辑框和焦点环的左侧。
- Gallery(#11):以 NativeAOT 发布的桌面 Gallery 能重新加载文档页和截图。
English
Added
- Special components › AI (
TKCode.Arc.Special, original designs that take Arc's Pro behaviour and motion as a
reference):AgentStatus(live status pill that opens into the recent steps, with a built-inAgentRunSimulation),
ToolCallandToolCallGroup(tool call rows with input and output, inline approval and retry, a transcript
simulation),AgentPlan(editable, reorderable draft plan that becomes a live checklist),AgentTimeline(replay of a
multi-agent run on one time axis, with handoffs, span cards, pinning, scrubbing and a live mode) andContextWindow
(200-cell token budget grid with a compaction threshold, legend and send / attach / compact actions). Docs and demos in
English, 简体中文 and 繁體中文. - Blocks › Headers and footers (ported from Arc's free blocks):
SiteHeader(sticky header that turns solid on
scroll, gliding current-link marker, mega menu panels whose height springs and whose content slides in from the side
you moved toward, mobile menu sheet),SiteFooter(link columns with a validating newsletter, a minimal row, and a
large fading arch mark),CtaSection(centered, split beside a setup card that completes itself, dismissible
banner) andNewsletterSignup(email signup framed by a stack of past issues; subscribing drops the next issue onto
the front). - Blocks: the model arena, the eighth block of the AI group (original design): a blind test of two models. One prompt goes
to two anonymous models, both answers stream in on one shared clock in whole words whatever the real speeds, and the
vote reveals the models. Each answer shows time to first token, speed and cost measured on the raw stream, a failed
answer keeps its text and offers a retry of that model alone, and the standings rank the models by win rate and replay the
change the first time they are opened after a vote.ModelArenatakesContestants,Promptsand anIArenaRunner; in a
narrow container the answers become tabs. - Blocks: document extraction, the ninth and last block of the AI group (original design): turns a document into typed data
and shows where each value came from. A quiet viewer draws the document on white paper beside an editable form; while a
model reads, the fields fill in one by one, the text each value came from is tinted, and pointing at a field or its text lights
both and draws a curved link. Values below a confidence threshold carry the model's reason and a "Looks right" button, a
value that does not fit its type is null and blocks "Accept all", and the JSON and Schema tabs show the typed result and the
schema sent to the model.DocumentExtractiontakesSamples(document plus schema) and anIDocumentExtractor. - AnnouncementBar:
DismissalDurationlets a remembered dismissal expire (the gallery's sponsor banner comes back
after a day);null, the default, keeps the bar hidden for good, as before.
Changed
- Gallery: the language has its own menu in the top bar instead of a row in the Appearance popover. The first start
picks English, 简体中文 or 繁體中文 from the system's language (the browser's preferred languages on the web), and a
language chosen in the menu is remembered for the next start (local storage on the web, a small file in the local
application data folder on the desktop). - Gallery: a Friends section and page on the home page, a sponsor banner, a placeholder while a docs page loads, and a
page that opens at the top and stays there until you scroll.
Fixed
- Combobox (#9): a focused field drew a dark 3px ring around a dark border. Arc's focused combobox only turns its border
toBorderStrong; its halo is transparent, so the ring is gone. - Gallery (#8, #10): the examples stage no longer clips a view to its bounds, which cut off the left side of the inline edit
frame and of the focus rings that sit a few pixels outside a control. - Gallery (#11): a NativeAOT publish of the desktop gallery (
-p:PublishAot=true) showed "This page could not be loaded"
on every docs page, and no screenshots. The page text and the screenshots are resource-only assemblies that Avalonia
finds by name, and NativeAOT keeps no metadata for an assembly whose types nothing uses; the desktop host now roots
both (TrimmerRootAssembly).
Full Changelog: v0.3.0-preview.3...v0.3.0-preview.4
v0.3.0-preview.3
0.3.0-preview.2
Added
-
Special components (Illustrations): five animated AI explainers in the new package
TKCode.Arc.Special
(UseArcSpecial()), each a reusable, data-driven card with three-language docs, examples and tests:AgentLoop(a
head with a gradient trail circles gather context, take action and verify; context blocks stack up, tool calls drop
out of the ring and resolve, checks pass or send the loop round again),MixtureOfExperts(a router scores every
expert for each token, packets travel to the top-k experts within their capacity, a load balance bar and an active
parameter readout; hover, focus or pin a token or an expert to inspect it),SpeculativeDecoding(a seeded draft
model guesses ahead, the target checks the guesses in one pass, accepted tokens fly into the answer; a draft length
slider and a race against the target alone),PromptCache(requests share a cached prefix: cache write, hits, a
partial hit after an edit, a time to live that drains and expires, cost and first-token savings) andReasoningTree
(beam search over thoughts with seeded scores, pruning and the winning path, in a four-column tree or an outline on
narrow cards). They share the public baseExplainer(a story clock with play, pause, step, restart, speed,
autoplay when seen, looping and reduced-motion behavior) and the data typeExplainerModel. Every number is computed
from the data (costs, scores, acceptance, routing, capacity); sample data and model names are invented. -
Blocks (Projects): five project blocks in
TKCode.Arc.Blocks, each a reusable, data-driven control with
three-language docs, examples and tests:WeekCalendar(week, work week, day, three-day and agenda views with a mini
month, color-coded calendars and time zones; drag on the grid to create, move and resize events in 15-minute steps,
edit them in popovers and undo the last change),AvailabilityPicker(a group meeting time picker: day cards with a
gliding highlight, per-person free and busy marks, a booking step),ProjectBoard(a compact sprint board whose
cards fly to the next stage, with an All work / My work filter and a sprint line),ReleaseReadiness(a checklist
that unlocks an asynchronous release action, with progress, owners, success and failure states) andKanbanBoard
(physical drag and drop with lift, tilt and a drop spring, keyboard and touch dragging, swimlanes by person, live
work-in-progress limits, quick add and a details drawer). People areProjectPersons with generated avatars; shared
parts (FLIP for custom panels, a thin progress line, a live-region announcer) are internal. -
Blocks (Showpieces): six self-drawn showpiece blocks in
TKCode.Arc.Blocks, each a reusable, data-driven control
with three-language docs, examples and tests:ActivityTerrain(a week of hourly activity as an orbit-and-zoom 3D
terrain that presses flat into a heat map),RevenueGlobe(a live payments map on a dotted globe, with a day timeline
to replay or scrub; its land comes from a 0.5° Natural Earth mask),CustomerGalaxy(2,400 accounts as a turning galaxy that regroups into
clusters, with totals beside it),SemanticZoom(an organization map you zoom from teams to projects to one task, with
breadcrumbs, a minimap and a guided tour),LayoutMorph(one set of cards in six views, from a grid to a 3D ring and a helix,
each card flying to its new place on its own spring) andExplodedView(a screen that comes apart into labelled
layers as you scroll). Shared parts are internal: projection and plane homographies, orbit and 2D cameras, inertia,
a self-drawn stage, zoom controls, a hover card, rolling numbers and a text cache. -
Core:
RollingDigitsFalloff.None, for rolling digits that are only clipped and never fade. -
Core:
ArcSurface.Elevation, an inherited attached property (Base/Raised). Dialogs, drawers, bottom
sheets, popovers and menus set it toRaised, so their content knows it sits onSurfaceRaised. -
Button: the
:raisedpseudo-class on a raised surface. A ghost button there fills with
GhostRaisedHoverBackgroundon hover and press (the foreground mixed intoSurfaceRaised, 7% dark and 5% light):
SurfaceMutedis only a few steps offSurfaceRaised(#242424against#1F1F1Fin dark), so the hover nearly
vanished in dialogs. -
Gallery: the docs site serves files for AI assistants, generated from the docs pages when the image is built
(gallery/TKCode.Arc.Gallery.Llms):https://docs.tkcode.si/llms.txt, an index of every guide, component and block;
llms-full.txtwith every page in one file; every page as Markdown at its address plus.md(such as
/components/button.md), with the Simplified and Traditional Chinese pages under/zh-CN/and/zh-TW/; and an
agent skill under/skills/tkcode-arc/(SKILL.md, a component catalog and a review checklist). The AI and MCP
guide shows how to use them. -
Core: motion building blocks for the AI blocks: the springs
ArcSpring.Quick(0.25) andSettle(0.33); the
ArcContentSwapmodesLabel,CrossfadeandLiftwithEnterDuration,ExitDuration,EnterDelay,
EnterOffsetandMeasuresExiting;GlidingIndicator.FadeDurationand a tweenMoveTo;SpringSizeDecorator.IsHeld
andCapsToAvailable; and the newArcRing, a circular progress ring that can trail its value. Text helpers:
WordDiff(a word-level diff that keeps{{ name }}markers whole),WordPacer(streaming text released in whole
words on a 34 ms clock) andTextRangeDecorationwithDecoratedTextBlock(per-line rounded backgrounds, strikethrough
and underline on character ranges, repainted without relayout). 23 more Lucide glyphs inArcIcons. -
Blocks: the Model picker, the first block of the AI group (original design, not published to NuGet with the
other Blocks yet): a pill that shows the chosen model and its effort, a menu with featured models, an effort setting
and the other models by provider (flyouts, or pages in a narrow window), and a summary with a confirmation after
each change.ModelPickeris built fromModelPill,ModelMenuandModelSummary; models areAiModeland
AiModelProviderobjects. -
Blocks: Agent memory, the second block of the AI group (original design): a card that shows what an assistant
remembers, with a capacity meter, two switches, filters by group, a search that highlights hits, in-place editing,
forgetting with a few seconds to undo, a pill that files a just-noted memory, and a field that adds one by hand and
sorts it into a group. Memories areMemoryItemobjects inAgentMemory.Memories(or a list you give as
MemoriesSource);CommitAsyncsaves a change first and rolls it back in place when it fails,ClassifyAsyncsorts
new memories, and every word comes fromAgentMemoryLabels. -
Blocks: the AI composer, the third block of the AI group (original design): the prompt box of an AI app with a text
area that grows from one to eight lines, "/" commands and "@" mentions that become tokens, attachments picked from the
plus menu, pasted or dropped that upload in place (long pastes become attachments), tool toggles, a model pill with an
effort row, a character counter with a limit, and a send button that turns into a stop button with a progress ring.
AiComposerreports a send as anAiComposerMessage(text, tokens, ready attachments, model, effort, tools); the host
starts the reply and setsIsGenerating.ModelPillgains a toolbar appearance andModelMenuan inline effort row. -
Special inputs:
TokenTextEditor, a multi-line editor whose tokens (commands, mentions, variables) act as single
units, with configurable triggers that report a query for your own list.MentionInputis now built on it with no
change in behavior. -
Blocks: the AI chat, the fourth block of the AI group (original design): a chat with an assistant that fills its
container, with a conversation menu, a model button and a new chat button on top, a thread of turns and a single-row
message box. Replies stream in as Markdown in whole words, with collapsible reasoning, tool chips that open to their
searches or queries, numbered citations that preview their source, and actions to copy, retry, rate and switch between
versions; editing a message or retrying a reply makes a new version of the turn.AiChatasks anIAiChatResponder
(a stream of events) or waits for your code to fill theAiChatReply; the thread follows new text at the bottom with a
jump button when scrolled away.AiComposergains an inline layout (Layout = Inline),ModelPilla header
appearance andModelMenua simple layout. -
Overlays and Content:
HoverCardopens on keyboard focus afterOpenDelaywithOpensOnFocus, closes on Escape
without moving focus, hasCardPaddingand is exposed as a tooltip;MarkdowngetsRevealFadeDuration,
RevealFadeInReducedMotionandIsPacedfor hosts that pace the streamed text themselves. -
Blocks: the AI answer, the fifth block of the AI group (original design): a page that answers one question like an
article, with a reasoning row, source cards, an answer streamed in whole words with headings, lists, a table, code and
numbered citations, and three-way lighting between a citation, the sentence it supports and its source card. Under the
answer are actions (copy with sources, answer again with a model submenu, thumbs with a reasons list, share link, a
version pager), the model line, related questions and a follow-up box.AiAnswerasks anIAiAnswerResponderor shows a
finished answer; asking again replaces the answer in place and keeps the versions of the question. -
Blocks: the AI side panel and the prompt studio, the sixth and seventh blocks of the AI group (original design).
AiSidePanelis an assistant beside a page the person re...
v0.3.0-preview.1
v0.2.0-preview.1
Added
- Targets: the libraries also build for
net8.0, next tonet10.0andnet11.0. The net8.0 build needs StreamMark
0.1.0-alpha.25, which adds net8.0 to its packages. - Markdown (
TKCode.Arc): an outline and find.GetOutline,ScrollToPoint,ScrollToAnchor,Findand
GetSelectedText, with theIsDocumentReady,MatchCount,CurrentMatchIndexandHasSelectionproperties and the
DocumentReadyandSearchChangedevents. A host can build an outline sidebar, a find bar and a copy action around the
document. - RichTextEditor (
TKCode.Arc):TrySetMarkdownimports Markdown and returns aRichTextImportReportthat lists what
the editor could not keep (RichTextImportIssueKind: heading depth, fence info strings, tilde fences, tables and so on). - DataGrid (
TKCode.Arc.AdvancedCharts, in the repository, not on NuGet yet): cell renderers (badge, progress, link,
icon text, checkbox, actions), validation rules (required, range, max length, pattern), conditional format rules, a
CellInvokedevent, a context menu event, CSV export options, and filter and layout state. - Blocks (
TKCode.Arc.Blocks, in the repository, not on NuGet yet): the command palette dialog; search results with
value and date filters, details and actions; sidebar collapse and resize modes; the reworked notification center.
Changed
- AtomUI is pinned to 6.2.7; 0.1.1-preview.1 was built on 6.2.6. The AtomUI dependency moves with the Arc version.
- DataGrid CSV export neutralizes spreadsheet formulas by default (
NeutralizeCsvFormulas), and a paste larger than
MaxPasteCells(1,000,000 cells by default) is refused. - On .NET 8 and 9 the DataGrid's natural text sort uses a built-in comparer; on .NET 10 and later it uses
CompareOptions.NumericOrdering, as before.
Fixed
LiveLoop.Startreturns early when it is already delivering frames, so a caller that starts the loop on every pointer
move no longer re-reads the gates each time.
Full changelog: v0.1.1-preview.1...v0.2.0-preview.1
v0.1.1-preview.1
Added
- Components: the Activity, Content, Editors, Illustrations, Media and SpecialInputs categories, plus
ButtonGroup, SplitButton, Card, Reactions, SwipeActions and the Color, Date, DateRange and Time pickers. - Core: the
MotionTimelineandLiveLoopmotion drivers, theSharedElementprimitives,ArcBlurand
ArcViewport. - Blocks (
TKCode.Arc.Blocks): the AppShell blocks (Sidebar, PageHeader, CommandPalette, SearchResults) and the
Settings blocks (SettingsPage, SecuritySettings, BillingOverview, UsageBilling, CancelFlow, SettingsCommand). - AdvancedCharts (
TKCode.Arc.AdvancedCharts): a new project that starts with the DataGrid control. - Gallery
- A component's page is its docs page with live examples embedded by
<Demo name="..." />; each demo is an
.axamlfile and its Code tab shows that source. - A Docs section in the sidebar, and Cmd/Ctrl+K to focus the search from anywhere in the window.
- API tables generated from the XML docs, with zh-CN and zh-TW translations; shell text and docs pages in
en-US, zh-CN and zh-TW. - Markdown rendering and code highlighting through StreamMark
0.1.0-alpha.23, the first release that runs in
the browser. - A WebAssembly host (
TKCode.Arc.Gallery.Browser) and app icons for the Desktop and Browser hosts.
- A component's page is its docs page with live examples embedded by
- Distribution
- The Gallery WebAssembly image is built on GitHub and pushed to
ghcr.io/atomuicommunity/tkcode-arc-gallery; it is served with brotli, pre-compressed files and browser caching. - Release builds of the Gallery desktop app: Windows and Linux (unsigned), macOS (signed and notarized).
- NuGet packing and publishing from
ci.ymlwith nuget.org Trusted Publishing.
- The Gallery WebAssembly image is built on GitHub and pushed to
- Tools: scripts for the API docs translation pipeline and
tools/branding/build_icons.py. - A Simplified Chinese README and a Sponsors section.
Changed
- The per-category
_Sharedhelpers are replaced by the shared Core primitives. - Gallery pages moved from per-category
Pages/*.csregistrations toDocs/pages andDemos/examples. design/is no longer tracked in git.- XML
<summary>text added to public properties and events on many controls; it feeds the Gallery API tables.
Fixed
- Motion: a loop waiting out a pause could leave the renderer idle with its frame request pending; frames now keep
coming. - HoldToConfirm, ConfirmMorph (hold mode), the Tabs panel and the Carousel viewport changed a reused clip without
invalidating the clipped visual, so the hold fill did not move and a growing panel or resized carousel kept a stale
clip. - Countdown: a wheel at rest is drawn as a plain glyph, which halves the frame time of a ticking face.
- Slider and ElasticSlider threw from
Math.Clampwhen XAML setMinimumabove the currentMaximum
(for exampleMinimum="360" Maximum="900"). - Tabs no longer scrolls the page around it when the selected tab changes; the tab list reveals the selected tab
itself. - Gallery Browser: native Skia is built for WebAssembly and trimming is skipped on publish.
Full Changelog: v0.1.0-preview.1...v0.1.1-preview.1