# Changelog

## [1.1.72] - 2026-04-28

### 🚀 Features & Enhancements

- **Calendar & Dates:** Replaced `DateCalendar` with `DateRangeCalendar` in `index.ts`. Enhanced `DateCalendar` and `DateInput` components with timezone support, event logging, and placeholder support. Added `auto-confirmation` and refactored conditional logic in `useDatePicker` for clear maintainability.
- **UI & Components:**
  - Implemented `maxDecimalChar` prop in the `InputText` component, and supported it inside `MetricEditor` and `MetricEditorInput`.
  - Enhanced `DropdownWrapper`, `BulkUpdate`, and `ClearButton` components with toggle functionalities, new directives, and improved focus handling.
  - Added `sceneId` to cell renderers and rating components for enhanced data handling.
- **Internal APIs & Data handling:** Extended `App.vue` with an event emission system for API call success and error handling. Later optimized grid cache management by adding and removing `refreshGrid` functionality.
- **Build & Configuration:**
  - Introduced a new `vite-config-custom` package with initial configuration.
  - Added a `shared-scripts` module containing a `build-injector.sh` and reset scripts for safer `package.json` manipulations during CI/CD.
  - Extensively configured `exports` fields across multiple `package.json` files for improved module resolution distribution.
  - Renamed internal packages safely (e.g., `api-services` to `@arbocollab/api-services`).

### 🔧 Bug Fixes

- **Calendar:** Updated `tsconfig.json` mappings to properly include `MonthPicker.vue`.
- **Vite Config:** Directed the Vite configuration to safely build and distribute types via the new paths and `dts` plugins.
- **UI Integration:** Adjusted `MetricRenderer` to handle "formula" states correctly.

### 🧹 Chores & Refactoring

- **Metric Services:** Repeatedly refactored `MetricService`, `MetricRating.vue`, `RatingRenderer.vue`, and `MetricRenderer` layout mapping for improved readability and functionality.
- **Dependencies:** Cleaned up unused local resources (like Tippy.js CSS imports inside `Calendar.vue` and numerous `console.log` artifacts). Integrated `lodash-es` types and synced all monorepo version increments inside the `pnpm-lock.yaml`.
- **Versioning:** Bumped versions repeatedly across standard workspaces and the component library.

## [0.1.63] - 2026-03-30

### 🚀 Features & Enhancements

- **Month selection components added:** Introduced `MonthPicker` and `MonthCalendar`, exported them from the calendar package, and added Storybook stories for both components.
- **Helpers package introduced:** Added a new `@arbocollab/helpers` workspace package with DOM helpers, date/time utilities, color helpers, link generation, mapping helpers, session storage helpers, tooltip helpers, and Vue mounting helpers.

### 🧱 Architecture & Maintainability

- **Shared types expanded:** Added `MonthPickerProps` and calendar-related types to the shared types package and re-exported them from the main type entrypoints.
- **Import paths standardized:** Refactored packages to use `@arbocollab/types` instead of the older `types` alias.
- **Code structure cleanup:** Applied follow-up readability refactors across UI, calendar, api-services, core-table, and item-table packages.
- **Keyboard navigation cleanup:** Removed the older `useKeyboardNavigation` composable from the UI package as part of the refactor path.

### 🧪 Tooling & Dependencies

- **Workspace tooling updated:** Added test and build support for the new helpers and calendar-related workspace changes.
- **Lockfile refreshed:** Updated `pnpm-lock.yaml` to reflect the new packages and supporting dependencies.

### 📦 Version Updates

- **Version:** `0.1.62` → `0.1.63`

## [0.1.62] - 2026-03-25

### 🚀 Features & Enhancements

- **Calendar package introduced:** Added a standalone `@arbocollab/calendar` package with `Calendar`, `CalendarNavigationControl`, `DateInput`, `MainCalendar`, date-picker composables, date utilities, and package exports.
- **Storybook coverage added:** Added a Storybook story for the calendar package.

### 🧪 Tooling & Dependencies

- **Calendar package tooling:** Added package-level Vite, ESLint, Cypress, and TypeScript configuration for the new calendar workspace package.

### 📦 Version Updates

- **Version:** `0.1.61` → `0.1.62`

## [0.1.61] - 2026-03-25

### 🎨 UI/UX Improvements

- **More-option interactions refined:** Improved focus, blur, rename, and refocus flows around more-options editors and scene name editing.
- **Table interaction cleanup:** Removed noisy logs in several metric and item-table interaction paths while tightening focus handling.

### 🧱 Architecture & Maintainability

- **Action handling improved:** Refined scene action behavior and supporting editor integration for more consistent interaction flow.

### 📦 Version Updates

- **Version:** `0.1.59` → `0.1.61`

## [0.1.59] - 2026-03-24

### 🚀 Features & Enhancements

- **Metric presentation improved:** Added `MetricCellRenderer` to improve metric label display and type indicators.

### 🎨 UI/UX Improvements

- **Display wrapper styling refined:** Updated `DisplayWrapper` styling to use configurable background color behavior.

### 📦 Version Updates

- **Version:** `0.1.58` → `0.1.59`

## [0.1.58] - 2026-03-24

### 🚀 Features & Enhancements

- **Metrics functionality expanded:** Enhanced the metrics app with AG Grid integration, infinite loading behavior, metric editing flows, and a dedicated `MetricService`.
- **Renderer and editor support improved:** Expanded wrapper and renderer behavior across core-table and UI components to support the metrics workflow.

### 🎨 UI/UX Improvements

- **Metric rendering refined:** Improved metric and rating presentation in table cells and related dropdown flows.

### 📦 Version Updates

- **Version:** `0.1.53` → `0.1.58`

## [0.1.53] - 2026-03-20

### 🚀 Features & Enhancements

- **Metrics app added:** Introduced the `apps/metrics` Vue 3 application with its own Vite, TypeScript, and build configuration.
- **Grid demo scaffolding added:** Added initial metric table integration, app bootstrap files, and development configuration.

### 📦 Version Updates

- **Version:** `0.1.52` → `0.1.53`

## [0.1.52] - 2026-03-19

### 🚀 Features & Enhancements

- **Event handling improved:** Refined button, list item, and dropdown event contracts for better click, escape, and select behavior.

### 🎨 UI/UX Improvements

- **Component styling refined:** Adjusted styling across buttons, filters, list items, and drag-and-drop related components for more consistent interaction feedback.

### 📦 Version Updates

- **Version:** `0.1.51-alpha.0` → `0.1.52`

## [0.1.15] - 2026-03-04

### 🚀 Features & Enhancements

- **InputText Focus:** The `InputText` component now focuses the input field when any part of its wrapper is clicked, improving usability.
- **DateRangeEditor Behavior:** The `DateRangeEditor` now correctly stops the AG Grid cell editing mode when the calendar is closed, preventing the editor from remaining active.

### 🎨 UI/UX Improvements

- **CloseBadgeWrapper:** Adjusted the opacity on adjacent elements for better visual consistency when a badge is active.
- **DragDropItem:** Refined the line-height of item labels for improved text alignment.

### 📦 Version Updates

- **Version:** `0.1.14` → `0.1.15`

## [0.1.4] - 2026-03-03

### 🚀 Features & Enhancements

**HeaderSorting Component**

- **Metric Type Handling:** Enhanced `HeaderSorting` component with improved metric type detection and display
  - Added proper metric type checking for accurate icon and label display
  - Improved visual indicators for different metric types (Woohoo, Point, etc.)
  - Better integration with metric metadata in column definitions
  - Fixed metric type detection logic in header rendering

### 📦 Version Updates

- **Version:** `0.1.3` → `0.1.4`
- Updated package.json with new version

### 🚀 Features & Enhancements

- **Keyboard Navigation:**
  - Introduced `useKeyboardNavigation` composable for improved keyboard accessibility in dropdowns.
  - Enhanced `ButtonDropdown` with full keyboard support (Arrows, Enter, Escape).
- **Focus Management:**
  - Implemented global focus tracking in the main item table to manage element focus states.
  - Added `data-tab-index` attributes to primary UI controls (`New` button, `Filter`, `Search`, `Refresh`, `Columns`) for a logical tab order.
- **Styling & UI Refinements:**
  - Standardized checkbox styles across `Checkbox.vue` and `HeaderCheckbox.vue` to match the design spec (default, hover, disabled, checked states).
  - Improved `DisplayWrapper` grid calculation for more robust prefix/suffix element handling.
  - Refined `InputText` and `SearchBox` component styles for better alignment and icon presentation.
  - Enhanced `FilterBox` and `FilterAssignee` UI for better visibility and interaction on hover/focus.

### 🔧 Technical Improvements

- **Code Quality:** Removed unused styles and console logs from `AgTable.vue` and `CellFactory.ts`.
- **Component Refactoring:** Refactored multiple components to improve styling, add accessibility attributes, and enhance keyboard interaction.

## [0.1.2] - 2026-03-02

### ⚡ Performance & UX

- **Tooltip Responsiveness:**
  - Reduced the default tooltip delay from `1000ms` to `300ms` across the application.
  - This change affects the main `tooltipDirective`, `userProfileDirective`, `ListItem`, and `TippySingleton` helper.
  - Provides faster and more responsive feedback on hover.

## [0.1.1] - 2026-02-27

### 🔧 Code Quality

- **Cleanup:** Removed various `console.log` statements from several components to clean up the console output. Components cleaned include:
  - `CellFactory.ts`
  - `CreateNewScene.vue`
  - `AssigneeGroupRenderer.vue`
  - `AddNewAssignee.vue`
  - `AddNewStatus.vue`
  - `HeaderWrapper.vue`

## [1.0.203] - 2026-02-27 (Live)

### 🎯 Release Summary (0.0.36 → 0.0.203)

This live milestone consolidates all major improvements delivered from `0.0.36` up to `0.0.203`, focused on table performance, metric editing, filtering accuracy, bulk operations, permission safety, keyboard accessibility, and overall UX stability.

### 🚀 Major Highlights

- **Bulk update (detailed)**
  - Introduced centralized bulk update store state for consistent selection status across header checkbox, bulk panel, and table actions
  - Added full “Select All” flow for partial/indeterminate selection, with support for `visibleRows` vs `totalRows` scenarios
  - Unified bulk action handling for assignee, status, date, and metric update paths with cleaner action switching
  - Added/propagated `filterParams` so bulk updates correctly target filtered entity-level datasets
  - Improved payload consistency for clear/replace/update operations (including metric clear semantics)

- **UI changes (detailed)**
  - Refined drag/drop row items with reusable icon system, clearer metric-type indicators, and improved text overflow handling
  - Improved checkbox sizing system with CSS variable-driven dimensions and consistent sizing presets
  - Enhanced snackbar layering and interaction behavior to reduce overlap with popup/modal stacks
  - Improved create-scene UX with safer failure behavior, clearer action layout, and keep-open creation mode
  - Upgraded avatar/profile and tooltip interaction patterns for more consistent user detail display and popup behavior

- **Search improvements (detailed)**
  - Standardized search input behavior via auto-emit + debounce strategy for smoother query updates
  - Improved search state rendering with clearer empty/no-result states and better loading skeleton handling
  - Refined SearchList keyboard/click event model to pass full event context and improve close/select reliability
  - Improved API search parameter consistency (`search`) and reduced noisy/empty query serialization

- **Filter improvements (detailed)**
  - Expanded filter suite coverage (status, assignee, archive status, date range) with improved data exposure/clear methods
  - Switched default archive behavior to active-first through `preflight_status: '1'` while preserving explicit `status_eq` cases
  - Clarified clear vs reset behavior to avoid accidental “show everything” scenarios
  - Improved filter count logic and active-state detection (including selected assignees and archive combinations)
  - Better synchronization between filter UI state, cached state, and table query params

- **Table customization (detailed)**
  - Upgraded column manager/search UX with cleaner conditional rendering and focused query behavior
  - Added dynamic height handling tied to table/container size for predictable layout on different screens
  - Improved pinned/unpinned organization and drag-disable rules while searching
  - Introduced warning-state styling and metric selection constraints (including max selected metric behavior)
  - Improved focus management (auto-focus on open) and warning display support in customization layout

- **Permission handling (detailed)**
  - Refactored permission checks to rely on cell params/row data instead of fragile context-only reads
  - Hardened fallback behavior to `readOnly` when permission data is missing or incomplete
  - Improved edit-type classification and permission guard consistency across renderer/editor selectors
  - Added safer handling for metric editability (formula and auth-permission constraints)
  - Reduced accidental edit entry points by aligning renderer defaults with restrictive permission assumptions

- **Performance (detailed)**
  - Improved API pagination defaults for heavy lists (notably metric/status retrieval) to reduce request volume
  - Optimized AG Grid refresh/update paths with smarter row updates and targeted cell refresh behavior
  - Added/loading refinement for skeleton rendering only when row or field data is truly undefined
  - Reduced redundant re-renders and duplicate fetch/update logic by extracting shared composables
  - Improved cache/fetch patterns for remote assets and user/icon data to limit repeated network work

- **Accessibility and interaction quality**
  - Expanded keyboard navigation in calendars, editors, and list/dropdown controls
  - Improved focus management, tab flow, and escape/cancel behavior
  - Tuned event propagation/handling in critical dropdowns and status selectors for fewer interaction conflicts

- **Code quality and maintainability**
  - Component/composable refactors (row updating, metric updates, input handling)
  - Better type safety and cleaner event contracts across UI/core packages
  - Ongoing cleanup of legacy/debug code and consistency improvements

### 📦 Live Version Update

- **Version:** `0.0.203` → `1.0.203`
- **Status:** Live release baseline

## [0.0.194] - 2026-02-26

### 🚀 Features

**Status Selection Enhancement**

- **AddNewStatus Component:** Improved status selection with immediate dropdown hide behavior
  - Status selection now auto-hides dropdown after selection
  - Enhanced event handling with better propagation control (`stopImmediatePropagation`, `preventDefault`, `stopPropagation`)
  - Added comprehensive console logging for debugging toggle behavior

**SearchList Component - Event System Refactor**

- **Enhanced Event Handling:**
  - Updated select event signature: `select: [item: OptionItemType, e: Event]`
  - Now passes both item and event object for better control
  - Improved click event binding with proper event passing
  - Enhanced keyboard selection with event object in `selectCurrentItem()`

### 🔧 Bug Fixes

- Fixed status selection not triggering dropdown hide after selection
- Improved event propagation in status toggle handler to prevent unwanted bubbling
- Fixed `handleSelect` to properly receive and handle event objects

### 📦 Updates

- Version: `0.0.193` → `0.0.194`

---

## [0.0.193] - 2026-02-26

### 🚀 Features

**Checkbox Component Enhancement**

- **Dynamic Size System:** Complete refactor of size handling
  - Added support for numeric sizes: `number | '${number}px'`
  - Smart size calculation with `checkboxSize` computed property
  - Size presets: small (14px), medium (20px), large (24px)
  - CSS variable-based sizing with `--input-size`
  - Better flexibility for custom dimensions

**Drag & Drop Improvements**

- **DragDropItem Component:**
  - Added `disableDragTooltip` prop for custom tooltip messages
  - Replaced inline SVG icons with reusable `Icon` component
  - Metric type indicators now use consistent icon system:
    - Woohoo metric: `ChartPie` icon
    - Point metric: `Bullseye` icon
  - Max-width adjustments for better text overflow handling (170-180px)
  - Checkbox size updated to `16px` for consistency

**Table Customization**

- **Enhanced UX:**
  - Search box auto-focuses when dropdown opens via `nextTick`
  - Changed from `max-height` to fixed `height` for consistency
  - Added `.has-warning` class for better warning state styling
  - Grid template updates to support warning banner display

**Status Management**

- **AddNewStatus Component:**
  - Enhanced status fetching with pagination support
  - Added `per_page: PAGINATION.PER_PAGE` parameter for efficient loading
  - Improved status toggling logic with auto-hide behavior
  - Better integration with entity-level status filtering

**Header Sorting**

- **Metric Type Display:**
  - Added visual indicators for primary/secondary metrics
  - Woohoo metric (primary): ChartPie icon with proper color
  - Point metric (secondary): Bullseye icon with gray color
  - Fixed metric type detection logic: `metric.type === MetricType.POINT`
  - Improved visual hierarchy in metric columns

**UI/UX Enhancements**

- **Snackbar Component:**
  - Reduced z-index from 999 to 2 for better layer management
  - Prevents overlap issues with modals and popups
- **Item Table Resizing:**
  - Dynamic height calculation: `clientHeight - 78px` (adjusted from 42px)
  - Added window resize listener for responsive table height
  - Proper cleanup with `removeEventListener` on component unmount
- **Create Scene Workflow:**
  - Added 'close-open' mode for faster scene creation
  - Better form state management during creation flow

### 🔧 Technical Improvements

**Event Handling**

- Better event propagation control in status selection
- Improved focus management in table customization
- Enhanced window resize handling with proper cleanup

**Icon System**

- Unified icon usage across drag & drop components
- Consistent color theming with CSS variables
- Reduced SVG duplication by using Icon component

**Code Quality**

- Removed hardcoded SVG markup in favor of Icon component
- Better prop typing with `disableDragTooltip`
- Improved computed properties for size calculations

### 📦 Updates

- Version: `0.0.191` → `0.0.193`

---

## [0.0.191] - 2026-02-26

### 🚀 Features

**API Enhancements**

- **ItemService Updates:**
  - Enhanced `getAssignableStatuses` with pagination parameters
  - Added `page?: number` and `per_page?: number` options
  - Better support for entity-level status fetching with flexible filtering
  - Improved query parameter handling for status assignment

**Cell Rendering Logic**

- **CellFactory Improvements:**
  - Enhanced editability checks with comprehensive logging
  - Smart cell renderer selection based on data availability
  - Added `renderSelecterForCell` helper function for conditional rendering
  - Better handling of metric vs. standard columns
  - Improved loading state detection with multiple conditions:
    - Checks if `params.data === undefined`
    - Checks if `params.node.data === undefined`
    - Checks if field value is undefined
  - More accurate determination of when to show loading skeletons

**Loading Component**

- **Enhanced LoadingComponent:**
  - Added proper lifecycle methods:
    - `getValue()` - Returns current parameter value
    - `isPopup()` - Returns false for non-popup behavior
    - `getPopupPosition()` - Returns undefined for default positioning
  - Event listener cleanup with `destroy()` method
  - Better click event prevention with `addEventListener` instead of onclick
  - Proper `refresh()` method with explicit `boolean` return type
  - Improved component lifecycle compatibility with AG Grid

**Data Management**

- **useRowUpdater Refactor:**
  - Commented out metric values update logic to prevent race conditions
  - More predictable row update behavior
  - Prevents overwriting of metric data during concurrent updates
  - Better separation of concerns for data management

**Item Table**

- **FilterStatus Integration:**
  - Added `entityId` prop support for entity-specific filtering
  - Better integration with status filtering system
  - Improved filter state management

**Scene Creation**

- **CreateNewScene Component:**
  - Added `entityId` prop to AddNewStatus for proper status fetching
  - Improved error handling with scene ID validation
  - Enhanced console logging for debugging creation flow
  - Better failure state management when scene creation fails
  - Prevents form closure on error for better user recovery

### 🔧 Bug Fixes

**Cell Editability**

- Fixed editable cell detection to properly handle undefined values
- Changed condition from `||` to proper nested checks
- Now correctly identifies cells that should show loading skeletons
- Prevents editing attempts on cells with undefined data

**Loading State Display**

- Improved loading skeleton display logic
- Fixed cases where skeletons weren't showing for undefined field values
- Better visual feedback during data loading phases

**Status Fetching**

- Fixed status fetching to use correct API endpoint with pagination
- Proper entity ID passing for filtered status lists
- Better error handling in status API calls

### 🎨 UI/UX

**Loading States**

- Better loading state visual feedback with proper skeleton display
- Consistent loading behavior across all cell types
- Improved user perception of data loading

**Error Messages**

- Enhanced error messages for scene creation failures
- Better console logging for debugging issues
- More informative failure states

**Click Prevention**

- Loading cells now properly prevent click interactions
- Better event propagation control with `stopImmediatePropagation`

### 🔧 Technical Improvements

**Code Quality**

- Added comprehensive console logging for editability checks
- Better debugging capabilities with detailed parameter logging
- Improved code documentation with inline comments
- More maintainable cell rendering logic

**Type Safety**

- Proper typing for LoadingComponent methods
- Better parameter type checking in cell rendering
- Improved type inference for cell params

**Performance**

- Smarter loading state detection reduces unnecessary renders
- Better event listener management with proper cleanup
- Optimized cell refresh behavior

### 📦 Updates

- Version: `0.0.190` → `0.0.191`

---

## [0.0.190] - 2026-02-25

### ⚡ Performance

- Added new `LoadingComponent` for optimized skeleton rendering
- Improved cell rendering logic to show skeleton loaders only when data is undefined
- Removed unnecessary delays and console logs from metric batch fetching
- Optimized skeleton animations with standardized CSS variables

### 🎨 UI/UX

- Enhanced skeleton loading with dynamic width randomization (60-90%)
- Added shimmer effect to loading states
- Fixed tooltip positioning to prevent overflow (now appends to `#item-table-layout-id`)
- Unified skeleton animations across themes (1.5s light, 3.5s dark)

### 🔧 Technical

- Implemented smart cell renderer selection based on data availability
- Added `.ag-cell-skeleton` class for consistent loading appearance
- Removed debug console.logs from multiple components
- Better async/await patterns in metric fetching

### 📦 Updates

- Version: `0.0.188` → `0.0.190`

## [0.0.188] - 2026-02-25

### ⚡ Performance Improvements

**API Optimization**

- **Increased Pagination Limit**: Changed default `per_page` from 20 to 100 in metric list fetching
  - Reduces number of API calls for large datasets
  - Improves initial data loading performance
  - Better user experience with fewer loading states

**UI Rendering**

- **Dynamic Table Height Calculation**:
  - Table now calculates its height based on parent container dimensions
  - Uses `clientHeight` - 42px for accurate layout
  - Implemented in `onMounted` lifecycle for proper DOM measurement
  - Improves responsive behavior across different screen sizes

### 🎨 UI/UX Enhancements

**Table Customization Component**

- **Responsive Column Manager**:
  - Max-height now uses CSS variable `--max-height` with dynamic value
  - Defaults to `max(500px, 60vh)` but respects `tableHeight` prop
  - Better adaptation to available screen space
  - Prevents content overflow on smaller screens

- **Improved Search Experience**:
  - Restructured template logic for better performance
  - Added `hasSearch` computed property for cleaner conditional rendering
  - New `filterQuery` computed property for efficient column filtering
  - Separated search results from normal column list display
  - "No results" message only shows when search is active

- **Cleaner Template Structure**:
  - Removed nested v-if conditions
  - Better separation between pinned and unpinned columns
  - Improved readability and maintainability

**Visual Feedback**

- **Skeleton Loading**: Re-enabled skeleton loading animation (1.5s ease-in-out)
  - Provides better visual feedback during data loading
  - Smooth infinite animation for loading states

### 🔧 Technical Improvements

**Code Quality**

- Removed unused imports (`Item`, `createCommonLink`, `inject`)
- Added `nextTick` import for proper DOM timing
- Better use of reactive computed properties
- Improved type safety with explicit return types

**Component Props**

- Added `tableHeight?: string` prop to `TableCustomization` component
- Passed down from parent `item-table.vue` for dynamic sizing
- Better prop naming and documentation

**Conditional Logic**

- Replaced complex nested conditions with cleaner computed properties
- `hasSearch` for search state detection
- `filterQuery` for filtered column list
- Better separation of concerns

### 📦 Version Updates

- **@arbocollab/arbo-plugin-item-table**: Updated from `0.0.187` to `0.0.188`

### Key Highlights

- 🚀 **5x Faster Initial Load**: Pagination limit increased from 20 to 100 items
- 📐 **Better Responsiveness**: Dynamic height calculation adapts to screen size
- 🔍 **Smarter Search**: Improved column filtering with better performance
- ✨ **Visual Polish**: Re-enabled smooth skeleton loading animations

## 0.0.184 - 2026-02-25

### ✨ Features

- **Enhanced API Request Handling**: Implemented a new concurrency management system for API requests to replace the previous time-based throttling. This allows for more granular control over how many requests can be active simultaneously for specific endpoints, with excess requests being automatically queued. This improves application stability and responsiveness under heavy load.

### ⚙️ Chores

- Bumped package version to `0.0.184`.
- Added JSDoc documentation to the Axios configuration file for improved maintainability.

## [0.0.183] - 2026-02-25

### 🚀 Features & Enhancements

**Tooltip System**

- **Global Registration:** Registered `tooltipDirective` globally to ensure consistent tooltip functionality across the entire application.

**Snackbar Component**

- **Enhanced Interactivity:** Added tooltip support to the Snackbar component for improved user interaction and accessibility.

**API Services**

- **Enhanced User Data:** Updated `ItemService` to include `last_completed_by` data in API calls, enabling richer user information in tooltips and UI components.

**Table Customization**

- **UI Improvements:**
  - Added new icon to the Columns button for better visual identification.
  - Reduced button size for a more compact appearance.
  - Disabled column reordering while searching to prevent conflicts.

**Drag & Drop Items**

- **Disabled State Feedback:**
  - Added tooltip to move handler indicating when reordering is disabled.
  - Improved metric type display logic for better visual clarity.

**Label Renderer**

- **Enhanced Tooltips:** Updated `LabelRenderer` to display user avatar and name within tooltips for better context and information.

### 🐛 Bug Fixes

**Item Creation (`CreateNewScene.vue`)**

- **Focus Management:** Improved focus handling and keyboard navigation, particularly for the `Tab` key to ensure smooth field traversal.
- **UI Stability:** Prevented the form from closing unexpectedly when clicking on a snackbar notification.

**Drag & Drop Items**

- **Metric Display:** Corrected metric type display logic in `DragDropItem` for accurate visual representation.

## [0.0.181] - 2026-02-25

### 🚀 Features & Enhancements

**Version Management**

- Bumped version from 0.0.179 to 0.0.181.

**API Services**

- **Enhanced User Data:** Updated `ItemService` to include `last_completed_by` data in API calls for richer user information display.

**Table Customization**

- **UI Polish:**
  - Added new icon to the Columns button.
  - Reduced button size for better space efficiency.
  - Disabled column reordering during search operations.

**Drag & Drop Items**

- **Tooltip Enhancement:** Added tooltip to move handler to inform users when reordering is disabled.
- **Metric Type Display:** Fixed metric type display logic for accurate visual representation.

**Label Renderer**

- **Enhanced Tooltips:** Improved tooltip content to display user avatar and name for better context.

### 🐛 Bug Fixes

**Item Creation (`CreateNewScene.vue`)**

- **Keyboard Navigation:** Enhanced `Tab` key behavior for better focus management across form fields.
- **Click-Outside Handling:** Prevented form closure when interacting with snackbar notifications.

## [0.0.175] - 2026-02-24

### 🚀 Features & Enhancements

**Calendar Components**

- **Keyboard Navigation:** Implemented comprehensive keyboard navigation (`Tab`, `Shift+Tab`, `Enter`, `Escape`, Arrow keys) across all calendar components (`Calendar.vue`, `MainCalendar.vue`, `CalendarNavigationControl.vue`).
- **Accessibility:** Improved accessibility by adding `data-index` attributes for programmatic focus, making month/year selections focusable, and ensuring a logical tab order.
- **Focus Management:** Centralized keyboard handling in a new `calendarNavigation.ts` utility, which traps focus within the calendar and allows seamless navigation between all interactive elements.
- **Bug Fixes:** Corrected an issue where the `Escape` key did not close the calendar popup.

**Item Creation (`CreateNewScene.vue`)**

- **UI Polish:** Adjusted the layout for action buttons for better alignment and responsiveness.
- **Error Handling:** Improved error handling during scene creation to prevent the form from closing unexpectedly on failure.

## [0.0.174] - 2026-02-24

### 🚀 Features & Enhancements

**Snackbar Component**

- **Tooltip Clarity:** Updated tooltip text from "Copy to clipboard" to "Copy" for improved clarity and conciseness. The confirmation message is now "Copied".

## [0.0.173] - 2026-02-23

### 🐛 Bug Fixes

**Date Picker Components**

- **Calendar & DateInput:**
  - Fixed an issue where pressing the `Tab` key within the date input fields would not correctly move focus to the next element outside the calendar popup.
  - Improved keyboard navigation by trapping focus within the calendar popup and providing a clear exit path via the `Tab` key on the last input.
  - Pressing `Escape` within a date input now correctly blurs the input and returns focus to the main calendar component.

**Item Creation (`CreateNewScene.vue`)**

- **Focus Management Improvements:**
  - Removed `@blur` event handlers from action buttons ("Cancel", "Create & Keep", "Create") to prevent the `activeField` from being incorrectly set to `null` during keyboard navigation.
  - Ensures more stable focus management and predictable keyboard navigation behavior.
  - Added extensive console.trace and logging to better debug focus and active field changes.

## [0.0.172] - 2026-02-23

### 🚀 Features & Enhancements

**Error Handling**

- **Offline Detection:** Implemented robust offline error handling across the application.
  - The system now detects when the user is offline and prevents data-modifying requests (POST, PUT, DELETE).
  - A single, clear notification ("You are currently offline. Please check your network connection.") is displayed to inform the user of the connection issue, avoiding multiple redundant error messages.

**Item Creation (`CreateNewScene.vue`)**

- **Improved Focus Management:** Refined keyboard navigation (`Tab`) to correctly cycle through all fields and buttons, including "Cancel", "Create & Keep", and "Create".
- **Enhanced User Feedback:** Error notifications are now shown if scene creation fails.
- **UI Polish:** Adjusted the layout and styling of action buttons for better alignment and a cleaner look. The validation rule requiring a status to be selected has been removed.

**Snackbar/Notifications**

- **UI Improvements:**
  - The success icon color for interactive notifications now uses the correct theme variable for better consistency.
  - Long messages now wrap correctly within the notification.
  - Added a default success icon for interactive notifications that don't have one specified.

### 🐛 Bug Fixes

- **Item Table (`item-table.vue`):**
  - The "View" button in the "Scene Created" notification now correctly focuses on the newly created item in the table.
  - Removed obsolete code related to the old inline item creation logic.
- **Date Picker:** Fixed an issue where pressing the `Tab` key within the date input fields would not correctly move focus to the next element outside the calendar popup.

### 🔧 Code Quality

- **API Services:** Centralized offline error detection in the `ItemService` request handler to provide consistent error codes and messages.
- **State Management:** The notification store now specifically handles the `offline` error code to display a standardized message.

## [0.0.171] - 2026-02-05

### 🚀 Features

**Item Table**

- **item-table.vue**
  - Temporarily disabled `handleCreateNewItem` function
  - Commented out new item creation from table interface for maintenance

**Snackbar Component**

- **Icon Enhancement:**
  - Replaced hardcoded SVG icons with `<Icon>` component
  - Now uses `CircleCheck` for success messages
  - Now uses `CircleXMark` for error messages
  - Better consistency across notification system

- **UI Improvements:**
  - Refined layout alignment and spacing
  - Updated copy button styling with border
  - Enhanced icon color for better visibility

**Icon Component**

- **Debugging Enhancement:**
  - Added `about` attribute to icon wrapper
  - Displays icon source for easier debugging
  - Improved developer experience when troubleshooting icons

---

## [0.0.151] - 2026-02-05

### 🔧 API Services Package

**ItemService.ts - Added filterParams support across all bulk operations:**

**Updated Methods:**

- **bulkDateUpdate**
  - Added `filterParams?: Record<string, any>` parameter
  - Passes filter params via `params: filterParams` in request

- **updateAssignee**
  - Added `filterParams` to payload type
  - Includes filter params in bulk assign update request

- **removeAssignee**
  - Passes `filterParams` through to API call

- **replaceAssignee**
  - Merges `filterParams` with `replace: 1` flag
  - Supports filtered replacement operations

- **addAssignee**
  - Added `filterParams` parameter
  - Includes in bulk assign update request

- **unAssignAll**
  - Extracts and passes `filterParams` from payload

- **bulkStatusUpdate**
  - Added `filterParams` to payload type
  - Passes filter params in status update request

- **bulkMetricUpdate**
  - Added `filterParams` parameter
  - Includes in metric update request

- **getAssignableStatus**
  - Added flexible params with `[key: string]: any` for extensibility

### 🎨 UI Package

**BulkUpdate.vue**

- Injected `filterParams` from parent context
- Added `filterParams` to `additionalUpdateParams` computed property
- Conditionally includes filter params in all bulk operations

**DateUpdateButton.vue**

- Injected `filterParams` from context
- Added `filterParams` to update payload
- Supports entity-level date range updates with filtering

**StatusEditor.vue**

- Injected `filterParams` for status fetching and updates
- Spreads filter params in `getAssignableStatus` call
- Includes filter params in `handleUpdateStatus` payload
- Added console.log for debugging status update payload

**TableCustomization.vue**

- Removed debug template output: `{{ isDisableDrag }}`

### 🔨 Composables

**useAssignees.ts**

- Injected `filterParams` from parent context
- Added filter params to:
  - `unAssignAll` operation
  - `removeAssignee` operation
  - All assignee update payloads

**useMetricUpdate.ts**

- Injected `filterParams` from context
- Added filter params to metric update payload
- Supports entity-level metric updates with filtering

### 📊 Item Table Package

**item-table.vue**

- Provided `filterParams` (`basicFilter`) to child components via `provide('filterParams', basicFilter)`
- Enables all descendant components to access current filter state

### 🐛 Core Table Package

**CellFactory.ts**

- Added commented-out debug logging for `canEditField` method
- Prepared for future debugging without active console noise

**CellPermission.ts**

- Added console.log for debugging permission checks
- Fixed metric permission check to use `cellParam.colDef?.context`
- Improved conditional flow with else if chains
- Enhanced readability and maintainability

### 🎯 Impact

**Benefits:**

- ✅ Entity-level bulk operations now respect active filters
- ✅ Improved accuracy for "select all" scenarios with filters applied
- ✅ Consistent filter parameter passing across all update types
- ✅ Better debugging capabilities with strategic logging

**Technical Debt:**

- Console logs added for debugging (should be removed in production)
- Filter params injection pattern used throughout (consider formalization)

---

## [0.0.138] - 2026-02-05

### 🔧 Core Table Package

**CellFactory.ts - Enhanced Parameter Building**

- **buildCommonCellParams Refactor:**
  - Now accepts `overrideParams` as either object or function
  - Function-based override params receive full cell params for dynamic configuration
  - Improved permission checks to use `params` instead of `params.colDef?.context`
  - Better separation of concerns between cell params and column context

- **Permission Handling Improvements:**
  - Fixed permission checks to read from cell params instead of column context
  - Replaced `checkPermissionDisabled(...).type` with dedicated `checkEditType()` function
  - Enhanced `cellEditorSelector` and `cellRendererSelector` to properly pass params
  - Dynamic cell class naming with type-based classes (e.g., `editable`, `readOnly`)

**CellPermission.ts - Permission System Overhaul**

- **Updated Permission Checks:**
  - Changed to accept cell params instead of context object
  - Fixed permission reading from `cellParam?.data?.permissions`
  - Improved `readOnly` logic for metric fields based on auth permissions
  - Added stricter fallback to `readOnly: true` when permissions are missing
  - Better handling of formula metrics and permission levels

### 🎨 UI Package

**DragDropItem.vue - Metric Type Indicators**

- **Visual Indicators:**
  - Added metric type badges with icons:
    - ★ for rating metrics
    - ƒx for formula metrics
    - # for number metrics
  - Added Woohoo metric indicator with custom SVG icon
  - Added Point metric indicator with custom SVG icon

- **Selection Management:**
  - Implemented `isDisableNewCheck` prop to prevent selecting more than 5 metrics
  - Added `disableDrag` and `disableCheckbox` props for granular control
  - Better distinction between drag and checkbox disable states
  - Updated grid layout to accommodate new metric indicators

**TableCustomization.vue - 5 Metric Limit**

- **Warning System:**
  - Added warning banner when 5 metric columns are selected
  - Implemented `isDisableNewCheck` to enforce 5-metric limit
  - Added `numberOfMetricSelected` computed property for tracking

- **Enhanced UX:**
  - Separated drag disable from checkbox disable logic
  - Provided `isDisableNewCheck` to child components via provide
  - Better user feedback when metric limit is reached

**CreateNewScene.vue - Quick Actions**

- **New Action Buttons:**
  - Added `AssigneeUpdateButton` for quick assignee selection
  - Added `StatusUpdateButton` for quick status changes
  - Added `DateUpdateButton` for quick date range setup
  - Added "continue creation" checkbox option
  - Updated grid layout to accommodate new action buttons

- **Behavior Changes:**
  - Disabled click-outside behavior (commented out for better UX)
  - Better state management during scene creation

**Checkbox.vue - Size System Refactor**

- **CSS Variable System:**
  - Refactored size handling using `--input-size` CSS variable
  - Improved consistency across small/medium/large variants
  - Cleaner size calculation and application

**Renderer Components - Default Read-Only**

- **Security Improvements:**
  - Set default `readOnly: true` for:
    - `AssigneeGroupRenderer`
    - `DateRangeRenderer`
    - `MetricRenderer`
    - `StatusRenderer`
  - Prevents accidental edits when permissions are not explicitly set

### 🐛 Bug Fixes

**Permission System**

- Fixed permission reading from row data instead of column context
- Fixed row permission updates in `useRowUpdater.ts`
- Better fallback handling when permissions are missing
- Consistent permission checks across all cell types

**Code Quality**

- Removed excessive `console.log` statements across multiple files
- Cleaner logging for debugging without noise
- Better error handling in permission checks

### 🔧 Technical Improvements

**Type Safety**

- Better typing for override params (object | function)
- Improved cell params type inference
- Enhanced permission type definitions

**Code Organization**

- Clearer separation of permission logic
- Better function naming with `checkEditType()`
- More maintainable cell renderer/editor selection

**Performance**

- Reduced unnecessary permission checks
- Better caching of computed permission states
- Optimized cell class name generation

### 📦 Version Updates

- **@arbocollab/ag-grid-ui-components:** Updated from `0.0.23` to `0.0.24`
- **@arbocollab/arbo-plugin-item-table:** Updated from `0.0.137` to `0.0.138`

### Key Highlights

- 🔐 **Better Permission Handling:** Moved from column context to cell params for more accurate checks
- 🎯 **5-Metric Limit Enforcement:** Visual warnings and checkbox disabling when limit reached
- ⚡ **Quick Actions:** New buttons for faster scene creation with assignees, status, and dates
- 🎨 **Metric Type Indicators:** Clear visual badges for different metric types
- 🛡️ **Security Defaults:** All renderers now default to read-only for safer operation

---

## [0.0.137] - 2026-02-05

### 🚀 Features

**Select All Functionality - Complete Implementation**

- **BulkUpdate Component:**
  - Added "Select All" button when partial selection meets criteria
  - Button appears when:
    - Selection is indeterminate (some items selected)
    - Total rows exceed selected count
    - All visible rows are selected
  - Enhanced UI layout with fixed width (350px) for better alignment
  - Improved entity name display with tooltip support
  - Truncated long entity names with ellipsis (max-width: 225px for "All in", 100px for "Select all")
  - Added `totalRows` and `visibleRows` props for selection logic
  - Emits `selectAll` event to trigger full selection

- **State Management:**
  - Moved `selectionStatus` from local component state to `bulkUpdateStore`
  - Centralized selection state management across components
  - Added `handelSelectAll()` action to bulk update store
  - Improved state consistency between HeaderCheckbox and BulkUpdate components

- **HeaderCheckbox Component:**
  - Refactored to use shared `selectionStatus` from store
  - Removed local `currentState` ref in favor of global state
  - Better synchronization with bulk update operations
  - Consistent selection state across all components

- **ItemTable Integration:**
  - Added `handleSelectAll()` method to useItemTable composable
  - Exposed `isSelectAll` ref for tracking select all state
  - Wired up `@select-all` event handler
  - Passed `totalRows` and `visibleRows` to BulkUpdate component

### 🎨 UI/UX Improvements

- **BulkUpdate Component:**
  - Better text wrapping with `line-height: 14px`
  - Flexbox alignment for selected count display
  - Improved spacing and visual hierarchy
  - Entity name tooltip for long names

- **MetricBulkItem:**
  - Moved padding from `.metric-item` to `.metric-label` for better spacing
  - Improved click target area for metric items

### 🔧 Code Quality

- Removed commented test code for entity name
- Better type safety with `UseItemTableReturn` interface
- Improved component organization and state management
- Consistent event naming conventions

### 📝 Type Updates

- Added `isSelectAll` and `handleSelectAll` to `UseItemTableReturn` interface
- Enhanced `BulkProps` with `totalRows` and `visibleRows` properties

---

## [0.0.136] - 2026-02-05

### 🚀 Features

**RatingComponent - Enhanced Hover & State Handling**

- **Improved Hover Behavior:**
  - Added `isHoverOnIcon` ref to track hover state
  - Implemented `handleMouseEnter()` and `handleMouseLeave()` methods
  - Enhanced `isFilled()` logic to respect hover state
  - Prevents filled stars from showing during hover interaction

- **Better Visual Feedback:**
  - Hover effect now correctly overrides filled state
  - Improved hover color handling with CSS specificity
  - Added separate hover state for filled items

- **CSS Enhancements:**
  - Changed display from `flex` to `grid` for better alignment
  - Removed unused `temporary-fill` class
  - Enhanced color transitions for smoother visual feedback
  - Fixed hover state priority with proper CSS selectors

- **State Management:**
  - Cleaner separation between filled and hover states
  - More predictable behavior when interacting with rating stars
  - Better disabled/readOnly state handling in hover scenarios

### 🔧 Code Quality

- Removed commented-out focus styles
- Improved CSS specificity for state combinations
- Added `!important` flags where needed for disabled state consistency

---

## [0.0.135] - 2026-02-05

### 🚀 Features

**Filter System Enhancement**

- **New Parameter: `preflight_status`**
  - Added `preflight_status` parameter to ItemService and filter logic
  - Replaces `status_eq` as the default filter parameter
  - Default value: `'1'` (active items only)

**FilterBox Component**

- **Improved Archive Status Logic:**
  - No selection: Uses `preflight_status: '1'` (active items only)
  - Single selection (archived): `status_eq: '0'`
  - Single selection (active): `status_eq: '1'`
  - Both selected: `status_eq: '0,1'` (all items)
- Updated clear filter action to use `preflight_status: '1'` instead of `status_eq`

**ItemTable Component**

- Changed default filter from `status_eq: '1'` to `preflight_status: '1'`
- Better alignment with new filtering system

**ItemService API**

- Added `preflight_status` parameter support in `getItemList()` method
- Maintains backward compatibility with existing `status_eq` parameter

### 🔧 Code Quality

- Removed unused `node:console` import from item-table.vue
- Improved filter parameter naming consistency

---

## [0.0.134] - 2026-02-05

### 🚀 Features

**Tooltip Directive - Style Injection**

- **Automatic Style Injection:**
  - Styles are now automatically injected into `<head>` on directive initialization
  - Uses unique ID `'arbo-tooltip-styles'` to prevent duplicate injections
  - Checks for existing styles before injecting
  - Injected once globally, not per tooltip instance

**Tooltip Themes:**

- All themes use CSS custom properties for dynamic theming
- Themes included: `arbo`, `warning`, `error`, `light`
- Arrow colors automatically match tooltip background for all placements

**Implementation Details:**

- `injectTooltipStyles()` function runs in `beforeMount` directive hook
- Pure CSS converted from SCSS
- Global application of styles ensures consistent tooltip appearance

## [0.0.133] - 2026-02-05

### 🐛 Bug Fixes

**Filter System**

- **FilterBox Component:**
  - Fixed archive status parameter handling with improved `status_eq` logic
  - Single selection: `'0'` (archived) or `'1'` (active)
  - Both selected: `'0,1'` (both archived and active)
  - None selected: `'1'` (default to active only when no other filters)
  - Moved archive status parameters after other filters for proper precedence

---

## [0.0.132] - 2026-02-05

### 🚀 Features

**LabelEditor Component**

- **Save on Blur Functionality:**
  - Added `saveOnBlur` prop (defaults to `true`)
  - Implemented `handleBlur()` method with conditional save/cancel logic
  - Added `isCancelling` flag to prevent blur save after escape key
  - Enhanced `handleSave()` with value change detection
  - Auto-selects text when entering edit mode

**Exposed Methods:**

- `focus()` - Enter edit mode programmatically
- `blur()` - Programmatically blur input
- `save()` - Save current value
- `cancel()` - Cancel edit and revert

**FilterBox Component**

- Added white background color for better visibility
- Improved visual consistency

**Tooltip System Enhancements**

- **Theme Support:**
  - Enhanced tooltip themes with CSS variables
  - Added `light` theme with white background (#fff) and dark text (#232323)
  - Improved color consistency across all themes (arbo, warning, error, light)
  - Fixed arrow colors to match tooltip background for all placements (top, bottom, left, right)

**Tooltip Styles**

- Added CSS variable system for dynamic theming:
  - `--tooltip-background-color`
  - `--tooltip-text-color`
- Improved visual consistency across all tooltip variants

---

## [0.0.131] - 2026-02-05

### 🚀 Features

**MetricUpdateButton**

- **UI Improvements:**
  - Updated description formatting: removed parentheses from morpheme display
  - Changed from `(morpheme_value)` to `morpheme_value`
  - Cleaner, more professional appearance

**UserProfileDirective**

- **UX Enhancement:**
  - Added `onInsightClick` handler to auto-hide tooltip when insight link is clicked
  - Improved user experience by closing profile popup on navigation
  - Prevents orphaned tooltips after navigation

---

## [0.0.130] - 2026-02-05

### 🚀 Features

**MetricBulkItem Component - Complete Refactor**

**Keyboard Navigation:**

- Added comprehensive keyboard support:
  - `Escape`: Focus on search and close editor
  - `Tab`: Close editor if open
  - `Enter`: Open editor if closed
  - `ArrowDown`/`ArrowUp`: Navigate to sibling items (only when editor is closed)
- Improved event handling with handler map pattern
- Better event propagation control

**Component Architecture:**

- Extracted reusable methods:
  - `toggleEditor()` - Toggle editor state
  - `closeEditor()` - Close and reset editor
  - `openEditor()` - Open and focus editor
- Better state management with `metricRef` template ref
- Removed manual event listeners in favor of declarative template binding
- Added `tabindex="0"` for proper keyboard accessibility

**Events:**

- Added `focusOnSearch` event for Escape key handling
- Added `openSibling` event with direction ('up' | 'down') for arrow key navigation
- Renamed `loseFocus` to `cancel` for semantic clarity
- Improved event naming consistency

**Styling:**

- Added 8px gap to metric label for better spacing
- Fixed text color to use CSS variable `var(--color-text-primary)`
- Added focus outline removal for cleaner appearance
- Enhanced metric-morpheme styling:
  - Italic font style
  - Secondary text color
- Added text overflow handling with ellipsis

**MetricEditor Component**

- Enhanced keyboard support:
  - Escape key closes editor and emits cancel event
  - Better integration with parent components
- Improved error message display system
- Better validation flow with `@onValidation` event
- Removed inline error display (moved to tooltip-based system)

**MetricEditorInput Component**

**Validation System:**

- Added `showInlineError` prop (defaults to `false`)
- Implemented tooltip-based error display:
  - Shows on create when validation fails
  - Uses 'error' theme with red background (#fee4e2)
  - Always visible when invalid (`alwaysShow: true`)
  - Max width: 200px for readability
- Added `validateData()` method for real-time validation
- Added `getErrsMessage()` helper for contextual error messages

**Validation Integration:**

- Dynamic tooltip props based on validation state
- Auto-shows tooltip when validation fails
- Hides tooltip when valid or using inline errors
- Seamless integration with parent components

**MetricUpdateButton**

- **Initialization:**
  - Changed to load metrics on mount instead of on visibility
  - Better performance with eager loading
  - Improved user experience with immediate data availability
- Added close event handling for cleanup
- Improved template structure and organization
- Better metric title display without overflow issues

**SearchList Component**

- **Programmatic Selection:**
  - Added `selectIndex(index)` method for external control
  - Enables keyboard navigation from parent components
  - Better integration with MetricBulkItem arrow key navigation

**Tooltip Directive Enhancements**

**New Properties:**

- `showOnCreate` - Shows tooltip immediately after creation
- `alwaysShow` - Keeps tooltip visible permanently

**Behavior:**

- **alwaysShow Mode:**
  - Changes trigger to 'manual'
  - Prevents hiding on any interaction
  - Auto-shows on creation
  - Disables hideOnClick
  - Returns false in onShow/onHide callbacks
- **showOnCreate Mode:**
  - Shows tooltip immediately after creation
  - Uses nextTick() for proper DOM timing
  - Works with both create and update flows

**Implementation:**

- Applied to both `createTooltipInstanceWithClass()` and `updateTooltipInstance()`
- Type-safe checks for object-based params
- Consistent behavior across directive lifecycle

**Styles & CSS**

**Error Styling:**

- Added `.error-text` class:
  - Font size: 12px
  - Color: #d92d20 (error red)
  - Max width: 100%
  - White-space: break-spaces
  - Consistent error messaging across components

**Tooltip Themes:**

- Unified tooltip styling with CSS variables
- Theme definitions:
  - `arbo`: Dark background (#333) with white text
  - `warning`: Orange background (#ff5200) with white text
  - `error`: Light red background (#fee4e2) with dark red text (#d92d20)
  - `light`: White background (#fff) with dark text (#232323)
- Arrow colors automatically match background for all placements

**Animation:**

- Added slide transition for MetricEditor:
  - Transform: translateY(-80%)
  - Opacity fade
  - 0.3s ease timing

---

## [0.0.129] - 2026-02-04

### 🚀 Features

**Input Validation System**

**Event Refactoring:**

- Changed validation event from `handleChange` to `onValidation` across:
  - `InputText.vue`
  - `MetricEditor.vue`
  - `MetricEditorInput.vue`
- Better semantic naming for validation flow
- Clearer separation between change and validation events

**MetricEditorWrapper**

- **Error Handling:**
  - Added `onValidation` event handler
  - Integrated validation with tooltip display system
  - Added error tooltip with 'error' theme
  - Tooltip shows validation errors with `alwaysShow: true`
  - Better user feedback for validation failures

**Tooltip Directive**

- **Error Theme:**
  - Added 'error' theme support
  - Red background (#fee4e2)
  - Dark red text (#d92d20)
  - Proper arrow colors for all placements
- **alwaysShow Enhancement:**
  - Enhanced support in `useTippyComposable`
  - Prevents tooltip from hiding when enabled
  - Better persistence for error messages

---

## [0.0.128] - 2026-02-04

### 🚀 Features

**Metric Editor - Enhanced Validation System**

**Real-time Validation:**

- Added live validation for metric number inputs
- Displays contextual error messages based on validation rules
- Disabled confirm button when input is invalid
- Visual error state with red border (#d92d20)

**Validation Types:**

- Range validation: Shows "Enter a value between {min} and {max}"
- Excluded values: Shows "These values are not allowed: {values}"
- Exact values: Shows "Value is not allowed"
- Empty/null values are always considered valid

**User Experience:**

- Error messages appear below the input field
- Confirm button is disabled until valid input is provided
- Prevents submission of invalid data
- Clear, contextual error messaging

**Metric Editor Input**

**Enhanced Change Handling:**

- Added handleChange event emission for real-time validation
- Removed blocking validation on save to allow error display
- Better separation of validation and save logic
- Maintains cached value for revert functionality

**Input Text Component**

**Validation Improvements:**

- Added handleChange event emission
- Enhanced validation logging for debugging
- Better error state tracking with watcher
- Real-time validation feedback

### 🔧 Bug Fixes

**Validation Logic Corrections**

- Fixed inverted validation logic in validatorFnc:
  - Range validation: Now correctly validates if value is within range (was inverted with !isNumber)
  - Not validation: Now correctly excludes specified values
  - Exact validation: Now correctly validates if value matches allowed values
  - Changed to use Math.floor() for integer comparison

**DisplayWrapper Error State:**

- Re-enabled error border color (#d92d20)
- Better visual indication of validation errors

### 🎨 Style Improvements

**Error Messaging**

- Added global .error-text class for consistent error styling
- Font size: 12px
- Color: #d92d20 (error red)
- Applied to validation error messages

**Visual Feedback**

- Error border color consistently applied across components
- Better distinction between valid and invalid states

### 🔧 Technical Improvements

**Validation Flow**

- Centralized validation in MetricEditor component
- Real-time validation on input change
- Error message generation based on metric configuration
- Better state management with isValid ref

**Code Quality**

- Added validation logging for debugging
- Better separation of concerns between input and validation
- Cleaner event handling chain
- Improved type safety with validation checks

**Developer Experience**

- Changed dev entity ID for testing purposes
- Better console logging for validation debugging
- More maintainable validation logic

### 📦 Version Updates

- **@arbocollab/arbo-plugin-item-table:** Updated from `0.0.127` to `0.0.128`

---

## [0.0.127] - 2026-02-04

### 🚀 Features

**Input Text Component - Number Input Enhancement**

**Scientific Notation Prevention:**

- Added keydown blocking for 'e' and 'E' keys in number input type
- Prevents users from entering scientific notation (e.g., 1e9)
- Enhanced number validator to explicitly remove scientific notation characters
- Only allows digits (0-9), decimal point (.), and minus sign (-) in number inputs

### 🔧 Technical Improvements

**Input Validation**

- Improved regex validation in number input validator
- Better comment documentation explaining scientific notation removal
- Prevents invalid number formats at both keyboard and validation levels

**User Experience**

- Cleaner number input experience
- Prevents confusing scientific notation entry
- More predictable number input behavior

### 📦 Version Updates

- **@arbocollab/arbo-plugin-item-table:** Updated from `0.0.126` to `0.0.127`

---

## [0.0.126] - 2026-02-04

### 🚀 Features

**Rating Component**

**Enhanced Title Attribute Calculation:**

- Updated rating star title calculation from params.maxRating - value to params.maxRating - value + 1
- Provides more accurate tooltip information for rating values
- Better user feedback when hovering over rating stars

### 🔧 Technical Improvements

**User Experience**

- Improved accessibility with more accurate ARIA labels
- Better tooltip information for rating components

### 📦 Version Updates

- **@arbocollab/arbo-plugin-item-table:** Updated from `0.0.125` to `0.0.126`

### Key Highlights

- ✨ **Better Rating Tooltips:** More accurate hover information for rating components

---

## [0.0.125] - 2026-02-04

### 🔧 Bug Fixes & Improvements

**Metric Update Button**

- Removed Unused Event Handler:
  - Removed `@close="hide"` event handler from SearchList component
  - Cleaner event propagation and better dropdown management
  - Prevents potential conflicts with internal close handling

## [0.0.124] - 2026-02-04

### 🚀 Features

**Filter Box Enhancements**

- Improved visual design with dynamic padding, borders, and hover effects for active filters
- Updated archive status handling: default to empty array, simplified counting, and better parameter logic for single/both/none selections
- Enhanced "Clear All" behavior: truly clears filters while maintaining active items view (status_eq: '1')

**Filter Archive Status Component**

- Changed default state to empty array, updated reset() to clear selection
- Added animated chevron icons and improved display labels

**Filter Status & Assignee Components**

- Added animated chevron icons for consistent dropdown interactions
- Refined layouts and removed unnecessary options for streamlined UX

**Global Style Improvements**

- Introduced .icon-up class with 180-degree rotation animation for dropdown chevrons

### 🔧 Technical Improvements

- Removed DEFAULT_STATE constant for cleaner state management
- Unified dropdown animations and improved clear vs. reset distinctions

### 📦 Version Updates

- **@arbocollab/arbo-plugin-item-table:** Updated from `0.0.123` to `0.0.124`

### Key Highlights

- 🎨 **Enhanced Filter UI:** Better visuals, animations, and predictable behavior
- 🔄 **Improved Archive Handling:** Flexible status filtering with sensible defaults
- ⚡ **Cleaner Code:** Removed constants and unified interactions

---

## [0.0.122] - 2026-02-04

### 🚀 Features

**Filter System Enhancements**

- **FilterBox Improvements:**
  - Added default filter state: status_eq: '1' (active items only)
  - Improved "Clear All" behavior: now resets to default active status instead of clearing completely
  - Enhanced filter count logic: excludes default archive status from active filter count
  - Better state management with DEFAULT_STATE constant
  - Improved revert behavior: falls back to default state when no cache exists

- **FilterArchiveStatus Component:**
  - Added reset() method to restore default state ('active')
  - Changed default selected value from empty to ['active']
  - Better distinction between clear() (removes all) and reset() (restores default)
  - Improved initial state handling

- **Item Table Integration:**
  - Set default basic filter to show active items only: { status_eq: '1' }
  - Better alignment with filter system defaults
  - Improved initial data loading with sensible defaults

### 🔧 Technical Improvements

**Filter State Management**

- Consistent default state across all filter components
- Better handling of archive status in filter count calculations
- Improved cache and state synchronization
- Clearer separation between clearing and resetting filters

**Code Quality**

- Removed unused template code in Item Table component
- Added DEFAULT_STATE constant for better maintainability
- Improved method naming with reset() vs clear() distinction

**User Experience**

- Users now see active (non-archived) items by default
- "Clear All" maintains sensible defaults instead of showing all items
- More predictable filter behavior across the application

### 📦 Version Updates

- **@arbocollab/arbo-plugin-item-table:** Updated from `0.0.121` to `0.0.122`

### Key Highlights

- 🎯 **Smart Default Filters:** Active items shown by default with proper state management
- 🔄 **Better Reset Behavior:** Clear All now resets to sensible defaults instead of removing all filters
- 📊 **Improved Filter Counting:** Default archive status no longer counted as an active filter

---

## [0.0.121] - 2026-02-04

### 🚀 Features

**User Profile Components**

- **AvatarProfile Enhancements:**
  - Added `apiUpdateFunction` prop for dynamic user data fetching
  - Simplified component by removing internal API service logic
  - Better prop passing for user profile updates
  - Improved integration with MiniPeopleCard and filter components

**Tooltip System**

- **Enhanced Tooltip Directive:**
  - Added lifecycle hooks: `onCreate` and `onMount` with debug logging
  - Improved tooltip content styling with word-break and max-width (500px)
  - Better handling of `extra-padding` class
  - Cleaned up event listener logic for better performance
  - Simplified update logic with consolidated destroy conditions

**Metric Editor Improvements**

- **MetricEditorInput:**
  - Changed to auto-emit mode by default (`autoEmit: true`)
  - Added cancel event emission
  - Enhanced keyboard handling (Escape now triggers cancel)
  - Better blur and cancel event separation
  - Improved logging for debugging

- **MetricEditorWrapper:**
  - Added error recovery: reverts to original value on update failure
  - Improved cancel handling with proper event propagation

- **MetricEditor:**
  - Added Escape key support to close editor
  - Enhanced keyboard navigation

**Metric Update Button**

- **MetricBulkItem:**
  - Added tooltip support for metric names
  - Conditional morpheme display (only shows when open)
  - Improved label styling
  - Better console logging

- **MetricUpdateButton:**
  - Changed initialization: now loads metrics on mount instead of on visibility
  - Added close event handling
  - Cleaned up template code
  - Improved metric title display without overflow constraints

**Filter Components**

- **FilterAssignee:**
  - Integrated `getUserInformation` helper for consistent API calls
  - Added `apiUpdateFunction` to all AvatarProfile instances
  - Better workspace ID handling via SessionStorageHelper
  - Improved user profile popups across Me, selected, and search results

**Assignee Components**

- **AssigneeGroupEditor & AssigneeGroupRenderer:**
  - Added `getUserInformation` helper for API integration
  - Passed `apiUpdateFunction` to AvatarProfile components
  - Consistent user information fetching across all avatar instances
  - Better separation of API logic

### 🔧 Technical Improvements

**Type Safety**

- Updated `MiniProfileProps` type: `apiUpdateFunction` now returns `Promise<ApiUserBasicInforResponse | null>` (was `undefined`)
- Better type consistency across user profile components
- Improved null handling

**Code Quality**

- Removed unused template code in MetricUpdateButton
- Cleaned up inline style constraints
- Better event handler naming and organization
- Consistent use of SessionStorageHelper for workspace context

**Developer Experience**

- Enhanced logging for tooltip lifecycle
- Better debugging capabilities in metric components
- Clearer event flow in editor components

### 📦 Version Updates

- **@arbocollab/arbo-plugin-item-table:** Updated from `0.0.120` to `0.0.121`

### Key Highlights

- ✨ **Unified User Profile Data Fetching:** All avatar components now use a consistent API update function pattern
- 🎯 **Better Keyboard Support:** Enhanced Escape key handling across metric editors
- 🔍 **Improved Tooltips:** Better lifecycle management and styling for tooltip content
- ⚡ **Auto-emit Metrics:** Metric inputs now automatically emit changes for smoother UX

---

## [0.0.120] - 2026-02-03

### 🚀 Features

**Metric Editor Components**

- **MetricEditorWrapper:** Enhanced cancel handling
  - Added `closeEdit()` helper function to stop editing
  - Implemented `handleCancel()` method that calls `closeEdit()`
  - Now calls `closeEdit()` at the start of `handleUpdate()` for consistent behavior
  - Removed duplicate `stopEditing()` call when value hasn't changed
  - Better separation of concerns between closing and updating

- **MetricEditorDropdown:** Improved cancel event handling
  - Added `handleCancel` emit to event definitions
  - Implemented dedicated `handleCancel()` method with logging
  - Changed cancel event handler from `@cancel="handleClose"` to `@cancel="handleCancel"`
  - Better distinction between close and cancel actions

**Rating Component**

- **RatingComponent:** Enhanced clickable area
  - Increased minimum width from `18px` to `24px`
  - Increased minimum height from `18px` to `24px`
  - Improved accessibility and easier interaction with stars
  - Better touch targets for mobile devices

### 🔧 Technical Improvements

**Code Quality**

- Better event handling in metric editor components
- Improved logging for debugging cancel and close actions
- More explicit function naming for clarity

**User Experience**

- Larger hit areas for rating stars improve usability
- More predictable cancel behavior in metric editors
- Better handling of editor state transitions

### 📦 Package Updates

- **@arbocollab/ag-grid-ui-components:** Updated from `0.0.22` to `0.0.23`
- **@arbocollab/arbo-plugin-item-table:** Updated from `0.0.119` to `0.0.120`

---

## [0.0.119] - 2026-02-03

### 🚀 Features

**Avatar Component Enhancements**

- **Dynamic Font Sizing:** Avatar component now calculates font size dynamically based on avatar size
  - Font size is set to half the avatar size: `Math.floor(props.size / 2)`
  - Ensures better text scaling across different avatar sizes
  - Improves visual consistency and readability

**Assignee Components Refactor**

- **Replaced Avatar with AvatarProfile:** Streamlined assignee rendering across components
  - **AssigneeGroupEditor:**
    - Removed `getAvatarProps()` helper function
    - Replaced `Avatar` + `v-user-profile` directive with `AvatarProfile` component
    - Simplified template with cleaner props: `:user` and `:show-profile="true"`
    - Removed unused imports: `AvatarProps`, `OptionItemType`, `userProfileDirective`
  - **AssigneeGroupRenderer:**
    - Replaced `Avatar` + `v-user-profile` directive with `AvatarProfile` component
    - Removed complex profile configuration from template
    - Simplified avatar rendering with just `:user` and `:show-profile="true"` props
    - Removed `readOnly`, `name`, `initial`, `id`, `profile_image`, `color`, and `size` props (now handled internally)
    - Removed `apiUpdateFunction` prop (no longer needed with AvatarProfile)

### 🔧 Technical Improvements

**Code Quality**

- Reduced code duplication in assignee components
- Better separation of concerns with dedicated `AvatarProfile` component
- Cleaner component templates with fewer props
- Removed redundant helper functions

**Component Architecture**

- Centralized user profile display logic in `AvatarProfile` component
- Consistent user profile behavior across all assignee components
- Improved maintainability by reducing prop drilling

**CSS Variables**

- Added `--font-size` CSS variable in Avatar component for dynamic styling
- Better control over text sizing in avatar displays

### 📦 Dependencies

- No dependency changes in this release

---

[0.0.119]: https://github.com/arbocollab/arbo-plugins/releases/tag/v0.0.119

## [0.0.118] - 2026-02-03

### 🚀 Features

**AG Grid Cell Updates**

- **New useRowUpdateComposable:** Introduced centralized composable for AG Grid row updates
  - Handles cell data updates with proper row node management
  - Implements forced cell refresh for immediate UI updates
  - Better logging for debugging cell update operations
  - Improved separation of concerns for grid data management

**Metric Editor Enhancements**

- **MetricEditorWrapper Improvements:**
  - Integrated with `useRowUpdateComposable` for standardized cell updates
  - Added optimistic UI updates (shows `undefined` during API call)
  - Improved error handling with value reversion on failure
  - Better state management for loading states
  - Removed duplicate grid API update logic
  - Added `stopEditing()` call at the start of `handleUpdate`

- **MetricEditorInput Updates:**
  - Added `autoEmit` prop (defaults to `true`) for flexible update behavior
  - Improved blur event handling - only emits when `autoEmit` is enabled
  - Better cancel behavior - now calls `focusout()` instead of emitting `handleChange`
  - Enhanced TypeScript emit definitions for type safety
  - Improved console logging for debugging

**Core Table Improvements**

- **Vue3CellWrapper Refactor:**
  - Changed `refresh()` method to return `true` instead of `false`
  - Allows AG Grid to properly handle cell updates
  - Added JSDoc documentation for the refresh method
  - Improved cell renderer lifecycle management

- **Vue3Wrapper Enhancements:**
  - Added deep watcher for value changes with detailed logging
  - Better debugging capabilities for component prop changes
  - Improved reactivity tracking

**Input Components**

- **InputText Component:**
  - Added `focusout()` method for programmatic blur control
  - Better integration with editor wrappers
  - Improved focus management

**API & Services**

- **ItemService Updates:**
  - Fixed search parameter: `name_or_code_like` → `search`
  - Added `undefined` check to prevent empty query parameters
  - Improved consistency with backend API expectations

**Metric Renderer**

- **MetricRenderer Improvements:**
  - Enhanced `initValue()` function with old value parameter for debugging
  - Added deep watching on `props.value` for better reactivity
  - Improved logging to track value initialization

**Data Management**

- **useRowUpdater Cleanup:**
  - Removed excessive console logging in row update operations
  - Cleaner code output for production
  - Maintained all functionality while reducing noise

### 🐛 Bug Fixes

**Cell Refresh Issues**

- Fixed AG Grid cells not updating after metric value changes
- Fixed refresh mechanism by properly returning `true` from `refresh()` method
- Fixed race conditions in cell data updates

**Search Functionality**

- Fixed search parameter naming in API calls
- Fixed query parameter serialization to avoid empty values

**Editor Behavior**

- Fixed blur events firing when they shouldn't in `MetricEditorInput`
- Fixed cancel button not properly blurring input
- Fixed `autoEmit` prop not being respected

### 🔧 Technical Improvements

**Code Quality**

- Removed unused imports in `CellFactory` (removed `MetricType` and `MetricEditor`)
- Cleaned up console.log statements in `useRowUpdater`
- Better TypeScript type safety in composables
- Improved code organization

**Performance**

- Reduced unnecessary cell refreshes
- Better change detection with deep watchers
- Optimized grid update operations

**Development Experience**

- Enhanced logging for debugging cell updates
- Better error messages and warnings
- Improved composable reusability
- Added JSDoc documentation

---

### ⚠️ Breaking Changes

**Vue3CellWrapper Refresh Behavior:**

- `refresh()` method now returns `true` instead of `false`
- This allows AG Grid to properly manage cell updates
- Custom cell renderers may need to handle refresh differently

**API Search Parameter:**

- `name_or_code_like` changed to `search` in ItemService
- Ensure backend API supports the `search` parameter

---

### 📦 Dependencies

This release works with:

- `@arbocollab/ag-grid-ui-components@latest`
- AG Grid Community Edition v34.3.1
- Vue 3.5.13

---

## [0.0.117] - 2026-02-03

### 🐛 Bug Fixes

**API Services**

- **ItemService:** Fixed search parameter naming
  - Changed `name_or_code_like` to `search` for better API consistency
  - Added undefined checks for cleaner query parameters

**Core Table**

- **CellFactory:** Removed unused imports for cleaner code

---

## [0.0.116] - 2026-02-03

### 🎨 UI/UX Improvements

**Metric Editor**

- **MetricEditor:** Improved default display label
  - Changed empty state from "Select one" to "-" for cleaner appearance
  - Better visual consistency across empty metric cells

---

## [0.0.115] - 2026-02-03

### 🐛 Bug Fixes

**Metric Editor**

- **MetricEditor:** Fixed focus timing issues
  - Added 300ms delay to `handleFocus()` in `onMounted` lifecycle
  - Prevents premature focus before component is fully rendered

**MetricEditorInput**

- Removed `.stop.prevent` modifiers from blur event
  - Allows proper event propagation
  - Fixes editor closing behavior

---

## [0.0.114] - 2026-02-02

### 🚀 Features

**Rating Component**

- **RatingComponent:** Enhanced keyboard navigation
  - Added arrow key support (left/right, up/down) for rating changes
  - Added `tabindex="0"` to container for keyboard accessibility
  - Individual stars now have `tabindex="-1"` to prevent multiple tab stops
  - Added `ratingRef` template ref for programmatic focus control
  - Implemented `decreaseRating()` and `increaseRating()` methods

**Package Management**

- Updated cleanup script spacing in package.json

---

## [0.0.113] - 2026-02-02

### 🎨 UI/UX Improvements

**Metric Editor**

- **MetricEditor:** Added empty line for better code formatting

**MetricUpdateButton**

- Simplified `resetFocus()` logic
  - Removed unnecessary `openIndex` null check
  - Cleaner focus reset behavior

---

## [0.0.112] - 2026-02-02

### 🐛 Bug Fixes

**Display Components**

- **DisplayWrapper:** Commented out error border color
  - Temporarily disabled red error border (`#ef4444`)
  - Improves visual consistency while error handling is refined

---

## [0.0.111] - 2026-01-30

### 🚀 Features

**Storybook Configuration**

- **Enhanced Development Environment:** Added SessionStorageHelper configuration in Storybook preview
  - Pre-configured workspace code (`w:yngazem`)
  - Set up API endpoints for dev environment:
    - API_BASE_URL: `https://api.dev.arbocollab.com/api`
    - BASE_URL: `https://app.dev.arbocollab.com`
    - BASE_REVIEW_URL: `https://review.dev.arbocollab.com`
    - ASSET_URL configured
  - Improved development experience with pre-populated session data

**Metric Components**

- **MetricEditor Enhancements:**
  - Added tooltip support for update button ("Update")
  - Extended props to include `CellParamsCore` for better integration
  - Added `disabled` and `readOnly` prop support
  - Implemented `isMetricReadonly` computed property for permission-based access control
  - Auto-detects formula metrics and makes them read-only
  - Checks `auth_permission.permission` level (requires level 2 for editing)
  - Improved wrapper state management with proper disabled/readOnly handling

- **MetricRenderer Improvements:**
  - Added conditional rendering for suffix section based on `disabled` prop
  - Better separation of display-only vs. editable states
  - Changed action button visibility: now shows on hover instead of `showActions`
  - Simplified hover state management
  - Removed `ICON_SIZE` from composable return

**Display Components**

- **DisplayWrapper:** Added `tabIndex` prop support for better keyboard navigation

**Button Components**

- **Button:** Added focus management
  - Exposed `buttonRef` template ref
  - Added `focus()` method for programmatic focus control
  - Better integration with parent components

### 📦 Version Updates

- **@arbocollab/ag-grid-ui-components:** Updated from `0.0.14` to `0.0.21`
- **@arbocollab/arbo-plugin-item-table:** Updated from `0.0.110` to `0.0.111`

### 🔧 Technical Improvements

**Type Safety**

- Better prop typing with `CellParamsCore` integration in MetricEditor
- Improved permission checking with proper type guards
- Enhanced computed property definitions

**Code Quality**

- Cleaner component structure
- Better composable organization
- Improved state management patterns

---

## [0.0.110] - 2026-01-30

### 🚀 Features

**Input Components**

- **Enhanced InputText Component:** Complete rewrite with advanced input handling
  - Added support for multiple input types: `text`, `number`, `email`, `url`, `tel`
  - Implemented auto-emit mode with configurable debounce delay (default 300ms)
  - Added intelligent formatters and validators for each input type
  - Number inputs now limited to 17 digits (excluding decimal point and minus sign)
  - Text inputs capped at 255 characters (configurable via maxLength)
  - Email and URL inputs automatically remove spaces
  - Telephone inputs only allow valid phone characters
  - Improved keyboard navigation (Enter to submit, Escape to cancel/blur)
  - Fixed cursor jumping issues during character deletion
  - Clear button now prevents blur event and maintains focus

**Metric Components**

- Enhanced metric editing capabilities
- Better integration with AG Grid cell editors

---

## [0.0.111] - 2026-01-30

### 🚀 Features

**Storybook Configuration**

- **Enhanced Development Environment:** Added SessionStorageHelper configuration in Storybook preview
  - Pre-configured workspace code (`w:yngazem`)
  - Set up API endpoints for dev environment
  - Added base URLs for main app, review, and assets
  - Improved development experience with pre-populated session data

**Metric Components**

- **MetricEditor Enhancements:**
  - Added tooltip support for update button ("Update")
  - Extended props to include `CellParamsCore` for better integration
  - Added `disabled` and `readOnly` prop support
  - Implemented `isMetricReadonly` computed property for permission-based access control
  - Auto-detects formula metrics and makes them read-only
  - Checks `auth_permission.permission` level (requires level 2 for editing)
  - Improved wrapper state management with proper disabled/readOnly handling

- **MetricRenderer Improvements:**
  - Added conditional rendering for suffix section based on `disabled` prop
  - Prevents interaction buttons from showing when metric is disabled
  - Better separation of display-only vs. editable states

### 📦 Version Updates

- **@arbocollab/ag-grid-ui-components:** Updated from `0.0.14` to `0.0.15`
- **@arbocollab/arbo-plugin-item-table:** Updated from `0.0.110` to `0.0.111`

### 🔧 Technical Improvements

**Type Safety**

- Better prop typing with `CellParamsCore` integration in MetricEditor
- Improved permission checking with proper type guards
- Enhanced computed property definitions

**Development Experience**

- Storybook now auto-configures session storage for testing
- Reduced manual setup needed for component development
- Consistent environment configuration across stories

**Security & Permissions**

- Proper permission level checks before allowing edits
- Formula metrics automatically marked as read-only
- Respects both component-level and permission-level restrictions

### 🎨 UI/UX Improvements

- **Better User Feedback:**
  - Tooltip on update button provides clear action indication
  - Disabled/read-only states properly communicated visually
  - Hidden interaction buttons when editing is not allowed

- **Permission-Based Interactions:**
  - Users with insufficient permissions see read-only view
  - Formula-based metrics cannot be manually edited
  - Cleaner interface when editing is disabled

---

### Dependencies

This release works with:

- `@arbocollab/ag-grid-ui-components@0.0.15`
- Storybook development environment with pre-configured session storage
- Dev environment URLs:
  - API: `https://api.dev.arbocollab.com/api`
  - App: `https://app.dev.arbocollab.com`
  - Review: `https://review.dev.arbocollab.com`
  - Assets: `https://arbodev.s3.ap-south-1.amazonaws.com`

---

## [0.0.110] - 2026-01-30

### 🚀 Features

**Input Components**

- **Enhanced InputText Component:** Complete rewrite with advanced input handling
  - Added support for multiple input types: `text`, `number`, `email`, `url`, `tel`
  - Implemented auto-emit mode with configurable debounce delay (default 300ms)
  - Added intelligent formatters and validators for each input type
  - Number inputs now limited to 17 digits (excluding decimal point and minus sign)
  - Text inputs capped at 255 characters (configurable via maxLength)
  - Email and URL inputs automatically remove spaces
  - Telephone inputs only allow valid phone characters
  - Improved keyboard navigation (Enter to submit, Escape to cancel/blur)
  - Fixed cursor jumping issues during character deletion
  - Clear button now prevents blur event and maintains focus

**Metric Components**

- **New MetricEditorInput:** Dedicated component for metric number inputs
  - Supports dynamic decimal place formatting based on metric config
  - Implements proper value caching and revert on Escape
  - Enhanced blur/enter/clear event handling
  - Auto-focuses on mount for better UX

- **Enhanced MetricEditorDropdown:**
  - Added empty option ("-") for clearing values
  - Improved tooltip support for long metric names
  - Better overflow handling with max-width constraints

- **MetricEditor Refactor:**
  - Replaced generic InputText with specialized MetricEditorInput
  - Simplified metric type handling
  - Improved confirm/cancel logic

- **MetricEditorWrapper Improvements:**
  - Added smart value comparison to prevent unnecessary API calls
  - Proper handling of null/clear operations with `clear` flag
  - Enhanced row data updates with forced cell refresh
  - Better logging for debugging

**Metric Rendering**

- **Large Number Support:** Fixed JavaScript precision issues
  - Numbers with >16 digits now kept as strings to preserve precision
  - Custom formatting for large numbers without precision loss
  - Prevents `22222222222222222` from becoming `22222222222222224`

- **Enhanced MetricRenderer:**
  - Improved tooltip behavior with `bypassOverflowCheck` for morpheme values
  - Better formatted value display with proper morpheme handling
  - Fixed string-to-number conversion for large values

**Bulk Operations**

- **New useMetricUpdate Composable:** Centralized metric update logic
  - Handles both single and bulk metric updates
  - Supports clear operations with proper API payload construction
  - Integrated callback system for post-update actions
  - Better error handling and logging

- **Enhanced BulkUpdate Component:**
  - Refactored action handling with switch statement for clarity
  - Improved loading states and error handling
  - Better integration with MetricUpdateButton

- **MetricUpdateButton Improvements:**
  - Integrated with new useMetricUpdate composable
  - Fixed prop naming: `ids` → `selectedIds`
  - Removed duplicate logic, delegated to composable
  - Cleaner emit handling

**Search & Filter**

- **SearchBox Enhancements:**
  - Now uses `auto-emit` mode for real-time search
  - Integrated with standardized debounce delay constant
  - Removed manual debounce logic in favor of InputText's built-in handling
  - Better cancel/escape key behavior

- **SearchList Improvements:**
  - Dynamic min-height based on content state
  - Improved empty/no-results states styling
  - Better scrollable detection (>8 items)
  - Enhanced loading skeleton (8 items instead of 7)
  - Cleaner state management with reduced code complexity

**API & Services**

- **ItemService Updates:**
  - Fixed typo: `builkMetricUpdate` → `bulkMetricUpdate`
  - Added `clear` parameter support for metric updates
  - Automatic clear flag when value is null
  - Better payload construction

- **API Configuration:**
  - Updated endpoint naming for consistency
  - Fixed method signatures across the codebase

**Data Management**

- **useRowUpdater Enhancements:**
  - Only updates fields when data exists (no overwrites of missing data)
  - Dynamic column refresh (only refreshes changed columns)
  - Better handling of assignees, permissions, and metric values
  - Removed hardcoded column refreshes
  - Improved logging for debugging

- **useItems Improvements:**
  - Separated metric value fetching from other data fetching
  - Better async handling of post-fetch operations
  - Reduced race conditions in data updates

**UI/UX Improvements**

- **Button Component:**
  - Optimized variant detection with Set instead of array
  - Cleaner loading state handling
  - Removed commented-out code

- **FileUploader:**
  - Fixed error state logic (proper validation)
  - Cleaner emit types with function syntax

- **ImportVisual:**
  - Removed min-height constraint for better responsiveness
  - Cleaner prop definitions

- **Calendar Components:**
  - Added proper Mode type definition
  - Improved type safety
  - Removed unused hover styles

### ⚡ Performance & Code Quality

**Constants & Configuration**

- Increased `STANDARD_DEBOUNCE_DELAY` from 300ms to 800ms for better UX
- Centralized debounce delay across all components
- Removed duplicate debounce implementations

**Code Cleanup**

- Removed obsolete BulkUpdate Storybook story
- Cleaned up unused imports across multiple files
- Fixed ESLint configuration for consistent semicolon usage
- Removed commented-out code blocks
- Improved code formatting and consistency
- Better TypeScript type definitions

**Refactoring**

- Simplified conditional logic throughout codebase
- Replaced if-else chains with switch statements
- Used optional chaining and nullish coalescing
- Better function composition and reusability
- Improved variable naming for clarity

### 🐛 Bug Fixes

**Input Handling**

- Fixed cursor position jumping during input deletion
- Fixed blur event firing when clearing input
- Fixed Escape key behavior in auto-emit mode (now blurs instead of reverting)
- Fixed number input precision for large numbers (>16 digits)

**Metric Updates**

- Fixed `bulkMetricUpdate` API method name typo
- Fixed metric clear operations not working properly
- Fixed unnecessary API calls when value unchanged
- Fixed row data not updating after metric change

**Data Updates**

- Fixed assignees being overwritten when not in response
- Fixed permissions being cleared when not provided
- Fixed metric values being reset inappropriately

**UI/UX**

- Fixed SearchList height issues with empty states
- Fixed loading skeleton count inconsistency
- Fixed tooltip overflow checks for metric morphemes
- Fixed error state in file uploader validation

### 🔧 Technical Improvements

**Type Safety**

- Better TypeScript definitions for emit signatures
- Proper Mode type for calendar navigation
- Improved API response types
- Cleaner generic type usage

**Performance**

- Reduced unnecessary re-renders with smarter computed properties
- Optimized cache handling in remote file composables
- Better debounce strategies across components
- Removed v-memo where not needed

**Testing & Development**

- Better console logging for debugging
- Improved error messages
- Enhanced development experience with better type hints

---

### Breaking Changes

⚠️ **API Method Rename:**

- `builkMetricUpdate` → `bulkMetricUpdate` (typo fix)

⚠️ **Prop Changes:**

- `MetricUpdateButton`: `ids` prop renamed to `selectedIds`

⚠️ **Behavior Changes:**

- Escape key in auto-emit mode now blurs input instead of reverting value
- Debounce delay increased from 300ms to 800ms globally

---

## [0.0.103] - 2026-01-30 1:36 PM

### 🚀 Features

- Enhance metric editing capabilities and improve UI components
- Added metric type checks in Vue3CellWrapper to handle popup behavior based on metric types.
- Updated item-table.vue to allow Enter key confirmation during editing.
- Modified SearchBoxProps to accept null as a valid modelValue.
- Introduced MetricType for better type handling in metric configurations.
- Enhanced metric editing components to support dropdown and input types.
- Refactored MetricEditor to use new MetricEditorDropdown and MetricEditorInput components.
- Improved validation logic for metric values in helper functions.
- Updated styles for better UI consistency and user experience.
- Added new components for handling metric dropdowns and inputs.
- Implemented better state management for metric updates in item-table components.

## [0.0.102] - 2026-01-29

### **🚀 New Features**

**Filtering & Search**

- **Advanced Filter Components:** Added FilterAssignee, FilterArchiveStatus, FilterDateRange, and FilterStatus with improved deep watchers, data exposure methods (getData, clear), and multi-select support.
- **Complex Logic Support:** Introduced new condition-combine types and behaviors for more complex filtering scenarios.
- **Dropdown Enhancements:** Filter components now expose methods and emit updates for tighter integration with parent components. SearchList now supports extra items with query context.

**UI Components**

- **RatingRenderer:** Added a new component to display ratings directly within the item table.
- **Multi-Date Support:** Updated Calendar.vue, DateInput.vue, MainCalendar.vue, and the useDatePicker composable to handle multiple start/due dates.
- **Column Management:** Enhanced the column manager to persist configuration and emit change events on updates.

**Core & API**

- **Caching System:** Implemented useIconMemoryCache and enhanced useImageCache / useRemoteFiles to significantly reduce duplicate network requests for avatars and icons.
- **ItemService API:** Added getMe, getWorkspaces, and getEntityUserRoles methods, along with improved API configuration.

### **⚡ Improvements & Performance**

**Performance Optimization**

- **Grid Rendering:** Debounced grid template calculations in DisplayWrapper to improve scroll performance.
- **Data Fetching:** Optimized useItems fetching logic and improved idempotency in Vue3CellWrapper.
- **Asset Management:** Reduced console noise and cleaned up unused imports across the codebase.

**UX & Polish**

- **Loading States:** Refined skeleton screens and loading styles; migrated the loading directive to a class-based implementation for smoother transitions.
- **Filter UI:** Improved FilterBox styling and active states. The isSearchActive property now accounts for selectedAssignees.
- **Interaction Design:** Enhanced focus handling, cursor styles, and button hover states across filter components.
- **Visual Consistency:** Adjusted layouts in MainCalendar and CalendarNavigationControl for better responsiveness.

### **🐛 Bug Fixes**

- **MiniPeopleCard:** Fixed Ctrl+Click behavior.
- **Renderers:** Resolved loading state edge-cases in useMetricRenderer and related components.
- **AssigneeGroup:** Added explicit empty array checks to prevent rendering errors.
- **Metric Generation:** Improved the generation logic for people/insight links.

### **🔧 Refactoring & Chores**

- **Code Cleanup:** Removed obsolete tests (Button, DisplayWrapper, MetricRender) and deleted unused files.
- **State Management:** Refactored useMetricRenderer for better icon handling and state clarity.
- **Reusability:** Centralized the "clear filter" functionality for better code reuse.
- **Versioning:** Routine package version bumps and dependency updates.
- **Configuration:** Added getAPIDomain helper and updated base-config endpoints.

## [0.0.101] - 2026-01-28

### 🚀 Features

- enhance README.md with additional badges and features
- add CHANGELOG.md to publish folder

## [0.0.100] - 2026-01-28

### 🚀 Features

- Updated TypeScript definitions in env.d.ts for consistent formatting.
- Adjusted ESLint configuration to maintain consistent semicolon usage.
- Reformatted index.html for improved readability and structure.
- Added a new format script to package.json for code formatting with Prettier.
- Enhanced service worker (sw.js) fetch logic for better readability.
- Reformatted tsconfig.app.json for consistent indentation.
- Updated changelog.json to include new version 0.0.99 with relevant changes.
- Integrated tooltip directive in item-table.vue for better user experience.
- Improved Icon.vue component by optimizing caching logic and style handling.
- Refactored Visual.vue to enhance caching and image retrieval logic.
- Enhanced EmptyData.vue to provide clearer messaging for search and filter states.
- Refactored useRemoteFiles.ts to streamline caching and fetching logic for remote files.

---

## [0.0.98] - Beta

### 🚀 Features

- Update version to 0.0.96

---

## [0.0.96] - Beta

### 🚀 Features

- Add MetricEditorWrapper component
- Enhance column configurations with suppressMovable property

---

## [0.0.95] - Beta

### 🚀 Features

- Enhance MetricRenderer with number formatting
- Adjust MoreOptionItem styling
- Remove unused description in useSceneAction

---

## [0.0.91] - Beta

### 🚀 Features

- Adjust FilterAssignee component styles
- Enhance wrapper styling

---

## [0.0.89] - Beta

### 🚀 Features

- Enhance AgTable column definition handling
- Improve column manager logging
- Refine UI components with style adjustments

---

## [0.0.88] - Beta

### 🚀 Features

- Enhance CellRendererFactory with dynamic cellClass
- Improve AgTable column sync functionality
- Refine scene action permissions

---

## [0.0.87] - Beta

### 🚀 Features

- Enhance CellFactory with editable property
- Adjust MetricRenderer logic
- Improve FilterRow styling

---

## [0.0.86] - Beta

### 🚀 Features

- Enhance calendar components with navigation functionality
- Dropdown improvements

---

## [0.0.85] - Beta

### 🚀 Features

- Enhance Metric components with new MetricEditor
- Improved dropdown handling
- UI styling adjustments

---

## [0.0.83] - Beta

### 🚀 Features

- Enhance dropdown components with bordered styling
- Adjust layout properties for improved UI consistency

---

## [0.0.82] - Beta

### 🚀 Features

- Refactor checkbox column properties
- Enhance Metric components with improved dropdown handling and styles

---

## [0.0.80] - Beta

### 🚀 Features

- Enhance UI components with improved styles and consistency

---

## [0.0.79] - Beta

### 🚀 Features

- Enhance saveColumnConfig logic for better source handling

---

## [0.0.77] - Beta

### 🚀 Features

- Integrate metric store
- Enhance various components with improved functionality

---

## [0.0.73] - Beta

### 🚀 Features

- Adjust component styles
- Improve layout for better UI consistency

---

## [0.0.72] - Beta

### 🚀 Features

- Enhance filter functionality with new condition combine type
- Improve UI components

---

## [0.0.71] - Beta

### 🚀 Features

- Enhance filter components with improved focus handling and cursor styles

---

## [0.0.69] - Beta

### 🚀 Features

- Enhance various components with improved functionality and performance

---

## [0.0.68] - Beta

### 🚀 Features

- Refactor filter parameters for improved clarity and functionality

---

## [0.0.66] - Beta

### 🚀 Features

- Enhance filter components with new data handling methods

---

## [0.0.62] - Beta

### 🚀 Features

- Enhance MainCalendar styles for improved UI responsiveness

---

## [0.0.57] - Beta

### 🚀 Features

- Enhance refreshTable functionality with async operations
- Add loading state management
- Improve skeleton loading styles

---

## [0.0.51] - Beta

### 🚀 Features

- Enhance refreshTable functionality
- Clean up unused imports

---

## [0.0.47] - Beta

### 🚀 Features

- Enhance people insight link generation
- Fix loading state in useMetricRenderer

---

## [0.0.46] - Beta

### 🚀 Features

- Add getWorkspaces method to ItemService
- Enhance API configuration
- Improve permission handling in CellFactory

---

## [0.0.43] - Beta

### 🚀 Features

- Add getMe method to ItemService
- Implement user store for managing user state
- Enhance FilterBox to utilize user ID

---

## [0.0.37] - Beta

### 🚀 Features

- Update isSearchActive computed property to include selectedAssignees
- Enhance FilterBox styling for active state

---

## [0.0.36] - Beta

### 🚀 Features

- Enhance useItems to ensure all itemIds are included
- Update item-table.vue to allow column virtualization

---

## [0.0.35] - Beta

### 🚀 Features

- Update downloadExcel function to use globalThis
- Improve event handling in ItemService
- Enhance useItems for missing itemIds

---

## [0.0.33] - Beta

### 🚀 Features

- Update DateRule component spacing in PopupCreateScenes and PopupOverwriteScenes

---

## [0.0.32] - Beta

### 🚀 Features

- Update PopupOverwriteScenes to emit import-success event
- Handle post-success actions in item-table

---

## [0.0.31] - Beta

### 🚀 Features

- Update PopupCreateScenes to emit import-success event
- Handle post-success actions
- Add console log for table refresh

---

## [0.0.30] - Beta

### 🚀 Features

- Update DateRule component with tooltip directive
- Adjust z-index values in PopupLayout, Snackbar, and usePopup

---

## [0.0.28] - Beta

### 🚀 Features

- Update DateRule, PopupCreateScenes, and PopupOverwriteScenes for improved user guidance

---

## [0.0.27] - Beta

### 🚀 Features

- Enhance loading states in buttons and file uploader
- Add loading prop to Button component
- Improve loading directive

---

## [0.0.25] - Beta

### 🚀 Features

- Update DisplayWrapper component to return '100%' for grid template calculation

---

## [0.0.24] - Beta

### 🚀 Features

- Implement bulk update store
- Integrate with item table and UI components for enhanced selection management

---

## [0.0.22] - Beta

### 🚀 Features

- Refactor BulkUpdate component by removing unused elements

---

## [0.0.21] - Beta

### 🚀 Features

- Enhance ItemService for dynamic filename handling
- Refactor PopupCreateScenes and PopupOverwriteScenes for improved modal name management
- Adjust ImportVisual component for better UI responsiveness

---

## [0.0.20] - Beta

### 🚀 Features

- Remove console logs
- Enhance error handling in ItemService, PopupCreateScenes, PopupOverwriteScenes, and StatusSelect

---

## [0.0.19] - Beta

### 🚀 Features

- Refactor DateRule component for tooltip content
- Enhance BulkUpdate and FileUploader components

---

## [0.0.18] - Beta

### 🚀 Features

- Refactor ItemService methods for workspace and entity handling
- Enhance PopupOverwriteScenes for better user feedback

---

## [0.0.17] - Beta

### 🚀 Features

- Comment out changeStatus method in ItemService
- Update notificationMessage to include success messages for bulkUpdate

---

## [0.0.15] - Beta

### 🚀 Features

- Remove default status display in PopupCreateScenes component

---

## [0.0.14] - Beta

### 🚀 Features

- Add bulkUpdateMetric method and related API configuration
- Enhance MetricUpdateButton and MetricBulkItem components

---

## [0.0.12] - Beta

### 🚀 Features

- Add redraw functionality in item-table component

---

## [0.0.8] - Beta

### 🚀 Features

- Comment out primary color in Button styles

---

## [0.0.5] - Beta

### 🚀 Features

- Update TableCustomization component to set disabled to false and readOnly to true

---

## [0.0.4] - Beta

### 🚀 Features

- Update disabled state styling in RatingComponent
- Update user status terminology from 'online' to 'active'

---

## [0.0.3] - Beta

### 🚀 Features

- Update TableCustomization and MetricRenderer components with improved props handling

---

## [0.0.1] - Initial Release

### 🚀 Core Features

- Implement core table functionality with AG Grid integration
- Implement cursor-based pagination for item fetching
- Implement ItemService and refactor API structure
- Implement SessionStorageHelper for session storage management
- Implement user service and error handling with API response types
- Add API services with Axios configuration, endpoints, and CRUD operations

### 📦 UI Components

- Add Avatar, Button, DisplayWrapper, Icon, InputText, StatusBadge, Visual components
- Add LoadingTable component with skeleton loading UI
- Add SearchBox component for search functionality
- Add HyperLinkInlineEditor component
- Add PopupOverwriteScenes component for scene import
- Add RatingRenderer component for displaying ratings
- Add Skeleton component and enhance loading indicators
- Implement CreateNewScene component and useNewItemForm composable

### 🔧 Configuration

- Add Cypress configuration and initial test files
- Add ESLint configuration and update type imports
- Add Vite configuration for Vue application
- Add TypeScript types and configuration files
- Integrate Pinia for state management in Storybook

### 🐛 Bug Fixes

- Update package.json and pnpm-lock.yaml for dashboard and ui dependencies

---
