|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to this project will be documented in this file. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | + |
| 8 | +--- |
| 9 | + |
| 10 | +## [1.1.0] - 2025-10-28 |
| 11 | + |
| 12 | +### ✨ Major New Feature: Configuration Item (CI) Browsing |
| 13 | + |
| 14 | +Version 1.1.0 adds complete CMDB integration, allowing users to search, browse, and preview Configuration Items alongside tickets. |
| 15 | + |
| 16 | +### Added |
| 17 | + |
| 18 | +#### Core CI Functionality |
| 19 | +- **Configuration Item Browsing**: Search and preview 11 CI classes (PC, Phone, IPPhone, MobilePhone, Tablet, Printer, Peripheral, PCSoftware, OtherSoftware, WebApplication, Software) |
| 20 | +- **Unified Search for CIs**: Extended search bar to find CIs in addition to tickets with smart ranking (exact match → class priority → recency) |
| 21 | +- **Smart Picker for CIs**: Insert CI references in Talk, Text app, and comments with intelligent suggestions |
| 22 | +- **Rich CI Previews**: Paste iTop CI URLs for detailed hardware/software previews showing specs, contacts, and installed software |
| 23 | + |
| 24 | +#### New Backend Services |
| 25 | +- **ProfileService**: Automatic detection of Portal vs Power users with configurable caching (default: 30min) |
| 26 | + - Portal users: See only CIs where they are listed as contacts |
| 27 | + - Power users: Full CMDB access within iTop ACL |
| 28 | +- **PreviewMapper**: Dedicated service for transforming iTop CI data to preview DTOs with PhysicalDevice field alignment |
| 29 | +- **CacheService**: Distributed caching layer with 5 configurable TTL types for optimal performance |
| 30 | + |
| 31 | +#### Admin Features |
| 32 | +- **CI Class Configuration**: Enable/disable CI classes with 3-state control: |
| 33 | + - **Disabled**: Hidden from all users |
| 34 | + - **Forced**: Enabled for all users (no opt-out) |
| 35 | + - **User Choice**: Enabled but users can opt-out in personal settings |
| 36 | +- **Cache Management UI**: Configure cache TTLs for all cache types (CI Preview, Ticket Info, Search, Picker, Profile) |
| 37 | + - TTL ranges: 10s-1h for previews, 10s-5min for search/picker |
| 38 | + - "Clear All Cache" button for immediate refresh |
| 39 | + - Recommended settings for different deployment sizes |
| 40 | + |
| 41 | +#### Internationalization |
| 42 | +- **French Translation**: Complete fr.json with all 280 strings (formal vous-form) |
| 43 | +- **German Translations**: Both informal (de.json - Du-form) and formal (de_DE.json - Sie-form) variants |
| 44 | +- **280 Translatable Strings**: Comprehensive coverage of all UI elements, error messages, and settings |
| 45 | + |
| 46 | +#### Visual Enhancements |
| 47 | +- **11 CI Icons**: Class-specific SVG icons for all CI types (PC, phone, printer, tablet, software, etc.) |
| 48 | +- **State-Specific Ticket Icons**: Dynamic icons for closed, escalated, and deadline tickets |
| 49 | +- **Improved Mobile Responsiveness**: Better layout for CI previews on small screens |
| 50 | + |
| 51 | +### Changed |
| 52 | + |
| 53 | +#### Performance Improvements |
| 54 | +- **60-80% Reduction in API Calls**: Multi-layer caching with intelligent TTL management |
| 55 | +- **Optimized Search Queries**: Class-specific OQL optimization (e.g., Software exact→wildcard, WebApplication includes URL) |
| 56 | +- **Distributed Caching**: Redis-compatible caching for high-traffic deployments |
| 57 | + |
| 58 | +#### UI/UX Enhancements |
| 59 | +- **Admin Settings Refactored**: Converted from JavaScript-rendered to PHP-rendered HTML for better translation support and maintainability |
| 60 | + - Reduced JavaScript from 1,234 to 561 lines (54% reduction) |
| 61 | + - Server-side translations using `<?php p($l->t('...')); ?>` |
| 62 | + - Better theme compatibility and accessibility |
| 63 | +- **Search Result Ranking**: Enhanced algorithm with exact-match priority, class weighting, and recency scoring |
| 64 | +- **Reference Provider**: Extended URL detection to support CI URLs in addition to ticket URLs |
| 65 | + |
| 66 | +#### API & Architecture |
| 67 | +- **ItopAPIService**: New methods for CI queries (`searchCIs()`, `getCIPreview()`) with Person ID filtering |
| 68 | +- **ItopSearchProvider**: Extended to search both tickets and CIs with profile-aware filtering |
| 69 | +- **ItopReferenceProvider**: Enhanced to detect and render rich previews for CI URLs |
| 70 | +- **Application.php**: Centralized `SUPPORTED_CI_CLASSES` constant and CI class state management methods |
| 71 | + |
| 72 | +### Fixed |
| 73 | +- **CI Field Alignment**: Corrected field lists to match iTop data model schema (removed invalid `last_update` field) |
| 74 | +- **Vite Output Directory**: Fixed build configuration to correctly output to `js/` instead of `js/vue/` |
| 75 | +- **Translation Loading**: Resolved issue where JavaScript translations weren't loading in admin settings |
| 76 | + |
| 77 | +### Technical Details |
| 78 | + |
| 79 | +#### New Configuration Keys |
| 80 | +- `cache_ttl_ci_preview`: CI preview cache TTL (default: 60s) |
| 81 | +- `cache_ttl_profile`: Profile cache TTL (default: 1800s / 30min) |
| 82 | +- `cache_ttl_search`: Search results cache TTL (default: 30s) |
| 83 | +- `cache_ttl_picker`: Smart picker cache TTL (default: 60s) |
| 84 | +- `ci_class_config`: JSON array of CI class states (disabled/forced/user_choice) |
| 85 | + |
| 86 | +#### Database Changes |
| 87 | +None - All new configuration stored in existing `oc_appconfig` table. |
| 88 | + |
| 89 | +#### Migration Notes |
| 90 | +- **No user action required**: Existing users continue to work with ticket-only functionality |
| 91 | +- **Admin opt-in**: CI classes are disabled by default; admins must explicitly enable them |
| 92 | +- **Cache warmup**: First CI search may be slower as caches populate |
| 93 | + |
| 94 | +--- |
| 95 | + |
| 96 | +## [1.0.0] - 2025-10-18 |
| 97 | + |
| 98 | +### Initial Release |
| 99 | + |
| 100 | +Complete iTop ITSM integration for Nextcloud with ticket management functionality. |
| 101 | + |
| 102 | +### Added |
| 103 | +- **Dynamic Reference Provider**: Rich link previews for iTop ticket URLs across all Nextcloud apps |
| 104 | +- **Unified Search Integration**: Search iTop tickets (UserRequest, Incident) from Nextcloud search bar |
| 105 | +- **Smart Picker**: Insert ticket references in Text app, Talk, and comments with suggestions |
| 106 | +- **Dashboard Widget**: View ticket counts and recent tickets at a glance |
| 107 | +- **Notification System**: Optional notifications for new ticket assignments with background job |
| 108 | +- **Admin Settings Panel**: Configure iTop URL, display name, and application token with connectivity testing |
| 109 | +- **Personal Settings Panel**: One-time personal token validation, user profile display, and feature toggles |
| 110 | +- **Dual-Token Security Architecture**: |
| 111 | + - Application token (admin-configured, encrypted) |
| 112 | + - Personal token (user-provided, one-time verification, never stored) |
| 113 | + - Person ID mapping for data isolation |
| 114 | +- **State-Specific Ticket Icons**: Visual indicators for ticket status (open, closed, escalated, deadline) |
| 115 | +- **Profile Detection**: Automatic filtering based on user's iTop profile (Portal vs Power user) |
| 116 | +- **English Localization**: Base translation support (119 strings) |
| 117 | + |
| 118 | +### Security |
| 119 | +- Encrypted token storage using Nextcloud ICrypto service |
| 120 | +- Personal tokens never persisted (one-time verification only) |
| 121 | +- All API queries filtered by Person ID to prevent data leakage |
| 122 | +- Portal user support via dual-token architecture |
| 123 | + |
| 124 | +### Technical Details |
| 125 | +- Nextcloud 30.0+ compatibility |
| 126 | +- PHP 8.1+ required |
| 127 | +- iTop 3.0+ with REST API enabled |
| 128 | +- Vue.js 3 for rich preview widgets |
| 129 | +- Comprehensive error handling and logging |
| 130 | + |
| 131 | +--- |
| 132 | + |
| 133 | +## Legend |
| 134 | +- **Added**: New features and functionality |
| 135 | +- **Changed**: Changes to existing functionality |
| 136 | +- **Fixed**: Bug fixes |
| 137 | +- **Security**: Security improvements |
| 138 | +- **Deprecated**: Features marked for removal |
| 139 | +- **Removed**: Removed features |
| 140 | + |
| 141 | +--- |
| 142 | + |
| 143 | +For detailed technical documentation, see [docs/](docs/). |
| 144 | + |
| 145 | +For migration guides and breaking changes, see [docs/changelog-notes.md](docs/changelog-notes.md). |
0 commit comments