You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c0c147c
Browse filesBrowse the repository at this point in the historyBrowse files
Fixes from the 2026-10-01 QA session on the Perfect Meetings template.
## What changes
**Block (`main_ui`, formerly `nextMeeting`)**
- Setup states come from data already in the app (no stored flag, no new
status DBs):
- never run: a **Sync calendar** button
- waiting: "Waiting for flow to start"
- syncing: "Reading latest calendar events"
- researching: "Researching companies and people (k of n meetings
ready)"
- failed: the error, with Retry
- ready: the calendar
- The **Sync calendar** button creates a Workflow runs row. Clicking
twice doesn't create two rows.
- Once populated, the block never goes back to the loading or error
panels. Later errors appear as an inline notice above the last good
data.
- Runs or research with no change for 20 minutes are treated as stuck,
so the button comes back.
- Every empty state has a quiet **Sync now** button, which shows the
same stages inline.
- Person and company cards show a loading state while their meeting is
being researched, instead of "Role not found yet".
- The block opens on **Today**; Next meeting is one click away.
- Restyled with the NDS tokens from `@notionhq/custom-blocks`: type,
color, radius, spacing, icons, and a skeleton loader.
- The block uses 4 live queries, down from 8 (one per data source), and
works out every view in memory. This fixes the 429s from
`queryCollection` during research: the SDK re-queries every query on a
data source each time that source changes.
**Workflows**
- Display names are now **Sync calendar**, **Research companies and
people** and **Refresh today's research**. The keys are unchanged.
- All three manual runs take no input (`-d '{}'`). The manual modes and
params are removed, which also makes the `eventStartTime`/`mode`
validation unnecessary.
- The calendar event triggers (created, updated, cancelled) are removed.
Ingest runs hourly, when a Workflow runs row is added, or by hand. The
hourly sync now marks cancelled, declined or missing events as
Cancelled.
- Run with no input, **Research companies and people** works through a
backlog:
- Records never researched go first.
- A new **Researched at** date on People and Companies records each
attempt, so the backlog keeps moving.
- Failed meetings are retried after a 6-hour cooldown.
- Each run handles at most 10 meetings.
**APP.md and docs**
- APP.md removes:
- "How it works"
- the linked databases for meetings and Workflow runs
- the filler copy
- "How it works" explanations move into property descriptions.
- The toggle is renamed **Debug Data**, with one-line labels.
- The README and `catalog.json` now use one app name ("Perfect
Meetings") and describe the new behavior.
## Board tasks
- Differentiate "still loading" vs "missing"
- Template empty state nicer than an empty box
- Make the block more Notion-like
- Remove "How it works"
- Simplify manual trigger
- Validate `eventStartTime` against `mode` (no longer applies)
- Template side of "Calendar ingest event created/updated/cancelled
doesn't save via Set Up": the unsupported triggers are removed. The Set
Up save bug itself is a platform issue.
## Verification
- In `apps/templates/perfect-meetings`:
- `npm run check` passes.
- `npm test` passes (146 tests).
- `npm run build` passes.
- Repo root:
- `catalog:validate`, `agents:check`, `agents:test` and `lint:markdown`
pass.
- `projects:typecheck` fails only in `apps/templates/apps-default`,
which this PR doesn't touch.
- Deployed to a dev test workspace and checked by hand while iterating:
- fresh install
- the Sync button and its stages
- empty states
- the 429 fix
## Notes
- Renaming the block changes its slash command from `/next-meeting` to
`/perfect-meetings`. The capability key is `main_ui`.
- The SDK refetches every query on a data source with no debounce. This
is worth raising with the custom blocks SDK team.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Switch to **Today** to see the day's meetings on a calendar, with the current or next one highlighted. Click a meeting to see its company and attendee cards.
0 commit comments