[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81684":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":15,"starSnapshotCount":15,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},81684,"boot-ui","jdubois\u002Fboot-ui","jdubois","The missing developer UI for Spring Boot!","",null,"Java",140,13,1,0,11,54,113,43,3.44,"Apache License 2.0",false,"main",true,[26,27,28,29,30,31],"developer-tools","java","spring-boot","spring-boot-4","spring-boot-starter","vue","2026-06-12 02:04:18","# BootUI\n\n[![Build](https:\u002F\u002Fgithub.com\u002Fjdubois\u002Fboot-ui\u002Factions\u002Fworkflows\u002Fbuild.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fjdubois\u002Fboot-ui\u002Factions\u002Fworkflows\u002Fbuild.yml)\n[![CodeQL](https:\u002F\u002Fgithub.com\u002Fjdubois\u002Fboot-ui\u002Factions\u002Fworkflows\u002Fcodeql.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fjdubois\u002Fboot-ui\u002Factions\u002Fworkflows\u002Fcodeql.yml)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue.svg)](LICENSE)\n[![Spring Boot](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSpring%20Boot-4.0.x-6db33f?logo=springboot&logoColor=white)](https:\u002F\u002Fspring.io\u002Fprojects\u002Fspring-boot)\n[![Java](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FJava-25-orange?logo=openjdk&logoColor=white)](https:\u002F\u002Fopenjdk.org\u002Fprojects\u002Fjdk\u002F25\u002F)\n\nBootUI is a **Spring Boot 4 starter** that adds an embedded, local-only developer console to your application.\n\nIt is served by the host application at `\u002Fbootui\u002F`, uses internal `\u002Fbootui\u002Fapi\u002F**` endpoints, and packages the browser\nUI into the starter so consuming applications do not need Node.js or npm.\n\n![BootUI overview](docs\u002Fimages\u002Fbootui-overview.png)\n\n## Features\n\nBootUI exposes these panels in the same grouped order as the application menu. See the\n[feature details guide](docs\u002FFEATURES.md) for explanations and screenshots for every panel.\n\n| Group           | Feature                                               | What it helps with                                                                                            |\n| --------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |\n| Overview        | [Overview](docs\u002FFEATURES.md#overview)                 | See runtime identity, versions, ports, active profiles, activation reason, and safety state.                  |\n| Runtime         | [Health](docs\u002FFEATURES.md#health)                     | Explore the Actuator health tree and contributor details.                                                     |\n| Runtime         | [Metrics](docs\u002FFEATURES.md#metrics)                   | Browse Micrometer meters, tags, measurements, and a local live chart for selected metrics.                    |\n| Runtime         | [Memory](docs\u002FFEATURES.md#memory)                     | Review JVM heap, non-heap, memory pools, garbage collectors, and suggested JVM options.                       |\n| Runtime         | [Startup Timeline](docs\u002FFEATURES.md#startup-timeline) | Inspect Spring Boot startup steps and durations when startup data is available.                               |\n| Configuration   | [Configuration](docs\u002FFEATURES.md#configuration)       | Inspect effective configuration values, metadata, masking, and local runtime overrides.                       |\n| Configuration   | [Profile Diff](docs\u002FFEATURES.md#profile-diff)         | Compare profile-specific property sources and values while preserving secret masking.                         |\n| Configuration   | [Loggers](docs\u002FFEATURES.md#loggers)                   | Inspect and change logger levels at runtime through the Actuator loggers endpoint.                            |\n| Configuration   | [Beans](docs\u002FFEATURES.md#beans)                       | Search Spring beans by name, type, and BootUI classification with server-side paging.                         |\n| Configuration   | [Conditions](docs\u002FFEATURES.md#conditions)             | Understand why auto-configuration classes matched, did not match, or were unconditional.                      |\n| Configuration   | [Mappings](docs\u002FFEATURES.md#mappings)                 | Review HTTP routes, handlers, methods, patterns, and produces\u002Fconsumes metadata.                              |\n| Services        | [Scheduled Tasks](docs\u002FFEATURES.md#scheduled-tasks)   | View registered scheduled tasks and their trigger metadata.                                                   |\n| Services        | [Data](docs\u002FFEATURES.md#data)                         | Explore Spring Data repositories, domain types, IDs, and query methods.                                       |\n| Services        | [Cache](docs\u002FFEATURES.md#cache)                       | Inspect Spring Cache managers, caches, metrics, annotations, and confirmed clear actions.                     |\n| Services        | [Security](docs\u002FFEATURES.md#security)                 | Inspect Spring Security filter chains and best-effort endpoint rule explanations.                             |\n| Services        | [AI Usage](docs\u002FFEATURES.md#ai-usage)                 | Summarize Spring AI chat conversations, token usage, latency, and model details from OpenTelemetry spans.     |\n| Diagnostics     | [Traces](docs\u002FFEATURES.md#traces)                     | Inspect local spans captured automatically by the starter, plus OTLP spans from cooperating services.         |\n| Diagnostics     | [Log Tail](docs\u002FFEATURES.md#log-tail)                 | Read recent application logs and stream new local log events from the running process.                        |\n| Diagnostics     | [HTTP Probe](docs\u002FFEATURES.md#http-probe)             | Send local-only HTTP requests to the app and inspect response status, headers, and body.                      |\n| Diagnostics     | [Pentesting](docs\u002FFEATURES.md#pentesting)             | Run explicit host-app OWASP hygiene checks without testing BootUI paths or sending exploit payloads.         |\n| Diagnostics     | [Vulnerabilities](docs\u002FFEATURES.md#vulnerabilities)   | Review dependency inventory and severity-ordered local OSV vulnerability scan results.                        |\n| Developer tools | [DevTools](docs\u002FFEATURES.md#devtools)                 | Check Spring Boot DevTools status, LiveReload availability, and restart controls.                             |\n| Developer tools | [Dev Services](docs\u002FFEATURES.md#dev-services)         | Inspect Docker Compose snapshots, safe Testcontainers beans, service connection metadata, and bounded logs.   |\n| Developer tools | [Copilot](docs\u002FFEATURES.md#copilot)                   | Dashboard sanitized local GitHub Copilot CLI sessions: activity trends, tool mix, MCP, hooks, skills, errors. |\n| Developer tools | [Claude Code](docs\u002FFEATURES.md#claude-code)           | Dashboard sanitized local Claude Code project logs: activity trends, tool mix, models, and failures.          |\n\nSome panels depend on optional Spring, Actuator, or development infrastructure. When data is unavailable, BootUI returns\nstable empty responses or shows an explanatory empty state. The sidebar also moves unavailable non-overview panels into\na collapsed Disabled \u002F unavailable group, and opening a dimmed panel shows the unavailable reason at the top of the page.\n\n## Setup\n\n### 1) Prerequisites\n\n- Java 25\n- Spring Boot 4.x application\n- Maven or your application's Maven Wrapper\n\n### 2) Add the starter dependency\n\n```xml\n\u003Cdependency>\n  \u003CgroupId>com.julien-dubois.bootui\u003C\u002FgroupId>\n  \u003CartifactId>bootui-spring-boot-starter\u003C\u002FartifactId>\n  \u003Cversion>0.1.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n### 3) Run your app in development mode\n\n```bash\n.\u002Fmvnw spring-boot:run -Dspring-boot.run.profiles=dev\n```\n\nBootUI also activates automatically when `spring-boot-devtools` is on the classpath. To force it on or off:\n\n```properties\nbootui.enabled=AUTO\nbootui.enabled=ON\nbootui.enabled=OFF\n```\n\n`prod` and `production` profiles disable BootUI unless `bootui.enabled=ON` is set. Invalid `bootui.enabled` values fail\nclosed and keep BootUI disabled.\n\n### 4) Open BootUI\n\nVisit: \u003Chttp:\u002F\u002Flocalhost:8080\u002Fbootui>\n\n## Configuration and safety\n\nBootUI is intended for local development only. By default it:\n\n- activates in `AUTO` mode only for `dev` \u002F `local` profiles or DevTools\n- rejects non-loopback requests\n- permits `\u002Fbootui\u002F**` through Spring Security when Spring Security is present, with a startup warning, so the local\n  console remains directly reachable while the loopback-only filter still applies\n- masks secret-like configuration values\n- exposes the local Actuator endpoints used by BootUI panels when BootUI is active\n- captures local application spans for the Traces panel when telemetry and the panel are enabled\n- disables itself for `prod` \u002F `production` profiles\n- stores runtime configuration overrides in `.bootui\u002Fapplication-bootui.properties`, not in your source config files\n\nEvery visible panel can be disabled with `bootui.panels.\u003Cpanel-id>.enabled=false`. Panels with mutating browser actions\ncan also be made read-only with `bootui.panels.\u003Cpanel-id>.read-only=true`, and `bootui.read-only=true` makes the whole\nBootUI application read-only. See the [property reference](docs\u002FPROPERTIES.md) for the full panel list.\n\nCommon properties:\n\n| Property                               | Default                                 | Description                                                                              |\n| -------------------------------------- | --------------------------------------- | ---------------------------------------------------------------------------------------- |\n| `bootui.enabled`                       | `AUTO`                                  | `AUTO`, `ON`, or `OFF`.                                                                  |\n| `bootui.enabled-profiles`              | `dev,local`                             | Profiles that activate BootUI in auto mode.                                              |\n| `bootui.disabled-profiles`             | `prod,production`                       | Profiles that disable BootUI unless forced on.                                           |\n| `bootui.allow-non-localhost`           | `false`                                 | Explicit opt-out of loopback-only protection.                                            |\n| `bootui.expose-values`                 | `MASKED`                                | `MASKED`, `METADATA_ONLY`, or `FULL`; `FULL` can disclose secrets and should stay local. |\n| `bootui.read-only`                     | `false`                                 | Disable all browser-triggered actions while keeping read-only panel data visible.         |\n| `bootui.overrides-file`                | `.bootui\u002Fapplication-bootui.properties` | Runtime override persistence file.                                                       |\n| `bootui.cache.clear-enabled`           | `true`                                  | Enables Spring Cache clear actions after explicit browser confirmation.                  |\n| `bootui.dev-services.restart-enabled`  | `false`                                 | Enables restart controls for bean-backed Testcontainers services. Disabled by default.   |\n| `bootui.dev-services.log-tail-bytes`   | `65536`                                 | Maximum bytes returned by one Dev Services log request.                                  |\n| `bootui.telemetry.enabled`             | `true`                                  | Enables local in-memory trace capture and the OTLP receiver used by Traces and AI Usage. |\n| `bootui.copilot.enabled`               | `AUTO`                                  | Enable the Copilot panel. `AUTO` activates when `~\u002F.copilot\u002Fsession-state\u002F` exists.      |\n| `bootui.copilot.session-state-dir`     | `~\u002F.copilot\u002Fsession-state`              | Directory scanned for Copilot CLI session directories and `events.jsonl` files.          |\n| `bootui.copilot.max-sessions`          | `100`                                   | Maximum recent sessions returned by the Copilot session explorer.                        |\n| `bootui.copilot.max-parsed-sessions`   | `100`                                   | Maximum recent Copilot session files parsed and retained in memory.                      |\n| `bootui.copilot.allow-raw-reveal`      | `true`                                  | When `false`, the opt-in raw-event reveal endpoint returns 404 even on loopback.         |\n| `bootui.claude-code.enabled`           | `AUTO`                                  | Enable the Claude Code panel. `AUTO` activates when `~\u002F.claude\u002Fprojects\u002F` exists.        |\n| `bootui.claude-code.session-state-dir` | `~\u002F.claude\u002Fprojects`                    | Directory scanned for Claude Code project JSONL logs.                                    |\n| `bootui.claude-code.max-sessions`      | `100`                                   | Maximum recent sessions returned by the Claude Code session explorer.                    |\n| `bootui.claude-code.max-parsed-sessions` | `100`                                 | Maximum recent Claude Code JSONL files parsed and retained in memory.                    |\n| `bootui.claude-code.allow-raw-reveal`  | `false`                                 | Explicitly enable raw JSONL reveal; raw Claude Code logs can include prompts and output. |\n\n## Runtime overrides\n\nThe Configuration panel can create, update, and delete local runtime overrides. Overrides are stored in\n`.bootui\u002Fapplication-bootui.properties` by default, loaded at high precedence on the next startup, and never modify your\napplication source configuration. Already-bound `@ConfigurationProperties` beans may keep their previous value until the\napp restarts; BootUI returns that warning with every override mutation.\n\n## Troubleshooting\n\n| Symptom                      | Check                                                                                                                           |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |\n| `\u002Fbootui` returns 404        | Use the `dev` or `local` profile, add DevTools, or set `bootui.enabled=ON`.                                                     |\n| BootUI is disabled in `prod` | This is intentional; only `bootui.enabled=ON` can force activation with a disabled profile.                                     |\n| Browser is rejected          | BootUI accepts loopback callers by default. Use `bootui.allow-non-localhost=true` only for a trusted local network.             |\n| Spring Security blocks UI    | BootUI auto-registers a `\u002Fbootui\u002F**` permit-all chain when Spring Security is active; check for a custom higher-priority chain. |\n| A panel is empty             | Enable the relevant Actuator endpoint or optional Spring module; BootUI degrades to stable empty DTOs when data is unavailable. |\n| Startup Timeline is empty    | Configure `BufferingApplicationStartup` in the host app.                                                                        |\n| Secrets are hidden           | Default exposure is `MASKED`; use `METADATA_ONLY` to hide all values or `FULL` only in trusted local sessions.                  |\n\n## Repository modules\n\n- `bootui-spring-boot-starter`: dependency to add to your app\n- `bootui-autoconfigure`: Spring Boot auto-configuration\n- `bootui-ui`: Vue 3 frontend packaged into the starter\n- `bootui-core`: shared DTOs and core helpers\n- `bootui-sample-app`: demo and integration sample app\n\n## More docs\n\n- [Feature details](docs\u002FFEATURES.md): panel-by-panel guide with screenshots\n- [Property reference](docs\u002FPROPERTIES.md): global, per-panel, and action-gating configuration properties\n- [Sample app walkthrough](bootui-sample-app\u002FREADME.md): the demo app behind the screenshots and Playwright suite\n- [CHANGELOG.md](CHANGELOG.md): release notes\n- [CONTRIBUTING.md](CONTRIBUTING.md): contributor workflow, build, test, and publishing instructions\n- [SECURITY.md](SECURITY.md): threat model and security policy\n- [docs\u002FSPECIFICATION.md](docs\u002FSPECIFICATION.md): full product and technical specification\n- [docs\u002FPLAN.md](docs\u002FPLAN.md): implementation roadmap\n\n## License\n\nLicensed under the [Apache License, Version 2.0](LICENSE).\n","BootUI 是一个为 Spring Boot 4 应用程序添加嵌入式本地开发者控制台的启动器。其核心功能包括提供运行时概览、健康状态检查、性能指标监控、内存管理、启动时间线分析以及配置和日志管理等功能，通过内置的 Web 界面帮助开发者更好地理解和调试应用。该项目使用 Java 开发，并与 Spring Boot 4.x 兼容，特别适合需要在开发过程中对应用程序进行深入监测和调优的场景。由于所有前端资源都打包在启动器内，因此无需额外安装 Node.js 或 npm 即可直接使用。",2,"2026-06-11 04:05:57","CREATED_QUERY"]