Repository navigation
Release v1.3.3: 三语界面、主题图标与上传重试 - #4
Merged
Merged
Conversation
Add LabeledTextBox control and improve label editing
This pull request introduces several improvements and new features to the LabelPlus_Next application, focusing on enhanced theming support, major usability upgrades to the PicViewer control (including new interaction modes and label management), and the addition of a centralized label management utility. The most important changes are grouped below: Theming and Style Enhancements: Added theme-aware resources and brushes to App.axaml, including a fallback color and dynamic brushes for the LabeledTextBox control, improving visual consistency across light and dark themes. (LabelPlus_Next/App.axaml [1] [2] PicViewer Control Usability and API Improvements: Introduced a new ViewerMode enum and a Mode property to PicViewer, enabling different interaction modes such as Browse, Label, Input, and Check. Added a SelectedLabel property and an AddLabelRequested event for more flexible label selection and creation workflows. (LabelPlus_Next/CustomControls/PicViewer.cs [1] [2] Improved pointer and keyboard interaction logic in PicViewer: label addition is now possible in Label mode or by holding Ctrl, crosshair cursors provide better visual feedback, and label dragging and highlighting behaviors are more intuitive. (LabelPlus_Next/CustomControls/PicViewer.cs [1] [2] [3] [4] [5] [6] Added synchronization between the external label selection and the overlay highlight, so UI selection state is always reflected visually. (LabelPlus_Next/CustomControls/PicViewer.cs [1] [2] [3] Label Management and Undo Functionality: Introduced a new LabelManager singleton class to centralize label operations and provide per-image undo stacks for label removal, allowing users to undo label deletions. (LabelPlus_Next/Models/LabelManager.cs LabelPlus_Next/Models/LabelManager.csR1-R52) Added an UpdateHeader method to LabelFileManager for updating label group and comment metadata. (LabelPlus_Next/Models/LabelFileManager.cs LabelPlus_Next/Models/LabelFileManager.csR34-R40) LabeledTextBox Rendering Improvements: Updated the rendering logic in LabeledTextBox to ensure the index capsule background is drawn with the correct brush, and improved separator line drawing to avoid overlap with the capsule, ensuring better appearance with anti-aliasing and DPI scaling. (LabelPlus_Next/CustomControls/LabeledTextBox.cs [1] [2] Project File Cleanup: Removed an unnecessary folder reference from the project file. (LabelPlus_Next/LabelPlus_Next.csproj LabelPlus_Next/LabelPlus_Next.csprojL37-L40)
- surface PROPFIND failures in the tree with a retry action instead of leaving a blank pane while still reporting "连接成功" - auto-detect AList's /dav endpoint, persist the corrected BaseUrl and re-anchor file:// hrefs returned for root-relative hrefs - expand the root automatically after connecting - load settings synchronously before binding, auto-save changes with a debounce, and flush pending edits on exit; the settings dialog now edits the main view model (single source of truth, includes ApiBaseUrl) - use the site API root rather than the WebDAV /dav endpoint for API upload and publishing, fixing 401 from /dav/api/auth/login
Bring dev up to date with master (1.3.1) and the WebDAV tools fixes from 565adc7: listing error reporting, settings auto-load/save and the API base URL correction for publishing.
- locate Client/Update version files through the selected folder, the solution, or the repository root instead of requiring them in the chosen folder - when a source project folder (for example LabelPlus_Next.Desktop) is selected, display its version and use the multi-platform build path instead of trying to zip the source tree - refresh version info when the folder/solution fields lose focus and after browsing for a solution - discover the published target-framework directory instead of assuming net9.0, fixing packaging on the current net10.0 projects
Resolve pack versions from the repository, show Project/Version for source project folders, and auto-build multi-platform packages instead of failing with the version/project empty error. Also discover the actual publish target-framework output.
- log the running executable path and build time at startup so it is obvious whether the latest Tools binary is actually being used - log pack mode, effective API base, and API login success/failure (never the password or token) to make 401/upload issues diagnosable
- run ZIP creation on a worker thread so large folders no longer freeze the window while "生成并上传" is running - treat source project folders that happen to contain a version file (for example LabelPlus_Next.Update) as source code: use the multi-platform build path instead of zipping bin/obj and sources - normalize TargetPath values that point at manifest.json to their directory, so uploads no longer land under a bogus /OneDrive2/Update/manifest.json/ path - show the file size and actionable guidance when the server rejects an upload with 413 Request Entity Too Large
Keep the pack UI responsive by zipping on a worker thread, build source project folders instead of zipping them, normalize TargetPath to a directory, and add executable/build/API diagnostics plus 413 guidance.
…ders - clear the Windows 11 DWM border colour for every app window that uses the custom ChromeTitleBar; this removes the 1px white line around BorderOnly windows while keeping the native resize border - share the helper between the app and the updater - add row separators to both file lists in the Manage Images dialog
Bump the client and updater versions for the window-chrome and image list UI fixes.
Remove the Windows 11 white window edge, add row dividers to the Manage Images file lists, and bump the client/updater version to 1.3.2.
…ML i18n - add light/dark rounded-rectangle app icon tiles and switch them with the active theme in the main app and updater - move the language selector from the Translate toolbar to the Settings page, persist the choice in settings.json, and apply it before the first paint - route every XAML UI string through I18N resources (zh-CN / en / zh-Hant-TW) and localize the main window, dialog, crash-report, and settings messages - add localized count/placeholder converters for dynamic XAML text
… edge - offset window notifications below the custom title bar and top action row - extend the client area and paint the DWM border with the theme background so the 1px white edge is not visible in dark mode; reapply on activation/theme change - translate the label category column without changing the stored values
Add theme-aware app icons, the Settings language switch, full XAML localization, and fix the update-toast overlap and dark-mode window edge.
- add a code-side UI string catalog and UiText.Tr for messages built in view models and services (Chinese-source keys with en / zh-Hant values) - localize upload, teamwork, translate, settings, project, merge-conflict and file-error messages, including progress, notifications and dialogs - add a category display converter and a localization unit test - bump the client and updater versions to 1.3.3
Localize dynamic UI messages, add the code-side translation catalog, and bump the client/updater version to 1.3.3.
… grips - style the Semi button template presenter so the close caption turns red on hover/press (main app and updater) - make the mode radio buttons two-way so selecting Label mode actually changes PicViewer.Mode and clicking the canvas adds labels again - add a category colour bar to each label row in the text list - show subtle always-visible divider lines and centred drag grips for both splitters in the editor
… bar - move the category colour strip into the No. column, immediately left of the label number, instead of between No. and Text - make the image-pane mode selector a wrapping segment with compact buttons so it does not clip when the splitter narrows the image pane
Fix the close-button hover, restore Label mode clicks, add label colour bars and splitter grips, and make the mode bar wrap instead of clipping.
Large AList PUTs occasionally lose the TCP connection mid-body (SocketException 10054), which previously aborted the whole pack run after one attempt. - retry transient upload failures up to 3 times with jittered backoff, rebuilding the request body for every attempt; 408/429/5xx are retried while 413 and other 4xx are permanent - treat an empty 2xx response as a failure instead of reporting success - return per-file failures from PutMany/SafeUpload rather than throwing away the batch - show the underlying upload error in the pack tool status/log - add local HttpListener tests covering 503 retry, connection reset retry, 413 no-retry, and give-up behavior
- add coverlet collector and coverlet.runsettings covering Models, Converters, ViewModels, Services, Shared, DeeplinkClients and Tools core, excluding UI/platform adapters and generated code - switch CI coverage to coverlet and publish the scoped line rate - add converter, model/NodeItem and merge-conflict tests - initialise MergeConflictViewModel.SelectedConflictItem correctly and remove unused private diff helpers
Add scoped core-logic coverage tooling, initial converter/model/merge tests, and the merge-conflict selection fix.
- wrap the upload header actions so Add/Refresh/Settings are never clipped - refresh the upload project list when the page opens, guard refreshes with a busy flag and hide the idle progress bar - show friendly access-denied/IO messages instead of a raw special-folder path - guard TeamWork refreshes, reset IsBusy and coalesce duplicate load toasts - refresh code-built nav labels and category cell text after language changes - give the label colour strip a stable 32px height
Fix upload header overflow and refresh/progress state, coalesce TeamWork toasts, and refresh localized nav/category text on language change.
- add writer/reader/header/store/round-trip tests for translation files - cover LabelItem, ManifestV1, CollaborationSession, NoopFileDialogService, TranslationFileUtils, UpdateFiles and transfer progress - cover UpdateVersion fallback/equal-prerelease, merge-conflict defaults and forced conflicts, MainWindowViewModel autosave/image helpers and tools settings/staged-installer edge cases - exclude network/platform adapters from the core coverage scope - fix CollaborationSession.RemoteDirectory to return "/" for a root-level file
Cover translation file formats, models, settings/update helpers and narrow the core coverage scope to exclude network/platform adapters.
|
| GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
|---|---|---|---|---|---|
| 20606471 | Triggered | Generic Password | 62082a9 | LabelPlus_Next.ApiServer/appsettings.json | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secret safely. Learn here the best practices.
- Revoke and rotate this secret.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v1.3.3 发布
将 1.3.3 的全部改动合入
master。自 v1.3.1 以来的主要内容:界面与多语言
上传与打包
CI / 测试
SettingsViewModelFailureTests在 en-US runner 下断言中文导致的失败(固定 zh-CN)发布步骤
v1.3.3tag,触发 desktop-release 工作流