From f5ee77645b88c6e9c816b0595a8c0ba9f179321e Mon Sep 17 00:00:00 2001 From: David Omrai Date: Wed, 26 Aug 2026 10:10:33 +0200 Subject: [PATCH 1/3] fix: add compatibility for qwen oauth --- apify/.mcp.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apify/.mcp.json b/apify/.mcp.json index 1a71b78..0cc1ef7 100644 --- a/apify/.mcp.json +++ b/apify/.mcp.json @@ -2,7 +2,8 @@ "mcpServers": { "apify": { "type": "streamable-http", - "url": "https://mcp.apify.com/?client=qoder+plugin" + "url": "https://mcp.apify.com/?client=qoder+plugin", + "httpUrl": "https://mcp.apify.com/?client=qoder+plugin" } } } From 6ccd6d4f9d43fa0dbfe28d81ae55278c4c2d24f4 Mon Sep 17 00:00:00 2001 From: David Omrai Date: Tue, 1 Sep 2026 13:02:23 +0200 Subject: [PATCH 2/3] docs: update readme and release docs --- README.md | 9 ++++----- RELEASE.md | 23 +++++++++++------------ 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 2bd2544..70cd94b 100644 --- a/README.md +++ b/README.md @@ -16,11 +16,10 @@ Extract data from any website with thousands of trusted scrapers, crawlers, and ## Installation -Installation steps live in the Apify docs — **[Apify → Qoder integration](https://docs.apify.com/integrations/qoder)**: +Installation steps live in the Apify docs: -- **[Qoder CLI](https://docs.apify.com/integrations/qoder-cli)** -- **[Qoder IDE](https://docs.apify.com/integrations/qoder-ide)** -- **[QoderWork](https://docs.apify.com/integrations/qoder-work)** +- **[Qoder integration](https://docs.apify.com/integrations/qoder-plugin)** — install the plugin in the Qoder CLI, IDE, Desktop app, or QoderWork, or connect the Apify MCP server in QoderWake and the JetBrains plugin. +- **[Qwen Code integration](https://docs.apify.com/integrations/qwen-code)** — Qwen Code reuses the same plugin. ## Authentication @@ -45,7 +44,7 @@ The `apify` subagent picks the right route and skill automatically. The plugin lives in [`apify/`](./apify). Its `skills/` and `agents/` are **generated** from the `apify-plugins-internal` source of truth (the `qoder` platform) and propagate into this repo automatically via the sync — **do not hand-edit or hand-add them here**; change them upstream. The manifest (`apify/.qoder-plugin/plugin.json`), `apify/.mcp.json`, and `apify/qoder.md` are maintained directly in this repo. -- **[RELEASE.md](./RELEASE.md):** versioning, cutting a release, and publishing to the marketplace (QoderWork/Qoder IDE and Qoder CLI). +- **[RELEASE.md](./RELEASE.md):** versioning, cutting a release, and publishing to the Qoder marketplace. ## License diff --git a/RELEASE.md b/RELEASE.md index b80d4ca..30d4686 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,9 +1,9 @@ # Releasing & Publishing -The plugin ships through two channels, both sourced from the marketplace: +The plugin ships as a single **Qoder marketplace** listing, published from a GitHub release ZIP: -- **Qoder CLI:** installed from the marketplace by manually adding the repo link. No build needed. -- **QoderWork & Qoder IDE:** installed from the marketplace after the plugin is submitted via ZIP and the publish form. Manual, review-gated. +- **Qoder CLI, IDE, Desktop app, and QoderWork** install that plugin from the marketplace listing. The install method differs per surface — a CLI command, a one-click install in the IDE, or downloading the ZIP and importing it (Desktop and QoderWork). See the end-user docs. +- **QoderWake and the JetBrains plugin** don't use the plugin. They connect to the Apify MCP server (`https://mcp.apify.com`) directly, so they need no release or publish step. ## Versioning @@ -24,7 +24,7 @@ Releases are triggered from the **Actions** tab — no manual tagging. On dispat 3. **`create_github_release`** — tags that commit and publishes the GitHub release with the generated notes. 4. **`package_zip`** — zips the **contents of `apify/`** (so `.qoder-plugin/` is at the ZIP root) and attaches `apify-qoder-plugin-.zip` to the release. -That ZIP is the artifact for the QoderWork & Qoder IDE marketplace. +That ZIP is the artifact you publish to the Qoder marketplace. ### How to run it @@ -35,9 +35,9 @@ That ZIP is the artifact for the QoderWork & Qoder IDE marketplace. - `custom` — set **custom_version** explicitly (e.g. `0.1.0`). **Use this for the very first release**, since `auto` has no prior tag to diff against. 3. Run it, then check the `chore(release): ` commit diff and the published release. -## 2. Publish to QoderWork & Qoder IDE (public marketplace) +## 2. Publish to the Qoder marketplace -Publishing is a **manual, review-gated** step in the web app. There is no git/API auto-publish. Both QoderWork and Qoder IDE install the plugin from this marketplace listing. +Publishing is a **manual, review-gated** step in the web app. There is no git/API auto-publish. The Qoder CLI, IDE, Desktop app, and QoderWork all install the plugin from this marketplace listing. 1. Go to **qoder.com > My Publications > Publish > Plugin**. 2. Fill the **Publish Plugin** form: @@ -53,15 +53,14 @@ Publishing is a **manual, review-gated** step in the web app. There is no git/AP ## 3. Installing the plugin (end users) -End-user installation is documented in the Apify docs — **[Apify → Qoder integration](https://docs.apify.com/integrations/qoder)**: +End-user installation is documented in the Apify docs: -- **[Qoder CLI](https://docs.apify.com/integrations/qoder-cli)** -- **[Qoder IDE](https://docs.apify.com/integrations/qoder-ide)** -- **[QoderWork](https://docs.apify.com/integrations/qoder-work)** +- **[Qoder integration](https://docs.apify.com/integrations/qoder-plugin)** — the Qoder CLI, IDE, Desktop app, and QoderWork, plus QoderWake and the JetBrains plugin via the Apify MCP server. +- **[Qwen Code integration](https://docs.apify.com/integrations/qwen-code)** — Qwen Code reuses the same plugin. ## Notes & open items -- `.qoder-plugin/marketplace.json` is **Qoder-CLI-only**. QoderWork and Qoder IDE ignore it and take listing metadata from the publish form. +- `.qoder-plugin/marketplace.json` is **Qoder-CLI-only**. The GUI surfaces (IDE, Desktop app, QoderWork) ignore it and take listing metadata from the publish form. - **MCP auth:** the bundled `.mcp.json` uses the bare `https://mcp.apify.com` URL; Qoder authorizes via OAuth on first use (no API token to paste). Verified in the Qoder CLI. -- **Naming:** QoderWork favors a real-world role/job-title name; "Apify" is a brand and may draw review feedback. +- **Naming:** the marketplace favors a real-world role/job-title name; "Apify" is a brand and may draw review feedback. - **Skill content placeholders:** skills document credentials with placeholders (``, `export APIFY_TOKEN=your_token_here`). This is standard and satisfies the "no real credentials in examples" rule, but a strict automated review *could* flag them. Watch for this on the first marketplace submission. From f0aa29b0d1f7fafa7376d88cc571df5fb08960aa Mon Sep 17 00:00:00 2001 From: David Omrai Date: Tue, 1 Sep 2026 13:32:12 +0200 Subject: [PATCH 3/3] docs: clarify mcp auth requirements in release notes --- RELEASE.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/RELEASE.md b/RELEASE.md index 30d4686..9253a9b 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -61,6 +61,5 @@ End-user installation is documented in the Apify docs: ## Notes & open items - `.qoder-plugin/marketplace.json` is **Qoder-CLI-only**. The GUI surfaces (IDE, Desktop app, QoderWork) ignore it and take listing metadata from the publish form. -- **MCP auth:** the bundled `.mcp.json` uses the bare `https://mcp.apify.com` URL; Qoder authorizes via OAuth on first use (no API token to paste). Verified in the Qoder CLI. -- **Naming:** the marketplace favors a real-world role/job-title name; "Apify" is a brand and may draw review feedback. +- **MCP auth:** the bundled `.mcp.json` points at `https://mcp.apify.com` (with a `client` query param) and declares both `url` and `httpUrl` for cross-host compatibility; Qoder authorizes via OAuth on first use (no API token to paste). Verified in the Qoder CLI. - **Skill content placeholders:** skills document credentials with placeholders (``, `export APIFY_TOKEN=your_token_here`). This is standard and satisfies the "no real credentials in examples" rule, but a strict automated review *could* flag them. Watch for this on the first marketplace submission.