<!-- SPDX-FileCopyrightText: 2026 Apoorv Garg <apoorvgarg.21@gmail.com> -->
<!-- SPDX-FileCopyrightText: 2026 Hari Srinivasan <harisrini21@gmail.com> -->
<!-- SPDX-FileCopyrightText: 2026 Naraen Rammoorthi <naraen13@gmail.com> -->
<!-- SPDX-FileCopyrightText: 2026 Shaan Narendran <shaannaren06@gmail.com> -->
<!-- SPDX-FileCopyrightText: 2026 SrihariLegend <sriharilegend23@gmail.com> -->
<!-- SPDX-FileCopyrightText: 2026 DoomsCoder <vedantkakade05@gmail.com> -->
<!-- SPDX-License-Identifier: AGPL-3.0-only -->

# Changelog

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

## [1.2.0] - 2026-05-26

### Added

- add co-authoring for agents and components ([8c79024](https://github.com/BlazeUp-AI/Observal/commit/8c7902498b1ddc4c83a55a5d4c0448f33df752f3))
- add registry_direct delivery mode for inline skill submission (**skills**) ([42716a8](https://github.com/BlazeUp-AI/Observal/commit/42716a89e528167ae350d997da6064be98dc938b))
- attribute pi sessions to the pulled agent (**pi**) ([ff09004](https://github.com/BlazeUp-AI/Observal/commit/ff09004f7ab2f99e56447dfd7c25db5eb3bd99de))
- insights report page with facets charts and personal sections (**web**) ([ef18933](https://github.com/BlazeUp-AI/Observal/commit/ef18933856aff22a0f9550261a0c31ae855fff43))
- V5 pipeline with deterministic extraction and personal narratives (**insights**) ([8ad53d4](https://github.com/BlazeUp-AI/Observal/commit/8ad53d4e3373a9d16d3780e4ac2f4b3322f5e31f))

### Changed

- remove agent visibility and team access features [**BREAKING**] ([a35c629](https://github.com/BlazeUp-AI/Observal/commit/a35c6291130782194ab69dd6a4182bbbdd6091e8))

### Documentation

- add prompt CLI documentation (#1051) ([6f99e7d](https://github.com/BlazeUp-AI/Observal/commit/6f99e7df5e4e6317e2e21102a36d090347d3b8c2))
- rewrite README with updated screenshots and current feature set ([6f156d8](https://github.com/BlazeUp-AI/Observal/commit/6f156d840d310a588ca8323d36e3b968072ad8a1))

### Fixed

- bump redis-py to >=5.0 for aclose() support (**server**) ([d48b6ff](https://github.com/BlazeUp-AI/Observal/commit/d48b6ffe72a9f18a1368a6e835fd77e18f107895))
- regenerate observal-server/uv.lock in release script (**build**) ([9d44f3b](https://github.com/BlazeUp-AI/Observal/commit/9d44f3bd6a09299b7243046a5fb39162b4a4cc0d))
- add CIDR support and default trusted proxies for Docker stack ([7003cdf](https://github.com/BlazeUp-AI/Observal/commit/7003cdf31d88e5bf159fdec958ac6948af9d6e1a))
- prevent rate-limit bypass via X-Forwarded-For spoofing (**security**) ([4dd8288](https://github.com/BlazeUp-AI/Observal/commit/4dd82888fa8423e87632792c085ae8cfc587966d))

### Other

- remove legacy pre-JSONL modules (**insights**) [**BREAKING**] ([3c65d21](https://github.com/BlazeUp-AI/Observal/commit/3c65d2143ec2403f10a5a81b86fb2aa2bcf726bb))
## [1.1.1] - 2026-05-25

### Fixed

- move SPDX comments inside YAML frontmatter for all skills ([812e5db](https://github.com/BlazeUp-AI/Observal/commit/812e5db1d8d050ef8725cd1153ac1be31260b728))
## [1.1.0] - 2026-05-25

### Added

- add observal-pi package for session telemetry (**extension**) ([5debdf8](https://github.com/BlazeUp-AI/Observal/commit/5debdf81c2e1d3edbc088169515535a5dff3154b))
- add Pi CLI adapter, doctor, and scan support (**cli**) ([f80042a](https://github.com/BlazeUp-AI/Observal/commit/f80042ac911acb69ae06d5d4a5e2436600006046))
- add Pi to IDE_REGISTRY with server adapter (**registry**) ([ba0f39d](https://github.com/BlazeUp-AI/Observal/commit/ba0f39ddbcb71ba9437565b22eae69431676a253))
- add Pi session JSONL classifier and read-path parser (**parser**) ([c071f97](https://github.com/BlazeUp-AI/Observal/commit/c071f976c64f84031e10e24a4242e67d2317f82b))
- expand bundled Observal skill to cover full CLI surface (**skill**) ([b62c562](https://github.com/BlazeUp-AI/Observal/commit/b62c562fcd8c9aa4657c1fbb9c8656a0438fc310))
- redesign audit log page with parameterized search (**web**) ([8376595](https://github.com/BlazeUp-AI/Observal/commit/8376595931f4cf95005541db7cac0ca213d422c7))
- update ee/ audit route with HIPAA fields and export formats (**audit**) ([2edc1b3](https://github.com/BlazeUp-AI/Observal/commit/2edc1b33ead83deac56eb3f7c5ca52a9b232f937))
- add CLI audit emission and server endpoint (**audit**) ([97cbdc0](https://github.com/BlazeUp-AI/Observal/commit/97cbdc006c9a2ac70b3f9b458064b24b3e40ea5f))
- implement HIPAA loguru audit middleware (**audit**) ([cf32511](https://github.com/BlazeUp-AI/Observal/commit/cf32511548ef3aaf12e7e9c27b5a3ba9cbef7ad5))
- version enforcement - hard block on CLI/server mismatch & auto-update ([be2d475](https://github.com/BlazeUp-AI/Observal/commit/be2d475511e201733bc426db6fcdceba8df28462))

### CI

- add npm publish step for observal-pi to release workflow ([52d2dbc](https://github.com/BlazeUp-AI/Observal/commit/52d2dbc80d9dc077909419b9c4311dfce245b377))

### Changed

- remove legacy event-bus audit system (**audit**) ([264a303](https://github.com/BlazeUp-AI/Observal/commit/264a30337cad9c1e6e52c53fb0d0bab80b527e03))
- gate pages by specific licensed feature, not blanket boolean (**web**) ([9baa2b6](https://github.com/BlazeUp-AI/Observal/commit/9baa2b64568d1fa638d551e84f35706d1ac50ac6))
- replace deployment_mode API field with licensed boolean ([8cc8eee](https://github.com/BlazeUp-AI/Observal/commit/8cc8eee9986a7f82284d4cf2ed6a42b606a8e354))
- remove DEPLOYMENT_MODE, derive enterprise from license key ([5def2f6](https://github.com/BlazeUp-AI/Observal/commit/5def2f67beb4703c105537d8bee4e02727ee9926))

### Documentation

- update all AGENTS.md files to reflect current codebase state ([6d47495](https://github.com/BlazeUp-AI/Observal/commit/6d474954da81e28b0ccb072f4b55c35308452e2e))

### Fixed

- remove invalid OpenCode plugin import (**services**) ([034ffca](https://github.com/BlazeUp-AI/Observal/commit/034ffca6fbc6e4526d980d2b517d0e5ba99e974c))
- improve resilience of pi telemetry extension (**extension**) ([7797dfc](https://github.com/BlazeUp-AI/Observal/commit/7797dfc0dec705822a11c5509fa3b1b8cb2cc315))
- gate settings sections behind license features (**web**) ([e5bfb2b](https://github.com/BlazeUp-AI/Observal/commit/e5bfb2bad11ff6db4b34698cb35ed882528eb630))
- use local fonts, serve IDE list from server, fix builder UI (**web**) ([0308654](https://github.com/BlazeUp-AI/Observal/commit/03086540f709b8c091887bc8734ebb9317c6d5dd))
- use prompt_toolkit for arrow-key-aware input in login prompts (**auth**) ([ff201ec](https://github.com/BlazeUp-AI/Observal/commit/ff201ec5ca2656638bc914fdf5ec8d57bea1ba0c))
- resolve names in ops rate, add auth to GraphQL queries (**cli**) ([7d6c120](https://github.com/BlazeUp-AI/Observal/commit/7d6c120e2ea281e2f0ec20637727861d47747449))
- move SPDX header below frontmatter for Claude Code parsing (**skill**) ([32fb1d6](https://github.com/BlazeUp-AI/Observal/commit/32fb1d6667a0a872cf92063b2dcc5c629f1df72a))
- address CI failures from DEPLOYMENT_MODE removal ([07f4bb1](https://github.com/BlazeUp-AI/Observal/commit/07f4bb1fa3b3782c72fbe10423e83c684921ba34))
- remove DEPLOYMENT_MODE references from CLI messages (**cli**) ([c6df484](https://github.com/BlazeUp-AI/Observal/commit/c6df484b35a43e02c6f203a68d6bf73dcbd6edba))
- add --yes flag and fix hint messages (**doctor**) ([a62f36f](https://github.com/BlazeUp-AI/Observal/commit/a62f36f19267cd363096fb3028e581b6649c7514))

### Other

- update github artifact actions (major) (#1185) (**deps**) ([eb46027](https://github.com/BlazeUp-AI/Observal/commit/eb46027ff1d8fe96a4bac8c92dae37d96992b7cd))
- update dependency ruff to v0.15.14 (#1182) (**deps**) ([87cbce4](https://github.com/BlazeUp-AI/Observal/commit/87cbce473db48a0583dc90b6d78dcee67e1385ca))
- update docker images (minor/patch) (#1183) (**deps**) ([5b4c472](https://github.com/BlazeUp-AI/Observal/commit/5b4c472b968c884c0a7f295e64cf91bde639d57b))
- add .clabot to allowlist renovate and dependabot ([2cc8b24](https://github.com/BlazeUp-AI/Observal/commit/2cc8b240b58c698f3ae1be9fe61b07938aa34b42))

### Testing

- add prompt command tests (#986) (**cmd**) ([ac8f458](https://github.com/BlazeUp-AI/Observal/commit/ac8f458ed16d17141c83ff279d22629be29a5f7a))
- add Pi to frontend features and unit tests ([274b3c2](https://github.com/BlazeUp-AI/Observal/commit/274b3c2eac9aa8cda27a93c48553d7c368490f5d))
- add 32 tests for HIPAA audit system (**audit**) ([4100979](https://github.com/BlazeUp-AI/Observal/commit/410097934358cd0dcd17a9b1a45c0a0bb5354b15))
- add Playwright tests for component detail and CRUD (#934) (**e2e**) ([41d4451](https://github.com/BlazeUp-AI/Observal/commit/41d44518987ef7f72cefddb10ca81e01a1bdd357))
- add Playwright tests for auth login error and logout flow (#927) (**e2e**) ([2dd8a17](https://github.com/BlazeUp-AI/Observal/commit/2dd8a1766708f5710b784346465026369a52aee1))

### Build

- sync pi-extension version in release script ([5272303](https://github.com/BlazeUp-AI/Observal/commit/52723039dca6f86eb21ea856580864cca69ebdef))
## [1.0.0] - 2026-05-23

### Added

- instrument uv.lock (**optic**) ([28dffa7](https://github.com/BlazeUp-AI/Observal/commit/28dffa70cc8b60d3f850a35da5638276f662e135))
- instrument tests.test_optic (**optic**) ([c30fd8e](https://github.com/BlazeUp-AI/Observal/commit/c30fd8e4fc4dbf3ade01840b3acfdd16c9fb7a4f))
- instrument ..pyproject.toml (**optic**) ([b230772](https://github.com/BlazeUp-AI/Observal/commit/b2307721751fcd3cf7223c6b024eefd62b1fd180))
- instrument observal-server.worker (**optic**) ([ccdf746](https://github.com/BlazeUp-AI/Observal/commit/ccdf74612c8e39188b9dac5e60b0b242fe045465))
- instrument observal-server.uv.lock (**optic**) ([3eb96f6](https://github.com/BlazeUp-AI/Observal/commit/3eb96f6b0a9043adb51a8c66a0b27d6f25e0e7bf))
- instrument services.webhook_signer (**optic**) ([75af8f7](https://github.com/BlazeUp-AI/Observal/commit/75af8f7ff6b76af6c7fac598ece2a9b24508fd64))
- instrument services.webhook_delivery (**optic**) ([83467f8](https://github.com/BlazeUp-AI/Observal/commit/83467f8c810bad41f464fb996c4cc2155be11fab))
- instrument services.versioning (**optic**) ([6fe21cb](https://github.com/BlazeUp-AI/Observal/commit/6fe21cbf215f6a7d6a06e7a0c73bdb43767fde4a))
- instrument services.username_generator (**optic**) ([4106f9e](https://github.com/BlazeUp-AI/Observal/commit/4106f9eb02695d2169ba88fc91ea5104adc10dd2))
- instrument services.strategic_insights (**optic**) ([c20ccef](https://github.com/BlazeUp-AI/Observal/commit/c20cceff6f24d48d7d1c3384a0db3ef912912f00))
- instrument services.ssrf_guard (**optic**) ([4efdec3](https://github.com/BlazeUp-AI/Observal/commit/4efdec3f2c00d3a74acc37ed51c20bf311bfe566))
- instrument services.skill_validator (**optic**) ([5e44909](https://github.com/BlazeUp-AI/Observal/commit/5e4490980e3fdb1b952015adc597cac90dde1049))
- instrument services.skill_config_generator (**optic**) ([a528c8a](https://github.com/BlazeUp-AI/Observal/commit/a528c8acbd3f307a40367e01334ab2eb8f7b5e4e))
- instrument services.session_ingest (**optic**) ([6579efc](https://github.com/BlazeUp-AI/Observal/commit/6579efc79eafe7d54f4282ece3f3049906c8a77c))
- instrument services.security_events (**optic**) ([61f8745](https://github.com/BlazeUp-AI/Observal/commit/61f8745ab7d6afd6c8b2096d662244a88815968f))
- instrument services.secrets_redactor (**optic**) ([4885150](https://github.com/BlazeUp-AI/Observal/commit/4885150cc8073bdce9a3a6f63403b341e3c2d2b4))
- instrument services.sandbox_validator (**optic**) ([db99915](https://github.com/BlazeUp-AI/Observal/commit/db999152e20ffb1348578f35507ff28ab4707d74))
- instrument services.sandbox_config_generator (**optic**) ([056d3e2](https://github.com/BlazeUp-AI/Observal/commit/056d3e21bd7e9f1704b4d40f4798cf7f445f2b83))
- instrument services.retention (**optic**) ([a7661a5](https://github.com/BlazeUp-AI/Observal/commit/a7661a54bf520d693ea07291157bfb9d1209a6ae))
- instrument services.registry_telemetry (**optic**) ([8a27417](https://github.com/BlazeUp-AI/Observal/commit/8a27417834ca3898677ba5e563f3d9688ab75b2d))
- instrument services.optic (**optic**) ([e86de6b](https://github.com/BlazeUp-AI/Observal/commit/e86de6b17507c0be9623b259b86389a5ce66b8c4))
- instrument services.model_resolver (**optic**) ([e0ea069](https://github.com/BlazeUp-AI/Observal/commit/e0ea069ffa6f2a454b06da421652c70552cfb983))
- instrument services.model_display (**optic**) ([ce1a920](https://github.com/BlazeUp-AI/Observal/commit/ce1a920987a15b4ed7511bf5dec31799ad09f5bd))
- instrument services.model_catalog (**optic**) ([bcadf33](https://github.com/BlazeUp-AI/Observal/commit/bcadf33ae1ac8399710b383b4391bc172730e0ea))
- instrument services.mcp_validator (**optic**) ([257eeb0](https://github.com/BlazeUp-AI/Observal/commit/257eeb0e37c7dec6dddcd01fa21a3004d4218b01))
- instrument services.log_buffer (**optic**) ([5947f71](https://github.com/BlazeUp-AI/Observal/commit/5947f7157d8a2b423ca812f72c6f6ba16fb610e2))
- instrument services.jwt_service (**optic**) ([7069b63](https://github.com/BlazeUp-AI/Observal/commit/7069b6375dc420866119e9f24e66c1324bc9410e))
- instrument services.ide.opencode (**optic**) ([d34898e](https://github.com/BlazeUp-AI/Observal/commit/d34898ee59dbf40c05c972b357932314f12a9d97))
- instrument services.ide.kiro (**optic**) ([612792d](https://github.com/BlazeUp-AI/Observal/commit/612792d72af90932e2934526670c06405acccb62))
- instrument services.ide.helpers (**optic**) ([e6ac8b3](https://github.com/BlazeUp-AI/Observal/commit/e6ac8b3796ac2fe6ad3d7d49854a7233ed7339dc))
- instrument services.ide.gemini_cli (**optic**) ([b2b9d17](https://github.com/BlazeUp-AI/Observal/commit/b2b9d177732a11bcc51d23747d4554428cc7465c))
- instrument services.ide.cursor (**optic**) ([512d267](https://github.com/BlazeUp-AI/Observal/commit/512d267e3e2cc5033b33478e27b781590ea4b1e0))
- instrument services.ide.copilot (**optic**) ([ff776df](https://github.com/BlazeUp-AI/Observal/commit/ff776df7e967bf94e84527a53c44de9710cab17e))
- instrument services.ide.copilot_cli (**optic**) ([a445302](https://github.com/BlazeUp-AI/Observal/commit/a44530277147f38f3a9ac1ddcd3a4515700c320c))
- instrument services.ide.codex (**optic**) ([b1331c2](https://github.com/BlazeUp-AI/Observal/commit/b1331c2c9f170a873c3106161d45a0d9a2e6fe12))
- instrument services.ide.claude_code (**optic**) ([d6562ba](https://github.com/BlazeUp-AI/Observal/commit/d6562baeec96f8e62a933ed19b00f3c8f49673de))
- instrument services.ide_feature_inference (**optic**) ([97f5b93](https://github.com/BlazeUp-AI/Observal/commit/97f5b93b2944f7e53f42e778adbe37784d0a1ac1))
- instrument services.hook_install_generator (**optic**) ([9719200](https://github.com/BlazeUp-AI/Observal/commit/9719200a2b32f1753a21bbd7dda7a6024e434243))
- instrument services.hook_config_generator (**optic**) ([498d4cc](https://github.com/BlazeUp-AI/Observal/commit/498d4ccedbffc070112ce9cafb91f96ebdb02257))
- instrument services.git_mirror_service (**optic**) ([ab0cab2](https://github.com/BlazeUp-AI/Observal/commit/ab0cab2a0f1982bf229989496f5bf7410730dbf3))
- instrument services.events (**optic**) ([e15fc12](https://github.com/BlazeUp-AI/Observal/commit/e15fc12693cde0eb26d0a6a64e6c95a33bc5600c))
- instrument services.editing_lock (**optic**) ([6c44f88](https://github.com/BlazeUp-AI/Observal/commit/6c44f889b5c6143aa29d57ee0aff1bda7c0f32ed))
- instrument services.dynamic_settings (**optic**) ([be3ddf8](https://github.com/BlazeUp-AI/Observal/commit/be3ddf85a32dea5f261f2ab565ccd4b642a262ae))
- instrument services.download_tracker (**optic**) ([9812af8](https://github.com/BlazeUp-AI/Observal/commit/9812af846626d7aac4277c9bf196b1e5480a3c35))
- instrument services.demo_accounts (**optic**) ([e3139de](https://github.com/BlazeUp-AI/Observal/commit/e3139de3f248085c014a88afc7727f0f0bb3cabd))
- instrument services.crypto (**optic**) ([5352c64](https://github.com/BlazeUp-AI/Observal/commit/5352c6411a5d2974be3379e26b6b320459dc28f6))
- instrument services.config_generator (**optic**) ([3cfd429](https://github.com/BlazeUp-AI/Observal/commit/3cfd4298de0e7dfb8bd2de56d88289308d0cf45c))
- instrument services.component_version_extras (**optic**) ([0ea4a0c](https://github.com/BlazeUp-AI/Observal/commit/0ea4a0cf578a86e09235123e6d03240ae2c09f9c))
- instrument services.clickhouse.schema (**optic**) ([1eab815](https://github.com/BlazeUp-AI/Observal/commit/1eab815df434656ddf5f0824c0e5c2591eed2d3e))
- instrument services.clickhouse.query (**optic**) ([212192f](https://github.com/BlazeUp-AI/Observal/commit/212192f87f4f6d5b680e81ecb7d442c4580a831f))
- instrument services.clickhouse.insert (**optic**) ([74f8ea1](https://github.com/BlazeUp-AI/Observal/commit/74f8ea1e32bf42c87c4a4da26a57bdce4a01cdff))
- instrument services.clickhouse.client (**optic**) ([d674a96](https://github.com/BlazeUp-AI/Observal/commit/d674a96d67aba1f0231f8f2eee4e54c38d50f9b0))
- instrument services.cache (**optic**) ([6d8c38f](https://github.com/BlazeUp-AI/Observal/commit/6d8c38f7c79e2af3ad0fc48d2032b3ae58ecf8aa))
- instrument services.anti_gaming (**optic**) ([d17709d](https://github.com/BlazeUp-AI/Observal/commit/d17709d9e5610ff271486dc5975702d1bb64f263))
- instrument services.alert_evaluator (**optic**) ([a6781c9](https://github.com/BlazeUp-AI/Observal/commit/a6781c9584d57f6b483366f2fdd3059ec976f674))
- instrument services.agent_snapshot (**optic**) ([23f0a04](https://github.com/BlazeUp-AI/Observal/commit/23f0a045eda14f7acf754fe6db061dc07352a64c))
- instrument services.agent_resolver (**optic**) ([c1ddbd0](https://github.com/BlazeUp-AI/Observal/commit/c1ddbd0093bc9db4bd608725e67dc86c998fe607))
- instrument services.agent_registry_cache (**optic**) ([c079360](https://github.com/BlazeUp-AI/Observal/commit/c079360dbe6d87cbff0f6495eb02618c8369239a))
- instrument services.agent_lock_file (**optic**) ([57ade8f](https://github.com/BlazeUp-AI/Observal/commit/57ade8f8b4243538818327f2698591c93060b19d))
- instrument services.agent_builder (**optic**) ([cc5cf8c](https://github.com/BlazeUp-AI/Observal/commit/cc5cf8c7ac4e6555e432595da415f4d3d00b0167))
- instrument observal-server.pyproject.toml (**optic**) ([d7d098f](https://github.com/BlazeUp-AI/Observal/commit/d7d098f9d5f87d90fc0eac3d5b8b3689375a2658))
- instrument jobs.maintenance (**optic**) ([bfed99e](https://github.com/BlazeUp-AI/Observal/commit/bfed99e5262a0203c3cf5d74ca70ff5fd3bacdff))
- instrument jobs.catalog (**optic**) ([dc97b30](https://github.com/BlazeUp-AI/Observal/commit/dc97b3048106d09b1f4b579c36fe8fca16300d97))
- instrument api.routes.telemetry (**optic**) ([77ba7bb](https://github.com/BlazeUp-AI/Observal/commit/77ba7bbc1d6138ffe903bbebc44dc1056e638924))
- instrument api.routes.support (**optic**) ([31d4d5d](https://github.com/BlazeUp-AI/Observal/commit/31d4d5dbaca94d25ec252cb3af1b7a80000127de))
- instrument api.routes.skill (**optic**) ([3036f8a](https://github.com/BlazeUp-AI/Observal/commit/3036f8ad49b51ef84f43d7bd4f1edae7d2b61959))
- instrument api.routes.sessions (**optic**) ([0e0c120](https://github.com/BlazeUp-AI/Observal/commit/0e0c120037eb28b9847965aba743450934badecf))
- instrument api.routes.sandbox (**optic**) ([9efaf4d](https://github.com/BlazeUp-AI/Observal/commit/9efaf4dd60dd9b07c6509f01302c1974e8c87121))
- instrument api.routes.review (**optic**) ([eaa25f8](https://github.com/BlazeUp-AI/Observal/commit/eaa25f885ac0d806bfa3100b72394fe5d8fa5253))
- instrument api.routes.registry_models (**optic**) ([b28ffda](https://github.com/BlazeUp-AI/Observal/commit/b28ffda59d9ce4b7a41509392eddae3db5f720eb))
- instrument api.routes.reconcile (**optic**) ([fb97f8b](https://github.com/BlazeUp-AI/Observal/commit/fb97f8b9dc6fa3bf8301751f5e959b3709263eda))
- instrument api.routes.prompt (**optic**) ([6ace51f](https://github.com/BlazeUp-AI/Observal/commit/6ace51f231c3cfe400d675fbb54f6e2c89f78aaf))
- instrument api.routes.preview (**optic**) ([acf3506](https://github.com/BlazeUp-AI/Observal/commit/acf3506de2439ea0c27d64facb9de97d1ed26780))
- instrument api.routes.mcp (**optic**) ([28a0211](https://github.com/BlazeUp-AI/Observal/commit/28a0211c950dd1c19cf52730a7e17ef1d9a9630c))
- instrument api.routes.jwks (**optic**) ([5a2d119](https://github.com/BlazeUp-AI/Observal/commit/5a2d1198ed676db2a0826cdb6ad61e99a3e80f23))
- instrument api.routes.insights (**optic**) ([086602b](https://github.com/BlazeUp-AI/Observal/commit/086602b7984271ad86008a1ea2ef85fae0eef875))
- instrument api.routes.ingest (**optic**) ([c3bd8d6](https://github.com/BlazeUp-AI/Observal/commit/c3bd8d6c7f0ef941466083fdc8952ab8b391a56c))
- instrument api.routes.hook (**optic**) ([e44aa31](https://github.com/BlazeUp-AI/Observal/commit/e44aa31c929cd40cbead694cdff9ee2654ad9e72))
- instrument api.routes.feedback (**optic**) ([9d48a2e](https://github.com/BlazeUp-AI/Observal/commit/9d48a2e95ac6f4ce9f4aac298abc1ac9b1f48d01))
- instrument api.routes.device_auth (**optic**) ([bf3b0d6](https://github.com/BlazeUp-AI/Observal/commit/bf3b0d6f67d5eea18ea208314c43ceee4732ddfb))
- instrument api.routes.dashboard (**optic**) ([57e7a4b](https://github.com/BlazeUp-AI/Observal/commit/57e7a4bb4fb3f395c5f5923e13c7a99fa653306f))
- instrument api.routes.config (**optic**) ([3ebf19d](https://github.com/BlazeUp-AI/Observal/commit/3ebf19d07fcbc7e4d700233d9f03da052a413723))
- instrument api.routes.component_versions (**optic**) ([5215cd6](https://github.com/BlazeUp-AI/Observal/commit/5215cd6e749ef8afac48b2d530380b38562717a2))
- instrument api.routes.component_source (**optic**) ([d5f6351](https://github.com/BlazeUp-AI/Observal/commit/d5f635149c8bd62e3350dbce1040286c0eb4a865))
- instrument api.routes.bulk (**optic**) ([59a637b](https://github.com/BlazeUp-AI/Observal/commit/59a637b46f2650c7f5f91dc0ab1369f3b71a1ac8))
- instrument api.routes.auth (**optic**) ([20e8fe0](https://github.com/BlazeUp-AI/Observal/commit/20e8fe03bb5768f930cf0b0ca60756aefcc20a13))
- instrument api.routes.alert (**optic**) ([4c9af4e](https://github.com/BlazeUp-AI/Observal/commit/4c9af4ea51f91f90f69893fbe7ffefd9f94b14b0))
- instrument api.routes.agent.install (**optic**) ([9ba4440](https://github.com/BlazeUp-AI/Observal/commit/9ba4440a2e54fa5450a0d805cab65f86dfa0a05f))
- instrument api.routes.agent.draft (**optic**) ([d691b1a](https://github.com/BlazeUp-AI/Observal/commit/d691b1ac4aa291374bb684c53669e4a63a39a973))
- instrument api.routes.agent.crud (**optic**) ([6fa0f2f](https://github.com/BlazeUp-AI/Observal/commit/6fa0f2f499cc8e6d11fffe2e04337b2a805e1f7e))
- instrument api.routes.agent_versions (**optic**) ([ac5185f](https://github.com/BlazeUp-AI/Observal/commit/ac5185f73e0340d97e5524195e69df7da76523d6))
- instrument api.routes.admin.users (**optic**) ([650f309](https://github.com/BlazeUp-AI/Observal/commit/650f309b57628d7528bf1a54022b44720657216d))
- instrument api.routes.admin.retention (**optic**) ([7e05da4](https://github.com/BlazeUp-AI/Observal/commit/7e05da4c8c9bcfd547d4a5bff209a9a5b1c59685))
- instrument api.routes.admin.org (**optic**) ([f38e5f7](https://github.com/BlazeUp-AI/Observal/commit/f38e5f7afd4c10bd133203cf9c20a6aacba04bac))
- instrument api.routes.admin.enterprise_settings (**optic**) ([10a85a5](https://github.com/BlazeUp-AI/Observal/commit/10a85a578676daf1ffdd70238b6bbdd6969d720d))
- instrument observal_cli.telemetry_buffer (**optic**) ([b989cf2](https://github.com/BlazeUp-AI/Observal/commit/b989cf2795f6c33c98a524b0156f7baf2bccdacb))
- instrument observal_cli.shim (**optic**) ([69e06c1](https://github.com/BlazeUp-AI/Observal/commit/69e06c1e48c0fa7381445702b78e075e7107cbfd))
- instrument observal_cli.settings_reconciler (**optic**) ([d4fb86e](https://github.com/BlazeUp-AI/Observal/commit/d4fb86eba0aedd21fa6c5155cffe5fddcf798ae0))
- instrument server.orchestrator (**optic**) ([6f1fcbf](https://github.com/BlazeUp-AI/Observal/commit/6f1fcbf7eaa4d0c6e6126be50b5dc428bc156043))
- instrument server.deps (**optic**) ([bdbf0ab](https://github.com/BlazeUp-AI/Observal/commit/bdbf0ab62d6510d7c8655babc8fbe3447dc6a55f))
- instrument server.constants (**optic**) ([7accfa5](https://github.com/BlazeUp-AI/Observal/commit/7accfa57daf9314f371ceb58b280feac82b5851f))
- instrument server.config_gen (**optic**) ([d34693e](https://github.com/BlazeUp-AI/Observal/commit/d34693e8fbacf302adf1efcde0471f181a88650a))
- instrument server.__init__ (**optic**) ([15ac6ee](https://github.com/BlazeUp-AI/Observal/commit/15ac6eedb2e62b4b42b6d28e8c96380301ba33c7))
- instrument observal_cli.requirements.txt (**optic**) ([c19aab9](https://github.com/BlazeUp-AI/Observal/commit/c19aab912228a27cd9e89a09127bcfe6a155fe04))
- instrument observal_cli.proxy (**optic**) ([de35a58](https://github.com/BlazeUp-AI/Observal/commit/de35a581e89991029f98509390c26ca19a9ed53d))
- instrument observal_cli.optic (**optic**) ([dfe443b](https://github.com/BlazeUp-AI/Observal/commit/dfe443b7c53511fe4cc549fe9dae8eb2ebc714de))
- instrument observal_cli.main (**optic**) ([d8821c7](https://github.com/BlazeUp-AI/Observal/commit/d8821c725097182f47e055eb7fb04bfb0efbc4bc))
- instrument observal_cli.cmd_uninstall (**optic**) ([90c02f6](https://github.com/BlazeUp-AI/Observal/commit/90c02f69dff0397454d63c4be2664caaf9f6f3eb))
- instrument observal_cli.cmd_tail_flush (**optic**) ([cc6858c](https://github.com/BlazeUp-AI/Observal/commit/cc6858c5d002503f6d2dca093457eb9fd8be6f23))
- instrument observal_cli.cmd_support (**optic**) ([75e9381](https://github.com/BlazeUp-AI/Observal/commit/75e938112ade5db1b34fd95fdc1ceb1461fc239f))
- instrument observal_cli.cmd_skill (**optic**) ([e15fc62](https://github.com/BlazeUp-AI/Observal/commit/e15fc62654f357a1426e3bc4a4476575a7406b35))
- instrument observal_cli.cmd_server (**optic**) ([19249a7](https://github.com/BlazeUp-AI/Observal/commit/19249a796e82e58de9d9505748599f167efd3477))
- instrument observal_cli.cmd_scan (**optic**) ([99830eb](https://github.com/BlazeUp-AI/Observal/commit/99830ebdd4abc2bdaa03529f06fae0796b25d5bf))
- instrument observal_cli.cmd_sandbox (**optic**) ([73e59f5](https://github.com/BlazeUp-AI/Observal/commit/73e59f5310d490fb1434a5c9a384e88bd2de93e9))
- instrument observal_cli.cmd_reconcile (**optic**) ([3fbf817](https://github.com/BlazeUp-AI/Observal/commit/3fbf8171a3a5f40ac817a89289eef0e88929235f))
- instrument observal_cli.cmd_pull (**optic**) ([ae4117e](https://github.com/BlazeUp-AI/Observal/commit/ae4117e67780aa5ad559673402eb9d99b60aa83b))
- instrument observal_cli.cmd_prompt (**optic**) ([bb82c98](https://github.com/BlazeUp-AI/Observal/commit/bb82c9835135b2af8de45e80fd18aa445c066059))
- instrument observal_cli.cmd_profile (**optic**) ([dae194c](https://github.com/BlazeUp-AI/Observal/commit/dae194ca8b5f0479d1cfef3fe823e4d3c35f651c))
- instrument observal_cli.cmd_ops (**optic**) ([5314d48](https://github.com/BlazeUp-AI/Observal/commit/5314d48f8c2d48d484dc4709c9008a0239600df1))
- instrument observal_cli.cmd_models (**optic**) ([5c4b36a](https://github.com/BlazeUp-AI/Observal/commit/5c4b36a42434c12d2104eb9471a38df8b14e3841))
- instrument observal_cli.cmd_mcp (**optic**) ([1d24033](https://github.com/BlazeUp-AI/Observal/commit/1d24033080b87707343a42b2d205010992b86ba3))
- instrument observal_cli.cmd_logs (**optic**) ([ae71dd4](https://github.com/BlazeUp-AI/Observal/commit/ae71dd4679487ba243072ac9868317d8eee65713))
- instrument observal_cli.cmd_hook (**optic**) ([dbaaa7e](https://github.com/BlazeUp-AI/Observal/commit/dbaaa7eaebc7427a5c5628fcbcfdc98655497f22))
- instrument observal_cli.cmd_doctor (**optic**) ([d48f198](https://github.com/BlazeUp-AI/Observal/commit/d48f198c0bcc1122a32d6ede52031af0e7d7631a))
- instrument observal_cli.cmd_component (**optic**) ([c93e7a3](https://github.com/BlazeUp-AI/Observal/commit/c93e7a39928d267c93268301c144eb2debf2eeb1))
- instrument observal_cli.cmd_auth (**optic**) ([1d69bb1](https://github.com/BlazeUp-AI/Observal/commit/1d69bb134887945a301011a7c60d53c5c8e31dc6))
- instrument observal_cli.cmd_agent (**optic**) ([7f6582d](https://github.com/BlazeUp-AI/Observal/commit/7f6582d5a81c646ebdcf4bbc0d91c577649ab406))
- instrument observal_cli.client (**optic**) ([6011d2d](https://github.com/BlazeUp-AI/Observal/commit/6011d2dbd8592f0116bc815d9626e903b649f12f))
- instrument observal_cli.analyzer (**optic**) ([ad42c87](https://github.com/BlazeUp-AI/Observal/commit/ad42c87c3fb82382869a789bb6c7a8a4d2c5ba4c))
- instrument docker.docker-compose.yml (**optic**) ([ac70eaf](https://github.com/BlazeUp-AI/Observal/commit/ac70eaf8bcc693970bed8bff00639aa1e8260ef4))
- instrument ..AGENTS.md (**optic**) ([76223d1](https://github.com/BlazeUp-AI/Observal/commit/76223d1dc3d3772c03c2d5c7229335808cc6774e))
- add cli, server, and web area labels to PR auto-labeler (**ci**) ([34341e0](https://github.com/BlazeUp-AI/Observal/commit/34341e03f7db7f2071d212ed7142b6215dc9a8aa))
- gate server upgrade/rollback/versions to super_admin, bump web/package.json in releases ([51d6214](https://github.com/BlazeUp-AI/Observal/commit/51d6214dad811b8236dd34753096f969580256a7))
- version mismatch banner, feature registry sync, lint fix (**frontend**) ([b4edc4e](https://github.com/BlazeUp-AI/Observal/commit/b4edc4e8873b9396e519fcf0f86c8a8d08d588a5))
- add server upgrade/rollback/versions commands (**server-update**) ([d629967](https://github.com/BlazeUp-AI/Observal/commit/d629967f38e7ac5a49bc2424ec4ea7e3ee61cb26))
- version negotiation middleware + feature registry (**negotiation**) ([a6618d9](https://github.com/BlazeUp-AI/Observal/commit/a6618d9ddc597889ecc3417fe694b744969869df))
- implement upgrade, downgrade, rollback, status commands (**self-update**) ([db308a0](https://github.com/BlazeUp-AI/Observal/commit/db308a0073d006fa589783f53493c40a7729af68))
- add background GitHub release checker with 24h cache (**version-check**) ([76e3a62](https://github.com/BlazeUp-AI/Observal/commit/76e3a62b94097c9f7ff38fa5cebde880a5704fa7))
- sandbox MCP server — sandboxes as callable tools ([7f5e85f](https://github.com/BlazeUp-AI/Observal/commit/7f5e85fc31fad97ce711a943937cf6be3643d453))
- inject sandbox usage instructions into agent rules on pull ([c605d8b](https://github.com/BlazeUp-AI/Observal/commit/c605d8bfe96f9d8d30c24c4f8c6db01601729bff))
- add script editor to hook submit/edit forms in frontend ([4879e70](https://github.com/BlazeUp-AI/Observal/commit/4879e701e1f0049b3f295bfbc9c351ea0c2245cd))
- materialize hook components on agent pull/install ([b1831a0](https://github.com/BlazeUp-AI/Observal/commit/b1831a022f7fcbcfb0e603d0b55798e4803890c5))
- hooks & sandboxes cleanup — CLI, multi-IDE install, dead field removal ([b9ae423](https://github.com/BlazeUp-AI/Observal/commit/b9ae423f1a065a6490507528863d8601984d7d01))
- add non-interactive flags to agent create (**cli**) ([b7fffc1](https://github.com/BlazeUp-AI/Observal/commit/b7fffc1c634dfdd82ab2cddd43f022ecc36f30a1))
- auto-install observal skill on login (**cli**) ([5ebbfd2](https://github.com/BlazeUp-AI/Observal/commit/5ebbfd28ffee3b6070c1b8480b93dca8fa8dd6fb))
- add observal skill for LLM-driven agent management (**skill**) ([c144c62](https://github.com/BlazeUp-AI/Observal/commit/c144c6263d4d9ffbf7d52d60922eb6bc0e003798))
- license-based feature gating and settings page redesign (**web**) ([1ac2d0a](https://github.com/BlazeUp-AI/Observal/commit/1ac2d0a8fc09a15a41c1aec55b3a1bfe4868943f))
- add DB-backed dynamic_settings service with Fernet encryption ([2b8196f](https://github.com/BlazeUp-AI/Observal/commit/2b8196f52c879ca28c2ee19b619c591399c7475e))
- move exec dashboard to ee/ with license gating (**ee**) ([3b05e4e](https://github.com/BlazeUp-AI/Observal/commit/3b05e4e634a77f4a30c178a77df0cd8553fb6193))
- add tooltips to adoption, cost, investments, and velocity charts (**dashboard**) ([1ef1af3](https://github.com/BlazeUp-AI/Observal/commit/1ef1af3994c34bd83752e243dc30a5177e3b1497))
- LLM-powered AI Insights tab (**dashboard**) ([650f81c](https://github.com/BlazeUp-AI/Observal/commit/650f81ca6e01c5834faa0ed12d21a2ede0810d7d))
- comparative period overlays and CSV/PDF export (**dashboard**) ([71abfb9](https://github.com/BlazeUp-AI/Observal/commit/71abfb99fa1c33721f87c97d90d9ca9a24b0e67f))
- inactivity alerts and time-to-value metrics (**dashboard**) ([a475df5](https://github.com/BlazeUp-AI/Observal/commit/a475df5d8f7142b8d49f50e6f338c5149ebd09f5))
- cost-per-dept KPIs, bulk dept import, category on approval (**dashboard**) ([5f9f245](https://github.com/BlazeUp-AI/Observal/commit/5f9f2454b48d2823e9fa854fb4bbc83d2b1fb18d))
- UX improvements — URL tabs, range picker, onboarding, refresh (**dashboard**) ([70e2d8e](https://github.com/BlazeUp-AI/Observal/commit/70e2d8ee124b5fd161cc3919ddd9f2d9a28ca5bd))
- developer breakdown and model provider comparison (**dashboard**) ([ada4c16](https://github.com/BlazeUp-AI/Observal/commit/ada4c16dfd27c104baa4bb75ff68811cb11c94d0))
- strategic insights, ROI projections, enterprise-only gate (**dashboard**) ([04aec31](https://github.com/BlazeUp-AI/Observal/commit/04aec31c49f56e331a85bed4385a318fbf9e105c))
- category selector, department assignment, baselines config (**dashboard**) ([9340bb3](https://github.com/BlazeUp-AI/Observal/commit/9340bb3b0bccc5c8dffe1d27651f18ee61fde818))
- insights tab and final polish (**dashboard**) ([ee97cbe](https://github.com/BlazeUp-AI/Observal/commit/ee97cbeb485f254aab402f4101324313f4526096))
- departments and cost intelligence tabs (**dashboard**) ([16e1592](https://github.com/BlazeUp-AI/Observal/commit/16e1592357b63c968d4d35c991bada98ec777cb2))
- adoption, investments, and velocity tabs with respective endpoints (**dashboard**) ([3cef4ab](https://github.com/BlazeUp-AI/Observal/commit/3cef4abc06334d500192b06c70412a394713c073))
- management dashboard models, migration, tabbed layout (**dashboard**) ([345ce04](https://github.com/BlazeUp-AI/Observal/commit/345ce04351e8095b4fa59178f6686844325b7aab))

### Changed

- migrate scanning logic into IDE adapters (**scan**) ([f03d928](https://github.com/BlazeUp-AI/Observal/commit/f03d9284a9e959acfaf9b2c333fcef8aa5ec9b48))
- remove vscode IDE, add protocol.py and feature-flag gating (**ide**) ([3ee21cc](https://github.com/BlazeUp-AI/Observal/commit/3ee21ccdb58c9a345a6b4d6dcb265b64308fad8f))
- deduplicate _KIRO_EVENT_MAP into single definition (**ide**) ([88ffd50](https://github.com/BlazeUp-AI/Observal/commit/88ffd50546ea95fc74af45ec5658fe322a40e1ab))
- add IDE adapter protocol and registry with 9 adapters (**cli**) ([8402ade](https://github.com/BlazeUp-AI/Observal/commit/8402ade9241420b8a0a8cf74b0ea9a82723b2ccf))
- extract upgrade_executor, server version helper, harden caches (**cli**) ([57dc647](https://github.com/BlazeUp-AI/Observal/commit/57dc6475bffaaa791007fe260f54e2dd2c3d2e8d))
- delete agent_config_generator.py, update all callers (**ide**) ([c6c97c7](https://github.com/BlazeUp-AI/Observal/commit/c6c97c776f7ac41921346862250f754c2884b3b5))
- direct adapter replacement, eliminate shim layer (**ide**) ([d27423f](https://github.com/BlazeUp-AI/Observal/commit/d27423f0cfc124c5b38ab0b1c493a100b6ec6016))
- remove dead if/elif chains from generate_agent_config (**ide**) ([54fbb7c](https://github.com/BlazeUp-AI/Observal/commit/54fbb7cac1aa3ab096504a71b1bb499d1fdc733f))
- add adapter protocol and 9 IDE adapters with delegation (**ide**) ([406777f](https://github.com/BlazeUp-AI/Observal/commit/406777f7fc3f5fb9bb358aebbd5cc15653be4c65))
- replace per-IDE configure calls with doctor on login (**auth**) ([fa61dc9](https://github.com/BlazeUp-AI/Observal/commit/fa61dc9b25e8f2a50089edff9a12eb9cc1fafab3))
- split admin route monolith into sub-package (**api**) ([5c8e59e](https://github.com/BlazeUp-AI/Observal/commit/5c8e59eb78ad5d95f317fcc9f4168cd31b99dd2a))
- split agent route monolith into sub-package (**api**) ([9bb6f4a](https://github.com/BlazeUp-AI/Observal/commit/9bb6f4a3adb1353899fe0783f314230b262a8481))
- update enterprise code to use dynamic_settings (**ee**) ([d77f0d6](https://github.com/BlazeUp-AI/Observal/commit/d77f0d66eb6d02256d4b9c4dd72b7559792caf58))
- migrate API routes and services to dynamic_settings ([f16117e](https://github.com/BlazeUp-AI/Observal/commit/f16117e2ad0ee04c7fb9443addc771c6a1fc2305))
- squash Alembic migrations into v1_baseline stamp ([ba03f41](https://github.com/BlazeUp-AI/Observal/commit/ba03f4159d4b2ee8939c21187869baa924a05c51))
- split job definitions into jobs/ subpackage (**worker**) ([4d286b8](https://github.com/BlazeUp-AI/Observal/commit/4d286b8931901079e51c01f5d4196caf61ae6cc9))

### Documentation

- add gitbook docs for server and self commands, update SUMMARY (**cli/server**) ([780c1bc](https://github.com/BlazeUp-AI/Observal/commit/780c1bcb7682c9b5bec0be5a5d3bd244eff6f294))
- add --help docstrings and gitbook docs for doctor, scan, migrate, support, profile, models, and uninstall commands (**cli/infra**) ([dd41e29](https://github.com/BlazeUp-AI/Observal/commit/dd41e295a00ee75ae89dfb8c8d2c38e9d64f482a))
- add --help docstrings and gitbook docs for ops, admin, review, eval, and self commands (**cli/ops**) ([acf73b5](https://github.com/BlazeUp-AI/Observal/commit/acf73b5ca0a8e788799ae93de7fb77c44a838812))
- add --help docstrings and gitbook docs for all registry commands (**cli/registry**) ([af03e32](https://github.com/BlazeUp-AI/Observal/commit/af03e32c5fcd5045765eb817dadf3e75d9197cb6))
- add --help docstrings and gitbook docs for agent commands (**cli/agent**) ([bd06fbd](https://github.com/BlazeUp-AI/Observal/commit/bd06fbd55e4b40d258079cfdbde49ca2d9035eb6))
- add --help docstrings and gitbook docs for auth and config commands (**cli/auth**) ([9371f73](https://github.com/BlazeUp-AI/Observal/commit/9371f737ef7325d4d1a0c27ff522f74da60fa68f))
- add usage examples to agent publish, release, and pull --help (**cli**) ([db6c4ba](https://github.com/BlazeUp-AI/Observal/commit/db6c4baf613a2da6589e5c3e639c7d3e28fa24f9))
- uncomment SAML and license vars in .env.example (**env**) ([44f7e53](https://github.com/BlazeUp-AI/Observal/commit/44f7e534fa8dda6d97217680dab4afa5e9e4a521))
- add OBSERVAL_LICENSE_KEY to .env.example (**env**) ([e41e0fe](https://github.com/BlazeUp-AI/Observal/commit/e41e0fe009d4b15cfbac0bf7cd009b9147c8698d))

### Fixed

- remove Minimum CLI Version setting (**settings**) ([8d8101a](https://github.com/BlazeUp-AI/Observal/commit/8d8101a242e7cd505ce967adb84b5b8a97f955b9))
- remove dead _checkVersionMismatch code, add clarifying comments ([6f524c5](https://github.com/BlazeUp-AI/Observal/commit/6f524c5afec9ca00fa094b9c679335a62a589771))
- remove stale Min-CLI header, fix health check port resolution (**server**) ([1d9f0bb](https://github.com/BlazeUp-AI/Observal/commit/1d9f0bbb30838b2a7460251790efe73aa91f8d74))
- remove dead observal_url param from _gemini_settings, fix em-dash ([9801014](https://github.com/BlazeUp-AI/Observal/commit/9801014ed875aaa5927d85f635ee7eaa3a0a4125))
- stop generating OTLP env vars in config snippets (**config**) ([9991547](https://github.com/BlazeUp-AI/Observal/commit/99915472ea876446ddf6c3f42dd1a8852988e33e))
- use block scalar style for long YAML values in review diff (**review**) ([ab98781](https://github.com/BlazeUp-AI/Observal/commit/ab98781ce55c27e42bf5ffe9391ef4fe6fc3a861))
- show agent prompt in review queue and diff sheet (**review**) ([5a5ea64](https://github.com/BlazeUp-AI/Observal/commit/5a5ea64a2af083df2f2981fc0694137e732d4ca3))
- Kiro agent pull writes hook scripts and rewrites command paths ([a3505bc](https://github.com/BlazeUp-AI/Observal/commit/a3505bcf6d7c924ba717df1377a58368f25fd5bd))
- rewrite bare script filenames to .claude/hooks/ path in frontmatter ([02a75c0](https://github.com/BlazeUp-AI/Observal/commit/02a75c01b8a1dc744e21534e5e63c8f2d2880752))
- include description in Claude Code agent frontmatter ([d708348](https://github.com/BlazeUp-AI/Observal/commit/d7083489295383303ac8518f24ef4aaf80cd9998))
- deliver hook script files on agent pull for all IDEs ([58db0a5](https://github.com/BlazeUp-AI/Observal/commit/58db0a5c6104cf6c3e822251e10425dab6ec9e7c))
- expand ~ paths in hook install instead of creating literal ~/dir ([c2247d6](https://github.com/BlazeUp-AI/Observal/commit/c2247d63c4cf17a5eaa7018e1a1491e679b9aede))
- hook install command writes config to IDE settings file ([6dd4d5a](https://github.com/BlazeUp-AI/Observal/commit/6dd4d5af93e84ee6fab0d02592d984f0a3a593d0))
- remove dead field references from frontend components ([2be988e](https://github.com/BlazeUp-AI/Observal/commit/2be988e84a43504a50f9278f423dbd11a773e51f))
- improve chart readability and UI clarity across tabs (**dashboard**) ([2eb1fe8](https://github.com/BlazeUp-AI/Observal/commit/2eb1fe82e900ebc4143f151b48a063b1b3cac783))
- clamp future sentinel timestamps at ingest in _normalize_ts (**traces**) ([8eaad86](https://github.com/BlazeUp-AI/Observal/commit/8eaad86dbda07f1fe6cf93fd63b27bd30970878b))
- chart visual polish — dark tooltips, cleaner axes, token formatting (**dashboard**) ([ebecdd9](https://github.com/BlazeUp-AI/Observal/commit/ebecdd9f9e8eacf1bf17360219c6a65d05952ea0))
- show dash for Kiro sessions with no credits instead of N prompts (**traces**) ([a156f65](https://github.com/BlazeUp-AI/Observal/commit/a156f6587319c00aafa45d760f640e291a4f402b))
- add edit baselines button and fix useState in cost tab (**dashboard**) ([a786deb](https://github.com/BlazeUp-AI/Observal/commit/a786debdbf76bb0366cbc9b432f97e9d88318c02))
- fix bare f-strings and formatting in exec dashboard seed script (**dashboard**) ([5ca7f18](https://github.com/BlazeUp-AI/Observal/commit/5ca7f18d528a53957c0f96254b6c1f9dd6bde36c))
- renumber exec dashboard migration to 0011 to avoid collision with retention 0010 (**migration**) ([318731d](https://github.com/BlazeUp-AI/Observal/commit/318731d310b09d5286de26e7d2aca5c0b9949684))
- request groups scope from OIDC provider for department auto-mapping (**auth**) ([a213447](https://github.com/BlazeUp-AI/Observal/commit/a213447f768bd806de4f6f959f133481235e9d8e))
- remove invalid PreviewPanel props, run ruff format (**ci**) ([644f191](https://github.com/BlazeUp-AI/Observal/commit/644f1912bcfd907ab0aa21ba01628f2ee41f4e3f))
- resolve ruff, eslint, and REUSE compliance issues (**lint**) ([863d7f7](https://github.com/BlazeUp-AI/Observal/commit/863d7f7c9faf62cae337ea94d9f532313378d135))
- honest metrics — cost/session, data-driven confidence, no fake composite (**dashboard**) ([0aafe2f](https://github.com/BlazeUp-AI/Observal/commit/0aafe2f2c3e5896198f3fd21511b4477e70d5edb))
- correct down_revision chain and PreviewPanel props (**migration**) ([fd7f6e5](https://github.com/BlazeUp-AI/Observal/commit/fd7f6e5679ce827b5f1421714b7494c147741854))

### Other

- remove eval docs and grafana dashboard ([3a33d88](https://github.com/BlazeUp-AI/Observal/commit/3a33d88388e54dbbc8551f16ceb834b0fa6ab7e4))
- remove eval tests ([84f5ea5](https://github.com/BlazeUp-AI/Observal/commit/84f5ea5faa71364c80651611078e2696f59b35ba))
- remove eval frontend ([ebe5efc](https://github.com/BlazeUp-AI/Observal/commit/ebe5efc0d592a1e5255771f729b5f120ccbcba69))
- remove eval CLI commands ([89b3c33](https://github.com/BlazeUp-AI/Observal/commit/89b3c33e0c1752c6a5f2d81a684bfcff7531de3e))
- remove eval engine backend ([f30d626](https://github.com/BlazeUp-AI/Observal/commit/f30d62641244d69b59c2c43055b490960ba197cb))
- extract call_model into insights service ([c81425c](https://github.com/BlazeUp-AI/Observal/commit/c81425c4772ca94e6388b58b8a54add9b2c9200c))
- address PR review, fix lint, add docs ([513c916](https://github.com/BlazeUp-AI/Observal/commit/513c9166e66b34be62fb43e7c80337e7bef22ef7))
- clean up .env.example and docker-compose for v1.0 ([d8601f0](https://github.com/BlazeUp-AI/Observal/commit/d8601f0e08746a7417ecb1aeeb21a4c08a98a1f6))

### Testing

- update mocks for dynamic_settings migration ([3277ddd](https://github.com/BlazeUp-AI/Observal/commit/3277ddd2c656ec5e8f36b071669f27efccfbce4d))
- add exec dashboard API tests, formula tests, and seed scripts (**dashboard**) ([3d0cc20](https://github.com/BlazeUp-AI/Observal/commit/3d0cc20a5ee35d75c6619207655d0cfa66a431b4))

### Security

- add path traversal guard to hook file writes ([fc5232b](https://github.com/BlazeUp-AI/Observal/commit/fc5232b6ae30384bdd475d99f1bf7c860d7af33a))
## [0.8.0] - 2026-05-21

### Added

- add settings UI, dashboard widget, and warning banner (**retention**) ([893432b](https://github.com/BlazeUp-AI/Observal/commit/893432bcd0b9264af9e2bfe6e9999e1d53fc1b7f))
- add admin API endpoints and 6-hour purge cron (**retention**) ([862992f](https://github.com/BlazeUp-AI/Observal/commit/862992f6ea4cdbc682d9504f2ff5a3208b7f3e94))
- add per-org data retention model, schema, and purge service (**retention**) ([bb746af](https://github.com/BlazeUp-AI/Observal/commit/bb746af2696bd35e50a91d20985edbbdebed5e32))
- license-gated install across all deployment methods ([f327c95](https://github.com/BlazeUp-AI/Observal/commit/f327c95e74064b8b2d8e1be8c21e6e59e9ae5956))
- extend custom branding to login, home, device pages and SVG logo (**web**) ([c2e9fe2](https://github.com/BlazeUp-AI/Observal/commit/c2e9fe28652e179dd26547a59c1d263c6b60b4be))
- default LB to port 80 for single-port access (**docker**) ([fd29b8b](https://github.com/BlazeUp-AI/Observal/commit/fd29b8bc7fc31c83f32a03c28f98da1d0598c231))
- add Cursor to platform filter and show agent name in trace list (**web**) ([deb5989](https://github.com/BlazeUp-AI/Observal/commit/deb598967cf1c8a138c2a402bd7d3d39b908bab5))
- enable hook_bridge and set cursor session parser in IDE registry (**cursor**) ([7011847](https://github.com/BlazeUp-AI/Observal/commit/7011847b298228be1953463f8052cf52d749a1d9))
- add doctor patch for Cursor hook installation (**cursor**) ([9f39c21](https://github.com/BlazeUp-AI/Observal/commit/9f39c219808c531fb03bbb6374d3cee7d27bfb2d))
- detect and configure Cursor on auth login (**cursor**) ([c0c068d](https://github.com/BlazeUp-AI/Observal/commit/c0c068d4986c05712717516f8b393b6d3d4782a9))
- emit Cursor hook config from agent config generator (**cursor**) ([8d3e8f4](https://github.com/BlazeUp-AI/Observal/commit/8d3e8f46df3a96ce55f663e650e4411b9ec1fbd1))
- add cursor_session_push hook and background post worker (**cursor**) ([42a9057](https://github.com/BlazeUp-AI/Observal/commit/42a905747efc80d2d74096a38ed8ba3a8e2e0feb))
- add server-side JSONL session parser and ingest classifier (**cursor**) ([81c6c36](https://github.com/BlazeUp-AI/Observal/commit/81c6c36d4afa75161b3b0b07c59aacba25635681))
- create components in-memory, cascade submit with agent (**builder**) ([53d7b75](https://github.com/BlazeUp-AI/Observal/commit/53d7b75bf780ef08b565d1d72b53107e9dc2a7af))

### Changed

- split monolithic module into subpackage (**clickhouse**) ([dbf4964](https://github.com/BlazeUp-AI/Observal/commit/dbf4964793611cdc5a3f5448e43b5a6e3f3462bc))
- rewrite hook scripts as thin wrappers over sessions/ domain (**cli**) ([a2b2ca1](https://github.com/BlazeUp-AI/Observal/commit/a2b2ca1fe38b9514bdeebf1d557d4ceb9ec3d33c))
- introduce sessions/ domain with base, claude_code, kiro, and cursor modules (**cli**) ([d53e10e](https://github.com/BlazeUp-AI/Observal/commit/d53e10e07d0ad3a35d430c8a380ee54423f413f2))
- extract sanitize_name, load_jsonc, hook markers, and shim detection to shared utils (**cli**) ([912f586](https://github.com/BlazeUp-AI/Observal/commit/912f58668f7fbc711d6bdb95a7f1582534884529))
- extract sanitize_name and strip_cursor_xml_tags to shared utils (**server**) ([65c7506](https://github.com/BlazeUp-AI/Observal/commit/65c75067cb20b39c25b82a7884d901075e96543e))
- remove goal template, replace with required prompt field (**agent**) ([3b04a3e](https://github.com/BlazeUp-AI/Observal/commit/3b04a3eee42cc59856b7b7b11a722468ca37ad31))

### Documentation

- remove GitHub stars shield (**readme**) ([b3bc715](https://github.com/BlazeUp-AI/Observal/commit/b3bc715345716c40d5400cbd02869c4025f3835e))
- document license-gated install and OBSERVAL_LICENSE_KEY ([940a606](https://github.com/BlazeUp-AI/Observal/commit/940a606a9929cdac1944660ec1ddac879e707140))
- expand badge bar with live GHCR pulls, PyPI, and community badges (**readme**) ([7945bbb](https://github.com/BlazeUp-AI/Observal/commit/7945bbbddfbd366edcd2aa8b6b2a05501b5e6a15))
- add AI policy, development guide, and overhaul contributing guide ([afd90f4](https://github.com/BlazeUp-AI/Observal/commit/afd90f4ae5a28fd0f93e344c884066d8c71a43f7))

### Fixed

- update default server URL to match new LB port 80 (**cli**) ([92454d4](https://github.com/BlazeUp-AI/Observal/commit/92454d42ca2fc9fb8e5914628e39648510c43d6e))
- add license field to package.json (**web**) ([c193090](https://github.com/BlazeUp-AI/Observal/commit/c19309095c59cb2d75cd02155a3e001db4a4f443))
- query packages via repository scope instead of org (**badges**) ([818c6d6](https://github.com/BlazeUp-AI/Observal/commit/818c6d65a6e44d0204ee4f2fd8602c505db06fb2))
- use GraphQL to fetch GHCR pull counts, require read:org scope (**badges**) ([834e83d](https://github.com/BlazeUp-AI/Observal/commit/834e83de576bacb9c38667086376fd8d0755e135))
- update localhost URLs from port 8000 to port 80 after LB change (**e2e**) ([6c61312](https://github.com/BlazeUp-AI/Observal/commit/6c6131272bdee3d6cad220208b7aa07688313e6e))
- route frontend traffic through LB on port 80 (**nginx**) ([61e7060](https://github.com/BlazeUp-AI/Observal/commit/61e70604429b5e610481bafe00bd1ac6bed4419c))
- correct agent pull command in registry home (**web**) ([3392a1b](https://github.com/BlazeUp-AI/Observal/commit/3392a1b00a60feb659514b310fe575c154af4c9a))
- resolve agent files to project scope and use sys.executable in pull (**cursor**) ([809ca65](https://github.com/BlazeUp-AI/Observal/commit/809ca651f0595b5ce16be55ce252d6a5c4888629))
- render YAML instead of JSON, expand all components by default (**review**) ([70e106a](https://github.com/BlazeUp-AI/Observal/commit/70e106a01e337cad77319917a12cae99bfbdfa10))
- default installation scope to user for agent pull (**cli**) ([a57f410](https://github.com/BlazeUp-AI/Observal/commit/a57f410d305574313f3bcd0e6b71b6c26b7f4dea))
- description is registry metadata, never inject into agent files (**agent**) ([87688be](https://github.com/BlazeUp-AI/Observal/commit/87688be09755b0ca39851c67b44e416da6b7055a))

### Other

- remove demo directory ([0824422](https://github.com/BlazeUp-AI/Observal/commit/082442209003bd60b286f2758ff055b3a0c54197))
- add refactor-guide, security-auditor, and test-writer skill definitions ([becae20](https://github.com/BlazeUp-AI/Observal/commit/becae20de5281aff5123938a166ad45b4ca07dbe))
- fix broken AI_POLICY.md links in development guide (**docs**) ([caae9a1](https://github.com/BlazeUp-AI/Observal/commit/caae9a117aebabd444e81237a137a8d8984fc312))

### Testing

- add unit, integration, and simulation tests (**retention**) ([36a13fa](https://github.com/BlazeUp-AI/Observal/commit/36a13faeb5b6ec403b0118761dc910f79e6535ad))
## [0.7.0] - 2026-05-19

### Added

- enterprise license gate for insights (**ee**) ([1a2f3c0](https://github.com/BlazeUp-AI/Observal/commit/1a2f3c0a1c74f49724ddb5034e34656da6b02efb))
- add Gitleaks workflow to scan PRs for secret leaks (**ci**) ([8ba0c76](https://github.com/BlazeUp-AI/Observal/commit/8ba0c76afba5d67710d2228ed2d74700926cc731))
- auto-label PRs with merge conflicts (**ci**) ([abc12a5](https://github.com/BlazeUp-AI/Observal/commit/abc12a527c539ff3a1efec0eda43503e1490bdf1))
- auto-label PRs touching tests or enterprise code (**ci**) ([cd7f50d](https://github.com/BlazeUp-AI/Observal/commit/cd7f50d69c00890c13dfcf69ec372f73008eaef4))
- add workflow to label PRs from first-time contributors (**ci**) ([0e27e9f](https://github.com/BlazeUp-AI/Observal/commit/0e27e9fbe2e9823d62ab94ebc2a87e3cb1afffd4))

### Changed

- migrate e2e tests to tests/e2e with pnpm workspace ([8d3394e](https://github.com/BlazeUp-AI/Observal/commit/8d3394e7a2108756fd1765375c9a9a4fd4fba3e3))

### Documentation

- clarify agent install and pull ([596f210](https://github.com/BlazeUp-AI/Observal/commit/596f210f1a873237efd0909b4d2c6c18a6728978))
- update agent pull command ([17372aa](https://github.com/BlazeUp-AI/Observal/commit/17372aade157dfbaaf40ba997c0ba7d2cafa9c45))
- rewrite landing page for clarity and completeness ([6c02a60](https://github.com/BlazeUp-AI/Observal/commit/6c02a60730b65f7d2bc2e74af0a6cd221c703ee9))
- update migrate workflow with org-id and structured steps ([6fa6c78](https://github.com/BlazeUp-AI/Observal/commit/6fa6c783c21f1c2f991bba142b23d47cb4233c68))

### Fixed

- redact nested structured secrets (**security**) ([3ab8e70](https://github.com/BlazeUp-AI/Observal/commit/3ab8e708fa37091bb3e5ae915f85d1f69bc27509))
- bump gitpython to 3.1.50 and urllib3 to 2.7.0 (**deps**) ([b62f861](https://github.com/BlazeUp-AI/Observal/commit/b62f861a1445488d2394e8db1fa17bb475fbd07c))
- use search API, bump to @v9, fix error handling in new-contributor workflow (**ci**) ([2eb853b](https://github.com/BlazeUp-AI/Observal/commit/2eb853be5c04207a7c88f525b30360be66ba3a1d))
- fix SPDX header corruption and improve e2e-frontend health check (**ci**) ([1f3d05d](https://github.com/BlazeUp-AI/Observal/commit/1f3d05d89e61e41c01a2007e7559e99930194fc1))
- add repository guard to deploy, release, and SBOM workflows (**ci**) ([f6724e5](https://github.com/BlazeUp-AI/Observal/commit/f6724e535f9b96070e49528c599b9cb337ca4cd9))
- fix SAML SSO (**ee**) ([2af7611](https://github.com/BlazeUp-AI/Observal/commit/2af76119b20e6b278bd451f052ba92e012407989))
- update web frontend (minor/patch) (**deps**) ([da825f8](https://github.com/BlazeUp-AI/Observal/commit/da825f8432d3e7392f7311549c5a65ac3fa835ea))
- restrict migrate commands to super admin (#1048) ([eda06e0](https://github.com/BlazeUp-AI/Observal/commit/eda06e0948af343e440adbc550ec499e1133d36d))
- add missing pyarrow dep to make test targets (#1044) ([1bfb94c](https://github.com/BlazeUp-AI/Observal/commit/1bfb94cf4685b26faca085d90347d613b771b76f))

### Other

- move SPDX identifiers for LICENSE and ee/LICENSE to REUSE.toml ([bfd6145](https://github.com/BlazeUp-AI/Observal/commit/bfd6145810f910b9c578fdd84e593f302b2a071b))
- clean up CI pipeline (**ci**) ([4575a26](https://github.com/BlazeUp-AI/Observal/commit/4575a26242d143dccb8314b62e648ac6214d1d5d))
- fold PR label workflows into one file (**ci**) ([77e8538](https://github.com/BlazeUp-AI/Observal/commit/77e853860f5e21ffb4886d03215884853f443b10))
- update codecov/codecov-action action to v6 (**deps**) ([3bb1b1c](https://github.com/BlazeUp-AI/Observal/commit/3bb1b1c8f0e5769abd34e2b517fd0791bd2c4439))
- update dependency ruff to v0.15.13 (**deps**) ([a1192e4](https://github.com/BlazeUp-AI/Observal/commit/a1192e49a568fa538be828a270a9e0549511eade))
- update fsfe/reuse-action action to v6 (**deps**) ([11cdcff](https://github.com/BlazeUp-AI/Observal/commit/11cdcff4d5b07749b5a94ff4eece7392ea7e381b))
- update dependency node to v24 (**deps**) ([31f8cb6](https://github.com/BlazeUp-AI/Observal/commit/31f8cb6aeb8e9c3012f1376ec394298d6ba3a836))
- update actions/upload-artifact action to v7 (**deps**) ([f684f52](https://github.com/BlazeUp-AI/Observal/commit/f684f52d2c73ad003b20d9739b98ae9f34a172b9))
- update ghcr.io/astral-sh/uv docker tag to v0.11.15 (**deps**) ([2c789e4](https://github.com/BlazeUp-AI/Observal/commit/2c789e48e9ce85a895e8f8668e57e0600b790cd0))
- update pnpm/action-setup action to v6 (**deps**) ([e70c6a9](https://github.com/BlazeUp-AI/Observal/commit/e70c6a97252c8b234b117bf69091e503a297ef3d))
- prep CLI for Homebrew (**packaging**) ([d2bf23b](https://github.com/BlazeUp-AI/Observal/commit/d2bf23b0658486f06ec67e2fbcc1c0fa6b6d2cf4))

### Testing

- cover redactor fallbacks (**security**) ([a6c4d40](https://github.com/BlazeUp-AI/Observal/commit/a6c4d40a4d538ba83b13ba8cd1843b6c6adf0763))
## [0.6.0] - 2026-05-16

### Added

- realign skill model with git-first architecture (**skills**) ([9600d3b](https://github.com/BlazeUp-AI/Observal/commit/9600d3ba363d1e37bcb81278275913ba1bfc91ff))
- add insight tables to migration system ([cd73e1e](https://github.com/BlazeUp-AI/Observal/commit/cd73e1e9ea20d7f5ea5c388db25bf2dda65853f8))
- add best-effort disclaimer for --git flag (**mcp**) ([360248e](https://github.com/BlazeUp-AI/Observal/commit/360248e0c00da9c260cfb50d64bd03130e88eac8))
- JSON paste as default MCP submit/edit with shared parser (**UI**) ([55daede](https://github.com/BlazeUp-AI/Observal/commit/55daede837428239afdc88fe7fb67adebbc0247a))
- make JSON paste the default MCP submission method (**cli**) ([ff9e3de](https://github.com/BlazeUp-AI/Observal/commit/ff9e3de8716ac129f3e3d573d899fab036ebff8f))
- add backend integration tests against real DB ([7e1e8ee](https://github.com/BlazeUp-AI/Observal/commit/7e1e8eee215aeb02ad1eb1c29339ddf1ff049cb8))
- slim curl-install to use pre-built images only (**deploy**) ([630a19f](https://github.com/BlazeUp-AI/Observal/commit/630a19f0752d0560e916e6376fb6751f085362a4))
- add browser-level Playwright e2e tests for 4 UI flows ([28f0274](https://github.com/BlazeUp-AI/Observal/commit/28f0274c8a6611cca9d12bbba02c0c7c2de96285))
- user profile picture is configurable (**UI**) ([442bc7c](https://github.com/BlazeUp-AI/Observal/commit/442bc7ce16c1869d936c2ed590bb008bd76ec7a9))
- add SBOM generation workflow with CycloneDX and ScanCode (**ci**) ([e6148a1](https://github.com/BlazeUp-AI/Observal/commit/e6148a1c3751c8ad75e269e877484c703a1b6679))
- add VulnerableCode vulnerability check script (**security**) ([805934c](https://github.com/BlazeUp-AI/Observal/commit/805934c591c93eecc16409325246f3e41723cc1d))
- add ScanCode license policy and enforcement script (**compliance**) ([d40eddb](https://github.com/BlazeUp-AI/Observal/commit/d40eddb1d1315cadd72b4cd6aeee3d9a8a1a3bcc))
- add observal support bundle and inspect commands (**cli**) ([a8d1f54](https://github.com/BlazeUp-AI/Observal/commit/a8d1f54d5e004225a8947abad9c446e968fac9d5))
- TTL MODIFY COLUMN raw_line to null blobs after 30 days (**clickhouse**) ([fb7a3f3](https://github.com/BlazeUp-AI/Observal/commit/fb7a3f3f0e07715807ac2d74d16e059cabd9ba3a))
- suggest registry components and optimize section token usage (**insights**) ([75bcee3](https://github.com/BlazeUp-AI/Observal/commit/75bcee33105df0dc564ba7531ddee46e7bd23797))
- nest subagent sessions inline in trace detail (**ui**) ([5a410f2](https://github.com/BlazeUp-AI/Observal/commit/5a410f2988793a271c188c4e26bea3e256b8f1d3))
- API endpoints, batch orchestration, component-aware pipeline (**insights**) ([17dc6e3](https://github.com/BlazeUp-AI/Observal/commit/17dc6e3f38d496d1710b50b0d72741064084ee11))
- add InsightMetaCache model and migration (**insights**) ([ed07da4](https://github.com/BlazeUp-AI/Observal/commit/ed07da4d4dd77e054e8af3d8b8f29440bdace7d5))
- V3 insight generation engine (**insights**) ([1c6c1f6](https://github.com/BlazeUp-AI/Observal/commit/1c6c1f629909b8edff6eef0acbc8a467aa19fd5f))
- add "Create Another" button to Add User dialog (**admin**) ([8283109](https://github.com/BlazeUp-AI/Observal/commit/8283109550ccd0a7a2ac0621bb13f5b4c8c49eb0))
- per-IDE model registry with live catalog and builder picker ([bf12b26](https://github.com/BlazeUp-AI/Observal/commit/bf12b26699a91fed2ab23613687e07f395c07b95))
- store parent_session_id for Claude Code subagents (**attribution**) ([6ecfd06](https://github.com/BlazeUp-AI/Observal/commit/6ecfd06dd9422f37615fda887d9ebd94831f1908))
- write .observal/agent marker on pull, read in hooks (**attribution**) ([d246e8d](https://github.com/BlazeUp-AI/Observal/commit/d246e8da09d815d80cbfb566481c3f8fc11c03d8))
- sentinel timestamps, credits, Kiro Auto model, token fix (**sessions**) ([a32ee53](https://github.com/BlazeUp-AI/Observal/commit/a32ee53f1da6d3036888fd51bd71ec428fe54038))
- rewrite cmd_reconcile as crash recovery module (**reconcile**) ([3171339](https://github.com/BlazeUp-AI/Observal/commit/317133902243852c36a3f9d6d67137fc87360439))
- add session push hooks for Claude Code and Kiro (**cli**) ([e2adcab](https://github.com/BlazeUp-AI/Observal/commit/e2adcab2ebccaa714f3fd4208d108be80931a613))
- add session JSONL ingest pipeline with IDE parsers (**ingest**) ([cc9069e](https://github.com/BlazeUp-AI/Observal/commit/cc9069ef144a725e98296429e07ac482a336c14c))
- add session_events table for JSONL ingest pipeline (**clickhouse**) ([06d1643](https://github.com/BlazeUp-AI/Observal/commit/06d1643b255bb75d0b992a1e248db2925a1ed103))
- add rebuild-enterprise and rebuild-local targets (**make**) ([3a3bb63](https://github.com/BlazeUp-AI/Observal/commit/3a3bb6360c15961a11f94e9e2c7b776e8efea2da))
- merge observal-insights into ee/ for enterprise distribution (**ee**) ([e2ce0e8](https://github.com/BlazeUp-AI/Observal/commit/e2ce0e8c743cb8a42a6a0fa4875093fa61aaab11))
- terraform module with CI (**infra**) ([63a5b50](https://github.com/BlazeUp-AI/Observal/commit/63a5b506a8ed53f342ebe292eb0a0b56c875333f))
- terraform module for AWS self-hosting (**infra**) ([d2b4b03](https://github.com/BlazeUp-AI/Observal/commit/d2b4b035527df9542aeceafb80e83c0d601f651a))
- auto-detect enterprise mode in Makefile and add report progress UI ([5b82229](https://github.com/BlazeUp-AI/Observal/commit/5b82229bca8bb12ada0faa84cc4e6b424ad16295))
- enterprise distribution infrastructure (**docker**) ([ccf5af8](https://github.com/BlazeUp-AI/Observal/commit/ccf5af8bd9d9d0848f89f387eec12dd05c86f504))
- hide insights nav when package not installed (**web**) ([4b25527](https://github.com/BlazeUp-AI/Observal/commit/4b2552728b032e1f3a1508f8f4e6a9ef9122579e))
- gate endpoints and worker behind INSIGHTS_AVAILABLE (**insights**) ([1d7a09b](https://github.com/BlazeUp-AI/Observal/commit/1d7a09b57e6cb7181fdb196b321c70e86d63673f))
- replace inline code with plugin loader for private package (**insights**) ([0d33e5b](https://github.com/BlazeUp-AI/Observal/commit/0d33e5b59eb6bb463cd7fd4020a6a8de336522b3))
- full session reconciliation, insights v2, and anti-gaming ([c37f488](https://github.com/BlazeUp-AI/Observal/commit/c37f4881a708df2a43ac64ffd0e8138316b669d2))
- enhance insights report viewer and API types (**web**) ([1572edf](https://github.com/BlazeUp-AI/Observal/commit/1572edfd81927012e84ae8c7cf6071c22b72d97a))
- add reconcile command and update stop hook (**cli**) ([0c377f5](https://github.com/BlazeUp-AI/Observal/commit/0c377f5d293f71184488f0befba696412ea4a424))
- extend backend routes, config, and services for v2 (**insights**) ([2f2c542](https://github.com/BlazeUp-AI/Observal/commit/2f2c5429d38e72f51132add8686932ceb18d97eb))
- add new insight services, models, and migration (**insights**) ([386f598](https://github.com/BlazeUp-AI/Observal/commit/386f59836a2a03af431b495313d972e02fbf612c))
- register insights router, worker jobs, and config (**insights**) ([f16f805](https://github.com/BlazeUp-AI/Observal/commit/f16f805ee7fef1fb52609aa2db3689ce4ced7de3))
- add frontend report viewer with cost and error displays (**insights**) ([52c77b9](https://github.com/BlazeUp-AI/Observal/commit/52c77b9aa21cb6ffbdbdf5ee7f232b648af79b7a))
- add Agent Insights V2 backend with cost estimation (**insights**) ([7e91734](https://github.com/BlazeUp-AI/Observal/commit/7e9173485f204887a74a460249d3b02020f08d91))
- add agent-name attribution for Claude Code sessions (**eval**) ([34fe1a6](https://github.com/BlazeUp-AI/Observal/commit/34fe1a654797e5fd77d8b57b7417bb587e41217a))
- unify correctness and efficiency eval views per agent (**eval**) ([47aa46b](https://github.com/BlazeUp-AI/Observal/commit/47aa46bd390c9d7ef914be16f7cfac3bc73ea4c6))
- add username display and change UI (**account**) ([3a4d6be](https://github.com/BlazeUp-AI/Observal/commit/3a4d6bee6011144519fca635f0bde8219a76ccd4))
- wire username auto-generation to all user creation paths (**auth**) ([7617e6f](https://github.com/BlazeUp-AI/Observal/commit/7617e6f67b13bbe02c2f99b34d9ef430cf895249))
- add username auto-generation service (**auth**) ([59d3459](https://github.com/BlazeUp-AI/Observal/commit/59d345957cc776c27fe8c4e557b9c850dd1c0cef))
- unified diff view for agents and components (**review**) ([58912c0](https://github.com/BlazeUp-AI/Observal/commit/58912c063608247edf88daafb9f1c314821aab63))
- harden branding uploads with security validation (**api,web**) ([eb0c442](https://github.com/BlazeUp-AI/Observal/commit/eb0c4427ddbeebbe1e6a9805f3ebf62c1cd29e23))
- add branding UI with logo, wordmark, and dynamic title (**web**) ([98740de](https://github.com/BlazeUp-AI/Observal/commit/98740def20b6a5a1928b5a42daf9bae8dd3834df))
- add branding validation and public config fields (**api**) ([8119851](https://github.com/BlazeUp-AI/Observal/commit/8119851652a1be8becf8a2f61bc58cc90d287058))
- add username field to user creation form (**web**) ([876d87d](https://github.com/BlazeUp-AI/Observal/commit/876d87daf6ee66449904f2fa05e3a8800075c4da))
- support all component types (**feedback+leaderboard**) ([b6231fc](https://github.com/BlazeUp-AI/Observal/commit/b6231fc3b3aeef3d7ba14f3822107922667fbeb6))
- split drafts/archived sections, owners can archive (**agents**) ([77e6f73](https://github.com/BlazeUp-AI/Observal/commit/77e6f732e0306c9a84884d5f66fe4daa0e90383a))
- add unarchive button to drafts section on agents page (**web**) ([18e48c0](https://github.com/BlazeUp-AI/Observal/commit/18e48c0ba0b5cd72b27ea1cbec5164feaa2580bb))
- register mcp/skill/hook/prompt/sandbox as top-level commands (**cli**) ([b23ed8d](https://github.com/BlazeUp-AI/Observal/commit/b23ed8df07b84a9689d039b5b4f8a4fe9c8de32a))
- add `my` subcommand to all component types (**cli**) ([812ef54](https://github.com/BlazeUp-AI/Observal/commit/812ef54788de3f77c41cf4b1bdc80c7ddc6575a6))
- add change password form to account page (**web**) ([e69cde0](https://github.com/BlazeUp-AI/Observal/commit/e69cde08773b227d8a7a5d3547d5a532a08ed576))
- owner edit UI and CLI commands for pending submissions (#663) (**web,cli**) ([2e7fa53](https://github.com/BlazeUp-AI/Observal/commit/2e7fa5389b4101fc555f614d6804f7359425337b))
- allow owners to edit pending registry submissions (#663) (**api**) ([2110bb8](https://github.com/BlazeUp-AI/Observal/commit/2110bb8adaf9af1b4ebf9d591aa226984b166a53))
- component editing with type-specific version publishing (#710) (**registry**) ([4c535f5](https://github.com/BlazeUp-AI/Observal/commit/4c535f5da00b595e6e4f5f4008d02d21a7507af4))
- add per-agent .agent.md with hooks for Copilot/Copilot CLI (**hooks**) ([c0d9207](https://github.com/BlazeUp-AI/Observal/commit/c0d920771534e8c37d81296c552dc2da2fb52f6a))
- add per-agent hooks for Cursor, VSCode, Copilot, OpenCode (**hooks**) ([f5fea44](https://github.com/BlazeUp-AI/Observal/commit/f5fea444d196ad70ffeb47d8ab0a8b10c053c302))
- frontmatter hooks for registered-agents-only mode (**telemetry**) ([b41a43d](https://github.com/BlazeUp-AI/Observal/commit/b41a43d7dd0401b4f04becd40390574724621160))
- add registered-agents-only toggle to admin settings (**web**) ([5b91279](https://github.com/BlazeUp-AI/Observal/commit/5b91279d707157092ca8eba7500f2e1d7b20a2f9))
- enforce registered-agents-only in scan and doctor patch (**cli**) ([48ee717](https://github.com/BlazeUp-AI/Observal/commit/48ee7173d03f8310e4159c3f7b7cdb8e01ec95b3))
- filter unregistered agent spans at ingest time (**telemetry**) ([66de033](https://github.com/BlazeUp-AI/Observal/commit/66de033527e3f465b0a2c2fffb63aea8eb321920))
- add registered_agents_only org toggle (**settings**) ([0ea4aed](https://github.com/BlazeUp-AI/Observal/commit/0ea4aedcea739b1f7f6a1d8dc456d4d6d2951654))
- add keep-open guard, 2-issue limit, stale auto-unassign, and update CONTRIBUTING.md (**ci**) ([55fc8b3](https://github.com/BlazeUp-AI/Observal/commit/55fc8b3da3b6bd440eb51d9e7bfca0d00500f9a6))
- add /drop command to unassign from issues (**ci**) ([b6dc61c](https://github.com/BlazeUp-AI/Observal/commit/b6dc61c317a83cccc9a9d6937c9dbe1f96c8ef86))
- add /take command for community issue assignment (**ci**) ([2e7d2f1](https://github.com/BlazeUp-AI/Observal/commit/2e7d2f145fdd82bb71bce8ba206ba790cc9e426c))
- move review actions to detail page ([8607a4f](https://github.com/BlazeUp-AI/Observal/commit/8607a4fd92757b62725b831b68529945c089d00a))
- warn when CLI version is older than server requires (**cli**) ([de72f85](https://github.com/BlazeUp-AI/Observal/commit/de72f85ef0fbd40167f3326d6684fb43f82e3f2d))
- add agent_version column to traces, spans, scores (#636) (**clickhouse**) ([1945442](https://github.com/BlazeUp-AI/Observal/commit/1945442636611a789b729098e473933a8540ccad))
- review diff dialog with GitHub-style split view (#633) (**web**) ([5b170b2](https://github.com/BlazeUp-AI/Observal/commit/5b170b2fb52f96cafda1819f975b5cca9d57cd0c))
- agent edit form with version release workflow (#630) (**web**) ([c0e299d](https://github.com/BlazeUp-AI/Observal/commit/c0e299d04f81be08a7b6db8bef4cc315c0d7e52c))
- agent detail page version dropdown and role-based tabs (#629) (**web**) ([bc80507](https://github.com/BlazeUp-AI/Observal/commit/bc805071637a4e96731af0fdec4d52ef95732111))
- agent release, versions, and pull commands (#625) (**cli**) ([d07e7f0](https://github.com/BlazeUp-AI/Observal/commit/d07e7f0cd2f0107c1ef4ee71e6c237aea10e55a4))
- agent versioning endpoints with IDE config and YAML diff (#622) (**api**) ([7b5e127](https://github.com/BlazeUp-AI/Observal/commit/7b5e127b0e5a6dc1f35faecd536f7362f1831ba8))
- component versioning endpoints for all 5 types (#621) (**api**) ([cab86c1](https://github.com/BlazeUp-AI/Observal/commit/cab86c17f5a38b0db43f137784c5b57a34650704))
- migration 0022 drop listing columns and inline source fields (**db**) ([4e8fa71](https://github.com/BlazeUp-AI/Observal/commit/4e8fa7173b2d5e78538b3471c88d33af5ee45048))
- listing tables identity-only with compat properties (**models**) ([0a77c2d](https://github.com/BlazeUp-AI/Observal/commit/0a77c2d31553295a3dae433554a11b0aec2b13bc))
- add versioned config generation and lock file support (**services**) ([1d7e881](https://github.com/BlazeUp-AI/Observal/commit/1d7e881fd757c5fc7bf911a84ea93a3982f4c3ec))
- add AgentVersion table and restructure Agent to identity-only (**db**) ([93b4a70](https://github.com/BlazeUp-AI/Observal/commit/93b4a70e4d8c199ded7a1b2f0e476ddc2f4ca42a))
- add component version tables for all 5 types (**db**) ([3dab14b](https://github.com/BlazeUp-AI/Observal/commit/3dab14b8453a5bf69e42b47e3ed27cd483a55f89))
- implement agent registry RBAC (**server**) ([196a040](https://github.com/BlazeUp-AI/Observal/commit/196a0407d8e83e46b4d13353beb692feb58117c4))
- add account page with profile, theme picker, and notifications (**web**) ([d748558](https://github.com/BlazeUp-AI/Observal/commit/d7485587c3bbdfd043fdfe58eb6bc4c4170758e1))
- add 10 curated IDE themes with hand-tuned oklch palettes (**web**) ([dcbb704](https://github.com/BlazeUp-AI/Observal/commit/dcbb7047bb31d3fc0fd590b9092b5bbe3270e8ce))
- add `observal doctor cleanup` command (**cli**) ([ab26241](https://github.com/BlazeUp-AI/Observal/commit/ab26241ab2a129a9479e92b78425138dc5477e8e))
- add copilot-cli doctor checks and SLI repair ([fe8f91a](https://github.com/BlazeUp-AI/Observal/commit/fe8f91af37c6e3d354906c022aaba2e12eb4b816))
- add copilot-cli scan and hook injection ([8956644](https://github.com/BlazeUp-AI/Observal/commit/8956644008e824ba59675be52448880170a544e8))
- add copilot-cli server-side config generation ([7c71b94](https://github.com/BlazeUp-AI/Observal/commit/7c71b94b2bdeb3827ecfb48bda0180b065d4de8f))
- add copilot-cli hook scripts ([4e22c5c](https://github.com/BlazeUp-AI/Observal/commit/4e22c5cf5907c30488e9cb73137495e057463535))
- add copilot-cli to IDE constants and feature matrix ([065900b](https://github.com/BlazeUp-AI/Observal/commit/065900b63c6f7fd60c1c6d11d9e730d51732293e))
- add Edit and Resubmit UI for rejected agents and components (**web**) ([1d22a61](https://github.com/BlazeUp-AI/Observal/commit/1d22a61a940d2cf7dd3248515079b1d7d34429f0))
- inject hooks via scan and auth login, update doctor (**gemini**) ([2e3b3a0](https://github.com/BlazeUp-AI/Observal/commit/2e3b3a0e8beffa44d9db3121fbd559ebb0f8bd08))
- add hook_bridge and otlp_telemetry to feature matrix (**gemini**) ([e3b442c](https://github.com/BlazeUp-AI/Observal/commit/e3b442c99a3ba3df986703cc9813172980ac806d))
- add hook bridge scripts for telemetry capture (**gemini**) ([0ef45e2](https://github.com/BlazeUp-AI/Observal/commit/0ef45e2f9b83a576e9427830105a2961ad55d4bf))
- add kernel DAG efficiency analysis and session visualization (**eval**) ([434df95](https://github.com/BlazeUp-AI/Observal/commit/434df95f3a883c7a8fe33076227abdad3af65f5a))
- add Moonshot/Kimi judge provider (**eval**) ([fc3ed5d](https://github.com/BlazeUp-AI/Observal/commit/fc3ed5d5f0535c208651a16dd17918078eff9f89))
- display dimension scores and overall display score (**dashboard**) ([3745f2f](https://github.com/BlazeUp-AI/Observal/commit/3745f2f9d69e87f7bf672556e77831613c495d18))
- add agent/skill attribution for all IDEs (**otel**) ([1b261ce](https://github.com/BlazeUp-AI/Observal/commit/1b261cedd0f4cebef43646d666cc9e4541d3596e))
- add CLI commands for all Auth 2.0 backend capabilities (**cli**) ([09cb5bb](https://github.com/BlazeUp-AI/Observal/commit/09cb5bb9b22c9b882cd4c9acc743fd31cdd00755))
- username login, forced password change, remove registration (**auth**) ([1824316](https://github.com/BlazeUp-AI/Observal/commit/1824316602219d70aecdd74a3d204a24de1af7a0))
- add admin SSO & SCIM management page (**web**) ([e44c82e](https://github.com/BlazeUp-AI/Observal/commit/e44c82e0dda68366b0287664f89ae04548ebe974))
- add OAuth 2.0 Device Authorization Grant (RFC 8628) endpoints (**auth**) ([092a368](https://github.com/BlazeUp-AI/Observal/commit/092a36868646b97a1dcf736af7eca0f5664f3ec1))
- add SSO login via OAuth 2.0 Device Authorization Grant (**cli**) ([f9123b8](https://github.com/BlazeUp-AI/Observal/commit/f9123b8e9400c44ebd919d57c7435096b215c97f))
- add device authorization page for OAuth device flow (**web**) ([111c9dc](https://github.com/BlazeUp-AI/Observal/commit/111c9dc9a86b2d958fff973ad968ca2a8fad6ede))
- add SAML RelayState support for post-login redirect (**ee**) ([58389c1](https://github.com/BlazeUp-AI/Observal/commit/58389c1d539b6ba58a949c11dd9085a535b47971))
- add admin SSO APIs, SCIM hardening, and timing-safe token verification (**ee**) ([570b8a6](https://github.com/BlazeUp-AI/Observal/commit/570b8a6ce2cbd0b0b983b40316459737c642dc17))
- add SAML assertion replay protection via Redis (**ee**) ([e502d4c](https://github.com/BlazeUp-AI/Observal/commit/e502d4ca13f2ef772b01cd0c9d9d9a29a1b93f72))
- add SCIM PATCH and discovery endpoints (RFC 7644) (**ee**) ([b712649](https://github.com/BlazeUp-AI/Observal/commit/b7126493803cfaca437a865693d7f35f0326b039))
- add SAML SSO login button and settings status display (**ee**) ([50e19d0](https://github.com/BlazeUp-AI/Observal/commit/50e19d0102e513fc223f9837602eb2244e25ca1c))
- wire SAML config into public endpoint and config validator (**ee**) ([fdf236a](https://github.com/BlazeUp-AI/Observal/commit/fdf236a220351086fd4f0bb83fd9be3e872ba5a5))
- implement SCIM 2.0 provisioning endpoints (**ee**) ([7462040](https://github.com/BlazeUp-AI/Observal/commit/7462040290623b7574ebb8cf87b3b084bd16601e))
- add SCIM 2.0 service layer with user parsing and formatting (**ee**) ([89bf12f](https://github.com/BlazeUp-AI/Observal/commit/89bf12f512999dc181da9a9c5fc116b639380c46))
- implement SAML SSO endpoints (SP-initiated, IdP-initiated, metadata) (**ee**) ([e3901e1](https://github.com/BlazeUp-AI/Observal/commit/e3901e1fcba7adbd588e6abc47db0c008b093d6d))
- add SAML service layer with SP key generation and settings builder (**ee**) ([785f84e](https://github.com/BlazeUp-AI/Observal/commit/785f84e39dc84fe88d2fcc19a97529ea94f85a8d))
- add SAML 2.0 configuration env vars (**ee**) ([fc16f4d](https://github.com/BlazeUp-AI/Observal/commit/fc16f4d5d13f3891f226b49f8df61fa85de7be18))
- add SamlConfig, ScimToken models and user SSO fields (**ee**) ([13c8ef2](https://github.com/BlazeUp-AI/Observal/commit/13c8ef2cb97d963841e5abf2897c62c04426fc64))
- add migration for SAML config, SCIM tokens, and user SSO fields (**ee**) ([5381219](https://github.com/BlazeUp-AI/Observal/commit/53812191c38a19d77dfc30780e6a35a415c1ac08))
- add python3-saml and cryptography dependencies (**ee**) ([a946e3d](https://github.com/BlazeUp-AI/Observal/commit/a946e3db65c16cafa7bb1c90ed66156cad2786f6))
- add SSO_ONLY mode to make SSO optional in enterprise (**auth**) ([0bebe9d](https://github.com/BlazeUp-AI/Observal/commit/0bebe9d6d02c6e137124e0727d28fc9007df4f2f))
- move leaderboard to /leaderboard and add Users tabs (**web**) ([906bf2d](https://github.com/BlazeUp-AI/Observal/commit/906bf2d5ea167fca7792e2b4c69a63f19c6e8a6b))
- add admin nav items and move leaderboard to /leaderboard (**web**) ([fc72adf](https://github.com/BlazeUp-AI/Observal/commit/fc72adfce0762aa432ac4265f8cad67b794e2b31))
- add audit log, security events, and diagnostics pages (**web**) ([2f0c9c8](https://github.com/BlazeUp-AI/Observal/commit/2f0c9c8fc6f7453ceaf54c7b356fcde078dce1b4))
- add API layer for audit log, security events, diagnostics (**web**) ([724f2f2](https://github.com/BlazeUp-AI/Observal/commit/724f2f2b4fd03b2fa83287db6ca0f8ed42192bef))
- instrument all endpoints with audit() calls (**audit**) ([044ee76](https://github.com/BlazeUp-AI/Observal/commit/044ee7623841db75cff02198d81d448c5632141c))
- add HIPAA-level audit logging infrastructure (**audit**) ([4ec723b](https://github.com/BlazeUp-AI/Observal/commit/4ec723b0bb6ab66651270cddba9251f1f913a160))
- add usage examples to `create-user` help text (**cli**) ([7cf95f3](https://github.com/BlazeUp-AI/Observal/commit/7cf95f3fa2102be38484397a7e8970ff4d2d0cb6))
- add `create-user` command to `observal admin` (**cli**) ([6243106](https://github.com/BlazeUp-AI/Observal/commit/6243106952cf8027427721f830f04169a2700970))
- add MCP server dropdown to skill creation form (**web**) ([401c9f0](https://github.com/BlazeUp-AI/Observal/commit/401c9f0d3edbb94aecf61d283627c6d6d0af6b42))
- include mcp_server_config in skill form submission (**web**) ([4e40fcf](https://github.com/BlazeUp-AI/Observal/commit/4e40fcf1c0a21b329fda8dcf1e9ef05db49835f0))
- add MCP server state and query to skill form (**web**) ([3cae9b8](https://github.com/BlazeUp-AI/Observal/commit/3cae9b8914ab10607275dd69f7b93992b2432101))
- add trace privacy toggle to admin settings (**web**) ([5f443d6](https://github.com/BlazeUp-AI/Observal/commit/5f443d6ceddd21a154ba566ab1339fe480b4909e))
- enforce trace privacy in backend query paths ([cf60c37](https://github.com/BlazeUp-AI/Observal/commit/cf60c376e554bac60386481ff1270bdd0e68132c))
- add trace_privacy column to organizations ([d2d233d](https://github.com/BlazeUp-AI/Observal/commit/d2d233dd0094f754be7dd05266538e6f792489d8))
- add observal migrate telemetry commands for ClickHouse deep copy ([a94b443](https://github.com/BlazeUp-AI/Observal/commit/a94b4436e662f285c99be0fdb4bca20c69ad6979))
- show $VAR as <VAR> placeholders in config preview (**cli**) ([09fc018](https://github.com/BlazeUp-AI/Observal/commit/09fc01895375742afa3c088c7cba0bb44081204d))
- add server-side endpoint discovery, eliminate hardcoded URLs ([621b107](https://github.com/BlazeUp-AI/Observal/commit/621b107d6cd1cbc92475f24f85eafa91acc64507))
- add auto-shim telemetry for Codex, Copilot, and OpenCode (**cli**) ([0706b21](https://github.com/BlazeUp-AI/Observal/commit/0706b217567da0ff41fa4f6ba9fc1ba73059fedc))
- add home scan functions for Codex, Copilot, and OpenCode (**cli**) ([02655d9](https://github.com/BlazeUp-AI/Observal/commit/02655d9cf6d0c288474ea48ebd0f2f4fe4cd9969))
- wire Gemini CLI, Codex, and OpenCode configure calls into auth flows (**cli**) ([07d4a03](https://github.com/BlazeUp-AI/Observal/commit/07d4a03b0092be9d14480963e3b9c6417d4a5eac))
- add first-class support for Codex CLI, Gemini CLI, Copilot, and OpenCode (#434) ([ae36426](https://github.com/BlazeUp-AI/Observal/commit/ae3642614a01c7d313b5d1c31cf77c63b5367a78))
- enrich review commands with name resolution and full coverage (**cli**) ([93438db](https://github.com/BlazeUp-AI/Observal/commit/93438db2406d7b54fd859645db6df0949a212b9a))
- review queue detail view, smart bulk approve, and rejection visibility (#449) ([3bcb50e](https://github.com/BlazeUp-AI/Observal/commit/3bcb50e9c78d9507c11b7fcfeb0d47a67b8ba481))
- add ownership tooltip to submit dialogs (**web**) ([e5a6138](https://github.com/BlazeUp-AI/Observal/commit/e5a6138f3ab985e55a718ee927fb445cf70a8ce7))
- horizontal scaling — multi-instance API and worker support (#232) (**infra**) ([6d08b83](https://github.com/BlazeUp-AI/Observal/commit/6d08b833842325e28d165a056f7066e5cfe997a6))
- add make reset target to nuke volumes and rebuild fresh ([c3f50ce](https://github.com/BlazeUp-AI/Observal/commit/c3f50ce5ea4866b7e9831ccf4f8af0d76ffcb48f))
- add Prometheus, Grafana dashboard, and update Docker healthcheck ([398f112](https://github.com/BlazeUp-AI/Observal/commit/398f112643cafb8e20c88201dc1161332eb0e371))
- add structured logging to arq worker ([6413425](https://github.com/BlazeUp-AI/Observal/commit/641342523752bf371f43fd4849e762b8b0ecf6e6))
- add health probes, Prometheus metrics, and structured logging to API ([f347708](https://github.com/BlazeUp-AI/Observal/commit/f3477089f5c017f61b2edc24701873f967e0573f))
- add Redis ping() health check and convert to structured logging ([a133b17](https://github.com/BlazeUp-AI/Observal/commit/a133b17d38d2e956bcc374dc4cf158f8e0da9ac8))
- bind request ID to structlog context ([757da23](https://github.com/BlazeUp-AI/Observal/commit/757da23c9e5b04882f59f353a45b88f0f6e34271))
- add structured logging configuration ([db81c78](https://github.com/BlazeUp-AI/Observal/commit/db81c78bc0be00bfeee1d19d5316bd29e7cf0542))
- add structlog and prometheus-fastapi-instrumentator dependencies ([ce788b9](https://github.com/BlazeUp-AI/Observal/commit/ce788b945d791189134cbcb7ee772f97c8063a5f))
- split settings into sections with resource tooltips (**web**) ([227b783](https://github.com/BlazeUp-AI/Observal/commit/227b783761c96280997bd6dafd859d00df744163))
- add runtime ClickHouse resource tuning via admin UI (**server,web**) ([6400bd6](https://github.com/BlazeUp-AI/Observal/commit/6400bd66346af9679025e8e915a945402b4ef1d3))
- redesign traces page with unified Kiro and Claude Code view (**web**) ([e648ad5](https://github.com/BlazeUp-AI/Observal/commit/e648ad535a0766fcea6bb42a3df7bd3fbb390baf))
- extend session types, API layer, and hooks for v4 traces (**web**) ([5575ac4](https://github.com/BlazeUp-AI/Observal/commit/5575ac404506fe3242261230c91c8f58c296b39f))
- add user resolution, platform/time filters, and summary endpoint (**server**) ([2befd44](https://github.com/BlazeUp-AI/Observal/commit/2befd44097c3b3b799578a237b16473842b98ff5))
- propagate username through hooks and env vars (**cli**) ([f41ff37](https://github.com/BlazeUp-AI/Observal/commit/f41ff37201574e1b44dea3be7f8d48c5a97a79df))
- show IDE compatibility badges on agent cards and detail pages (**web**) ([151e55b](https://github.com/BlazeUp-AI/Observal/commit/151e55be229f64a878182dbc100aba69e33e1bed))
- auto-infer IDE compatibility on agent create/update and warn at install (**server**) ([e1e39ae](https://github.com/BlazeUp-AI/Observal/commit/e1e39ae3ca9e03796dffb19f518f6d0d74889424))
- add required_ide_features and inferred_supported_ides to agent model (**server**) ([1214bc3](https://github.com/BlazeUp-AI/Observal/commit/1214bc3ac76932759951658688dd091abcd86b22))
- add IDE feature inference service (**server**) ([82b897e](https://github.com/BlazeUp-AI/Observal/commit/82b897e66a47f4c2926f6a9a5703852f3a77a4ff))
- add IDE feature capability matrix to constants (**server**) ([f259125](https://github.com/BlazeUp-AI/Observal/commit/f25912560f3807a1a0cdf629391fda4f747d0fc2))
- detect dollar-sign input vars in git-URL submit path (**cli**) ([a22c37e](https://github.com/BlazeUp-AI/Observal/commit/a22c37e29a83f852d6a49a3b99a901dc7ea7af6f))
- substitute $VAR placeholders in stored args at install time (**server**) ([a415036](https://github.com/BlazeUp-AI/Observal/commit/a415036096c927a22b8389b5270d686d43f84a58))
- detect dollar-sign input variables in mcp submit --config (**cli**) ([0705ee0](https://github.com/BlazeUp-AI/Observal/commit/0705ee00b0ff0d2c00f110f10a15de5df8bb2210))
- add ASCII welcome banner on auth login (#202) ([043147f](https://github.com/BlazeUp-AI/Observal/commit/043147fde13efc05c3fb1da7e539d160b00c91bd))
- add Redis-backed caching and gzip compression ([1803470](https://github.com/BlazeUp-AI/Observal/commit/18034709d7d1cccafd490bfe06558e53156d3547))
- add post-auth onboarding with IDE detection and component upload ([8660f3e](https://github.com/BlazeUp-AI/Observal/commit/8660f3e8fdc2ce0fe91faadf49bc6f1c4257a78b))
- allow users to view their own traces (#431) (**traces**) ([3be2c5c](https://github.com/BlazeUp-AI/Observal/commit/3be2c5c69d95f2f9b6df9cdeeb442586144050d1))
- generate IDE-specific skill files on agent install (#431) (**skills**) ([b276718](https://github.com/BlazeUp-AI/Observal/commit/b276718d29427a5ab30a5db0e35d12f4440db339))
- add structured security event logging for SIEM integration (#233) (**sec**) ([5d61282](https://github.com/BlazeUp-AI/Observal/commit/5d61282f9003c7001d4b19226362a92971982c99))
- add escape_like() utility and tests (**sec**) ([2c9ee56](https://github.com/BlazeUp-AI/Observal/commit/2c9ee561d4fc4e01e8b6da0d858376452a6843f1))
- add shim badge on trace events with merged shim data (**ui**) ([929cb47](https://github.com/BlazeUp-AI/Observal/commit/929cb47023c810f9db9861d9c6a79ec7615e1179))
- add unarchive action for archived agents ([9a9e352](https://github.com/BlazeUp-AI/Observal/commit/9a9e352c283f88e6b73697d3cfe1fdbb0f8908c0))
- add delete/withdraw action for pending items in review queue ([71e4250](https://github.com/BlazeUp-AI/Observal/commit/71e4250702288ed2be517f1cff06a6191005110b))
- add draft workflow and submission forms for all component types ([2f52f02](https://github.com/BlazeUp-AI/Observal/commit/2f52f02ceeb4ed3471bde8a98c60f90cbc6dde5f))
- add custom inline prompt input to agent builder Prompts tab (**web**) ([6029763](https://github.com/BlazeUp-AI/Observal/commit/60297638de8be62e05c3f30cd7676d75f7fb4b93))
- unwrap mcpServers wrappers and extract server name from pasted configs (**cli**) ([1ddc49b](https://github.com/BlazeUp-AI/Observal/commit/1ddc49bdde6e46458aa4505282a535456a0a806c))
- add header prompting at install time for SSE/HTTP servers (**cli**) ([b4dd457](https://github.com/BlazeUp-AI/Observal/commit/b4dd457f445a148319c7504828b267e6e1b3916d))
- revamp submit UX with config preview and direct JSON config support (**cli**) ([0a3ff6f](https://github.com/BlazeUp-AI/Observal/commit/0a3ff6f4ca8a5485fab5510e6ac3822100a41d61))
- support three transport types — stdio, SSE, HTTP proxy (**config**) ([522f270](https://github.com/BlazeUp-AI/Observal/commit/522f27081b5066e8be3f815d2bd6054acad477e8))
- store command/args/url/headers on submit, pass headers on install (**routes**) ([9b38fff](https://github.com/BlazeUp-AI/Observal/commit/9b38fffd7f094b938b3434c88bbd9fc8a23330d2))
- auto-detect docker images and infer command/args from repos (**validator**) ([1b6b34c](https://github.com/BlazeUp-AI/Observal/commit/1b6b34c7e40ce2095ca44ce504fdc61fa5facef8))
- add transport/SSE/header fields to MCP schemas (**schemas**) ([daa2d5d](https://github.com/BlazeUp-AI/Observal/commit/daa2d5d624218b44502dba5878126325a834f2fb))
- add command, args, url, headers, auto_approve columns to mcp_listings (**db**) ([a7f184c](https://github.com/BlazeUp-AI/Observal/commit/a7f184c4f5aa78e4fe66e4958fe69f22aa188c38))
- org-scope agent endpoints and stamp owner_org_id on all listings (**multi-tenancy**) ([aff0883](https://github.com/BlazeUp-AI/Observal/commit/aff088355fce90806e720181baeb679ae745b011))
- org-scoped project_id and route filtering (**multi-tenancy**) ([10c41e4](https://github.com/BlazeUp-AI/Observal/commit/10c41e4a82606caa6cab5e5156a122fbee34c527))
- scope user management to org and assign org_id on creation (**admin**) ([2bdf1ea](https://github.com/BlazeUp-AI/Observal/commit/2bdf1eafd4a4bce56da6223b978c8291122d9901))
- add org-aware dependencies and auto-assign default org (**auth**) ([0d25bd2](https://github.com/BlazeUp-AI/Observal/commit/0d25bd2a0fa7a2faee1fcdd6096ec6e8773e7b63))
- add version bump dialog to agent builder (**web**) ([5875985](https://github.com/BlazeUp-AI/Observal/commit/5875985c550d3476a5bc548b134b424268c6d66c))
- add draft workflow with localStorage auto-save (**web**) ([837e3dc](https://github.com/BlazeUp-AI/Observal/commit/837e3dc6a9eb93e35e99e5b868dca7427779a57e))
- add agents tab with component readiness to review page (**web**) ([a20cd85](https://github.com/BlazeUp-AI/Observal/commit/a20cd8549677e1bcb10204025c14648308290006))
- add agent bulk-create command (**cli**) ([d2d360b](https://github.com/BlazeUp-AI/Observal/commit/d2d360bedd7ec543e60d29bb371fdeab978d3af9))
- add user filter and component tabs to leaderboard (**web**) ([cb52a55](https://github.com/BlazeUp-AI/Observal/commit/cb52a55b62d288ea4da10c5d229146b860ff63d4))
- add archive action to agent pages (**web**) ([ddc8e9c](https://github.com/BlazeUp-AI/Observal/commit/ddc8e9c1291166754c3126c507f9d5b490505b75))
- add API hooks for review, archive, draft, version, leaderboard, bulk (**web**) ([7e2fe92](https://github.com/BlazeUp-AI/Observal/commit/7e2fe92969b4962a789f8939c80b3068ede93653))
- add bulk agent upload endpoint and schemas (**server**) ([1295e58](https://github.com/BlazeUp-AI/Observal/commit/1295e58317932d5852b95fabd7598152bc6b04e1))
- add archived variant to StatusBadge (**web**) ([7bf035d](https://github.com/BlazeUp-AI/Observal/commit/7bf035dfa936b03180f1ea4ccc0f38e80286a421))
- add dismissible GitHub star banner to page header ([11d3d09](https://github.com/BlazeUp-AI/Observal/commit/11d3d0927e84927d33d2a1c3d77803aebcfb251b))
- add username field to User model (#339) (**auth**) ([c001b1b](https://github.com/BlazeUp-AI/Observal/commit/c001b1b3f29ff66a87ce3e96e3fa91a6598e6a80))
- add delete agent functionality to frontend (**web**) ([4204176](https://github.com/BlazeUp-AI/Observal/commit/42041769d2a52f6f6a9d5d4c920cbce856a52a3a))
- add review queue, versioning, bundles, archive, and draft workflow (**agent**) ([27f1f6a](https://github.com/BlazeUp-AI/Observal/commit/27f1f6a81f4258d63c3814464b684cde072d4385))
- add observal agents cli cmds (**agent**) ([7e6a206](https://github.com/BlazeUp-AI/Observal/commit/7e6a2069817aa13777891f847c8843c3ff93431a))
- robust multi-language env var detection and config generation fixes ([5d633c5](https://github.com/BlazeUp-AI/Observal/commit/5d633c555d350895b461859d6c818c67466564f0))
- unify telemetry — merge hooks, shims, and OTLP into one event stream ([1dce747](https://github.com/BlazeUp-AI/Observal/commit/1dce7472b2a3706fbf92cd4dbbd01d6cf105bc8f))
- add live session updates via GraphQL subscriptions ([9cc5bd1](https://github.com/BlazeUp-AI/Observal/commit/9cc5bd188617dbbfd51005336cdd9d24e34665e5))

### CI

- add workflow for backend integration tests ([ba4e741](https://github.com/BlazeUp-AI/Observal/commit/ba4e741feaf813f27eec071c7720ac9451f90866))
- add deploy-dev workflow for main branch auto-deploy ([40f2203](https://github.com/BlazeUp-AI/Observal/commit/40f22031befc48c38ec3af8c6886ead52ac61cca))
- add deploy-dev workflow for main branch auto-deploy ([4393ce0](https://github.com/BlazeUp-AI/Observal/commit/4393ce0fcfd3a2832fcb9f5dbebd7cb3b9e3a893))
- trigger on release tags only, not push to main (**deploy**) ([83cbf33](https://github.com/BlazeUp-AI/Observal/commit/83cbf3367b3426cd08d615af693191a7c3a6ae1e))
- add stale issue/PR workflow with keep open exemption ([b3f8433](https://github.com/BlazeUp-AI/Observal/commit/b3f8433750f8f5292ea448b8b41fb5b8eef262ba))
- use GitHub App token for release tag push ([0c9c696](https://github.com/BlazeUp-AI/Observal/commit/0c9c69635a6c9f0772d3bf465e4956b577d02c16))
- automated release pipeline for CLI, Docker, and server packages ([877e4e1](https://github.com/BlazeUp-AI/Observal/commit/877e4e1705f900f88c6c03582fcd39569aec8268))
- add asyncpg and hypothesis to test runner ([abff6ad](https://github.com/BlazeUp-AI/Observal/commit/abff6ad95887a6414636b4cd8b64100b450037e5))
- add auto-deploy workflow for EC2 server ([c6d3fc8](https://github.com/BlazeUp-AI/Observal/commit/c6d3fc886422702b880f8ddfea4bbfab64d44ed4))

### Changed

- derive org columns and NOT NULL defaults from schema, improve warnings ([5380a65](https://github.com/BlazeUp-AI/Observal/commit/5380a650744196d1eba88e93b700eb03a6b6c9d9))
- address review feedback on migrate import ([1fa852e](https://github.com/BlazeUp-AI/Observal/commit/1fa852e9e82994d796b35bc3c8003801c8f30289))
- redesign HTML report with warm, refined color scheme (**insights**) ([894e327](https://github.com/BlazeUp-AI/Observal/commit/894e327939d3e36807605ba2b2ca3df7ec01e61d))
- remove triplicated display logic from CLI and frontend ([b5ab0be](https://github.com/BlazeUp-AI/Observal/commit/b5ab0be6d63a83de5e06c1c89174d950b41b0fbd))
- move extra_ingest_rows into kiro.py (**ingest**) ([f0e7540](https://github.com/BlazeUp-AI/Observal/commit/f0e754078fcf951c4ad45514d8396dd26811529f))
- move Kiro credits logic to ingest_classify.py (**ingest**) ([054fbf1](https://github.com/BlazeUp-AI/Observal/commit/054fbf1abc1fd1d83ca45718826d58044ac008ca))
- ruff format hook_event resolution (**kiro**) ([723ec55](https://github.com/BlazeUp-AI/Observal/commit/723ec55782d66e6827f413213cef0f4db15ae3d7))
- replace enrichment-heavy route with clean Harness version (**reconcile**) ([95d34e0](https://github.com/BlazeUp-AI/Observal/commit/95d34e0311b16edc25581aeb7c572e22d894ea6b))
- remove CLI commands, keep crash recovery library (**reconcile**) ([5103982](https://github.com/BlazeUp-AI/Observal/commit/5103982496d42ac0782816c071c3dd170c4c5023))
- remove legacy hook pipeline, keep shim and buffer (**telemetry**) ([40a5be4](https://github.com/BlazeUp-AI/Observal/commit/40a5be4d63a796dc02ddb49221370ed4d4e424a7))
- rewrite queries to use session_events table (**sessions**) ([437cf58](https://github.com/BlazeUp-AI/Observal/commit/437cf5873da924b1c9b8d193aa14f32a56c5329a))
- strip shim/OTEL logic, keep only session push hooks (**doctor**) ([883b95a](https://github.com/BlazeUp-AI/Observal/commit/883b95aee1b364f9f361543eda6f7fb4fca3ad8a))
- squash all 28 migrations into single baseline (**migrations**) ([1c5abdd](https://github.com/BlazeUp-AI/Observal/commit/1c5abdd04e7bfea798026f54391d984bce0f1a8f))
- ruff format agent.py ([4ef21c3](https://github.com/BlazeUp-AI/Observal/commit/4ef21c345ae13302cf66530a6e8ca5a2a63c6cf3))
- ruff format api route files ([b003bbe](https://github.com/BlazeUp-AI/Observal/commit/b003bbe0eb66dbf225348834e0a8f65a04a217ce))
- ruff format component_version_extras and component_versions ([af394b6](https://github.com/BlazeUp-AI/Observal/commit/af394b685ff123900710bed6c98f3d177acd24a6))
- centralize IDE registry into single source of truth (**registry**) ([295ad48](https://github.com/BlazeUp-AI/Observal/commit/295ad486387ee2804c3e357d8c974dcda206fa54))
- restructure scan/doctor commands, fix Kiro active sessions (**cli**) ([7273872](https://github.com/BlazeUp-AI/Observal/commit/7273872f5f3e2d3de06f56542ade3ea05f9759af))
- extract IDE hook specs into observal_cli/ide_specs/ (**cli**) ([4ff36b5](https://github.com/BlazeUp-AI/Observal/commit/4ff36b5989da2a22486051676973de9bfc5be299))
- rename hooks_spec.py → claude_code_spec.py (**cli**) ([404831b](https://github.com/BlazeUp-AI/Observal/commit/404831bdb5635731c7c77fe7fe7d6dec5314260c))
- format test_ide_config_e2e.py ([707156a](https://github.com/BlazeUp-AI/Observal/commit/707156a0612a9f52abc44c4e418f8e69bfc9c195))
- format telemetry.py and cmd_scan.py ([cc92e5b](https://github.com/BlazeUp-AI/Observal/commit/cc92e5b21005b8155a9e8d11059f42a7602a1b4a))
- format test_settings_reconciler.py ([fedfcbb](https://github.com/BlazeUp-AI/Observal/commit/fedfcbbfb840bfc9a4e895c11d76eef3b1d76a10))
- fix remaining /otel/hooks references across CLI commands (**cli**) ([637e8fd](https://github.com/BlazeUp-AI/Observal/commit/637e8fd1a6a0c6fa17efec9c7e7b2c3b5931855c))
- merge OTLP handlers from otlp.py, delete otlp.py (**telemetry**) ([098995e](https://github.com/BlazeUp-AI/Observal/commit/098995e7b6e94ec4ddbc372cc75be690feec5d40))
- rename otel_dashboard → sessions, prefix /api/v1/sessions (**api**) ([ea9275a](https://github.com/BlazeUp-AI/Observal/commit/ea9275a195b1e44ae8bf963cd39af299da5d4a1b))
- rename /otel/ API paths to /sessions/ (**web**) ([22cc14d](https://github.com/BlazeUp-AI/Observal/commit/22cc14d157118b55c29fe96f2df51d763e1e970a))
- move hooks handler from otel_dashboard to telemetry router (**telemetry**) ([aee071e](https://github.com/BlazeUp-AI/Observal/commit/aee071e7325ca0ff6d23357c01924d3585962a58))
- use server_url for OTLP, remove port derivation (**cli**) ([637ee9f](https://github.com/BlazeUp-AI/Observal/commit/637ee9f2eea346b0e54a5789d457aa8e3e5f264e))
- fix OTLP fallbacks and hook URL paths (**config-gen**) ([6717515](https://github.com/BlazeUp-AI/Observal/commit/67175151797e7ca9d2b8b93122ce3f2ec2cc1a98))
- switch to HTTP/JSON OTLP, single-endpoint URLs (**hooks-spec**) ([f532296](https://github.com/BlazeUp-AI/Observal/commit/f532296ac1cc8eb39a6a5d955ddf8840617fb8f2))
- single-endpoint OTLP — remove gRPC, default to API URL (**config**) ([79e9801](https://github.com/BlazeUp-AI/Observal/commit/79e9801577c640e7318b11a9cba032816bbcfefc))
- remove OTEL collector, add nginx /v1/ routing (**infra**) ([d4f45ed](https://github.com/BlazeUp-AI/Observal/commit/d4f45edeb7e141c70d56a3f191f32a60e9b09198))
- remove redundant steering file generation (**kiro**) ([c49ec3c](https://github.com/BlazeUp-AI/Observal/commit/c49ec3c39505d4b46ddfa7e2ca4b5fd13fd58810))
- fix ruff lint and format issues ([6e33021](https://github.com/BlazeUp-AI/Observal/commit/6e33021f5d2ad5b5484b45e591a75458e10ec2b3))
- ruff format main.py ([14832c9](https://github.com/BlazeUp-AI/Observal/commit/14832c9ecda57dba9a9a07843dfc7103eaef34a8))
- fix ruff lint (ternary + import sorting) ([2406c3d](https://github.com/BlazeUp-AI/Observal/commit/2406c3d2168d1a1729f4bd03da00a7a68a11d2e1))
- apply ruff format to saml_config model ([9d3ebf8](https://github.com/BlazeUp-AI/Observal/commit/9d3ebf80d4563debb76e7857587314e0e827b732))
- apply ruff format to audit-instrumented files ([4734a87](https://github.com/BlazeUp-AI/Observal/commit/4734a87ea99ffa725f73257306576c16b7e41519))
- fix ruff format violations in agent route and test ([7902ee0](https://github.com/BlazeUp-AI/Observal/commit/7902ee0c86427ea6685634acfb64bba2d49c7afb))
- make scan local-only, deprecate bulk upload endpoint ([36c28e4](https://github.com/BlazeUp-AI/Observal/commit/36c28e42e977daf8adf9e63e98aa07c208bcba9d))
- fix ruff format violations in auth, scan, and tests ([3ed2df5](https://github.com/BlazeUp-AI/Observal/commit/3ed2df549eb8d23e6fd2597ba87240425f0ec82d))
- apply ruff format to review.py and cmd_ops.py ([f944e77](https://github.com/BlazeUp-AI/Observal/commit/f944e775df704dbad1090cedcc73fca2e836134c))
- fix ruff formatting in cmd_scan.py ([016a6a8](https://github.com/BlazeUp-AI/Observal/commit/016a6a8a9f3efc755fb8b9d8fe9d4b67c9e21c08))
- fix ruff format line length in redis.py ([0a5400a](https://github.com/BlazeUp-AI/Observal/commit/0a5400a57073fd944072ba47902c76ba29095c06))
- convert f-string logs to structured keyword arguments ([33e49b3](https://github.com/BlazeUp-AI/Observal/commit/33e49b36b32bb8086cbd40ab6c8a61daca8b02ba))
- fix ruff formatting in admin routes and clickhouse service ([b57c9fa](https://github.com/BlazeUp-AI/Observal/commit/b57c9fa64ff4462a32a21d8bae2fe81c9e0b4813))
- fix ruff lint and formatting in client.py (**cli**) ([ab5935c](https://github.com/BlazeUp-AI/Observal/commit/ab5935c0e6240103527df084394ff80dae82fd01))
- format review.py for ruff ([f2c68fe](https://github.com/BlazeUp-AI/Observal/commit/f2c68fe4ac0fa704871098f5de093435c99179e7))
- fix ruff formatting in route and CLI files ([55b5f2b](https://github.com/BlazeUp-AI/Observal/commit/55b5f2baf96dbcd52a1789496818bcceab25e436))
- format test_docker_detection.py for ruff ([e6f5d11](https://github.com/BlazeUp-AI/Observal/commit/e6f5d1106361475c25271bd51715b68d02770e99))
- fix ruff format violations in agent_config_generator and cmd_pull ([7128f79](https://github.com/BlazeUp-AI/Observal/commit/7128f79625f5339dd568a4cdfbd6ab956cf47b90))
- apply ruff format to test_eval_phase8.py ([edce7e6](https://github.com/BlazeUp-AI/Observal/commit/edce7e6957d49fded1238426e0ef3401cd2669af))
- apply ruff format to changed files ([e9967d8](https://github.com/BlazeUp-AI/Observal/commit/e9967d83d484a0c47a3900885352988069fc3dc7))
- move eval services and tests into subpackages (**eval**) ([82b935a](https://github.com/BlazeUp-AI/Observal/commit/82b935aaaab5ff345fb63f8b528d74477ebcdcdf))

### Documentation

- update quick start with curl-install and move license to bottom ([d1b4dfa](https://github.com/BlazeUp-AI/Observal/commit/d1b4dfa2f07f645111086d5b957d9b8ed3e1a9d3))
- fix support bundle docs to match implementation ([5ace152](https://github.com/BlazeUp-AI/Observal/commit/5ace1528505828edd2b5d75116fe1c6222d33996))
- add CLI reference for support bundle commands ([59c661e](https://github.com/BlazeUp-AI/Observal/commit/59c661e206b75acac76d2fde576606e97ee45081))
- move AnkiDroid callout before ToC and expand attribution note ([0c890be](https://github.com/BlazeUp-AI/Observal/commit/0c890be4f1f419b0c21e69f22a711f48a9a69e70))
- add CLA and update CONTRIBUTING.md ([b9e7ae8](https://github.com/BlazeUp-AI/Observal/commit/b9e7ae8934a98f3157d88b842ee8671f4eaf20aa))
- update docs link, CLI examples, and fix self-hosting diagram ([c9dcb78](https://github.com/BlazeUp-AI/Observal/commit/c9dcb78526a80032b29e37e3e74d747d8c856992))
- add CLI reference for observal migrate commands ([ad9c1c2](https://github.com/BlazeUp-AI/Observal/commit/ad9c1c2f4a3f2efa9f85d11e555314ff9c31e440))
- overhaul README, SETUP, AGENTS, add screenshots, drop e2e artifacts ([ca435f5](https://github.com/BlazeUp-AI/Observal/commit/ca435f5df8eb061899c2c4c31727a2bc1e25bb5a))
- add Insights V2 roadmap tracking progress across 5 phases ([fe037d5](https://github.com/BlazeUp-AI/Observal/commit/fe037d5c616e7215a135aa2fe4d148e2b93ab6a1))
- update AGENTS.md with new routes, services, and components ([dc5f1aa](https://github.com/BlazeUp-AI/Observal/commit/dc5f1aa1a48cc705d18b91e3159bc2a3de2be7a2))
- update e2e checklist with versioning, editing, and trace toggle tests ([c72c9d3](https://github.com/BlazeUp-AI/Observal/commit/c72c9d31312f70d70970611c8bc86e6c25f81479))
- add screenshots for agent edit form PR ([7860394](https://github.com/BlazeUp-AI/Observal/commit/786039462ee8ffa626c461040e2066967869df6b))
- update stale docstring references to claude_code_spec ([e00e193](https://github.com/BlazeUp-AI/Observal/commit/e00e1930240eddabf2a9e583e59c0eda3f378434))
- update for single-endpoint architecture ([861a3cf](https://github.com/BlazeUp-AI/Observal/commit/861a3cf6fc1cf060e1c92a69c8ea08ded3295ef4))
- add copilot-cli integration guide ([c459254](https://github.com/BlazeUp-AI/Observal/commit/c459254ee837e396e9d8dc3a9fc8b3c40d7c4cb6))
- update integration docs for hook bridge (**gemini**) ([a2d7d9a](https://github.com/BlazeUp-AI/Observal/commit/a2d7d9a6b5a84bd2bedebcdefe6e60e866fc6be6))
- add enterprise E2E test checklist ([4ba96ba](https://github.com/BlazeUp-AI/Observal/commit/4ba96ba0bd297e8dfbd0742c8bdcec7855c1b51b))
- switch Docker callouts from [!IMPORTANT] to [!NOTE] ([087f66c](https://github.com/BlazeUp-AI/Observal/commit/087f66cffc4f473c56c9cdadca364ee1529c3110))
- fix callout formatting in e2e checklist prerequisites ([fba47fc](https://github.com/BlazeUp-AI/Observal/commit/fba47fce36f8efbb7aad765bfdb3793b9bb497b5))
- add Docker version note to installation and quickstart guides ([10a76bd](https://github.com/BlazeUp-AI/Observal/commit/10a76bdce51ff11d729351691c3ca7246747a9ee))
- add Docker version note to self-hosting guides ([d54ce80](https://github.com/BlazeUp-AI/Observal/commit/d54ce800f30d35788ec859710786731049badd05))
- use source install and add Docker prerequisites to e2e checklist ([4a714d4](https://github.com/BlazeUp-AI/Observal/commit/4a714d456098c2b1b722793da8ea92d4322709c9))
- update e2e checklist to add CLI install step ([7e728a2](https://github.com/BlazeUp-AI/Observal/commit/7e728a295d61ea206c4523bce3c2c6bf454d9a00))
- update installation docs to use curl | bash installer ([9ff5b05](https://github.com/BlazeUp-AI/Observal/commit/9ff5b05dc13e20069d06f13ad5a7e3b60b921b56))
- add OIDC/OAuth SSO setup guide and update CLI docs (**ee**) ([57c908c](https://github.com/BlazeUp-AI/Observal/commit/57c908c4e9d76e64b0291d32775bf7d7022b812b))
- add CLI SSO authentication guide (**ee**) ([2a2f047](https://github.com/BlazeUp-AI/Observal/commit/2a2f0478dfc391739ddc0093ee7f620d16ce1e9d))
- add SAML and SCIM setup guides, update enterprise CLI docs (**ee**) ([8f152f6](https://github.com/BlazeUp-AI/Observal/commit/8f152f6578f6752f7f370680932b97e7a9d28b6c))
- document enterprise frontend architecture decisions ([dfcb61b](https://github.com/BlazeUp-AI/Observal/commit/dfcb61b82e2ede455b6cf2e5f72d25e1b49df474))
- update AGENTS.md files to reflect current codebase ([1180ed0](https://github.com/BlazeUp-AI/Observal/commit/1180ed0e97b3d678161ed74504057f901d67fc7b))
- clarify DCO sign-off is a conscious choice, not auto-applied ([4f4b8b5](https://github.com/BlazeUp-AI/Observal/commit/4f4b8b54386afddb59b954610c28c845f965a89a))
- add E2E test checklist for major prod functionality ([58c80e7](https://github.com/BlazeUp-AI/Observal/commit/58c80e7b4422f76837df0e732ce65294b1663bff))
- update CLI reference, README, and changelog for multi-IDE support ([27343ac](https://github.com/BlazeUp-AI/Observal/commit/27343acbb5d1593be2aefb78d92b301c70dc62d1))
- add screenshots for review queue features (#449) ([995eef4](https://github.com/BlazeUp-AI/Observal/commit/995eef4dd94c14f7e3aa602d0bce9d5a05c61430))
- add self-observability documentation ([fd6413c](https://github.com/BlazeUp-AI/Observal/commit/fd6413c6b25a523730ec6bc78d32fbcb5c3b4818))
- add design spec for agent unarchive feature (#396) ([4cf0bf1](https://github.com/BlazeUp-AI/Observal/commit/4cf0bf1ae5c2d1db21782f683b8310f1e4c07ce3))
- add IDE support tiers, remove telemetry hook refs from docs ([fdb3b41](https://github.com/BlazeUp-AI/Observal/commit/fdb3b413fb4556a0cbb0ff8f4e48864dc7f9f570))
- add IDE support tiers, remove hook references from docs ([336018f](https://github.com/BlazeUp-AI/Observal/commit/336018f733ba464250d56bea84b6fe95c96fa0c7))
- add eval subsystem reference (docs/eval.md) ([739fe03](https://github.com/BlazeUp-AI/Observal/commit/739fe03fb2f979e24bdd12e359f0e4cf3c2cdbcd))
- add READMEs for observal-server, ee, tests, and observal_cli ([9c39e49](https://github.com/BlazeUp-AI/Observal/commit/9c39e491bf6de42cca00d7a41730ec52902811e7))
- replace boilerplate README with frontend reference (**web**) ([31eed93](https://github.com/BlazeUp-AI/Observal/commit/31eed93a2c55e4e4cd6cbab3efe2476d0bf6bc90))

### Fixed

- correct sentinel timestamp causing broken duration/started columns (**traces**) ([56733af](https://github.com/BlazeUp-AI/Observal/commit/56733af5d0ed0361eea48baa7273158625c521e1))
- stub page and hide from sidebar pending rework (**errors**) ([7ccf37b](https://github.com/BlazeUp-AI/Observal/commit/7ccf37b57d84e05a2efac59cf9b52d99345f142d))
- replace import-based detection with INSIGHTS_AVAILABLE env flag (**insights**) ([d822993](https://github.com/BlazeUp-AI/Observal/commit/d82299371690c6cec3d214cbef09da6fb14fbc34))
- resolve pre-commit and pre-push hook failures ([236f9c1](https://github.com/BlazeUp-AI/Observal/commit/236f9c1081d337fd7b5a2de16d6d74ecbbbefea8))
- wire token counts and correct duration in session list ([7719683](https://github.com/BlazeUp-AI/Observal/commit/7719683887a0d2573ee0783f46a9b3860671f1c1))
- use sessionStorage for access token in loginToWebUI helper (**e2e**) ([4d39d12](https://github.com/BlazeUp-AI/Observal/commit/4d39d12148611f478ba7108ee76e9487bbe98588))
- replace nonexistent observal-hook.sh with session_push.py (**hooks**) ([77014e6](https://github.com/BlazeUp-AI/Observal/commit/77014e61ddf3207400ed1305bd5e88b2ace5a1e3))
- stop enterprise compose file from overriding DEPLOYMENT_MODE ([08e317d](https://github.com/BlazeUp-AI/Observal/commit/08e317d00bb73c6166faaf754b5bae5050e890bc))
- login page respects ?next= param after authentication ([0acca4b](https://github.com/BlazeUp-AI/Observal/commit/0acca4b2aef48136b845d240b1015d7c8f3d995c))
- migrate JWT signing from HS256 to ES256 (**security**) ([e562524](https://github.com/BlazeUp-AI/Observal/commit/e56252495d9e6297ca29dfc3064032ad77f0d93d))
- user-level token revocation and Redis fail-closed auth (**security**) ([899fa0c](https://github.com/BlazeUp-AI/Observal/commit/899fa0c910086f93754c8e69dac4f098ef4c476a))
- update remaining localStorage reads to sessionStorage for access token ([71feea2](https://github.com/BlazeUp-AI/Observal/commit/71feea2e2ff2fe3f082dd9060088792f39760d31))
- enforce org ownership on component source routes (**security**) ([2f9dbcb](https://github.com/BlazeUp-AI/Observal/commit/2f9dbcb97c7c50e7bf51b0fa819b1a1334c01323))
- scope admin dashboard and telemetry queries to requesting user's org (**security**) ([afe13b1](https://github.com/BlazeUp-AI/Observal/commit/afe13b16a3760c851fe24aeb9b7cd8e951e67c5d))
- private agents not visible to anonymous callers in local mode (**security**) ([78d465f](https://github.com/BlazeUp-AI/Observal/commit/78d465f52c0dc2c137628de0497301af14b9f7b9))
- scope private registry listings to owner org (**security**) ([af993b0](https://github.com/BlazeUp-AI/Observal/commit/af993b04dca6db3fe8e60b21165bdf10e5dc1021))
- require authentication on GraphQL telemetry endpoint (**security**) ([ed65c9e](https://github.com/BlazeUp-AI/Observal/commit/ed65c9eda6d4dbe188747123f4a6b78354c1c72c))
- block startup with weak SECRET_KEY, warn on insecure defaults in settings (**security**) ([a22ec35](https://github.com/BlazeUp-AI/Observal/commit/a22ec35d325082bb1966d6f367624003448515f6))
- enforce password strength on account creation and change (OBSV-SEC-006) (**security**) ([cc65f9f](https://github.com/BlazeUp-AI/Observal/commit/cc65f9f0f33e73664672c61820071b96b256da71))
- add 'unsafe-inline' to CSP script-src for Next.js hydration ([15dcaf8](https://github.com/BlazeUp-AI/Observal/commit/15dcaf8e183c7c4a5d68523864c6d23ec1c3082f))
- hide OpenAPI docs and metrics endpoints by default (OBSV-SEC-015) (**security**) ([c338b88](https://github.com/BlazeUp-AI/Observal/commit/c338b88f8e43cbdc91de07f846f06710496d3c80))
- require approved status for agent install, validate MCP commands (OBSV-SEC-027) (**security**) ([5b6a3a0](https://github.com/BlazeUp-AI/Observal/commit/5b6a3a0852c277dc5eeb9dc4838203b2e40a9247))
- block password lifecycle routes in SSO-only mode (OBSV-SEC-028) (**security**) ([298cc09](https://github.com/BlazeUp-AI/Observal/commit/298cc090c60a11bd9a97f5b1b9428760f51e2265))
- rate limiting only trusts XFF from configured trusted proxies (OBSV-SEC-003) (**security**) ([1b9f087](https://github.com/BlazeUp-AI/Observal/commit/1b9f08741256a98dca7499a3ca3fad1e79b750c9))
- address PR review feedback ([007e05c](https://github.com/BlazeUp-AI/Observal/commit/007e05cc626c46c8bd0d16542487d5635178eca4))
- add SPDX header and suppress bandit false positive (**ci**) ([a2efe47](https://github.com/BlazeUp-AI/Observal/commit/a2efe476cb1b8f837f10a7ac03ac4b543657da41))
- renumber insight migration 0004 -> 0005 (**alembic**) ([050a8c2](https://github.com/BlazeUp-AI/Observal/commit/050a8c24ee63c3b5e8b80088bb13287fafcd4dc2))
- CSP middleware and access token in sessionStorage (OBSV-SEC-025) (**security**) ([1040029](https://github.com/BlazeUp-AI/Observal/commit/10400295015f6a398e60901bb98bf2e7d34dbaa4))
- harden EC2 bootstrap script (OBSV-SEC-020) (**security**) ([d230bf0](https://github.com/BlazeUp-AI/Observal/commit/d230bf081b281be00e506d1c0629d47369968915))
- block operational paths at ALB by default (OBSV-SEC-018) (**security**) ([0b35ccf](https://github.com/BlazeUp-AI/Observal/commit/0b35ccfae02fbc7b94dc4a0c30a6411e2b92b455))
- block operational metadata paths in nginx (OBSV-SEC-017) (**security**) ([4a430ab](https://github.com/BlazeUp-AI/Observal/commit/4a430ab80e2a0f24b228b6636d95a3dce70b7baf))
- centralise SSRF guard for webhooks, git clone, MCP analysis (OBSV-SEC-012/013/014) (**security**) ([b78dc96](https://github.com/BlazeUp-AI/Observal/commit/b78dc96b4fc11b0260445c82081567497c87100a))
- allow MCP config fields in version extras validation (**api**) ([831a0d1](https://github.com/BlazeUp-AI/Observal/commit/831a0d14624545a14dbb2bc4bc9b6686f8039662))
- emit JSON-RPC error notification on MCP startup failure (**shim**) ([4b64b5e](https://github.com/BlazeUp-AI/Observal/commit/4b64b5e18eff18627f24049657fec040ddea757c))
- bind stateful services to loopback in Docker Compose (OBSV-SEC-016) (**security**) ([6dbcfac](https://github.com/BlazeUp-AI/Observal/commit/6dbcfac2ad69af80ec69e3c4ea32c9ee0d69c694))
- include auth identity in cache key to prevent cross-user hits (OBSV-SEC-023) (**security**) ([cd3acf6](https://github.com/BlazeUp-AI/Observal/commit/cd3acf6a8e131f9e9f5fb06d213ce0adf6e8c5b6))
- redact secrets from support log collector output (OBSV-SEC-022) (**security**) ([7a27288](https://github.com/BlazeUp-AI/Observal/commit/7a27288102be0fe34be25418d4329257467f8abc))
- redact secrets before sending content to LLM providers (OBSV-SEC-021) (**security**) ([19ac039](https://github.com/BlazeUp-AI/Observal/commit/19ac0397d2c222ab760329b01eefdddac6c712c2))
- require auth on telemetry reconcile endpoint (OBSV-SEC-011) (**security**) ([9f275df](https://github.com/BlazeUp-AI/Observal/commit/9f275df2cc66224b2560e26fa4b5ab5972f3adab))
- restrict support diagnostics to admin role (OBSV-SEC-008) (**security**) ([4ed0883](https://github.com/BlazeUp-AI/Observal/commit/4ed08833c822aad9c97c6a1e5a2349328f73effd))
- apply execution time floor to every ClickHouse query (OBSV-SEC-026) (**security**) ([b1d80bd](https://github.com/BlazeUp-AI/Observal/commit/b1d80bd657b16f1a80850380d2168e20ec910d37))
- validate session IDs before SQL interpolation in shim enrichment (**security**) ([66ca3d0](https://github.com/BlazeUp-AI/Observal/commit/66ca3d02439e845d028d59c4e7d5d5799babed6d))
- use FINAL instead of GROUP BY for session_stats_agg (**server**) ([ce8069b](https://github.com/BlazeUp-AI/Observal/commit/ce8069bea89238b2471e6018c1dbe13fa0aece65))
- default to ~/.observal on macOS for Docker compatibility (**deploy**) ([119aed3](https://github.com/BlazeUp-AI/Observal/commit/119aed3127ee4847ce146785816386656feb87ee))
- add OBSERVAL_FORCE=1 to skip overwrite prompt (**deploy**) ([9910a94](https://github.com/BlazeUp-AI/Observal/commit/9910a94a353a2ecdf654f6842cb5478eb5d99563))
- read from /dev/tty so curl|bash works interactively (**deploy**) ([4bc203b](https://github.com/BlazeUp-AI/Observal/commit/4bc203bbaf4b0b16f46078700e0783098ae2b103))
- preserve SPDX headers in generated changelog (**compliance**) ([636a359](https://github.com/BlazeUp-AI/Observal/commit/636a359b3fafb4d4cd17223f3bc8220937f10a1d))
- improve setup.sh post-install output (**deploy**) ([6884923](https://github.com/BlazeUp-AI/Observal/commit/6884923078e1647b0f12735f2e43b291c41c8270))
- add SPDX copyright headers to support.md (**compliance**) ([6c358bd](https://github.com/BlazeUp-AI/Observal/commit/6c358bdb58654f9f8b179fa27ffed8e062e79fe0))
- resolve CircularDependencyError in review approve endpoint ([a17b435](https://github.com/BlazeUp-AI/Observal/commit/a17b435a5aa42a08da8681747e3da47f1ef0deb6))
- wrap SPDX string in REUSE-Ignore to fix reuse-lint (**ci**) ([cef600f](https://github.com/BlazeUp-AI/Observal/commit/cef600ffaec97a10b82ca22bbcb3faa13a513d26))
- move coverage config to observal-server/pyproject.toml (**ci**) ([9ef4f1c](https://github.com/BlazeUp-AI/Observal/commit/9ef4f1cf985c21c17b86c57c30209ec512732b9e))
- add version tables to INSERT_ORDER and disable FK checks during import ([9943142](https://github.com/BlazeUp-AI/Observal/commit/9943142224970e0b196c2b3c1c77b36070faab91))
- remove unused import and fix license-policy formatting (**ci**) ([b76831d](https://github.com/BlazeUp-AI/Observal/commit/b76831dbccf075d29f2682cb86a9e569066e36e5))
- replace magic values with named constants in deps.py (**lint**) ([f7ff034](https://github.com/BlazeUp-AI/Observal/commit/f7ff0349ad726a221702218271c43837ff2537f5))
- resolve SimpleAggregateFunction query errors in session_stats_agg (**clickhouse**) ([b6bdd99](https://github.com/BlazeUp-AI/Observal/commit/b6bdd99fc907157ea1841c368996de3087f71ddf))
- update postgres volume mount for v18 compatibility (**docker**) ([93c0600](https://github.com/BlazeUp-AI/Observal/commit/93c060078f3eb3234b21d24278f807ce9619a2ff))
- trigger EC2 deploy on push to main instead of tags (**deploy**) ([6cda8b1](https://github.com/BlazeUp-AI/Observal/commit/6cda8b18250a3b8eb719c2f64d73a847f19fc2da))
- trigger EC2 deploy on push to main instead of tags (**deploy**) ([cb7bae4](https://github.com/BlazeUp-AI/Observal/commit/cb7bae4963ea3b3654417c62f666447225213679))
- replace all Apache 2.0 references with AGPL-3.0 ([66abe34](https://github.com/BlazeUp-AI/Observal/commit/66abe34ddb19d779eeb75174aa7038192f60105b))
- update redis image assertion to 8-alpine (**tests**) ([7da9551](https://github.com/BlazeUp-AI/Observal/commit/7da955197387f74d2fbedc3fcdf57f24c844eabc))
- capture post-Stop tail lines via delayed flush subprocess (**cli**) ([357fdee](https://github.com/BlazeUp-AI/Observal/commit/357fdeeb356784242097f95b6b3713cf4d99f64c))
- exclude subagent sessions from top-level list (**sessions**) ([ac0052c](https://github.com/BlazeUp-AI/Observal/commit/ac0052c8d3b54ed4b90bee2ab7d823eace3469f3))
- auto-refresh expired tokens in session_push hook (**cli**) ([6ba62cd](https://github.com/BlazeUp-AI/Observal/commit/6ba62cdb6e214166c9b86fa7d9c6e727beae23a7))
- resolve ClickHouse ILLEGAL_AGGREGATION in session query (**insights**) ([d9e72aa](https://github.com/BlazeUp-AI/Observal/commit/d9e72aa466684fde340e0dfa50c9dfa974ea0fec))
- ruff fixes in ee/observal_insights (**lint**) ([39da878](https://github.com/BlazeUp-AI/Observal/commit/39da8782b4f5f3ed3b03f68ad51be65118ee1825))
- use cursor offset not ctime for pulled_at guard (**attribution**) ([afcfccc](https://github.com/BlazeUp-AI/Observal/commit/afcfcccce06c29469780b4e1b2d5b52c890a7964))
- remove unused imports, use datetime.UTC alias (**lint**) ([05db9db](https://github.com/BlazeUp-AI/Observal/commit/05db9db96e228bb73fbbcc3658c89f8b1603a10c))
- renumber meta_cache migration to 0003 (**migration**) ([2dd2e2a](https://github.com/BlazeUp-AI/Observal/commit/2dd2e2a182b4d22987d7ca1c89c5e4e736db0459))
- prevent session leak via pulled_at timestamp (**attribution**) ([77e7ce8](https://github.com/BlazeUp-AI/Observal/commit/77e7ce89569f0872e73e86932acab824b9c483e3))
- update web frontend (minor/patch) (#779) (**deps**) ([a9b3722](https://github.com/BlazeUp-AI/Observal/commit/a9b37224e053836b86bf8f480b429f0e782ec5f3))
- include per-IDE model overrides in agent snapshot and pull flow ([a048910](https://github.com/BlazeUp-AI/Observal/commit/a048910ee18d8998b68e2a19e4db321e91a7628a))
- use 2099 sentinel timestamp for kiro_credits row (**kiro**) ([5804c15](https://github.com/BlazeUp-AI/Observal/commit/5804c1500250771cbf793d757a3d6be075c88e57))
- proper Callable type for _EXTRA_ROWS_HANDLERS (**types**) ([959ca3b](https://github.com/BlazeUp-AI/Observal/commit/959ca3be3789dc0a2293c27a6f9d6fbdefa7edbd))
- store credits even when Stop has no new JSONL lines (**kiro**) ([b9d8284](https://github.com/BlazeUp-AI/Observal/commit/b9d8284bc6edd3636bfd8d5117ba7822028db949))
- fix credits not being sent on Stop hook (**kiro**) ([75597f0](https://github.com/BlazeUp-AI/Observal/commit/75597f0af0ccb0003a7bc94ea50f37b216f1bf1a))
- remove stale CLI usage docstring (**reconcile**) ([27bbd66](https://github.com/BlazeUp-AI/Observal/commit/27bbd66d9734a2cab66fefd777cdcfa424505b33))
- restore --hook/--shim/--all flags and shim helpers (**doctor**) ([fdfc0b8](https://github.com/BlazeUp-AI/Observal/commit/fdfc0b89738486f475275c040453772890a3874e))
- replace --all with --hook in doctor patch calls (**auth**) ([3ba67dd](https://github.com/BlazeUp-AI/Observal/commit/3ba67dde79e44f5b2a69c063a162bd978299fab2))
- fix ruff unused imports, remove stale telemetry tests (**lint+tests**) ([34e4b16](https://github.com/BlazeUp-AI/Observal/commit/34e4b1617c1c49cf9c1dad92666c4659d394f723))
- remove Active Hooks section + sentinel-safe stats (**traces**) ([f1341ff](https://github.com/BlazeUp-AI/Observal/commit/f1341ff0ef83463c6e9de8c33b01c00df485ac02))
- sentinel-safe first timestamp in trace title/breadcrumb (**ui**) ([1067087](https://github.com/BlazeUp-AI/Observal/commit/10670878041545087a3bd380adcc3174b2256456))
- filter kiro_credits events + unify token accumulation (**traces**) ([5f0fc42](https://github.com/BlazeUp-AI/Observal/commit/5f0fc427dd612c9c520f8fa7a6a2ef670e6cec5a))
- add session_parser key to CLI ide_registry mirror (**ingest**) ([e07a4ba](https://github.com/BlazeUp-AI/Observal/commit/e07a4ba93abcec5bb4b7050f05ab2c39f34405c6))
- apply ruff formatting to hook submit (**cli**) ([ebe53f1](https://github.com/BlazeUp-AI/Observal/commit/ebe53f108b097d703bcb8487049bc38ee009df33))
- handle invalid JSON in `hook submit` handler config prompt (**cli**) ([7b2469e](https://github.com/BlazeUp-AI/Observal/commit/7b2469eb2b8c5f88ad38c3944f8165762682576e))
- auto-populate Owner field in all submit forms (**registry**) ([1700c63](https://github.com/BlazeUp-AI/Observal/commit/1700c63f3790c9229954a2a95af488508c21057c))
- display rate limit error properly on login page (**web**) ([c632ad6](https://github.com/BlazeUp-AI/Observal/commit/c632ad67ba7db05c7342dfdf786adb7ce9f71e3c))
- remove session ID from all user-facing views (**ui**) ([38ab52b](https://github.com/BlazeUp-AI/Observal/commit/38ab52bd8cba0b1445837955d73e7eea00a9af87))
- full screen utilization and flex wrap issues (**insights**) ([caae785](https://github.com/BlazeUp-AI/Observal/commit/caae7858ae042d6e4f1e51b906804f335d7c368b))
- remove dead metrics endpoints and legacy telemetry tables (**dashboard**) ([27cb6a8](https://github.com/BlazeUp-AI/Observal/commit/27cb6a8bd6793220278427d2da4ba496ae52e081))
- pin pnpm@10 to fix ERR_PNPM_IGNORED_BUILDS in CI (**docker**) ([2313e19](https://github.com/BlazeUp-AI/Observal/commit/2313e19565a1d48bf191a7282f4eba3c0261183d))
- resolve lint, import-boundary, and docker-build failures (**ci**) ([1850779](https://github.com/BlazeUp-AI/Observal/commit/1850779482589b1debe4c180b166a2fef0bc1af4))
- align session_cache and facets with actual DB schema (**insights**) ([eeef3fa](https://github.com/BlazeUp-AI/Observal/commit/eeef3faa1ed86d6aa43f99ab4a0e8a3ce5dfc86c))
- add TTL retention for system logs to prevent OOM (**clickhouse**) ([2224992](https://github.com/BlazeUp-AI/Observal/commit/22249920659e416b91a854283b5fc7bf89bd08e8))
- docs & add bootstrap ([5feb50e](https://github.com/BlazeUp-AI/Observal/commit/5feb50e225d575a388efea49f70f0661ca7f0a31))
- remove unused locals flagged by tflint (**infra**) ([11239fa](https://github.com/BlazeUp-AI/Observal/commit/11239fa7c377a65d0a8cc4ba695364334f189821))
- resolve lint, format, and test failures (**ci**) ([dc0a89e](https://github.com/BlazeUp-AI/Observal/commit/dc0a89ed3e5e9c642a951b8a2c5360fc13256d45))
- restore trace_dedup module needed for session detail view (**sessions**) ([28095bc](https://github.com/BlazeUp-AI/Observal/commit/28095bcfa6b4db739aa2ac800410be491b56dad2))
- call configure_insights() on worker startup (**worker**) ([8a59c3d](https://github.com/BlazeUp-AI/Observal/commit/8a59c3d189e84ace7eeaf1c5e8268558627b0315))
- strip insights source post-install instead of pre-build (**docker**) ([b47578b](https://github.com/BlazeUp-AI/Observal/commit/b47578b1db05d5b42747591d73ee162e4e0a176b))
- sum credits in sessions list instead of picking arbitrary value ([8df012d](https://github.com/BlazeUp-AI/Observal/commit/8df012d0786672a91788645f5d4ba9c87ce12fb3))
- read credits from Kiro session files instead of SQLite ([fbd6678](https://github.com/BlazeUp-AI/Observal/commit/fbd6678bfff0d2bb32f2a9e809fbfe50e47a8a34))
- use absolute Python path in Kiro hook commands ([38ef120](https://github.com/BlazeUp-AI/Observal/commit/38ef1202ac4500cff0475b4df0b2f6ccda57a8ea))
- show prompt count fallback and rewrite hook python paths (**kiro**) ([e32c48e](https://github.com/BlazeUp-AI/Observal/commit/e32c48e4227ef08757c1d4e58250eba732cdeadb))
- persist session_id between Kiro hooks and add debug logging (**hooks**) ([f9c1c28](https://github.com/BlazeUp-AI/Observal/commit/f9c1c284e1a5b5c7c1ba5ff75781cbb84c09fdc9))
- allow super_admin to manage agents regardless of org_id (**agents**) ([0be9d76](https://github.com/BlazeUp-AI/Observal/commit/0be9d76196fe20d2693790654e935081191f4ec6))
- set owner_org_id and public visibility on bulk-create (**agents**) ([29222c9](https://github.com/BlazeUp-AI/Observal/commit/29222c9b96d75649948a958a14dc3e85888b6eb4))
- correct setup steps — use doctor patch, remove local server section (**docs**) ([9de5581](https://github.com/BlazeUp-AI/Observal/commit/9de55819751e3169dc26ab99463a393d4c1c0182))
- use short summary in skill file YAML frontmatter (**skills**) ([3819631](https://github.com/BlazeUp-AI/Observal/commit/38196310bcde75ec22d7f18c2432327f0bab02a6))
- remove AWS env var overrides that clobber .env credentials (**docker**) ([17f3fbb](https://github.com/BlazeUp-AI/Observal/commit/17f3fbb01178f0e0006ce07b7196c41346a31a87))
- derive component downloads from agent installs (#736) (**leaderboard**) ([823dd77](https://github.com/BlazeUp-AI/Observal/commit/823dd77e0c4ba8586cc05d81a5226038da0cf12c))
- hide notifications stub from account settings (**web**) ([2a11947](https://github.com/BlazeUp-AI/Observal/commit/2a119473220919bb9fa9558757bb160170bb44a3))
- flush version changes before updating latest_version_id (**review**) ([0a7253d](https://github.com/BlazeUp-AI/Observal/commit/0a7253dc81fe2d31e5f000568fe5596f21726a40))
- update web frontend (minor/patch) (#576) (**deps**) ([ce578e4](https://github.com/BlazeUp-AI/Observal/commit/ce578e410bb549f12f816316b205b3327d83a251))
- use persistent SSL config so merges stop breaking HTTPS (**deploy**) ([9f50890](https://github.com/BlazeUp-AI/Observal/commit/9f5089049bde8e0ee2840edaf2246dd7eb393840))
- version-aware component review queue, detail, and actions (**review**) ([a4aef71](https://github.com/BlazeUp-AI/Observal/commit/a4aef7174a9975b6a4ad6a726cab83ab86d298fa))
- inject prompt component templates into generated rules files (**agent-install**) ([c5114b8](https://github.com/BlazeUp-AI/Observal/commit/c5114b8e5155173c5912622dbb05e96da28c6ff0))
- only infer frontend URL behind TLS proxy, not local nginx (**api**) ([e82be65](https://github.com/BlazeUp-AI/Observal/commit/e82be65634c34e67ac5d13d31a3b26a983a8190f))
- only owners and co-maintainers can edit their agents (**agent-edit**) ([45fbf1a](https://github.com/BlazeUp-AI/Observal/commit/45fbf1ab1e56e2afe0764ab0505617d4f36dd33d))
- allow admins to release versions, save draft as new version (**agent-edit**) ([78d2878](https://github.com/BlazeUp-AI/Observal/commit/78d28789d4b2166199a6a07b9b0c207f310f6c0d))
- derive device auth verification URL from request headers (**api**) ([2d7373a](https://github.com/BlazeUp-AI/Observal/commit/2d7373a2b9415887ea0a942fa1a6388dd1dbcb66))
- fix empty component board, TS build, sandbox type (**leaderboard+feedback**) ([1c7a719](https://github.com/BlazeUp-AI/Observal/commit/1c7a71910cba612b6697b625049f72cf5432b89c))
- remove f-string without placeholder, use ternary (**lint**) ([31c5898](https://github.com/BlazeUp-AI/Observal/commit/31c5898234519e9d7a6f6e9532f9f1c01996d299))
- materialize hook components into Kiro agent configs (**hooks**) ([8d3508e](https://github.com/BlazeUp-AI/Observal/commit/8d3508e3585dcbe30dd073697f683e419a4b6799))
- allow regular users to unarchive their own agents (**agents**) ([04adb4e](https://github.com/BlazeUp-AI/Observal/commit/04adb4e1d31e3833cc33ecea34ee6302fe11e9c6))
- allow unarchive/delete to find non-approved agents (**agents**) ([4915a9c](https://github.com/BlazeUp-AI/Observal/commit/4915a9c1175ea1a4c23ac269019b831acd4252da))
- write skill files to disk during agent pull (**cli**) ([f848842](https://github.com/BlazeUp-AI/Observal/commit/f84884288462d3c5319b5ecabad0023980f3b131))
- grant same-org users view access to all org agents (**agents**) ([0c6e808](https://github.com/BlazeUp-AI/Observal/commit/0c6e808df9b58da305cf5a6b9a28f88d90212fb9))
- allow same-org users to see all org agents (**agents**) ([43b5132](https://github.com/BlazeUp-AI/Observal/commit/43b51329e0a731e48f4068cbee0c582fffa24862))
- wire hook components into agent config generation (**agents**) ([a738e39](https://github.com/BlazeUp-AI/Observal/commit/a738e39d0af6a3a5eb817e4d5c695bc15bb94b6c))
- use posix paths for hook scripts on Windows (**cli**) ([13f5228](https://github.com/BlazeUp-AI/Observal/commit/13f5228f8de72ccf58aad80294e75a0591413ede))
- rename "My Submissions" to "Drafts" on agents page (**web**) ([7b69959](https://github.com/BlazeUp-AI/Observal/commit/7b699599ac9c3d12e40ee52ba4e3fdd47b0625f6))
- prevent archiving non-approved agents, show archived in my agents (**agents**) ([6fd60fd](https://github.com/BlazeUp-AI/Observal/commit/6fd60fdaafd0dfa54439de5fc2c60f823aeaa1b8))
- allow null git_url in manifest export (**agents**) ([8c97332](https://github.com/BlazeUp-AI/Observal/commit/8c97332830ef9e94596705d631f6ad46a9a165b9))
- exclude archived agents from pending review count (**web**) ([228f6ad](https://github.com/BlazeUp-AI/Observal/commit/228f6ad25aaef54a0dedb0573e0ee1f2608ba970))
- resolve_listing status filter joins through version table (**registry**) ([8ad9f4d](https://github.com/BlazeUp-AI/Observal/commit/8ad9f4d810dfb50f8d643abd60a5b78fe8e66f19))
- handle Unicode output on Windows cp1252 consoles (**cli**) ([05181f6](https://github.com/BlazeUp-AI/Observal/commit/05181f6d2176c28abbfb1c210dc0aa709108184a))
- use explicit SQL update for archive/unarchive status (**agents**) ([198ad36](https://github.com/BlazeUp-AI/Observal/commit/198ad36cc0dcbe465d4d466c6dcb634fa4c02544))
- default visibility to public in local deployment mode (**agents**) ([e380f2c](https://github.com/BlazeUp-AI/Observal/commit/e380f2c52a4e8591819d43ea5381674f905c9537))
- resolve duplicate Alembic revision 0023 causing deploy failure (**db**) ([d99ec31](https://github.com/BlazeUp-AI/Observal/commit/d99ec31fca620e314b53af9888fb568444f25aac))
- remove max-width constraint and add min-w-0 for flex scaling (**web**) ([b7c4ef3](https://github.com/BlazeUp-AI/Observal/commit/b7c4ef3c8131d3d061f314a0378226a121b35f59))
- set edit-lock fields on agent mock to prevent TypeError (**tests**) ([22a2a93](https://github.com/BlazeUp-AI/Observal/commit/22a2a930d8ad8d678b3d79d172b5664a4581fc25))
- harden edit lock concurrency and review correctness (**api,cli,web**) ([eb9cd6a](https://github.com/BlazeUp-AI/Observal/commit/eb9cd6a3512eee3cea1186aabb6fadd96fb5d57c))
- resolve lint errors and test failures from edit lock feature (**api**) ([f335927](https://github.com/BlazeUp-AI/Observal/commit/f335927afec215098deccfbb462292fc3961d826))
- harden edit lock, review approve/reject, and error handling (#663) (**api,web**) ([3b80fae](https://github.com/BlazeUp-AI/Observal/commit/3b80faeef04283c57852960ccd7e4a1ff691c5f2))
- harden component version validation (**api**) ([3412812](https://github.com/BlazeUp-AI/Observal/commit/341281257781b666ac93c1f2cdaa96d2a4eca303))
- update e2e assertions for new hook_bridge features and agent paths (**tests**) ([e0ff08e](https://github.com/BlazeUp-AI/Observal/commit/e0ff08ed6d671c75fd2f2a04fef6d489cf093668))
- cache race condition, unbounded memory, and repeated HTTP calls ([4fc41f0](https://github.com/BlazeUp-AI/Observal/commit/4fc41f00861f240890dc0be9f941040b0375ccb8))
- update copilot rules_file path assertion (**tests**) ([12a342a](https://github.com/BlazeUp-AI/Observal/commit/12a342abe64d37bdbe4b96b2d35f944be778e4a5))
- resolve hook paths for all IDEs, not a hardcoded subset (**cli**) ([86a75ee](https://github.com/BlazeUp-AI/Observal/commit/86a75ee323f68cc6db3991d476efaa7524d883c2))
- raise 401 for expired tokens in optional_current_user (**auth**) ([ed2862c](https://github.com/BlazeUp-AI/Observal/commit/ed2862cad4bb784f617ed0254c105817d1802d08))
- add trim() to /take and /drop to handle trailing whitespace (**ci**) ([7e4b180](https://github.com/BlazeUp-AI/Observal/commit/7e4b180ac9ea54d7a9bc50b9adc2020ae0504126))
- resolve agent version approve CircularDependencyError (**api**) ([9bc3ce2](https://github.com/BlazeUp-AI/Observal/commit/9bc3ce20cd9eb0c488d755104979a5e25c66d813))
- flush version status before promoting latest_version_id (**review**) ([4471a7d](https://github.com/BlazeUp-AI/Observal/commit/4471a7d574e4c628843f2b4a38e5b3050c656329))
- use short model names in frontmatter instead of stripped IDs (**config**) ([5147d33](https://github.com/BlazeUp-AI/Observal/commit/5147d33b2cda99a0e6f3bf2d57b827cf799b9215))
- approve/reject agent by pending version, not latest_version (**review**) ([b868453](https://github.com/BlazeUp-AI/Observal/commit/b868453e4add9d8ccc5aeabd9408ca100ea23688))
- migrate update_draft to version-scoped component columns (**agent**) ([e9875cf](https://github.com/BlazeUp-AI/Observal/commit/e9875cf566ce4bd304f9a41ddb0f4c315781c996))
- pass full model ID instead of short name in frontmatter (**config**) ([bee95bd](https://github.com/BlazeUp-AI/Observal/commit/bee95bd0738c9bbdeffe98a0c17f4614222123d2))
- use agent's stored model_name as fallback in config generator (**config**) ([3ffb739](https://github.com/BlazeUp-AI/Observal/commit/3ffb7396dd122e13fed2af8cf31f285f3fa32719))
- handle cross-version import and include all ClickHouse tables in deep copy (#681) (**migrate**) ([832166a](https://github.com/BlazeUp-AI/Observal/commit/832166a3423b9a1db4bcc81a10c568cde63b2e47))
- stop traces after logout by revoking tokens server-side (#668) (**auth**) ([e1c6a50](https://github.com/BlazeUp-AI/Observal/commit/e1c6a50395d599d56ffc3170ca1ac6174de9e812))
- resolve agent names via server instead of stale local cache (#684) ([228c656](https://github.com/BlazeUp-AI/Observal/commit/228c65615542424787e9fb3272e8bcfa0bedb451))
- resolve agent update 500 error (missing property setters) (**api**) ([a91878a](https://github.com/BlazeUp-AI/Observal/commit/a91878a4502d470f88d9fd5367234450617085d8))
- fix agent edit form Playwright tests (**e2e**) ([7d8c2d5](https://github.com/BlazeUp-AI/Observal/commit/7d8c2d59158db1d1434470f8e346cb00fdc3f7c0))
- resolve component delete 500 errors (#677, #678) (**api**) ([ca33351](https://github.com/BlazeUp-AI/Observal/commit/ca333511348e291dff76ef5fce9b3e44407d8595))
- correct version lookup and sync lockfile (**cli**) ([9c474dc](https://github.com/BlazeUp-AI/Observal/commit/9c474dc26757155aa35a2eada68784e35836da22))
- detect and block conflicting `observal` package (#671) (**cli**) ([d6e6616](https://github.com/BlazeUp-AI/Observal/commit/d6e661672b05c653ddae50e30ef379578418f87c))
- move pull command from root to `observal agent pull` (#673) (**cli**) ([f092894](https://github.com/BlazeUp-AI/Observal/commit/f092894c93f077a514aeb007b29bfcb69685a796))
- add latest_approved_version to response and fix agent pull (#667) (**api**) ([9f1256a](https://github.com/BlazeUp-AI/Observal/commit/9f1256a69bdc6eb3628e8d01f71e348048c6bb0b))
- resolve agent deletion 500 errors (**api**) ([e19c67c](https://github.com/BlazeUp-AI/Observal/commit/e19c67ca7ecb14af4a2f24089b1c4ef21c715312))
- review queue queries pending versions directly (**api**) ([2c989b3](https://github.com/BlazeUp-AI/Observal/commit/2c989b3540f9f929a8030be0566c324bd35d1317))
- address 5 correctness bugs in agent edit form (**web**) ([c3429c9](https://github.com/BlazeUp-AI/Observal/commit/c3429c991411beb3df25858582ae51dd3e094102))
- use canonical IDE list from ide_registry.py in edit form (**web**) ([48330d1](https://github.com/BlazeUp-AI/Observal/commit/48330d1ae7981d6eced1a4db897bb4f873b47adb))
- resolve entrypoint migration incompatibility on fresh DB (**docker**) ([59fddfd](https://github.com/BlazeUp-AI/Observal/commit/59fddfd3491656ae5314b8dce87664975b0e4170))
- wire version dropdown to fetch and display version-specific data (**web**) ([9aec74d](https://github.com/BlazeUp-AI/Observal/commit/9aec74dc3f256f8ff91e4b04be7c507bd7e3c0ed))
- address 3 bugs in agent release/pull commands (**cli**) ([610c5fc](https://github.com/BlazeUp-AI/Observal/commit/610c5fc05e76fb661bd876612eb33f14bc375a7a))
- complete agent versioning spec compliance (#622) (**api**) ([9a2c78c](https://github.com/BlazeUp-AI/Observal/commit/9a2c78c7d6ab4d34ceccef724fecc869b7d64970))
- address RBAC review feedback (**server**) ([b705660](https://github.com/BlazeUp-AI/Observal/commit/b7056609fb885b4e5726aa87db97ef61f66abf3d))
- apply ruff format to RBAC files (**server**) ([3af617a](https://github.com/BlazeUp-AI/Observal/commit/3af617a28afdf449301e54ade1b0c6b530711409))
- fix import sorting in alembic migration (**server**) ([99a7b81](https://github.com/BlazeUp-AI/Observal/commit/99a7b819ce48341af7feb6aa29da7be5029e1045))
- fixed the linting issues (**server**) ([b5eb5a0](https://github.com/BlazeUp-AI/Observal/commit/b5eb5a0a98ecc2fcbb427d45c45566fb3c1a8988))
- update IDE paths and add skill support per official docs (**registry**) ([1904f94](https://github.com/BlazeUp-AI/Observal/commit/1904f94c15a9ab980d73ff8818fd76fa6bd0a49b))
- correct VS Code mcp_servers_key and Claude Code home_mcp_config (**registry**) ([1693b40](https://github.com/BlazeUp-AI/Observal/commit/1693b404923b70543ab735c7e5084ab196b3ea0a))
- make session DAG visualization theme-aware (**web**) ([9f5f542](https://github.com/BlazeUp-AI/Observal/commit/9f5f542a5e7ce10a87d8273dcd9d7897c80eedcd))
- replace hardcoded colors with semantic theme tokens (**web**) ([ae3b5c4](https://github.com/BlazeUp-AI/Observal/commit/ae3b5c4fecc0ed619aab1316ec8ee4ee9663d022))
- hide enterprise-only sidebar items in local mode, fix collapsed logo (**web**) ([aad850f](https://github.com/BlazeUp-AI/Observal/commit/aad850f7cd000cbe5ca4720f6195ad128670014d))
- prevent duplicate Observal hooks in Kiro agent configs ([6256a56](https://github.com/BlazeUp-AI/Observal/commit/6256a569b3f86c1571c81811e0d623429b340486))
- use sys.executable and python detection for cross-platform hook injection (**hooks**) ([7ee202a](https://github.com/BlazeUp-AI/Observal/commit/7ee202a1375cf29f349d0c88738202500476255f))
- use sys.executable for hook commands, not hardcoded python3 (**cli**) ([1ddcc81](https://github.com/BlazeUp-AI/Observal/commit/1ddcc8140e982caaf6eadb1af4965e589108a0c6))
- update crypto public-key URL and e2e test paths (**cli**) ([f01e635](https://github.com/BlazeUp-AI/Observal/commit/f01e6359406b857e03cec640ca02edddb210cb85))
- update copilot CLI hook test to use module invocation format (**test**) ([d526a4b](https://github.com/BlazeUp-AI/Observal/commit/d526a4b52de380b4f0b9e27a1d874fc940d48363))
- doctor cleanup should also clean kiro_default.json (**cli**) ([5f7a755](https://github.com/BlazeUp-AI/Observal/commit/5f7a75528263fc0101b1e4b917f29412f58dbae1))
- use module invocation for hook injection, not cat|python3 pipes (**cli**) ([50af818](https://github.com/BlazeUp-AI/Observal/commit/50af81803f3d3eedbfc6f9fbe0ea5978ba82f314))
- write native OTLP logs to otel_logs table (**telemetry**) ([4381188](https://github.com/BlazeUp-AI/Observal/commit/4381188f5b0c85f8049e12cc3824d59b3fd9b739))
- update copilot CLI hooks and remaining otel/hooks references (**cli**) ([be5c960](https://github.com/BlazeUp-AI/Observal/commit/be5c960f0532a5b27f9eccc4ea0fed4977198eca))
- normalize all IDE ServiceName values in SQL query (**sessions**) ([4e86302](https://github.com/BlazeUp-AI/Observal/commit/4e863026c55c27c4ad29b529d5989652c32640ec))
- remove exception detail leaks in eval kernel (**security**) ([9d56b6c](https://github.com/BlazeUp-AI/Observal/commit/9d56b6c4770d784912af702a60f580eb0c68e178))
- address CodeQL findings (**security**) ([ef08221](https://github.com/BlazeUp-AI/Observal/commit/ef08221f2028a04171073d7c03f6b10e7c8c337e))
- update test expectations and fix eslint warnings (**ci**) ([723a29c](https://github.com/BlazeUp-AI/Observal/commit/723a29cfe32099ead233eaaaddbe9c3245e3d836))
- seed Kiro hooks with telemetry commands (**agent-builder**) ([14bea3d](https://github.com/BlazeUp-AI/Observal/commit/14bea3d1170e97927e43eeb67792525212cbb781))
- move /traces /errors /stats above /{session_id} catch-all (**sessions**) ([39d9a60](https://github.com/BlazeUp-AI/Observal/commit/39d9a60b15bd4e9dc4c8a3581f8bbc583a1fdd2d))
- remove duplicate /sessions prefix from route paths (**sessions**) ([606a00d](https://github.com/BlazeUp-AI/Observal/commit/606a00d16d1e67ca6d5516d988681a48910e5cda))
- replace structlog with stdlib logging (**sessions**) ([106d489](https://github.com/BlazeUp-AI/Observal/commit/106d4898e6cf1799d1248351456a4fa11b6a84d7))
- fix remaining OtelSession type reference (**web**) ([c6983a8](https://github.com/BlazeUp-AI/Observal/commit/c6983a86ab148d31266dd637787f57a8e8235f3e))
- add otel_logs DDL to init_clickhouse (**clickhouse**) ([17fd514](https://github.com/BlazeUp-AI/Observal/commit/17fd514a87d6ac0a1e7cf20d6640dd724adc1b07))
- add missing event name mappings for prompt counting (**copilot**) ([0a3acf7](https://github.com/BlazeUp-AI/Observal/commit/0a3acf7c0f135e79291915a9d5081996a7d54762))
- auto-shim copilot/opencode MCP servers during login (**auth**) ([3d12220](https://github.com/BlazeUp-AI/Observal/commit/3d1222013fd0c2907ae82f5b346949c4bf673795))
- match native agent config schema and fix prompt injection (**kiro**) ([cb773cc](https://github.com/BlazeUp-AI/Observal/commit/cb773cc090540150bc1284063d06b6b243c5e5fc))
- replace fragile cat|sed|curl Unix pipelines with Python hook scripts (**kiro**) ([c304172](https://github.com/BlazeUp-AI/Observal/commit/c304172d8a96ed48e56b9f92d73fa5f876effe29))
- use LB URL as Dockerfile build-time default for API rewrites (**docker**) ([af54ebd](https://github.com/BlazeUp-AI/Observal/commit/af54ebd826ea4789b88894d51136644c25a4e683))
- preserve URL scheme in endpoint derivation and fix port issues (**config**) ([ef28cfe](https://github.com/BlazeUp-AI/Observal/commit/ef28cfe33e801c816ce529d6b827d84e14979340))
- reformat test_ide_config_e2e.py to satisfy ruff (**lint**) ([4c065ba](https://github.com/BlazeUp-AI/Observal/commit/4c065ba732c07dd43326eb3d84bbe12be2b040d8))
- rename camelCase test function to satisfy ruff N802 (**test**) ([77a57d4](https://github.com/BlazeUp-AI/Observal/commit/77a57d47a276495b8898dd2706fd6321cfda02ae))
- add Copilot CLI platform detection and hide unsupported fields (**web**) ([2259794](https://github.com/BlazeUp-AI/Observal/commit/22597942a864c521e61d3d3f0d5fbf2cf97552c1))
- add JSONC parsing and per-event hook names for Copilot CLI (**cli**) ([096fd3c](https://github.com/BlazeUp-AI/Observal/commit/096fd3c5092d0fa0e4d6e439d0e7c86ad85540a3))
- normalize Copilot CLI payloads and inject event names (**hooks**) ([a9d47fa](https://github.com/BlazeUp-AI/Observal/commit/a9d47faa3e327c64bb8ba5cb7be34c9c212ae50e))
- respect --ide filter in fallback home scan (**scan**) ([cf379dd](https://github.com/BlazeUp-AI/Observal/commit/cf379ddeaca9b24ab6b2f158e3711da433903520))
- only trace registered Kiro agents, skip kiro_default (**scan**) ([db39514](https://github.com/BlazeUp-AI/Observal/commit/db3951494f61f3e724c6dfc3fb659badd6e916ba))
- only trace registered Kiro agents, skip kiro_default (**scan**) ([63d2b5d](https://github.com/BlazeUp-AI/Observal/commit/63d2b5dc21b608e7039ddfbd8794afff5de58943))
- only trace registered Kiro agents, skip kiro_default (**scan**) ([9cdc9c5](https://github.com/BlazeUp-AI/Observal/commit/9cdc9c5cd7b451c968696fd0dda288c7db8f97d1))
- preserve host port in proxy headers to fix Kiro agent tracing (**nginx**) ([60dcda9](https://github.com/BlazeUp-AI/Observal/commit/60dcda95124b5e0e06307c66a43db2fde8056907))
- filter release artifact download to skip Docker metadata (**ci**) ([dbd6a1b](https://github.com/BlazeUp-AI/Observal/commit/dbd6a1b66ec1dd3a6db067ecc9bc41a17174a329))
- rename package to observal-cli to match PyPI project (**pypi**) ([9e27f7a](https://github.com/BlazeUp-AI/Observal/commit/9e27f7a4645022356f9fcf02358449664f38c250))
- disable provenance on per-arch Docker builds (**ci**) ([50a8853](https://github.com/BlazeUp-AI/Observal/commit/50a88535f84b488b87afad4749f908d6d9cf2c9c))
- native multi-arch Docker builds, drop deprecated macos-13 (**ci**) ([d8232c8](https://github.com/BlazeUp-AI/Observal/commit/d8232c85bdc1a43fb524858ac7ded001ed3a5544))
- broaden session matching for Claude Code telemetry (**eval**) ([ab6f61d](https://github.com/BlazeUp-AI/Observal/commit/ab6f61d9f4098d06804db7980dfe191759d4ff21))
- add production compose override for SSL and frontend routing (**deploy**) ([9309f5d](https://github.com/BlazeUp-AI/Observal/commit/9309f5d2128a3593faad326ef9148df5be3a9a9a))
- broaden session matching for Claude Code telemetry (**eval**) ([3613d22](https://github.com/BlazeUp-AI/Observal/commit/3613d22729ec05f825f9dec925eb5126a4690dff))
- use SPECPATH for absolute paths in pyinstaller spec (**cli**) ([46de03c](https://github.com/BlazeUp-AI/Observal/commit/46de03c3dde3a950670609696ada45246cd9bb64))
- allow editing and resubmitting rejected listings (**api**) ([7ccea95](https://github.com/BlazeUp-AI/Observal/commit/7ccea955bc96195248545674eaf20c3a6214acb0))
- update frontend for hook-based telemetry (**gemini**) ([8b50d6a](https://github.com/BlazeUp-AI/Observal/commit/8b50d6a9a297c90971d4aab93e977b3ccfc93680))
- disable native OTLP and add token enrichment server-side (**gemini**) ([d06494a](https://github.com/BlazeUp-AI/Observal/commit/d06494a2ad37c6d0da9a3376120479bb868040af))
- replace wget with stdlib urllib in init entrypoint (**docker**) ([527c2cd](https://github.com/BlazeUp-AI/Observal/commit/527c2cd27e3de3042bede76d4971821c0191af5e))
- deduplicate prompt/tool counts from dual ingestion (**dashboard**) ([545d0e5](https://github.com/BlazeUp-AI/Observal/commit/545d0e5ca523aa910b8ae76da0717c35212f8a34))
- address all 11 structural-scorer flaws from verification report (**eval**) ([51d55b4](https://github.com/BlazeUp-AI/Observal/commit/51d55b4d408d7afb4cd05ce74b03e2a62e0cd6d4))
- address PR #495 review feedback from Apoorvgarg-creator ([98824d5](https://github.com/BlazeUp-AI/Observal/commit/98824d54f07b87043922c7f595c1cbb69df96160))
- replace wget with stdlib urllib for ClickHouse readiness check (**docker**) ([49511bd](https://github.com/BlazeUp-AI/Observal/commit/49511bdb2872786236ea6c9a1f02d0f0d57e5af3))
- harden ClickHouse init with auth + retries (**docker**) ([86b9cc6](https://github.com/BlazeUp-AI/Observal/commit/86b9cc6e3bee873f9b82c7579b11da82e88d2543))
- rename mislabeled _today stats fields to match actual query range (**api**) ([5f01156](https://github.com/BlazeUp-AI/Observal/commit/5f01156f18f9ae59929e1543dbd456ec994d9c9c))
- mock default org in demo account seed tests (**tests**) ([f854803](https://github.com/BlazeUp-AI/Observal/commit/f854803a0cf29e28a7d0f8386114b4af846903b2))
- ensure default org exists and backfill org-less users at startup ([459f8d6](https://github.com/BlazeUp-AI/Observal/commit/459f8d657f8ad15491249e3f7bd2480ae120b6ff))
- handle HTTP 204 No Content in client.delete() (**cli**) ([10c67f8](https://github.com/BlazeUp-AI/Observal/commit/10c67f898ee51216e7b4f470fa14a4732af1af5a))
- skip trailing metadata before assistant messages in stop hook (**hooks**) ([d654839](https://github.com/BlazeUp-AI/Observal/commit/d6548392b927a90a1fb7fbd47ae233ae59e9512f))
- resolve multiple release workflow issues (**ci**) ([7644f95](https://github.com/BlazeUp-AI/Observal/commit/7644f951cc3f9be554ae1572b0bebf0b0a9a57c9))
- set git identity for release tag creation (**ci**) ([05f3862](https://github.com/BlazeUp-AI/Observal/commit/05f38628a90c0481f0837beeb73a87fdf6736e5d))
- inline python version check to avoid indentation error (**ci**) ([65322f0](https://github.com/BlazeUp-AI/Observal/commit/65322f0ee2351dc5e89062f4c7c3ea4892f03d19))
- allow PR number suffix in release commit detection (**ci**) ([9fb4617](https://github.com/BlazeUp-AI/Observal/commit/9fb461736d8fb37e237919baeddd50db82efd69c))
- remove register endpoint from deployment guard tests (**tests**) ([d14fea0](https://github.com/BlazeUp-AI/Observal/commit/d14fea0b63bac810d76147eac55c88a65e22c91f))
- surface unexpected errors in enterprise mode check (**cli**) ([02f864e](https://github.com/BlazeUp-AI/Observal/commit/02f864e6f1b377669857710d494087dc2574c2e0))
- add rate limit to password change endpoint (**auth**) ([e61cc10](https://github.com/BlazeUp-AI/Observal/commit/e61cc10b57885975e4e528957c29df7778a8a819))
- invalidate users query after password reset (**web**) ([f8097d5](https://github.com/BlazeUp-AI/Observal/commit/f8097d553d616b959abb8c4454f3b9bc2e7f2357))
- apply pagination to filtered user queries (**scim**) ([9f6c834](https://github.com/BlazeUp-AI/Observal/commit/9f6c834c6ef6284162fed697e489f43830704070))
- warn when SP key encryption password is not configured (**saml**) ([005410b](https://github.com/BlazeUp-AI/Observal/commit/005410b2bd9de46f8cf924011ea18fb137daf1c0))
- make replay protection fail closed (**saml**) ([76258ba](https://github.com/BlazeUp-AI/Observal/commit/76258bad5df6b615dd7d848a48cf03cf8e6a9222))
- prevent open redirect in RelayState and SLO callback (**saml**) ([1be3381](https://github.com/BlazeUp-AI/Observal/commit/1be338151f1d6e360105f31272287cbc33d5e4cb))
- read correct response keys in admin diagnostics command (**cli**) ([ad5a3f9](https://github.com/BlazeUp-AI/Observal/commit/ad5a3f959216f1e51a07e132e0db2cbc3c03caaa))
- enforce must_change_password server-side and block deactivated users (**auth**) ([6bddc39](https://github.com/BlazeUp-AI/Observal/commit/6bddc397198d9326eba58ede45962df23c3c01db))
- use atomic GETDEL for OAuth code exchange to prevent TOCTOU race (**auth**) ([68becf2](https://github.com/BlazeUp-AI/Observal/commit/68becf2cc272a34d243ad0cf9ba3ba2c7628c811))
- resolve test and typecheck failures (**ci**) ([cc624d4](https://github.com/BlazeUp-AI/Observal/commit/cc624d41c29bdeae2fc30b9820e4fc5b8ae643c5))
- remove legacy SHA-256 key derivation to resolve CodeQL alerts (**ee**) ([25e8c7d](https://github.com/BlazeUp-AI/Observal/commit/25e8c7d5379b1b24a079ba8232d538f96abd5775))
- use PBKDF2 for SP key encryption instead of plain SHA-256 (**ee**) ([2d5b0db](https://github.com/BlazeUp-AI/Observal/commit/2d5b0db7e7479ec1432631dbb2dfdee4a607b503))
- harden SAML/SCIM security and org-scoped access control (**ee**) ([af74f7a](https://github.com/BlazeUp-AI/Observal/commit/af74f7ad24d0a1ab3ce505a07c22741870dfa762))
- move SAML service and tests to correct directories ([cab925b](https://github.com/BlazeUp-AI/Observal/commit/cab925bfa2d1088fb3bdc0d61be5164b44c856cc))
- update audit tests for buffered write architecture (**tests**) ([8d9db47](https://github.com/BlazeUp-AI/Observal/commit/8d9db47e7786e5f849690bbc4adc761269003129))
- use ternary expression in request_context.py (**lint**) ([b080e5a](https://github.com/BlazeUp-AI/Observal/commit/b080e5a5dd882087d8bb189b1aa69db88be873a0))
- remove max-width constraints from all page layouts (**web**) ([6ee1f68](https://github.com/BlazeUp-AI/Observal/commit/6ee1f68425c4544ae09c0708331edd573096dd9c))
- split enterprise init for middleware/route timing (**ee**) ([0bc4203](https://github.com/BlazeUp-AI/Observal/commit/0bc4203e18b5b8760b09f5a754beeb3774057e87))
- dedent shim write loop to run after per-server iteration (**cli**) ([4d0840c](https://github.com/BlazeUp-AI/Observal/commit/4d0840c740d6e21d57ace636408d76700b9172a1))
- enforce status-based access control on registry detail endpoints ([8aaafef](https://github.com/BlazeUp-AI/Observal/commit/8aaafef10a2453edb26fc84bf03cb127b62f2758))
- prevent privilege escalation in user create/role update (**rbac**) ([2471ed1](https://github.com/BlazeUp-AI/Observal/commit/2471ed111f3217cce2eaae4bf6caf3c2c282da51))
- downgrade settings + trace privacy from super_admin to admin (**rbac**) ([a0920ca](https://github.com/BlazeUp-AI/Observal/commit/a0920ca8f5e5363c05fd867b91ba29841d7e4db9))
- remove extraneous f-string prefix (ruff F541) ([aa17102](https://github.com/BlazeUp-AI/Observal/commit/aa1710262c4dae3224ec4576efebd2aa504079c2))
- restart nginx LB after rebuild in local Makefile targets ([eefe0dd](https://github.com/BlazeUp-AI/Observal/commit/eefe0dd3b2ce63cc3c8082a72bb7279d19509045))
- remove deprecated POST /api/v1/scan endpoint ([1ede4bd](https://github.com/BlazeUp-AI/Observal/commit/1ede4bdcc1104462c1969e9e162f2521bbb9cc55))
- prevent kiro_default from appearing in admin approval queue (#453) ([843881c](https://github.com/BlazeUp-AI/Observal/commit/843881ca13726a4947f077e0a6a5986084b7eb5e))
- correct e2e checklist setup commands (**docs**) ([a36b69e](https://github.com/BlazeUp-AI/Observal/commit/a36b69e6294865a5bd5d0ff7b5e650552ca49641))
- restart nginx after rebuild + fix arq worker on Python 3.14 (**ci**) ([d521f43](https://github.com/BlazeUp-AI/Observal/commit/d521f43a0b8724b41182fcdc8e9a770365730208))
- two-phase deploy health check to prevent false failures (**ci**) ([c921c19](https://github.com/BlazeUp-AI/Observal/commit/c921c19cbea2baecb73c0652ecf493788a219697))
- exempt super-admin from trace privacy restrictions ([7466ddd](https://github.com/BlazeUp-AI/Observal/commit/7466ddd45851318b052d8ac9702ac33b508da236))
- Windows hook paths and Kiro python3 compatibility ([3e66c26](https://github.com/BlazeUp-AI/Observal/commit/3e66c2610221a799e478b1a576d9303e4f378788))
- use POSIX paths for hook scripts on Windows ([aa55dea](https://github.com/BlazeUp-AI/Observal/commit/aa55dea8cdba222326291b539cbf9f54b1ee8de2))
- allow reviewer role to access /review page (**web**) ([7cb5a4a](https://github.com/BlazeUp-AI/Observal/commit/7cb5a4a7105cc4378724d92723a19fdf6efe9fe8))
- allow hyphens in agent name input and lookup ([16f9e7b](https://github.com/BlazeUp-AI/Observal/commit/16f9e7bdbdaebf9d9213ed2a88e86f4745abb754))
- address all code review feedback ([3da144b](https://github.com/BlazeUp-AI/Observal/commit/3da144bfcd6e5b47800e4d5d5a7a33e3e017ce3a))
- add clipboard fallback for plain HTTP deployments (**web**) ([d9983c1](https://github.com/BlazeUp-AI/Observal/commit/d9983c1d0fb0c26d671e4ad5bb54e32a0b41d416))
- patch derive_endpoints in install route tests ([a0b4c42](https://github.com/BlazeUp-AI/Observal/commit/a0b4c424c2c7c4af6df7e1d5a4f211349582b412))
- ruff format and pass request arg in install route tests ([954ab79](https://github.com/BlazeUp-AI/Observal/commit/954ab79d097930cd647224487b17d18ecfe639c1))
- remove unused imports in test_endpoint_discovery ([a67bf5e](https://github.com/BlazeUp-AI/Observal/commit/a67bf5ef9b512eceec8bdf0abeefff295cbbd29d))
- add Codex config.toml to profile IDE_FILE_MAP (**cli**) ([d6d24fb](https://github.com/BlazeUp-AI/Observal/commit/d6d24fbf533f12077010f0cc5883092f69751502))
- add _configure_copilot to auth login/register flows (**cli**) ([4154d8f](https://github.com/BlazeUp-AI/Observal/commit/4154d8ffae6bec600772a28bc75dfa3f2ae73153))
- add OpenCode to preview panel IDE_OPTIONS and switch (**web**) ([0946eca](https://github.com/BlazeUp-AI/Observal/commit/0946eca8be27eba4fbaa41fcbec88cbff6510d5c))
- add _generate_opencode and _generate_gemini_cli to agent_builder ([39a32b9](https://github.com/BlazeUp-AI/Observal/commit/39a32b988bf519507a9918353bef2e8df0a81cce))
- resolve ruff warnings across server, CLI, and tests (**lint**) ([e8f3ff7](https://github.com/BlazeUp-AI/Observal/commit/e8f3ff7a073d8bc125ff0fcc4d3ff5ac58922d81))
- pass tests, add empty-reason guards, add hypothesis dep (#449) ([d862e8c](https://github.com/BlazeUp-AI/Observal/commit/d862e8c335cdc8e2a1e009b177e5f1f577a902c9))
- resolve lint errors and show full rejection reason (#449) ([980bd0b](https://github.com/BlazeUp-AI/Observal/commit/980bd0bf84f9d10b39309d101be296ce15c4cb4d))
- decouple scan from registry registration (**cli**) ([b4a7d67](https://github.com/BlazeUp-AI/Observal/commit/b4a7d67a3f48f0dbfdf61c9261a4390b239e6a33))
- preserve header values in MCP config parsing and preview ([3383994](https://github.com/BlazeUp-AI/Observal/commit/3383994e7323d35d76aa2305af13bc7c878d656f))
- use structlog in all modules to fix keyword-arg logging crashes ([2a43c95](https://github.com/BlazeUp-AI/Observal/commit/2a43c95faec3177fea334b089b5698c0e52836bc))
- inject resource overrides as HTTP query params instead of ALTER USER (**server**) ([e6ee6ad](https://github.com/BlazeUp-AI/Observal/commit/e6ee6ad176b0af2c0b47268739b9c017e1c4cf68))
- fix ClickHouse config.d/users.d mount issues (**docker**) ([a09dfb8](https://github.com/BlazeUp-AI/Observal/commit/a09dfb81b7e15b495dc0790e95ec156d62ac2c97))
- add scheduled ClickHouse maintenance to prevent OOM on long-running agents (**worker**) ([94e4d70](https://github.com/BlazeUp-AI/Observal/commit/94e4d70e383b19cb44a2c2a7878d17e6362e8d08))
- reduce batch size and ensure async insert durability (**otel**) ([e289ced](https://github.com/BlazeUp-AI/Observal/commit/e289ced397d7b031108c1cd52adaa185cb29415b))
- make ClickHouse and OTEL memory limits configurable (**docker**) ([2c317eb](https://github.com/BlazeUp-AI/Observal/commit/2c317eb4c6aa5c2a6878d76cbeeecf72eecc14d5))
- add ClickHouse memory config to prevent OOM on low-RAM hosts (**docker**) ([ede9da9](https://github.com/BlazeUp-AI/Observal/commit/ede9da95ef39a88a730ba09d65e1608b8faf8154))
- improve session query perf, push platform filter to ClickHouse (**server**) ([284c953](https://github.com/BlazeUp-AI/Observal/commit/284c953a35b21902e9761666f70e4fa01d9fa7d4))
- skip IDE inference when components unchanged in update routes (**server**) ([5adc883](https://github.com/BlazeUp-AI/Observal/commit/5adc883b14f519fb95768687a9a3b04562208caf))
- don't highlight Agents nav when on leaderboard or builder (**web**) ([b29af69](https://github.com/BlazeUp-AI/Observal/commit/b29af6918a0457dd4d723befa361993f7272f147))
- add hover tooltips to agent archive, delete, and restore buttons (**web**) ([66bcfbc](https://github.com/BlazeUp-AI/Observal/commit/66bcfbc01ea47c33c939fbb79647e5d946f1010c))
- make review queue item names clickable (**web**) ([69f1997](https://github.com/BlazeUp-AI/Observal/commit/69f1997ddfe47454cf7ada3952512805a69b0e44))
- exclude agents from component review queue (**web**) ([62702f1](https://github.com/BlazeUp-AI/Observal/commit/62702f1a735ca629be7505a8df9b22b83385f997))
- avoid MissingGreenlet in IDE feature inference (**server**) ([a4e9bbc](https://github.com/BlazeUp-AI/Observal/commit/a4e9bbceaa3acd320691c5fb12edf3978633bc90))
- scope global agent name fallback to active + org-tenant ([955ee50](https://github.com/BlazeUp-AI/Observal/commit/955ee50e0a414f4009c738beacd8c57db27de78e))
- resolve agent by name globally, not just for current user (**server**) ([bccdc81](https://github.com/BlazeUp-AI/Observal/commit/bccdc818ad72536124c60da2b5db017e0bee6959))
- correct 404 hint for agent commands (**cli**) ([27f95c9](https://github.com/BlazeUp-AI/Observal/commit/27f95c91e4380037c13d61717f0b8dc96240936e))
- scan standalone skills from ~/.claude/skills/ (**cli**) ([99cfce9](https://github.com/BlazeUp-AI/Observal/commit/99cfce9d72a874afe48a7b3d18a4dc468d1becac))
- use git reset --hard instead of pull to avoid divergent branch failures (**ci**) ([c4d84c1](https://github.com/BlazeUp-AI/Observal/commit/c4d84c16013854437c775bfc0d4006dc4a857c99))
- cache key builder, route path, and lock file for redis cache ([7656d8c](https://github.com/BlazeUp-AI/Observal/commit/7656d8ce4769e62f9cd0e8f26665034a04f90f16))
- trust mcp_validated flag over stale validation results (#353) (**review**) ([ced3c3e](https://github.com/BlazeUp-AI/Observal/commit/ced3c3e63185546edd6fdb3eb32b376163b0ec60))
- show most-used model instead of arbitrary pick (**traces**) ([e35ac4c](https://github.com/BlazeUp-AI/Observal/commit/e35ac4c6491bcfa0c814cca445d9cc7781e009e2))
- correlate native telemetry with hook events for token stats (**traces**) ([896244d](https://github.com/BlazeUp-AI/Observal/commit/896244db79cf46c6f8fea7efbd076b5df96ed542))
- correct double-slash in skill command test fixture ([54efa96](https://github.com/BlazeUp-AI/Observal/commit/54efa960ff6f98225ac54a7d0fa6abc933c7dd3f))
- format issues, future annotations, and test assertions (**ci**) ([89c74be](https://github.com/BlazeUp-AI/Observal/commit/89c74be901aaf399b329a15af2323b6dd38fd8d8))
- resolve ruff lint errors (unused import, f-string placeholders) ([6ff3185](https://github.com/BlazeUp-AI/Observal/commit/6ff318522bce8d5f3f0e6286f33fe25947fce9d7))
- Kiro CLI telemetry pipeline — traces now visible in frontend ([b9384b6](https://github.com/BlazeUp-AI/Observal/commit/b9384b68e33a29009dd13c8d3235cea6cb78523e))
- handle Redis unavailability gracefully in auth endpoints (#398) (**auth**) ([b090f24](https://github.com/BlazeUp-AI/Observal/commit/b090f243dc51ece87cf489dc6b9c748c80dad4e3))
- resolve 5 Kiro telemetry bugs ([8819dd4](https://github.com/BlazeUp-AI/Observal/commit/8819dd48731f8d599777e9a484e34a07c3d3924b))
- sort imports to satisfy ruff lint (**sec**) ([aa7e323](https://github.com/BlazeUp-AI/Observal/commit/aa7e323525d4abcc1a61aaaf5fcb8864aa0fe3d0))
- add CSP header, restrict CORS, and harden XSS protections (#413) (**sec**) ([b98d767](https://github.com/BlazeUp-AI/Observal/commit/b98d767e3214a21c092996f5398b206ba796f663))
- enable delete/withdraw action in review queue for super_admin users (#408) ([51f05a3](https://github.com/BlazeUp-AI/Observal/commit/51f05a36e5ef641897ba58726c9d41ec1f0f584f))
- align GraphQL traces queries with backend TraceConnection schema and add Kiro IDE hook format ([d26a571](https://github.com/BlazeUp-AI/Observal/commit/d26a57109d3d6e9414670e3db967b0e6666b2fb9))
- Kiro IDE session detection, event normalization, and grouping ([5ec45af](https://github.com/BlazeUp-AI/Observal/commit/5ec45af7efb049264e6bd3982e735a674a47df3e))
- apply escape_like() to all search/filter queries (**sec**) ([90a39a4](https://github.com/BlazeUp-AI/Observal/commit/90a39a4801b74ac3b914716c8b35f2e005e060dc))
- GET /api/v1/review returns all pending items by default ([a872673](https://github.com/BlazeUp-AI/Observal/commit/a872673343b5623d3befc60676f12ab40b342aa0))
- update test for separate Stop matcher groups (**hooks**) ([1d73d47](https://github.com/BlazeUp-AI/Observal/commit/1d73d479123ec2d18bc8e0d1c36410e562d5b1ca))
- stop-hook stdin drain prevents response/thinking capture (**hooks**) ([d56bfc0](https://github.com/BlazeUp-AI/Observal/commit/d56bfc019bb54d333a3d82a05903536bea078516))
- persist mcp_server_ids in agent draft and allow bodyless submit ([3c1f445](https://github.com/BlazeUp-AI/Observal/commit/3c1f445606d36b3e1bd780fa94475f1464ebcbbb))
- resolve intermittent 500 errors through Next.js proxy ([785f033](https://github.com/BlazeUp-AI/Observal/commit/785f033943e103d0dae371171e3ef445fd8752e2))
- dynamic 404 hint, --draft/--submit exclusion, --from-file error handling (#401) (**cli**) ([15af543](https://github.com/BlazeUp-AI/Observal/commit/15af543f19f7ee6bc69cbf039a8db33c1737634a))
- move /my routes before /{id} to fix route collision (#400) (**api**) ([0fe3aa2](https://github.com/BlazeUp-AI/Observal/commit/0fe3aa2caeb53c13f74978d8eadc14ca77df5869))
- prevent non-admin deletion of approved/active registry items ([1d19533](https://github.com/BlazeUp-AI/Observal/commit/1d195331e6d826174520fcc07eb8440d4a04a97b))
- move agent description check to route level (**api**) ([a38ef15](https://github.com/BlazeUp-AI/Observal/commit/a38ef15812b823f4f2cd501dfb2e4755965f8af1))
- use Field(min_length=1) to reject empty description strings (**api**) ([1ff3d94](https://github.com/BlazeUp-AI/Observal/commit/1ff3d9431f4ab7704fba1d73a0378964805fe9a4))
- remove cross-user agent name resolution fallback (#350) (**api**) ([69cc2ed](https://github.com/BlazeUp-AI/Observal/commit/69cc2ed14a69518f86d8320e2395269517d3ddfa))
- fall back to current user for empty agent owner (#403) (**api**) ([5f45a76](https://github.com/BlazeUp-AI/Observal/commit/5f45a76d9071356cb12fb6343c28ce50ebc3a351))
- require non-empty description for agent and MCP submissions (#402) (**api**) ([bbc22a6](https://github.com/BlazeUp-AI/Observal/commit/bbc22a6f32a207d811c8488cb98dfd5275a812b4))
- use correct plural labels for component types (#407) (**web**) ([1358feb](https://github.com/BlazeUp-AI/Observal/commit/1358febf5acad32248c8ec07a9327881bb718667))
- lazy-import asyncpg to unbreak all CLI commands (**cli**) ([3cd0dd4](https://github.com/BlazeUp-AI/Observal/commit/3cd0dd4235449ae71fae32b8ecb6013523aa8bc9))
- use SSR sentinel in auth guards to satisfy React Compiler lint (**web**) ([82ebb00](https://github.com/BlazeUp-AI/Observal/commit/82ebb003d6d63a1201ea502ffa2a2d888a6867f6))
- resolve page reload redirect, draft persistence, and custom prompt save (**web**) ([0a0ad3b](https://github.com/BlazeUp-AI/Observal/commit/0a0ad3b25b671230b4456dd5b2e64bf235323b30))
- handle Redis unavailability gracefully in auth endpoints (**auth**) ([5eb3db7](https://github.com/BlazeUp-AI/Observal/commit/5eb3db71a29a83ffca9bbc66bd9b25402a6c312b))
- use correct endpoint path for prompt submit (**cli**) ([f10711b](https://github.com/BlazeUp-AI/Observal/commit/f10711b1113ea1687d782c626fd18ed612b997be))
- strip ANSI codes from CLI help output assertions (**tests**) ([ba3cefa](https://github.com/BlazeUp-AI/Observal/commit/ba3cefa361eea16e73992768211ae4ce4e27ddf0))
- sanitize URL path components in GHCR image inference (**security**) ([76bd675](https://github.com/BlazeUp-AI/Observal/commit/76bd675e1e0e24e4eff0b6fccd1fc4fb05dd99d8))
- add missing MCP fields to shim test mock (**test**) ([96ac234](https://github.com/BlazeUp-AI/Observal/commit/96ac234732578083b5b8952947a2ec7c8605c876))
- handle terminal line-wrapping in --config JSON paste (**cli**) ([720c415](https://github.com/BlazeUp-AI/Observal/commit/720c4157625b4259b0a702ab048bdf6b00fdaa5a))
- require only one empty line to finish --config paste input (**cli**) ([bda9263](https://github.com/BlazeUp-AI/Observal/commit/bda92633fa0e36369af264c82fbf7d573a86e830))
- renumber migration to 0013 to resolve duplicate revision conflict (**db**) ([070304b](https://github.com/BlazeUp-AI/Observal/commit/070304beec2f203893b0663e23ca79818d77bba2))
- make host ports configurable to avoid port conflicts ([0549577](https://github.com/BlazeUp-AI/Observal/commit/0549577d6487cf90a18f719720013cbdfdbf518c))
- set org_id=None on mock users and update graphql test imports (**tests**) ([bb71ba4](https://github.com/BlazeUp-AI/Observal/commit/bb71ba4761449e6229ec2746a37b68dd8aa5ba7b))
- resolve TypeScript error in getAccessToken return type (**e2e**) ([e8acff0](https://github.com/BlazeUp-AI/Observal/commit/e8acff005334d30dee2aabb52253f69ae1ed3b78))
- use proper auth tokens and retry on rate limit in tests (**e2e**) ([8b42d2c](https://github.com/BlazeUp-AI/Observal/commit/8b42d2c27bb5d76234d96981da46bfc661740b4e))
- wrap agent builder with Suspense for static prerendering (**web**) ([662048c](https://github.com/BlazeUp-AI/Observal/commit/662048c63f26424c307c6d461415ee69675ea10d))
- resolve ruff lint and format issues across new files ([f9c2405](https://github.com/BlazeUp-AI/Observal/commit/f9c24053544c4d3d62aa42a2f945a6dbef7ceb65))
- release changes for pip (**cli**) ([c61e012](https://github.com/BlazeUp-AI/Observal/commit/c61e012fe291834ee5b5a8cdf7d86d0ddba52211))
- show agents in review queue and route approve/reject correctly ([6a968dd](https://github.com/BlazeUp-AI/Observal/commit/6a968dd10f32d684180a4d09287af9144180560c))
- install project deps before running tests (**ci**) ([489341f](https://github.com/BlazeUp-AI/Observal/commit/489341f2379ef53d9611b332f47e3708ac85d1ee))
- require admin review before agents are published (#376) ([9d20437](https://github.com/BlazeUp-AI/Observal/commit/9d20437bb24b94c2a807a906f4bc3f1073f144fb))
- add @eslint/compat to fix eslint-plugin-react with ESLint 10 (**web**) ([6ce6778](https://github.com/BlazeUp-AI/Observal/commit/6ce6778c878198aa21e834775ed37da6df5ea2a9))
- update web frontend (minor/patch) (**deps**) ([04d51f8](https://github.com/BlazeUp-AI/Observal/commit/04d51f8624c2733826c4a2523bcbfc61f9373ffe))
- resolve duplicate migration revision 0010 (**db**) ([9857534](https://github.com/BlazeUp-AI/Observal/commit/985753447fe16a602996a44055051dffcd21b6e4))
- bump strawberry-graphql to >=0.314.0 for WS DoS fix (**deps**) ([33eb33c](https://github.com/BlazeUp-AI/Observal/commit/33eb33ca49fbe42d2231f23765523c33cd04957f))
- bump authlib to >=1.6.11 to fix CSRF vulnerability (**deps**) ([c33f4ee](https://github.com/BlazeUp-AI/Observal/commit/c33f4eeef070f2ecfd9e54538eb81cead3140d4f))
- bump Mako to >=1.3.11 to fix path traversal (**deps**) ([6df5b02](https://github.com/BlazeUp-AI/Observal/commit/6df5b023e5e627c079e6fa447a66272a4b08bd94))
- bump python-multipart to >=0.0.26 to fix DoS vulnerability (**deps**) ([417e3a7](https://github.com/BlazeUp-AI/Observal/commit/417e3a746a875db1948078a84942bcb1065ca62f))
- suppress hydration warnings from ThemeProvider and browser extensions (**web**) ([6e023b8](https://github.com/BlazeUp-AI/Observal/commit/6e023b8b34a854703a180568c53806e5fb2f9252))
- resolve React hydration and DOM nesting errors (**web**) ([ba5e20c](https://github.com/BlazeUp-AI/Observal/commit/ba5e20cf60f513dbbda6e50da9dc31df152b34e1))
- prevent CRLF line endings from breaking Docker on Windows ([eeaf99f](https://github.com/BlazeUp-AI/Observal/commit/eeaf99f1f3711f5c41c6f90b099d94e1a3d6c8a7))
- move hooks outside table cell function to fix lint errors ([0137411](https://github.com/BlazeUp-AI/Observal/commit/0137411c717a267bd7610c0d7e2e019fe39fed64))
- resolve ruff lint errors in migration and registry telemetry ([0d5ff5e](https://github.com/BlazeUp-AI/Observal/commit/0d5ff5e5c8213e3c5c8892c75f1f8fb1380b7b49))
- update dependency @chenglou/pretext to ^0.0.5 [security] (**deps**) ([7600775](https://github.com/BlazeUp-AI/Observal/commit/7600775d4dca9e5f8a3656b5c59a7c47d979405b))
- update dependency next to v16.2.3 [security] (**deps**) ([feec0f4](https://github.com/BlazeUp-AI/Observal/commit/feec0f4cc16eae8d3b8413852f871248a3201822))
- add :gitSignOff preset to Renovate config ([36c660e](https://github.com/BlazeUp-AI/Observal/commit/36c660ebf7a3160edbee242977f8801a6b01099b))
- clarify env var review prompt during submit (**cli**) ([e33e863](https://github.com/BlazeUp-AI/Observal/commit/e33e863b5e9f1615a345b9cfa28d0087e6a0c249))
- auto-replace pending/rejected listings on re-submit ([0d541c0](https://github.com/BlazeUp-AI/Observal/commit/0d541c04ae20edd6c9b62e0af038c4770c91ed26))
- protect registry routes with auth guard (**web**) ([1cf6599](https://github.com/BlazeUp-AI/Observal/commit/1cf659970f9f2ee3756d83c7271f5fe0d19f6080))
- store asyncio.create_task reference to prevent GC (RUF006) ([e804691](https://github.com/BlazeUp-AI/Observal/commit/e804691d4d8fe70372be4e17f32de4735f1b028d))
- invalidate session detail immediately, only debounce list ([5e6076b](https://github.com/BlazeUp-AI/Observal/commit/5e6076b1a7ccd63cd425038c53da2ebe766b1675))

### Other

- remove hardcoded dev paths and stale internal docs ([6f39743](https://github.com/BlazeUp-AI/Observal/commit/6f39743cc3c2d6cec4c54be833a3410a6334b957))
- ignore pi-lens cache directories ([b8d84e2](https://github.com/BlazeUp-AI/Observal/commit/b8d84e2d39a0f6daa0c2b6cca32d7814d293ec07))
- update dependency authlib to v1.7.1 [security] (#923) (**deps**) ([6a00ce3](https://github.com/BlazeUp-AI/Observal/commit/6a00ce3e33f89ffdc05d42d2a563ef0633ac761e))
- ignore and untrack Terraform plan files (OBSV-SEC-019) (**security**) ([c4873d4](https://github.com/BlazeUp-AI/Observal/commit/c4873d4469a5efdc6db470a82f156fec4763fa4c))
- add SPDX license headers for REUSE compliance ([df9b065](https://github.com/BlazeUp-AI/Observal/commit/df9b0652949043dd53710d12f8bdf8ada5c9ced3))
- add SPDX headers and fix pre-commit hook for new files ([4653ffa](https://github.com/BlazeUp-AI/Observal/commit/4653ffac901632e251cf7a791b82aec517688c20))
- add Codecov for test coverage reporting (**ci**) ([016d312](https://github.com/BlazeUp-AI/Observal/commit/016d3121c992e15b7e4838696fe3307ac61d7df0))
- add SPDX headers to all source files (REUSE 3.3 compliant) ([193d7c9](https://github.com/BlazeUp-AI/Observal/commit/193d7c94a1360cd7918617a47e84ef691a35a493))
- remove DCO, CLA-assistant is the sole contributor agreement ([90635ca](https://github.com/BlazeUp-AI/Observal/commit/90635ca6a8afe6d8adb1ee66f7948372aeab233f))
- update terraform-linters/setup-tflint action to v6 (**deps**) ([47e7736](https://github.com/BlazeUp-AI/Observal/commit/47e77365da31820a113860e5a094b9146a335fe9))
- update pnpm/action-setup action to v6 (**deps**) ([cb1c7e1](https://github.com/BlazeUp-AI/Observal/commit/cb1c7e1c21245ee914df229cf3d65aab8207977b))
- update redis docker tag to v8 (**deps**) ([c8a7592](https://github.com/BlazeUp-AI/Observal/commit/c8a75924d65c0339449957671ea1b2865a42e8c9))
- update postgres docker tag to v18 (**deps**) ([0905772](https://github.com/BlazeUp-AI/Observal/commit/0905772b1d115eacee0e2cd19c19e50c894fc201))
- update hashicorp/setup-terraform action to v4 (**deps**) ([bd36feb](https://github.com/BlazeUp-AI/Observal/commit/bd36feb5e63d1ba40f6ec31d3a4178aa192cb67b))
- update github/codeql-action action to v4 (**deps**) ([1089756](https://github.com/BlazeUp-AI/Observal/commit/10897565ed1ff5d18cbc3f4b3d820721e5326c9e))
- update actions/checkout action to v6 (**deps**) ([8be0707](https://github.com/BlazeUp-AI/Observal/commit/8be07072fd91e9f05b53088b027283170cb0914f))
- update tflint plugin terraform-linters/tflint-ruleset-aws to v0.47.0 (#778) (**deps**) ([574d28f](https://github.com/BlazeUp-AI/Observal/commit/574d28fa3ea0fc22a7cca02d8e2402c291a7ce4b))
- remove ops sync tombstone (**ops**) ([2917e1c](https://github.com/BlazeUp-AI/Observal/commit/2917e1ce93d3fd960ccc224951f6d43743b7d2f2))
- update docker images (minor/patch) (#777) (**deps**) ([4d29e1f](https://github.com/BlazeUp-AI/Observal/commit/4d29e1f299fddfc77a37ccf16bf42ca7e1468fe0))
- update dependency python-multipart to v0.0.27 [security] (#767) (**deps**) ([66db454](https://github.com/BlazeUp-AI/Observal/commit/66db4547aa49dbc0a56ad6824ea3319fb9a940f2))
- update dependency mako to v1.3.12 [security] (#766) (**deps**) ([f1c6fd4](https://github.com/BlazeUp-AI/Observal/commit/f1c6fd4628545c261814d94888cdbeb259680871))
- add pyrightconfig.json to observal-server ([4a02084](https://github.com/BlazeUp-AI/Observal/commit/4a0208466b66ce58c6e6125e8d9a3016969c71c5))
- update github artifact actions (**deps**) ([af5e2db](https://github.com/BlazeUp-AI/Observal/commit/af5e2db8e345fc00b56e4d96549a8a5d195fd3a0))
- update actions/stale action to v10 (**deps**) ([a11966a](https://github.com/BlazeUp-AI/Observal/commit/a11966ad46461c19bc7517252534d6981746c0b7))
- update actions/github-script action to v9 (**deps**) ([3a2b92c](https://github.com/BlazeUp-AI/Observal/commit/3a2b92c5d9fb1c54b1f105bee15e5b12cab0850c))
- update astral-sh/setup-uv action to v8 (**deps**) ([b7d0896](https://github.com/BlazeUp-AI/Observal/commit/b7d08965ead0f40fa17e0b46eda6752468bc5bdc))
- update actions/setup-python action to v6 (**deps**) ([0002d7f](https://github.com/BlazeUp-AI/Observal/commit/0002d7f4ec49b92f8206eeb93851629109e1d992))
- update actions/checkout action to v6 (**deps**) ([04db00c](https://github.com/BlazeUp-AI/Observal/commit/04db00c3addd189bcef7fa0455fe583060c2a882))
- update actions/attest-build-provenance action to v4 (**deps**) ([2e23a47](https://github.com/BlazeUp-AI/Observal/commit/2e23a4758f1d6a195d0158e98c9e844f313b954f))
- update dependency python to 3.14 (#577) (**deps**) ([5420a10](https://github.com/BlazeUp-AI/Observal/commit/5420a100006067355651befb83f1289413077f83))
- update docker images (minor/patch) (#578) (**deps**) ([9a86d40](https://github.com/BlazeUp-AI/Observal/commit/9a86d40d82fd6b378758aa0ec2a607c48a12fb36))
- automerge minor+patch Renovate PRs (**deps**) ([66cb1ba](https://github.com/BlazeUp-AI/Observal/commit/66cb1baf8d0b84760cb1564a6614eb98700581f2))
- cleanup anti-patterns in registered-agents-only files ([3e0ee48](https://github.com/BlazeUp-AI/Observal/commit/3e0ee4810f2eae53990c1022c79e8a8557798729))
- ruff format agent_config_generator ([742e0d7](https://github.com/BlazeUp-AI/Observal/commit/742e0d7816f5aa1d8526644bfe856794761ee2f6))
- ruff format agent routes ([89c869f](https://github.com/BlazeUp-AI/Observal/commit/89c869f6d9aad692e381375968f4cc836fab5ee6))
- ruff format agent routes ([a82308e](https://github.com/BlazeUp-AI/Observal/commit/a82308e3c876fc565d32ce2bf21ec6f220c7e589))
- cleanup anti-patterns in review and api modules ([7bc87b4](https://github.com/BlazeUp-AI/Observal/commit/7bc87b487aefdcade8d1cb2f619ac7e9825787a9))
- cleanup anti-patterns in CLI agent commands ([dd0a5aa](https://github.com/BlazeUp-AI/Observal/commit/dd0a5aa494e81ec54c6ba775c21b7ec266885efe))
- cleanup mechanical anti-patterns in routes ([6e9732e](https://github.com/BlazeUp-AI/Observal/commit/6e9732e5988c9d42a7d27c58035be7abd5871031))
- cleanup anti-patterns in agent RBAC implementation ([98e72db](https://github.com/BlazeUp-AI/Observal/commit/98e72db3d5d967f1b4e701afdd0965ef2bd80b10))
- update docker/build-push-action action to v7 (**deps**) ([20f2626](https://github.com/BlazeUp-AI/Observal/commit/20f26263f09cfc4c9f95b52d6e5509f3d34af58a))
- update docker/login-action action to v4 (**deps**) ([e5d87a9](https://github.com/BlazeUp-AI/Observal/commit/e5d87a9dd2fa1b06b384efae2dd87019fbc36d6c))
- update docker/setup-buildx-action action to v4 (**deps**) ([5e5f3f8](https://github.com/BlazeUp-AI/Observal/commit/5e5f3f8f9b0749265cb28ae39912acd0f0d2c1fb))
- sync observal-server uv.lock version to 0.3.4 ([eed7bdd](https://github.com/BlazeUp-AI/Observal/commit/eed7bdded2218e60d08aafb623cefa698223b7ff))
- update dependency ruff to v0.15.12 (#575) (**deps**) ([a8a406d](https://github.com/BlazeUp-AI/Observal/commit/a8a406df83a1978b157c0c8d6aac359d70a2da7b))
- remove volumes in rebuild-clean target ([c36996f](https://github.com/BlazeUp-AI/Observal/commit/c36996fd65e8b11c83f35576f16dfd2b66bec7f5))
- semvar fix (**pre-bump**) ([f7179ff](https://github.com/BlazeUp-AI/Observal/commit/f7179ff33347614def431e430a0ca0186d6c1790))
- remove registration endpoint and CLI command (**auth**) ([28fc0f1](https://github.com/BlazeUp-AI/Observal/commit/28fc0f1277a5f632710446f7e18934a8a28d2096))
- gitignore AI agent and IDE config directories ([2454408](https://github.com/BlazeUp-AI/Observal/commit/245440842607985380a21e2798d834b95fdfb3e4))
- remove magic-agent.json and docs/superpowers/ ([3ddeed5](https://github.com/BlazeUp-AI/Observal/commit/3ddeed50d0335d9c2b0e18ab0a597ba38f94a7c3))
- ignore playwright and e2e screenshot artifacts ([9dd9f20](https://github.com/BlazeUp-AI/Observal/commit/9dd9f20664572215d0e07e99fcc8c32e8627e1d9))
- add pre-push DCO sign-off check ([04c0ac5](https://github.com/BlazeUp-AI/Observal/commit/04c0ac54a237264a158dea5b2d55a409ac27f460))
- add pre-commit secrets guard to block .env and API key leaks ([e3cf243](https://github.com/BlazeUp-AI/Observal/commit/e3cf2433112203096a4d1e6892e4f0b067691f37))
- add .worktrees/ to .gitignore ([5f651bf](https://github.com/BlazeUp-AI/Observal/commit/5f651bf8d29c960fe7b341beadc3fa1e9f302451))
- enable gitbooks for docs ([2e4eef2](https://github.com/BlazeUp-AI/Observal/commit/2e4eef2e10227192a42462277a82f1c242d7e39a))
- fix ruff formatting ([ebb1b99](https://github.com/BlazeUp-AI/Observal/commit/ebb1b9946d52c89ac4e572d72adc49753b003b59))
- add migration chain validation and generator scripts ([f5b7550](https://github.com/BlazeUp-AI/Observal/commit/f5b7550edf536c2c8cf6bd3f7111d4739d459cd7))
- update dependency eslint to v10 (**deps**) ([19640ad](https://github.com/BlazeUp-AI/Observal/commit/19640adcda3358b27775d143beef1a547101b7c4))
- update dorny/paths-filter action to v4 (**deps**) ([45fd80b](https://github.com/BlazeUp-AI/Observal/commit/45fd80b5baea2d3665719b3dc5a1e86527c29383))
- update dependency node to v24 (**deps**) ([07aa211](https://github.com/BlazeUp-AI/Observal/commit/07aa2112f93e8341e49545f8305b87f057d67ac3))
- update dependency typescript to v6 (**deps**) ([dd47929](https://github.com/BlazeUp-AI/Observal/commit/dd479298cd6b9becf7620a7b8a84a1c6a59c41ab))
- update clickhouse/clickhouse-server docker tag to v26 (**deps**) ([ae66928](https://github.com/BlazeUp-AI/Observal/commit/ae669289f0b0488f66cf3671d45308f1e75afe1e))
- update astral-sh/setup-uv action to v7 (**deps**) ([6501ff2](https://github.com/BlazeUp-AI/Observal/commit/6501ff205a6a7fbb97e40ee7451a10bb9e193aae))
- update actions/setup-node action to v6 (**deps**) ([9d1ca0e](https://github.com/BlazeUp-AI/Observal/commit/9d1ca0e396bd719485a0042d44d607368b275c10))
- update actions/checkout action to v6 (**deps**) ([0009e52](https://github.com/BlazeUp-AI/Observal/commit/0009e521429fb030e49b04c7ccd15ea185786492))
- update docker images (minor/patch) (**deps**) ([818ce27](https://github.com/BlazeUp-AI/Observal/commit/818ce27e7893fa8509d36bede97a08dcc9fa43e8))
- update dependency ruff to v0.15.11 (#340) (**deps**) ([a43697c](https://github.com/BlazeUp-AI/Observal/commit/a43697ccfd66520489cbce04e824e268107340db))
- add Renovate config for automated dependency updates ([acfadae](https://github.com/BlazeUp-AI/Observal/commit/acfadae9b5a1800321e34c7c78558d7fe8a9c1f9))
- remove empty 26.0.1 file, move images to docs/images/ ([1eeecb9](https://github.com/BlazeUp-AI/Observal/commit/1eeecb9b43839aa414599e65121d58c5777f2122))

### Performance

- migrate _ev_session_details to session_stats_agg (**insights**) ([d3463ea](https://github.com/BlazeUp-AI/Observal/commit/d3463ea14e59aa8b65139553cabe96db317af521))
- migrate _ev_per_session_tokens to session_stats_agg (**insights**) ([b6f6053](https://github.com/BlazeUp-AI/Observal/commit/b6f60534a81f8ed6b9602091c4721884cee17613))
- migrate _ev_subagent_stats to session_stats_agg (**insights**) ([5844f3b](https://github.com/BlazeUp-AI/Observal/commit/5844f3bdad656e7b1215397f6a140910c7c702c3))
- migrate _ev_duration_stats to session_stats_agg (**insights**) ([70006ad](https://github.com/BlazeUp-AI/Observal/commit/70006ad2285da64e0ad0c088cb71479648b8a5f1))
- migrate _ev_credit_aggregates to session_stats_agg (**insights**) ([6626780](https://github.com/BlazeUp-AI/Observal/commit/66267805db095898607367cca44300dc7936abc1))
- migrate _ev_token_aggregates to session_stats_agg (**insights**) ([3aaa7c2](https://github.com/BlazeUp-AI/Observal/commit/3aaa7c2ea11015ce124baadf87899ead2a73e7f5))
- migrate _ev_session_overview to session_stats_agg (**insights**) ([ea867b4](https://github.com/BlazeUp-AI/Observal/commit/ea867b4d93e4ddb5e8a0d401914918e5d9080d2f))
- migrate _count_sessions_in_events to session_stats_agg (**insights**) ([53db78e](https://github.com/BlazeUp-AI/Observal/commit/53db78eb7a9a1deaed00d6058faf3136270b57b9))
- add proj_session_view projection on session_events (**clickhouse**) ([0100bb9](https://github.com/BlazeUp-AI/Observal/commit/0100bb9d500920ba34bd08bdbda91bcdc7349690))
- replace parent_session_id bloom_filter with set(0) (**clickhouse**) ([4d38c70](https://github.com/BlazeUp-AI/Observal/commit/4d38c705e553694ef7b4820f38b0ae5b3803e70f))
- replace event_type bloom_filter with set(20) skip index (**clickhouse**) ([b0f595a](https://github.com/BlazeUp-AI/Observal/commit/b0f595a3beb117e7f610087163c04d5b98f23f96))
- drop FINAL from session existence check (**reconcile**) ([ce7733b](https://github.com/BlazeUp-AI/Observal/commit/ce7733bac026b74c667eb8e4bae91717c216e58a))
- parallel FINAL scans + partition-scoped dedup in get_session (**sessions**) ([1152bc2](https://github.com/BlazeUp-AI/Observal/commit/1152bc2ebf32c8a55c305eb31359d307423c422a))
- migrate stats endpoint to session_stats_agg (**sessions**) ([99db552](https://github.com/BlazeUp-AI/Observal/commit/99db552be788bbcaad5b24fc7982d721ba34a3bc))
- migrate summary endpoint to session_stats_agg (**sessions**) ([11d7474](https://github.com/BlazeUp-AI/Observal/commit/11d7474df650a45fb25d2c919dd2f1939eca41dc))
- rank top-50 sessions via session_stats_agg, drop FINAL scan (**insights**) ([b6e84b1](https://github.com/BlazeUp-AI/Observal/commit/b6e84b140a37a2036bf9f7492b5443558df731c8))
- replace JSONExtract with materialized columns in metrics (**insights**) ([5a2e1bb](https://github.com/BlazeUp-AI/Observal/commit/5a2e1bb52c825d4c116efa5964210923111d1d5a))
- add session_stats_agg AggregatingMergeTree MV (**clickhouse**) ([5d54f30](https://github.com/BlazeUp-AI/Observal/commit/5d54f30d2df1b2726606b8313b286544b15777ba))
- multi-stage API build, expand dockerignore, add nginx gzip (**docker**) ([21fd2a4](https://github.com/BlazeUp-AI/Observal/commit/21fd2a461bd01709df7775655aedc91a07e608e6))
- resolve trace_privacy at auth time, eliminate extra DB calls ([6f3602c](https://github.com/BlazeUp-AI/Observal/commit/6f3602c636a2b147a5622c2856931383bce091b4))

### Testing

- add coverage for MCP config parser, shim errors, and edit/submit ([8896814](https://github.com/BlazeUp-AI/Observal/commit/889681403a06bca72120a7e4869b337f4d2b5f51))
- cover IDE feature inference (**server**) ([49d341e](https://github.com/BlazeUp-AI/Observal/commit/49d341eb87e81318cfd384abcaf719a2c0790605))
- add component edit form screenshot spec (**e2e**) ([6fd363b](https://github.com/BlazeUp-AI/Observal/commit/6fd363b2d6bf0323862b868ebdc2a0ed1d425a78))
- add full edit → release → review Playwright flow (**e2e**) ([8672d9a](https://github.com/BlazeUp-AI/Observal/commit/8672d9ae8fdd62ecde89060ab1cdf6c85c7223a6))
- update expectations for single-endpoint architecture ([3d271a6](https://github.com/BlazeUp-AI/Observal/commit/3d271a629adc4b5f4e380152b5f5e59f66aeea5c))
- update assertions for new config format (**kiro**) ([550ade5](https://github.com/BlazeUp-AI/Observal/commit/550ade505fa9eb1658799bdce050cd140927a2d4))
- add copilot-cli e2e tests ([dfabf02](https://github.com/BlazeUp-AI/Observal/commit/dfabf0215d6bdbb9bc1d0f0e2fb50e36dbe6f6d4))
- update e2e tests for hook bridge and disabled OTLP (**gemini**) ([9655b26](https://github.com/BlazeUp-AI/Observal/commit/9655b26b3df6f6c34cdb7e7ddfa3c4be0ae46ec9))
- add comprehensive tests for Auth 2.0 security features (**auth**) ([adeafd3](https://github.com/BlazeUp-AI/Observal/commit/adeafd3570613f748a2872bb580e64bc1df99be1))
- update enterprise tests for real SAML/SCIM behavior (**ee**) ([5568201](https://github.com/BlazeUp-AI/Observal/commit/55682010cd05bfef16701be79b388a62b7487ee9))
- add tests for dollar-var placeholder display ([c352100](https://github.com/BlazeUp-AI/Observal/commit/c3521008b775688174e1619e1f7904582c93e6c2))
- add edge case tests for ClickHouse resource tuning ([31bd3f7](https://github.com/BlazeUp-AI/Observal/commit/31bd3f7adb39c55c3ff72817db42d339ce7911f4))
- add tests for dollar-sign variable detection and substitution ([fc37b7a](https://github.com/BlazeUp-AI/Observal/commit/fc37b7ab821cd86b99c420d55d9f3052f3d3bf3b))
- add docker detection, command inference, SSE config, and direct submit tests ([fb0f5b1](https://github.com/BlazeUp-AI/Observal/commit/fb0f5b101e43833d2786ba17d2071c7c68c1082d))
- add 32-test org isolation suite (**multi-tenancy**) ([0b63188](https://github.com/BlazeUp-AI/Observal/commit/0b631884906af26dfd6ed42d8cd7107e4eab60f8))
- add review, bundle, bulk, and draft workflow tests ([15f1336](https://github.com/BlazeUp-AI/Observal/commit/15f133605c9760372a392f312b18a134c31cb241))
- add env var detection, config generation, and submit tests ([4db4a17](https://github.com/BlazeUp-AI/Observal/commit/4db4a17eec7a493128a46d799abefb229cc5a6ed))
## [0.0.1] - 2026-04-15

### Added

- add framework selection (docker/python/typescript/go) to submit flow (**mcp**) ([6078c9b](https://github.com/BlazeUp-AI/Observal/commit/6078c9bd25c30d74a4f15f959f226b787f44c4aa))
- IDE-specific session display for Kiro and Claude Code (**web**) ([f92566f](https://github.com/BlazeUp-AI/Observal/commit/f92566f9862c5a9430d7a389b1deb0d712c3db8c))
- add doctor sli command for hook reinstallation (**cli**) ([9100827](https://github.com/BlazeUp-AI/Observal/commit/91008271e024bb1bb3d69c32c41f6e38e4a900e5))
- isolate IDE-specific hook ingestion, fix session queries (**kiro**) ([f71d761](https://github.com/BlazeUp-AI/Observal/commit/f71d761cfef8931025e18597a206b0154db5169c))
- deprecate reset-code flow, add delete user (**auth,admin**) ([36a95ea](https://github.com/BlazeUp-AI/Observal/commit/36a95ea4cb79c3a558fc6304c274c0df7693429a))
- add lean-ctx MCP and auto-formatting hooks (**dev**) ([f4665e6](https://github.com/BlazeUp-AI/Observal/commit/f4665e621de3adf05b2cea99a087d15080545a23))
- add graphify rebuild to pre-commit hooks (**dev**) ([8f70e45](https://github.com/BlazeUp-AI/Observal/commit/8f70e45241a241b6ffb3356c040bd17ca91cadc2))
- add API key rotation with expiration and security hardening (**auth**) ([c57b8e9](https://github.com/BlazeUp-AI/Observal/commit/c57b8e97afeb08d6546e4a94a0b8aa03d7e95a33))
- add AI-assisted development tooling with graphify, gstack, and caveman (**dev**) ([9ef8088](https://github.com/BlazeUp-AI/Observal/commit/9ef8088c3c2538cd7e582c2474a7f06d164c9596))
- fix settings 404, UI scaling, eval banner, and RBAC gating (#200) (**web**) ([2e28a4a](https://github.com/BlazeUp-AI/Observal/commit/2e28a4a397d6c514b0995c6ed4a411881525b2d6))
- fix auth UX, RBAC feedback, and enterprise mode gating (#200) (**web**) ([14fc136](https://github.com/BlazeUp-AI/Observal/commit/14fc13603ef3e83adba437442cecf82cb4dd41d7))
- remove all deprecated CLI command aliases ([b13bfdb](https://github.com/BlazeUp-AI/Observal/commit/b13bfdb0ab8ca5bf6c57db3266c448af6a13c679))
- remove invite code system ([8d89bed](https://github.com/BlazeUp-AI/Observal/commit/8d89bed0e2e1234dce5fd862bd8e437e90940b1f))
- send client-side analysis with submit to skip server-side clone ([0ef9b33](https://github.com/BlazeUp-AI/Observal/commit/0ef9b336fc07184d9f1e0873161d8d2d69dbdee2))
- analyze MCP repos locally using user's git credentials (**cli**) ([ea18700](https://github.com/BlazeUp-AI/Observal/commit/ea1870018142984b5b491e2cfd0f7d1706f62331))
- Grafana dashboard & docs for managed grafana ([7ff4e81](https://github.com/BlazeUp-AI/Observal/commit/7ff4e8143f9e7b9fe192568d1d9e6f9be62aad79))
- improve error handling, debugging, and credential security (#201) (**cli**) ([3482921](https://github.com/BlazeUp-AI/Observal/commit/3482921c1c5b608911b28c3a67be8ee60bdee24e))
- add data retention TTL policy and configuration (#203) (**clickhouse**) ([41f2190](https://github.com/BlazeUp-AI/Observal/commit/41f2190e502b3112b43d9d6cbd30d073282b74cc))
- add agent and model filter dropdowns to span tree (**web**) ([9a64245](https://github.com/BlazeUp-AI/Observal/commit/9a642457eb366b6ae8247fb729e37dc5ceda120d))
- add audit logging for SOC 2/ISO 27001 compliance (#228) (**ee**) ([ad77396](https://github.com/BlazeUp-AI/Observal/commit/ad773966b2a9b8ab8327b89063178073880a1398))
- add evaluation engine, webhook delivery, and audit history (#204) (**alerts**) ([9a10664](https://github.com/BlazeUp-AI/Observal/commit/9a106649ca570462681bb76983dc264a9c8db6e0))
- add CLI request retry with exponential backoff (#193) ([a100b3e](https://github.com/BlazeUp-AI/Observal/commit/a100b3e6b64d02b82f37a923e548a7e5e82ad691))
- add resilience patterns for ClickHouse, Redis, and HTTP clients (#193) ([410d4c4](https://github.com/BlazeUp-AI/Observal/commit/410d4c4736c2e55707a51966d029435b92d407c3))
- add security scanning and make lint jobs blocking (**ci**) ([8775bd0](https://github.com/BlazeUp-AI/Observal/commit/8775bd041ad174595a02633ba549757186440aa8))
- move password reset tokens to PostgreSQL (**auth**) ([6909c33](https://github.com/BlazeUp-AI/Observal/commit/6909c3376f41faf6861fc00e0f9376b1f162e3c0))
- remove deprecated observal init command (**cli**) ([71916bd](https://github.com/BlazeUp-AI/Observal/commit/71916bda9cb1a49fb05d4ed3a0aaa46fd57afa4c))
- wire enterprise deployment mode and demo account env vars (**docker**) ([2e5bcb7](https://github.com/BlazeUp-AI/Observal/commit/2e5bcb74ccdbc691ce916c836d85e09ea09f4080))
- add cache write tokens to session stats (**web**) ([358a762](https://github.com/BlazeUp-AI/Observal/commit/358a762e39e5a2d97ca5abe41250ec2d416ceee0))
- add asymmetric payload encryption for telemetry buffer (**crypto**) ([6c5d9df](https://github.com/BlazeUp-AI/Observal/commit/6c5d9dfc098e3cc13f0a30f5e927b08282eccfae))
- add declarative settings reconciler and thinking capture (**cli**) ([a20f2ef](https://github.com/BlazeUp-AI/Observal/commit/a20f2ef63552d32b4ebade031aebfae3f8185224))
- add import boundary enforcement (TID251 + CI grep) (**lint**) ([e78964b](https://github.com/BlazeUp-AI/Observal/commit/e78964b6c75b0e3e9945cf3bb54ff8ecb68e5879))
- scaffold enterprise module with SAML/SCIM placeholders (**ee**) ([5d3f33e](https://github.com/BlazeUp-AI/Observal/commit/5d3f33e1aa706a06676fc7e760a4c2270a542b89))
- add demo account seeding and event-driven cleanup (**demo**) ([580512e](https://github.com/BlazeUp-AI/Observal/commit/580512ef64f69663df879e70faa9df02aac7df8f))
- add 3-tier health check endpoints (**health**) ([a892d62](https://github.com/BlazeUp-AI/Observal/commit/a892d626a371dd426eb2f966e93fe81b981853db))
- add require_local_mode guard for enterprise deployment (**auth**) ([b8e56ac](https://github.com/BlazeUp-AI/Observal/commit/b8e56ac3830aa3ce6dd670aa582a004571acb8c4))
- add typed async event bus for core/ee decoupling (**events**) ([2bba214](https://github.com/BlazeUp-AI/Observal/commit/2bba214637089443732e53d4dd399d20b09651ed))
- update UI for enterprise mode and 4-tier RBAC (**web**) ([fbab8a8](https://github.com/BlazeUp-AI/Observal/commit/fbab8a8c981358d87977cbefa41de5673a68f62d))
- add 4-tier role guard and deployment config hook (**web**) ([55c2c5a](https://github.com/BlazeUp-AI/Observal/commit/55c2c5a63da754ecd1fbf913831deb67f1b09758))
- add public config endpoint for frontend deployment mode (**api**) ([b849b50](https://github.com/BlazeUp-AI/Observal/commit/b849b500152ee266398d3882f86689b5611ac610))
- add user role requirement to all resource route files (**rbac**) ([3ecd2dc](https://github.com/BlazeUp-AI/Observal/commit/3ecd2dcc2abfc972df7970b1616926e00d21e44a))
- add admin role requirement to telemetry, eval, otel, dashboard routes (**rbac**) ([605be2c](https://github.com/BlazeUp-AI/Observal/commit/605be2c94bc568caea3fee354dc411be3e6d837a))
- implement hierarchy-aware require_role FastAPI dependency (**rbac**) ([f54bddc](https://github.com/BlazeUp-AI/Observal/commit/f54bddcf805a8433f6c328f05a9620b2130c9162))
- add DEPLOYMENT_MODE and demo account env vars (**config**) ([06527f6](https://github.com/BlazeUp-AI/Observal/commit/06527f6b0b25675684b1a51f75d671045c04b05a))
- add Alembic migration for 4-tier RBAC enum and is_demo column (**db**) ([200ad34](https://github.com/BlazeUp-AI/Observal/commit/200ad34f7e1ca08b5ff89ad80f9727922087e763))
- upgrade UserRole to 4-tier hierarchy with is_demo flag (**rbac**) ([33cd908](https://github.com/BlazeUp-AI/Observal/commit/33cd9089a4381ca25dc229b68eebe46ef803e652))
- initialize Alembic with async PostgreSQL support (**db**) ([6c86480](https://github.com/BlazeUp-AI/Observal/commit/6c86480fdc2adc7b9beaa52eadb3d72133446ca2))
- detect and pass through MCP server environment variables ([6226633](https://github.com/BlazeUp-AI/Observal/commit/622663314382c021fcb7b63d51805020339bb144))
- add local SQLite buffer for offline telemetry collection (**cli**) ([cb774b2](https://github.com/BlazeUp-AI/Observal/commit/cb774b27975a90abad75853b319c6cc2c3186847))
- add asymmetric key management for JWT signing (ES256) (**security**) ([3270b1a](https://github.com/BlazeUp-AI/Observal/commit/3270b1ad4a2b8feaf409b525155da21f388e873c))
- add JWT bearer token auth for unified browser/CLI sessions (**auth**) ([32f3371](https://github.com/BlazeUp-AI/Observal/commit/32f337192936900aa577523bb3402063829fa78f))
- add Content-Type validation, request ID, and JSON depth protection (**security**) ([91c53d6](https://github.com/BlazeUp-AI/Observal/commit/91c53d6a09d66d3793e9c26718d1b2a6ebd81411))
- add registry submit validation with interactive CLI prompts ([69827c6](https://github.com/BlazeUp-AI/Observal/commit/69827c6973b10e6a2ceb8a2edae3d8d5d40f676d))
- add Active Sessions tab with live polling (**traces**) ([d42ab0c](https://github.com/BlazeUp-AI/Observal/commit/d42ab0c91b43e79a3003dfd9df353fdfaecb3a0e))
- implement SSO (**server**) ([c675c57](https://github.com/BlazeUp-AI/Observal/commit/c675c5715b49c2e1c83d4c657aa57d2ca72bfb17))
- support prefix ID matching in eval routes (**api**) ([b850376](https://github.com/BlazeUp-AI/Observal/commit/b850376407145d6ece8451d196d398b285a85533))
- refactor agent resolution to support prefix ID matching (**api**) ([7cce021](https://github.com/BlazeUp-AI/Observal/commit/7cce021ebe82667a1d37c1690b61b9b1b5da9299))
- implement cross-model prefix matching for reviews (**api**) ([26b6428](https://github.com/BlazeUp-AI/Observal/commit/26b6428caeb6764b14519399fe0a48755bce2e75))
- add resolve_prefix_id helper for short ID matching (**api**) ([49989ce](https://github.com/BlazeUp-AI/Observal/commit/49989ce87f5ecdc219cd4bbf91afc2ea96a7a094))
- add list/grid view toggle to review queue (**review**) ([d13308d](https://github.com/BlazeUp-AI/Observal/commit/d13308d73822164f8d155009881ae4a71bc382e2))
- add IDE-specific preview to agent builder (**ui**) ([fab8d17](https://github.com/BlazeUp-AI/Observal/commit/fab8d17ce6d2ca85aefdea7a61e70e119ff5d3ef))
- add datalist suggestions to model input in agent builder (**ui**) ([9498101](https://github.com/BlazeUp-AI/Observal/commit/9498101d895984d2041baf309cb132040cfd7a43))
- auto-run MCP setup commands during observal pull (**cli**) ([d2cb757](https://github.com/BlazeUp-AI/Observal/commit/d2cb757274a740bfe73925ee2ed1c4feede7102a))
- add back button to component detail page (**ui**) ([5a47949](https://github.com/BlazeUp-AI/Observal/commit/5a4794962da469d0142e5e3c0a79761fd8c575c8))
- add password reset flow for locked-out accounts (**auth**) ([6c8f592](https://github.com/BlazeUp-AI/Observal/commit/6c8f5925576b90fa922c61dcc0ad34e4d91bec61))
- add secrets redactor to all trace ingestion paths (**security**) ([3c15792](https://github.com/BlazeUp-AI/Observal/commit/3c15792af678aecf21cd27e9b23c135442c9d105))
- agent-scoped eval with full session context (**eval**) ([5fd5894](https://github.com/BlazeUp-AI/Observal/commit/5fd5894eb1cb3a371b36f4c1f968a2708a32a313))
- session continuations, eval materializer, user identity, and per-agent traces (**kiro**) ([3c4acd0](https://github.com/BlazeUp-AI/Observal/commit/3c4acd05d31fd8d004f317cc1ea6386ea7091b81))
- full telemetry parity with Claude Code (**kiro**) ([00e5ca2](https://github.com/BlazeUp-AI/Observal/commit/00e5ca20b10b0388d02a9f03a185e4fc71ad5039))
- implement Kiro CLI support across backend, CLI, and frontend (**kiro**) ([481b21e](https://github.com/BlazeUp-AI/Observal/commit/481b21ebfb93333b570e01cc4a247bc93231da2c))
- Phase 8G — Wire hardened pipeline into main eval service (**eval**) ([b66ef56](https://github.com/BlazeUp-AI/Observal/commit/b66ef561082578f7c2f9a7cf7c0e4400c1a90645))
- Phase 8F — BenchJack self-test suite and CI targets (**eval**) ([0644940](https://github.com/BlazeUp-AI/Observal/commit/0644940c5e648347a111fae9c7eb72a7dd819cfc))
- Phase 8E — Canary injection system for self-testing (**eval**) ([faaa932](https://github.com/BlazeUp-AI/Observal/commit/faaa932fbe2f39b6a4c9e1f2b0bf428437d6ba95))
- Phase 8D — Adversarial robustness dimension and scorer (**eval**) ([7201ec4](https://github.com/BlazeUp-AI/Observal/commit/7201ec40c287df5a076b8e6e76b429c1408b49fc))
- Phase 8C — EvalWatchdog, skipped dimensions, eval completeness (**eval**) ([82d3418](https://github.com/BlazeUp-AI/Observal/commit/82d341890f1e3394ea45286767c450bfae200614))
- Phase 8B — MatchingEngine and NumericComparator (**eval**) ([8292a15](https://github.com/BlazeUp-AI/Observal/commit/8292a15a802ffb552e9ec519b71a6ea3dce90daa))
- Phase 8A — TraceSanitizer, structured judge prompts, JSON output schemas (**eval**) ([1b7c443](https://github.com/BlazeUp-AI/Observal/commit/1b7c443f773b740af45df9e2c3e151bb87063186))
- username/password auth, admin UI revamp, and component detail pages ([4bf94de](https://github.com/BlazeUp-AI/Observal/commit/4bf94deebb0645a865752375289b71fbb5acfc66))
- add error dashboard with filtering and search (**errors**) ([bfb2e95](https://github.com/BlazeUp-AI/Observal/commit/bfb2e956520f9d3e679f73fc3366e5d8ed43dafe))
- add User and IDE columns to sessions list (**traces**) ([146ffb7](https://github.com/BlazeUp-AI/Observal/commit/146ffb7697fe9ce1e729f6b6a90808f4fdb00826))
- styled assistant response blocks and agent tool counts (**ui**) ([86c865a](https://github.com/BlazeUp-AI/Observal/commit/86c865a46b921ecd04183b6b08879ece87a662f6))
- show full user prompt in styled block when turn is expanded (**ui**) ([589dd3b](https://github.com/BlazeUp-AI/Observal/commit/589dd3b2b6aaae3cd0531983affb900bb185001d))
- send individual assistant messages with sequence metadata (**hooks**) ([e9f7658](https://github.com/BlazeUp-AI/Observal/commit/e9f76589822ed65217ca2cf4de0868ae7d2a241b))
- render inline diffs for Edit tool events (**ui**) ([e33d360](https://github.com/BlazeUp-AI/Observal/commit/e33d36069fe4256d6bcd73d23f745fca9d9a7459))
- replace cost with token counts on sessions list page (**ui**) ([577fd33](https://github.com/BlazeUp-AI/Observal/commit/577fd33c0819e6e28a56999155c463adb2eada17))
- Reddit-style collapsible tree with OTEL/hooks dedup and agent attribution (**ui**) ([d5751ca](https://github.com/BlazeUp-AI/Observal/commit/d5751ca76bfaf501f93ab9386df67560081506de))
- add search bar, filter chips, and new event type support to session detail (**ui**) ([825e338](https://github.com/BlazeUp-AI/Observal/commit/825e3380a34340fc0b963e46df38cfb0411eba55))
- expand to 18 hook types with agent attribution on all events (**hooks**) ([39f178f](https://github.com/BlazeUp-AI/Observal/commit/39f178f1f4fd6b547589a6d8c392bbf91ef30b04))
- replace API key ceremony with invite codes and auto-bootstrap (**auth**) ([4dc47a0](https://github.com/BlazeUp-AI/Observal/commit/4dc47a07d51df6234a559a09bd0c093a38bac7cd))
- complete Phase 2 web UI — public registry frontend and agent builder enhancements ([7449962](https://github.com/BlazeUp-AI/Observal/commit/7449962d29f5a282725904a081311f71a03b6da3))
- add interactive issue forms for bugs and features ([8b321cb](https://github.com/BlazeUp-AI/Observal/commit/8b321cbfd4a451ca6d508acfdc1811334cb4b8ad))
- comprehensive web UI redesign with new design system ([7e096f5](https://github.com/BlazeUp-AI/Observal/commit/7e096f5ba9a1a7d649e84578e84cc5cdcf3987fe))
- validate eval backend and wire eval frontend pages ([f9769be](https://github.com/BlazeUp-AI/Observal/commit/f9769be1f6d01a053445f3eee5d23033770550ed))
- add admin dashboard, traces, review, users, settings pages ([7b1105d](https://github.com/BlazeUp-AI/Observal/commit/7b1105d90323d814b65f2b874e704cfcbe1d656f))
- add component browser with type tabs and detail page ([96ed38a](https://github.com/BlazeUp-AI/Observal/commit/96ed38a5e861956c7542e13c7a51bfe4e8507b00))
- build registry home, agent list, and agent detail pages ([66a8f57](https://github.com/BlazeUp-AI/Observal/commit/66a8f5735221f611061b4934cfc05f0525515fea))
- add registry and admin route groups with role-gated sidebars ([7246a1b](https://github.com/BlazeUp-AI/Observal/commit/7246a1b9ee12cbd929660d9cf6bce69cd0a626d4))
- add role-aware auth guard and admin guard ([bb2c0b9](https://github.com/BlazeUp-AI/Observal/commit/bb2c0b988adf78c3c6891efa9a2454a58b46e3e6))
- add agent CLI commands — init, add, build, publish ([689a79f](https://github.com/BlazeUp-AI/Observal/commit/689a79f72ab531c3dbcec115b412c6d33e1a8297))
- implement 'observal pull' command for one-command agent install ([e9ae526](https://github.com/BlazeUp-AI/Observal/commit/e9ae526c1ca0964e2a163ce893f4f0838ff67b58))
- add universal IDE agent file generation from Pydantic manifest ([06103ce](https://github.com/BlazeUp-AI/Observal/commit/06103cec62265362ed17c600e1edc8cf44c216e8))
- add agent composition resolver and multi-component support (#80) ([06349fa](https://github.com/BlazeUp-AI/Observal/commit/06349faad30c5e97e3d24169fe12d7deff878563))
- add git mirror service with component discovery (#79) ([2b8dc4b](https://github.com/BlazeUp-AI/Observal/commit/2b8dc4bd3e07244d9ba648d4578e822282f1ec2e))
- enforce FastMCP validation for MCP approval (#92) ([0dc6a46](https://github.com/BlazeUp-AI/Observal/commit/0dc6a46eaf7fcfe490ec2d642eddfbc37cdea9bc))
- add download tracking service with bot prevention (#93) ([2c7ae7d](https://github.com/BlazeUp-AI/Observal/commit/2c7ae7d5c12ca3e03e7688c00123a9dffd288469))
- remove tool/graphrag CLI commands, proxy, and config generators (#91, #97) ([8cfe8b3](https://github.com/BlazeUp-AI/Observal/commit/8cfe8b355d3f7da55417ba69adfaef6e5d704347))
- remove tool/graphrag types, update wiring (**models**) ([3d26255](https://github.com/BlazeUp-AI/Observal/commit/3d2625539da096b7958e1b89e0ff16b8a4f342f0))
- add ExporterConfig model for telemetry export (**models**) ([9352e82](https://github.com/BlazeUp-AI/Observal/commit/9352e821f858c32e0096843c0eb864a32cd0857b))
- add AgentDownloadRecord and ComponentDownloadRecord (**models**) ([2a65e9c](https://github.com/BlazeUp-AI/Observal/commit/2a65e9c6a93b0010b64a0118b04b6661e50fb61a))
- add AgentComponent junction table and update Agent model (**models**) ([572f4f8](https://github.com/BlazeUp-AI/Observal/commit/572f4f8e2fcab158f972c41cc9786fdd8d9baee7))
- add org fields, git_ref, download counts to all component tables (**models**) ([75a23c1](https://github.com/BlazeUp-AI/Observal/commit/75a23c184c0bd141d0e83293b440a6f4d62abc8a))
- add ComponentSource model for Git mirroring (**models**) ([49842aa](https://github.com/BlazeUp-AI/Observal/commit/49842aaa16c06ee316a45be48ca3da72c9c805c9))
- add Organization model and update User with org_id FK ([5b03f48](https://github.com/BlazeUp-AI/Observal/commit/5b03f48222907f56be42d303ef7d25b8ff619e36))
- structured eval scoring pipeline and dashboard charts ([454d584](https://github.com/BlazeUp-AI/Observal/commit/454d5848eadff9e4de08292b2e1596cea56efa84))
- claude code otel on init (**cli**) ([4bdeaa1](https://github.com/BlazeUp-AI/Observal/commit/4bdeaa19fcfd244095cee69ec405bbaec67ba225))
- seperate admin and developer installations paths (**cli**) ([6f2ec2a](https://github.com/BlazeUp-AI/Observal/commit/6f2ec2a68d34b1ebc98eb305dc2329fced4d6b40))
- frontend quality improvements — type safety, error handling, functional time range, server-side alerts ([3ad283c](https://github.com/BlazeUp-AI/Observal/commit/3ad283c61d04332a4e02e9776161a1e60afea91a))
- add observal scan + name-or-UUID resolution + owner fallback ([f6b5d0b](https://github.com/BlazeUp-AI/Observal/commit/f6b5d0b1d1c663226129e27151c2bf4526e11c46))
- implement RAGAS evaluation for GraphRAG retrieval spans ([16333d7](https://github.com/BlazeUp-AI/Observal/commit/16333d7b2563b2f6f682738dbd22d8a576458885))
- OTel dashboard endpoints + new analytics APIs ([f49b2a1](https://github.com/BlazeUp-AI/Observal/commit/f49b2a1594e0300be6b278733f16ed30fe57fdae))
- auto-configure OTLP telemetry on install ([8e4c6c9](https://github.com/BlazeUp-AI/Observal/commit/8e4c6c928018e35195bf38dada9112ba2b128eac))
- add OTLP HTTP receiver endpoints ([d3e4875](https://github.com/BlazeUp-AI/Observal/commit/d3e48755d981aea1a266f54302933790758a98fa))
- add OpenTelemetry Collector to Docker stack ([66c7f34](https://github.com/BlazeUp-AI/Observal/commit/66c7f34fb4b247dbad31974399ddc33023671195))
- add Next.js dashboard frontend ([d3383f6](https://github.com/BlazeUp-AI/Observal/commit/d3383f6aab126689e0af0400a4b9bc6a12518d43))
- add `observal use` and `observal profile` for IDE config profiles ([5f40718](https://github.com/BlazeUp-AI/Observal/commit/5f40718242b0741348fb580f1db7e2fbd8cdc7fc))
- add `observal doctor` command for IDE settings diagnostics ([e97fd98](https://github.com/BlazeUp-AI/Observal/commit/e97fd98279f24c85a60e0f18066ad28106840b75))
- real telemetry collection for all registry types ([0af350b](https://github.com/BlazeUp-AI/Observal/commit/0af350beaf7a9b28c4a738ac9e13ea85d127a00d))
- implement telemetry collection for all registry types ([65e987b](https://github.com/BlazeUp-AI/Observal/commit/65e987b7908de8dafdd41c0400c56d7a4dd1c0c3))
- implement 6 new registry types with full stack coverage ([d94f838](https://github.com/BlazeUp-AI/Observal/commit/d94f838a0cc684b44b5ceb900791bae27e7cfc0f))
- rewrite dashboard with Tailwind, shadcn-style components, recharts (**web**) ([879f051](https://github.com/BlazeUp-AI/Observal/commit/879f051ebf0246568f3bdc7c860193ffc366db5f))
- overhaul CLI with rich output, QoL options, and modular architecture (**cli**) ([9ee45d6](https://github.com/BlazeUp-AI/Observal/commit/9ee45d6ce71fa81af9754ee4aa3f5aa7c0b8e91e))
- add upgrade, downgrade, traces, spans commands (**cli**) ([8088164](https://github.com/BlazeUp-AI/Observal/commit/80881646946cd90712385575dbc1266d1da5f1ab))
- dual-write ratings to ClickHouse scores table (**feedback**) ([8055524](https://github.com/BlazeUp-AI/Observal/commit/80555245be7c333b1050904ec9364d69942091e4))
- add pluggable eval engine with managed templates (**eval**) ([ee1e7e0](https://github.com/BlazeUp-AI/Observal/commit/ee1e7e04741c99f7a66356f7ea03a0a9e180a003))
- add comprehensive demo framework with mock MCPs and IDE configs (**demo**) ([4eab5e2](https://github.com/BlazeUp-AI/Observal/commit/4eab5e2905635f6b77eab9db17ee7056563542f2))
- replace Next.js with Vite + React + urql dashboard (**web**) ([75d1578](https://github.com/BlazeUp-AI/Observal/commit/75d1578fc87ce0df014ebc7c378f0869634302fa))
- add Strawberry GraphQL layer, kill REST dashboard (**graphql**) ([5fb9c1d](https://github.com/BlazeUp-AI/Observal/commit/5fb9c1d3187fc34cad5fe1de8dbd6a05af3aee89))
- add Redis container, arq worker, pub/sub service (**worker**) ([f7aa7f3](https://github.com/BlazeUp-AI/Observal/commit/f7aa7f3a45c6143c22c9954a64b7047240ed9e2b))
- implement observal-proxy HTTP reverse proxy for MCP servers (**proxy**) ([c51eec9](https://github.com/BlazeUp-AI/Observal/commit/c51eec9fdc4a305343fd653ea2ec7574187a8041))
- wrap MCP commands with observal-shim in generated configs (**config**) ([e55d939](https://github.com/BlazeUp-AI/Observal/commit/e55d9398bf0c037d2330af54771b86d172a0a203))
- implement observal-shim transparent stdio MCP wrapper (**shim**) ([a35b4ad](https://github.com/BlazeUp-AI/Observal/commit/a35b4ad3acee088d67cd3649fa04ead299ea9e27))
- add POST /api/v1/telemetry/ingest endpoint (**telemetry**) ([6d1d0c6](https://github.com/BlazeUp-AI/Observal/commit/6d1d0c61a9563d643002dea3d5b768aa9b97ea72))
- add ingestion schemas for traces, spans, scores (**schemas**) ([f85c2a5](https://github.com/BlazeUp-AI/Observal/commit/f85c2a55b0754c9713068c71dd2c3117b781462d))
- add insert and query functions for new tables (**clickhouse**) ([6700ffe](https://github.com/BlazeUp-AI/Observal/commit/6700ffe04876ef023c421d8aa60f9a3c7af4ee5c))
- add traces, spans, scores table DDLs (**clickhouse**) ([91a47d5](https://github.com/BlazeUp-AI/Observal/commit/91a47d5042ab3c716eaab5f999a9725d5db3a61f))

### Changed

- remove API keys entirely, JWT is sole auth mechanism (**auth**) ([0fdc4c8](https://github.com/BlazeUp-AI/Observal/commit/0fdc4c8efd39b5e36664a8509fb2e013f8947f4b))
- auto-format files flagged by ruff format ([17e170d](https://github.com/BlazeUp-AI/Observal/commit/17e170d6716ce888e7a20bede04f189389f2d3a2))
- fix trailing whitespace in cmd_ops.py ([be56965](https://github.com/BlazeUp-AI/Observal/commit/be56965c2f25f919f6010fc5f4f3a75e7cbb9a7a))
- fix ruff format violations in alert evaluator files ([077f62f](https://github.com/BlazeUp-AI/Observal/commit/077f62fd9844246ef4d5e22ccce5272f81405e64))
- apply ruff SIM108 ternary suggestion in CLI retry ([4f45e48](https://github.com/BlazeUp-AI/Observal/commit/4f45e486b05bff03824e1bf2d0337b4346ea553b))
- fix ruff lint and format violations for CI ([84add9d](https://github.com/BlazeUp-AI/Observal/commit/84add9d89ad505f336e710bda7b4d7b5e34294b6))
- consolidate imports in test_rbac.py and fix lint issues ([05c2e3c](https://github.com/BlazeUp-AI/Observal/commit/05c2e3cc57e85c93d559fc94c77284e61fe6eaf5))
- replace inline _require_admin with require_role dependency (**admin**) ([e8a12da](https://github.com/BlazeUp-AI/Observal/commit/e8a12da05dbe5d9bceefdb85e4298f1b7fd03229))
- use require_role(reviewer) for review endpoints (**review**) ([383c56e](https://github.com/BlazeUp-AI/Observal/commit/383c56efab4214566b4db037be97c5d65f0b0d1d))
- format files with ruff ([d48eb6a](https://github.com/BlazeUp-AI/Observal/commit/d48eb6a193ac7748cd03d8e825ac575c5abdd82f))
- soften approve/reject button colors (**review**) ([3118742](https://github.com/BlazeUp-AI/Observal/commit/3118742d5c33a963d530422c2b0679ddff4c31f7))
- run ruff format on all Phase 8A-8G files ([5addfcd](https://github.com/BlazeUp-AI/Observal/commit/5addfcd01e7574d2634546314d9b578755353a00))
- replace mock MCP framework with real ~/.claude integration tests (**demo**) ([96382aa](https://github.com/BlazeUp-AI/Observal/commit/96382aabd985e533888b50aaf897dd9a68c68377))
- format cmd_auth.py ([49bd9e9](https://github.com/BlazeUp-AI/Observal/commit/49bd9e9dd0fef7a067fadb6bf30cba31b46ec061))
- ruff format entire codebase ([5466a12](https://github.com/BlazeUp-AI/Observal/commit/5466a1206c1dadafb0d79ac00b996ae999b0572d))
- nest CLI commands into registry and self groups ([4100838](https://github.com/BlazeUp-AI/Observal/commit/41008389a1e3ef7eb8dd9ebeeca6e4f2b9cde3a8))
- restructure CLI commands into auth, ops, admin groups ([3a588e9](https://github.com/BlazeUp-AI/Observal/commit/3a588e9d1221141d4b9ce8383abc01a80fbf3f79))
- apply sharp corners globally ([dc43856](https://github.com/BlazeUp-AI/Observal/commit/dc43856c7d20dcc995335849b695113eaf1ebf65))
- migrate resolver/builder to Pydantic models and fix code review issues ([25f525b](https://github.com/BlazeUp-AI/Observal/commit/25f525bb5b383640fbf278c9c24cfadf87fc5bf9))
- replace em dashes with colons, update README and AGENTS.md ([7d27bd0](https://github.com/BlazeUp-AI/Observal/commit/7d27bd0ba9d5ff48030b4499ceb25fa033970161))

### Documentation

- add complete Kiro CLI setup guide for Observal ([e70b3c8](https://github.com/BlazeUp-AI/Observal/commit/e70b3c807ab8d680c6a630f9176357f2f21cc3b8))
- add frontend.md reference to README (#200) ([52aa845](https://github.com/BlazeUp-AI/Observal/commit/52aa8454173a3322bd3ae689c03be4dd1df815a5))
- add frontend reference with page screenshots (#200) ([3ef9d31](https://github.com/BlazeUp-AI/Observal/commit/3ef9d31448560e122aa6d30d62218212daa5648f))
- add cli.md references and enterprise CLI docs ([5361831](https://github.com/BlazeUp-AI/Observal/commit/53618311476473b5eaafce4d359ed92c00d6f63d))
- comprehensive documentation overhaul ([b4bc1ba](https://github.com/BlazeUp-AI/Observal/commit/b4bc1bad778f800446b7ffac6608971f8c30f0e2))
- add Discord link to CONTRIBUTING.md and README.md ([f884a40](https://github.com/BlazeUp-AI/Observal/commit/f884a404ca79d2bba2033f7a086816baec6f3a3c))
- add enterprise mode design spec and PR1 implementation plan ([84a2e4b](https://github.com/BlazeUp-AI/Observal/commit/84a2e4b1b275acdc4aae16ca89b3d5646a489607))
- add CLI command reference and update MCP spec ([cffa8bc](https://github.com/BlazeUp-AI/Observal/commit/cffa8bc752896d6d99a5738d44c4aac3247107df))
- update setup guides for new defaults-first flow ([b12f8ac](https://github.com/BlazeUp-AI/Observal/commit/b12f8acd5fe1b53b2bc2126d7e5e8828ebbbe62f))
- remove CI badge from CONTRIBUTING.md ([9071c9a](https://github.com/BlazeUp-AI/Observal/commit/9071c9ab8e16dbb41481f2cb4c73804942c79f80))
- rewrite CONTRIBUTING.md with improved structure and guidance ([912a209](https://github.com/BlazeUp-AI/Observal/commit/912a209577458c0db9c22f070838391b6693c476))
- add Contributor Covenant Code of Conduct v2.1 ([aec483e](https://github.com/BlazeUp-AI/Observal/commit/aec483e114c53d46d57dd3611a3e188c36bc99d3))
- update eval dimensions and scoring terminology (**readme**) ([803d027](https://github.com/BlazeUp-AI/Observal/commit/803d027ab4ac715a9ab0106d8de1765328638e34))
- document password reset flow in README ([308e35d](https://github.com/BlazeUp-AI/Observal/commit/308e35d8e16be0a9e8baac0727bc4e1f103be980))
- update status table and add date to unreleased section (**changelog**) ([526c06e](https://github.com/BlazeUp-AI/Observal/commit/526c06ebca227d27318c1e3b694a83c74e813216))
- rewrite Kiro section with honest status table (**changelog**) ([f4d49e7](https://github.com/BlazeUp-AI/Observal/commit/f4d49e730560934981b135a2d59450145d8bc4c4))
- add Kiro CLI research notes and compatibility matrix (**kiro**) ([2f06949](https://github.com/BlazeUp-AI/Observal/commit/2f0694942c4c9a16f10a935fca2f8cfbbf018919))
- add SECURITY.md vulnerability disclosure policy ([e7d5481](https://github.com/BlazeUp-AI/Observal/commit/e7d54818a175d6d50b93b7c0bce24df55aa203b7))
- move license section below star history in README ([d19066c](https://github.com/BlazeUp-AI/Observal/commit/d19066cd13933e044e500ce5f55f20f0645c8ce9))
- add DCO sign-off requirement ([e7f33f7](https://github.com/BlazeUp-AI/Observal/commit/e7f33f7eefcf3bd4e5c0193470b9dcd4204c63d5))
- add CHANGELOG.md and document changelog convention ([b787ba8](https://github.com/BlazeUp-AI/Observal/commit/b787ba841d9d5fe2f18f02b4707fa1820468dbfb))
- rewrite README for clarity, fold CLI into dropdowns, add registry narrative ([fc50837](https://github.com/BlazeUp-AI/Observal/commit/fc50837312dccc93378a3b9cc2e27da27fa3b112))
- rewrite README and AGENTS.md to current state ([7a20433](https://github.com/BlazeUp-AI/Observal/commit/7a20433c3004263bf72b06ffe38fe8b8525563bc))
- update AGENTS.md, README.md to current state and remove stale docs ([8a83bb4](https://github.com/BlazeUp-AI/Observal/commit/8a83bb464d3f472890d1a6b7ed0cd518530d3189))
- update AGENTS.md for agent-centric architecture (#98) ([f129107](https://github.com/BlazeUp-AI/Observal/commit/f1291077a8ef9cf6fe379b34b1d1edd16e705e33))
- update README for agent-centric registry pivot (#96) ([337fb58](https://github.com/BlazeUp-AI/Observal/commit/337fb5809e285454f8360b24fcbd4dd46784fb6c))
- add implementation plan for agent-centric schema redesign ([6f1eef4](https://github.com/BlazeUp-AI/Observal/commit/6f1eef4f4b4a039ef2e91cb6f5f54c7d2a614ec1))
- add agent-centric schema design spec ([e0ad333](https://github.com/BlazeUp-AI/Observal/commit/e0ad3339c6ce3b16c329911638b2ef5d91aca86c))
- add product vision spec for agent registry pivot ([d9f4f46](https://github.com/BlazeUp-AI/Observal/commit/d9f4f46b690b24aefef003eb16fcab7596856e0f))
- add product roadmap — install split, Claude Code OTEL, cross-IDE benchmarking ([2ad6355](https://github.com/BlazeUp-AI/Observal/commit/2ad635551ff93eb26dfc8ab4c2c25ef3dabd2da5))
- remove docs/ guides, update AGENTS/README/CONTRIBUTING for web frontend ([d22003e](https://github.com/BlazeUp-AI/Observal/commit/d22003e9dfe9de155cf49df7de539dfdb435c03b))
- add frontend stack to tech stack table (**README**) ([d940f22](https://github.com/BlazeUp-AI/Observal/commit/d940f22cd74cd3b292aaef2e9e2d04ec3bdfc602))
- overhaul README for world-class presentation ([834173c](https://github.com/BlazeUp-AI/Observal/commit/834173ce2f732e429d6a6484e97b36f3ace9795e))
- add RAGAS evaluation setup and usage guide (**SETUP**) ([62de96c](https://github.com/BlazeUp-AI/Observal/commit/62de96c23cf277320f08ba8c66d4a797cb07e959))
- add RAGAS evaluation for GraphRAGs (**README**) ([d538047](https://github.com/BlazeUp-AI/Observal/commit/d5380476191d4aed96fb2090d7b55f51edea02ff))
- add Codex CLI support and Native OTel column to IDE table ([24dafcc](https://github.com/BlazeUp-AI/Observal/commit/24dafccc0d1b883ff1570ae4cd9c2f368f2ccd82))
- update context handoff with telemetry collection status ([46ed7d0](https://github.com/BlazeUp-AI/Observal/commit/46ed7d033115ae281d50affce1213c0a57f32288))
- context handoff for registry expansion remaining tasks ([f7c8989](https://github.com/BlazeUp-AI/Observal/commit/f7c89895893b04a8916b0ca1fe9b210ec88ddd09))
- telemetry collection architecture spec ([e6e20b8](https://github.com/BlazeUp-AI/Observal/commit/e6e20b8076d01ff8a47e4f0e90e3bc8298654ee6))
- create comprehensive contributing guide ([a77d40d](https://github.com/BlazeUp-AI/Observal/commit/a77d40d64ded06c802dcbbc119c7bf58c468097f))
- add AGENTS.md — internal context for contributors and AI agents ([3d691e3](https://github.com/BlazeUp-AI/Observal/commit/3d691e36833c97c78d106920c4cde438ec6c64b7))
- update context handoff for session 2 ([72d064e](https://github.com/BlazeUp-AI/Observal/commit/72d064e1671d8c6c62648dbb2ef844ed2a2d1a17))
- add telemetry overhaul design document ([46a4ad1](https://github.com/BlazeUp-AI/Observal/commit/46a4ad1cd2260e64cf3104bc8b9cc176a118579d))

### Fixed

- always prompt for framework, show it after submission (**cli**) ([76d213f](https://github.com/BlazeUp-AI/Observal/commit/76d213fffdddbcdd79ae8cf99bf75077a8ca4daa))
- remove unused import in no-op migration 0003 (**lint**) ([728e712](https://github.com/BlazeUp-AI/Observal/commit/728e7124577967fafef88262f518bdb4083b19df))
- run create_all() before alembic in entrypoint (**docker**) ([3bc6bec](https://github.com/BlazeUp-AI/Observal/commit/3bc6bec938a25e922a7ed192223d9291fc0acb25))
- make all migrations idempotent, auto-migrate on startup (**alembic**) ([aeaafed](https://github.com/BlazeUp-AI/Observal/commit/aeaafed9d030ef156e6087888c171a08325fe989))
- renumber duplicate migrations into single linear chain (**alembic**) ([4a705ea](https://github.com/BlazeUp-AI/Observal/commit/4a705eab673e314ab7157908cbb5ba5168eda9f5))
- verify response body in flush_buffer before marking sent (**cli**) ([0be3c86](https://github.com/BlazeUp-AI/Observal/commit/0be3c86497fa6133f2b64c398cbe8fde0c09fd58))
- prevent service_name overwrite in hook scripts (**kiro**) ([76da7e2](https://github.com/BlazeUp-AI/Observal/commit/76da7e261a436f9df4637aa6a8facf2b877d34c5))
- restore API key generation on login and OAuth callback (**auth**) ([df9eeda](https://github.com/BlazeUp-AI/Observal/commit/df9eeda67bbe0dd8e74879e0b324cc1489ac721d))
- remove dead invite-code endpoints with undefined references (**auth**) ([a9cda24](https://github.com/BlazeUp-AI/Observal/commit/a9cda24a5eb04ba790432dceac51bc89756426fc))
- resolve lint errors and CodeQL alert for API key hashing (**auth**) ([126e61d](https://github.com/BlazeUp-AI/Observal/commit/126e61d5b5df4963f843aaf345ea329e1f8a7ab3))
- clarify OTEL env vars are optional Observal telemetry, not MCP requirements (**cli**) ([d2bd09f](https://github.com/BlazeUp-AI/Observal/commit/d2bd09f1b010c81ec68818809338768b4c2cebd6))
- generate framework-aware MCP run commands instead of hardcoded python -m ([2e98f91](https://github.com/BlazeUp-AI/Observal/commit/2e98f91e9001b83d23812366ddc3ee1a5891df18))
- remove IDE selection from MCP submit (**cli**) ([9b725f3](https://github.com/BlazeUp-AI/Observal/commit/9b725f38b3a8abb9a31ee64225a7459daa40e4b1))
- filter CI/build env vars and add interactive env var config at submit (#312) (**cli**) ([24cae72](https://github.com/BlazeUp-AI/Observal/commit/24cae72de03f8df234ab5025f8dd33405821aec9))
- normalize email to lowercase to prevent duplicate accounts (#309) (**auth**) ([5e959a6](https://github.com/BlazeUp-AI/Observal/commit/5e959a6d7d030df622b701baef68d7bfeb4f43b0))
- show full agent ID and display configured IDEs in agent list/show (#304) (**cli**) ([d900afe](https://github.com/BlazeUp-AI/Observal/commit/d900afefa160acfbc295a56df082cfe69c14068a))
- prompt for MCP env vars during observal pull (#305) (**cli**) ([4360f9c](https://github.com/BlazeUp-AI/Observal/commit/4360f9c22ece10d637ed77b897ca57d453383f10))
- remove env var prompts from submit, update setup walkthrough ([8ca2af6](https://github.com/BlazeUp-AI/Observal/commit/8ca2af62f1c5f8e2894d7af69d11667b7cbd866a))
- remove unused require_role import in auth routes ([cf19599](https://github.com/BlazeUp-AI/Observal/commit/cf19599fd89b869ebf81116163ae75b938a033c9))
- regenerate uv.lock to include tenacity dependency ([843681e](https://github.com/BlazeUp-AI/Observal/commit/843681e5b9f37831ce1ee74e732caa617ead7d86))
- change demo emails from .local to .example domain ([cb51d99](https://github.com/BlazeUp-AI/Observal/commit/cb51d99c0717fdaaebcf1a891a5f96bc33946801))
- resolve read-only filesystem crashes and update otel (**docker**) ([08f26b8](https://github.com/BlazeUp-AI/Observal/commit/08f26b80a6002df3b2531d54add8264c894c1103))
- remove enterprise tag from audit log dashboard ([e14358a](https://github.com/BlazeUp-AI/Observal/commit/e14358ace38c1018ceff8cbf20ac4ca6d229c772))
- harden Grafana dashboards and add full data coverage ([3910f50](https://github.com/BlazeUp-AI/Observal/commit/3910f50c34e6126c83fe2410a6819bd0bdb71f35))
- resolve bandit findings and exclude false positives (**ci**) ([0825e9d](https://github.com/BlazeUp-AI/Observal/commit/0825e9dde698d098a1a0cd545930f3bcaa93023c))
- wire actual user name into dashboard sidebar (**web**) ([bd8bfde](https://github.com/BlazeUp-AI/Observal/commit/bd8bfde55cdc479eaf594e173951853308bae33f))
- harden containers for production deployment (**docker**) ([4da8ff5](https://github.com/BlazeUp-AI/Observal/commit/4da8ff53da61165fcb8952844b1b50394e0ac879))
- remove duplicate turns caused by legacy user_prompt dedup carve-out (**web**) ([05b1331](https://github.com/BlazeUp-AI/Observal/commit/05b133112206ddc82b3c4b807fe6e9f818c98a7f))
- add missing event filters and labels for notifications, worktrees, and agent events (**web**) ([1e30419](https://github.com/BlazeUp-AI/Observal/commit/1e304198711c54194b81b92682fd785c25431d75))
- replace removed UserRole.developer with UserRole.user (**tests**) ([34080bd](https://github.com/BlazeUp-AI/Observal/commit/34080bdc116abf5a27c2a4233ce653e1af3d1398))
- use FRONTEND_URL for OAuth redirect URI (**auth**) ([1ce93a6](https://github.com/BlazeUp-AI/Observal/commit/1ce93a6267cbfba88630b8a3c641dfec718c42d1))
- use hierarchy-aware checks and validate deployment mode (**rbac**) ([85bee32](https://github.com/BlazeUp-AI/Observal/commit/85bee32807e06ea4083db1cfbec8eeab41cd701f))
- update test mocks for resolve_listing scalars().first() change ([34bfded](https://github.com/BlazeUp-AI/Observal/commit/34bfded48d5a0cb3618f96659095e4a5e063c2d4))
- prevent duplicate listing names and handle MultipleResultsFound ([5750f0f](https://github.com/BlazeUp-AI/Observal/commit/5750f0faf6127a28c1aebb003f07a0192e3fdb36))
- run MCP clone in thread with timeout, move validation to background task ([bfcd712](https://github.com/BlazeUp-AI/Observal/commit/bfcd7123c47739e5fa5c1f37d15b8d7177f986a2))
- correct company name and year (**license**) ([7a4ac14](https://github.com/BlazeUp-AI/Observal/commit/7a4ac141e0ba4ad66dc15fcdd67071f3a9145538))
- remove unused _insert_json import from otel_dashboard (**db**) ([5390392](https://github.com/BlazeUp-AI/Observal/commit/5390392c7999871c702a5a03b4e6e206f26c6807))
- add ownership checks, unique constraints, and transaction safety (**db**) ([49f1d3a](https://github.com/BlazeUp-AI/Observal/commit/49f1d3a6ebf63c58947a40fb31d84158416018e7))
- handle missing binaries in pull setup commands (**cli**) ([9311a34](https://github.com/BlazeUp-AI/Observal/commit/9311a3402fb4c1fffe459da00df81278c8dfdec5))
- parameterize all ClickHouse queries to prevent SQL injection (**security**) ([a6dae14](https://github.com/BlazeUp-AI/Observal/commit/a6dae14a07fe1ec173775faf48853d55aafca0a6))
- P0 security hardening — secrets, OAuth, rate limiting, CORS (**security**) ([40fdfa1](https://github.com/BlazeUp-AI/Observal/commit/40fdfa1dc8db7fd7f7230e494a55f5e2c355ca21))
- review queue validation UI, tab layout shift, and agent publish bugs ([c9b6349](https://github.com/BlazeUp-AI/Observal/commit/c9b6349eb612f2beed464c864787c94b8bd84f6f))
- wrap login page useSearchParams in Suspense boundary (**web**) ([6cea6ec](https://github.com/BlazeUp-AI/Observal/commit/6cea6ec51e2c946e73383f0fefb6e83ed7befdca))
- resolve ECONNREFUSED hook errors and empty span display (#236, #219) ([a4ad500](https://github.com/BlazeUp-AI/Observal/commit/a4ad5003a099c6391e072c83164d8e257dd7f891))
- add missing SSO auth dependencies and fix tests/lint (**server**) ([b9567d9](https://github.com/BlazeUp-AI/Observal/commit/b9567d9947f2c96ce69a10fd7694fc8954777256))
- make review queue list view less compact (**ui**) ([1868544](https://github.com/BlazeUp-AI/Observal/commit/186854441ff0bf31b8318245dc48ed6fc3adacc4))
- update agent builder preview to show Claude Code frontmatter format and replace model dropdown with text input (**ui**) ([26d13a5](https://github.com/BlazeUp-AI/Observal/commit/26d13a55d1ee7f21a96a221217db3753c42bf00d))
- build MCP shim entries for Claude Code in agent install (**server**) ([6710ca3](https://github.com/BlazeUp-AI/Observal/commit/6710ca37a6c0c3b9cb9af88c5a0895f09e414125))
- emit YAML frontmatter in Claude Code agent files on pull (**server**) ([fae1fa2](https://github.com/BlazeUp-AI/Observal/commit/fae1fa20a4e536c7fe2fb8de365a921f0671fa2b))
- write pulled agents to .claude/agents/ not .claude/rules/ (**server**) ([e4f5832](https://github.com/BlazeUp-AI/Observal/commit/e4f5832a85b5cbe89aa74c910d1921a700888fb2))
- generate meaningful rules file content on agent pull (**server**) ([2c60b18](https://github.com/BlazeUp-AI/Observal/commit/2c60b18ed3a36a1df25788a3f6114b9c3e3a17c5))
- provide standard local dev defaults for .env.example (#165) ([fe79034](https://github.com/BlazeUp-AI/Observal/commit/fe7903414b67ff5743e80ee6e749c94ae88d4797))
- render actionButtonsLeft before title in page header (**ui**) ([2d3b425](https://github.com/BlazeUp-AI/Observal/commit/2d3b425603412c4b9ff6355a311b8dea2fdbc02a))
- correct component install tab to show agent add command (**ui**) ([0962b67](https://github.com/BlazeUp-AI/Observal/commit/0962b67fa0d5808f2e26a161c8b809560ccf68f9))
- redesign components page to match app design patterns (**ui**) ([3a74b7d](https://github.com/BlazeUp-AI/Observal/commit/3a74b7da2a42a6fb1d55112134003ccce12a0e28))
- preserve hook-sourced user_prompt events in dedup logic (**frontend**) ([3ee28bb](https://github.com/BlazeUp-AI/Observal/commit/3ee28bb0c38e2ccac39249b5d0cd444ce5271328))
- stop overriding UserPromptSubmit event name to user_prompt (**hooks**) ([9fa26ca](https://github.com/BlazeUp-AI/Observal/commit/9fa26ca04fc81184a3db14a1c70fda4f9a70da5a))
- use X | Y syntax in isinstance calls (UP038) ([2e83c21](https://github.com/BlazeUp-AI/Observal/commit/2e83c21f1fc5aebc42dea5d89c0bc114d42a7b4c))
- resolve ruff lint errors across Phase 8A-8G files ([0f03949](https://github.com/BlazeUp-AI/Observal/commit/0f039494e1cafb89f7f6ca9395364c2669c935fe))
- resolve ESLint errors and ruff SIM102 warnings (**lint**) ([1e018ee](https://github.com/BlazeUp-AI/Observal/commit/1e018ee69c89c2a30a084e2d9ba604394524bf45))
- align agent publish payload with server schema (**builder**) ([f6bdd2a](https://github.com/BlazeUp-AI/Observal/commit/f6bdd2aa859c1ebc4f4c1745266767eb50668165))
- merge OTEL metadata into hook events by timestamp proximity (**ui**) ([529f4f9](https://github.com/BlazeUp-AI/Observal/commit/529f4f928aa969a785b302c46445f61f7fe209eb))
- capture all assistant text from entire turn, not just last message (**hooks**) ([4788c9e](https://github.com/BlazeUp-AI/Observal/commit/4788c9ea587efe2befb5223718668ab431321128))
- fix demo scripts and server bugs found during E2E testing (**e2e**) ([0a35703](https://github.com/BlazeUp-AI/Observal/commit/0a357034a789de9df209ec48b662fadacd6e5793))
- handle Pydantic ValidationError in frozen model tests (**test**) ([59530c2](https://github.com/BlazeUp-AI/Observal/commit/59530c2ad8abb779eaa262aeee50be85938475b9))
- pass GITHUB_TOKEN via env for dco-check@0.5.0 (**ci**) ([6a9d572](https://github.com/BlazeUp-AI/Observal/commit/6a9d572e307cfee3c73bb2d6332a9533f5851e2a))
- replace broken DCO action with pinned alternative (**ci**) ([7d3c1ec](https://github.com/BlazeUp-AI/Observal/commit/7d3c1ec7c8e14faea6db70c7a25de5089586f55c))
- fix all ruff lint errors and strip ANSI in test assertion (**ci**) ([c38fbf1](https://github.com/BlazeUp-AI/Observal/commit/c38fbf1d4c8fa07a6580585e510dda8072bc5db0))
- overhaul web UI with skeletons, error states, breadcrumbs, toasts ([b1c7018](https://github.com/BlazeUp-AI/Observal/commit/b1c7018598b17e7859fd65ce6352e4c9c840fa08))
- remove FastMCP enforcement and support all MCP frameworks ([229c8ef](https://github.com/BlazeUp-AI/Observal/commit/229c8ef81c78401f65ea78d87ff30de0ce48b33d))
- repair login page and API client proxy ([68a02a2](https://github.com/BlazeUp-AI/Observal/commit/68a02a29749112d58ecae6b0af35c5c49e22a696))
- address code review findings across pull and agent CLI ([028ccf0](https://github.com/BlazeUp-AI/Observal/commit/028ccf0912eab0e05ebf5c7af33bd21222f087fc))
- add path traversal and symlink protections to git mirror service ([ea60916](https://github.com/BlazeUp-AI/Observal/commit/ea60916cddcee8bcfca6b8fa3d191860b44a67ea))
- add logging to IntegrityError handler and fix null-user fingerprint edge case ([124a818](https://github.com/BlazeUp-AI/Observal/commit/124a818a68b9e984855a4c7cc3b13f91e7536b60))
- remove stale 'observal metrics --type tool' from README ([49a5248](https://github.com/BlazeUp-AI/Observal/commit/49a5248847f963fc86ab037bcecb40013d6a4f73))
- delete stale tool/graphrag files and fix remaining test references ([122f94f](https://github.com/BlazeUp-AI/Observal/commit/122f94f757a59125c7b5c59a1f144301ac89d4f6))
- update existing tests for schema redesign (**tests**) ([151c090](https://github.com/BlazeUp-AI/Observal/commit/151c09093c27a2e0cf7576b741d3e6c7a62dd524))
- handle Tooltip formatter value to fix TypeScript build error (**web**) ([6eff6e5](https://github.com/BlazeUp-AI/Observal/commit/6eff6e50531827c6c6885a17fde7db0d749f5b67))
- replace flawed tool efficiency criteria with outcome-based checks ([2411477](https://github.com/BlazeUp-AI/Observal/commit/241147748f25d3617d5e7896b4924fc8574dfebb))
- add standalone output to next.config for Docker build ([93ff1ce](https://github.com/BlazeUp-AI/Observal/commit/93ff1ce48f423e46696445b84f68b464a4e7998a))
- replace eye/lens logo with telescope ([8b05874](https://github.com/BlazeUp-AI/Observal/commit/8b05874b4dee458cbac50887d86f65c4ba241010))
- add auth guard + wire dashboard to OTel data ([e6eb68b](https://github.com/BlazeUp-AI/Observal/commit/e6eb68b34b7c83777c900c1b26e4e58ef2be84e6))
- dashboard routes, nginx proxy, name-based resolution, proper IDE configs ([d64c912](https://github.com/BlazeUp-AI/Observal/commit/d64c91237b3bba81f189ecf75bb5a6d8b6af1043))
- fix ClickHouse auth and query format in run_demo.sh (**demo**) ([19584ee](https://github.com/BlazeUp-AI/Observal/commit/19584eef297c9cc97417ab03ce897a1b7619fb99))
- resolve Docker stack and GraphQL DataLoader issues ([07f27e1](https://github.com/BlazeUp-AI/Observal/commit/07f27e130c0fcafe33237710cb199aa8edaa67bc))
- add .dockerignore and use uv tool install for CLI setup ([ab39c37](https://github.com/BlazeUp-AI/Observal/commit/ab39c378a87e2fbc03084c8f1bb115b5a1e9942c))

### Other

- remove E2E test prompt and docs/superpowers ([97185f8](https://github.com/BlazeUp-AI/Observal/commit/97185f8215726be8236762b3ef9751b44ebf69a2))
- remove agentic coding artifacts from repo ([a37095f](https://github.com/BlazeUp-AI/Observal/commit/a37095f05d6b41788fac064f1b888e48d0ec9fba))
- remove redundant migrate call from rebuild (**make**) ([68b7528](https://github.com/BlazeUp-AI/Observal/commit/68b75285958fc078f8c75a79dadc4e85f95ec212))
- auto-run alembic migrations on rebuild (**make**) ([be37b3c](https://github.com/BlazeUp-AI/Observal/commit/be37b3c16d89f079ba017652a6c918b0f965fccf))
- remove web/CLAUDE.md in favor of AGENTS.md ([8554019](https://github.com/BlazeUp-AI/Observal/commit/85540198bfb85e4b9bcc1f5c47bb1b58c7912a98))
- remove CLAUDE.md from repo and add to .gitignore ([4c690f8](https://github.com/BlazeUp-AI/Observal/commit/4c690f8b141d9401ef61ec566917140ea61be633))
- update demo README, docker-compose, and scan API route ([5945144](https://github.com/BlazeUp-AI/Observal/commit/594514462d56a64aaf37cb19306819303c59c8b7))
- project lint ([5287c7b](https://github.com/BlazeUp-AI/Observal/commit/5287c7b77a575f2dc26b4b9b404b17507c31bfa5))
- setup pull request template ([54df2dc](https://github.com/BlazeUp-AI/Observal/commit/54df2dcb2671f7c6470a84b2070c9892d08bf89e))
- remove dead pages, types, and API functions ([7e1cdb0](https://github.com/BlazeUp-AI/Observal/commit/7e1cdb01e6da3ec3030c7f7ec3afc2d23d69717d))
- drop Windsurf IDE support ([83a8a10](https://github.com/BlazeUp-AI/Observal/commit/83a8a10f51055af394d7aa001d415c419d36df2d))
- update readme & issue template ([870ea3d](https://github.com/BlazeUp-AI/Observal/commit/870ea3dc35a1f79337dcf236230f66c1e125b493))
- remove outdated docs and update README to match current state ([ed53a3e](https://github.com/BlazeUp-AI/Observal/commit/ed53a3eccd6fae7660313aa1fb96a93216ac3c22))
- add Apache 2.0 license ([e12487d](https://github.com/BlazeUp-AI/Observal/commit/e12487d10b09792fa8f2ad79f65fb3245af7d2bc))
- add linting, pre-commit hooks, and OSS project scaffolding ([b31319d](https://github.com/BlazeUp-AI/Observal/commit/b31319d9ca0b06396a843a888efd9990ab15e91b))

### Testing

- fix CLI tests to use canonical command paths ([e29dd6e](https://github.com/BlazeUp-AI/Observal/commit/e29dd6ef22c1d003542bdd76c69dfbd80a9ee3cf))
- add tests for alert evaluator, SSRF protection, and schemas (**alerts**) ([3eb8985](https://github.com/BlazeUp-AI/Observal/commit/3eb898541a81264ec53d2059aec7eff32df020a4))
- update existing tests for resilience pattern changes ([c03c129](https://github.com/BlazeUp-AI/Observal/commit/c03c12961cb5bab0b429951a3dffc57a9ce93445))
- add Playwright SSO and enterprise mode login tests (**e2e**) ([e221b86](https://github.com/BlazeUp-AI/Observal/commit/e221b86d3d37de5cde2bbc1469635ec976a5a0ef))
- add pytest coverage for review queue endpoints (**review**) ([4875b7e](https://github.com/BlazeUp-AI/Observal/commit/4875b7ed394dd0c9a4199a57c23630ec41b50fe6))
- add pytest coverage for agent config generator and builder ([b06b6dc](https://github.com/BlazeUp-AI/Observal/commit/b06b6dc152fbb7dc57a3116fb601a74ef41bead6))
- add E2E Playwright tests for Kiro CLI integration (**kiro**) ([df2c867](https://github.com/BlazeUp-AI/Observal/commit/df2c86794db339a51b034ae9a1ad80576f025ba3))
- add 33 integration tests for git mirror service (real git ops, no mocks) ([f0bf261](https://github.com/BlazeUp-AI/Observal/commit/f0bf2613ef1b7b08438ea27c61e6fcabf8a5e5a1))
- end-to-end test script for all 7 registry types ([feb6c7f](https://github.com/BlazeUp-AI/Observal/commit/feb6c7fab27bfb2ed9d784feb8cfd41a4589c003))
- add unit tests for score unification and CLI updates (**phase9-10**) ([5f5cd6d](https://github.com/BlazeUp-AI/Observal/commit/5f5cd6d530a51214dfaef838d258b71b4ebdc926))
- add unit tests for Phase 8 eval engine (**eval**) ([984a3ac](https://github.com/BlazeUp-AI/Observal/commit/984a3ac47e91195d9cea5bb3a84a541ff64a4043))
- add unit tests for Phase 6 GraphQL layer (**graphql**) ([e57e373](https://github.com/BlazeUp-AI/Observal/commit/e57e3730f84d2cf33d167af9ff137a97f7fc8d70))
- add unit tests for Phase 5 Redis + arq worker (**worker**) ([83faa62](https://github.com/BlazeUp-AI/Observal/commit/83faa62363344d5fc65617117ff93ea241821fba))
- add unit tests for Phase 4 HTTP proxy (**proxy**) ([9826f98](https://github.com/BlazeUp-AI/Observal/commit/9826f9838b5e8f41f641a64d47e377f81ef5647b))
- add unit tests for Phase 3 shim, config generators (**shim**) ([572cd29](https://github.com/BlazeUp-AI/Observal/commit/572cd297f398bac086ea798ee470f24050ad37eb))
- add unit tests for Phase 2 ingestion endpoint (**telemetry**) ([146a25c](https://github.com/BlazeUp-AI/Observal/commit/146a25cba23e99378a1399f80d2ad67e0ea368f0))
- add unit tests for Phase 1 traces/spans/scores (**clickhouse**) ([ff662b6](https://github.com/BlazeUp-AI/Observal/commit/ff662b64d28d41e40d6297386de3276900ba6976))

### Ui

- brighter borders, responsive text scaling, observal favicon ([909a9b6](https://github.com/BlazeUp-AI/Observal/commit/909a9b6dd7cedc9ddaff31b208f09ace9d35be7e))

