- Add folder button (24x16) to active tab for quick project directory access
- Implement custom tab widgets with dynamic margins (active: 8px/2px, inactive: 12px/8px)
- Replace default tabs with custom layout containing centered text and optional button
- Add onTabChanged() handler to show/hide button based on active tab
- Remove extra spaces from tab names and add tooltips
UI improvement: provides one-click access to project directory directly from tabs.
Performance: custom layout with optimized spacing and responsive button visibility.
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.
- 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