96 lines
3.5 KiB
Markdown
96 lines
3.5 KiB
Markdown
# Release v1.2.3 (2026-02-10)
|
||
|
||
## Summary
|
||
|
||
Unified synchronization functionality with event-driven UI updates. Resolved user confusion about duplicate sync buttons by implementing a single sync source with automatic page refreshes.
|
||
|
||
## Changes
|
||
|
||
### Main Feature: Sync Event System
|
||
|
||
- **Added `sync-completed` event** in base.html's `syncAction()` function
|
||
- Dispatched after successful `/api/sync/all` or `/api/sync/push`
|
||
- Includes endpoint and response data in event detail
|
||
- Enables pages to react automatically to sync completion
|
||
|
||
### Configs Page (`configs.html`)
|
||
|
||
- **Removed "Импорт с сервера" button** - duplicate functionality no longer needed
|
||
- **Updated layout** - changed from 2-column grid to single button layout
|
||
- **Removed `importConfigsFromServer()` function** - functionality now handled by navbar sync
|
||
- **Added sync-completed event listener**:
|
||
- Automatically reloads configurations list after sync
|
||
- Resets pagination to first page
|
||
- New configurations appear immediately without manual refresh
|
||
|
||
### Projects Page (`projects.html`)
|
||
|
||
- **Wrapped initialization in DOMContentLoaded**:
|
||
- Moved `loadProjects()` and all event listeners inside handler
|
||
- Ensures DOM is fully loaded before accessing elements
|
||
- **Added sync-completed event listener**:
|
||
- Automatically reloads projects list after sync
|
||
- New projects appear immediately without manual refresh
|
||
|
||
### Pricelists Page (`pricelists.html`)
|
||
|
||
- **Added sync-completed event listener** to existing DOMContentLoaded:
|
||
- Automatically reloads pricelists when sync completes
|
||
- Maintains existing permissions and modal functionality
|
||
|
||
## Benefits
|
||
|
||
### User Experience
|
||
- ✅ Single "Синхронизация" button in navbar - no confusion about sync sources
|
||
- ✅ Automatic list updates after sync - no need for manual F5 refresh
|
||
- ✅ Consistent behavior across all pages (configs, projects, pricelists)
|
||
- ✅ Better feedback: toast notification + automatic UI refresh
|
||
|
||
### Architecture
|
||
- ✅ Event-driven loose coupling between navbar and pages
|
||
- ✅ Easy to extend to other pages (just add event listener)
|
||
- ✅ No backend changes needed
|
||
- ✅ Production-ready
|
||
|
||
## Breaking Changes
|
||
|
||
- **`/api/configs/import` endpoint** still works but UI button removed
|
||
- Users should use navbar "Синхронизация" button instead
|
||
- Backend API remains unchanged for backward compatibility
|
||
|
||
## Files Modified
|
||
|
||
1. `web/templates/base.html` - Added sync-completed event dispatch
|
||
2. `web/templates/configs.html` - Event listener + removed duplicate UI
|
||
3. `web/templates/projects.html` - DOMContentLoaded wrapper + event listener
|
||
4. `web/templates/pricelists.html` - Event listener for auto-refresh
|
||
|
||
**Stats:** 4 files changed, 59 insertions(+), 65 deletions(-)
|
||
|
||
## Commits
|
||
|
||
- `99fd80b` - feat: unify sync functionality with event-driven UI updates
|
||
|
||
## Testing Checklist
|
||
|
||
- [x] Configs page: New configurations appear after navbar sync
|
||
- [x] Projects page: New projects appear after navbar sync
|
||
- [x] Pricelists page: Pricelists refresh after navbar sync
|
||
- [x] Both `/api/sync/all` and `/api/sync/push` trigger updates
|
||
- [x] Toast notifications still show correctly
|
||
- [x] Sync status indicator updates
|
||
- [x] Error handling (423, network errors) still works
|
||
- [x] Mode switching (Active/Archive) works correctly
|
||
- [x] Backward compatibility maintained
|
||
|
||
## Known Issues
|
||
|
||
None - implementation is production-ready
|
||
|
||
## Migration Notes
|
||
|
||
No migration needed. Changes are frontend-only and backward compatible:
|
||
- Old `/api/configs/import` endpoint still functional
|
||
- No database schema changes
|
||
- No configuration changes needed
|