Skip to content

Polls with questions and a deadline - #112

Merged
akumar-99 merged 5 commits into
mainfrom
feat/question-polls
Oct 28, 2026
Merged

akumar-99 merged 5 commits into
mainfrom
feat/question-polls

Conversation

@akumar-99

@akumar-99 akumar-99 commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

What and why

Spec: specs/008-question-polls.md

Managers can send a one-time poll to a standup's roster: up to 10 questions of short text, long text, dropdown, single choice or multiple choice, with a close time. People answer in a Chat form from a DM card, get one reminder before the close, and can change their answers until it closes. Results are posted in the space when it closes and kept in the web app.

Changes

  • Migration 21 adds question_polls and question_poll_people (SQLite and Postgres). Deleting a standup or its history removes its polls.
  • QuestionPolls service: draft checks, sending (people on vacation are skipped), answers, reminder, close (on time or early), results and CSV export. The scheduler tick drives the reminder, count refresh and close, so restarts don't repeat or skip work.
  • Chat: DM card (open, reminder, answered, closed), space summary card, and the answer form. Required answers are checked by AsyncUp and the form keeps what was typed.
  • polls command also lists open polls with questions.
  • API: five routes under the Polls tag, in the OpenAPI spec. MCP: list_question_polls and get_question_poll_results. Webhook: poll_closed.
  • Results and CSV go to the standup's managers (standups.configure), and to the people asked once an everyone-sees poll closes. Members hold answers.view, so that permission isn't enough. Anonymous polls never return names. CSV export guards against spreadsheet formulas.
  • Web: Polls tab, New poll builder with a live preview, and a results page with bars, names, text answers, Export CSV and Close now.
  • Fix: the standup's Overview tab no longer shows as current on every other tab.
  • Docs: user guide, web app, commands, API, MCP, configuration and roles. The website mentions the feature.
  • CI: Bun is pinned to 1.4.3 in .bun-version. Bun 1.4.4 reports existing catch blocks as uncovered on Linux, which fails the coverage gate on main too.
  • CI: body-parser moves to 2.4.0 (and qs to 6.17.0) in the lockfile, for GHSA-27r3-jxmh-p828. express already allows it.

Checks

  • bun run typecheck && bun run test:coverage pass (100% lines and functions)
  • bun run web:typecheck && bun run web:test pass
  • Each acceptance criterion has a test
  • Figma "AsyncUp v2 — Product Design" matches what was built, or no UI change
  • Docs (docs/guide/) updated for anything people will notice, and bun run docs:build passes
  • Website (site/) updated if a feature it describes changed, and bun run site:build passes
  • Layout checked from 390px to 1440px, or no UI change

Bun 1.4.4 reports existing catch blocks as uncovered on Linux, which
fails the coverage gate on main. CI now reads the version from
.bun-version, so upgrades are deliberate.
express 5.3.0 is the latest release and accepts body-parser ^2.3.0, so
only the lockfile changes. body-parser 2.4.0 needs qs ^6.16.1, which
moves qs to 6.17.0.
@akumar-99
akumar-99 merged commit e0e73d0 into main Oct 28, 2026
6 checks passed
@akumar-99
akumar-99 deleted the feat/question-polls branch October 28, 2026 03:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant