Skip to content

Commit 977a38e

Browse files
committed
Release v1.1.0: Complete CMDB integration with Configuration Item browsing
This release adds comprehensive CI functionality alongside existing ticket management: ✨ Major Features: - 11 CI classes (PC, Phone, Tablet, Printer, Software, WebApplication, etc.) - Unified search extended to find CIs alongside tickets - Smart picker suggestions for CIs in Talk/Text - Rich previews for CI URLs with hardware/software specs - Profile-aware permissions (Portal vs Power users) 🚀 New Backend Services: - ProfileService: Auto-detect Portal/Power users (30min cache default) - PreviewMapper: Transform iTop CI data to preview DTOs - CacheService: Distributed caching with configurable TTLs (5 types) ⚙️ Admin Features: - CI class enable/disable with 3-state control (disabled/forced/user-choice) - Cache management UI with configurable TTLs and clear cache button - Performance tuning for all cache types 🌍 Internationalization: - French translation (280 strings, formal vous-form) - German translations (informal Du & formal Sie variants) 📊 Performance: - 60-80% reduction in API calls via multi-layer caching - Class-specific OQL query optimization - Redis-compatible distributed caching support 🔧 Improvements: - Admin settings refactored to PHP-rendered HTML for better i18n - State-specific ticket icons (closed/escalated/deadline) - Enhanced search ranking (exact match → class weighting → recency) - Mobile-responsive CI preview layouts See CHANGELOG.md for complete details.
2 parents 1113c04 + ae39b0f commit 977a38e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+7357
-1123
lines changed

.gitignore

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ build/
1818
.php-cs-fixer.cache
1919

2020
# Vite build outputs (reference widget)
21-
# Note: admin-settings.js and personal-settings.js are NOT generated by vite
22-
# They are manually created and must be tracked in git
23-
js/*.mjs
24-
js/*.mjs.map
21+
# Note: Vue components (.mjs) in js/ are tracked for deployment
22+
# admin-settings.js and personal-settings.js are manually created and tracked
23+
# Exclude source maps and vendor license to save repository space
24+
js/**/*.map
2525
js/vendor.LICENSE.txt
2626

2727
# IDE files
@@ -43,7 +43,9 @@ Thumbs.db
4343
coverage/
4444
junit.xml
4545
.phpunit.result.cache
46+
phpunit.xml
4647
docs/testing.md
48+
tests/
4749

4850
# Temporary files
4951
*.tmp

CHANGELOG.md

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
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

Comments
 (0)