بنقرة واحدة
sharex-feature-specifications
Detailed specifications for Uploader Plugin System and Annotation Subsystem features
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Detailed specifications for Uploader Plugin System and Annotation Subsystem features
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Use the local ShareX checkout as the source of truth for ShareX.ImageEditor, find the latest upstream commit that touches it, and port or sync the matching changes into the XerahS ShareX.ImageEditor submodule with path-aware diffing and build gates.
Orchestrate XerahS release flow in strict order: run maintenance prep first, update-changelog second (optional only if docs/CHANGELOG.md is intentionally absent), verify build, bump/commit/push/tag while syncing Chocolatey version metadata, monitor GitHub Actions every 2 minutes, ensure standard release notes content, then set pre-release by default (use explicit opt-out for stable). On failures, inspect logs, fix root cause, and retry with the next patch release.
Rules and workflows for updating docs/CHANGELOG.md, including version grouping, aggressive consolidation, and GitHub tag-linked release headings.
Repository maintenance preparation for XerahS. Use before release or changelog work to sync repositories, inspect submodule state, identify version/changelog needs, and hand off commit/push/version rules to git-workflow.
Bring src/mobile-experimental Avalonia/MAUI mobile apps to feature and behavior parity with src/mobile/ios while preserving native platform feel. Use when comparing the Swift iOS app against XerahS.Mobile.Ava, XerahS.Mobile.Maui, or the experimental iOS share extension, implementing parity gaps, or validating Android/iOS experimental mobile flows.
Bring src/mobile/android to feature and behavior parity with src/mobile/ios while keeping each app native. Use when comparing iOS Swift/SwiftUI/UIKit mobile behavior against Android Kotlin/Jetpack Compose behavior, implementing missing Android features, or validating parity with the Test Android Apps emulator QA workflow.
| name | ShareX Feature Specifications |
| description | Detailed specifications for Uploader Plugin System and Annotation Subsystem features |
Multi-Instance Provider Catalog:
IUploaderPlugin → IUploaderProvider with multi-category supportProviderCatalog: Static registry for provider typesInstanceManager: Singleton for instance lifecycle, persistence, default selectionUploaderInstance, InstanceConfiguration with JSON serializationProviderCatalogViewModel, CategoryViewModel, UploaderInstanceViewModelProviders Reference:
ImgurProvider: Supports Image + Text categoriesAmazonS3Provider: Supports Image + Text + File categoriesPersistence: %AppData%/XerahS/uploader-instances.json
Architecture:
PluginLoadContext (AssemblyLoadContext) for each plugin.PluginLoader prevents premature GC of contexts.IUploaderProvider.GetConfigView.Components:
PluginDiscovery: Scans Plugins/ folder for plugin.json manifests.PluginLoader: Loads assemblies and instantiates providers.ProviderCatalog: Central registry for both built-in and dynamic providers.Plugin Examples:
ShareX.Imgur.Plugin: Image uploading with OAuth2.ShareX.AmazonS3.Plugin: S3 bucket uploads (Image/Text/File).Goals:
Data model additions:
FileTypeScope class (AllFileTypes flag + FileExtensions list)UploaderInstance.FileTypeRouting propertyIUploaderProvider.GetSupportedFileTypes() methodRouting logic:
1. Exact extension match (e.g., .png → Imgur)
2. "All File Types" fallback
3. No match → error/notification
UI features:
Implementation phases:
Goal: Complete end-to-end automation matching ShareX feature parity
Components needed:
Task System (~600 LOC)
WorkflowTask.cs - Async automation engine with lifecycle managementTaskInfo.cs - Task metadata and stateTaskManager.cs - Queue orchestration with concurrency controlTaskStatus.cs - Status enums and job typesWorkflow Configuration (~200 LOC)
AfterCaptureTasks flags: AddImageEffects, AnnotateImage, SaveImageToFile, UploadImageToHost, etc.AfterUploadTasks flags: CopyURLToClipboard, OpenURL, ShortenURL, ShowQRCode, ShowNotificationUploadInfoParser - Template-based clipboard format (%url%, %filename%, %time%, etc.)Upload Integration (~150 LOC)
UploadResult model with URL/ThumbnailURL/DeletionURL/ShortenedURLUploaderErrorManager for error handlingAfter-Upload Automation (~100 LOC)
UI Integration (~150 LOC)
Implementation phases:
Total effort: ~1,200 LOC, 8-12 hours
Blockers:
UploadAsync method signaturesPath A (minimal) delivered:
Path B additions:
Project: XerahS.Annotations
Files created: 10 files (~800 LOC)
Annotation types implemented:
EditorTool enum: Select, Rectangle, Ellipse, Arrow, Line, Text, Number, Spotlight, Crop, PenAnnotation abstract base class with rendering, hit-testing, bounds calculationTechnical features:
DrawingContext renderingImplement the annotation subsystem for XerahS, replacing WinForms and System.Drawing with Avalonia and Skia. All features listed in the ShapeType enum must be available.