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.