Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
a063c6a
Exclude co-located tests from the public exports surface (#11)
TheGreatAxios Aug 10, 2026
7668a1a
Add Dialog stories for center and sheet placements (#14)
pratikbuilds Aug 10, 2026
fbc5258
Allowlist URL schemes at every agent/artifact-supplied link sink (#19)
TheGreatAxios Aug 14, 2026
1d638e5
TraceWaterfall honesty for ordinal spans, plus an accessible InfoTool…
TheGreatAxios Aug 14, 2026
0627774
Post-hoc fixes for #20: ProfileCard href safety, missing tests, dead …
TheGreatAxios Aug 14, 2026
807a9a7
CL-5624: Dashboard and chrome components (gtm port) (#25)
TheGreatAxios Aug 15, 2026
4d8441a
CL-5636: Ladle component workbench with Corbits theme toggle (#23)
TheGreatAxios Aug 15, 2026
5558890
CL-5623: Workflow visualization components (gtm port) (#24)
TheGreatAxios Aug 15, 2026
07828a0
CL-5423: LoginForm sign-up mode, link Button, DitherBackground, auth …
TheGreatAxios Aug 15, 2026
c454615
CL-5433: Chat parts renderer and tool lifecycle (phase 1) (#27)
TheGreatAxios Aug 15, 2026
4c12142
CL-5654: Canvas chat host — dual-column generative UI (#28)
TheGreatAxios Aug 15, 2026
e93005c
CL-5633: Small stateless components — architecture pass and standing …
TheGreatAxios Aug 15, 2026
2cbfdf6
Form field primitives: Select, Textarea, Checkbox, RadioGroup (#30)
TheGreatAxios Aug 15, 2026
5321f64
Add press feedback to buttons
TheGreatAxios Aug 16, 2026
82f4546
Merge pull request #31 from corbitsdev/press-feedback
TheGreatAxios Aug 19, 2026
16aba56
Motion tokens: named easings and durations for the design canon
TheGreatAxios Aug 20, 2026
4cfe076
Fix motion-token namespace: --transition-duration-*, not --duration-*
TheGreatAxios Aug 20, 2026
e707b69
Merge pull request #32 from corbitsdev/cl-6408-motion-tokens
TheGreatAxios Aug 20, 2026
585aca5
Add tests for the list selection system
TheGreatAxios Aug 20, 2026
34f89f7
List selection: useListSelection, SelectionCheckbox, BulkActionBar
TheGreatAxios Aug 20, 2026
5c360fc
List selection: fix reduced-motion centering, harden hook shape, a11y
TheGreatAxios Aug 20, 2026
7d85ff1
Merge pull request #33 from corbitsdev/cl-6411-list-selection
TheGreatAxios Aug 20, 2026
754ef61
Add tests for TopBarBreadcrumbs link injection
TheGreatAxios Aug 20, 2026
075ca38
TopBarBreadcrumbs: link-component slot for SPA navigation
TheGreatAxios Aug 20, 2026
f6ec381
TopBarBreadcrumbs: fix injected linkComponent losing crumb styling
TheGreatAxios Aug 20, 2026
a3932c8
Merge pull request #34 from corbitsdev/cl-6431-breadcrumbs-link-slot
TheGreatAxios Aug 20, 2026
0ef25c2
Add tests for the inline command palette surface
TheGreatAxios Aug 21, 2026
fcfa28e
CommandPaletteInline: the palette as anchored, non-modal chrome
TheGreatAxios Aug 21, 2026
3ebbc71
Merge pull request #35 from corbitsdev/cl-6464-inline-command-palette
TheGreatAxios Aug 21, 2026
25c3b5a
Add tests for icon-size scale tokens
TheGreatAxios Aug 21, 2026
b8589a4
Add named icon-size scale tokens (nav, top-bar, button, checkbox)
TheGreatAxios Aug 21, 2026
3b12281
Merge pull request #36 from corbitsdev/cl-6470-icon-tokens
TheGreatAxios Aug 21, 2026
7159dee
Address pre-publish review findings for react-ui (#41)
TheGreatAxios Sep 21, 2026
891a312
Set Node 24 LTS as the minimum engine (#48)
TheGreatAxios Sep 21, 2026
2093efb
chore(deps): pin packageManager to bun@1.4.0 (#53)
TheGreatAxios Sep 21, 2026
c409486
docs(readme): registry install and current public API (CL-8775) (#49)
TheGreatAxios Sep 21, 2026
24f23ba
refactor(ui)!: drop Command in favour of CommandPaletteInline (#52)
TheGreatAxios Sep 21, 2026
e58a0c5
chore(git): ignore .agent-state/ (#51)
TheGreatAxios Sep 21, 2026
7a81b3e
refactor(test): co-locate test suite under src/ (#50)
TheGreatAxios Sep 21, 2026
6b9329f
docs: PRODUCT/IMPLEMENTATION and reconcile DataPort/theme (CL-8775) (…
TheGreatAxios Sep 21, 2026
0e18011
refactor!: prune modules unreachable from any known consumer (#55)
TheGreatAxios Sep 21, 2026
1a784cf
feat(theme): OS-follow color tokens via prefers-color-scheme (CL-8479…
TheGreatAxios Sep 21, 2026
a31c83f
Add Silk, Strata, and Echo thinking indicators (#40)
pratikbuilds Sep 21, 2026
6a939ee
feat(chat): ShimmerText and ThinkingLabel with rotating verbs (CL-848…
TheGreatAxios Sep 21, 2026
b020b6f
feat(voice): MicButton, VoiceWaveform, DictationStatusLine and MicPer…
TheGreatAxios Sep 21, 2026
598e340
feat(tool): ToolPicker for browsing, searching and selecting tools (C…
TheGreatAxios Sep 21, 2026
1340e3d
feat(agent): collapsible Reasoning block composed into agent-turn (CL…
TheGreatAxios Sep 21, 2026
a3e263e
docs(readme): runnable-only Quickstart, one program (CL-8775) (#57)
TheGreatAxios Sep 22, 2026
ec644d6
refactor!: keep lib helpers out of the public surface (#63)
TheGreatAxios Sep 27, 2026
fa46566
build(deps): make four Radix and sonner peers optional (#64)
TheGreatAxios Sep 27, 2026
bfc0673
docs(readme): bun add, ChatThread example, component index (#65)
TheGreatAxios Sep 27, 2026
5185a25
docs(readme): move dark mode and fonts into a Theming section (#69)
TheGreatAxios Sep 27, 2026
8f9a154
feat: ship "use client" on stateful components (#66)
TheGreatAxios Sep 27, 2026
5cccb36
build: drop the git-install prepare hook (#60)
TheGreatAxios Sep 27, 2026
f9831fa
docs(readme): lead with what it is, where it fits and how to upgrade …
TheGreatAxios Sep 27, 2026
8a2068d
chore(release): 0.2.0 (#73)
TheGreatAxios Sep 27, 2026
87c2e14
build: keep bun.lock as the only lockfile (#61)
TheGreatAxios Sep 27, 2026
247ac6e
refactor!: replace generated exports with a hand-written barrel (#76)
TheGreatAxios Sep 27, 2026
81e78a9
build: emit JS with tsc and move gates out of build (#77)
TheGreatAxios Sep 27, 2026
38a666a
build: switch to oxfmt and oxlint (#78)
TheGreatAxios Sep 27, 2026
2fcd56a
chore: align repo scaffolding with the package standard (#79)
TheGreatAxios Sep 27, 2026
926c8ec
fix: apply batched functional updates in useControllableState (#80)
TheGreatAxios Sep 27, 2026
67795c4
fix: animated-number restarts from the shown value; theme hydrates cl…
TheGreatAxios Sep 27, 2026
d38161d
test(e2e): add a Vite host and Playwright harness (#67)
TheGreatAxios Sep 27, 2026
578a98c
test(e2e): add approval, palette and theme browser specs (#68)
TheGreatAxios Sep 27, 2026
70dbc8b
test(e2e): add Select, FilterChip, dictation, AuthLayout and ChatThre…
TheGreatAxios Sep 27, 2026
6b4a5b7
test(e2e): run an axe sweep over every Ladle story (#71)
TheGreatAxios Sep 27, 2026
afb796b
test: drop class-string tests covered by browser specs (#62)
TheGreatAxios Sep 27, 2026
a5326e2
feat(avatar): shape, status dot, working orbit, xs and xl sizes (#82)
TheGreatAxios Sep 30, 2026
ff26a09
chore(release): 0.3.0 (#83)
TheGreatAxios Sep 30, 2026
7a8fcc1
fix(sidebar): render SidebarItem parts inside the asChild element (#87)
TheGreatAxios Oct 8, 2026
4edc88e
chore(release): 0.3.1
TheGreatAxios Oct 8, 2026
ee759b7
build(deps): replace ladle with storybook 10 as the component workben…
pratikbuilds Oct 19, 2026
571d4df
ci: scope cla workflow concurrency group by event (#93)
TheGreatAxios Oct 21, 2026
8300019
chore: add a Corbits Triage policy in .corbits-triage.yml (#92)
corbits-triage[bot] Oct 21, 2026
0b54482
fix: clear the storybook axe baseline (#91)
pratikbuilds Oct 21, 2026
d571e17
feat: add observability trace viewers
TheGreatAxios Oct 23, 2026
07e6de5
chore: drop restated comments on the trace types
TheGreatAxios Oct 23, 2026
27ad6d5
feat: quiet the trace controls and keep orange on play
TheGreatAxios Oct 23, 2026
e264fe8
feat: give the trace a calmer brief, ribbon, and step list
TheGreatAxios Oct 23, 2026
9dd459a
feat: settle the observe nav and the overview rows
TheGreatAxios Oct 23, 2026
b6b9507
feat: paint trace marks from the chart palette
TheGreatAxios Oct 23, 2026
5d66359
fix: keep failed steps on the ledger and orange on play
TheGreatAxios Oct 23, 2026
e65b8c6
feat: show the step type and label that were passed in
TheGreatAxios Oct 23, 2026
51cba73
chore: format the observability spike
TheGreatAxios Oct 23, 2026
326f450
fix: mark the session table as a client component
TheGreatAxios Oct 23, 2026
c7a8079
fix: keep unread trace rows at full contrast
TheGreatAxios Oct 23, 2026
e447ccf
feat: split the trace viewers into parts and overview pages
TheGreatAxios Oct 23, 2026
4a0acbc
feat: show one step, and drop the shape page
TheGreatAxios Oct 23, 2026
1292649
feat: compose observability views from small elements
TheGreatAxios Oct 23, 2026
d74e510
Merge pull request #131 from corbitsdev/cl-11309-add-observability-tr…
brianjfox Oct 24, 2026
b5e538d
fix: clip a shell command to one line in a step title
TheGreatAxios Oct 25, 2026
e317b42
fix: describe the whole run in the trace header
TheGreatAxios Oct 25, 2026
73aed81
feat: read a trace as the question, the answer, and its steps
TheGreatAxios Oct 25, 2026
765145b
fix: keep trace reading keys on the focused step
TheGreatAxios Oct 25, 2026
d52e9d3
ci(policy): run the corbits-triage rules and actions
TheGreatAxios Oct 27, 2026
f180bb0
Merge pull request #135 from corbitsdev/cl-11560-run-the-corbits-tria…
TheGreatAxios Oct 27, 2026
2498698
feat: add a sidebar search control that opens the palette
TheGreatAxios Oct 27, 2026
ff6d038
fix: join trace start date and time with a middle dot
TheGreatAxios Oct 27, 2026
78deb3d
fix: clip step titles by code point
TheGreatAxios Oct 27, 2026
80ea84c
fix: share the command shortcut and skip it when disabled
TheGreatAxios Oct 27, 2026
3b0938c
fix: read a tied trace in step order
TheGreatAxios Oct 27, 2026
694c18c
fix: fit the trace reading view to its frame
TheGreatAxios Oct 27, 2026
e12207a
test: show a clipped shell command as a tool
TheGreatAxios Oct 27, 2026
cd8ac5e
Merge pull request #136 from corbitsdev/cl-11569-sidebar-search-and-c…
TheGreatAxios Oct 27, 2026
b404ee3
Merge pull request #132 from corbitsdev/cl-11451-clip-shell-commands-…
TheGreatAxios Oct 27, 2026
e4a1616
Merge pull request #133 from corbitsdev/cl-11450-make-the-trace-heade…
TheGreatAxios Oct 27, 2026
24825f4
Merge pull request #134 from corbitsdev/feat/trace-reading
TheGreatAxios Oct 27, 2026
2f654e2
chore(release): 0.3.2
TheGreatAxios Oct 27, 2026
6f872c0
Merge pull request #137 from corbitsdev/cl-11591-release-react-ui-032
TheGreatAxios Oct 27, 2026
725775a
feat(conversation): add the chat data contract and its helpers (#113)
pratikbuilds Oct 28, 2026
9582a6d
feat(conversation): add Conversation and its scroll anchoring (#114)
pratikbuilds Oct 28, 2026
a95f411
feat(prompt-input): add PromptInput with token highlighting (#115)
pratikbuilds Oct 28, 2026
123b531
feat(panel): add a resizable Panel with keep-mounted panes (#116)
pratikbuilds Oct 28, 2026
4c04a0f
test(stories): add sample conversations for the chat stories (#117)
pratikbuilds Oct 28, 2026
73a9348
feat(prompt-input): add the PromptInput toolbar parts (#118)
pratikbuilds Oct 28, 2026
75035c2
feat(panel): add tabs for the Panel (#119)
pratikbuilds Oct 28, 2026
415de5b
feat(agent): add Tool, ToolApproval, ToolGroup, Reasoning and Activit…
pratikbuilds Oct 28, 2026
ea976c4
feat(message): add the Message family (#121)
pratikbuilds Oct 28, 2026
361e789
feat(conversation): add useHistoryWindow and ConversationEarlier (#122)
pratikbuilds Oct 28, 2026
8d30380
feat(conversation): add ConversationMap and useReadingPosition (#123)
pratikbuilds Oct 28, 2026
531a23f
feat(attachments): add Attachments and the file drop zone (#124)
pratikbuilds Oct 28, 2026
e234719
feat(media): add generated images, sources and MediaViewer (#125)
pratikbuilds Oct 28, 2026
464bace
feat(conversation): add ConversationThread (#126)
pratikbuilds Oct 28, 2026
a21d9f8
test(stories): add a story of the whole chat (#127)
pratikbuilds Oct 28, 2026
3ca1f27
feat(chat)!: remove the old chat components (#128)
pratikbuilds Oct 28, 2026
546bd9e
feat(chat): add MessageParts to render a message's parts (#129)
pratikbuilds Oct 28, 2026
95e9ca7
test(a11y): record conversation story contrast baselines (#140)
TheGreatAxios Oct 28, 2026
9f97ae9
chore(release): 0.4.0 (#141)
TheGreatAxios Oct 28, 2026
0372ac1
fix(media): close the viewer when its item leaves the list
cursoragent Oct 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
298 changes: 298 additions & 0 deletions .corbits-triage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,298 @@
# Corbits Triage policy.
rules:
- check: max-files-changed
text: Flag pull requests over 30 files changed.
max: 30
onFail: ask
reason: Large pull requests are hard to review.
evidence:
- maintainer-stated
- check: max-lines-changed
text: Flag pull requests over 3,000 lines changed.
max: 3000
onFail: ask
reason: Large pull requests are hard to review.
evidence:
- maintainer-stated
- check: focused
text: Check the change is focused on one thing.
reason: A change that does several things is harder to review and to revert.
evidence:
- maintainer-stated
- check: docs
text: Check docs are updated when behavior changes.
reason: A behaviour change without a docs or story update leaves the docs wrong.
evidence:
- maintainer-stated
enabled: false
- check: linked-issue
text: Require a linked issue from GitHub or Linear.
tracker: either
reason: CONTRIBUTING.md asks every pull request to close an issue.
evidence:
- maintainer-stated
- check: no-merge-conflicts
text: Flag merge conflicts with the base branch.
reason: A pull request with conflicts can't be merged as it is.
evidence:
- maintainer-stated
- check: ci-green
text: CI must pass before merge.
reason: A change is not ready until CI passes.
evidence:
- maintainer-stated
- check: no-forbidden-paths
text: Never accept changes to node_modules/**.
paths:
- node_modules/**
reason: Dependencies are installed, never committed.
evidence:
- maintainer-stated
- check: conventional-commits
text: Titles and commits follow Conventional Commits.
types: [feat, fix, refactor, test, docs, build, ci, perf, chore]
reason: CONTRIBUTING.md lists these types, with chore kept for releases.
evidence:
- maintainer-stated
- check: hidden-content
text: Flag text hidden in the pull request.
reason: Hidden text can steer the rules a model judges.
evidence:
- maintainer-stated
- check: no-duplicate
text: Flag a pull request whose diff or commits match another open one.
reason: Two pull requests for the same change waste a review; the earlier one stays.
evidence:
- maintainer-stated
- check: duplicates-open-pull-request
text: Ask when a pull request overlaps another open one.
reason: A near duplicate needs a person to pick which one goes on.
evidence:
- maintainer-stated
- check: sensitive-paths
text: Note changes to CI configuration and the lockfile.
groups:
ci: { level: medium, paths: [".github/**"] }
locks: { level: medium, paths: ["**/bun.lock"] }
reason: A CI or lockfile change deserves a second look before merge.
evidence:
- maintainer-stated
- check: risk
text: Ask about high-risk pull requests and label medium-risk ones.
reason: A large change with no test touched needs a maintainer's eye.
evidence:
- maintainer-stated
- id: no-ai-attribution
check: text
text: Titles, descriptions and commits carry no AI attribution.
fields: [title, description, commits]
failWhen: contains
phrases:
- "Co-Authored-By:"
- "Claude-Session:"
- "claude.ai/code/session"
- "noreply@anthropic.com"
- "Generated with Claude"
- "Generated with [Claude"
reason: No AI co-author lines, session trailers or links, or generated-with footers.
evidence:
- maintainer-stated
- id: conventions
check: code-patterns
text: Added code follows the repository's conventions.
presets:
- convention
onFail: label
reason: Keeps added code free of invented fallbacks, nested ternaries, IIFEs and promise chains.
evidence:
- maintainer-stated
- id: invented-fallbacks
check: code-patterns
text: Added code handles a missing value instead of inventing an empty one.
patterns:
- id: more-invented-fallbacks
language: typescript
message: Invented fallback (an empty string, || [] or || 0); handle the missing value instead.
ignores:
[
"**/*.{test,spec}.*",
"**/{test,tests,Tests,__tests__}/**",
"**/*.*{Test,Tests}/**",
]
rule:
any:
- pattern: $X || []
- all:
- any:
- pattern: $X ?? ""
- pattern: $X ?? ''
- pattern: $X ?? ``
- pattern: $X || ""
- pattern: $X || ''
- pattern: $X || ``
- not:
any:
- inside: { kind: template_substitution }
- inside:
{
kind: binary_expression,
has: { field: operator, regex: '^\+$' },
}
- inside:
{
kind: parenthesized_expression,
inside:
{
kind: binary_expression,
has: { field: operator, regex: '^\+$' },
},
}
- has: { field: left, kind: subscript_expression }
- has:
{
field: left,
kind: call_expression,
has:
{
field: function,
regex: '\.(at|get|getAttribute)$',
},
}
- all:
- pattern: $X || 0
- not:
any:
- inside:
{
kind: binary_expression,
has: { field: operator, regex: "^[-+*/%]$" },
}
- inside:
{
kind: parenthesized_expression,
inside:
{
kind: binary_expression,
has: { field: operator, regex: "^[-+*/%]$" },
},
}
- inside: { kind: augmented_assignment_expression }
- id: more-invented-fallbacks
language: javascript
message: Invented fallback (an empty string, || [] or || 0); handle the missing value instead.
ignores:
[
"**/*.{test,spec}.*",
"**/{test,tests,Tests,__tests__}/**",
"**/*.*{Test,Tests}/**",
]
rule:
any:
- pattern: $X || []
- all:
- any:
- pattern: $X ?? ""
- pattern: $X ?? ''
- pattern: $X ?? ``
- pattern: $X || ""
- pattern: $X || ''
- pattern: $X || ``
- not:
any:
- inside: { kind: template_substitution }
- inside:
{
kind: binary_expression,
has: { field: operator, regex: '^\+$' },
}
- inside:
{
kind: parenthesized_expression,
inside:
{
kind: binary_expression,
has: { field: operator, regex: '^\+$' },
},
}
- has: { field: left, kind: subscript_expression }
- has:
{
field: left,
kind: call_expression,
has:
{
field: function,
regex: '\.(at|get|getAttribute)$',
},
}
- all:
- pattern: $X || 0
- not:
any:
- inside:
{
kind: binary_expression,
has: { field: operator, regex: "^[-+*/%]$" },
}
- inside:
{
kind: parenthesized_expression,
inside:
{
kind: binary_expression,
has: { field: operator, regex: "^[-+*/%]$" },
},
}
- inside: { kind: augmented_assignment_expression }
onFail: label
reason: A fallback belongs only where a real default exists.
evidence:
- maintainer-stated
- id: no-any
check: code-patterns
text: Added code uses no any type.
patterns:
- id: no-any
language: typescript
message: "`any` turns type checking off; name the type, or take unknown and narrow it."
ignores:
[
"**/*.{test,spec}.*",
"**/{test,tests,Tests,__tests__}/**",
"**/*.*{Test,Tests}/**",
]
rule: { kind: predefined_type, regex: "^any$" }
onFail: ask
reason: AGENTS.md allows no any without a comment saying why.
evidence:
- maintainer-stated
actions:
pass:
- do: approve
when:
author:
- users:
- thegreataxios
- brianjfox
- do: request-review
target:
to: users
users:
- thegreataxios
when:
author:
- external
fail:
- do: close
when:
linkedIssue: false
- do: request-changes
unsure:
- do: assign
target:
to: users
users:
- thegreataxios
when:
author:
- maintainers
68 changes: 68 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: ci

on:
pull_request:
push:
branches: [main]

jobs:
check:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v4
with:
node-version: 24
- uses: oven-sh/setup-bun@v2
- run: bun install --frozen-lockfile
- run: bun run check
- run: bun run build
- run: bun run contrast-test
- run: bun run dep-guard
- run: bunx playwright install --with-deps chromium
- run: bun run test:e2e
- name: node consumer smoke
run: |
set -euo pipefail
TARBALL="$PWD/$(npm pack --silent)"
mkdir -p "$RUNNER_TEMP/c" && cd "$RUNNER_TEMP/c"
npm init -y >/dev/null && npm pkg set type=module >/dev/null
npm install "$TARBALL"
# One runtime export from each module the chat family puts in
# src/index.ts, so a dropped `export *` line fails here and not in a
# consumer's build. lib/conversation.js is types only and has none.
# A forwardRef component is an object, so presence is the check.
node --input-type=module -e '
const m = await import("@corbits/react-ui");
const names = [
"Button", "Badge",
"usePromptInput", "useResizable", "useTabs", "useTabDrag", "useCopy",
"useHistoryWindow", "useReadingPosition", "useAttachments",
"useFileDrop", "useMediaViewer",
"groupActivity", "mediaKindOf", "checkAttachments", "matchPromptTokens",
"Conversation", "ConversationDivider", "ConversationEarlier",
"ConversationMap", "ConversationThread",
"PromptInput", "PromptInputToolbar", "Panel", "PanelTabs",
"Tool", "ToolApproval", "ToolGroup", "Reasoning", "Activity",
"Message", "MessageFold", "MessageActions", "MessageReactions",
"MessageReplies", "Attachments", "AttachmentDropZone",
"GeneratedImages", "Sources", "MediaViewer", "MessageParts",
];
const missing = names.filter((n) => m[n] === undefined);
if (missing.length) throw new Error("missing exports: " + missing.join(", "));
'

policy-check:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
checks: read
contents: read
pull-requests: read
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
persist-credentials: false
- uses: corbitsdev/corbits-triage/packages/policy-check-action@28a902e9a6e2f7ec53c581425b72d97c6800fc89
Loading
Loading