Skip to content

Simple Format import: "(Table Topics Speech)" imports as 'Table Topics' with no timing rules #91

Open

Description

@szhang-str

Summary

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

  1. 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.
  2. 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.
  • LiveTab.handleStart re-reads roleRules['Table Topics'], finds nothing, and rejects (web LiveTab.jsx:176-181, Zoom :595-611).
  • 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).

Related

Activity

  1. ShuhaoZQGG commented on Nov 11, 2026

    @ShuhaoZQGG
    Contributor

    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:

    Line Role on dev and on #130
    David Kim (Table Topics Speech) Table Topics
    Alex (Table Topics) Table Topics
    Sam (Table Topics Master) Table Topics

    What changed since the issue was written:

    • 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions