Tool to easily copy features from one desktop framework to another Developer Andros Lee released Yoinkr, an experimental open-source tool that helps developers investigate how a desktop application implements a feature, recover that feature and its dependencies, adapt it to a different application, and verify the result. Yoinkr combines a local workbench, a CLI, recipe-driven adapters and optional MCP tools for coding agents, and requires Node 22.19+ on the 22.x line, 24.11+ on 24.x, or 26+ plus npm; Lee states transfers require application-specific work and the tool is not a universal one-click application merger. Documented examples include transferring uBlock Origin, Dark Reader and adapted RES into a VS Code browser session, Krita's Qt triangle color selector into an OBS dock, and Screenity's drawing and annotation modules into an experimental Firefox recording studio. Your favorite features. In your favorite apps. Yoinkr helps investigate a desktop application's implementation, recover a feature and its dependencies, adapt it to a different application, and check whether the result behaves correctly. It combines a local workbench, a CLI, recipe-driven adapters, and optional MCP tools for coding agents. It is an experimental developer tool. Transfers require application-specific work; this is not a universal one-click application merger. - Examples https://github.com/androslee/yoinkr/blob/main/examples/README.md — choose a donor/recipient pair, build it locally, and see what is actually supported. - Framework support https://github.com/androslee/yoinkr/blob/main/docs/FRAMEWORK SUPPORT.md — verified routes and explicit gaps. - Transfer workflow https://github.com/androslee/yoinkr/blob/main/docs/TRANSFER WORKFLOW.md — investigate, recover, integrate, compare, and roll back. - MCP setup https://github.com/androslee/yoinkr/blob/main/docs/AGENT TOOLS.md — connect a compatible coding agent. No specific AI host is required. Requires Node 22.19+ on the 22.x line , 24.11+ on 24.x , or 26+ and npm. Native examples may require additional tools listed in their own guides. git clone https://github.com/androslee/yoinkr.git cd yoinkr npm ci --ignore-scripts node src/cli.js --help node src/cli.js backend node src/cli.js doctor To investigate two applications: node src/cli.js workbench --app /path/to/donor --app /path/to/recipient Open the localhost URL printed by the command. Supply actual local application directories; downloaded applications and previous investigation cases are not part of this repository. Workbench guide https://github.com/androslee/yoinkr/blob/main/docs/INVESTIGATION WORKBENCH.md . Analysis and builds run locally without model tokens. Installing dependencies and acquiring third-party inputs require internet access. Connecting an AI agent is optional and may have its own usage charges. | Example | What is transferred | Scope | |---|---|---| | uBlock Origin → VS Code https://github.com/androslee/yoinkr/blob/main/examples/ublock-vscode/README.md | Original uBlock, Dark Reader and adapted RES in a browser with vertical tabs and named sessions | Separate browser session; default/custom network filtering, cosmetics, scriptlets and original controls. Linux scope and checks in the example guide. | | Krita → OBS https://github.com/androslee/yoinkr/blob/main/examples/krita-obs/README.md | Original Qt triangle color selector controlling transparent live ink | Actual OBS dock, GPU scene rendering, restart and guarded rollback verified on the pinned Linux/Qt lane. RGB host; not Krita’s full paint engine. | | Screenity → Firefox https://github.com/androslee/yoinkr/blob/main/examples/screenity-firefox/README.md | Original drawing, highlighting, arrows, shapes, text and history modules | Experimental Firefox recording studio with a separate portable browser/profile. Partial port; see the example for tested capture modes and limits. | | MQTT Explorer → VS Code / Joplin https://github.com/androslee/yoinkr/blob/main/examples/mqtt-raw-diff/README.md | Recovered Raw/Diff comparison UI | Historical verified result; source tooling retained, generated MQTT apps/bundles excluded from release. | | Element → VS Code https://github.com/androslee/yoinkr/blob/main/examples/element-search/README.md | Original message-highlighting classes | Native local transcript-search window. Does not include Matrix services or the full Element UI. | | GIMP → OBS https://github.com/androslee/yoinkr/blob/main/examples/obs-annotations/README.md | Original stroke-smoothing function | Experimental Qt dock/annotation source; compilation and numeric checks established, actual OBS/GIMP GUI acceptance pending. | Each example describes original versus new code, exact input versions, setup, output locations and verification limits. Third-party source/runtime downloads, browser profiles, credentials, recovered payloads, screenshots and large binaries are generated locally and excluded from Git. The uBlock Origin → VS Code example https://github.com/androslee/yoinkr/blob/main/examples/ublock-vscode/README.md adds a native browser window to a separate copy of Code: - Full original uBlock Origin MV2 , with custom filters, subscriptions, per-site controls and the original dashboard/logger. Network blocking, cosmetic filtering, scriptlets and CSP header enforcement are verified. - Dark Reader and Reddit Enhancement Suite , with always-visible enable/disable and settings buttons. - Vertical tabs, named local sessions and automatic tab restoration. This restores the original blocker's filtering workflow in the tested Electron host. It does not claim a measured blocking-rate advantage over Lite. DNS/CNAME uncloaking and Firefox response-body filtering remain future work. The guide includes setup, build, verification and rollback instructions; native verification currently covers Linux x86-64. Source and recipes are shared here; downloaded applications, generated builds and browsing profiles stay local. 1. Investigate the donor and intended recipient using the pinned REA https://github.com/morluto/rea analysis engine. 2. Recover a bounded feature, keeping its original code, assets, dependencies and attribution. 3. Adapt the browser/host interfaces through an explicit recipe. A missing host API may require replacement code or make a transfer infeasible. 4. Verify behavior against original inputs, check permissions and lifecycle, and retain a reproducible result. 5. Deliver into a separate application copy with drift checks and rollback where supported. An extension, source module, rendered UI and native component are different transfer boundaries. Passing one example does not establish arbitrary compatibility with its entire framework. Windows and macOS native application adapters remain unverified. | Task | Guide | |---|---| | Understand the public repository layout | Repository contents https://github.com/androslee/yoinkr/blob/main/docs/REPOSITORY.md | | Explore framework/application candidates | Framework catalog https://github.com/androslee/yoinkr/blob/main/docs/FRAMEWORK EXAMPLES.md | | Use CLI and local investigations | Transfer workflow https://github.com/androslee/yoinkr/blob/main/docs/TRANSFER WORKFLOW.md , evidence queries https://github.com/androslee/yoinkr/blob/main/docs/EVIDENCE QUERIES.md | | Export and reproduce a recipe | Portable delivery https://github.com/androslee/yoinkr/blob/main/docs/PORTABLE DELIVERY.md | | Build recovered UI packages | Feature packages https://github.com/androslee/yoinkr/blob/main/docs/FEATURE PACKAGES.md , host adapters https://github.com/androslee/yoinkr/blob/main/docs/FEATURE HOSTS.md | | Use agent tools | MCP setup and permissions https://github.com/androslee/yoinkr/blob/main/docs/AGENT TOOLS.md | | Preserve existing Modkit workspaces | Rename compatibility https://github.com/androslee/yoinkr/blob/main/docs/RENAMING.md | | Prepare a release or hand off Windows checks | Release checklist https://github.com/androslee/yoinkr/blob/main/docs/RELEASE CHECKLIST.md | npm test See CONTRIBUTING.md https://github.com/androslee/yoinkr/blob/main/CONTRIBUTING.md for setup, checks and pull-request guidance. The regression suite uses temporary fixtures. Native and browser checks need the runtimes/tools documented in each example and write local results. Historical development receipts are not bundled; reproduce the relevant checks rather than assuming a missing local screenshot exists in a fresh checkout. Yoinkr is licensed under GNU GPLv3 https://github.com/androslee/yoinkr/blob/main/LICENSE . Third-party software and recovered features retain their own licenses, notices and redistribution requirements. Public examples contain acquisition recipes and host code; they do not grant new rights to donor applications. Upstream provenance https://github.com/androslee/yoinkr/blob/main/docs/UPSTREAMS.md , third-party notices https://github.com/androslee/yoinkr/blob/main/THIRD PARTY NOTICES.md and license review https://github.com/androslee/yoinkr/blob/main/docs/LICENSING.md . thanks for taking a look. my inspiration for this was the deepseek harness with its cordis plugin system. where you could just about add anything to it. infintely modable. and the universal modder rehan-remade/universal-modder for video games. after looking into it and realizing "other things" likely had the same attack vector/exploit possibility that was used there common applications built on the same engines/frameworks , i thought that idea should be able to transfer to something broader. why not desktop applications too. can we take features from application FOO and easily transfer them exactly into the 2nd application BAR because they are built on the same framework BAZ. and yes, i think so.