Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
1aeab74
feat(appkit): reference agent-app, dev-playground chat UI, docs, and …
MarioCadenas Apr 21, 2026
4070c0c
fix(appkit): align chat clients + template with renamed 'agents' plugin
MarioCadenas Apr 22, 2026
95e860c
docs(agents): folder layout on disk, migrate samples, sync API refs
MarioCadenas Apr 23, 2026
e597388
docs(appkit): regenerate typedoc API reference for folder-agents loader
MarioCadenas Apr 23, 2026
ea166b9
feat(dev-playground): port Smart Dashboard as /smart-dashboard route;…
MarioCadenas Apr 24, 2026
8475975
feat(dev-playground): stage 2-4 of smart-dashboard demo
MarioCadenas Apr 24, 2026
29c5206
feat(appkit): sub-agent approval gate + save view to volume + saved v…
MarioCadenas Apr 24, 2026
33432e4
fix(playground): treat missing saved-views dir as empty list, not 500
MarioCadenas Apr 24, 2026
ba0bb08
fix(appkit): forward all sub-agent events except metadata
MarioCadenas Apr 24, 2026
8dde8aa
fix(playground): use html2canvas-pro to support oklch() colors
MarioCadenas Apr 24, 2026
5b566e0
fix(playground): unwrap DownloadResponse when serving saved-view PNGs
MarioCadenas Apr 24, 2026
e216792
fix(playground): apply saved view directly from metadata on thumbnail…
MarioCadenas Apr 24, 2026
33d7fca
docs(appkit): regenerate typedoc for tool annotations
MarioCadenas Apr 24, 2026
a9e49d4
feat(playground): revamp smart dashboard with denser charts and actio…
MarioCadenas Apr 24, 2026
e049034
feat(playground): hamburger nav with shared catalog and redesigned home
MarioCadenas Apr 24, 2026
616666d
feat(playground): tiered approval card — writes vs updates vs destruc…
MarioCadenas Apr 24, 2026
fa0fe50
fix(playground): pin agent-feed card tints to sRGB hex
MarioCadenas Apr 24, 2026
10a8f4e
fix(playground): gate Tailwind dark: variant on the theme class
MarioCadenas Apr 24, 2026
c138a79
fix(playground): stop streaming chat bubbles from pulsing
MarioCadenas Apr 27, 2026
8232418
chore(playground): migrate dev-playground server to onPluginsReady
MarioCadenas Apr 27, 2026
8129f5e
refactor(appkit): move agent runtime to core/agent/
MarioCadenas Apr 29, 2026
8dc239a
refactor(appkit): extract AgentRunner + ToolExecutor strategy
MarioCadenas Apr 29, 2026
6d81a43
refactor(appkit): split agents.ts helpers into separate modules
MarioCadenas Apr 29, 2026
a046189
feat(appkit): unify on DATABRICKS_SERVING_ENDPOINT_NAME
MarioCadenas Apr 29, 2026
41c621e
feat(template): scaffold a working starter agent
MarioCadenas Apr 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 17 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,25 @@

All notable changes to this project will be documented in this file.

# Changelog
## Unreleased

# Changelog
### appkit

# Changelog
* **appkit:** **Breaking change:** markdown agents must live under `config/agents/<id>/agent.md`. Top-level `config/agents/*.md` is no longer discovered; migrate each file to `<stem>/agent.md`. The reserved folder `config/agents/skills` is ignored until per-agent skills ship.
* **appkit:** **Deprecation:** `DATABRICKS_AGENT_ENDPOINT` is deprecated in favour of `DATABRICKS_SERVING_ENDPOINT_NAME` — the same env var the `serving` plugin already reads, so a single value now covers both. The legacy var still works for one release with a one-time deprecation log; remove it from your environment once you've set the new name.

## [0.25.1](https://github.com/databricks/appkit/compare/v0.25.0...v0.25.1) (2026-04-27)

### appkit

* **appkit:** check isRetryable before retrying in interceptor ([#276](https://github.com/databricks/appkit/issues/276)) ([1c994a6](https://github.com/databricks/appkit/commit/1c994a6d99f397b56e90f1b53df06a61f02b9e82))


## [0.25.0](https://github.com/databricks/appkit/compare/v0.24.0...v0.25.0) (2026-04-23)

### files

* **files:** per-volume in-app policy enforcement ([#197](https://github.com/databricks/appkit/issues/197)) ([f54dca5](https://github.com/databricks/appkit/commit/f54dca5da5af5368c7bcb18745715b54a99d47e9))

## [0.24.0](https://github.com/databricks/appkit/compare/v0.23.0...v0.24.0) (2026-04-20)

Expand Down
64 changes: 64 additions & 0 deletions apps/dev-playground/client/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion apps/dev-playground/client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
"@tanstack/router-plugin": "1.133.22",
"class-variance-authority": "0.7.1",
"clsx": "2.1.1",
"html2canvas": "1.4.1",
"html2canvas-pro": "2.0.2",
"lucide-react": "0.546.0",
"react": "19.2.0",
"react-dom": "19.2.0",
Expand All @@ -30,6 +32,7 @@
},
"devDependencies": {
"@eslint/js": "9.36.0",
"@tailwindcss/postcss": "4.1.17",
"@tanstack/router-cli": "1.133.20",
"@types/node": "24.6.0",
"@types/react": "19.2.2",
Expand All @@ -43,7 +46,6 @@
"postcss": "8.5.6",
"shiki": "3.15.0",
"tailwindcss": "4.1.17",
"@tailwindcss/postcss": "4.1.17",
"typescript": "5.9.3",
"typescript-eslint": "8.45.0",
"vite": "npm:rolldown-vite@7.1.14"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { CheckCircle2Icon } from "lucide-react";
import { useEffect, useState } from "react";

interface ActionToastProps {
/**
* Latest dispatcher-surfaced action summary. Each new value bumps a
* render key so the toast re-animates even if the same message arrives
* twice (e.g. two identical filter calls in a row).
*/
message: string | null;
durationMs?: number;
}

/**
* Non-intrusive bottom-left toast that confirms every agent-driven UI
* action. Silent success was the worst failure mode before: an action
* silently not-applied looked identical to one that worked but didn't
* show its effect.
*/
export function ActionToast({ message, durationMs = 2800 }: ActionToastProps) {
const [visible, setVisible] = useState<{ key: number; text: string } | null>(
null,
);

useEffect(() => {
if (!message) return;
const key = Date.now();
setVisible({ key, text: message });
const t = setTimeout(() => {
setVisible((v) => (v?.key === key ? null : v));
}, durationMs);
return () => {
clearTimeout(t);
};
}, [message, durationMs]);

if (!visible) return null;

return (
<div
key={visible.key}
className="fixed bottom-20 left-4 z-30 rounded-full bg-card border border-border shadow-lg px-3 py-1.5 flex items-center gap-2 animate-in fade-in slide-in-from-bottom-2 duration-200"
>
<CheckCircle2Icon className="h-3.5 w-3.5 text-green-500 shrink-0" />
<span className="text-xs text-foreground">{visible.text}</span>
</div>
);
}
Loading