context-attachment-manager
Codex and Claude Code plugin (works in Claude Desktop): choose which past images go to the model with your next message. Unchecked images become placeholders, the conversation goes on, and requests st
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證A Microsoft Teams app that ends the meeting when enough of the room has voted to, anonymously.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Adjourn is a Microsoft Teams app for meetings. It posts one card in the meeting chat. Anyone in the meeting can press its button to vote to end the meeting, anonymously and once. When the share of those present reaches the threshold, the organiser gets a private notification on the meeting stage asking them to end it.
Teams gives no app a way to end a meeting for everyone, so the organiser presses the button. Adjourn supplies the numbers.
| One card | Posted when Adjourn is added to the meeting chat, and again when a scheduled meeting starts. It shows the count and the button, never names. |
| One vote each | A second press is answered privately with "You have already voted". Votes cannot be withdrawn. |
| Counted against those present | Votes are measured against the people in the meeting at that moment, not the invitation list. |
| A threshold | 50 percent by default. The organiser can set 50, 67, 75 or 100 from the card. |
| A private ask | At the threshold the organiser gets a targeted notification on the meeting stage with the count and the two clicks that end the meeting. |
Clone and install:
git clone https://github.com/den-frie-vilje/adjourn
cd adjourn && pnpm install
Open a tunnel to port 3978 and note its hostname. With Microsoft's dev tunnels:
devtunnel user login
devtunnel create --allow-anonymous
devtunnel port create -p 3978
devtunnel host
Register the bot. Either in the Teams Developer Portal under Tools › Bot management › New bot, with the messaging endpoint https://<your-host>/api/messages, and create a client secret; or with the Teams CLI (npm install -g @microsoft/teams.cli, teams login, then teams app create --endpoint https://<your-host>/api/messages --name Adjourn --env .env).
Put the ids in .env in the repository root:
CLIENT_ID=<the bot's app id>
CLIENT_SECRET=<the client secret>
TENANT_ID=<your tenant id>
BOT_DOMAIN=<your-host, no scheme>
Start the bot and build the app package:
pnpm dev
pnpm package
In Teams, open the meeting's chat or the meeting itself, select Apps, then Manage your apps › Upload an app › Upload a custom app, and choose appPackage/adjourn.zip. The organiser or a presenter consents to the permissions once. Adjourn posts its card.
Change the code and the running bot picks it up; change the manifest and upload the package again.
The whole app is src/app.ts, src/card.ts and src/motion.ts, on the Teams SDK for TypeScript.
adaptiveCard/action invoke. Teams authenticates the sender; nothing is posted to the chat. Adjourn stores a salted hash of the sender's id in the motion, declines a second press, and answers privately.ceil(present × threshold / 100), Adjourn fetches the meeting's organiser and sends a targeted in-meeting notification that opens docs/motion/index.html from this repository's GitHub Pages site, with the count in the URL. The card closes.Motions live in memory. Restarting the bot forgets open motions; the next meeting start opens a fresh one.
validDomains. The shipped manifest lists den-frie-vilje.github.io. Change MOTION_PAGE_URL and the manifest together if you host the page elsewhere.Adjourn keeps, for the length of a meeting and in the memory of one process: the threshold, a salted hash per voter, and the id of its own card message. It never stores or shows who voted. It reads the meeting's basic details, who is in it and the chat's members, sends messages to the chat and one notification to the organiser, and nothing else. No database, no telemetry, no account.
pnpm typecheck
pnpm test
pnpm build
The product page is docs/index.html, served by GitHub Pages; scripts/og.sh renders its social image and this README's hero from docs/og.html and docs/readme-hero.html.
MIT. Copyright Den Frie Vilje ApS.