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
Simple Format import: "(Table Topics Speech)" imports as 'Table Topics' with no timing rules #91
Simple Format lines with (Table Topics Speech) or (Table Topics) import as role Table Topics, which has no timing rules. The item gets Standard Speech timing (5/6/7 min instead of 1/1.5/2 min), and the Live tab refuses to START it.
Steps to reproduce
Agenda → Import Text → Simple Format, paste:
David Kim (Table Topics Speech)
Alex (Table Topics)
The first line is from demo-agenda-simple.txt. The second is from the Zoom app's Simple Format placeholder.
Import, then load the item into the Live tab and press START.
Expected: role Table Topics Speech with 60/90/120 s timing.
Actual:
The item shows role Table Topics with "Timing rules" of 5/6/7 min.
The Live tab role dropdown has no matching option.
START shows "Please set timing rules first".
Cause
detectRoleFromText (packages/shared/timingRules.js:81 and :112-114) returns 'Table Topics' for any non-evaluation text containing "table topics". DEFAULT_ROLE_RULES only has the key 'Table Topics Speech', so the function never returns that key.
importBulkSpeakers falls back to DEFAULT_ROLE_RULES['Standard Speech'] for the snapshot.
PostHog speech_timing.sql buckets these as unknown_role.
Also: 'table topics master' in the short-roles branch can't be reached, because the table topics check runs first (see the comment at timingRules.test.js:199-205).
Still reproduces on dev (2026-11-10). #93 left this out of scope, and #130 (the #90 fix) doesn't change it. Checked by calling the shared parser directly, with no custom roles:
Simple Format import now goes through parseSimpleFormatText in packages/shared/simpleFormatParser.js, added by fix(import): Simple Format matches custom roles from the bracket text (#77) #93. It first matches the bracket against custom roles, then falls back to detectRoleFromText. With no custom roles, all three lines take the fallback, so the cause above still applies. The line numbers (timingRules.js:81, :112-114) are still right on dev.
The third line shows the unreachable table topics master branch mentioned above.
#130 changes the same two files, so build this fix on top of #130 after it merges.
Activity
ShuhaoZQGG commentedon Nov 11, 2026
Still reproduces on
dev(2026-11-10). #93 left this out of scope, and #130 (the #90 fix) doesn't change it. Checked by calling the shared parser directly, with no custom roles:devand on #130David Kim (Table Topics Speech)Table TopicsAlex (Table Topics)Table TopicsSam (Table Topics Master)Table TopicsWhat changed since the issue was written:
parseSimpleFormatTextinpackages/shared/simpleFormatParser.js, added by fix(import): Simple Format matches custom roles from the bracket text (#77) #93. It first matches the bracket against custom roles, then falls back todetectRoleFromText. With no custom roles, all three lines take the fallback, so the cause above still applies. The line numbers (timingRules.js:81,:112-114) are still right ondev.table topics masterbranch mentioned above.#130 changes the same two files, so build this fix on top of #130 after it merges.