Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 9 additions & 10 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
# Channel plugins (bidirectional DM bridge)
# Channel plugins (bidirectional DM bridge via --channels)

## ─── Telegram ────────────────────────────────────
TELEGRAM_BOT_TOKEN=

## ─── Discord ─────────────────────────────────────
DISCORD_BOT_TOKEN=

# MCP plugins (outbound tool integrations, not channels)
# Broker channels (standalone message broker, not --channels)

## ─── Slack (MCP only — OAuth preferred, tokens for direct API) ───
# SLACK_BOT_TOKEN=
# SLACK_APP_TOKEN=
## ─── Slack (broker: polling DMs, invokes claude -p) ───
## Slack Bot Token (from https://api.slack.com/apps)
SLACK_BOT_TOKEN=

# Planned

## ─── LINE ────────────────────────────────────────
# LINE_CHANNEL_ACCESS_TOKEN=
# LINE_CHANNEL_SECRET=
## ─── LINE (broker: webhook server, invokes claude -p) ───
## LINE Developers Console (from https://developers.line.biz/console/)
LINE_CHANNEL_ACCESS_TOKEN=
LINE_CHANNEL_SECRET=
60 changes: 58 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,71 @@ All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).

## [0.3.0] - 2026-03-23

### Added

- LINE channel integration via message broker (webhook + `claude -p`)
- Webhook server with signature verification
- Image download and analysis support
- Group chat support with access control
- Reply API (free) with Push API fallback
- Rate limiting and busy guard
- LINE documentation (plan, install) in EN and zh-TW
- Log file persistence for both Slack and LINE brokers
- Tool access (`--allowedTools`) and system prompt for broker channels
- GitHub topic: `line-bot`

## [0.2.0] - 2026-03-22

### Added

- Slack channel integration via message broker (polling + `claude -p`)
- Polls Slack DMs, pipes to Claude CLI, replies in thread
- Image attachment download and analysis
- Access control via `access.json` allowlist
- Cursor tracking for message deduplication
- Slack token verification script (`scripts/verify_slack.sh`)
- Plugin architecture documentation (EN + zh-TW)
- Pre-push reviewer agent (`.claude/agents/pre-push-reviewer.md`)
- GitHub community files (CONTRIBUTING, SECURITY, issue/PR templates)
- README badges (CI, license, issues, stars)
- Usage examples and screenshots sections
- Prerequisites doc (shared Bun/Claude Code setup)
- All `install.zh-tw.md` translations

### Changed

- Rename `*_zh-tw.md` to `*.zh-tw.md` (BCP 47 convention)
- Move `docs/discord/issue.md` to `docs/issues.md` (cross-channel)
- Slack status: Planned → Broker (not a channel plugin)
- `.env.example`: separate channel plugins vs broker channels
- `start.sh`: support broker channels (Slack, LINE)

### Fixed

- CI markdownlint config (`.markdownlint-cli2.jsonc`)
- shellcheck SC1090 warning in `verify_slack.sh`

### Documented

- Issue #1: STATE_DIR path mismatch (PR #866 submitted)
- Issue #2: Token leakage via command arguments
- Issue #3: Slack plugin is MCP-only, not a channel plugin
- Issue #4: Claude Code `--channels server:` dev mode never approved

## [0.1.0] - 2026-03-21

### Added

- Telegram channel integration via Claude Code Channels plugin
- Bidirectional messaging (Telegram <-> Claude Code session)
- Approval workflow pattern (approve/reject via Telegram)
- Discord channel integration via Claude Code Channels plugin
- Bidirectional messaging (Telegram/Discord <-> Claude Code session)
- Approval workflow pattern (approve/reject via messaging)
- Multi-channel launcher script (`start.sh`)
- Per-channel documentation structure (`docs/<channel>/`)
- MIT license

[0.3.0]: https://github.com/osisdie/claude-code-channels/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/osisdie/claude-code-channels/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/osisdie/claude-code-channels/releases/tag/v0.1.0
24 changes: 21 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ A project-level setup for running [Claude Code](https://docs.anthropic.com/en/do
| Telegram | Ready | [docs/telegram/](docs/telegram/) |
| Discord | Ready | [docs/discord/](docs/discord/) |
| Slack | Broker | [docs/slack/](docs/slack/) |
| LINE | Planned | - |
| LINE | Broker | [docs/line/](docs/line/) |

## Quick Start

Expand Down Expand Up @@ -129,10 +129,20 @@ You: approve
│ │ ├── plan.zh-tw.md # Planning doc (zh-TW)
│ │ ├── install.md # Installation & integration notes
│ │ └── install.zh-tw.md # Installation notes (zh-TW)
│ └── slack/
│ ├── plan.md # Integration plan (MCP only, not channel)
│ ├── slack/
│ │ ├── plan.md # Integration plan (MCP only, not channel)
│ │ ├── install.md # Installation & integration notes
│ │ └── install.zh-tw.md # Installation notes (zh-TW)
│ └── line/
│ ├── plan.md # Integration planning doc
│ ├── plan.zh-tw.md # Planning doc (zh-TW)
│ ├── install.md # Installation & integration notes
│ └── install.zh-tw.md # Installation notes (zh-TW)
├── external_plugins/
│ ├── slack-channel/
│ │ └── broker.ts # Slack message broker
│ └── line-channel/
│ └── broker.ts # LINE webhook broker
├── scripts/
│ └── verify_slack.sh # Slack token verification & smoke test
├── .github/
Expand Down Expand Up @@ -168,6 +178,12 @@ You: approve
|-----|-------|
| ![Slack Ask](docs/screenshots/slack/ask.png) | ![Slack Reply](docs/screenshots/slack/reply.png) |

### LINE

| Ask (Flower) | Ask (Weather) |
|------|------|
| <img src="docs/screenshots/line/ask_flower.jpg" width="300" alt="LINE Flower"> | <img src="docs/screenshots/line/ask_weather.jpg" width="300" alt="LINE Weather"> |

### Claude Code Terminal

![Claude Code Channel Messages](docs/screenshots/claude_code/channel_messages.png)
Expand All @@ -182,6 +198,8 @@ You: approve
- [Discord -- Planning Document](docs/discord/plan.md)
- [Slack -- Installation & Integration Notes](docs/slack/install.md)
- [Slack -- Planning Document](docs/slack/plan.md)
- [LINE -- Installation & Integration Notes](docs/line/install.md)
- [LINE -- Planning Document](docs/line/plan.md)

### General

Expand Down
18 changes: 15 additions & 3 deletions README.zh-TW.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
| Telegram | 可用 | [docs/telegram/](docs/telegram/) |
| Discord | 可用 | [docs/discord/](docs/discord/) |
| Slack | Broker | [docs/slack/](docs/slack/) |
| LINE | 規劃中 | - |
| LINE | Broker | [docs/line/](docs/line/) |

## 快速開始

Expand Down Expand Up @@ -124,10 +124,20 @@ Bot: "即將執行 `rm -rf dist/` — approve 或 reject?"
│ │ ├── plan.zh-tw.md # 整合規劃文件(zh-TW)
│ │ ├── install.md # 安裝與整合筆記
│ │ └── install.zh-tw.md # 安裝與整合筆記(zh-TW)
│ └── slack/
│ ├── plan.md # 整合規劃(僅 MCP,非 channel)
│ ├── slack/
│ │ ├── plan.md # 整合規劃(僅 MCP,非 channel)
│ │ ├── install.md # 安裝與整合筆記
│ │ └── install.zh-tw.md # 安裝與整合筆記(zh-TW)
│ └── line/
│ ├── plan.md # 整合規劃文件
│ ├── plan.zh-tw.md # 整合規劃文件(zh-TW)
│ ├── install.md # 安裝與整合筆記
│ └── install.zh-tw.md # 安裝與整合筆記(zh-TW)
├── external_plugins/
│ ├── slack-channel/
│ │ └── broker.ts # Slack 訊息 broker
│ └── line-channel/
│ └── broker.ts # LINE webhook broker
├── scripts/
│ └── verify_slack.sh # Slack token 驗證與煙霧測試
├── .github/
Expand Down Expand Up @@ -157,6 +167,8 @@ Bot: "即將執行 `rm -rf dist/` — approve 或 reject?"
- [Discord — 規劃文件](docs/discord/plan.zh-tw.md)
- [Slack — 安裝與整合筆記](docs/slack/install.zh-tw.md)
- [Slack — 規劃文件](docs/slack/plan.md)
- [LINE — 安裝與整合筆記](docs/line/install.zh-tw.md)
- [LINE — 規劃文件](docs/line/plan.zh-tw.md)

### 一般

Expand Down
Binary file added docs/line/create_a_new_channel.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading