# Changelog

All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.

## [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

---
