Changelog
On this page
Changelog
This project follows Keep a Changelog and Semantic Versioning. The source file is changelog.md in the repository.
Unreleased
Added
-
Lensy sets up notifications in plain words: two read tools (
alertRules,notifications) and five tools that change something and wait for Approve (alertRuleSet,recipientSet,recipientRemove,reportSchedule,notificationsSet). It cannot change the SMTP server or password. -
Email reports (BoxLang+): a daily, weekly and monthly report for admins, built from what every server saved (traffic, failures, mail, capacity, alerts, top errors, outgoing HTTP), set against the period before. A schedule with a time and zone, a preview in a locked frame and Send now. One server sends, once. Each server now saves one small
dailydocument per day. -
Notifications (BoxLang+): email alerts for 15 critical conditions on every server (server down, deadlock, heap pressure, disk space, error spike, failed requests, slow site, datasource pool, executors, tasks, outgoing HTTP, mail, AI, security, log errors), all off until switched on. A Settings tab for the SMTP server (Lens sends the mail itself, Jakarta Mail is bundled, the password stays in an environment variable or a
bxsecret:), the recipients with their severity and categories, and every limit. One server sends for the cluster (the lowest id that is alive), mails are firing, reminder and resolved, grouped per person, limited per hour, with a pause. -
Volumes on the System page (Free): every mounted volume with size, used, free, a read only flag and a status (
volumes.warnPct,volumes.critPct), and the folders BoxLang and Lens use with the volume of each, who uses it and whether Lens writes there. -
The Mail, ORM and Queries pages can show another server (BoxLang+), read only, from its health snapshot.
-
A health snapshot every server saves each minute, and a Servers table on the Overview. With BoxLang+ the System, Executors, Tasks, Datasources, Caches, Requests and In flight pages can show another server, read only, with a banner and the time it was saved. See The server selector.
-
The Mail page (BoxLang+, three counters and ten messages on Free): messages sent through bx-mail with a locked preview, delivery steps, servers, the spool with send again and discard, and the settings. Opt in with
collectors.mail.enabled; it needs a bx-mail that announces theonMailevents. -
Lensy can ask MCP servers: the eleven Ortus documentation servers (all off) and servers the admin adds, with a per server list of allowed tools, an approval for custom servers and addresses checked on the server. See the threat model.
-
The assistant is now called Lensy, with a mascot, in the drawer, the AI page and the bar.
-
The Lensy (BoxLang+): a chat with 32 tools over the data of the console, JVM introspection (threads, deadlocks, GC pressure, executor recommendations, a health sweep) and the bundled docs, on a local Ollama by default. Actions need an Approve click. New AI page, bar Ask link and live
ai.*settings. See the threat model and Set up Ollama. -
Server identity on every record: host, address and an instance id on requests, errors, reports, query statistics, in flight entries, the audit log and the disk store files, plus
lensServer(). Seeserverand Server identity. -
Five BIFs that return the console data as plain structs and arrays, in any request:
lensReport,lensErrors,lensQueries,lensInflightandlensLicense. See Data functions. -
The BIFs panel and the
collectors.bifscollector: time per built-in function, frompostBIFInvocation. It is heavy and off by default. It needs a BoxLang build with core pull request 657. -
The Modules page in the console: every loaded module, nested ones too, with version, state, path and what it provides.
-
/~bxlens/with a trailing slash opens the console. On MiniServer it also needs a pass predicate, see The console URL. -
Live settings: the console Settings page is editable. Changes apply at once, are saved to
config/bxlens-settings.json(orconsole.overridesFile), survive restarts and win overboxlang.json, with a reset per setting.console.readOnlyrefuses every change from the console. See Console settings and Live settings. -
Roles and access:
console.viewerPasswordfor a view-only role, proxy header trust (access.trustProxyHeader,access.proxyHeader,access.proxyPeers),console.requireHttpswith a warning banner for plain HTTP, and an audit log,bxlens-audit.log. See Security. -
Console pages: Datasources, Caches, Logs, Environment with a diagnostic bundle (BoxLang+), In flight and Queries, Errors and Reports and Ask Lens.
-
System page: Run GC, heap dump (BoxLang+,
console.allowHeapDump, admin only, off by default) and a deadlock banner that shows the cycle. See System and Threads. -
Free and BoxLang+ split. Free keeps the bar and most of the console. BoxLang+ or a trial adds request cost and the slow request sample, task actions (Run now, pause, resume, reload), cache value, evict, reap and clear, log download, the diagnostic bundle, heap dumps, saving or resetting a bar layout, AI calls from the server, the disk store (errors and reports saved, totals since first install, a longer minute series) and a request history longer than 25. A locked item shows a "BoxLang+" note and the server answers 403 (AI answers 409). The split is the current state and may change. See Licensing.
-
Optional AI help (
ai.*): copy a redacted prompt, open ChatGPT or Claude, and Explain with AI and Ask Lens through thebx-aimodule.bx-ai3.4.0 ships inside the module, inmodules/bxai, so there is nothing to install. Lens still loads if it is removed. The server calls need BoxLang+ or a trial. -
New settings under
console,access,store,aiandcollectors.checks.*anddev.*are now declared in the schema. See Configuration. -
A standalone console at
/~bxlens/index.bxmwith a password login, per-address lockout, CSRF protection, a strict Content-Security-Policy and no external requests. Pages: Overview, Requests, Executors, Tasks, System, Threads, Bar designer and Settings. See Console. -
Live executor health from BoxLang's own health reports, and scheduled tasks with status and metrics. Run now, pause, resume and reload need BoxLang+.
-
A Server-Sent Events stream for live data, with polling as the fallback.
-
Bar designer: choose and order the bar's tabs. Saving a layout needs BoxLang+. The layout is saved in
config/bxlens-layout.json. -
Bar: Open console button and a More menu (open in console, copy request JSON, copy id, detach).
-
Request cost (BoxLang+: CPU time and bytes allocated by the request thread), response headers in the Request panel, a slow request sample (BoxLang+) that names the template and line, and security Notes for missing headers and cookie flags.
-
collect.level(off,light,full) andtabs.hide. -
License detection through
bx-plus, with Plus, Trial, Expired and Free states. See Licensing for what Free and BoxLang+ include. -
Phosphor icons, vendored (MIT).
-
Request-level debug bar for BoxLang web apps. It is off by default and limited to local and private callers.
-
Panels: Issues, Timeline, Queries, Templates, HTTP, Exceptions, Messages, Timers, Cache, Modules, Request, Scopes, Runtime and History.
-
Issues engine for N+1, slow queries, slow templates and functions, slow requests, HTTP 4xx and 5xx, and exceptions.
-
BIFs:
lensMessage,lensDump,lensStart,lensStop,lensMeasure,lensAddMeasure,lensException,lensEnable,lensDisable,lensIsEnabled,lensRenderandlensPanel. -
Extension points
onLensRegister,onLensRequestStart,onLensCollectandonLensRequestFinish, with built-in renderers. -
In-memory History of the last 50 requests, including JSON and SSE.
-
Floating detach window, resizing, keyboard shortcuts, light and dark themes, and persisted UI state.
-
Server-side redaction and size limits.
-
Demo harness, Playwright end to end tests and generated documentation screenshots.
-
Documentation site built with bx-sites.
Changed
- The bar and the console are switched independently, and both are off by default.
enabledbecamebar.enabled, andaccess.allowedIPsandaccess.allowPrivateNetworksbecamebar.access. The defaultbar.accessis loopback only. See Moving from older settings. - BxLens is a product of Ortus Solutions under the BoxLang+ proprietary license (freeware with limits) and is no longer described as open source. See Licensing.
- The queries collector id and the console Queries page share
collectors.queries.enabled. Thelogscollector (per request) is separate fromlogfiles(the console Logs page). X-Forwarded-Protois believed only from a trusted proxy peer.
Not in v1
lensDumpHeapand thebx:lenscomponent. Thread dumps and heap dumps are in the console.- Java collectors and custom UI extensions.
- Comparing requests, and loading the detail of an earlier request from History.
- SOAP events. They need core changes.