Simulators
What the verified UI supports
This page lists every part of the Slack client the verified UI draws. A test checks each Works row through the Web API, so write tasks against those rows; the Web API column names the methods each one calls, which a grader reads.
| Area | Works | Gap | Out |
|---|---|---|---|
| shell | 15 | 0 | 9 |
| messages | 14 | 0 | 6 |
| reactions | 4 | 0 | 1 |
| threads | 7 | 0 | 3 |
| conversations | 28 | 1 | 8 |
| files | 9 | 0 | 5 |
| pins & bookmarks | 7 | 0 | 0 |
| people & status | 20 | 1 | 1 |
| scheduling | 8 | 0 | 1 |
| search & navigation | 14 | 1 | 4 |
| apps & views | 2 | 5 | 8 |
| sidebar | 14 | 1 | 6 |
| canvases & lists | 16 | 3 | 4 |
Works.
| Area | Feature | Web API |
|---|---|---|
| shell | app load → current actor in the rail avatar and actor switch | auth.test |
| shell | workspace name and icon at the top of the sidebar | team.info |
| shell | server holds the Socket Mode link; each event refreshes the open page | apps.connections.open |
| shell | simulator reset, scenario or seed load, or credential binding → every open page redraws to the new state; a reset also clears the drafts, saved items and sidebar state the browser kept for the old one | — |
| shell | a customer’s Socket Mode bot beside the UI receives every envelope it would receive alone, and the open page still shows every write | apps.connections.open |
| shell | URLs mirror Slack: /client/<team>/<conversation>[/thread/<ts>] | — |
| shell | rail avatar → switch actor (one bound token per seeded person) | — |
| shell | rail in Slack’s order: Home, DMs, Activity, Files, Later, Agents & tools, Admin; the control strip at its foot: Create new, Turn on focus mode, your avatar | — |
| shell | rail foot Create new (+) → Message → pick people → Go to conversation | conversations.open |
| shell | rail foot Create new (+) → Channel → name → Create | conversations.create |
| shell | rail foot Create new (+) → Canvas → title → Create → the canvas opens at /client/<team>/canvases/<id>; the Files sidebar’s Create new and the Canvases page’s + New open the same dialog | canvases.create |
| shell | rail foot avatar (and every avatar) shows the person’s profile.image_*, the letter tile when there is none | users.info |
| shell | ?theme=dark opens Slack’s dark theme (set it in the URL, as ?as= sets the person); light is the default | — |
| shell | at 1280×720 and 1024×768 every rail, top bar, header, tab, composer and thread pane control is on screen; shorter windows scroll the rail’s tabs and keep the control strip pinned | — |
| shell | rail foot Create new (+) → List → name, and whether it tracks to-dos → Create → the List opens at /client/<team>/lists/<id>; the Files sidebar’s Create new and the Lists page’s + New open the same dialog | slackLists.create |
| messages | composer → type → Enter or Send button | chat.postMessage |
| messages | message list: mrkdwn, mentions, channel links, code blocks, Block Kit section/context, attachments, edited marker, day dividers | conversations.history |
| messages | composer formatting bar (bold, italic, strike, code, link, lists, quote, code block) and Show formatting toggle | chat.postMessage |
| messages | composer → Emoji button → search → pick | — |
| messages | composer → @ → autocomplete → pick person; # → channel | users.list |
| messages | composer Emoji → the picker’s Custom section after Frequently Used (aliases drawn as what they name), or search by name → pick → the image in the box; posts :name: and an emoji element | emoji.list |
| messages | message list: :name: and its aliases as the custom image, an alias of a standard emoji as that emoji, an image that can’t load as :name: | emoji.list |
| messages | message list: as an @handle pill, the group’s handle now (else the label it was posted with) → click → card with name, description, members and View user group | usergroups.list, usergroups.users.list |
| messages | composer → @ → user groups after people (up to three) → pick → @handle pill; posts and a usergroup element | usergroups.list |
| messages | own message hover → ⋯ → Edit message → change → Enter | chat.update |
| messages | own message hover → ⋯ → Delete message → confirm | chat.delete |
| messages | composer → /me waves → Enter (italic me-message) | chat.meMessage |
| messages | message hover → More actions → Copy link → clipboard + toast | chat.getPermalink |
| messages | unsent composer text survives switching conversations; Drafts & sent lists drafts | — |
| reactions | message hover → Add reaction… → search → pick; quick reaction (white_check_mark, eyes, raised_hands); click someone else’s pill; Add reaction… at the end of the pill row | reactions.add |
| reactions | reaction pill draws a custom emoji’s image; Add reaction… → the picker’s Custom section; picking an alias reuses the pill of its image | emoji.list, reactions.add |
| reactions | click your own reaction pill | reactions.remove |
| reactions | hover or focus a reaction pill → who reacted | reactions.get |
| threads | N replies → thread pane with root and replies | conversations.replies |
| threads | thread pane → Reply… → Enter; message hover → Reply in thread | chat.postMessage |
| threads | thread composer → Also send to #channel → Enter | chat.postMessage |
| threads | sidebar Threads → /client/<team>/threads: every thread the viewer started or replied in, newest activity first; each card shows the root, the latest two replies (Show N more replies for the rest) and a reply box | conversations.history, conversations.replies |
| threads | thread pane header ⋮ → Copy link → the root’s permalink | chat.getPermalink |
| threads | Threads view → a card’s Reply… box → Enter (Also send to #channel as in the thread pane); the card moves to the top | chat.postMessage |
| threads | Threads view → a card’s conversation name → the conversation with that thread’s pane open | conversations.replies |
| conversations | sidebar: Channels, Direct messages, sorted, archived hidden | users.conversations |
| conversations | Add channels → Browse channels → list with Join / View | conversations.list |
| conversations | channel header (name, topic, member count) and channel details dialog | conversations.info |
| conversations | open a conversation → newest messages; scroll up loads older (cursor) | conversations.history |
| conversations | header member count → Members tab | conversations.members |
| conversations | Add channels → Create a new channel → name, private toggle → Create | conversations.create |
| conversations | preview a channel you’re not in → Join channel; Browse → Join | conversations.join |
| conversations | channel details → Leave channel; sidebar item menu → Leave | conversations.leave |
| conversations | channel details → Members → Add people | conversations.invite |
| conversations | channel details → Members → person → Remove from channel | conversations.kick |
| conversations | channel details → Settings → Archive channel → confirm | conversations.archive |
| conversations | archived channel → details → Unarchive channel | conversations.unarchive |
| conversations | channel details → Channel name → Edit → Save | conversations.rename |
| conversations | channel details → Topic → Edit → Save (header shows it) | conversations.setTopic |
| conversations | channel details → Description → Edit → Save | conversations.setPurpose |
| conversations | opening a conversation marks it read; message hover → ⋯ → Mark unread | conversations.mark |
| conversations | bold sidebar item with count badge, New messages divider, unread pill | — |
| conversations | New message (compose) → pick people → DM or group DM; profile → Message | conversations.open |
| conversations | sidebar DM item menu → Close conversation → the DM leaves the sidebar and the DMs list; New message to the person, or a new message from them, brings it back | conversations.close |
| conversations | channel header Search in channel, or header ⋮ → Search in channel → the top bar’s field opens holding in:#<channel> (in:@<name> in a DM) → type → Enter → the results view | search.messages |
| conversations | channel header ⋮ → Open channel details | conversations.info |
| conversations | DM header ⋮ → View full profile | users.info |
| conversations | channel header ⋮ → Star channel / Unstar channel → Starred section | — |
| conversations | channel header ⋮ → Copy link → the conversation’s URL in this client | — |
| conversations | channel header ⋮ → Leave channel (not in #general) | conversations.leave |
| conversations | DM header ⋮ → Close conversation | conversations.close |
| conversations | conversation tabs: Add canvas → the channel canvas, made and opened in its tab (titled Canvas while files.info can’t name it) | conversations.canvases.create |
| conversations | conversation tabs: + → Link → the bookmark dialog → Save (bookmarks.add) | bookmarks.add |
| files | composer Attach → Upload from your computer → pick a file (uploads at once, shown in the composer tray) | files.getUploadURLExternal |
| files | composer tray: bytes POSTed to upload_url with progress; failed upload → Retry | upload/v1/{ticket} |
| files | attach → Enter / Send (composer text is the initial comment; thread_ts in a thread) → message with the file | files.completeUploadExternal |
| files | click a file on a message → file viewer: name, type, size, uploader, date, shared in | files.info |
| files | rail Files → /client/<team>/files: type filter, Shared by me → click opens the viewer | files.list |
| files | own file → More → Delete file → confirm (or the viewer’s Delete file) | files.delete |
| files | image files: inline preview on the message and in the viewer (url_private fetched with the bearer token) | files-pri/{tf}/{name} |
| files | file More → Download, or the viewer’s Download (url_private_download with the bearer token) | files-pri/{tf}/download/{name} |
| files | rail Files → the Files sidebar’s Create new (+) → Canvas or List, the same dialogs as the rail’s Create new | canvases.create, slackLists.create |
| pins & bookmarks | message hover → More actions → Pin to this conversation; pinned messages show “Pinned by <name>” and a highlight | pins.add |
| pins & bookmarks | pinned message → More actions → Un-pin from this conversation, or Pins tab → Un-pin | pins.remove |
| pins & bookmarks | conversation header → Pins tab → View message jumps to it | pins.list |
| pins & bookmarks | Bookmarks tab → Add a bookmark → link, name → Save | bookmarks.add |
| pins & bookmarks | Bookmarks tab → bookmark More → Edit → Save | bookmarks.edit |
| pins & bookmarks | conversation header → Bookmarks tab; a bookmark opens its link in a new tab | bookmarks.list |
| pins & bookmarks | Bookmarks tab → bookmark More → Remove | bookmarks.remove |
| people & status | rail People → /client/<team>/people: search by name or title → click a person → profile pane | users.list |
| people & status | author name or directory entry → /client/<team>/<conv>/user_profile/<user>: name, display name, title, status, presence, local time, Message | users.info |
| people & status | profile pane: email, phone, pronouns; own Edit profile prefills from users.profile.get | users.profile.get |
| people & status | People directory → type an email → users.lookupByEmail → that person | users.lookupByEmail |
| people & status | presence dot on DM sidebar items, directory avatars and the profile; Active / Away on the profile | users.getPresence |
| people & status | your avatar menu → Set yourself as away / Set yourself as active | users.setPresence |
| people & status | app load calls users.setActive once per signed-in person | users.setActive |
| people & status | your avatar menu → Profile → Edit profile → full name, display name, title → Save Changes | users.profile.set |
| people & status | your avatar menu → Update your status → emoji, text or a suggestion, Remove status after → Save; Clear status | users.profile.set |
| people & status | Edit profile → Remove photo | users.deletePhoto |
| people & status | your avatar menu shows Pause notifications with the paused-until state (disabled); zZ and Paused until on a paused person’s avatar and profile | dnd.info |
| people & status | People directory: one dnd.teamInfo for the listed people → zZ on paused people | dnd.teamInfo |
| people & status | custom profile field labels on the profile pane | team.profile.get |
| people & status | sidebar Directories → User Groups tab: every group with its handle, member count and description; search; Show disabled groups | usergroups.list |
| people & status | User Groups → a group → /client/<team>/people/usergroup/<id>: name, handle, description and members; a member opens their profile | usergroups.users.list |
| people & status | User Groups → Create User Group → name, handle, description → Create → the new group’s pane; a refusal (name or handle taken) stays in the dialog | usergroups.create |
| people & status | group pane → Edit → name, handle, description → Save Changes | usergroups.update |
| people & status | group pane → Edit members → tick and untick people (find by name) → Save; at least one member | usergroups.users.update |
| people & status | group pane → Disable group → confirm → Disabled, gone from the default list | usergroups.disable |
| people & status | User Groups → Show disabled groups → a disabled group → Enable group | usergroups.enable |
| scheduling | composer send options → Tomorrow at 9:00 AM / Monday at 9:00 AM, or Custom time → date + time → Schedule Message; context bar above the composer | chat.scheduleMessage |
| scheduling | Drafts & sent → Scheduled (or the context bar’s See all scheduled messages) | chat.scheduledMessages.list |
| scheduling | Drafts & sent → Scheduled → item More → Delete message → Delete | chat.deleteScheduledMessage |
| scheduling | message More actions → Remind me (after Mark unread) → In 20 minutes, In 1 hour, In 3 hours, Tomorrow, Next week or Custom… (date and time) → a reminder whose text is the message’s permalink | reminders.add, chat.getPermalink |
| scheduling | Later → New reminder (+) or Create Reminder → what and when (a choice or Custom… date and time) → Create Reminder | reminders.add |
| scheduling | rail Later → In progress: open reminders, due soonest first, before saved messages; one about a message draws that message as the simulator has it and links to it; Completed: done reminders | reminders.list |
| scheduling | Later → a reminder → Mark complete → it moves to Completed | reminders.complete |
| scheduling | Later → a reminder → Delete | reminders.delete |
| search & navigation | sidebar Find a conversation… → matching channels, DMs and people → arrows + Enter or click opens it | users.conversations |
| search & navigation | top bar back / forward through visited conversations | — |
| search & navigation | message hover → Save for later (flips to Remove from Later); rail Later → /client/<team>/later | — |
| search & navigation | conversation header Star channel / Remove from Starred → Starred section in the sidebar; drag a sidebar row onto Starred | — |
| search & navigation | top bar Search → type → Enter → /client/<team>/search/search-<query>: Messages tab with its count, each match under its conversation with the query’s words lit, N results, Previous/Next pages | search.messages |
| search & navigation | rail Activity (between DMs and Files) → the sidebar column lists mentions of the viewer, others’ replies in the viewer’s threads and reactions to the viewer’s messages, newest first; filters All, Mentions, Threads, Reactions | conversations.history, conversations.replies |
| search & navigation | Activity → Mentions: messages and replies by others with <@viewer>, newest first | conversations.history, conversations.replies |
| search & navigation | Activity → Threads: others’ replies in threads the viewer started, or replied in (after their first reply) | conversations.replies |
| search & navigation | Activity → Reactions: one item per reaction by someone else on the viewer’s messages | conversations.history, conversations.replies |
| search & navigation | Activity item → the conversation scrolled to the message (lit and focused), or its thread pane for a reply; the sidebar stays on Activity with the item selected | conversations.history, conversations.replies |
| search & navigation | search results → Files tab with its count: each matching file by title, the query lit, its owner, date and type; a title opens the file viewer | search.files |
| search & navigation | a message result → its conversation scrolled to the message, lit and focused, or its thread pane for a reply | search.messages, conversations.replies |
| search & navigation | a query nothing matches → No results for “<query>”, with a tip | search.messages |
| search & navigation | typed in:, from:, has:, before: and after: go to the simulator as typed, and the results view shows what they select | search.messages |
| apps & views | a bot’s message → Block Kit button (actions block or section accessory) → the app gets block_actions; a button’s confirm dialog asks first | blocks.actions |
| apps & views | a button press the app doesn’t ack (no app connected, no ack within 3 s, an error status) → Slack’s generic error beside the button | blocks.actions |
| sidebar | sidebar section caret → collapse/expand Starred, Channels, Direct messages, Agents & apps; remembered per person | — |
| sidebar | sidebar top: Threads, Huddles, Drafts & sent, Directories (Directories opens the People directory) | — |
| sidebar | Direct messages lists your own DM (‘you’) first | conversations.open |
| sidebar | Direct messages sorted by most recent activity | conversations.history |
| sidebar | Agents & apps section lists DMs with bots, with app badge | users.conversations |
| sidebar | workspace name ▾ → menu: workspace name, switch person; other items disabled with reason | team.info |
| sidebar | DM row hover × closes the conversation | conversations.close |
| sidebar | rail DMs → list of every DM with last message and time | users.conversations, conversations.history |
| sidebar | top bar clock → recently visited conversations | — |
| sidebar | floating Unread mentions ↑/↓ pills scroll to badged rows off screen | — |
| sidebar | rail DMs button: count of DMs with unread messages | users.conversations, conversations.info, conversations.history |
| sidebar | count beside Drafts & sent, from the local drafts | — |
| sidebar | sidebar item right-click / More: Open channel details, Copy link, Star/Unstar, Leave or Close; Mute and Move to new section disabled with reason | — |
| sidebar | Agents & apps row opens the DM; its ↗ open-in-new-window renders disabled with reason | users.conversations |
| canvases & lists | a canvas at /client/<team>/canvases/<id> or in a channel’s Canvas tab: headings, paragraphs, bulleted and numbered items, checklists, quotes, code, bold, italic, links and mentions | canvases.getContent |
| canvases & lists | a canvas’s foot: Add to this canvas → type Markdown → Enter (insert_at_end) | canvases.edit |
| canvases & lists | hover a block → Edit → change its Markdown → Save: canvases.sections.lookup by its text, then replace that section, or the whole document when no single section matches | canvases.sections.lookup, canvases.edit |
| canvases & lists | hover a block → Delete: the section deleted, or the whole document rewritten without it when no single section matches | canvases.sections.lookup, canvases.edit |
| canvases & lists | a checklist item’s box: tick or untick | canvases.sections.lookup, canvases.edit |
| canvases & lists | canvas ⋮ (More options) → Delete canvas → confirm, in the canvas view or the channel’s canvas tab; a Canvases page row’s ⋮ too | canvases.delete |
| canvases & lists | a List at /client/<team>/lists/<id> or in a channel’s List tab: its title, the view toolbar, the table (a to-do List’s Completed circle first, the primary column bold, select pills, people chips, date tags, checkboxes, subtask counts) | slackLists.items.list, slackLists.items.info |
| canvases & lists | a row’s Open item, or its ⋮ → Open item → the Item panel over the table: the title, Mark Complete on a to-do List, every field with its control, the subtasks, and N of M with previous and next | slackLists.items.info |
| canvases & lists | + Add item → a new Untitled item with its title in edit → type → Enter commits it and starts the next (Escape stops) | slackLists.items.create |
| canvases & lists | a cell in the table or the Item panel: text (click, type, Enter), select and person (a picker), date (a date field), checkbox, and a to-do item’s Completed circle or the panel’s Mark Complete | slackLists.items.update |
| canvases & lists | a row’s ⋯ → Delete item; or tick rows → Delete N items → confirm; a row’s subtasks go with it | slackLists.items.delete, slackLists.items.deleteMultiple |
| canvases & lists | record panel → Add subtask → type → Enter (parent_item_id); the subtask shows in the panel and under its row | slackLists.items.create |
| canvases & lists | conversation tabs: one per List conversations.info names in properties.tabs, the List inside | conversations.info, slackLists.items.list |
| canvases & lists | List header ⋯ → Rename list → Save | slackLists.update |
| canvases & lists | the outline left of a canvas: a line per heading → the headings → one jumps to it | — |
| canvases & lists | List toolbar Search → type: the rows whose title matches; Escape clears | — |
Gap: the UI shows it, and it does not yet work as it does in the real service.
| Area | Feature | Why |
|---|---|---|
| conversations | conversation tabs: one per canvas conversations.info lists in properties.tabs, titled by the canvas → the canvas in the tab, with its outline and ⋮ | The simulator’s conversations.canvases.create adds no canvas tab to conversations.info’s properties.tabs, so a channel’s canvas shows only in the page that made it. |
| people & status | Edit profile → Upload photo (multipart image) | The simulator’s users.setPhoto refuses a multipart/form-data body with invalid_form_data and an image sent as text with no_image, while Slack takes the image as a multipart file, so the upload shows that error. |
| search & navigation | rail Files → the Files sidebar → Canvases: + New, a search box and All / Created by you / Shared with you over the viewer’s canvases (files.list types=canvases), each opening its canvas, a row’s ⋮ → Delete canvas | The simulator’s files.list lists no canvas that canvases.create made, so the browser shows none. |
| apps & views | a button press → the app opens a modal → its title, blocks, text inputs, Cancel and Submit | Waits on the simulator: views.open does not yet take the trigger_id of a press, and the simulator does not yet tell a person’s client that an app opened a modal for them. |
| apps & views | modal → Submit → views.submit with the text inputs’ state; an empty or clear ack closes it, and an input left empty when required, malformed (email, URL, number) or outside its length or value limits says so under it first | Waits on the simulator: views.open does not yet take the trigger_id of a press, and the simulator does not yet tell a person’s client that an app opened a modal for them. |
| apps & views | modal → Submit → an errors ack → each message under its input block, the modal open with what was typed | Waits on the simulator: views.open does not yet take the trigger_id of a press, and the simulator does not yet tell a person’s client that an app opened a modal for them. |
| apps & views | modal → Submit → an update ack → the modal swaps to the ack’s view, keeping what was typed into inputs it keeps | Waits on the simulator: views.open does not yet take the trigger_id of a press, and the simulator does not yet tell a person’s client that an app opened a modal for them. |
| apps & views | modal → Submit the app doesn’t ack → Slack’s generic error at the top of the modal, the inputs as typed | Waits on the simulator: views.open does not yet take the trigger_id of a press, and the simulator does not yet tell a person’s client that an app opened a modal for them. |
| sidebar | ‘you’ on your own DM, ‘invited you’ on a DM someone else opened | The simulator’s conversations.info on an IM names no creator, as Slack’s documented IM object names none, so the “invited you” suffix has nothing to read. |
| canvases & lists | the canvas view’s header: the canvas’s title | The simulator’s files.info returns file_not_found for a canvas, so the header says its title can’t be read. |
| canvases & lists | rail Files → the Files sidebar → Lists: + New, a search box and All / Created by you / Shared with you over the viewer’s Lists (files.list types=lists), each opening its List | The simulator’s files.list lists no List that slackLists.create made, so the browser shows none. |
| canvases & lists | List header ⋯ → Download as CSV | The simulator’s slackLists.download.get returns a link the simulator doesn’t serve, so the download says it’s unavailable. |
Out: the UI leaves it out on purpose.
| Area | Feature | Why |
|---|---|---|
| shell | api.test | Connectivity check; no screen in the Slack client calls it. |
| shell | rail Agents & tools | Disabled, says why on click: the simulator serves no app, agent or workflow directory. |
| shell | rail Admin | Disabled, says why on click: needs admin.*, which the simulator doesn’t serve. |
| shell | rail foot moon: Turn on focus mode | Disabled, says why on click: the simulator models no focus mode (no users.prefs or dnd.setSnooze). Real Slack’s moon is focus mode, not a theme switch. |
| shell | top bar: Chat with Slackbot AI, right of Search | Disabled, says why on click: the simulator serves no Slack AI. |
| shell | top bar: Help (?) at the right end | Disabled, says why on click: Slack’s help center and feedback aren’t part of the simulator. |
| shell | rail foot Create new (+) → Huddle | Disabled, says why on click: the simulator serves no huddle API. |
| shell | rail foot Create new (+) → Workflow | Disabled, says why on click: the simulator serves no workflows. |
| shell | rail foot Create new (+) → Invite people | Disabled, says why on click: needs admin.users.invite, which the simulator doesn’t serve. |
| messages | chat.postEphemeral | No client control sends one; showing a received one needs a client delivery the simulator keeps on the control plane. |
| messages | chat.startStream | Bot token only; the client never starts a stream, and renders a streamed message as any other. |
| messages | chat.appendStream | Bot token only; no client control. |
| messages | chat.stopStream | Bot token only; no client control. |
| messages | composer toolbar: More options (…), after Mention someone | Disabled, says why on click: shortcuts and workflows come from apps, which the simulator doesn’t serve. |
| messages | message hover → Forward message…, between Reply in thread and Save for later | Disabled, says why on click: Slack forwards through a client method the Web API doesn’t publish; chat.postMessage with a permalink would post a different message than a forward. |
| reactions | reactions.list | No Slack client screen lists the items a person reacted to. |
| threads | thread pane header: Summarize thread | Disabled, says why on click: the simulator serves no Slack AI. |
| threads | thread pane header ⋮ → Get notified about new replies | Disabled, says why on click: needs subscriptions.thread.*, which the simulator doesn’t serve. |
| threads | thread pane header ⋮ → Mark unread | Disabled, says why on click: a thread’s read mark needs subscriptions.thread.*, which the simulator doesn’t serve; conversations.mark would move the channel’s read mark instead. |
| conversations | channel header: Start huddle (headphones) and More Huddles options (chevron) | Disabled, says why on click: the simulator serves no huddle API. |
| conversations | channel header bell (Edit notifications) and header ⋮ → Edit notifications | Disabled, says why on click: needs users.prefs, which the simulator doesn’t serve. |
| conversations | channel header ⋮ → Open in new window | Disabled, says why on click: this client is a single window. |
| conversations | conversation tabs: + → File, canvas, or list (New) | Disabled, says why on click: Slack adds the tab with conversations.addTab, which the simulator doesn’t serve. |
| conversations | conversation tabs: + → Workflow | Disabled, says why on click: the simulator serves no workflows. |
| conversations | conversation tabs: + → Folder | Disabled, says why on click: bookmark folders aren’t part of the simulator. |
| conversations | conversation tabs: + → Add template to channel | Disabled, says why on click: the simulator serves no channel templates. |
| conversations | conversation tabs: + → Edit tabs | Disabled, says why on click: no write reorders or removes a channel’s tabs. |
| files | upload/v1/{ticket} (PUT) | The client POSTs the bytes; PUT is the same upload over another verb. |
| files | rail Files → the Files sidebar → Deleted | Disabled, says why on click: the simulator serves no read of deleted canvases and Lists. |
| files | rail Files → the Files sidebar → Starred | Disabled, says why on click: needs stars.list, which the simulator doesn’t serve. |
| files | rail Files → the Files sidebar’s More options | Disabled, says why on click: the Files sidebar’s settings aren’t part of the simulator. |
| files | the Canvases and Lists pages’ Templates row and See all | Not drawn: the simulator serves no canvas or List templates. |
| people & status | users.identity | Sign in with Slack identity endpoint; the client has no screen for it. |
| scheduling | reminders.info | Later draws each reminder from reminders.list; no screen reads one reminder alone. |
| search & navigation | Later → Archived tab | Disabled, says why on click: archiving a Later item is Slack’s saved.* state, which the simulator doesn’t serve. |
| search & navigation | Later header → Filter | Disabled, says why on click: Later’s filters read Slack’s saved.* state, which the simulator doesn’t serve. |
| search & navigation | Huddles | No huddle API in the simulator. |
| search & navigation | search.all | The results view asks search.messages and search.files, one per tab, so each tab pages on its own; search.all returns the same two lists and no other screen needs it. |
| apps & views | views.publish | Bot write; the simulator exposes no read or event a client could render App Home from. |
| apps & views | views.update | Bot write; same as views.open. |
| apps & views | a message’s selects, overflow menus and date pickers | Drawn disabled: the simulator’s blocks.actions presses buttons only. |
| apps & views | a modal’s selects, date pickers, checkboxes and radio buttons | Drawn disabled: this client draws only a modal’s text inputs so far. |
| apps & views | a button inside a modal | Drawn disabled: the simulator’s blocks.actions presses a message’s buttons, not a modal’s. |
| apps & views | a push ack → the pushed view over the open one, with Back | The simulator serves no views.push and mints no view for a pushed one, so the client could not submit it; a push ack closes the modal. |
| apps & views | closing a modal whose view sets notify_on_close → the app gets view_closed | The simulator delivers no view_closed, so closing a modal tells the app nothing. |
| apps & views | a modal input whose conversation picker sets response_url_enabled → response_urls in the submission | The simulator’s view_submission always carries an empty response_urls. |
| sidebar | Invite people / Connect apps | Needs admin.*, which the simulator doesn’t serve; renders disabled. |
| sidebar | sidebar gear (Manage my sidebar) | Needs users.prefs, which the simulator doesn’t serve; renders disabled. |
| sidebar | Welcome back / onboarding banners | No backing data in the simulator. |
| sidebar | sidebar item menu → Mute | Needs users.prefs, which the simulator doesn’t serve; renders disabled. |
| sidebar | Create a section / Move to new section | Slack keeps sections in prefs the simulator doesn’t serve; Move to new section renders disabled. |
| sidebar | section options: show unreads only, sort | Show unreads only / sort need users.prefs; not rendered. |
| canvases & lists | List toolbar All items ▾ | Disabled, says why on click: the simulator serves no List views. |
| canvases & lists | List toolbar Edit view | Disabled, says why on click: the simulator serves no List views. |
| canvases & lists | Item panel → Add Comment | Disabled, says why on click: comments on an item aren’t part of the simulator. |
| canvases & lists | a standalone List’s header Share, Workflows and the info button | Not drawn: the dialogs they open in Slack are not known yet, apart from a channel’s Share this list?, reached through conversations.addTab. |
Last updated on