桌面应用与UI框架
Desktop app & UI framework work
Implement or fix desktop UI in SwiftUI, WPF, Qt or Electron, checked on screen.
20 条本项目编写的提案 · 分类 v1.1 · 新增基准运行 0 次。下方验证方式与部分得分规则是设计,不是执行结果。
- 典型应用
- Xcode · Visual Studio · Qt Creator
- 小类 GUI 需求标签
HY· 混合
任务提案 · 20
展开查看完整原文与建议检查方式;两种界面均保留提案英文原文。
R02.05.01.02-T01 Build a macOS sidebar-detail browser with toolbar search in SwiftUI
原始指令
In fixtures/Library.xcodeproj (macOS 14 target), replace the single list with a NavigationSplitView: sidebar of 4 collections, content list of books, detail pane. Add a toolbar search field filtering titles case-insensitively, and remember the selected collection across launches. Run it and check the layout at 900×600 and full screen.
- 平台
mac· macOS- 应用
- Xcode · SwiftUI
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令click· 指向与点击vis· 视觉判断- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Hidden macOS XCUITest: 3 columns exist; selecting 'Sci-Fi' lists 17 books; typing 'dune' filters to 2; relaunch restores 'Sci-Fi'. Screenshot at 900×600 has no clipped sidebar labels (OCR of all 4 names). Build has zero warnings.
建议部分得分
30% split view structure; 30% search filter; 20% selection persistence; 20% layout at both sizes
R02.05.01.02-T02 Fix a WPF DataGrid that does not refresh after edits
原始指令
fixtures/Inventory.sln (WPF, .NET 8) shows stale totals: editing Quantity in the DataGrid does not update the row Total or the footer sum until restart. Fix the view model bindings in Visual Studio and verify in the running app.
- 平台
win· Windows- 应用
- Visual Studio · WPF
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令click· 指向与点击type· 文字与表单- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 2 / 5
建议验证方式
Hidden FlaUI test edits 3 quantities and asserts row Total cells and footer 'Sum' text update immediately to expected values. dotnet build has zero warnings; no code-behind event handlers added (Roslyn diff check).
建议部分得分
60% UI updates on edit (rows 30, footer 30); 20% MVVM kept (no code-behind); 20% clean build
R02.05.01.02-T03 Make a Qt settings dialog resize and stretch correctly
原始指令
The Preferences dialog in fixtures/qtpad (Qt 6 Widgets, .ui file) clips controls when shrunk and leaves dead space when enlarged. Fix it in Qt Creator's Designer with proper layouts, stretch factors and minimum sizes so it matches input/prefs_spec.png at 480×360, 800×600 and 1200×900.
- 平台
mac· macOSwin· Windowslin· Linux- 应用
- Qt Creator · Qt Widgets
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
G2· GUI 必要- 交互原语
click· 指向与点击geom· 精确几何vis· 视觉判断- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Hidden QTest resizes the dialog to the 3 sizes and asserts: no child widget extends outside the dialog, path QLineEdit grows with width, buttons stay bottom-right within 12 px margins. Dialog minimumSize ≥ declared spec. .ui must use layouts (no absolute geometry).
建议部分得分
30% no clipping; 30% stretch behavior; 20% button anchoring; 20% layouts instead of fixed geometry
R02.05.01.02-T04 Add native menus and platform shortcuts to an Electron app
原始指令
fixtures/markdown-studio (Electron 31) has no application menu. Add File/Edit/View/Help menus with New, Open, Save, Export PDF, Toggle Preview; use Cmd on macOS and Ctrl on Windows, include the macOS app menu, and make the window follow the system dark/light theme.
- 平台
mac· macOSwin· Windows- 应用
- Electron · VS Code
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令key· 快捷键click· 指向与点击- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Grader runs Playwright _electron on mac and win: Menu.getApplicationMenu() structure and accelerators match spec per platform; triggering accelerator Save writes the file; nativeTheme toggle changes body background ≥ΔE 30. macOS app menu present only on darwin.
建议部分得分
35% menu structure; 30% accelerators per OS; 15% actions work; 20% theme following
R02.05.01.02-T05 Make a WPF app crisp at 150% and 200% display scaling
原始指令
fixtures/Plotter (WPF) is blurry and mis-sized on high-DPI monitors. Make it per-monitor DPI aware (v2), replace raster toolbar icons with vector or multi-scale assets, and fix hard-coded pixel offsets. Check it on a Windows VM at 100%, 150% and 200% scaling.
- 平台
win· Windows- 应用
- Visual Studio · WPF
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
HY· 混合- 交互原语
code· 代码与命令vis· 视觉判断- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Grader launches at each scaling (registry-set VM snapshots) and screenshots: toolbar icon edge sharpness (Laplacian variance) ≥ reference ×0.9; chart axis labels OCR-exact; window chrome to content offsets scale linearly ±1 px. App manifest declares PerMonitorV2.
建议部分得分
20% manifest DPI awareness; 40% icon sharpness at 1.5x and 2x scaling; 20% OCR labels; 20% layout offsets
R02.05.01.02-T06 Add a persisted theme switcher to a WinUI 3 settings page
原始指令
In fixtures/Journal (WinUI 3, Windows App SDK 1.5), add a Settings page reachable from the NavigationView with a Light/Dark/Use system radio group that applies immediately and persists across restarts. Match the Fluent spacing in input/settings_mock.png.
- 平台
win· Windows- 应用
- Visual Studio · WinUI 3
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
HY· 混合- 交互原语
code· 代码与命令click· 指向与点击vis· 视觉判断- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Hidden WinAppDriver test: navigate to Settings, choose Dark, verify root RequestedTheme Dark and a sampled background pixel ΔE2000 ≤3 from #202020; restart and confirm Dark persists; choose system and confirm it follows OS. Screenshot SSIM ≥0.85 vs mock.
建议部分得分
20% navigation entry; 40% theme applies; 25% persistence; 15% layout match
R02.05.01.02-T07 Implement drag-to-reorder in a QML list
原始指令
In fixtures/Tasks (Qt 6 Quick), let users reorder the task ListView by dragging a handle, with a drop indicator line and smooth displacement, and persist the new order to tasks.json. Dragging outside the list must cancel.
- 平台
mac· macOSwin· Windowslin· Linux- 应用
- Qt Creator · Qt Quick
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令drag· 拖放vis· 视觉判断- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Hidden Qt Quick Test simulates press-move-release on the handle: dragging item 1 to slot 4 yields order [B,C,D,A,E] in the model and tasks.json; drag released outside restores order; drop indicator Item visible during drag. Frame rate during drag ≥50 fps measured via QQuickWindow frameSwapped.
建议部分得分
40% reorder correct; 20% persisted; 20% cancel outside; 20% indicator and smoothness
R02.05.01.02-T08 Restore window frame and split position across launches on macOS
原始指令
fixtures/Notes (AppKit) always opens at a default size and the sidebar split resets. Implement state restoration: window frame, sidebar width, selected note, and full-screen state, working with multiple windows.
- 平台
mac· macOS- 应用
- Xcode · AppKit
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令click· 指向与点击- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Hidden XCUITest opens 2 windows, sets frames and split widths to known values, quits and relaunches: both windows restored within ±2 pt, split widths ±2 pt, selections restored. Uses NSWindowRestoration or autosave names (static check).
建议部分得分
40% frames restored; 30% split widths; 20% selection; 10% multi-window
R02.05.01.02-T09 Harden an Electron app's renderer security without breaking features
原始指令
fixtures/clipvault (Electron) runs with nodeIntegration on and no CSP. Enable contextIsolation and sandbox, disable nodeIntegration, add a preload with a minimal IPC allowlist, and a strict CSP. All existing features (clipboard history, search, export) must still work.
- 平台
mac· macOSwin· Windows- 应用
- Electron
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令click· 指向与点击- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Electronegativity scan: zero HIGH findings. Grader's Playwright _electron e2e (8 specs) all pass. Runtime check: window.require undefined in renderer; ipcRenderer only exposes the 5 allowed channels; CSP header blocks inline script.
建议部分得分
30% security flags; 20% CSP; 20% IPC allowlist; 30% e2e suite passing
R02.05.01.02-T10 Package a Tauri app with installers and a file association
原始指令
Package fixtures/mdview (Tauri 2) as a signed-with-test-cert .dmg for macOS and an .msi for Windows, with the icon set from input/icon.png and a .mdx file association that opens the file in the app. Install on both test VMs and open input/sample.mdx by double-click.
- 平台
mac· macOSwin· Windows- 应用
- Tauri · Xcode · Visual Studio
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令click· 指向与点击multi· 跨应用- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Grader inspects artifacts: Info.plist CFBundleDocumentTypes includes mdx; MSI registers ProgID for .mdx. On VMs, launching sample.mdx via the OS shell (open / start) opens the app with the file title shown (accessibility tree). Icon hash matches derived sizes.
建议部分得分
25% mac bundle; 25% msi; 30% association works on both; 20% icons
R02.05.01.02-T11 Add undo/redo to a WPF diagram canvas
原始指令
fixtures/FlowSketch (WPF) lets users drag shapes and connect them on a Canvas but has no undo. Implement a command-based undo/redo stack (Ctrl+Z/Ctrl+Y and toolbar buttons) covering move, create, delete and connect; grouped moves count as one step.
- 平台
win· Windows- 应用
- Visual Studio · WPF
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令drag· 拖放key· 快捷键- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Hidden FlaUI test performs 12 scripted drag/create/connect/delete operations, then 12 undos and 6 redos; serialized canvas state (export JSON) must equal expected snapshots at each checkpoint. Toolbar buttons enable/disable correctly.
建议部分得分
40% undo correctness; 30% redo correctness; 15% grouped moves; 15% button states
R02.05.01.02-T12 Port a WinForms dialog to Avalonia for macOS and Windows
原始指令
Port the Export dialog from fixtures/LegacyTool (WinForms, Designer.cs) to Avalonia 11 in the new fixtures/NewTool project so it runs on macOS and Windows: same controls, tab order, validation rules and default values, with layouts that scale instead of absolute positions.
- 平台
mac· macOSwin· Windows- 应用
- Visual Studio · Rider · Avalonia
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令vis· 视觉判断click· 指向与点击- 工作产物
WP06· 代码 / 工程- 条件
long· 长流程- 提案难度
- 5 / 5
建议验证方式
Hidden Avalonia.Headless tests compare controls (names, types, defaults), tab order and validation error messages to a spec extracted from the WinForms dialog. Screenshots on mac and win at 1x and 2x: SSIM ≥0.80 vs reference renders, no clipped text (OCR all labels).
建议部分得分
25% control parity; 15% tab order; 25% validation; 35% rendering on both OS
R02.05.01.02-T13 Fix dark-mode contrast in a SwiftUI macOS app
原始指令
fixtures/Budget renders unreadable gray-on-black text and invisible dividers in dark mode. Replace hard-coded colors with semantic colors or an asset catalog with light/dark variants so every text element meets 4.5:1 contrast in both appearances.
- 平台
mac· macOS- 应用
- Xcode · SwiftUI
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令vis· 视觉判断- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 2 / 5
建议验证方式
Grader renders the 3 main views in light and dark via hidden snapshot tests and measures text/background contrast at OCR-located text boxes: all ≥4.5:1; dividers ≥1.5:1. Static check: no Color(red:green:blue:) literals remain in view files.
建议部分得分
60% contrast in dark (per view); 20% light unchanged; 20% no hard-coded colors
R02.05.01.02-T14 Set tab order and keyboard shortcuts in a Qt form
原始指令
In fixtures/crm-lite (Qt Widgets), the New Contact form tabs through fields in a random order and has no mnemonics. Set the tab order to follow input/tab_order.txt, add &-mnemonics to all labels with buddies, and make Enter submit and Esc cancel.
- 平台
mac· macOSwin· Windowslin· Linux- 应用
- Qt Creator · Qt Widgets
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
click· 指向与点击key· 快捷键- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 2 / 5
建议验证方式
Hidden QTest presses Tab from the first field and records focus sequence == spec (11 widgets); Alt+mnemonic focuses the right buddy (Ctrl+Option on macOS); Return triggers accepted(), Escape rejected().
建议部分得分
50% tab order; 30% mnemonics/buddies; 20% Enter/Esc
R02.05.01.02-T15 Fix anchoring and auto-scaling in a WinForms dialog
原始指令
fixtures/Payroll's Employee dialog (WinForms, .NET 8) overlaps controls when the window is maximized or the system font is set to 125%. In the Visual Studio designer, fix Anchor/Dock settings and AutoScaleMode so the layout matches input/employee_spec.png at 640×480 and maximized, at 100% and 125% text size.
- 平台
win· Windows- 应用
- Visual Studio · WinForms
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
G2· GUI 必要- GUI 需求 · 普通权限
G2· GUI 必要- 交互原语
click· 指向与点击geom· 精确几何vis· 视觉判断- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Hidden FlaUI test captures bounding rectangles of 18 controls in 4 configurations: no overlaps, buttons anchored bottom-right, grid fills remaining space ±4 px; AutoScaleMode=Dpi. Edits must be in Designer.cs (generated region) and match designer serialization; a Procmon audit log flags any write to Designer.cs not made by devenv.exe.
建议部分得分
40% no overlaps; 30% anchoring per config; 20% AutoScaleMode; 10% designer-valid code
R02.05.01.02-T16 Stop an Electron renderer crash when opening large files
原始指令
fixtures/logscope (Electron) crashes with an out-of-memory renderer when opening input/big.log (1.2 GB). Stream and virtualize the file view so it opens in under 3 s with scrolling, and search still works. Check memory in DevTools.
- 平台
mac· macOSwin· Windows- 应用
- Electron · Chrome DevTools
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令nav· 平移 / 缩放 / 滚动vis· 视觉判断- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Grader opens big.log via Playwright _electron: first rows visible ≤3 s, renderer process memory ≤600 MB, scroll to 90% shows correct line numbers; search 'ERROR 0x7f' returns 3 hits with correct lines. No renderer crash events.
建议部分得分
30% opens without crash; 25% time and memory limits; 25% scroll correctness; 20% search
R02.05.01.02-T17 Add a menu bar extra and Settings scene to a SwiftUI app
原始指令
Extend fixtures/FocusTimer (macOS SwiftUI) with a MenuBarExtra showing the remaining time and Start/Pause/Reset items, and a Settings scene (Cmd+,) with work/break durations stored in UserDefaults. The menu bar title must update every second while running.
- 平台
mac· macOS- 应用
- Xcode · SwiftUI
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令click· 指向与点击- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Hidden XCUITest clicks the status item, starts the timer, samples the title over 3 s (decreasing by 1 s steps), pauses, resets. Settings window opens via Cmd+, and changed durations persist in defaults read output.
建议部分得分
35% menu bar extra and actions; 25% live title updates; 25% settings persist; 15% shortcut
R02.05.01.02-T18 Remove UI-thread freezes from a WPF import screen
原始指令
Importing input/orders_200k.csv in fixtures/OrderDesk (WPF) freezes the window for ~40 s. Use the Visual Studio profiler to find the blocking work, move it off the UI thread with progress reporting and cancellation, and keep the DataGrid virtualized.
- 平台
win· Windows- 应用
- Visual Studio · WPF
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令click· 指向与点击vis· 视觉判断- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Grader runs a hidden FlaUI test that starts the import and pings the window every 100 ms via UIA: max response latency ≤150 ms during import; progress bar advances; Cancel stops within 1 s leaving 0 partial rows; full import gives 200,000 rows.
建议部分得分
40% responsiveness; 20% progress; 20% cancellation; 20% correct row count
R02.05.01.02-T19 Draw a custom chart widget to match reference renders
原始指令
Implement SparkBarWidget in fixtures/qtdash (Qt 6 Widgets, QPainter) to match input/ref/*.png: rounded bars, baseline, min/max labels, hover tooltip with value, and HiDPI-correct rendering. Use the 5 datasets in input/data/ for the reference cases.
- 平台
mac· macOSwin· Windowslin· Linux- 应用
- Qt Creator · Qt Widgets
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
HY· 混合- 交互原语
code· 代码与命令vis· 视觉判断hover· 悬停与上下文- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Grader renders the widget offscreen at 1x and 2x for 5 datasets: SSIM ≥0.92 vs references; hover at bar centers produces QToolTip text equal to value. No external chart library linked (CMake check).
建议部分得分
50% SSIM at 1x/2x; 20% labels; 20% hover tooltips; 10% no external chart lib
R02.05.01.02-T20 Ship an auto-update flow for an Electron app against a test server
原始指令
Add electron-updater to fixtures/notely so a 1.0.0 build checks the local test update server (fixtures/update-server), downloads 1.0.1, verifies its signature, prompts 'Restart to update', and installs on restart, on both macOS and Windows test VMs. A tampered package must be rejected.
- 平台
mac· macOSwin· Windows- 应用
- Electron · electron-builder
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令click· 指向与点击multi· 跨应用- 工作产物
WP06· 代码 / 工程- 条件
long· 长流程risk· 高风险 / 不可逆- 提案难度
- 5 / 5
建议验证方式
On each VM, grader installs 1.0.0, triggers check, accepts the dialog: app relaunches reporting version 1.0.1 (app.getVersion via IPC). With fixtures/tampered-1.0.1 served, update is refused and 1.0.0 remains. Uses only the local test server.
建议部分得分
20% updater wired; 30% macOS update; 30% Windows update; 20% tampered package rejected
已有研究映射
以下沿用研究目录中的基准与小类映射,不是逐题标注、执行记录或产品背书。