Skip to content

What's New in Kittox 4

Kittox is the fourth generation of the Kitto framework. It is a complete rewrite of the client-side technology that preserves Kitto's core philosophy: declarative YAML-driven development where the server generates the UI.

This page is a scannable index of what Kittox adds over Kitto 1/2/3. Each feature is summarized in one or two lines — follow the link for the full reference.

Why Kittox

Kitto 3 was based on ExtJS, a paid commercial library that required a matching Delphi class for every client-side component — tight coupling that made the framework rigid, expensive and hard to evolve. Kittox replaces it with HTMX + AlpineJS + CSS custom properties: a lightweight, open-source stack where the server emits standard HTML fragments and HTMX handles partial page updates.

Kitto 1/2/3Kittox
Client libraryExtJS 3/4/7 (commercial, ~1.5MB)HTMX + AlpineJS (~30KB total)
UI generationServer emits ExtJS JavaScript codeServer emits HTML + HTMX attributes
IconsExtJS icon sprites (PNG)2122 Material Design SVG icons, 5 styles
ThemingExtJS themes (SCSS compilation)CSS custom properties (instant light/dark/auto)
LicenseApache 2.0 + ExtJS commercialApache 2.0 (core) + AGPL/Commercial (enterprise)
Client-side codingRequired for any customizationAlmost zero — HTML templates suffice

New Client Architecture

The server generates HTML fragments that HTMX swaps into the DOM — no JavaScript framework to learn. All interactions (paging, filters, form submit, navigation) use HTMX attributes declared in the generated HTML, and client libraries load only when needed.

New Controllers

Core (Open Source)

ControllerDescriptionKitto 3 equivalent
ListData grid with CRUD toolbar, paging, sorting, column layouts, row colors, card modeTKExtGridPanel
GroupingListCollapsible group headers with expand/collapseTKExtGroupingGridPanel
FormData-aware editing with field pages, detail tabs, ViewMode/EditModeTKExtFormPanelController
WizardMulti-step forms with Back/Next/Finish and per-step validationnew
BorderPanelLayout with North/South/West/East/Center regionsTKExtBorderPanelController
TabPanelTabbed container with closable tabsTKExtTabPanelController
FlexPanelCSS Flexbox layout with configurable gap and wrappingnew
TreePanelHierarchical menu treeTKExtTreePanel
TilePanelMetro-style colored tile menu (mobile-friendly)new
TemplateDataPanelCustom HTML templates for read-only data displaynew
HtmlPanelStatic HTML contentTKExtHtmlPanel
StatusBarStatus bar with text and iconTKExtStatusBar
ToolBarHorizontal toolbar menuTKExtToolbar
ThemeSwitcherLive Light / Auto / Dark theme picker, persisted per-appnew
LanguageSwitcherLanguage dropdown with flags — per-session switch, on login and homenew

Enterprise (AGPL-3.0 / Commercial)

ControllerDescriptionKitto 3 equivalent
ChartPanelChart.js charts (bar, line, pie, doughnut)TKExtChartPanel (ExtJS charts)
CalendarPanelInteractive event calendar (month/week/day)new
GoogleMapGoogle Maps with geocoding and markersnew
DashboardKPI cards with auto-refreshnew

In-App Help Chat

A new Help Chat assistant (Core) gives the end user a floating bubble that answers "how do I…?" questions about the running application. Answers come from a pluggable provider: out of the box a deterministic engine (docsearch) searches the KittoX documentation and links the matching page — no API key, offline — while a claude provider adds AI answers grounded on the same docs (RAG). It is opt-in with one line (HelpChat/Enabled: True), context-aware (the toolbar ? button asks about the current screen) and fully localized. See Help Chat.

Notification Center & Background Tools

Long-running tools (large CSV/Excel/PDF exports, reports) can now run as background jobs on a worker pool separate from the HTTP threads: add RunMode: Background to the tool and the request returns immediately instead of blocking on a spinner. A new notification center — a bell in the topbar — tracks each job's progress, completion and errors, and lets the user download the result when ready; jobs are persisted on disk and survive a process restart. Opt-in with Notifications/Enabled: True. See Notification Center & Background Tools.

Mobile Support

Automatic mobile detection renders views fullscreen on phones and tablets, with device-specific home views (HomeTinyView / HomeSmallView / HomeView), a single kxApp.openView() entry point (tabs on desktop, fullscreen on mobile) and a body.kx-mobile styling hook. See Mobile Support.

Attribute-Based Routing (RTTI)

URL routing is a modular system based on Delphi custom attributes and RTTI (inspired by MARS/WiRL): enterprise modules register their own URL handlers just by including the unit — no central dispatch to edit. See Attribute-Based Routing.

REST API (JSON)

Beyond the HTML/HTMX GUI, an application can expose its data views as a REST/JSON web service under /api/v4/{ViewName}, using the same models, business rules (TKRules) and ACL as the GUI over real HTTP verbs:

VerbEndpointOperation
GET/api/v4/{View}list — envelope {data, total}, paging / sort / filters
GET/api/v4/{View}/{id}read one
POST/api/v4/{View}create
PUT / PATCH/api/v4/{View}/{id}update (full / partial)
DELETE/api/v4/{View}/{id}delete

It is opt-in (Kitto.Web.Rest, no third-party JSON dependency — plain System.JSON), with Bearer/JWT auth, model-level permissions, OpenAPI 3.0 + Swagger UI, and CORS, and is served in every deployment mode. See REST API (JSON).

JWT Authentication

A new Auth: JWT authenticator wraps any other authenticator (DB, TextFile, custom) as its Inner and, on success, issues a self-contained signed JWT in an HttpOnly cookie that replaces the opaque session-id cookie — stateless authentication that survives restarts and multiple instances, carrying the user profile (name, db, lang, roles) in the credential itself. It is opt-in and additive (apps on Auth: DB / TextFile are untouched), supports HS/RS/ES signing algorithms and sliding expiration, and is the extension point for external identity providers (OIDC / SAML). Being a wrapper, it must forward to its inner authenticator every decision that depends on the credential store: that contract is enforced by the compiler (TKAuthenticatorDecorator), so an authenticator added to the framework cannot quietly stop working under the JWT envelope. All three sample apps (TasKitto, HelloKitto, KEmployee) run on JWT over three different inner authenticators. See JWT Authenticator.

Access Control via JWT Claim

A new AccessControl: JWT controller reads grant rows from a kx_acl claim that the JWT authenticator snapshots into the token at login — same matching semantics as AccessControl: DB but zero DB hit per check. It is closed-world (anything not granted is denied) and best paired with a layered ACL design; because grants are frozen at login, mid-session permission changes apply only after the next login. See Access Control.

Open Core Licensing

ComponentLicense
Core (List, Form, Wizard, FlexPanel, routing, REST API, database, auth)Apache 2.0 — free for any use
Enterprise (Chart, Calendar, Map, Dashboard)AGPL-3.0 (open-source apps) / Commercial (closed-source)
KIDEx (Visual IDE)Commercial only

Separate packages: KittoXCore.dpk (core) and KittoXEnterprise.dpk (enterprise). See Licensing.

Five Deployment Modes

ModeDescriptionNew in Kittox
StandaloneVCL desktop or Windows Service with Indy HTTPinherited from Kitto 3
Desktop EmbeddedWebView2 inside a VCL window — looks like a native desktop app, no browser chromenew
ConsoleHeadless server (Docker-friendly)new
ISAPI (IIS)Native IIS integrationinherited, fully reworked
Apache ModuleNative Apache 2.4 integrationinherited, fully reworked

KIDEx — Visual IDE (Enterprise)

The visual IDE is modernized with RTTI-based property discovery — 6 Delphi attributes (YamlNode, YamlContainer, YamlSubNode, …) replace 215 manual YAML template files, so the IDE discovers properties, enums and sub-nodes straight from annotated classes. The New Project Wizard is reachable from three entry points sharing one template engine — KIDEx standalone, the RAD Studio IDE plugin and the MCP-KittoX project_create_app tool — and scaffolds Win64 projects for any of the four deployment modes, with JWT auth wired by default. See KIDEx.

MCP-KittoX — AI Agent Server (Enterprise)

A new standalone executable, MCPKittoX.exe, ships alongside KIDEx and exposes its functionality to AI agents via the Model Context Protocol — Claude Desktop, Claude Code, Codex, LM Studio and any MCP-compatible client. Agents can scaffold new applications, reverse-engineer Models from a database, generate Views and Layouts, introspect databases, validate metadata and refresh translation files — conversationally, without leaving the agent. Writes are opt-in and the workspace is sandboxed, and a single Enterprise license unlocks both KIDEx and MCP-KittoX.

Foundation shipping now

The base server is functional (STDIO transport, license gating, JSON-RPC envelope) with a growing tool catalog across the meta, project, models, views, layouts, resources, menu, db, config, locale and validate scopes. The live catalog with implementation status is on the MCP-KittoX feature matrix.

See MCP-KittoX for the full tool catalog, setup walkthrough and CLI reference.

Other Improvements over Kitto 3

  • Performance: TStringBuilder optimization, AppName cache, FireDAC connection pooling
  • Unified Editor Factory: centralized input rendering shared between forms and filter panels
  • Draggable dialogs: all modal dialogs can be moved by dragging the title bar
  • Toast notifications: brief messages after save/delete operations
  • Error handling: DB errors shown as non-fatal dialogs (session preserved), driver prefixes stripped from messages
  • Help button: configurable per-view help URL in forms and list toolbars
  • Column sorting: click-to-sort with ascending/descending toggle, plus multi-column sort (Ctrl/Cmd/Shift+click) with position badges
  • IsLarge grid defaults: marking a model IsLarge: True opens its List views empty with server-side paging enabled; overridable per view via Controller/AutoOpen and Controller/PagingTools
  • Session safety: atomic session creation, session-lost detection with auto-reload
  • Timeout handling: configurable AJAX timeout with Retry/Reset dialog
  • Localization: per-session language selection, GNU gettext integration
  • CSS theming: light/dark/auto via CSS custom properties; the structured, KIDEx-discoverable Theme node (Theme/Mode + per-mode palettes) replaces the old flat Theme: <mode> value. See Themes
  • User-selectable theme (4.0.8): with Theme/Mode: Auto / UserSelection: True, drop a Controller: ThemeSwitcher in the GUI and end users pick Light / Auto / Dark live, persisted per-app. See Themes

Migration from Kitto 3

The YAML metadata format is largely compatible. The main changes are:

  • Controller names: GridPanelList, FormPanelForm, etc.
  • ExtJS-specific properties (theme names, ext panel properties) are replaced by HTML/CSS equivalents
  • UseKitto.pas replaces Kitto.Ext.All with Kitto.Html.All + optional Kitto.Web.Enterprise
  • The .dpr entry point remains TKStart.Start for standalone mode

See also

Released under Apache License, Version 2.0.