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-list host: filters, CRUD actions and the presenters it composes — the GridPanel by default (paging, sorting, column layouts, row colors), card mode, a chart or calendar in the Center, a grid or the form of the current record beside itTKExtListPanelController + TKExtGridPanel
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 optional JWT: envelope block can be added under any authenticator (DB, TextFile, LDAP, custom) so that, on success, it 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 without the envelope are untouched), supports HS/RS/ES signing algorithms and sliding expiration, and is the extension point for external identity providers (OIDC / SAML). The authenticator keeps validating credentials while the base TKAuthenticator orchestrates the token and delegates the JOSE crypto to an opt-in JWT engine, so any authenticator works under it without a special contract. All three sample apps (TasKitto, HelloKitto, KEmployee) run with a JWT envelope over three different 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 engine 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, …) let the IDE discover properties, enums and sub-nodes straight from the annotated framework 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.

The same annotations drive Metadata Validation: KIDEx checks every model, view, layout and Config.yaml against the framework schema at design time — unknown nodes, wrong value types, broken references, redundant defaults — and proposes the valid child nodes in the tree context menu with their defaults already filled in. The validator also runs headless through MCPKittoX --validate, so it fits a build or pre-commit check. A Database Wizard covers the other direction: it generates and runs the DDL that brings the database in line with the project's Models, multi-dialect and with an editable preview. 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.

Tool catalog

The server runs over a STDIO transport with license gating and a JSON-RPC envelope, and its tools span the meta, project, models, views, layouts, resources, menu, db, config, locale and validate scopes. The live catalog with per-tool 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: 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: GridPanel → List, FormPanel → Form, 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.