Commit Graph

27 Commits

Author SHA1 Message Date
1fbf1a55b3 fix(qt6): build fixes — semicolons, JS import paths, duplicate signal, CMake regen
- Fix semicolons between child components in 5 view files
- Fix JS import paths (../MetaBuilder/ → qmllib/MetaBuilder/) in 7 files
- Fix CServiceConnectionRow duplicate signal (urlChanged → urlEdited)
- QmlComponents/ directory with forwarding qmldir (no symlink)
- CMake regenerated: 292 QML/JS files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 15:08:07 +00:00
d4f7e85007 refactor(qt6): 100% of views under 100 LOC — final component + JS extractions
All 29 views now under 100 LOC. Latest extractions:
- 15 components split from 150+ LOC originals (CWorkflowCanvas→99, ThemePreviewCard→52, etc.)
- CStatCell reusable component eliminates 60 lines of duplication
- Profile: CProfilePasswordCard, CProfileConnectedAccounts
- 6 JS modules: LuaEditorLogic, UserManagementDBAL, ProfileDBAL, ComponentTreeDBAL, ThemeEditorLogic, SchemaEditorDBAL
- 7 JSON data files in qml/MetaBuilder/data/

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 15:04:03 +00:00
b40f1e0167 refactor(qt6): sub-100 LOC achieved for 24 of 29 views
Views now under 100:
- AdminView (244→92), DropdownConfig (232→97), SuperGodPanel (222→95)
- MediaService (221→82), PageRoutes (178→98), Moderator (167→75)
- Notifications (163→78), GodPanel (161→69), Login (141→70), Comments (138→77)

Components under 100: CWorkflowTestPanel, CDropdownMenu, MediaPluginsTab,
CHeroSection, CLevelCard, LuaCodeEditor, CSmtpServerForm + 4 more

New JS modules: AdminCrud, DropdownCrud, SuperGodCrud, MediaServiceCrud,
PageRoutesDBAL, NotificationsDBAL, CommentsDBAL, LoginDBAL, ModeratorData

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 15:01:56 +00:00
8616221b01 refactor(qt6): more components under 100 LOC — ThemeColorField, CTransferForm, SchemaFieldRow, etc
5 components split under 100:
- ThemeColorTokens (145→71): ThemeColorField extracted
- CTransferTab (144→92): CTransferForm extracted
- CConnectionTest (135→68): CServiceConnectionRow extracted
- CDataTable (134→94): CTableEmptyState extracted
- SchemaFieldsTable (129→86): SchemaFieldRow extracted

5 left at 128-143 — no clean 30+ line seams remaining.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 14:59:55 +00:00
491c4cffed refactor(qt6): push for sub-100 LOC — JS modules, JSON configs, compact formatting
WorkflowEditor (325→80): CWorkflowState.qml + WorkflowConnectionState.js
DashboardView (121→95): DashboardDBAL.js + config/dashboard-config.json
Storybook (114→78): StorybookSidebar + config/storybook-components.json
+ 7 components compacted to under 100 via formatting (no logic changes)
+ Multiple view/component splits across all remaining 100+ LOC files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 14:58:28 +00:00
8d007afd24 fix(qt6): 26 missing qmldir entries, PackageView bgColor fix, SMTP signal names
- Register all new components in qml/MetaBuilder/qmldir
- Fix backgroundColor → bgColor in 18 PackageView files
- Fix SMTP signal handlers: onHostChanged → onHostEdited (matching actual signals)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 14:49:54 +00:00
1f24ab8e64 refactor(qt6): final deep splits — PackageManager 92, Storybook 114, GodPanel 161
PackageManager (245→92): CPackageListItem, CPackageDetailSidebar
Storybook (234→114): StorybookSamples component library
GodPanel (227→161): CGodPanelGuideTab
MediaServicePanel: mock data → config/media-mock-data.json
DropdownConfigManager: defaults → config/dropdown-defaults.json
+ CDeleteRecordDialog, CAddDropdownDialog reusable dialogs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 14:45:01 +00:00
311fb4db38 refactor(qt6): deep split round — targeting 200 LOC views, 100 LOC components
SuperGodPanel (604→~200): CTenantTab, CGodUsersTab, CTransferTab, CSystemTab, CSuperGodDialogs
WorkflowEditor (443→325): WorkflowMutations.js + WorkflowDBAL.js pure modules
ThemeLivePreview (256→87): ThemePreviewCard, ThemePreviewForm
CNodePropertiesPanel (238→143): CNodeParameterList, CNodePortsDisplay
MediaTvTab, WorkflowNode, CssPropertyEditor split to ~100 each
+ mid-size view trims (MediaService, Admin, PackageMgr, Storybook, GodPanel)

113→120+ components, avg component LOC approaching 90.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 14:42:51 +00:00
99bfd75732 fix(qt6): remove QmlComponents symlink, use direct import paths in main.cpp
- Delete QmlComponents symlink (Windows incompatible, bad practice)
- main.cpp: add qml/ and project root as import paths directly
- No more symlink dependency — works cross-platform
- Clean up stale duplicate files from background agents
- Update generate_cmake.py and CMakeLists.txt for new paths

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 10:30:43 +00:00
f2034720ed Remove qt6 qmllib and update cmake generator
Delete bundled frontends/qt6/qmllib QML libraries (Material, MetaBuilder, dbal, etc.) now provided from the extracted qml/qt6 tree. Update frontends/qt6/generate_cmake.py to also scan ../../qml/qt6 (relative to the root) and include those files (using relative paths) when generating the list. Also apply small updates to a few qml/MetaBuilder files (CSmtpServerForm.qml, CWorkflowTestPanel.qml, ThemeColorTokens.qml, ThemeTypography.qml) to align with the extraction.
2026-03-19 10:19:56 +00:00
8cf3ce5c87 Remove frontends/qt6 views; update import path
Delete duplicated frontend QML files under frontends/qt6 (GodPanel.qml, SettingsView.qml). Adjust qml/qt6/GodPanel.qml to import the local qmllib/MetaBuilder path instead of the MetaBuilder 1.0 module, keeping the canonical QML implementation in qml/qt6.
2026-03-19 10:19:04 +00:00
786f91ec64 Add QML Material lib, demo email UI, and QML refactor
Add a large set of QML components (qml/Material, qml/MetaBuilder, qml/dbal) and a QmlComponents symlink for local development; migrate many frontends/qt6 files into qml/qt6. Replace the email client bootloader with a self-contained demo UI using FakeMUI primitives (MailboxLayout, ThreadList, EmailHeader, ComposeWindow), demo data, handlers, and new folder-navigation styles in globals.css. Update several QML component APIs to new signal/handler names (e.g. selectAllChanged→selectAllToggled, pageChanged→pageRequested, *Changed→*Edited) to standardize events. Add find_config_files() to frontends/qt6/generate_cmake.py to include config JS/JSON in QML/files and resources. Also add /frontends/qt6/_build to .gitignore.
2026-03-19 10:18:09 +00:00
199d94cb76 fix(qml): center CButton text — wrap RowLayout in Item with anchors.centerIn
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 08:30:52 +00:00
9d9fbed60e fix(qt6): fix text clipping in badges, add hero spacing
- CText: use ProportionalHeight for all variants (FixedHeight with 1.0 = 1px, clips text)
- FrontPage: 8px top spacer, hero height 400px, content offset +16px for breathing room
- Text centered in badge circles no longer cut off

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 08:10:18 +00:00
ff226595c6 fix(qt6): desktop-scaled typography, responsive grid, uniform card heights
CText: scale MD3 type sizes for desktop (h1: 32px not 57px, body1: 14px not 16px)
- Remove body1 letterSpacing 0.5 (caused word gaps everywhere)
- Default wrapMode: NoWrap (callers opt in to wrapping)
- Headings get Bold/DemiBold instead of Normal weight
- lineHeight only on body1

FrontPage: responsive GridLayout for level cards and tech stack
- columns adapt: Math.floor(width / 220) for levels, /260 for tech
- Fixed 190px card height (no more random heights)
- 3+2 wrap on medium windows, 2+2+1 on narrow, 5 on wide

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 04:41:25 +00:00
7fa19e4db7 fix(qml): resolve property color shadow crashes in CBadge and CChip
CBadge: rename 'color' prop to 'badgeColor' (avoids Rectangle.color conflict)
CChip: rename 'color' prop to 'chipColor' (same issue)
Update all callers in WorkflowEditor and UserManagement.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 04:37:45 +00:00
73b4b78dca fix(qt6): prevent chips overflowing card boundaries
- Level cards: dynamic height from content instead of fixed 196px
- Level cards: clip: true on container
- CCard: add clip: true globally (content respects radius 12 corners)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 04:13:22 +00:00
41eb2d8e3e feat(qml): MD3 rework batch 3 — atoms (CPanel, CSection, CBlockquote, CHighlight, CProse, CMarkdown)
CPanel: radius 16, tonal surface container, tonal primary header
CSection: 22px bold title, inline divider
CBlockquote: 4px left accent border, tonal primary background, radius 8
CHighlight: tonal color variants at 15% opacity, radius 4
CProse: 16px body, 1.6 line-height, proportional height mode
CMarkdown: updated typography to match MD3 body scale

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 04:04:31 +00:00
de3a3ac194 feat(qml): MD3 rework batch 2 — 17 more components rewritten
Feedback: CAlert (tonal + accent bar), CDialog (radius 28, scale anim), CSnackbar (inverse surface, slide-in)
Navigation: CTabBar (animated indicator pill), CListItem (state layers), CBreadcrumbs (full rewrite)
Data: CAvatar (tonal primary), CDivider (theme-aware), CTable (hover rows, sort arrows, proper padding)
Typography: CText (full MD3 type scale inline), CTitle (extends CText), CCodeBlock (radius 12), CCodeInline (radius 4)
Forms: CFormGroup (focus/error states), CFormLabel (animated color), CLabel (control association), CAutocomplete (styled popup)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 04:03:58 +00:00
eecaac8634 feat(qml): MD3 rework batch 1 — 20 components rewritten
Core: CButton (pill variants), CFab (radius 16 tonal), CIconButton (circle state layers)
Cards: CCard (filled/outlined/elevated, radius 12), CAccordionItem (smooth expand), CPaper
Chips: CChip (8px radius, filter/assist/input), CBadge (6px dot/16px pill), CStatBadge, CStatusBadge
Forms: CTextField (floating label, outlined), CSelect (styled popup), CTextarea (scrollable)
Toggles: CCheckbox (Canvas checkmark), CSwitch (52x32 pill track), CRadio (scale dot), CRating (hover stars)
Feedback: CProgress (4px track, indeterminate slide), CSpinner (Canvas arc sweep), CErrorState (tonal container)

All components: theme-aware, dark/light mode, hover/press state layers, preserved public API.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 04:03:18 +00:00
cd2bd3ffcf feat(qt6): Material Design 3 frontpage — tonal surfaces, pill buttons, proper type scale
Full MD3 pass on FrontPage and light theme:
- Tonal surface containers (surfaceContainer, High, Highest)
- Rounded pill buttons (radius 22) and cards (radius 12-16)
- MD3 type scale with DemiBold/Bold weight hierarchy
- Level badges with rounded-square containers instead of circles
- Proper onSurface/onSurfaceVariant color roles
- Light theme: cool blue-gray (#e8eaf2 bg, #f0f1f8 paper)
- Blue gradient hero wash, tonal stats strip
- Tag chips with tinted backgrounds matching level accent

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 03:58:20 +00:00
0cf7b46bf7 feat(qt6): light blue gradients for light mode — hero wash, stats tint, blue-gray palette
- Hero section: horizontal + vertical blue gradient overlays in light mode
- Stats strip: subtle blue-tinted background
- Light theme base colors shifted blue (#d6d9e4 bg, #c6c9d6 paper)
- Dark mode gradients unchanged

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 03:55:36 +00:00
3dacaa96d6 fix(qt6): improve light mode text contrast — darker text, adaptive opacity
- Light theme text #111118, textSecondary #333345 (was too faint)
- FrontPage opacity values scale with isDark (0.45→0.65, 0.3→0.5, etc.)
- All secondary text now readable on gray backgrounds in both modes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 03:51:12 +00:00
194255b21d fix(qt6): soften light theme — muted gray palette instead of bright white
Light mode background #d8d8e0, paper #c8c8d2, surface #bfbfc9.
Enough contrast to read, not enough to need sunglasses.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 03:49:19 +00:00
8b0e20f5bf fix(qt6): light mode overhaul — softer palette, theme-aware CAppBar, persist theme on startup
- Change default primary from green (#10a37f) to indigo (#6366f1/#4f46e5)
- Light theme: soft off-white (#f0f0f3) background instead of blinding #ffffff
- CAppBar now uses Theme.paper background instead of native ToolBar styling
- App.qml calls Theme.setTheme() on startup + on currentTheme change
- FrontPage uses isDark flag for all surface/border colors (works both modes)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 03:47:59 +00:00
7c5d0f1012 feat(qt6): package metadata updates, QmlComponents library enhancements, PackageLoader improvements
- Update 22 package metadata.json files with consistent schema
- Enhance PackageLoader with file watching and navigable packages
- Update QmlComponents library (atoms, core, data-display, feedback, form, layout, surfaces)
- Improve watchtower PackageView and MaterialAccordion

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 03:04:31 +00:00
c406b8df96 refactor: Reorganize FakeMUI by implementation type
Move FakeMUI content to appropriate root-level folders by implementation:

**React Components → components/fakemui/**
- 537 components (inputs, surfaces, layout, data-display, feedback,
  navigation, utils, atoms, lab, x, email, workflows)
- 416 SVG icons
- Full barrel exports in components/fakemui/index.ts

**QML Components → qml/**
- 104 Material Design 3 components (11 categories)
- 7 hybrid application views
- 8 desktop widgets
- qmldir module registration

**Python Bindings → python/fakemui/**
- 15 PyQt6 modules (120+ components)
- Full Python package structure with pyproject.toml

**SCSS/Styles → fakemui/** (renamed purpose)
- scss/ - Material Design 3 stylesheets
- styles/ - Component SCSS modules
- src/utils/ - Accessibility utilities
- index.ts now re-exports from components/fakemui/

This separation allows:
- React: import { Button } from '@metabuilder/components/fakemui'
- QML: import QmlComponents 1.0
- Python: from fakemui import Button, Card
- Backward compat: import { Button } from '@metabuilder/fakemui'

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 12:59:24 +00:00