From 3f6a506414c0e9377fd57d0771feb9135f5c2ceb Mon Sep 17 00:00:00 2001 From: sameeeeeeep <191771413+sameeeeeeep@users.noreply.github.com> Date: Fri, 2 Oct 2026 18:51:36 +0530 Subject: [PATCH] switchboard-notch: install from its own 1 MB repo Adding the switchboard repo as a marketplace downloads ~612 MB and took 1m50s, near Claude Code's 120 s clone limit. publish.sh mirrors this plugin to sameeeeeeep/switchboard-notch (its own marketplace) and releases the zip there; install now takes ~5 s. The README points to it. Source of truth stays here. Co-Authored-By: Claude Opus 5.5 --- packages/notch-mod/README.md | 9 +++-- packages/notch-mod/helper/sb-card | Bin 724848 -> 724848 bytes packages/notch-mod/publish.sh | 62 ++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 4 deletions(-) create mode 100755 packages/notch-mod/publish.sh diff --git a/packages/notch-mod/README.md b/packages/notch-mod/README.md index eeb7a26..391af16 100644 --- a/packages/notch-mod/README.md +++ b/packages/notch-mod/README.md @@ -16,7 +16,7 @@ tool and nothing else. Nothing is installed and nothing is written to your settings: ```sh -claude --plugin-url https://github.com/sameeeeeeep/switchboard/releases/download/notch-v0.1.0/switchboard-notch.zip +claude --plugin-url https://github.com/sameeeeeeep/switchboard-notch/releases/download/v0.1.0/switchboard-notch.zip ``` Ask Claude something that makes it ask you back, or run `/notch test`. @@ -26,10 +26,10 @@ Ask Claude something that makes it ask you back, or run `/notch test`. In Claude Code (v2.1.275+ adds the marketplace and installs in one step): ```text -/plugin install switchboard-notch --marketplace sameeeeeeep/switchboard +/plugin install switchboard-notch --marketplace sameeeeeeep/switchboard-notch ``` -Updates: `claude plugin update switchboard-notch@switchboard`. +Updates: `claude plugin update switchboard-notch@switchboard-notch`. ## Settings @@ -53,7 +53,7 @@ steps aside and Claude Code asks as usual. The mod's only action is to run `helper/sb-card`, a small native program that draws one card and prints your answer. It needs no permissions, makes no network requests, and exits as soon as you answer. The binary is signed with Developer ID (STAYOFT VENTURES PRIVATE LIMITED, 55354KFTHU) and -notarized by Apple. Its source is [`helper/sb-card.swift`](helper/sb-card.swift). To see what the mod +notarized by Apple. Its source is [`helper/sb-card.swift`](helper/sb-card.swift). Source of truth: [`packages/notch-mod`](https://github.com/sameeeeeeep/switchboard/tree/main/packages/notch-mod) in the switchboard repo. To see what the mod hooks before you load it, run `claude plugin validate` on this directory. ## Develop @@ -62,4 +62,5 @@ hooks before you load it, run `claude plugin validate` on this directory. claude --plugin-dir "$PWD" # load this checkout; edits hot-reload claude plugin test # unit tests (no session needed) ./build.sh # rebuild, sign and notarize helper/sb-card +./publish.sh # mirror to sameeeeeeep/switchboard-notch and release ``` diff --git a/packages/notch-mod/helper/sb-card b/packages/notch-mod/helper/sb-card index 98633615bb2cf4c2c41167537908953e1f216d4e..01c4b3fb484c803d82c41d08799af4a1afccfef4 100755 GIT binary patch delta 2172 zcmZ{kX*iS%8^_J^7-Jnw_DaY$mS=_`yP+t|NVcqTB$Rz8HDfGA#5iT_`%aRKJ(49$ zI>;8v=%7dvk=`t)^IqpY@A+~*-v9f$zuedF_ut4<*vM0$#6n`Bv9MTp12C@%s9-hl zYE6rpKpli!$jzgK&urpYGgNUkl=fQQoJkqAE=*K8Ui~0C$P@Z|u!9?qYGq|#O_Csw zd1za`bR>)>SE(JsvwFXkI0Po%8|{u_;=2@!K5U}1+!TyggFlIW(jSkbHM|@+*()cP zvxEQY@kEmUvb?bO^K|4h00e z-=5XqI<$A?lhf2pBE}PV^K0DJbgJ3#8RGEDi6~|Jty!c(`g{vgkbj&-{djugnpPm` zDnlKr`hubts^kj=!M@69pe=mHP8F@G&3S&{PbXXC$dL6C5) z030oNh-9774^ykTG=0RNF>T%^OaC2RjtJx5wDJdVBV+pi=8%Q>HvDV!{tZatj__xAL#FfXQV;?uS`jsPALx zmyTR<-FaO1>T^bWRenKoW13W$34t}cw#?TxN8n{Sk$`SAHXy7T;myvx{p7Dy=F$n0 z2fi92-q!N*HWQYTM1(pznjy@MCF_L`{BY`8FHSG=Rl-Bu5CF$ftDt`7u7EeJoQrMrLhU7K% z_po1rLv))?VSq7izzL+H?dUw3z{p=Pk59Azgqeg{vY5R0?aT+7a@C@3%7B5vZ2Ele zNG~sl?r=Mhkk2A8VfUkK@vxooh%F9!RO8!Fdx6-tp0QrINM$-}y=zSgQ8-)Ufal>^ zMJ~(!-V&jMQeNhr0;zdPjltCKC@)HQR>D-K`>Q*xF3c)~kUy@p^P`GiLtN6_UCuY@ zV|yJ5wgj0%Dry9zqF%6a{0}-5lp9M$wfzj6{w5It zEuf+*enurw2n@>sB3S_pHw-EQuz->OxP-t9uED)P5BiD@aMWavdhF@`!ini8ag7hc z9-V)2htEETR>j-AuEGf1Dfe=PvKd*@`sUa;YyZU%Hsv~Rzp3TDN%~Jg_}MHw%VstP zw1(*3y1;!wtU8FpgLu$hkn2yma2kJ(sv2}5JwO72rKg$!5_Bg$-~{_y?T6^F zE1a-!b(XoItyJ!_oykFzL(9ceii`CPw%$P6djxBvj_y~41>)T-b9}S4m`9A<=4gtG z`-eQ7S;_$-UKl-}83MVnqvjDaz*U~biS(+*{CPH2<#du_%Ck*DjqlF4=Cr3>3SLNv z`X0}hmO66xYT}L7F43`|V=|Midarj6Ckj8BVSFc7;gRxofVrLnl{buLqBBzNRdf%fhEP&du!TBLPpIR7>1b8VECYMZs&M4csk%? z?!jbiX=uEp^(J7P%1CLMAocmwb@Tk{U1%fqOW6`~Kp3JySe)Z#mUUjzo}ekjk9Qg`RYnwXL^V(!Y*HzX- z$4OO^KW?Qg&MCU6)Lg#`Dhg|IGz2ap|BqO^8DK#EmqK2SU^@tyLWP{QOM;2F*A%{J zwAutQ|Ih%+i4_AyKq2sFd*^-eQ11EA3e&%ZkeKbRRaIEM@_h43&Su8@ z%sNM7^B=eNlfQ%*bF8T9MW7LUsoUZ-Y~D4hP!~J4EG>HAG4-ulEyfZUO8B_BpZ6(C z&_z!k?STuAY%X6D!R*PTR!B1rV&IkH5{{xdBMp2n!9{1KnqBkvK2}^2s)Qb8F)f#{ zc3RUnAT&#Eg#L7IsPJ5vaHuzK)h&mw=1g;*(@l7J>S);3#cw%@dsQ1u8aB>4x3 Cu*((z delta 1393 zcmZ9~eK->c0LO6~o0+#(ExJ)8#mH@5!^Z3)d2M8QUpH@Qr$pW!v8fq$xRNusvC&D1 zyv8C5=Uq$Qu6h>owz+vp!jRMTTs`;P)8F6!e!tH$*KnC@NTUPjK)Nhl?jdNx3WP!% zo0{@xtU%QOY92~LuPfJJN3KM>?L!un+RUL|jwiU(VN>pE^h2in14ke+$A1{7nK198 z-YaEPs4R>LUTxgc5@{`zjGJD_j19UA-rBih0hcO}b;Gc%T_%Bhf)U_7N2h6Qk640+ zcE?{&@%RU!+bTJ`ATXFb#c6}ZiM@`C5(R|Ss9d9NuR$2?mEAm*Wqwm8I-ui-Y)-Z` z*L8{58tv#)qV{BUu6T9eVnP5PyKE()Jl?Uyhtjvi#JmBm$#z@4GdpbUEtf}z`k9So z{_h<#P39i_JtjM9H1^u6FLbi$&PW0#nBn(3SuAs0-)gP?Sp>c{9G9J@VaQ$LU>bur z=YS+jRxTD4Uc|b2JKNjQ)2>Uz98m001h;tYbQVv&S{P;}dK^4^#}kMjfyMlHtgZDgzYc(EH@} z_FsOWzfQqsBZw6P=BGTGdCm-zbc*yNM*q@`@{(Zl&B_ z?cB>w6+;$xq(*~xBMAE|Me^~N&K1mF3_7_fju5_RYzc9f7Yyx4Nw1yl9af%ivg&WbFr>?6?h_T|WQsR2Mz4Cd zjW622E$~7rnIDpp`>mV%@|A$SFKW;%G=m0W(7+6uJc9;d&=eYI(C!le9>1ppN|NJS z7=Z4ne)T)@3i{cvhrVUyG$K*t`aLVniC^2S#P&?v(=Ma+Azog~gtp?{o3*I;rm4zi zeT~%G<`e%%c-IH);cGZOrVgBf(6f}BLi&E{psPsTouLN$;A7m=K$teR!j6Do`cN;{ zc;0VNCRjrOIu--d;hm=gqnTT^q}CbtjcHrWqI5`BBK55Q)i=xHn@htSs0J@v!@0NA zW%QX~FwBD^i|0<#z*1>li(j~a*_%(9>b8ukhZGWQyXzOH<7S9L@iYM5bFPS@DcB3&F1LiM0#Iz%ANzVU1J zpWjbq@NuGE=H~zWevaSz9blH+PL^qIElRR?@Ou|TPOE;N_{HyqjKSbz{Pzc($Gs3{ zIOHLVMY|Y*?y#7rIYCNPy|SA03*1f6-thb=7+7Lk)N(sciFUy}XX>QCq|dQRgr}oa z0fk!%^%+5kL z*e=bepypmWdpFF~*Nh+hqKVYJ63KkX<`lqFEM@wg{gO+e@G-m-)hm6m7`Be|ZlkkK p2saamyi?3hU(NHT(FSd)LYtY~d3EKn;fXX)ODwQaQiE30`3Da{f=&Pc diff --git a/packages/notch-mod/publish.sh b/packages/notch-mod/publish.sh new file mode 100755 index 0000000..dfae5fe --- /dev/null +++ b/packages/notch-mod/publish.sh @@ -0,0 +1,62 @@ +#!/bin/sh +# Mirror this plugin to its own small repo, github.com/sameeeeeeep/switchboard-notch, and release it. +# +# The source of truth stays here. The small repo exists so `/plugin install ... --marketplace +# sameeeeeeep/switchboard-notch` clones ~1 MB instead of the whole switchboard repo, which can pass +# Claude Code's 120 s clone limit on slow connections. +# +# ./build.sh && ./publish.sh # bump .claude-plugin/plugin.json "version" first +set -eu +cd "$(dirname "$0")" + +REPO=sameeeeeeep/switchboard-notch +VERSION=$(python3 -c 'import json; print(json.load(open(".claude-plugin/plugin.json"))["version"])') +TMP=$(mktemp -d) +trap 'rm -rf "$TMP"' EXIT + +[ -f dist/switchboard-notch.zip ] || { echo "run ./build.sh first" >&2; exit 1; } + +gh repo clone "$REPO" "$TMP/repo" -- -q +cd "$TMP/repo" +git rm -rq --ignore-unmatch . >/dev/null +cd - >/dev/null + +# Plugin files, plus a marketplace file so the repo is its own marketplace. +cp -R .claude-plugin hooks helper tests README.md build.sh publish.sh .gitignore "$TMP/repo/" +rm -rf "$TMP/repo/.claude-plugin/types" +cp ../../LICENSE "$TMP/repo/LICENSE" +cat > "$TMP/repo/.claude-plugin/marketplace.json" <<'EOF' +{ + "name": "switchboard-notch", + "description": "Claude's questions as a native card at the Mac notch.", + "owner": { "name": "sameeeeeeep", "url": "https://github.com/sameeeeeeep/switchboard" }, + "plugins": [ + { + "name": "switchboard-notch", + "source": "./", + "description": "Claude's questions drop from your Mac's notch as a native card. A Claude Code mod (v2.1.287+, macOS 13+)." + } + ] +} +EOF + +cd "$TMP/repo" +claude plugin validate --strict . >/dev/null +git add -A +if git diff --cached --quiet; then + echo "no changes to publish" +else + git commit -qm "switchboard-notch $VERSION (mirrored from sameeeeeeep/switchboard packages/notch-mod)" + git push -q origin HEAD:main +fi +cd - >/dev/null + +if gh release view "v$VERSION" -R "$REPO" >/dev/null 2>&1; then + gh release upload "v$VERSION" dist/switchboard-notch.zip -R "$REPO" --clobber +else + gh release create "v$VERSION" dist/switchboard-notch.zip -R "$REPO" --title "Switchboard Notch $VERSION" \ + --notes "Try for one session: \`claude --plugin-url https://github.com/$REPO/releases/download/v$VERSION/switchboard-notch.zip\` + +Keep it, in Claude Code: \`/plugin install switchboard-notch --marketplace $REPO\`" +fi +echo "published $REPO v$VERSION"