Add a project directory field to AuthProfile, persist it via Storage, and automatically create the directory (defaulting to ~/AdaptixProjects/<Project> when not set).
Extend the connect dialog (DialogConnect) with a project directory input, automatic path suggestion based on project name, and an inline button to pick the directory via a folder chooser.
Update all relevant file/script save/open flows (AxScript, agents, listeners, downloads, screenshots, credentials, targets, file browser, and script BridgeApp prompts) to use AuthProfile::GetProjectDir() as their initial directory.
The layout of the connect dialog has been restructured: the fields and buttons are grouped into a separate widget on the left, the project list has been moved to the right column, and their heights are aligned for a cleaner and more predictable UI.
- Add WidgetRegistry for automatic widget registration via REGISTER_DOCK_WIDGET macro
- Implement per-widget notification enable/disable in Settings dialog
- Store widget notification preferences in JSON format in database
- Use C++ RTTI for class name detection (no Q_OBJECT required in widgets)
- Cache class name in AbstractDock::getClassName() for performance
- Sort widget checkboxes alphabetically with proper spacing in UI
- Lazy initialization of DialogSettings to avoid static init order issues
- Tab blinks when content changes while inactive
- Notification clears when user scrolls to see new content
- Auto-detection for QTableWidget, QTableView, QTreeWidget, QTreeView, QTextEdit, QPlainTextEdit
- Support for manual enable/disable via setAutoNotifyEnabled()
- RAII guard (AutoNotifyGuard) for bulk data loading
- Fix tab overlap with float/close buttons using corner widget
- Add scroll buttons with proper styling
- Implement smooth mouse wheel scrolling with animation
- Hide title bar buttons when tabs visible (avoid duplication)
- Set tabs to not shrink (full text visible)