claude-video-effects
Claude Code용 51가지 영상 효과, 말하는 클립 삽입 후 /effects orbit 입력, 얼굴 추적·머리 뒤 레이어 제공
오프라인 조용한 Qur'an 리더, Claude Code·Codex 작업 중에도 열리며 정확한 Tanzil 텍스트 제공, 계정·추적 없음
A quiet, offline Qur'an reader that opens while Claude Code or Codex works on your prompt. Exact Tanzil text, no account, no tracking.
플러그인JavaScript · CSSGitHub @rzrizaldy온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Read the Qur'an while your coding agent thinks. A Claude Code + Codex plugin: offline, exact Tanzil text, no account.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Read the Qur'an while your coding agent thinks.
Quran Turn is a plugin for Claude Code and Codex. When you send your agent a prompt, the reader comes down out of your Mac's notch like a curtain, open at the exact ayah you left off. When the agent needs you, a strip slides in and one press of Space takes you back. When the turn ends, your place is saved and the curtain folds back into the notch.README 전문 보기 ↗Read the Qur'an while your coding agent thinks.
Quran Turn is a plugin for Claude Code and Codex. When you send your agent a prompt, the reader comes down out of your Mac's notch like a curtain, open at the exact ayah you left off. When the agent needs you, a strip slides in and one press of Space takes you back. When the turn ends, your place is saved and the curtain folds back into the notch.
The notch is the default on macOS, whichever agent you use. It works the same for Claude Code (terminal or desktop app) and Codex (CLI or app), because it follows the agent's hooks rather than a particular app. On a Mac without a notch it comes out of the middle of the menu bar. On Windows and Linux the reader opens in its own window. A frameless Windows version that drops from the top of the screen is available to try (see The notch).
Requires Node.js 18+. There's nothing to npm install, because Quran Turn has zero dependencies.
Paste this into Claude Code (terminal, or the Code tab in the Claude desktop app):
Install the Quran Turn plugin for me. In the terminal, run `claude plugin marketplace add rzrizaldy/quran-turn` and then `claude plugin install quran-turn@quran-turn`. When both succeed, tell me to restart Claude Code. If the `claude` command isn't available, tell me to type `/plugin marketplace add rzrizaldy/quran-turn` and then `/plugin install quran-turn@quran-turn` myself, one line at a time.
Paste this into Codex (CLI or the Codex app):
Install Quran Turn for Codex. Run `codex plugin marketplace add rzrizaldy/quran-turn`, then `codex plugin add quran-turn@quran-turn`, and confirm it is enabled with `codex plugin list`. Tell me to open interactive `codex`, run `/hooks`, and individually review and trust Quran Turn's UserPromptSubmit, PermissionRequest, PostToolUse, and Stop hooks. Do not trust unrelated hooks or bypass hook trust. Then start a new Codex turn; restart the Codex app first if I use it.
Claude Code: type each line on its own (/plugin accepts one command at a time):
/plugin marketplace add rzrizaldy/quran-turn
/plugin install quran-turn@quran-turn
Codex: in your terminal:
codex plugin marketplace add rzrizaldy/quran-turn
codex plugin add quran-turn@quran-turn
Check codex plugin list for quran-turn@quran-turn with status installed, enabled. Then finish the hook setup:
codex and type /hooks.Installing or enabling the plugin does not trust its hooks. Codex skips untrusted hooks even when codex plugin list says the plugin is enabled. In our Codex CLI test, the reader opened and recorded a turn as codex after the four hooks were trusted, without a trust bypass. During a Codex turn the reader says “Codex is working”; during a Claude turn it says “Claude is working.”
If the reader does not open, check /hooks and codex plugin list first. You can also run node bin/quran-turn open from a source clone to check the reader independently of Codex hooks. Do not use --dangerously-bypass-hook-trust as an installation step.
git clone https://github.com/rzrizaldy/quran-turn
claude --plugin-dir ./quran-turn
Then send any prompt. On macOS the reader comes out of the notch. Elsewhere it opens as a small app window if Chrome, Edge, Brave or Chromium is installed, and in your default browser otherwise. It opens once and is reused, so later turns never open another tab.
you send a prompt ─▶ UserPromptSubmit ─▶ the curtain comes out of the notch · "● Claude · 4m" (teal) · counts ayat
│
agent asks approval ─▶ PermissionRequest ─▶ "Claude needs you" slides in (yellow) · Space takes you back, it folds up
│
you approve, tool runs ─▶ PostToolUse ─▶ the curtain comes back down where you were reading
│
turn ends ─▶ Stop ─▶ place saved · "Claude worked 4 min · saved at 2:157" (green) · folds into the notch
With the reader window instead of the notch (quran-turn surface window, and on Windows or Linux), the window shrinks to a small strip and your agent comes to the front at the same moments.
quran-turn log is only there if you're curious.quran-turn switch off. Window switching is macOS-only for now, and the first time, macOS asks to let your agent's app control your browser.bin/quran-turn hook <event>, print nothing (agents read hook output as context), always exit 0, and take about 40 ms.127.0.0.1:47114 serves the reader. The first hook starts it, and it exits after 30 minutes with no reader connected.CLAUDE_PLUGIN_ROOT as an alias and also sets PLUGIN_ROOT, which is how Quran Turn tells the two apart.The reader lives in your MacBook's notch. It is black like the notch itself, so while nothing is happening you only see a tiny dark-green pill on the notch's bottom edge. The pill breathes while your agent works, turns yellow when the agent needs you and green when the turn is done, and turns teal when your pointer comes near, just before the card peeks out.
2:155).kahfi, the cave, juz 30, 2:255, hal 50 or Arabic words; Enter jumps there. The search is offline and matches names, numbers and the Arabic text; it doesn't search by topic. Browse all 114 surahs opens the full reader.Setup: nothing. The first time the notch opens, Quran Turn compiles its small macOS helper (native/QuranNotch.swift, about 500 lines you can read) on your Mac with the Swift compiler from Apple's Command Line Tools. That takes a few seconds, once. No prebuilt binary ships with the plugin, and the helper needs no permissions. If the Command Line Tools are missing (xcode-select --install adds them), or you're on macOS 11 or older, the reader opens in its window instead.
The helper only draws and animates the black shape. The reading itself is the same page as everywhere else, so the Qur'an text still goes through the SHA-256 check and textContent-only rendering.
Choose where the reader shows up:
quran-turn surface notch # the default on macOS; also brings the notch up right now
quran-turn surface window # the reader window (with Float mode)
quran-turn surface auto # notch on macOS, window elsewhere
Nothing in the notch? Run quran-turn surface notch: it prepares the helper (compiling it the first time) and brings the notch up, or says what's missing. Check xcode-select -p prints a path; if not, xcode-select --install. Anything that went wrong is logged in ~/.quran-turn/error.log.
Windows (experimental). Windows has no notch, so quran-turn surface notch makes the reader drop from the top-centre of the screen instead. It runs in a Microsoft Edge app window with its title bar and frame removed, always on top, and uses nothing beyond what ships with Windows 10/11 (native/notch-win.ps1). It is opt-in while it gets tested on real machines, so please open an issue with what you see.
Float belongs to the window surface (quran-turn surface window, and the default on Windows and Linux). Press Float in the reader (or the F key) and the reader becomes a small ayah card that stays on top of every app, including the Claude desktop app, Codex, Terminal and your editor. Drag it wherever you like, and it stays there.
Float uses Chrome's Document Picture-in-Picture, so it needs Chrome, Edge or Brave, on macOS, Windows or Linux. Opening it takes one click or key press per session, because browsers require that for floating windows. Without Float, the reader works as a regular window, which shrinks to a strip when the agent needs you (macOS).
The first time the reader opens, in the notch or the window, it asks where you'd like to start. After that, press G (or click the counter at the bottom of the window) to go anywhere. One search box understands:
| Type | Goes to |
|---|---|
2:255 | an ayah (Ayat al-Kursi) |
18 · kahfi · yasin · al-mulk · the cave · الكهف | a surah, by number, name or meaning |
juz 30 · j15 | the start of a juz |
hal 50 · page 604 | the start of a page in the Madani mushaf |
قل هو الله احد · الصلاة | ayat containing those Arabic words |
There are one-tap starts for Al-Fatihah, Juz 'Amma, Al-Kahf, Yasin and Al-Mulk, and you can browse by Surah or Juz.
Search is forgiving. Harakat are optional, and modern spelling finds Uthmani spelling ("الصلاة" finds "ٱلصَّلَوٰةَ"). That loosening is used only for matching: every ayah in the results is shown exactly as Tanzil's text. The juz and page starts come straight from Tanzil's metadata.
From the terminal:
quran-turn start juz 30
start accepts anything the search box accepts: start kahfi, start 2:255, start hal 50.
New versions are released automatically, and CHANGELOG.md lists everything that changed (also on quran.allrize.tech). Updating takes one of three routes, and the reader handles the rest.
1. Set it once (Claude Code, recommended). Run /plugin, go to Marketplaces, choose quran-turn and pick Enable auto-update. Claude Code then checks for new versions in the background after it starts. Run /reload-plugins when it tells you, or the update loads the next time you start Claude Code. Third-party marketplaces have auto-update off by default, which is why this step is needed once.
2. Or ask your agent. Paste this into Claude Code:
Update the Quran Turn plugin: run `claude plugin marketplace update quran-turn` and then `claude plugin update quran-turn@quran-turn`. When it says it updated, tell me to run /reload-plugins.
Or paste this into Codex:
Update Quran Turn for Codex. Run `codex plugin marketplace upgrade quran-turn`, then `codex plugin add quran-turn@quran-turn`, and confirm the latest version is enabled with `codex plugin list`. Tell me to restart the Codex app if I use it. In interactive `codex`, run `/hooks` and review any Quran Turn hooks marked new or changed before starting a new turn; do not trust unrelated hooks.
3. Or run the commands yourself (the same ones as above). For Codex:
codex plugin marketplace upgrade quran-turn
codex plugin add quran-turn@quran-turn
codex plugin list
Confirm the latest version is enabled. Restart the Codex app if you use it. In an interactive Codex CLI session, run /hooks and review any Quran Turn hooks marked as new or changed; hook trust is tied to the current definition. Codex updates are a manual step here. Claude Code's marketplace has the auto-update switch described above.
Once the updated plugin is loaded and its hooks are trusted, the next prompt swaps the reader server to the new version and an open reader window reloads on its own. When an update changes the notch helper, it is recompiled once, in a few seconds, and comes back by itself. Your place and reading log in ~/.quran-turn are never touched by an update.
Running Claude Code and Codex side by side, or several sessions? The newest installed version always wins: a session that hasn't reloaded its plugins yet leaves a newer reader alone instead of swapping it back.
Coming from v0.4.0 or earlier? Refresh or close the reader window once after updating, because the self-reload arrived in v0.4.1. From then on it's automatic.
Which version am I on? It's in the reader's footer ("visit quran.allrize.tech for updates · v0.7.5"). Click it and the site tells you whether a newer version exists.
| Key | Action |
|---|---|
← j space | Next ayah while the agent works (Arabic reads right to left) |
space / enter | Back to Claude/Codex, when it needs you or is done |
→ k | Previous ayah |
g | Go to / search: surah, juz, ayah, page or Arabic words |
+ / - | Text size |
d | Toggle light / dark |
f | Float: the always-on-top ayah card |
esc | Close the float card, or fold the notch for this turn |
In the notch, ← / →, space and esc work the same once you've clicked the card, and g or / opens Search right in the card.
quran-turn surface <s> notch · window · auto → where the reader shows up
quran-turn open open the full reader window
quran-turn where your current position → Al-Baqara 2:157 البقرة
quran-turn start <…> start from anywhere → quran-turn start juz 30
quran-turn log [n] your last n turns → Sep 22, 8:42 PM 2:153 → 2:157 4 ayat claude
quran-turn status one line for a status bar → ☾ quran-turn · Al-Baqara 2:157 · reading
quran-turn on | off enable or pause the hooks
quran-turn switch on | off shrink the reader when the agent needs you (macOS)
(From a clone, run these as node bin/quran-turn ….)
quran.allrize.tech/agent has a prompt for a Muse scheduled task. At each of the five prayer times it sends you 5 verses (25 a day) with buttons to mark them read, skip, read more, or mark how far you got. It remembers where you stopped. No account, no API keys, nothing to install.
It runs inside Muse, not this plugin: prayer times come from the public Aladhan API and verses from api.alquran.cloud's quran-uthmani edition, which is the older Tanzil build described under Text accuracy. Quran Turn is not affiliated with Muse.
Everything is plain JSON in ~/.quran-turn/ (override with QURAN_TURN_HOME):
| File | What's in it |
|---|---|
state.json | where you are: {"surah": 2, "ayah": 157} |
agent.json | whether the agent is working, waiting on you, or done |
sessions.jsonl | one line per turn: {"from":"2:153","to":"2:157","ayat":4,"agent":"claude", …} |
config.json | {"enabled": true, "autoOpen": true, "autoSwitch": true, "surface": "auto"} |
notch/ | the compiled notch helper (macOS); delete it any time and it's rebuilt |
Your prompts, code and anything else from your agent session are never stored. Delete these files whenever you like.
data/quran-uthmani.txt is the Tanzil Quran Text (Uthmani) v1.1, downloaded with Tanzil's default options (pause marks and sajdah signs on, rub-el-hizb off). scripts/fetch-quran.sh reproduces the download exactly.data/SHA256SUMS pins the text, the metadata and the Qur'an font. The reader hashes the file again in the browser and refuses to render if it doesn't match.textContent only: no normalization, trimming or HTML.npm run verify # checksums · 114 surahs · 6,236 ayat · per-surah counts · lossless basmala split
npm run verify:remote # also compares every ayah's letters with a second Tanzil-derived copy
The remote check compares against api.alquran.cloud, which serves an older Tanzil build. All 6,236 ayat match letter-for-letter except five, and those five are exactly Tanzil's documented v1.1 corrections (2:181, 8:6 and 13:37 بَعْدَ مَا; 12:39 and 12:41 يَـٰصَـٰحِبَىِ).
Found a problem with the text itself? Please report it to Tanzil, which maintains it.
Quran Turn is free and will stay free: no ads, no paywall, and no Qur'an behind an account. If it has a place in your day, you can support it at quran.allrize.tech:
The desktop app never talks to a payment provider. Its Support link only opens that page.
site/ is a Cloudflare Pages project:
public/ holds the static pages.functions/api/donations/ holds two small Pages Functions that create Midtrans Snap transactions server-side.Deploy it with:
cd site && npx wrangler pages deploy
Set the Midtrans keys as Pages secrets, never in the repo:
npx wrangler pages secret put MIDTRANS_SERVER_KEY
npx wrangler pages secret put MIDTRANS_CLIENT_KEY
MIDTRANS_IS_PRODUCTION and SITE_URL live in site/wrangler.toml. Without keys, the Midtrans button shows "Pembayaran belum tersedia" and everything else keeps working.
npm test # parser, state machine, hooks (silent + exit 0), server, donation API
npm start # reader at http://127.0.0.1:47114
bin/quran-turn CLI and hook entry point
src/ state machine, local server, window opener, notch launcher
app/ the reader and the notch page (HTML/CSS/JS, bundled fonts)
native/ the notch hosts: QuranNotch.swift (macOS), notch-win.ps1 (Windows)
data/ Tanzil text + metadata (verbatim) and checksums
hooks/hooks.json hook wiring for Claude Code and Codex
.claude-plugin/ Claude Code plugin + marketplace manifests
.codex-plugin/ Codex plugin manifest
site/ quran.allrize.tech (Cloudflare Pages: public/ + functions/)
scripts/ fetch + verify the Qur'an data
test/ node:test suites
Working on the notch: QURAN_NOTCH_DEBUG=1 makes the helper print the page's curtain state, and QURAN_NOTCH_SNAPSHOT=/tmp/card.png renders the card to PNG after it opens (and again on kill -USR1 <pid>), which is how the images above were made.
Contributions are welcome. The one rule: never modify anything in data/. Tanzil's license forbids changing the text, and npm run verify will catch it.
app/fonts/OFL-*.txt).