# v0.10.4

> Changes since v0.10.3

Source: https://kcq.nebutra.com/docs/changelog/v0-10-4


Features [#features]

* **Unified indicator query pipeline**: Adds bounded Agent queries backed by registered indicator calculators. Charts and Agents share an indicator result pool with stable instance IDs, timestamps, warm-up metadata, and independent parameters.
* **Annotation tools**: Adds Fibonacci retracement, rectangle, and arrow primitives with toolbar and AI runtime integration.
* **Korean market session**: Adds the Korea market configuration with the Asia/Seoul timezone and a 09:00-15:30 regular session.
* **Performance color roles**: Adds positive, negative, and neutral performance tokens; the range toolbar now shows first-to-last close return.

Fixes [#fixes]

* **Indicator scale and MACD**: Derives decimals from the display range and normalizes rounded zero values. MACD bars share the committed scale range, fixing `-0.00` output and mismatched coordinates.
* **Volume axis ticks**: Publishes visible volume ranges from the committed frame projection, restoring dynamic ticks for active volume panes.
* **Asia-market MACD colors**: Corrects base positive and negative histogram colors so the Asia-market setting produces the expected MACD colors.
* **Type and build contracts**: Fixes vue-tsc contract errors and derives build aliases from Core exports to prevent path drift across preview, Electron, and tests.

Architecture & Refactoring [#architecture--refactoring]

* **Indicator state and Worker protocol**: Routes indicator results through ChartStateKernel using data and config revisions as source identity. The Worker protocol now returns pure calculation results at v4, and renderers read committed frame-level state.
* **Indicator configuration model change**: Runtime descriptors replace `defaultConfig` with `defaultParams`; presentation options are declared through `presentation.defaultOptions`.
* **Drawing and semantic configuration API changes**: Removes legacy DrawingToolType aliases, `semanticConfig`, and `SemanticChartController`; use `toKLineChartProps` to map semantic JSON into chart props.
* **Market-data Buffer consolidation**: SeriesRepository now owns K-line and timeshare Buffers, and comparison series can continue history pagination as the main chart requires earlier ranges.
* **React bindings use the Web Component adapter**: The React package now uses the SSR-safe KLineChartWC and no longer exports the direct-Core chart factory, hooks, or KLineChart component.
* **Rendering backend organization**: Moves WebGPU, WebGL2, and Canvas2D backends into `rendering/backend` and updates rendering boundaries and pipeline documentation.

Documentation [#documentation]

* **Indicator and rendering module docs**: Adds the indicators module README and refreshes the rendering pipeline and module README with boundaries, data flow, and extension guidance.
