Merge pull request #2408 from glifocat/chore/rename-qwibitai-references
This commit is contained in:
@@ -228,5 +228,5 @@ Common signals:
|
|||||||
- **MCP server:** [`@gongrzhe/server-gmail-autoauth-mcp`](https://github.com/GongRzhe/Gmail-MCP-Server) by GongRzhe — MIT-licensed.
|
- **MCP server:** [`@gongrzhe/server-gmail-autoauth-mcp`](https://github.com/GongRzhe/Gmail-MCP-Server) by GongRzhe — MIT-licensed.
|
||||||
- **OneCLI credential stubs:** pattern documented at `https://onecli.sh/docs/guides/credential-stubs/gmail.md`.
|
- **OneCLI credential stubs:** pattern documented at `https://onecli.sh/docs/guides/credential-stubs/gmail.md`.
|
||||||
- **Skill pattern:** modeled on [`add-atomic-chat-tool`](../add-atomic-chat-tool/SKILL.md) and [`add-vercel`](../add-vercel/SKILL.md).
|
- **Skill pattern:** modeled on [`add-atomic-chat-tool`](../add-atomic-chat-tool/SKILL.md) and [`add-vercel`](../add-vercel/SKILL.md).
|
||||||
- **Addresses:** [issue #1500](https://github.com/qwibitai/nanoclaw/issues/1500) (proxy Gmail/Calendar OAuth tokens through credential proxy) for the Gmail side.
|
- **Addresses:** [issue #1500](https://github.com/nanocoai/nanoclaw/issues/1500) (proxy Gmail/Calendar OAuth tokens through credential proxy) for the Gmail side.
|
||||||
- **Related PRs:** [#1810](https://github.com/qwibitai/nanoclaw/pull/1810) (pre-install Gmail/Notion MCP) overlaps on the "install the MCP server in the image" idea but bundles many unrelated changes; this skill is the focused OneCLI-native version.
|
- **Related PRs:** [#1810](https://github.com/nanocoai/nanoclaw/pull/1810) (pre-install Gmail/Notion MCP) overlaps on the "install the MCP server in the image" idea but bundles many unrelated changes; this skill is the focused OneCLI-native version.
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ git remote -v
|
|||||||
If `upstream` is missing, add it:
|
If `upstream` is missing, add it:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git remote add upstream https://github.com/qwibitai/nanoclaw.git
|
git remote add upstream https://github.com/nanocoai/nanoclaw.git
|
||||||
```
|
```
|
||||||
|
|
||||||
### Merge the skill branch
|
### Merge the skill branch
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ git remote -v
|
|||||||
If `upstream` is missing, add it:
|
If `upstream` is missing, add it:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git remote add upstream https://github.com/qwibitai/nanoclaw.git
|
git remote add upstream https://github.com/nanocoai/nanoclaw.git
|
||||||
```
|
```
|
||||||
|
|
||||||
### Merge the skill branch
|
### Merge the skill branch
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ Two phases: **Extract** (build the migration guide) and **Upgrade** (use it). If
|
|||||||
|
|
||||||
Run `git status --porcelain`. If non-empty, offer to stash or commit for them (AskUserQuestion: "Stash changes" / "Commit changes" / "I'll handle it"). If they want to commit, stage and commit with a descriptive message. If they want to stash, run `git stash push -m "pre-migration stash"`.
|
Run `git status --porcelain`. If non-empty, offer to stash or commit for them (AskUserQuestion: "Stash changes" / "Commit changes" / "I'll handle it"). If they want to commit, stage and commit with a descriptive message. If they want to stash, run `git stash push -m "pre-migration stash"`.
|
||||||
|
|
||||||
Check remotes with `git remote -v`. If `upstream` is missing, ask for the URL (default: `https://github.com/qwibitai/nanoclaw.git`), add it, then `git fetch upstream --prune`.
|
Check remotes with `git remote -v`. If `upstream` is missing, ask for the URL (default: `https://github.com/nanocoai/nanoclaw.git`), add it, then `git fetch upstream --prune`.
|
||||||
|
|
||||||
Detect upstream branch: check `git branch -r | grep upstream/` for `main` or `master`. Store as UPSTREAM_BRANCH.
|
Detect upstream branch: check `git branch -r | grep upstream/` for `main` or `master`. Store as UPSTREAM_BRANCH.
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ Run `/update-nanoclaw` in Claude Code.
|
|||||||
|
|
||||||
## How it works
|
## How it works
|
||||||
|
|
||||||
**Preflight**: checks for clean working tree (`git status --porcelain`). If `upstream` remote is missing, asks you for the URL (defaults to `https://github.com/qwibitai/nanoclaw.git`) and adds it. Detects the upstream branch name (`main` or `master`).
|
**Preflight**: checks for clean working tree (`git status --porcelain`). If `upstream` remote is missing, asks you for the URL (defaults to `https://github.com/nanocoai/nanoclaw.git`) and adds it. Detects the upstream branch name (`main` or `master`).
|
||||||
|
|
||||||
**Backup**: creates a timestamped backup branch and tag (`backup/pre-update-<hash>-<timestamp>`, `pre-update-<hash>-<timestamp>`) before touching anything. Safe to run multiple times.
|
**Backup**: creates a timestamped backup branch and tag (`backup/pre-update-<hash>-<timestamp>`, `pre-update-<hash>-<timestamp>`) before touching anything. Safe to run multiple times.
|
||||||
|
|
||||||
@@ -69,7 +69,7 @@ If output is non-empty:
|
|||||||
Confirm remotes:
|
Confirm remotes:
|
||||||
- `git remote -v`
|
- `git remote -v`
|
||||||
If `upstream` is missing:
|
If `upstream` is missing:
|
||||||
- Ask the user for the upstream repo URL (default: `https://github.com/qwibitai/nanoclaw.git`).
|
- Ask the user for the upstream repo URL (default: `https://github.com/nanocoai/nanoclaw.git`).
|
||||||
- Add it: `git remote add upstream <user-provided-url>`
|
- Add it: `git remote add upstream <user-provided-url>`
|
||||||
- Then: `git fetch upstream --prune`
|
- Then: `git fetch upstream --prune`
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ Check remotes:
|
|||||||
- `git remote -v`
|
- `git remote -v`
|
||||||
|
|
||||||
If `upstream` is missing:
|
If `upstream` is missing:
|
||||||
- Ask the user for the upstream repo URL (default: `https://github.com/qwibitai/nanoclaw.git`).
|
- Ask the user for the upstream repo URL (default: `https://github.com/nanocoai/nanoclaw.git`).
|
||||||
- `git remote add upstream <url>`
|
- `git remote add upstream <url>`
|
||||||
|
|
||||||
Fetch:
|
Fetch:
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ git remote -v
|
|||||||
If `upstream` is missing, add it:
|
If `upstream` is missing, add it:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git remote add upstream https://github.com/qwibitai/nanoclaw.git
|
git remote add upstream https://github.com/nanocoai/nanoclaw.git
|
||||||
```
|
```
|
||||||
|
|
||||||
### Merge the skill branch
|
### Merge the skill branch
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ NanoClaw provides that same core functionality, but in a codebase small enough t
|
|||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/qwibitai/nanoclaw.git nanoclaw-v2
|
git clone https://github.com/nanocoai/nanoclaw.git nanoclaw-v2
|
||||||
cd nanoclaw-v2
|
cd nanoclaw-v2
|
||||||
bash nanoclaw.sh
|
bash nanoclaw.sh
|
||||||
```
|
```
|
||||||
@@ -39,7 +39,7 @@ bash nanoclaw.sh
|
|||||||
Run from a fresh v2 checkout next to your v1 install:
|
Run from a fresh v2 checkout next to your v1 install:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/qwibitai/nanoclaw.git nanoclaw-v2
|
git clone https://github.com/nanocoai/nanoclaw.git nanoclaw-v2
|
||||||
cd nanoclaw-v2
|
cd nanoclaw-v2
|
||||||
bash migrate-v2.sh
|
bash migrate-v2.sh
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ NanoClawは同じコア機能を提供しますが、理解できる規模のコ
|
|||||||
## クイックスタート
|
## クイックスタート
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/qwibitai/nanoclaw.git nanoclaw-v2
|
git clone https://github.com/nanocoai/nanoclaw.git nanoclaw-v2
|
||||||
cd nanoclaw-v2
|
cd nanoclaw-v2
|
||||||
bash nanoclaw.sh
|
bash nanoclaw.sh
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ NanoClaw 用一个您能轻松理解的代码库提供了同样的核心功能
|
|||||||
## 快速开始
|
## 快速开始
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/qwibitai/nanoclaw.git nanoclaw-v2
|
git clone https://github.com/nanocoai/nanoclaw.git nanoclaw-v2
|
||||||
cd nanoclaw-v2
|
cd nanoclaw-v2
|
||||||
bash nanoclaw.sh
|
bash nanoclaw.sh
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -386,7 +386,7 @@ async function processQuery(
|
|||||||
// reminder back into the live query so the next turn re-anchors
|
// reminder back into the live query so the next turn re-anchors
|
||||||
// on the destination model. Only do this when there's >1
|
// on the destination model. Only do this when there's >1
|
||||||
// destination — single-destination groups have a fallback that
|
// destination — single-destination groups have a fallback that
|
||||||
// works without wrapping. See qwibitai/nanoclaw#2325.
|
// works without wrapping. See nanocoai/nanoclaw#2325.
|
||||||
const destinations = getAllDestinations();
|
const destinations = getAllDestinations();
|
||||||
if (destinations.length > 1) {
|
if (destinations.length > 1) {
|
||||||
const names = destinations.map((d) => d.name).join(', ');
|
const names = destinations.map((d) => d.name).join(', ');
|
||||||
|
|||||||
@@ -95,6 +95,6 @@ export type ProviderEvent =
|
|||||||
* The poll-loop reacts by injecting a destination reminder back into
|
* The poll-loop reacts by injecting a destination reminder back into
|
||||||
* the live query so the agent doesn't drop `<message to="…">` wrapping
|
* the live query so the agent doesn't drop `<message to="…">` wrapping
|
||||||
* after compaction. Distinct from `result` so it doesn't mark the turn
|
* after compaction. Distinct from `result` so it doesn't mark the turn
|
||||||
* completed or get dispatched as a chat message. See qwibitai/nanoclaw#2325.
|
* completed or get dispatched as a chat message. See nanocoai/nanoclaw#2325.
|
||||||
*/
|
*/
|
||||||
| { type: 'compacted'; text: string };
|
| { type: 'compacted'; text: string };
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Structure
|
## Structure
|
||||||
|
|
||||||
**`qwibitai/nanoclaw`** (upstream) — core engine with skill definitions (`.claude/skills/`). No channel code on `main`.
|
**`nanocoai/nanoclaw`** (upstream) — core engine with skill definitions (`.claude/skills/`). No channel code on `main`.
|
||||||
|
|
||||||
**Channel forks** (`nanoclaw-whatsapp`, `nanoclaw-telegram`, `nanoclaw-slack`, etc.) — each fork = upstream + one channel's code applied. Users clone upstream, then merge a fork into their clone to add a channel.
|
**Channel forks** (`nanoclaw-whatsapp`, `nanoclaw-telegram`, `nanoclaw-slack`, etc.) — each fork = upstream + one channel's code applied. Users clone upstream, then merge a fork into their clone to add a channel.
|
||||||
|
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ NanoClaw must live inside the workspace directory — Docker-in-Docker can only
|
|||||||
```bash
|
```bash
|
||||||
# Clone to home first (virtiofs can corrupt git pack files during clone)
|
# Clone to home first (virtiofs can corrupt git pack files during clone)
|
||||||
cd ~
|
cd ~
|
||||||
git clone https://github.com/qwibitai/nanoclaw.git
|
git clone https://github.com/nanocoai/nanoclaw.git
|
||||||
|
|
||||||
# Replace with YOUR workspace path (the host path you passed to `docker sandbox create`)
|
# Replace with YOUR workspace path (the host path you passed to `docker sandbox create`)
|
||||||
WORKSPACE=/Users/you/nanoclaw-workspace
|
WORKSPACE=/Users/you/nanoclaw-workspace
|
||||||
@@ -347,7 +347,7 @@ docker sandbox network proxy <sandbox-name> \
|
|||||||
### Git clone fails with "inflate: data stream error"
|
### Git clone fails with "inflate: data stream error"
|
||||||
Clone to a non-workspace path first, then move:
|
Clone to a non-workspace path first, then move:
|
||||||
```bash
|
```bash
|
||||||
cd ~ && git clone https://github.com/qwibitai/nanoclaw.git && mv nanoclaw /path/to/workspace/nanoclaw
|
cd ~ && git clone https://github.com/nanocoai/nanoclaw.git && mv nanoclaw /path/to/workspace/nanoclaw
|
||||||
```
|
```
|
||||||
|
|
||||||
### WhatsApp QR code doesn't display
|
### WhatsApp QR code doesn't display
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ This replaces the previous `skills-engine/` system (three-way file merging, `.na
|
|||||||
|
|
||||||
### Repository structure
|
### Repository structure
|
||||||
|
|
||||||
The upstream repo (`qwibitai/nanoclaw`) maintains:
|
The upstream repo (`nanocoai/nanoclaw`) maintains:
|
||||||
|
|
||||||
- `main` — core NanoClaw (no skill code)
|
- `main` — core NanoClaw (no skill code)
|
||||||
- `skill/discord` — main + Discord integration
|
- `skill/discord` — main + Discord integration
|
||||||
@@ -46,7 +46,7 @@ Skills are split into two categories:
|
|||||||
**Feature skills** (in marketplace, installed on demand):
|
**Feature skills** (in marketplace, installed on demand):
|
||||||
- `/add-discord`, `/add-telegram`, `/add-slack`, `/add-gmail`, etc.
|
- `/add-discord`, `/add-telegram`, `/add-slack`, `/add-gmail`, etc.
|
||||||
- Each has a SKILL.md with setup instructions and a corresponding `skill/*` branch with code
|
- Each has a SKILL.md with setup instructions and a corresponding `skill/*` branch with code
|
||||||
- Live in the marketplace repo (`qwibitai/nanoclaw-skills`)
|
- Live in the marketplace repo (`nanocoai/nanoclaw-skills`)
|
||||||
|
|
||||||
Users never interact with the marketplace directly. The operational skills `/setup` and `/customize` handle plugin installation transparently:
|
Users never interact with the marketplace directly. The operational skills `/setup` and `/customize` handle plugin installation transparently:
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ NanoClaw's `.claude/settings.json` registers the official marketplace:
|
|||||||
"nanoclaw-skills": {
|
"nanoclaw-skills": {
|
||||||
"source": {
|
"source": {
|
||||||
"source": "github",
|
"source": "github",
|
||||||
"repo": "qwibitai/nanoclaw-skills"
|
"repo": "nanocoai/nanoclaw-skills"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -88,7 +88,7 @@ NanoClaw's `.claude/settings.json` registers the official marketplace:
|
|||||||
The marketplace repo uses Claude Code's plugin structure:
|
The marketplace repo uses Claude Code's plugin structure:
|
||||||
|
|
||||||
```
|
```
|
||||||
qwibitai/nanoclaw-skills/
|
nanocoai/nanoclaw-skills/
|
||||||
.claude-plugin/
|
.claude-plugin/
|
||||||
marketplace.json # Plugin catalog
|
marketplace.json # Plugin catalog
|
||||||
plugins/
|
plugins/
|
||||||
@@ -213,7 +213,7 @@ A GitHub Action runs on every push to `main`:
|
|||||||
|
|
||||||
### New users (recommended)
|
### New users (recommended)
|
||||||
|
|
||||||
1. Fork `qwibitai/nanoclaw` on GitHub (click the Fork button)
|
1. Fork `nanocoai/nanoclaw` on GitHub (click the Fork button)
|
||||||
2. Clone your fork:
|
2. Clone your fork:
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/<you>/nanoclaw.git
|
git clone https://github.com/<you>/nanoclaw.git
|
||||||
@@ -229,9 +229,9 @@ Forking is recommended because it gives users a remote to push their customizati
|
|||||||
|
|
||||||
### Existing users migrating from clone
|
### Existing users migrating from clone
|
||||||
|
|
||||||
Users who previously ran `git clone https://github.com/qwibitai/nanoclaw.git` and have local customizations:
|
Users who previously ran `git clone https://github.com/nanocoai/nanoclaw.git` and have local customizations:
|
||||||
|
|
||||||
1. Fork `qwibitai/nanoclaw` on GitHub
|
1. Fork `nanocoai/nanoclaw` on GitHub
|
||||||
2. Reroute remotes:
|
2. Reroute remotes:
|
||||||
```bash
|
```bash
|
||||||
git remote rename origin upstream
|
git remote rename origin upstream
|
||||||
@@ -239,7 +239,7 @@ Users who previously ran `git clone https://github.com/qwibitai/nanoclaw.git` an
|
|||||||
git push --force origin main
|
git push --force origin main
|
||||||
```
|
```
|
||||||
The `--force` is needed because the fresh fork's main is at upstream's latest, but the user wants their (possibly behind) version. The fork was just created so there's nothing to lose.
|
The `--force` is needed because the fresh fork's main is at upstream's latest, but the user wants their (possibly behind) version. The fork was just created so there's nothing to lose.
|
||||||
3. From this point, `origin` = their fork, `upstream` = qwibitai/nanoclaw
|
3. From this point, `origin` = their fork, `upstream` = nanocoai/nanoclaw
|
||||||
|
|
||||||
### Existing users migrating from the old skills engine
|
### Existing users migrating from the old skills engine
|
||||||
|
|
||||||
@@ -316,7 +316,7 @@ git fetch upstream main
|
|||||||
git checkout -b my-fix upstream/main
|
git checkout -b my-fix upstream/main
|
||||||
# Make changes
|
# Make changes
|
||||||
git push origin my-fix
|
git push origin my-fix
|
||||||
# Create PR from my-fix to qwibitai/nanoclaw:main
|
# Create PR from my-fix to nanocoai/nanoclaw:main
|
||||||
```
|
```
|
||||||
|
|
||||||
Standard fork contribution workflow. Their custom changes stay on their main and don't leak into the PR.
|
Standard fork contribution workflow. Their custom changes stay on their main and don't leak into the PR.
|
||||||
@@ -327,7 +327,7 @@ The flow below is for **feature skills** (branch-based). For utility skills (sel
|
|||||||
|
|
||||||
### Contributor flow (feature skills)
|
### Contributor flow (feature skills)
|
||||||
|
|
||||||
1. Fork `qwibitai/nanoclaw`
|
1. Fork `nanocoai/nanoclaw`
|
||||||
2. Branch from `main`
|
2. Branch from `main`
|
||||||
3. Make the code changes (new channel file, modified integration points, updated package.json, .env.example additions, etc.)
|
3. Make the code changes (new channel file, modified integration points, updated package.json, .env.example additions, etc.)
|
||||||
4. Open a PR to `main`
|
4. Open a PR to `main`
|
||||||
@@ -345,7 +345,7 @@ When a skill PR is reviewed and approved:
|
|||||||
```
|
```
|
||||||
2. Force-push to the contributor's PR branch, replacing it with a single commit that adds the contributor to `CONTRIBUTORS.md` (removing all code changes)
|
2. Force-push to the contributor's PR branch, replacing it with a single commit that adds the contributor to `CONTRIBUTORS.md` (removing all code changes)
|
||||||
3. Merge the slimmed PR into `main` (just the contributor addition)
|
3. Merge the slimmed PR into `main` (just the contributor addition)
|
||||||
4. Add the skill's SKILL.md to the marketplace repo (`qwibitai/nanoclaw-skills`)
|
4. Add the skill's SKILL.md to the marketplace repo (`nanocoai/nanoclaw-skills`)
|
||||||
|
|
||||||
This way:
|
This way:
|
||||||
- The contributor gets merge credit (their PR is merged)
|
- The contributor gets merge credit (their PR is merged)
|
||||||
@@ -388,7 +388,7 @@ If the community contributor is trusted, they can open a PR to add their marketp
|
|||||||
"nanoclaw-skills": {
|
"nanoclaw-skills": {
|
||||||
"source": {
|
"source": {
|
||||||
"source": "github",
|
"source": "github",
|
||||||
"repo": "qwibitai/nanoclaw-skills"
|
"repo": "nanocoai/nanoclaw-skills"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"alice-nanoclaw-skills": {
|
"alice-nanoclaw-skills": {
|
||||||
@@ -434,7 +434,7 @@ A flavor is a curated fork of NanoClaw — a combination of skills, custom chang
|
|||||||
|
|
||||||
### Creating a flavor
|
### Creating a flavor
|
||||||
|
|
||||||
1. Fork `qwibitai/nanoclaw`
|
1. Fork `nanocoai/nanoclaw`
|
||||||
2. Merge in the skills you want
|
2. Merge in the skills you want
|
||||||
3. Make custom changes (trigger word, prompts, integrations, etc.)
|
3. Make custom changes (trigger word, prompts, integrations, etc.)
|
||||||
4. Your fork's `main` IS the flavor
|
4. Your fork's `main` IS the flavor
|
||||||
@@ -462,7 +462,7 @@ Then setup continues normally (dependencies, auth, container, service).
|
|||||||
|
|
||||||
After installation, the user's fork has three remotes:
|
After installation, the user's fork has three remotes:
|
||||||
- `origin` — their fork (push customizations here)
|
- `origin` — their fork (push customizations here)
|
||||||
- `upstream` — `qwibitai/nanoclaw` (core updates)
|
- `upstream` — `nanocoai/nanoclaw` (core updates)
|
||||||
- `<flavor-name>` — the flavor fork (flavor updates)
|
- `<flavor-name>` — the flavor fork (flavor updates)
|
||||||
|
|
||||||
### Updating a flavor
|
### Updating a flavor
|
||||||
@@ -538,14 +538,14 @@ Operational skills (`setup`, `debug`, `update-nanoclaw`, `customize`, `update-sk
|
|||||||
|
|
||||||
Before:
|
Before:
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/qwibitai/NanoClaw.git
|
git clone https://github.com/nanocoai/NanoClaw.git
|
||||||
cd NanoClaw
|
cd NanoClaw
|
||||||
claude
|
claude
|
||||||
```
|
```
|
||||||
|
|
||||||
After:
|
After:
|
||||||
```
|
```
|
||||||
1. Fork qwibitai/nanoclaw on GitHub
|
1. Fork nanocoai/nanoclaw on GitHub
|
||||||
2. git clone https://github.com/<you>/nanoclaw.git
|
2. git clone https://github.com/<you>/nanoclaw.git
|
||||||
3. cd nanoclaw
|
3. cd nanoclaw
|
||||||
4. claude
|
4. claude
|
||||||
@@ -556,8 +556,8 @@ After:
|
|||||||
|
|
||||||
Updates to the setup flow:
|
Updates to the setup flow:
|
||||||
|
|
||||||
- Check if `upstream` remote exists; if not, add it: `git remote add upstream https://github.com/qwibitai/nanoclaw.git`
|
- Check if `upstream` remote exists; if not, add it: `git remote add upstream https://github.com/nanocoai/nanoclaw.git`
|
||||||
- Check if `origin` points to the user's fork (not qwibitai). If it points to qwibitai, guide them through the fork migration.
|
- Check if `origin` points to the user's fork (not nanocoai). If it points to nanocoai, guide them through the fork migration.
|
||||||
- **Install marketplace plugin:** `claude plugin install nanoclaw-skills@nanoclaw-skills --scope project` — makes all feature skills available (hot-loaded, no restart)
|
- **Install marketplace plugin:** `claude plugin install nanoclaw-skills@nanoclaw-skills --scope project` — makes all feature skills available (hot-loaded, no restart)
|
||||||
- **Ask which channels to add:** present channel options (Discord, Telegram, Slack, WhatsApp, Gmail), run corresponding `/add-*` skills for selected channels
|
- **Ask which channels to add:** present channel options (Discord, Telegram, Slack, WhatsApp, Gmail), run corresponding `/add-*` skills for selected channels
|
||||||
- **Offer dependent skills:** after a channel is set up, offer relevant add-ons (e.g., Agent Swarm after Telegram, voice transcription after WhatsApp)
|
- **Offer dependent skills:** after a channel is set up, offer relevant add-ons (e.g., Agent Swarm after Telegram, voice transcription after WhatsApp)
|
||||||
@@ -573,7 +573,7 @@ Marketplace configuration so the official marketplace is auto-registered:
|
|||||||
"nanoclaw-skills": {
|
"nanoclaw-skills": {
|
||||||
"source": {
|
"source": {
|
||||||
"source": "github",
|
"source": "github",
|
||||||
"repo": "qwibitai/nanoclaw-skills"
|
"repo": "nanocoai/nanoclaw-skills"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -601,7 +601,7 @@ Operational skills (`setup`, `debug`, `update-nanoclaw`, `customize`, `update-sk
|
|||||||
|
|
||||||
### New infrastructure
|
### New infrastructure
|
||||||
|
|
||||||
- **Marketplace repo** (`qwibitai/nanoclaw-skills`) — single Claude Code plugin bundling SKILL.md files for all feature skills
|
- **Marketplace repo** (`nanocoai/nanoclaw-skills`) — single Claude Code plugin bundling SKILL.md files for all feature skills
|
||||||
- **CI GitHub Action** — merge-forward `main` into all `skill/*` branches on every push to `main`, using Claude (Haiku) for conflict resolution
|
- **CI GitHub Action** — merge-forward `main` into all `skill/*` branches on every push to `main`, using Claude (Haiku) for conflict resolution
|
||||||
- **`/update-skills` skill** — checks for and applies skill branch updates using git history
|
- **`/update-skills` skill** — checks for and applies skill branch updates using git history
|
||||||
- **`CONTRIBUTORS.md`** — tracks skill contributors
|
- **`CONTRIBUTORS.md`** — tracks skill contributors
|
||||||
@@ -650,7 +650,7 @@ Users only need to re-merge a skill branch if the skill itself was updated (not
|
|||||||
> **We now recommend forking instead of cloning.** This gives you a remote to push your customizations to.
|
> **We now recommend forking instead of cloning.** This gives you a remote to push your customizations to.
|
||||||
>
|
>
|
||||||
> **If you currently have a clone with local changes**, migrate to a fork:
|
> **If you currently have a clone with local changes**, migrate to a fork:
|
||||||
> 1. Fork `qwibitai/nanoclaw` on GitHub
|
> 1. Fork `nanocoai/nanoclaw` on GitHub
|
||||||
> 2. Run:
|
> 2. Run:
|
||||||
> ```
|
> ```
|
||||||
> git remote rename origin upstream
|
> git remote rename origin upstream
|
||||||
@@ -668,7 +668,7 @@ Users only need to re-merge a skill branch if the skill itself was updated (not
|
|||||||
> **Contributing skills**
|
> **Contributing skills**
|
||||||
>
|
>
|
||||||
> To contribute a skill:
|
> To contribute a skill:
|
||||||
> 1. Fork `qwibitai/nanoclaw`
|
> 1. Fork `nanocoai/nanoclaw`
|
||||||
> 2. Branch from `main` and make your code changes
|
> 2. Branch from `main` and make your code changes
|
||||||
> 3. Open a regular PR
|
> 3. Open a regular PR
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -240,7 +240,7 @@ if [ "$(uname -s)" = "Linux" ] && [ "$(id -u)" -eq 0 ]; then
|
|||||||
printf ' %s\n' "$(dim '3. Enable passwordless sudo: echo "nanoclaw ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/nanoclaw')"
|
printf ' %s\n' "$(dim '3. Enable passwordless sudo: echo "nanoclaw ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/nanoclaw')"
|
||||||
printf ' %s\n' "$(dim '4. Log out: exit')"
|
printf ' %s\n' "$(dim '4. Log out: exit')"
|
||||||
printf ' %s\n' "$(dim '5. Log back in as the new user: ssh nanoclaw@your-server')"
|
printf ' %s\n' "$(dim '5. Log back in as the new user: ssh nanoclaw@your-server')"
|
||||||
printf ' %s\n' "$(dim '6. Clone the repo: git clone https://github.com/qwibitai/nanoclaw.git && cd nanoclaw')"
|
printf ' %s\n' "$(dim '6. Clone the repo: git clone https://github.com/nanocoai/nanoclaw.git && cd nanoclaw')"
|
||||||
printf ' %s\n\n' "$(dim '7. Re-run setup: bash nanoclaw.sh')"
|
printf ' %s\n\n' "$(dim '7. Re-run setup: bash nanoclaw.sh')"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ A GitHub Action that calculates the size of your codebase in terms of tokens and
|
|||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: qwibitai/nanoclaw/repo-tokens@v1
|
- uses: nanocoai/nanoclaw/repo-tokens@v1
|
||||||
with:
|
with:
|
||||||
include: 'src/**/*.ts'
|
include: 'src/**/*.ts'
|
||||||
exclude: 'src/**/*.test.ts'
|
exclude: 'src/**/*.test.ts'
|
||||||
@@ -34,7 +34,7 @@ Repos using repo-tokens:
|
|||||||
|
|
||||||
| Repo | Badge |
|
| Repo | Badge |
|
||||||
|------|-------|
|
|------|-------|
|
||||||
| [NanoClaw](https://github.com/qwibitai/NanoClaw) |  |
|
| [NanoClaw](https://github.com/nanocoai/NanoClaw) |  |
|
||||||
|
|
||||||
### Full workflow example
|
### Full workflow example
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
python-version: '3.12'
|
python-version: '3.12'
|
||||||
|
|
||||||
- uses: qwibitai/nanoclaw/repo-tokens@v1
|
- uses: nanocoai/nanoclaw/repo-tokens@v1
|
||||||
id: tokens
|
id: tokens
|
||||||
with:
|
with:
|
||||||
include: 'src/**/*.ts'
|
include: 'src/**/*.ts'
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ runs:
|
|||||||
with open(readme_path, "r", encoding="utf-8") as f:
|
with open(readme_path, "r", encoding="utf-8") as f:
|
||||||
content = f.read()
|
content = f.read()
|
||||||
|
|
||||||
repo_tokens_url = "https://github.com/qwibitai/nanoclaw/tree/main/repo-tokens"
|
repo_tokens_url = "https://github.com/nanocoai/nanoclaw/tree/main/repo-tokens"
|
||||||
linked_badge = f'<a href="{repo_tokens_url}">{badge}</a>'
|
linked_badge = f'<a href="{repo_tokens_url}">{badge}</a>'
|
||||||
new_content = marker_re.sub(rf"\1{linked_badge}\2", content)
|
new_content = marker_re.sub(rf"\1{linked_badge}\2", content)
|
||||||
|
|
||||||
@@ -148,7 +148,7 @@ runs:
|
|||||||
lx = label_w // 2
|
lx = label_w // 2
|
||||||
vx = label_w + value_w // 2
|
vx = label_w + value_w // 2
|
||||||
|
|
||||||
repo_tokens_url = "https://github.com/qwibitai/nanoclaw/tree/main/repo-tokens"
|
repo_tokens_url = "https://github.com/nanocoai/nanoclaw/tree/main/repo-tokens"
|
||||||
|
|
||||||
svg = f'''<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="{total_w}" height="20" role="img" aria-label="{full_desc}">
|
svg = f'''<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="{total_w}" height="20" role="img" aria-label="{full_desc}">
|
||||||
<title>{full_desc}</title>
|
<title>{full_desc}</title>
|
||||||
|
|||||||
8
setup/lib/channels-remote.sh
Normal file → Executable file
8
setup/lib/channels-remote.sh
Normal file → Executable file
@@ -6,10 +6,10 @@
|
|||||||
# `upstream`, with `origin` pointing at the user's fork. The channels branch
|
# `upstream`, with `origin` pointing at the user's fork. The channels branch
|
||||||
# only lives upstream, so a hardcoded `git fetch origin channels` fails for
|
# only lives upstream, so a hardcoded `git fetch origin channels` fails for
|
||||||
# forks. This helper walks `git remote -v`, picks the remote whose URL points
|
# forks. This helper walks `git remote -v`, picks the remote whose URL points
|
||||||
# at qwibitai/nanoclaw, and prints its name.
|
# at nanocoai/nanoclaw, and prints its name.
|
||||||
#
|
#
|
||||||
# Fallback: if no existing remote matches, add `upstream` pointing at
|
# Fallback: if no existing remote matches, add `upstream` pointing at
|
||||||
# github.com/qwibitai/nanoclaw and return that — keeps forks without an
|
# github.com/nanocoai/nanoclaw and return that — keeps forks without an
|
||||||
# explicit upstream configured working on the first try.
|
# explicit upstream configured working on the first try.
|
||||||
#
|
#
|
||||||
# Explicit override: set NANOCLAW_CHANNELS_REMOTE=<name> to skip detection.
|
# Explicit override: set NANOCLAW_CHANNELS_REMOTE=<name> to skip detection.
|
||||||
@@ -23,7 +23,7 @@ resolve_channels_remote() {
|
|||||||
local remote url
|
local remote url
|
||||||
while IFS=$'\t' read -r remote url; do
|
while IFS=$'\t' read -r remote url; do
|
||||||
case "$url" in
|
case "$url" in
|
||||||
*qwibitai/nanoclaw*)
|
*qwibitai/nanoclaw*|*nanocoai/nanoclaw*)
|
||||||
printf '%s' "$remote"
|
printf '%s' "$remote"
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
@@ -33,6 +33,6 @@ resolve_channels_remote() {
|
|||||||
# No matching remote — add `upstream` and use it. Silent on failure so
|
# No matching remote — add `upstream` and use it. Silent on failure so
|
||||||
# callers see the eventual `git fetch` error rather than a cryptic
|
# callers see the eventual `git fetch` error rather than a cryptic
|
||||||
# remote-add failure.
|
# remote-add failure.
|
||||||
git remote add upstream https://github.com/qwibitai/nanoclaw.git 2>/dev/null || true
|
git remote add upstream https://github.com/nanocoai/nanoclaw.git 2>/dev/null || true
|
||||||
printf '%s' "upstream"
|
printf '%s' "upstream"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ async function getJson<T>(url: string, token: string, fetchImpl: FetchFn): Promi
|
|||||||
const res = await fetchImpl(url, {
|
const res = await fetchImpl(url, {
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bot ${token}`,
|
Authorization: `Bot ${token}`,
|
||||||
'User-Agent': 'NanoClaw-Migration (https://github.com/qwibitai/nanoclaw, 2.x)',
|
'User-Agent': 'NanoClaw-Migration (https://github.com/nanocoai/nanoclaw, 2.x)',
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
if (!res.ok) {
|
if (!res.ok) {
|
||||||
|
|||||||
Reference in New Issue
Block a user