Reverse engineering study · Updated 2026-10-16 · Environment L2 · Phase 7 Close (study ended)

RES · Reverse Engineering SaaS

ClickUp

Document ClickUp's board view, task detail view and custom fields well enough that a team that never used ClickUp can rebuild them, and say what would block such a clone from launching

ClickUp, documented from the outside: 4 screens, 19 components and 55 business rules, each tied to evidence.

  1. Covered. board view (F-001 to F-007), task view (F-009 to F-015) and custom fields (F-016 to F-022): 55 rules, 19 components, 5 screens, 14 entities, 14 production barriers. 22 field types (every non-AI type except Button and Rollup) were created, filled where possible and shown on cards; a field with a value was deleted and restored.
  2. Not covered. drag and drop (not automatable here), WIP limits and required fields (Business plan), task-type fields (Business Plus), AI fields (credits), Files, Button and Rollup fields, anything that needs a second person.
  3. Decide. whether the ClickUp terms allow building a clone from this study (Q-005), and whether to open an L1 trial account for the Business-plan features.
27
features
4
screens
19
components
55
business rules
14
entities
14
launch items
139
evidence files

01Overview

What needs your decision, how far the study went, and what comes next.

i

If you are an AI agent

Do not build from this page: it is generated for people. Open BUILD.md in this folder and follow its read order. The Markdown files next to it are the source of truth.

!
Needs your decision
  • Terms: ClickUp Terms 1.5, 3.9 and 4.13 and Developer Terms 3 restrict reverse engineering and competitive use (00-charter.md, BR-011). Decide with counsel whether a clone may rely on this study (Q-005).
  • A dedicated trial account in a separate browser profile (L1) for tests that need a second person (mentions, assignments, permissions, guests) or a Business plan (required fields, WIP limits, pinned fields, Tag Manager).
  • The test workspace is kept by instruction (L-001). Delete it when it is no longer useful: Settings > Workspace > Delete workspace.
×
Blocked
  • F-005 Drag and drop: synthetic drag does not move cards and freezes the page script (EV-046).
  • F-008 WIP limits and F-019 Required fields: Business plan.
  • F-021 task-type fields: Business Plus.
  • F-023 AI fields: AI credits.

How far the study went: 55% of checks done

116 done56 partial26 blocked14 todo

Next actions

  1. F-005 drag and drop: a person drags cards while the agent records, or a Playwright session with real mouse events (Q-003).
  2. F-019 required fields and F-021 task-type fields: Business trial in an L1 account; probe where creation is blocked and the message (Q-010).
  3. Validate the barrier weights and costs with 10 to 20 Brazilian SMB buyers and two quotes per provider (Q-006, Q-007), then fix the PRD build order.

02What the product does

Every feature found, its plan and priority, the screens it lives on, and how deeply each one was studied.

Priority: P1 named by the user, P2 core loop, P3 data model completeness, P4 collaboration, P5 admin and settings. Plan names: Free Forever (the test workspace), Unlimited, Business, Business Plus, Enterprise [doc SRC-035][doc SRC-037].

IDAreaFeaturePlanPriorityScreensBarriersStatusSource
F-001BoardColumns by group: one column per status, counts, empty columns, add group (new status), collapseAllP1S-001done[obs EV-002][doc SRC-012]
F-002BoardCard: anatomy, inline field edits (assignee, dates, priority, tags), hover toolbar, More menuAllP1S-001done[obs EV-013][doc SRC-009]
F-003BoardCreate a task inside a columnAllP1S-001done[obs EV-029]
F-004BoardCustomize view and view drafts: card size, cover, stack and empty fields, fields, group, subgroup, filter, sort, Save viewAll (private, protected, default views: Business)P1S-001partial[obs EV-019][doc SRC-013][doc SRC-014]
F-005BoardDrag and drop cards between columns and within a columnAllP1S-001blocked[doc SRC-012]
F-006BoardBulk selection and bulk actionsAllP2S-001partial[obs EV-028]
F-007BoardMany items: column paging and virtual scrollAllP2S-001done[obs EV-046]
F-008BoardWork in progress limits per columnBusinessP2S-001blocked[doc SRC-011]
F-009Task viewLayout and header: breadcrumb, status, assignees, dates, priority, tags, layout modesAllP1S-002done[doc SRC-016][doc SRC-017]
F-010Task viewDescriptionAllP1S-002partial[doc SRC-017]
F-011Task viewSubtasksAllP1S-002partial[doc SRC-017]
F-012Task viewChecklistsAllP1S-002done[doc SRC-017]
F-013Task viewRelationships and dependenciesAllP1S-002partial[doc SRC-021][doc SRC-022]
F-014Task viewActivity and commentsAllP1S-002partial[doc SRC-017]
F-015Task viewFields section (custom fields inside the task)AllP1S-002done[doc SRC-007]
F-016Custom fieldsCreate a field of each type, with its optionsAll (60 value uses on Free)P1S-002, S-003partial[doc SRC-002][api SRC-001]
F-017Custom fieldsFill values of each typeAll (60 uses on Free)P1S-001, S-002partial[doc SRC-005]
F-018Custom fieldsHow each type renders on board cardsAllP1S-001done[doc SRC-007]
F-019Custom fieldsRequired fieldsBusinessP1S-002, S-003blocked[doc SRC-003]
F-020Custom fieldsDelete a field that has values; trash and restoreAllP1S-002, S-005done[doc SRC-004]
F-021Custom fieldsScope (workspace, space, folder, list, task type) and the Custom Field ManagerAll (task-type fields: Business Plus)P1S-003partial[doc SRC-006][doc SRC-008]
F-022Custom fieldsFree Forever limit of 60 value usesFreeP1S-002partial[doc SRC-005]
F-023Custom fieldsAI fields (summary, categorize, autofill)AI creditsP3S-003BR-014blocked[doc SRC-044]
F-024StatusesStatus groups, list or space scopeAllP2S-001partial[obs EV-037][doc SRC-018]
F-025TagsSpace-level tags created from a cardAllP2S-001partial[obs EV-040]
F-026RealtimeChanges appear in other open tabs without reloadAllP2S-001BR-013done[obs EV-032]
F-027IntegrationsCalendar, email, chat, CRM and storage integrations (barrier scan only)VariesP5BR-004, BR-005, BR-006, BR-007n/a[obs EV-001][doc SRC-049]

Screen catalog

IDScreenURL patternEntry pointsFeaturesFile
S-001Board view of a list/:team/v/b/li/:list (also /:team/v/li/:list/:view)Views bar > Board; sidebar list > Board tabF-001 to F-008, F-016 to F-018, F-024 to F-026screens/S-001-board.md
S-002Task view/t/:task and /t/:team/:task (opens as modal, full screen or sidebar)Click a card title; card More > New tabF-009 to F-015, F-017screens/S-002-task-view.md
S-003Custom Field Managermodal over /:team/settings/... or any view (no own route seen)Workspace menu > Custom Fields; Settings > Custom Field Manager; Fields panel gearF-016, F-019 to F-021screens/S-003-custom-field-manager.md
S-005Trash/:team/settings/trashSettings > TrashF-020screens/S-005-trash.md
S-004List view of a list/:team/v/l/li/:listViews bar > List(used only to create fixtures; out of scope)
Coverage by feature which parts of each feature were checked

Values: todo, partial, done, blocked, n/a. The work queue is this table, top to bottom.

FeatureAnatomyStatesInteractionsRulesDataNetworkKeyboard and a11yPersistenceDesignNotes
F-001 Board columnsdonedonedonedonedonedonepartialdonedoneS-001, C-002, R-001, R-002, R-009
F-002 Board carddonedonedonedonedonedonedonedonedoneC-001, C-004, C-005, C-009, C-010; R-003 to R-007, R-017
F-003 Create in columndonedonedonedonepartialblockedpartialdonedoneC-007, R-010; create request not captured (recorder off)
F-004 Customize view and draftsdonedonepartialdonedonedonetododonedoneC-003, R-008, R-012 to R-015; Save view, Autosave, Private, Protect, Default not clicked
F-005 Drag and droppartialblockedblockedpartialn/ablockedpartialblockedtodoblocked: drag not automatable (EV-046); R-019 from docs; Q-003
F-006 Bulk selectiondonepartialpartialtodon/atodotodon/adoneC-006; no bulk action run
F-007 Many itemsn/adonedonedonen/adonen/an/an/aR-016
F-008 WIP limitsblockedblockedblockedpartialn/ablockedblockedblockedblockedblocked: plan (Business) [doc SRC-011]
F-009 Task view header and layoutdonedonedonedonedonedonepartialdonepartialS-002, C-011, R-020 to R-024, R-027, R-032; keyboard walk not done
F-010 DescriptiondonepartialpartialdonedoneblockedtododonepartialC-012, R-025; saved through the collaborative editor socket (not capturable)
F-011 SubtasksdonepartialpartialdonedonedonetododonepartialC-013, R-028
F-012 ChecklistsdonedonepartialdonedonedonepartialdonepartialC-014, R-030, R-031
F-013 Relationships and dependenciesdonepartialpartialdonedonedonetododonepartialC-015, R-029; plain links and custom relationships not tested
F-014 Activity and commentsdonepartialpartialdonedonedonetododonepartialC-016, R-026; mentions and threads need a second person (L1)
F-015 Fields section in taskdonedonedonedonedonedonepartialdonepartialC-017, R-043, R-044; keyboard entry not walked
F-016 Create custom fieldsdonepartialdonedonedonedonetododonepartialC-018, R-033, R-034, R-040; 22 of the UI types created; Button (needs an automation), Rollup and AI types not created
F-017 Fill custom field valuesdonepartialdonedonedonedonetododonedoneC-019, R-035 to R-038, R-044 to R-047; Files and Relationship values not set; invalid input not tried
F-018 Custom fields on cardsdonedonedonedonedonedonen/adonedoneC-019, R-048 to R-050
F-019 Required fieldspartialblockedblockedpartialpartialblockedblockedblockedpartialblocked: plan (Business) [doc SRC-003]; R-041 observed on Free, R-042 from docs; Q-010
F-020 Delete field with valuesdonedonedonedonedonepartialtododonedoneS-005, R-051 to R-054; delete method inferred from the preflight; restore request not captured
F-021 Field scope and managerdonepartialpartialpartialdonepartialtododonepartialS-003, R-055; only list locations tried; task-type fields need Business Plus
F-022 Free plan 60 usesn/apartialn/apartialdonedonen/adonen/aR-037; limit not reached (18 of 60); Q-008, Q-009
F-023 AI fieldspartialblockedblockedblockedpartialblockedblockedblockedblockedblocked: AI credits; presets seen in the type menu (EV-095, EV-096); BR-014
F-024 Statusespartialpartialpartialpartialpartialtodon/apartialpartialR-011
F-025 Tagspartialpartialdonedonedonedonen/adonepartialR-006
F-026 Realtimen/an/adonedonen/ablockedn/an/an/aR-018; WebSocket not capturable
F-027 Integrationsn/an/an/an/an/an/an/an/an/abarrier scan only (clone/barriers.md)

03Screens

Each screen with its annotated anatomy, the screenshots taken of it, and the states it can be in. Click a picture to enlarge it.

S-001

Board view of a list

FeaturesF-001 to F-008, F-016 to F-018, F-024 to F-026URL/:team/v/b/li/:listStatusreviewed

Shows the tasks of one list as columns. Each column is one value of the grouping field (status by default) and holds one card per task. The user reads progress at a glance, edits task fields on the card, creates tasks inside a column and opens a task in full.

EV-012 After Mark complete on a card: card moved to COMPLETE, counts 53/1, toast Status changed with Undo; v-03 sits above v-02

Anatomy

  1. 1
    Location headerBreadcrumb (Space / List with a menu), favorite star; right side: call, Agents, automation, AI, Share
  2. 2
    Views bar"Add Channel", view tabs (List, Board), "+ View"
  3. 3
    View toolbar, left C-003"Group: Status" button, "Subtasks" button; "Save view" appears here when the view has unsaved changes
  4. 4
    View toolbar, right C-003Sort, Filter, Closed (disabled while grouped by status), Assignee filter, Me-mode avatar, search, Customize, Add Task split button
  5. 5
    Column strip C-002One column per group value, then "+ Add group" at the end; horizontal scroll when wider than the screen
  6. 6
    Column header C-002Status pill in the status color, task count; on hover: collapse, More (Group options), + (add task at top)
  7. 7
    Card list C-001Virtualized list of cards, then "+ Add Task" in the column footer
  8. 8
    Bulk action bar C-006Bottom of the screen, only while tasks are selected
  9. 9
    Toasts C-008Bottom left: Task created, Status changed with Undo, prompts

More from this screen 28 screenshots

EV-002 Board view of an empty list: three status columns and Add group
EV-017 Collapsed column as a vertical strip; Save view button appears in the toolbar (view draft)
EV-026 Board grouped by Priority (draft): Urgent, High, Normal, Low, No priority columns; cards show a status chip; Save view visible
EV-038 New status column [RE] REVIEW inserted before COMPLETE, name shown uppercase
EV-015 Column menu (Group options) on a column with tasks: Collapse, Archive all, Automate status, Select all, Rename, Edit statuses
EV-016 Column menu on an empty column: no Archive all and no Select all
Show 22 more
EV-028 Bulk action bar after Select all in a column: count, clear, Status, Assignees, Dates, Custom Fields (disabled with no fields), Tags, Move/Add, Convert to Subtask, Copy, duplicate, archive, delete, More
EV-030 After creating in IN PROGRESS: card at the top of the column with that status, form reopened below, toast Task created with Pin to bottom, Copy URL, View task
EV-041 Assignee picker on a card: Search or enter email, Me (avatar masked), Assign with AI
EV-010 Card date chips: overdue in red (3 days ago), today in yellow, range Today - Mon; priority chip High
EV-006 Card hover toolbar and the priority picker opened from the card flag icon
EV-040 Tag picker on a card with a new name typed: Select an option, Create <name>, settings gear
EV-121 Card of [RE] all fields with every value: dropdown pill, text, textarea first line with ellipsis, number, money, date, checkbox, email, signature, voting, tasks chip with +, people (masked), rating, progress bars, labels, formula, phone, website, files dash, location truncated
EV-018 Board loading state: column header and card skeletons while the view re-queries
EV-120 Board with all 22 custom fields shown (unsaved view draft): every field takes a row with its type icon; empty money and formula show R$ 0, rating three grey stars, voting 0, relationship fields an Add task button
EV-027 Group Priority with subgroup Status (draft): priority columns and collapsible status swimlanes with counts
EV-042 After assigning yourself: a prompt to add the task to your priorities with Don't ask again and Add to priorities (name masked)
EV-029 Inline create form inside a column: Task Name, Save (disabled while empty), Add assignee, Add dates, Add priority, Add tag
EV-037 Dialog after Add group: Where should this new status apply? List only (default) or Entire Space
EV-020 Card size Small (draft): narrower columns, fields wrap; Save view visible; card options list (cover, stack fields, show empty fields, collapse empty columns)
EV-023 Stack fields on and Show empty fields off (draft): empty cards show only the title; filled fields stack one per row
EV-123 Customize > Fields: Shown section grows as fields are toggled on; Properties; Custom Fields; Custom Fields in Workspace (7, not created by the study); Save view appears
EV-124 After a reload the board is back to its saved settings: no custom field rows, no Save view, search cleared
EV-122 Clicking the dropdown pill on a card opens the same option picker inline; hovering the icon shows the field name and Custom Field
EV-033 Keyboard focus on a card field toggle (assignee): white rounded outline
EV-031 Second tab 3 s after setting priority Low in the first tab: not updated yet
EV-032 Second tab about 8 s later, no reload: card shows Low
EV-039 Filters popover: Ask AI to build filters, Saved filters, Select filter list (Status, Tags, Due date, Priority, Assignee, Archived, Assigned comment, Created by, Date closed, Date created...)

States

EmptyThree columns (to do, in progress, complete) with only "+ Add Task", then "+ Add group"
LoadingColumn header skeletons and card skeletons; field values on cards can fill in after the titles
TypicalCards with chips for filled fields and empty placeholders for the rest
Custom fields shownA row per field on every card; empty values "-" or a type placeholder
Many itemsColumn scrolls on its own; only about 11 cards exist in the DOM; more load while scrolling
Long textTitle wraps to two lines and ends with an ellipsis; card height grows
Collapsed columnVertical strip with the status name rotated and the count
Grouped by another fieldColumns Urgent, High, Normal, Low, No priority; cards show a status chip; closed tasks hidden
SwimlanesRows per second field, each collapsible with its own count and +
Error
No permission
Plan-gatedNot available on Free Forever
Full screen notes entry points, data shown, interactions, keyboard and accessibility, microcopy, rules, realtime and performance, responsive, not tested

Entry points

  • Views bar of a list: the "Board" tab, created by default with every new list next to "List" [obs EV-002].
  • URL /:team/v/b/li/:list opens the list's default board view; saved views also open at /:team/v/li/:list/:view [obs EV-011].
  • Sidebar: Space > list > the last view opened.

Data shown

ElementEntity.fieldEvidence
ColumnStatus.status, Status.color, Status.type (one column per status of the list)[net EV-014][obs EV-038]
Column countnumber of tasks in the group, closed included in the closed column[obs EV-046]
Card titleTask.name[obs EV-012]
Assignee chipTask.assignees (avatar)[obs EV-041]
Date chipTask.start_date, Task.due_date (relative text, colored by urgency)[obs EV-010]
Priority chipTask.priority (flag color and label)[obs EV-006]
TagsTask.tags (name pills)[obs EV-040]
Status chipTask.status, only when the board is not grouped by status[obs EV-026]
Custom field rowsCustomFieldValue per shown field, one row each with the type icon (C-019)[obs EV-121][net EV-112]

Interactions

TriggerResultRequestPersistence scopeEvidence
Card flag icon > a priorityPriority chip appears at oncePUT /tasks/v1/item?check_dependenciesTask (server)[net EV-007][obs EV-006]
Card calendar icon > date > close pickerDate chip appears; saved only when the picker closesPUT /tasks/v1/item?...check_remap_subtasksTask[net EV-014][obs EV-010]
Card person icon > MeAvatar on the card; prompt to add to personal prioritiesPUT /tasks/v1/task/:id?...field_backlinksTask[net EV-014][obs EV-042]
Card tag icon > type a new name > Enter > closeTag created at Space level and appliedPOST /tasks/v1/tag on closeSpace tag + task[net EV-014][obs EV-040]
Hover toolbar ✓ Mark completeCard moves to the closed column, toast "Status changed" with Undo ⌘ZPUT /tasks/v1/item?...check_resolvedTask[obs EV-012][net EV-014]
Column + or "+ Add Task"Inline create form inside the columnPOST create (not captured)Task[obs EV-029]
Column More > Collapse groupColumn collapses; "Save view" appearsnone until saved; a view re-queryView draft (lost on reload)[obs EV-017][net EV-014]
"+ Add group" > name > ✓Scope dialog, then a new status columnnot capturedList statuses[obs EV-037][obs EV-038]
Column More > Select allCards get a checked box; bulk bar opensnoneBrowser memory[obs EV-028]
Scroll inside a columnMore cards renderPOST /task-v3/experience/:id/tasks/bulknone[net EV-014][obs EV-046]
Card title clickOpens the task (S-002)
Drag a card to another columnChanges the group value (status)Task[doc SRC-012] (not observed: F-005 blocked)
Customize > card size, cover, togglesBoard re-renders; "Save view" appearsview re-queryView draft[obs EV-020][obs EV-023]
Customize > Fields > a custom field toggleThe field gets a row on every card; "Save view" appearsview re-queryView draft (lost on reload)[obs EV-120][obs EV-123][obs EV-124]
Card custom field valueOpens the field editor on the card (same picker as the task view)POST /customFields/v1/task/:id/field/:idTask[obs EV-122][net EV-112]

Keyboard and accessibility

CheckResultEvidence
Tab orderCard title link, then the hover toolbar buttons (Mark complete, Add subtask, Rename, More), then the four field toggles[obs EV-034]
Arrow keysDown arrow does not move between cards[obs EV-034]
ShortcutsPriority picker items show ⌘1 to ⌘4 and ⌘0; documented global shortcuts in SRC-046 not exercised on the board[obs EV-006][doc SRC-046]
Focus visibleField toggles: white 1px ring plus a 3px dark halo; the title link has no outline[obs EV-033][obs EV-035]
EscapeCloses pickers and menus; closing the date picker saves[net EV-014]
Unlabeled controlsCard open area, field toggles and the Add subtask button have no accessible name[obs EV-011][obs EV-034]

Microcopy

ElementTextEvidence
Column menu title"Group options"[obs EV-015]
Toast after complete"Status changed" · "Undo ⌘Z"[obs EV-012]
Toast after create"Task created" · "Pin to bottom 3" · "Copy URL 2" · "View task 1"[obs EV-030]
New status dialog"Where should this new status apply?" · "List only" · "Entire Space"[obs EV-037]
Inline form"Task Name..." · "Save ↵" · "Add assignee" · "Add dates" · "Add priority" · "Add tag"[obs EV-029]
Draft indicator"Save view"[obs EV-017]

Rules

Realtime and performance

CheckResultEvidence
A change in a second tab appears without reloadYes, within about 8 s in a background tab[obs EV-031][obs EV-032]
Loading pattern (skeleton, spinner, optimistic update)Skeletons on load and on view changes; field edits show at once (optimistic)[obs EV-018][obs EV-006]
Delays the user seesCard field values seemed to fill in after the titles; not measurable in a background tabQ-001

Responsive

WidthChangeEvidence
1710 CSS pxAll observations[obs EV-046]
1024 and 390Not tested: the window belongs to the user and was not resized

Not tested

  • Drag and drop (F-005): the tool's drag and synthetic events do not move cards. Needs a human or a real mouse driver.
  • Sort options and saved filters: popovers opened only (EV-039); no filter applied.
  • Save view, Autosave, Private, Protect, Set as default: not clicked, to keep the default view clean; Private and Default need Business [doc SRC-014].
  • WIP limits (Business), Me mode, the Subtasks toggle options, card cover with an image.
  • Error and no-permission states.
  • Widths 1024 and 390 px.
S-002

Task view

FeaturesF-009 to F-015, F-017, F-019, F-020URL/t/:team/:taskStatusreviewed

Shows one task in full: its properties, description, custom fields, subtasks, relations, checklists and attachments, with the activity log and comments beside it. Every edit saves in place.

EV-051 Task view (Full screen) annotated: 1 header, 2 hero (type, title, AI bar), 3 fields grid, 4 description, 5 sections (fields, subtasks, relations, checklist, attachments), 6 activity sidebar with comment box

Anatomy

  1. 1
    HeaderPrevious and next task, breadcrumb (Space / List), add to another list, move; right: "Created <date>", AI, Share, More, favorite, Switch layout, close
  2. 2
    Hero C-011Task type pill ("Task ▾"), AI and task ID buttons, counts for subtasks, relations or checklist items, the title (wraps, no truncation), an AI prompt bar
  3. 3
    Fields grid C-011Two columns: Status (pill, next-status arrow, complete ✓), Dates (Start → Due), Track time (Start), Assignees, Priority, Tags; dependency rows (Blocked by, Blocking) appear under the grid
  4. 4
    Description C-012Rich text editor; placeholder "Add description, or write with AI"; history and full-screen icons
  5. 5
    Sections C-013, C-014, C-015Add fields, Add subtask, Relate items or add dependencies, Create checklist, Attach file; each becomes a section once used
  6. 5a
    Fields section C-017, C-019One row per custom field of the task's locations, "Hide N empty fields"
  7. 5b
    Related section C-019One tab per Tasks or Relationship field with a table of linked tasks
  8. 6
    Activity sidebar C-016"Activity" with search, follower count bell and filter; history lines with relative times, "Show more"; comments; composer at the bottom; right rail toggles (collapse, comments, activity, apps)

More from this screen 30 screenshots

EV-059 Task view of an overdue task: Dates shows Start -> 3 days ago in red; empty fields read Empty (0.6 scale)
EV-024 Card More menu: Copy link, Copy ID, New tab; Favorite, Rename, Unfollow, Remind me; Move to, Add to, Merge, Duplicate, Convert to, Custom Fields, Templates; Relationships, Task Type; Start timer, Send email to task; Archive, Delete; Sharing & Permissions
EV-076 Task view More menu: card menu items plus Description history and Print
EV-060 216-character title wraps over four lines in the task view without truncation
EV-065 Blocked task after adding a dependency: Blocked by row under the fields (warning icon), relation count in the header, Related/Dependencies tabs with a Blocked by table
EV-055 Description editor: '- ' turned into a bullet list; **bold** typed inline stayed literal; history and full-screen icons
Show 24 more
EV-062 Subtasks section after two creates: 2 open with progress bar, table Name/Assignee/Priority, Add Task row; subtask count in the header; activity lines
EV-071 Checklists section: 3 open with progress bar, named checklist, items with circles, Add item, Add checklist; activity aggregates 'added 3 items'; header checklist count
EV-117 Task view with every field filled; activity log has one line per field change (people line masked)
EV-119 Related section with a tab per relationship field ([RE] cf-tasks 1) and a table Name, Due date, Priority
EV-057 Posted comment in the activity stream (author masked), Just now, reactions, Reply; composer placeholder changes
EV-077 Task type menu: Task (default), Milestone, Form Response, Meeting Note; Recommended Asset, Campaign, Goal, Person, Resource; Create Task Type; Fill with AI
EV-078 After a full reload: description with bullets and the comment persisted; the task opened in Full screen again (0.5 scale)
EV-082 Clicking Required in tasks on Free Forever: tooltip explains the rule, the switch stays off, no message
EV-083 Clicking Pinned on Free Forever opens Upgrade to Business to unlock Pinning Custom Fields (USD price); closed without choosing
EV-054 Status picker in the task view: search, groups Not started (TO DO), Active (IN PROGRESS, [RE] REVIEW), Closed (COMPLETE)
EV-073 Next-status arrow moved TO DO to IN PROGRESS; activity line with both status colors; Status changed toast with Undo; Collapse empty fields link
EV-066 The other task shows Blocking (red icon) and an activity line You marked this task as blocking
EV-067 Create checklist creates a checklist named Checklist at once (name in edit mode), Add item, Add checklist (0.6 scale)
EV-072 After resolving one item: 2 open, the item hides under Show 1 completed; item hover actions
EV-074 Sidebar layout: board stays visible on the left, the task opens as a right panel; layout popover shows Sidebar selected
EV-075 Modal layout: centered overlay over a dimmed page, activity panel inside the modal
EV-080 Create Dropdown form: type switcher, Field name, Dropdown options with color dots, Set default, delete, Add option, AI option generator, AI Autofill, Permissions and settings, Cancel, Create
EV-130 On another task the empty phone field now defaults to Brazil: the country picked earlier was saved to the user profile, not to the field
EV-131 After picking the original country again (PUT /user/v1/user) and a reload, the phone field defaults to it (flag masked: account data); no phone value was saved
EV-126 Delete confirmation: This action will delete this Custom Field from 1 task. Admins are able to restore deleted fields from the Trash.
EV-127 After delete: the dropdown row is gone from the task and a toast says Field deleted successfully (no Undo)
EV-068 Board after task-view edits: description icon on a card, 2 subtasks toggle, dependency warning badge with count
EV-064 Relate items menu: Relate a Task or Doc, This task blocks..., This task is blocked by..., New custom relationship
EV-032 Second tab about 8 s later, no reload: card shows Low

States

EmptyPlaceholders: Start, Due, Empty for priority and tags, "Add description, or write with AI", the five section buttons
LoadingThe board stays mounted underneath; the activity list fills in after the body
TypicalFilled fields, description, comment
Many items
Long textTitle wraps over four lines, no ellipsis
OverdueDue shows "3 days ago" with a red icon
Error
No permission
Plan-gatedRequired stays off; Pinned opens Upgrade to Business
Full screen notes entry points, data shown, interactions, keyboard and accessibility, microcopy, rules, realtime and performance, responsive, not tested

Entry points

  • Click a card title on the board (C-001); the URL changes to /t/:team/:task and the title bar reads "<task name> | #<task id>" [obs EV-051][net EV-053].
  • Header arrows ↑ ↓ step to the previous or next task in the board's order [obs EV-059].
  • Card More > New tab; a direct link opens the same view [obs EV-024].

Data shown

ElementEntity.fieldEvidence
TitleTask.name[net EV-053]
TypeTask.custom_type (null = Task)[net EV-053][obs EV-077]
StatusTask.status {status, color, type, status_group}[net EV-053]
DatesTask.time_mgmt.start_date, due_date (+ _time flags)[net EV-053][obs EV-059]
AssigneesTask.users[type=assigned][net EV-053]
PriorityTask.priority[net EV-053]
TagsTask.tags[net EV-053]
DescriptionTask.content (rich text), text_content[net EV-053][obs EV-078]
SubtasksTask.subtask_ids, subtasks_count[net EV-053][obs EV-062]
DependenciesTask.related_tasks_count {dependsOn, dependedBy}[net EV-053][obs EV-065]
ChecklistsTask.checklists[{name, items[{name, resolved}]}][net EV-069][obs EV-071]
Activityhistory items and comments[net EV-058]
CreatedTask.time_mgmt.date_created ("Created 16 Oct")[obs EV-051]
FieldsCustomFieldValue for each CustomField at the task's locations[obs EV-117][net EV-112]

Interactions

TriggerResultRequestPersistence scopeEvidence
Status pillPicker grouped Not started, Active, Closed[obs EV-054]
Next-status arrow ▸Moves to the next status in order; toast with Undo; activity linePUT /tasks/v1/item?...check_resolvedTask[obs EV-073][net EV-014]
Description typingSaved on its own (no Save); markdown "- " makes a bullet listnot fetch/XHR (collaborative editor)Task[obs EV-055][obs EV-078]
Comment composer > sendComment appears in the activity streamPOST /comments/v1/task/:id/commentTask[obs EV-057][net EV-058]
Add subtask > name > EnterSubtasks section with a table; input stays for the nextPOST /tasks/v1/subcategory/:list/taskTask[obs EV-062][net EV-063]
Relate > This task is blocked by > pickBlocked by row and Dependencies tab; the other task shows BlockingPOST /scheduling/v1/dependencyBoth tasks[obs EV-065][obs EV-066][net EV-069]
Create checklistA checklist named "Checklist" is created at oncePOST /tasks/v1/task/:id/checklistTask[obs EV-067][net EV-069]
Checklist item circleItem resolved and hidden under "Show 1 completed"PUT /tasks/v1/checklistItem/:idTask[obs EV-072]
Switch layoutToggles Full screen, Modal, SidebarUser preference (all workspaces)[obs EV-074][obs EV-075]
Opening or using a taskMarks it viewedPUT /task-v3/core/:id/tasks/:id/viewedUser (recently viewed)[net EV-058]
↑ ↓ arrowsPrevious or next task in the board order[obs EV-059]
Fields > + > Create new > type > CreateNew field on the task's listPOST /customFields/v2/field, PUT .../locationsList (field location)[obs EV-080][net EV-099]
A field valueType editor; saves on change; activity linePOST /customFields/v1/task/:id/field/:idTask[obs EV-117][net EV-112]
Phone flag menu > a countryChanges the default country of every phone fieldPUT /user/v1/userUser profile (all workspaces)[obs EV-130][obs EV-131]
Row gear > delete icon > DeleteField removed from every task, toast "Field deleted successfully"/customFields/v2/field/:id?delete_all=trueWorkspace (field to Trash)[obs EV-126][obs EV-127]

Keyboard and accessibility

CheckResultEvidence
Tab orderNot walked in the task view
Arrow keysNot checked
ShortcutsDocumented: Shift+S status, Shift+A assignee, M assign to me, Shift+P priority, Shift+D date, Shift+L tag, Shift+M comment (off by default)[doc SRC-046]
Focus visibleNot checked
EscapeEscape in an empty checklist item input closed the whole task view and returned to the board[obs EV-068]
Unlabeled controlsSeveral icon-only buttons in the header have no name (one _iconOnly button flagged)[obs EV-050]

Microcopy

ElementTextEvidence
Description placeholder"Add description, or write with AI"[obs EV-051]
Section buttons"Add fields", "Add subtask", "Relate items or add dependencies", "Create checklist", "Attach file"[obs EV-051]
Relate menu"Relate a Task or Doc", "This task blocks...", "This task is blocked by...", "New custom relationship"[obs EV-064]
Composer"Write a comment..."; after the first comment "Comment, press 'space' for AI, '/' for commands"[obs EV-057]
Activity"You created this task", "You created subtask: …", "You marked this task as blocking …", "You added 3 items to checklist …", "You changed status from To Do to In Progress"[obs EV-062][obs EV-066][obs EV-071][obs EV-073]

Rules

Realtime and performance

CheckResultEvidence
A change in a second tab appears without reloadBoard side confirmed (R-018); not checked inside the task view[obs EV-032]
Loading pattern (skeleton, spinner, optimistic update)Checklist section shows a skeleton while it is created[obs EV-067]
Delays the user seesNot measured (background tab)Q-001

Responsive

WidthChangeEvidence
1710 CSS pxFull screen, Modal and Sidebar layouts[obs EV-074][obs EV-075]
1024 and 390Not tested

Not tested

  • Attachments (no file upload), time tracking (would start a running timer), recurrence, cover image, task type change, Share and the sharing dialog (A5 risk).
  • Mentions, assigned comments, threaded replies, reactions (need a second person to be meaningful).
  • Description history, Print, Duplicate, Merge, Move, Archive, Delete from the task view.
  • Keyboard walk and focus styles inside the task view.
S-003

Custom Field Manager

FeaturesF-016, F-019 to F-021URLa modal over /:team/settings/... (no route of its own seen)Statusreviewed

Lists every custom field of the workspace in one place, grouped by type, with where each one lives. From here the user creates fields, opens a field's settings and sees which locations and task types use it.

EV-098 Custom Field Manager, all fields grouped by type with a Create <type> field link per group; columns Name, Type, Created by (masked), Date Created, Location(s)

Anatomy

  1. 1
    Left rail, topAll Custom Fields, Workspace Fields, Task Type Fields (New), Personal List
  2. 2
    Left rail, By LocationSearch and the location tree (Space)
  3. 3
    Left rail, By Task TypeTask, Milestone, Form Response, Meeting Note, each with a count
  4. 4
    ToolbarSearch fields, Field type grouping, Filter, Create new
  5. 5
    TableOne group per type (pill with icon and count), rows Name, Type icon, Created by, Date Created, Location(s), row menu; "+ Create <type> field" under each group
  6. 6
    Create new menu C-018AI Fields (Summary, Custom Text, Custom Dropdown), then All types

More from this screen 5 screenshots

EV-133 Trash after deleting the list: one row for the list (tasks are not listed separately), Deleted by masked
EV-134 Custom Field Manager after deleting the list: All Custom Fields empty; sections Workspace Fields, Task Type Fields, Personal List, By Location, By Task Type
EV-096 Create new type menu, top: AI Fields (Summary, Custom Text, Custom Dropdown), then All
EV-097 Create new type menu, bottom: Progress, Email, Phone, Categorize, Custom Dropdown, Translation, Sentiment, Tasks, Location, Rating, Voting, Signature, Button, Action Items, T-shirt Size
EV-045 Custom Field Manager, All Custom Fields: No matching results found (same moment as EV-044)

States

Empty"No matching results found" and a Create field button
Loading
TypicalGroups by type, one row each
Many items
Long text
Error
No permission
Plan-gatedBusiness Plus and above [doc SRC-006][doc SRC-008]
Full screen notes entry points, data shown, interactions, keyboard and accessibility, microcopy, rules, realtime and performance, responsive, not tested

Entry points

  • Settings > Features > Custom Field Manager [obs EV-133][obs EV-134].
  • The gear in a view's Fields panel and the workspace menu also open it [doc SRC-006].

Data shown

ElementEntity.fieldEvidence
NameCustomField.name[obs EV-098][net EV-099]
TypeCustomField.type[obs EV-098][net EV-099]
Created byCustomField.userid (masked)[obs EV-098][net EV-099]
Date CreatedCustomField.date_created[obs EV-098][net EV-099]
Location(s)CustomFieldLocation.parent[obs EV-098][net EV-099]
Task type countsCustomField bound to task types[obs EV-098]

Interactions

TriggerResultRequestPersistence scopeEvidence
Create new > typeThe field form (C-018), with the location to choosePOST /customFields/v2/field, then PUT .../fields/:id/locationsWorkspace (field) + location[obs EV-097][net EV-099]
Group pill arrowCollapses a type groupnone seenBrowser[obs EV-098]
Left rail itemFilters the table (Workspace Fields, Personal List, a location, a task type)GET /customFields/v2/fieldnone[obs EV-134]

Keyboard and accessibility

CheckResultEvidence
Tab orderNot walked
Arrow keysNot checked
ShortcutsNone seen
Focus visibleNot checked
EscapeNot checked
Unlabeled controlsNot checked

Microcopy

ElementTextEvidence
Empty table"No matching results found" · "Create field"[obs EV-134]
Group footer"Create <type> field"[obs EV-098]

Rules

Realtime and performance

CheckResultEvidence
A change in a second tab appears without reloadNot checked
Loading pattern (skeleton, spinner, optimistic update)Not seen
Delays the user seesNot measured

Responsive

WidthChangeEvidence
1710 CSS pxModal of about 1060 × 750 screenshot px[obs EV-098]

Not tested

  • Editing a field from the manager, moving and merging fields (Business Plus), filters other than the left rail, the row menu.
  • Workspace, Space and Folder locations: every study field lived on one list.
  • Task-type fields (Business Plus [doc SRC-008]).
  • The 7 "Custom Fields in Workspace" seen in the view Fields panel never appear here (B-007, Q-002).
S-005

Trash

FeaturesF-020URL/:team/settings/trashStatusreviewed

Lists what was deleted in the workspace (lists, tasks, tags, custom fields) so an admin can restore it within 30 days or delete it forever.

EV-137 Trash after teardown: the temporary task, the tag (tags go to Trash too) and the list; Deleted by masked; 30-day notice

Anatomy

  1. 1
    Header"Trash", the 30-day notice, "Clear all Trash" (red)
  2. 2
    FiltersSearch, Type, "Me" (on by default, removable)
  3. 3
    TableName with type icon, Location (path), Deleted on (relative), Deleted by (avatar), row menu
  4. 4
    Row menuRestore, Delete forever

More from this screen 4 screenshots

EV-128 Settings > Trash: deleted field listed with Location (1 location), Deleted on, Deleted by (masked); filter Me on by default; 30-day notice; Clear all Trash
EV-126 Delete confirmation: This action will delete this Custom Field from 1 task. Admins are able to restore deleted fields from the Trash.
EV-132 Delete list confirmation: 54 tasks and templates within this List will be deleted; automations will become inactive
EV-129 After Restore from Trash the dropdown field is back on the task with its old value [RE] opt A

States

EmptyTrash icon and "No items found for your search."
TypicalOne row each
Loading
Many items
Long text
Error
No permission
Plan-gated
Full screen notes entry points, data shown, interactions, keyboard and accessibility, microcopy, rules, realtime and performance, responsive, not tested

Entry points

  • Settings > Admin > Trash [obs EV-128].
  • The delete dialogs for fields mention it ("restore deleted fields from the Trash") and the list delete toast links to it ("List moved to trash") [obs EV-126][obs EV-132].

Data shown

ElementEntity.fieldEvidence
Name and iconthe deleted object and its kind (list, task, tag, field)[obs EV-137]
Locationparent path ("Space > List", "1 location" for a field)[obs EV-128][obs EV-137]
Deleted ondeletion time, relative[obs EV-137]
Deleted byuser (masked)[obs EV-137]

Interactions

TriggerResultRequestPersistence scopeEvidence
Row menu > RestoreThe item leaves the list and comes back where it was, with its valuesnot capturedWorkspace[obs EV-129]
Row menu > Delete foreverNot clicked (permanent)
Clear all TrashNot clicked (permanent)

Keyboard and accessibility

CheckResultEvidence
Tab orderNot walked
Arrow keysNot checked
ShortcutsNone seen
Focus visibleNot checked
EscapeNot checked
Unlabeled controlsThe row menu button shows only "…"[obs EV-128]

Microcopy

ElementTextEvidence
Notice"Items shown below will be automatically deleted forever after 30 days."[obs EV-128]
Empty"No items found for your search."[obs EV-128]

Rules

Realtime and performance

CheckResultEvidence
A change in a second tab appears without reloadNot checked
Loading pattern (skeleton, spinner, optimistic update)Not seen
Delays the user seesNone noticed

Responsive

WidthChangeEvidence
1710 CSS pxSettings layout with a left menu[obs EV-128]

Not tested

  • Delete forever and Clear all Trash (permanent deletion; out of bounds for the agent).
  • Restoring a list or a tag; the Type filter; the view with "Me" removed.
  • Who may restore (the delete dialog says admins).

04Components

The reusable pieces of the interface. Solid pills are variants and states seen in the product; dashed ones were not observed. Hover a pill for detail.

EV-010 Card date chips: overdue in red (3 days ago), today in yellow, range Today - Mon; priority chip High
C-001

Board card

Product namecu3-board-task (.board-task)Used inS-001Statusreviewed

Variants

Small / Medium / LargeStack fields onShow empty fields offClosed task

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • The whole card opens the task; the title is a real link, so middle click opens a new tab [obs EV-011].
  • Each field toggle opens its picker in place (C-004, C-005, C-009, C-010); edits are optimistic [obs EV-006].
  • Date chip text is relative: "3 days ago" (red, open and overdue), "Today" (yellow), "Today - Mon" for a range [obs EV-010].
  • The hover toolbar overlaps the end of a long title ("[RE] created in colu…") [obs EV-030].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1CoverOptional image or description above the title (Customize > Card cover: Auto, None, Image, Task description)[obs EV-021]
2TitleTask name, link to /t/:id/:id; up to two lines, then ellipsis[obs EV-012][obs EV-011]
3Task propertiesIcons for description, attachments, checklists, dependencies (Layout options > Show task properties)[obs EV-022][doc SRC-009]
4Field rowField toggles in order: assignee, dates, priority, tags, then shown custom fields; empty fields show an outline icon[obs EV-012][obs EV-043]
5Status chipOnly when the board is grouped by a field other than status[obs EV-026]
6Subtasks"N subtasks" toggle that expands children inside the card[doc SRC-009]
7Hover toolbarMark complete, Add subtask, Rename, More; top right, over the title[obs EV-013]

Field elements: cu-assignees-field, cu-dates-field (cu-task-row-recurring-date-picker), cu-priority-field, cu-tags-field, cu-board-task-custom-fields, each wrapped in cu-board-task-field-layout [obs EV-011].

Variants

VariantDifferenceEvidence
Small / Medium / LargeColumn width 200 / 264 / 328 CSS px; card 246 px wide at Medium[obs EV-046][obs EV-035]
Stack fields onEach filled field on its own row with an icon[obs EV-023]
Show empty fields offEmpty field placeholders hidden; an empty card shows only its title[obs EV-023]
Closed taskSame card in the closed column[obs EV-012]

States

StateVisual changeEvidence
DefaultBackground rgb(25,25,25), radius 10px, hairline white shadow[obs EV-035]
HoverHover toolbar appears top right; field tooltips ("Priority", "Dates")[obs EV-013][obs EV-010]
FocusField toggle gets a white 1px ring and dark 3px halo; title link no ring[obs EV-033]
PressedNot observed
SelectedCheckbox square at top right, filled white[obs EV-028]
DisabledNot observed
LoadingSkeleton block the size of a card[obs EV-018]
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Width (Medium)246 px inside a 264 px column[obs EV-035]
Min height72 px (title and one field row)[obs EV-035]
Backgroundrgb(25,25,25)--cu-background-subtle[obs EV-035]
Radius10px[obs EV-035]
Shadowrgba(255,255,255,.333) 0 0 1px, rgba(0,0,0,.055) 0 1px 2px[obs EV-035]
Title type14px/20px, weight 500, rgb(238,238,238)--cu-content-default[obs EV-035]
Field toggle24×24, radius 6px, 1px border rgb(34,34,34)--cu-border-low-contrast[obs EV-035]
Overdue date textrgb(255,133,137)--cu-content-danger[obs EV-035][obs EV-010]
Due today textrgb(255,204,77)--cu-content-warning[obs EV-035][obs EV-010]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
linktask nameEnter opensno outline[obs EV-034]
button (toolbar)"Mark complete", "Rename", More named by data-test; Add subtask unnamedTab reaches them even without hovernot checked[obs EV-034]
div[tabindex=0] field togglesnoneTabyes[obs EV-033][obs EV-034]

Not tested

  • Cover image (no attachment fixture), subtasks expander, task property icons with real content, pressed state.
EV-015 Column menu (Group options) on a column with tasks: Collapse, Archive all, Automate status, Select all, Rename, Edit statuses
C-002

Board column

Product namecu3-board-group with cu3-board-group-headerUsed inS-001Statusreviewed

Variants

EmptyCollapsedNon-status groupingSwimlane cell

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Group options menu: Collapse group, Archive all in this group, Automate status, Select all, Rename, Edit statuses. Archive all and Select all appear only when the column has tasks (R-009) [obs EV-015][obs EV-016].
  • Columns are not draggable on the board [inf] Q-003.
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1HeaderStatus pill (icon by status type, uppercase name) and count; header background tinted with the status color[obs EV-012][obs EV-035]
2Header hover actionsCollapse (‹), More (Group options), + (add task at the top)[obs EV-015]
3WIP slotcu3-board-grouping-header-wip present in the DOM; limits need Business[obs EV-011][doc SRC-011]
4Card listVirtualized list (cdk-virtual-scroll-viewport) of C-001[obs EV-011]
5Footer"+ Add Task" in the status color[obs EV-012]

Variants

VariantDifferenceEvidence
EmptyOnly "+ Add Task"[obs EV-002]
CollapsedVertical strip, rotated name, count[obs EV-017]
Non-status groupingHeader shows the value (flag + "High"); "No priority" column for empty values[obs EV-026]
Swimlane cellSame column per row of the subgroup[obs EV-027]

States

StateVisual changeEvidence
DefaultPill + count[obs EV-012]
HoverActions appear on the header[obs EV-015]
FocusNot checked
PressedNot observed
SelectedNot applicable
DisabledNot observed
LoadingHeader skeleton[obs EV-018]
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Width264 px (Medium), 200 (Small), 328 (Large)[obs EV-046]
Header40 px high, 8px padding[obs EV-035]
Status pill20 px high, radius 6px, 11px/500 text, padding 2 6 2 4[obs EV-035]
Gap between columnsabout 8 px[obs EV-012]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
list items (li) per columnstatus name in data-test onlynot checkednot checked[obs EV-011]

Not tested

  • Rename, Edit statuses, Automate status and Archive all (not clicked).
EV-019 Customize view side panel: name, More options, Fields, Filter, Group, Sort, Subtasks, Templates, view toggles (autosave, pin, private, protect, default), sharing
C-003

Customize view panel

Product nameCustomize view side panel (cu-view-setting-toggle)Used inS-001Statusreviewed

Variants

Card size dropdownCard cover dropdown

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Every change re-renders the board and shows "Save view"; nothing persists until saved; a reload drops it (R-008) [obs EV-017][net EV-014].
  • The Fields page lists workspace fields that the Custom Field Manager does not show (B-008) [obs EV-044][obs EV-045].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Header"Customize view", close[obs EV-019]
2NameView icon and name field ("Board")[obs EV-019]
3More options (inline)Card size, Card cover, Stack fields, Show empty fields, Collapse empty columns, More options ›[obs EV-020]
4Settings listFields (n shown), Filter, Group, Sort, Subtasks, Templates[obs EV-019]
5View togglesAutosave for me, Pin view, Private view, Protect view, Set as default view[obs EV-019]
6SharingCopy link to view, Favorite ›, Sharing & Permissions[obs EV-019]
7Layout options pagePage and card layout: Card size, Card cover, Stack fields, Show task properties, Show empty fields, Show task locations, Show subtask parent names, Collapse empty columns, Show column colors. Task visibility: Show closed tasks, Show closed subtasks, Show tasks from other Lists, Show subtasks from other Lists. View settings: Default to Me Mode, Duplicate view, Reset view to defaults, Default view settings[obs EV-022]
8Fields pageSearch, Create new / Add existing tabs; Shown (Task Name locked, Assignee, Dates, Priority, Tags); Properties (Date closed, Date created, Date updated, Status, Task ID, Task Type, Time tracked); Custom Fields in Workspace[obs EV-043][obs EV-044]

Variants

VariantDifferenceEvidence
Card size dropdownSmall, Medium (default), Large[obs EV-020]
Card cover dropdownAuto, None, Image (default), Task description[obs EV-021]

States

StateVisual changeEvidence
DefaultToggles off except Show empty fields, Show task properties, Show subtask parent names, Show column colors, tasks/subtasks from other Lists[obs EV-022]
HoverRow highlight; tooltip on Stack fields: "Display standard fields as stacked or inline"[obs EV-023]
FocusNot checked
PressedNot observed
SelectedCheckmark on the chosen dropdown value[obs EV-020]
Disabled"Show closed tasks" greyed while grouped by status[obs EV-022]
LoadingNot observed
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Panel widthabout 270 px at 1456 px screenshot width (about 320 CSS px)[obs EV-019]
Toggle on colorbrand purple[obs EV-022]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
togglesrow label (view-setting-toggle__label)not checkednot checked[obs EV-011]

Not tested

  • Save view, Autosave, Pin, Private, Protect, Set as default, Duplicate, Reset, Templates, Sharing.
EV-008 Date picker opened from a card: start and due inputs, quick options, month grid, Set Recurring
C-004

Date picker

Product namecu-recurring-date-dropdownUsed inS-001, S-002Statusreviewed

Variants

Opens upward

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Opening it loads the workspace work schedule and schedule exceptions [net EV-014].
  • Picking a start date moves focus to the due date input [obs EV-009].
  • The value is saved when the picker closes, not when a day is clicked (R-005) [net EV-014].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Inputs"Start date" and "Due date", each with clear (×) and "Add time" once set[obs EV-008][obs EV-009]
2Quick optionsToday, Later (a time later today), Tomorrow, This weekend, Next week (Monday), Next weekend, 2 weeks, 4 weeks; each shows the resolved day[obs EV-008]
3Month gridMonth and year, "Today", previous and next; weeks start on Monday; today in a red circle; range highlighted[obs EV-009]
4Set Recurring ›Recurrence submenu[obs EV-008]
5Work schedule banner"Set up your work schedule", dismissible[obs EV-008]

Variants

VariantDifferenceEvidence
Opens upwardWhen there is no room below the card[obs EV-009]

States

StateVisual changeEvidence
DefaultDue date input focused[obs EV-008]
HoverQuick option row highlight[obs EV-009]
FocusFocused input has a white border[obs EV-008]
PressedNot observed
SelectedChosen day boxed; start-to-due range shaded[obs EV-009]
DisabledNot observed
LoadingNot observed
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Sizeabout 410 × 310 px (screenshot scale)[obs EV-008]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
inputsplaceholders "Start date", "Due date"Escape closes and savesyes[obs EV-008][net EV-014]

Not tested

  • Typing a date as text, times, recurrence, work schedule setup.
EV-006 Card hover toolbar and the priority picker opened from the card flag icon
C-005

Priority picker

Product namecu-priority-list-dropdownUsed inS-001, S-002Statusreviewed

Variants

Card chip after choice

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Choosing a value saves at once: PUT /tasks/v1/item with priority as a numeric string, "2" for High (R-017) [net EV-007].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Search"Search..."[obs EV-006]
2PriorityUrgent (red flag, ⌘1), High (yellow, ⌘2), Normal (blue, ⌘3), Low (grey, ⌘4), Clear (⌘0)[obs EV-006]
3Personal PrioritiesSection with the operator's personal priority list[obs EV-006]
4AI"Prioritize with AI"[obs EV-006]

Variants

VariantDifferenceEvidence
Card chip after choiceFlag in the priority color plus label ("High", "Low")[obs EV-010][obs EV-032]

States

StateVisual changeEvidence
DefaultFirst item highlighted[obs EV-006]
HoverRow highlight[obs EV-006]
FocusSearch focused[obs EV-006]
PressedNot observed
SelectedNot observed
DisabledNot observed
LoadingNot observed
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Urgent flagred (rgb 255,133,137 family)[obs EV-006]
High flagyellow (rgb 255,204,77 family)[obs EV-006]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
menu itemspriority names⌘1 to ⌘4, ⌘0 shownnot checked[obs EV-006]

Not tested

  • Keyboard shortcuts themselves, Personal Priorities, Prioritize with AI.
EV-028 Bulk action bar after Select all in a column: count, clear, Status, Assignees, Dates, Custom Fields (disabled with no fields), Tags, Move/Add, Convert to Subtask, Copy, duplicate, archive, delete, More
C-006

Bulk action bar

Product namebulk action toolbar (--cu-bulk-action-toolbar-inset-x)Used inS-001Statusreviewed

Variants

No custom fields in the list

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Opens after "Select all" in a column menu; selected cards show a filled checkbox at top right [obs EV-028].
  • No hover checkbox appeared on cards before a selection existed [obs EV-013].
  • × clears the selection and closes the bar [obs EV-028].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Count"1 Task selected" with × to clear[obs EV-028]
2ActionsStatus, Assignees, Dates, Custom Fields, Tags, Move/Add, Convert to Subtask, Copy, duplicate, archive, delete (red), More[obs EV-028]

Variants

VariantDifferenceEvidence
No custom fields in the list"Custom Fields" disabled[obs EV-028]

States

StateVisual changeEvidence
DefaultFloating bar at the bottom center[obs EV-028]
HoverNot checked
FocusNot checked
PressedNot observed
SelectedNot applicable
DisabledGreyed action[obs EV-028]
LoadingNot observed
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Inset34px--cu-bulk-action-toolbar-inset-x[obs EV-035]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
buttonslabels as shown; icon-only buttons not checkednot checkednot checked[obs EV-028]

Not tested

  • Any bulk action, More menu contents, shift-click range selection.
EV-029 Inline create form inside a column: Task Name, Save (disabled while empty), Add assignee, Add dates, Add priority, Add tag
C-007

Inline task create form

Product nameboard quick create cardUsed inS-001Statusreviewed

Variants

Column footer "+ Add Task"Header +

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Enter with an empty name does nothing and shows no message [obs EV-029].
  • Enter with a name creates the task with the column's status, keeps the form open for the next task and shows a "Task created" toast (R-010) [obs EV-030].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Name inputPlaceholder "Task Name..."[obs EV-029]
2Save"Save ↵", disabled while the name is empty[obs EV-029]
3Field shortcutsAdd assignee, Add dates, Add priority, Add tag[obs EV-029]

Variants

VariantDifferenceEvidence
Column footer "+ Add Task"Form opens at the end of the column[obs EV-029]
Header +Form opens at the top of the column[obs EV-015]

States

StateVisual changeEvidence
DefaultWhite border around the form[obs EV-029]
HoverNot checked
FocusInput focused on open[obs EV-029]
PressedNot observed
SelectedNot applicable
DisabledSave disabled when empty[obs EV-029]
LoadingNot observed
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Widthcard width[obs EV-029]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
textboxplaceholder onlyEnter saves, Escape closesyes[obs EV-029]

Not tested

  • Field shortcuts inside the form, pasting several lines.
EV-030 After creating in IN PROGRESS: card at the top of the column with that status, form reopened below, toast Task created with Pin to bottom, Copy URL, View task
C-008

Toast

Product namecu-toast-newUsed inS-001, S-002Statusreviewed

Variants

Task createdStatus changedPriorities promptOffline mode

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Several toasts stack; each disappears after a few seconds [obs EV-030].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Icon and titleGreen check and "Task created", or "Status changed"[obs EV-030][obs EV-012]
2BodyTask name "in" list link[obs EV-030]
3ActionsButtons with a number or key hint: "Pin to bottom 3", "Copy URL 2", "View task 1"; "Undo ⌘Z"[obs EV-030][obs EV-012]

Variants

VariantDifferenceEvidence
Task createdThree actions with digit shortcuts[obs EV-030]
Status changedUndo with ⌘Z[obs EV-012]
Priorities prompt"Don't ask again ⌥1", "Add to priorities ⌥2"[obs EV-042]
Offline mode"You can still track time and create tasks and reminders! Access any task in your tray."[obs EV-019]

States

StateVisual changeEvidence
DefaultBottom left over the sidebar, stacked when several[obs EV-030]
HoverNot checked
FocusNot checked
PressedNot observed
SelectedNot applicable
DisabledNot observed
LoadingNot observed
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Widthabout 270 px at screenshot scale[obs EV-030]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
buttonslabelsdigit and ⌘Z hints shown; not pressednot checked[obs EV-030]

Not tested

  • The digit shortcuts and Undo itself; the exact timeout.
EV-041 Assignee picker on a card: Search or enter email, Me (avatar masked), Assign with AI
C-009

Assignee picker

Product namecu-user-list-dropdownUsed inS-001, S-002Statusreviewed

Variants

Single-member workspace

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Picking "Me" saves at once (PUT /tasks/v1/task/:id with assignees.add) and then shows a prompt to add the task to the user's priorities (R-007) [net EV-014][obs EV-042].
  • Typing an email would invite a person (A5): not done.
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Search"Search or enter email..."[obs EV-041]
2People"Me" first (avatar), then members[obs EV-041]
3AI"Assign with AI"[obs EV-041]

Variants

VariantDifferenceEvidence
Single-member workspaceOnly "Me"[obs EV-041]

States

StateVisual changeEvidence
DefaultList of people[obs EV-041]
HoverRow highlight[obs EV-041]
FocusNot checked
PressedNot observed
SelectedAvatar shown on the card[obs EV-012]
DisabledNot observed
LoadingNot observed
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Widthabout 240 px at screenshot scale[obs EV-041]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
listnot checkednot checkednot checked

Not tested

  • Teams, other members, invite by email (needs a second account: L1).
EV-040 Tag picker on a card with a new name typed: Select an option, Create <name>, settings gear
C-010

Tag picker

Product namecu-tags-listUsed inS-001, S-002Statusreviewed

Variants

Card chip

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Tags are created at Space level and applied to the task in one request when the picker closes (R-006) [net EV-014].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1InputTag search; applied tags show as removable pills inside it[obs EV-040]
2Options"Select an option" header, matching tags, "Create <name> ↵" when no tag matches[obs EV-040]
3SettingsGear to manage tags[obs EV-040]

Variants

VariantDifferenceEvidence
Card chipGrey pill with the tag name ("[re] tag-a")[obs EV-012]

States

StateVisual changeEvidence
DefaultInput focused[obs EV-040]
HoverNot checked
FocusNot checked
PressedNot observed
SelectedPill in the input[obs EV-040]
DisabledNot observed
LoadingNot observed
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
New tag colorstag_fg and tag_bg hex colors chosen by the product[net EV-014]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
inputnot checkedEnter createsnot checked[obs EV-040]

Not tested

  • Tag colors, tag manager, removing a tag.
EV-051 Task view (Full screen) annotated: 1 header, 2 hero (type, title, AI bar), 3 fields grid, 4 description, 5 sections (fields, subtasks, relations, checklist, attachments), 6 activity sidebar with comment box
C-011

Task fields grid

Product namecu-task-fields-containerUsed inS-002Statusreviewed

Variants

Empty taskWith dependency

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Each value opens the same pickers as the board card (C-004, C-005, C-009, C-010) [obs EV-051].
  • The ✓ completes the task; ▸ moves to the next status (R-024) [obs EV-073].
  • A browser-stored preference hides empty fields (cu-task-view-hide-empty-location-fields in localStorage) [obs EV-011].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1StatusStatus pill, next-status arrow ▸, complete ✓[obs EV-073]
2DatesStart → Due; overdue due date in red[obs EV-059]
3Track timeStart timer[obs EV-051]
4AssigneesAvatars; Empty when none[obs EV-051]
5PriorityFlag and label; Empty when none[obs EV-051]
6TagsTag pills; Empty when none[obs EV-051]
7Dependency rowsBlocked by / Blocking with the other task[obs EV-065][obs EV-066]
8Collapse empty fieldsLink that hides empty properties[obs EV-073]

Variants

VariantDifferenceEvidence
Empty taskPlaceholders Start, Due, Empty[obs EV-059]
With dependencyExtra row under the grid[obs EV-065]

States

StateVisual changeEvidence
DefaultLabel column with icons, value column[obs EV-051]
HoverNot checked
FocusNot checked
PressedNot observed
SelectedNot applicable
DisabledNot observed
LoadingNot observed
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Layouttwo columns of label + value[obs EV-051]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
buttonslabel icons per field (task-field-label-icon__container-<Field>)not checkednot checked[obs EV-050]

Not tested

  • Time tracking, Collapse empty fields toggle (browser preference), assignee change in the task view.
EV-055 Description editor: '- ' turned into a bullet list; **bold** typed inline stayed literal; history and full-screen icons
C-012

Description editor

Product namecu-task-editor (Quill)Used inS-002Statusreviewed

Variants

EmptyFilled

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Saves without a button through the collaborative editor connection; the task detail response carries an editor_token [net EV-053][obs EV-078].
  • "- " at the start of a line makes a bullet list; **bold** typed in one go is not converted (R-025) [obs EV-055].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Text areaRich text with markdown shortcuts[obs EV-055]
2PlaceholderAdd description, or write with AI[obs EV-051]
3ActionsDescription history, full screen[obs EV-055][obs EV-050]

Variants

VariantDifferenceEvidence
EmptyPlaceholder with AI link[obs EV-051]
FilledParagraphs and lists[obs EV-078]

States

StateVisual changeEvidence
DefaultPlain text[obs EV-078]
HoverNot checked
FocusCaret, toolbar on selection[obs EV-055]
PressedNot observed
SelectedNot checked
DisabledNot observed
LoadingNot observed
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Widththe content column[obs EV-051]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
textbox (contenteditable)not checkedEnter new linecaret[obs EV-055]

Not tested

  • Toolbar formats, slash commands, AI writing, image paste, description history, concurrent editing.
EV-062 Subtasks section after two creates: 2 open with progress bar, table Name/Assignee/Priority, Add Task row; subtask count in the header; activity lines
C-013

Subtasks section

Product namecu-task-view-subtasks-sectionUsed inS-002Statusreviewed

Variants

Before first subtask

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Enter creates the subtask and keeps the input open; each create is one request with parent set (R-028) [net EV-063].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1HeaderSubtasks, N open, progress bar; Sort, expand, Suggest (AI), +[obs EV-062]
2TableName with status circle, Assignee, Priority, add column[obs EV-062]
3Add Task rowInline create[obs EV-062]

Variants

VariantDifferenceEvidence
Before first subtaskSingle input under the header[obs EV-061]

States

StateVisual changeEvidence
DefaultTable[obs EV-062]
HoverNot checked
FocusInput focused after Add subtask[obs EV-061]
PressedNot observed
SelectedRow checkbox column[obs EV-062]
DisabledNot observed
LoadingNot observed
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Row heightabout 30 px[obs EV-062]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
table rowsnot checkedEnter createsnot checked[obs EV-061]

Not tested

  • Sort, Suggest (AI), nested subtasks, subtask status changes, converting a subtask.
EV-071 Checklists section: 3 open with progress bar, named checklist, items with circles, Add item, Add checklist; activity aggregates 'added 3 items'; header checklist count
C-014

Checklist

Product namecu-task-view-checklists-sectionUsed inS-002Statusreviewed

Variants

New

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Create checklist saves an empty checklist at once (R-030); items save one request each; items have uuid IDs and can nest (children) and carry an assignee and dates [net EV-069].
  • Resolved items collapse under Show completed (R-031) [obs EV-072].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1HeaderChecklists, N open, progress bar; expand, +[obs EV-071]
2ChecklistEditable name, items with circles, Add item[obs EV-071]
3FooterShow N completed, Add checklist[obs EV-072]
4Item hoverDrag handle; actions (assign, convert, More)[obs EV-072]

Variants

VariantDifferenceEvidence
NewName 'Checklist' in edit mode[obs EV-067]

States

StateVisual changeEvidence
DefaultOpen items listed[obs EV-071]
HoverItem actions[obs EV-072]
FocusNot checked
PressedNot observed
SelectedResolved items hidden[obs EV-072]
DisabledNot observed
LoadingSkeleton while created[obs EV-067]
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Item rowabout 30 px[obs EV-071]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
itemsnot checkedEnter adds, Escape on empty closes the task viewnot checked[obs EV-068]

Not tested

  • Item assignee and dates, nesting, reordering, deleting a checklist, converting an item to a task.
EV-065 Blocked task after adding a dependency: Blocked by row under the fields (warning icon), relation count in the header, Related/Dependencies tabs with a Blocked by table
C-015

Relationships section

Product namecu-task-view-relationships-sectionUsed inS-002Statusreviewed

Variants

Blocked sideBlocking side

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • The Relate menu offers Relate a Task or Doc, This task blocks..., This task is blocked by..., New custom relationship [obs EV-064].
  • Picking a task from search creates the dependency in one request (task_id, depends_on; the response has type and lag_ms) (R-029) [net EV-069].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1TabsRelated, Dependencies with count[obs EV-065]
2Dependencies tableGroup Blocked by N; Name, Due date, Priority, assignee[obs EV-065]
3Related empty stateNo tasks or docs related. Relate[obs EV-066]

Variants

VariantDifferenceEvidence
Blocked sideWarning icon, Blocked by[obs EV-065]
Blocking sideRed icon, Blocking[obs EV-066]

States

StateVisual changeEvidence
DefaultTabs and table[obs EV-065]
HoverNot checked
FocusNot checked
PressedNot observed
SelectedActive tab underlined[obs EV-065]
DisabledNot observed
LoadingNot observed
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Tabunderline indicator[obs EV-065]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
tabs (role tab)Related, Dependenciesnot checkednot checked[obs EV-050]

Not tested

  • Plain task links, custom relationships, removing a dependency, closing a blocked task (dependency warning).
EV-057 Posted comment in the activity stream (author masked), Just now, reactions, Reply; composer placeholder changes
C-016

Activity and comments

Product namecu-task-view-right-sidebarUsed inS-002Statusreviewed

Variants

Modal layoutSidebar layout

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • History is read in pages from tasks/history; comments come from a separate comment service [net EV-053][net EV-058].
  • Several item creations aggregate into one line ("added 3 items") [obs EV-071].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1HeaderActivity, search, follower count, filter[obs EV-051]
2History linesYou <did> … with relative time; Show more folds older lines[obs EV-051][obs EV-073]
3Comment cardAuthor, time, text, reactions, Reply[obs EV-057]
4ComposerText, toolbar (add, AI, attach, mention, assign, emoji, clip, task, doc), send with menu[obs EV-056]

Variants

VariantDifferenceEvidence
Modal layoutSidebar inside the modal[obs EV-075]
Sidebar layoutCollapsed to icons[obs EV-074]

States

StateVisual changeEvidence
DefaultHistory only[obs EV-051]
HoverNot checked
FocusComposer focused[obs EV-056]
PressedNot observed
SelectedNot applicable
DisabledSend disabled while empty[obs EV-051]
LoadingEmpty list until history loads[obs EV-051]
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Widthabout 560 CSS px[obs EV-050]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
textboxplaceholder onlynot checkednot checked[obs EV-056]

Not tested

  • Mentions, assigned comments, threads, reactions, attachments in comments, activity filters and search.
EV-117 Task view with every field filled; activity log has one line per field change (people line masked)
C-017

Task Fields section

Product namecu-task-view-custom-fields-sectionUsed inS-002Statusreviewed

Variants

All filledMostly empty

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Rows are sorted by name and include every field of the task's locations; Tasks and Relationship fields are not here, they live in the Related section (R-039, R-043) [obs EV-117][obs EV-118].
  • Every value saves on its own; there is no Save button (R-044) [net EV-112].
  • The gear opens the field settings popover (C-018) for that field, from which the field can be deleted (R-051) [obs EV-125].
  • Escape inside the task view closes the whole view (R-032), so editors are closed by clicking outside [obs EV-068].
Full component notes anatomy, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1HeaderCollapse arrow, "Fields", then search, expand and + (add field)[obs EV-117]
2Row labelType icon and field name; on hover a pin-off icon at the left and a gear (field settings) at the right[obs EV-102][obs EV-117]
3Row valueThe value as rendered by its type (C-019), "–" when empty; on hover a clear × at the far right[obs EV-103][obs EV-117]
4Footer"Hide N empty fields" / show toggle[obs EV-117]
5Add fields popover (from +)Search for new or existing fields, tabs Create new and Add existing, Popular and All type lists[obs EV-079]

Variants

VariantDifferenceEvidence
All filledNo empty rows; the footer counts only the empty ones left[obs EV-117]
Mostly emptyRows show "–"; empty rows stay listed until hidden with the footer link[obs EV-100]

States

StateVisual changeEvidence
DefaultLabel column and value column, one row per field[obs EV-117]
HoverRow highlight, gear and clear icons[obs EV-102]
FocusThe value becomes an input or opens a picker or popover[obs EV-102][obs EV-108]
PressedNot observed
SelectedNot applicable
DisabledFormula values are grey and read-only[obs EV-116]
LoadingFormula showed empty for a moment after the task opened[obs EV-129]
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Layouttwo columns, label about one quarter of the width[obs EV-117]
Row heightabout 30 screenshot px; text area rows grow with the lines[obs EV-117]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
button"Set value for <field> Custom Field"not checkednot checked[obs EV-139]

Not tested

  • Keyboard entry into rows, the search and expand icons, drag order, Add existing.
  • How required, pinned and task-type fields are grouped (plan-gated).
EV-080 Create Dropdown form: type switcher, Field name, Dropdown options with color dots, Set default, delete, Add option, AI option generator, AI Autofill, Permissions and settings, Cancel, Create
C-018

Custom field form

Product namefield create and edit popoverUsed inS-002, S-003Statusreviewed

Variants

Create from a taskCreate from the managerEdit from the row gear

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Create sends the definition and then its location (R-033) [net EV-099].
  • Required in tasks does not turn on and Pinned opens an upgrade dialog on Free Forever (R-041) [obs EV-082][obs EV-083].
  • The delete icon asks for confirmation and moves the field to Trash (R-051) [obs EV-126].
Full component notes anatomy, options per type, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Type switcherCurrent type with a menu to change it; "Advanced" (gear) on edit[obs EV-080][obs EV-125]
2Field nameRequired; emoji picker at the left[obs EV-080][obs EV-125]
3Type optionsPer type, see the table below[obs EV-084] to [obs EV-094]
4AI Autofill"Automatically assign Dropdown values", Off by default[obs EV-080][obs EV-125]
5Permissions and settingsDescription, Permissions (Workspace default), Exceptions (creator can edit), Required in tasks, Pinned, Visible to Guests and Limited Members (on), "Belongs to" with the location[obs EV-081]
6FooterCreate or Save (disabled until valid), Cancel; on edit a red delete icon at the left[obs EV-080][obs EV-125]

Options per type

TypeOptions in the formEvidence
DropdownOptions with color dots, Set default, delete per option, Add option, AI option generator, sort Manual[obs EV-080][obs EV-125]
LabelsSame as Dropdown; Create stays disabled until one option exists[obs EV-092]
NumberNumber format US (1,234.56) or EU (1.234,56)[obs EV-084]
MoneyCurrency (BRL - Brazilian Real (R$) chosen), number format[obs EV-085]
VotingEmoji type, "Hide users who have voted"[obs EV-086]
TasksRelationship name, related to any task in the workspace or to tasks from one List, Create rollup fields[obs EV-087]
RelationshipTasks from a specific List (required; the field's own list not offered), rollup fields from it[obs EV-093]
PeopleShow people from the entire workspace, show guests, select multiple people (on), include teams[obs EV-088]
RatingEmoji type (star), scale 1 to 5 (default 3)[obs EV-089]
Progress (Auto)Track completion of subtasks, checklists, assigned comments; tasks without action items show 100% when done[obs EV-090]
Progress (Manual)Start value 0, end value 100[obs EV-091]
ButtonName, button label and color; "Action required: Add automation"[obs EV-094]
AI SummaryA Text area preset with AI Autofill on and a prompt[obs EV-095]

Variants

VariantDifferenceEvidence
Create from a taskOpens over the task; location defaults to the task's list[obs EV-080][obs EV-081]
Create from the managerOpens over the manager after choosing a type[obs EV-086]
Edit from the row gearSame form with Save, Advanced and the delete icon[obs EV-125]

States

StateVisual changeEvidence
DefaultFooter button disabled until required parts are filled[obs EV-092][obs EV-125]
HoverNot checked
FocusName input focused on open[obs EV-080]
PressedNot observed
SelectedNot applicable
DisabledRequired in tasks cannot be turned on (Free Forever)[obs EV-082]
LoadingNot observed
ErrorNot observed

Measurements and tokens

PropertyValueTokenEvidence
Widthabout 310 screenshot px popover[obs EV-125]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
dialognot checkednot checkednot checked

Not tested

  • Changing the type of an existing field (conversion rules are in SRC-045), Advanced settings, default values, permissions and exceptions with other people (needs L1).
  • AI option generator and AI Autofill (consume AI credits).
  • Button fields with an automation, Rollup fields.
EV-121 Card of [RE] all fields with every value: dropdown pill, text, textarea first line with ellipsis, number, money, date, checkbox, email, signature, voting, tasks chip with +, people (masked), rating, progress bars, labels, formula, phone, website, files dash, location truncated
C-019

Custom field value, by type

Product namevalue cell in the Fields section and the card field rowUsed inS-001, S-002Statusreviewed

How each of the 22 field types tested looks in the task view and on a board card, how it is edited and what it stores. Request shapes are in EV-112.

Variants

Task viewCard

States 8 of 8 observed

DefaultHoverFocusPressedSelectedDisabledLoadingError

Behavior

  • Values render the same way in the task and on the card, except text area (first line on the card), location (cut) and the relationship types (chips on the card, a Related tab in the task) [obs EV-117][obs EV-121].
  • Number and money formats come from the field, not from the user's language (R-035) [obs EV-084][obs EV-085].
Full component notes anatomy, rendering per type, variants, states, measurements and tokens, keyboard and accessibility, not tested

Anatomy

#PartContentEvidence
1Type iconOne icon per type, at the left of the task row and of the card row[obs EV-117][obs EV-121]
2ValueRendered per type (table below)[obs EV-117][obs EV-121]
3Empty value"–" in the task view, "-" on cards, with the exceptions in the table[obs EV-100][obs EV-120]

Rendering per type

TypeTask view, filledEditorCard, emptyCard, filledStored valueEvidence
CheckboxPurple checked boxClickEmpty boxChecked boxboolean[obs EV-117][obs EV-120][obs EV-121][net EV-112]
DateRelative day ("Mon")Date picker-"Mon"epoch ms + time flag[obs EV-117][obs EV-121][net EV-112]
DropdownColored pill with ▾Picker: search, colored options, drag handles-Pill with ▾, editable in placeoption id[obs EV-100][obs EV-122][net EV-112]
LabelsColored pillsSame picker, several values-Pillsone add per label[obs EV-101][obs EV-121][net EV-112]
TextPlain textInline input-Textstring[obs EV-111][obs EV-121]
Text areaSeveral linesLarge popover editor-First line + "..."string, rich text copy[obs EV-108][obs EV-109][obs EV-121][net EV-112]
Number1.234,5 (field format EU)Inline input with clear ×-1.234,5string[obs EV-103][obs EV-121][net EV-112]
MoneyR$ 1.234,56 (BRL, EU); empty shows "R$"Inline input with mask-R$ 1.234,56string[obs EV-101][obs EV-102][obs EV-121]
EmailTextInline input-Textstring (email)[obs EV-117][obs EV-121]
Phone+55 11 90000 0000Flag menu + masked input; the flag writes the profile country (R-036)-Same text, shown a moment laterstring[obs EV-104][obs EV-105][obs EV-121]
WebsiteFavicon + domain onlyInline input-Favicon + domainstring (url)[obs EV-111][obs EV-121]
LocationFormatted addressSearch with Google Places suggestions-Address cut at card widthaddress, lat, lng, place id[obs EV-113][obs EV-114][obs EV-121][net EV-112]
PeopleAvatar (masked)Person picker, "Keep typing a full email to invite"-Avataruser ids add/rem[obs EV-106][obs EV-121][net EV-112]
Rating2 of 3 starsClick a starGrey starsStars, shown a moment laternumber[obs EV-111][obs EV-120][obs EV-121]
Voting👍 1Toggle own vote👍 0👍 1user ids add/rem[obs EV-109][obs EV-120][obs EV-121][net EV-112]
Progress (Manual)Slider with value 61Drag the knobSlider at 0Slider and 61{current}[obs EV-107][obs EV-120][obs EV-121][net EV-112]
Progress (Auto)Bar 0%Computed (subtasks, checklists, assigned comments)Bar 0%; 100% on a closed taskBar and percentcomputed[obs EV-090][obs EV-120]
SignatureTyped name in a script fontPad, Type or Draw, Clear, Save-Script namestring + isTyped, signedBy[obs EV-110][obs EV-111][obs EV-121][net EV-112]
FormulaGrey computed value, R$ 2.469,06Field, operator, field; Advanced EditorR$ 0R$ 2.469,06definition only (no per-task write)[obs EV-115][obs EV-116][obs EV-120][net EV-112]
Files"–"Not tested (upload)--not captured[obs EV-121]
TasksNot in Fields; Related tab with a tableRelate menu > field > task picker (Recent Tasks)"Add task"Task chip + "+"task ids add/rem[obs EV-118][obs EV-119][obs EV-121][net EV-112]
RelationshipNot in Fields; Related tabRelate menu > field"Add task""Add task" (target list empty)not captured[obs EV-118][obs EV-121]

Variants

VariantDifferenceEvidence
Task viewFull value, editor in place or in a popover[obs EV-117]
CardOne row per shown field, compact, cut to the card width[obs EV-121]

States

StateVisual changeEvidence
DefaultAs in the table[obs EV-117]
HoverCard: field name tooltip on the icon; task view: gear and clear icons[obs EV-122][obs EV-102]
FocusEditor opens[obs EV-102]
PressedNot observed
SelectedNot applicable
DisabledFormula is read-only[obs EV-116]
LoadingRating and phone appear on cards after the other rows[obs EV-121]
ErrorNot observed (no invalid email or URL tried)

Measurements and tokens

PropertyValueTokenEvidence
Card rowicon column plus value, about 24 screenshot px per row[obs EV-121]

Keyboard and accessibility

RoleAccessible nameKeysFocus visibleEvidence
button"Set value for <field> Custom Field"not checkednot checked[obs EV-139]

Not tested

  • Files (upload), Button (needs an automation), Rollup, AI fields (Summary, Custom Text, Custom Dropdown, Categorize, Translation, Sentiment, Action Items, T-shirt Size; they spend AI credits).
  • Invalid input (bad email, bad URL, letters in Number), very long values, many labels or people on a card.
  • Drawn signatures, Relationship with linked tasks, Voting by several people.

05How it behaves

Business rules observed in the product, each with its evidence. They become the acceptance tests of the new product.

Board view 19 rules

R-001 The board shows one column per status of the list, empty ones included, in status order

Given
a list whose statuses are to do, in progress, complete
When
the board view opens with Group: Status
Then
three columns appear in that order, each with its count, even when empty, followed by "+ Add group"; the closed status is the last column
Evidence: [obs EV-002][obs EV-038][net EV-014]Feature: F-001 · Screen: S-001

R-002 Column counts include every task of the group; the sidebar list count leaves out closed tasks

Given
54 tasks, one of them in the closed status
When
the board and the sidebar render
Then
the columns read 53 and 1, and the sidebar shows 53 next to the list
Evidence: [obs EV-012][obs EV-046]Feature: F-001 · Screen: S-001

R-003 Mark complete on a card moves the task to the closed status and offers Undo

Given
an open task on the board
When
the user clicks ✓ "Mark complete" in the card's hover toolbar
Then
the card moves to the closed column, the counts update, and a toast "Status changed" shows "Undo ⌘Z"; the request sends status with the closed status name
Evidence: [obs EV-012][net EV-014]Feature: F-002 · Screen: S-001

R-004 The card date chip uses relative text and an urgency color

Given
open tasks with due dates in the past, today, and a start-to-due range
When
the board renders
Then
a past due date reads "3 days ago" in red, today reads "Today" in yellow, and a range reads "Today - Mon" in the default color
Evidence: [obs EV-010][obs EV-035]Feature: F-002 · Screen: S-001
ProbeInputResultEvidence
Overduedue 13 Oct, today 16 Oct"3 days ago", red[obs EV-010]
Todayquick option Today"Today", yellow[obs EV-010]
Rangestart Today, due Next week"Today - Mon"[obs EV-010]

R-005 The date picker saves when it closes, not when a day is clicked

Given
the date picker open on a card
When
the user clicks a day
Then
the chip updates inside the picker only; the update request is sent when the picker closes (Escape or click outside)
Evidence: [net EV-014][obs EV-008]Feature: F-002 · Screen: S-001

R-006 Typing an unknown tag on a card creates a Space tag and applies it when the picker closes

Given
the tag picker on a card and a name that matches no tag
When
the user presses Enter on "Create <name>" and closes the picker
Then
one request creates the tag with generated foreground and background colors and applies it to the task; the card shows the tag pill
Evidence: [obs EV-040][net EV-014]Feature: F-025 · Screen: S-001

R-007 Assigning yourself prompts to add the task to your personal priorities

Given
the assignee picker on a card
When
the user picks "Me"
Then
the assignee is saved at once and a prompt offers "Don't ask again" and "Add to priorities"
Evidence: [obs EV-041][obs EV-042][net EV-014]Feature: F-002 · Screen: S-001

R-008 View changes are drafts until Save view; a reload drops them without warning

Given
the default board view
When
the user collapses a column, changes card size, toggles a layout option, or changes grouping
Then
"Save view" appears in the toolbar, the board re-queries the view with the draft settings, nothing is saved; after a reload the board is back to the saved settings and no message mentions the lost draft
Evidence: [obs EV-017][obs EV-020][net EV-014]Feature: F-004 · Screen: S-001
ProbeInputResultEvidence
Collapse group, reloadIN PROGRESS collapsedexpanded again after reload[obs EV-017]
Card size Large, layout toggles, reloadLarge, Stack fields on, Show empty fields offback to Medium and defaults[obs EV-023]
Group Priority + subgroup Status, reloadswimlanesback to Group: Status[obs EV-027]

R-009 The column menu offers Archive all and Select all only for columns with tasks

Given
one column with tasks and one empty column
When
the user opens Group options on each
Then
the full column shows Collapse group, Archive all in this group, Automate status, Select all, Rename, Edit statuses; the empty column shows only Collapse group, Automate status, Rename, Edit statuses
Evidence: [obs EV-015][obs EV-016]Feature: F-001 · Screen: S-001

R-010 A task created inside a column takes that column's status and the form stays open

Given
the board grouped by status
When
the user opens "+ Add Task" in IN PROGRESS, types a name and presses Enter
Then
the task is created with status in progress, the form reopens for the next task, and a "Task created" toast appears; Enter with an empty name does nothing
Evidence: [obs EV-029][obs EV-030]Feature: F-003 · Screen: S-001

R-011 Adding a group on a list that inherits statuses asks where the new status applies

Given
a list that inherits its statuses from the Space
When
the user adds a group named "[re] review" and confirms with ✓
Then
a dialog asks "List only" (default) or "Entire Space"; with List only the list gets its own statuses and the new status column appears before the closed column
Evidence: [obs EV-036][obs EV-037][obs EV-038]Feature: F-024 · Screen: S-001

R-012 Grouping by a field other than status adds a status chip to cards and a column for empty values

Given
the board
When
Group is set to Priority
Then
columns are Urgent, High, Normal, Low and No priority; cards show their status as a chip; closed tasks are hidden and the Closed toggle becomes active
Evidence: [obs EV-026][obs EV-025]Feature: F-004 · Screen: S-001

R-013 A subgroup splits the board into collapsible swimlanes

Given
the board grouped by Priority
When
the user adds a subgroup by Status
Then
each status becomes a row with its own count, collapse arrow and +, crossing every priority column; the group button reads "Group: Priority / Status"
Evidence: [obs EV-027]Feature: F-004 · Screen: S-001

R-014 Card size sets the column width

Given
the board
When
Card size is Small, Medium or Large
Then
columns are 200, 264 or 328 CSS px wide; Medium is the default
Evidence: [obs EV-020][obs EV-021][obs EV-046]Feature: F-004 · Screen: S-001

R-015 Show empty fields and Stack fields change the card body

Given
cards with some fields empty
When
Show empty fields is off and Stack fields is on
Then
empty field placeholders disappear (an empty card shows only its title) and each filled field takes its own row with an icon
Evidence: [obs EV-023]Feature: F-004 · Screen: S-001

R-016 Columns load tasks in pages while scrolling

Given
a column with 53 tasks
When
the board loads and the user scrolls inside the column
Then
about 11 cards exist at first; scrolling sends another tasks/bulk request and more cards render
Evidence: [obs EV-046][net EV-014]Feature: F-007 · Screen: S-001

R-017 Priority has four fixed levels stored as numbers

Given
the priority picker
When
the user picks High
Then
the card shows a yellow flag with "High" and the request sends priority: "2"; the scale is Urgent 1, High 2, Normal 3, Low 4, and Clear removes it
Evidence: [obs EV-006][net EV-007][doc SRC-031]Feature: F-002 · Screen: S-001

R-018 Changes appear in other open tabs without reload

Given
the same board open in two tabs
When
priority Low is set in the first tab
Then
the second tab shows "Low" on the card without a reload (about 8 s in a background tab)
Evidence: [obs EV-031][obs EV-032]Feature: F-026 · Screen: S-001

R-019 Dragging a card to another column changes its group value

Given
the board grouped by status
When
the user drags a card to another column
Then
the task takes that column's status; dragging within a column changes its order
Evidence: [doc SRC-012]Feature: F-005 · Screen: S-001Not observed: the drag could not be automated (EV-046). Q-003.

Custom fields 23 rules

R-033 A field created from a task belongs to that task's list

Given
a task in the list [RE] Board study
When
the user opens Add fields > Create new, picks a type, types a name and clicks Create
Then
the field is created with one location, the list ("Belongs to: [RE] Board study"), and shows in the Fields section of every task in that list; the client sends two requests: the definition (POST /customFields/v2/field) and its location (PUT /field/v3/.../fields/:id/locations, parent type 6 = List)
Evidence: [obs EV-079][obs EV-080][obs EV-081][net EV-099]Feature: F-016 · Screen: S-002

R-034 The type menu puts popular and AI types first; Rollup is not a type of its own

Given
Add fields > Create new in a task, or Create new in the Custom Field Manager
When
the type menu opens
Then
the task view lists Popular (Dropdown, Text, Date, Text area, Number, Labels, AI Autofill) and then All; the manager lists AI Fields (Summary, Custom Text, Custom Dropdown) and then All, which ends with Categorize, Translation, Sentiment, Action Items and T-shirt Size; Rollup is offered only inside a Tasks or Relationship field ("Create rollup fields")
Evidence: [obs EV-079][obs EV-096][obs EV-097][obs EV-087][obs EV-093]Feature: F-016 · Screen: S-003

R-035 Number and money formats are set per field, not by the user's language

Given
a Number field with format EU (1.234,56) and a Money field in BRL with format EU
When
the user enters 1234,5 and 1234,56
Then
the task and the card show 1.234,5 and R$ 1.234,56; the field stores number_format: "de-DE" and currency_type: "BRL", and the value is sent as a string
Evidence: [obs EV-084][obs EV-085][obs EV-102][obs EV-103][obs EV-121][net EV-099][net EV-112]Feature: F-016, F-017 · Screen: S-002

R-036 Picking a country in a Phone field changes the user's profile country

Given
an empty Phone field; its flag defaults to the user's profile country (a country other than Brazil in this account)
When
the user picks Brazil in the flag menu and types a number
Then
the number takes the Brazilian mask, (11) 90000-0000, and is saved as +55 11 90000 0000; the pick also sends PUT /user/v1/user with the new country, so every empty Phone field on every task now defaults to Brazil; picking the original country again on another task, with no number typed, sends the same request and restores the default
Evidence: [obs EV-104][obs EV-105][obs EV-130][obs EV-131]Feature: F-017 · Screen: S-002

R-037 On Free Forever each value written counts once against 60 uses per workspace

Given
Free Forever with no values yet
When
17 fields get one value each, and Labels gets two labels added one at a time
Then
the entitlement counter reads 18 used of 60 (usage, limit, usageLeft); linking a task through a Tasks field and configuring a Formula field did not change it; the counter is fetched again after each value is set
Evidence: [net EV-112][doc SRC-005]Feature: F-022 · Screen: S-002Not observed: what happens at 60, and whether deleting a field gives uses back (Q-008). The docs say Formula values count as uses (SRC-043); here they did not (Q-009).

R-038 A Formula field is defined once per field and takes the money format of a money input

Given
Number 1.234,5 and Money R$ 1.234,56 on a task
When
the user opens the empty Formula value, picks Number, +, Money and clicks Calculate
Then
the task and the card show R$ 2.469,06; the formula is saved on the field definition (PUT /customFields/v2/field/:id with type_config.formula, simple: true, calculation_state: "ready"), so every task in the location computes it, and tasks without inputs show R$ 0; the editor asks "Select a second field to calculate" until both inputs are set
Evidence: [obs EV-115][obs EV-116][obs EV-120][net EV-112]Feature: F-016, F-017 · Screen: S-002

R-039 Tasks and Relationship fields live in the Relate menu, not in the Fields section

Given
a Tasks field and a Relationship field on the list
When
the user opens "Relate items or add dependencies"
Then
both fields appear under the dependency options; picking the Tasks field and a task adds a Related section with one tab per field ("[RE] cf-tasks 1") and a table (Name, Due date, Priority); the board card shows the linked task as a chip with a + button, and an empty one shows "Add task"
Evidence: [obs EV-118][obs EV-119][obs EV-120][obs EV-121][net EV-112]Feature: F-016, F-017, F-018 · Screen: S-002

R-040 A Relationship field must point at another list

Given
the Relationship field form
When
the user chooses "tasks from a specific List"
Then
a related list is required and the field's own list cannot be chosen; the form offers rollup fields from the related list
Evidence: [obs EV-093]Feature: F-016 · Screen: S-003

R-041 Required and Pinned do nothing on Free Forever except point to an upgrade

Given
the field's Permissions and settings on Free Forever
When
the user clicks "Required in tasks", then "Pinned"
Then
Required stays off with only a tooltip as feedback; Pinned opens "Upgrade to Business" (closed without choosing)
Evidence: [obs EV-082][obs EV-083][doc SRC-003]Feature: F-019 · Screen: S-002

R-042 A required field blocks task creation where it is used (documented)

Given
a Business workspace and a field set to "Required in tasks"
When
a user creates a task in a location of that field without a value
Then
the task cannot be created until the field has a value; the public API skips the check unless check_required_custom_fields is true; the task view always shows required fields, even empty
Evidence: [doc SRC-003][doc SRC-029][doc SRC-007]Feature: F-019 · Screen: S-002Not observed: plan (Business). Q-010.

R-043 The task view lists a location's fields in one Fields section

Given
a task in a list with 22 fields
When
the task opens
Then
a "Fields" section under the description has one row per field (type icon, name, value) in name order, with search, expand and + in its header; "Hide N empty fields" collapses the empty rows; Tasks and Relationship fields are not listed there (R-039)
Evidence: [obs EV-100][obs EV-117][doc SRC-007]Feature: F-015 · Screen: S-002

R-044 Each value saves on its own and adds an activity line

Given
the Fields section
When
the user sets a value (checkbox click, picker choice, text and blur, slider drag)
Then
one request saves that value (POST /customFields/v1/task/:id/field/:id; DELETE on the same path clears it) and the activity log adds a line such as "You set [RE] cf-money to R$ 1.234,56", "You added [RE] lab 1 to [RE] cf-labels", "You signed on [RE] cf-signature"
Evidence: [obs EV-106][obs EV-117][net EV-112]Feature: F-017 · Screen: S-002

R-045 Each type has its own editor in the Fields section

Given
the Fields section
When
the user clicks a value
Then
the editor depends on the type: dropdown and labels open an option picker with search and colors; people a person picker with "Keep typing a full email to invite"; text area a large popover editor; manual progress a slider; rating clickable stars; voting a thumbs-up toggle; signature a pad with a typed or drawn mode; location a search with Google Places suggestions; formula a field-operator-field editor
Evidence: [obs EV-100][obs EV-106][obs EV-107][obs EV-108][obs EV-109][obs EV-110][obs EV-113][obs EV-115]Feature: F-017 · Screen: S-002

R-046 Location values store the address and the coordinates

Given
a Location field
When
the user types a street and picks the suggestion
Then
the value shows the formatted address ("Av. Paulista, São Paulo - SP, Brazil") and is saved with formatted_address, location {lat, lng} and place_id
Evidence: [obs EV-113][obs EV-114][net EV-112]Feature: F-017 · Screen: S-002

R-047 A typed signature is drawn in a script font and records who signed

Given
a Signature field
When
the user types a name in Type mode and clicks Save
Then
the value shows the name in a script font in the task and on the card; the request carries value_options {isTyped, signedBy}; the activity says "You signed on <field>"
Evidence: [obs EV-110][obs EV-111][obs EV-121][net EV-112]Feature: F-017 · Screen: S-002

R-048 On a card every shown custom field takes its own row with the type icon

Given
all 22 fields turned on in Customize > Fields
When
the board renders
Then
each card gets one row per field, icon at the left, even with Stack fields off; empty values show "-", except Formula ("R$ 0"), Checkbox (empty box), Rating (grey stars), Voting (0), Progress (empty bar, 0) and Tasks or Relationship ("Add task"); filled values keep their task-view look, with text area cut to the first line plus an ellipsis and location cut at the card width; some values (rating, phone) appear a moment after the card
Evidence: [obs EV-120][obs EV-121][obs EV-123]Feature: F-018 · Screen: S-001

R-049 Custom field values can be edited on the card

Given
a card showing a dropdown value
When
the user clicks the value
Then
the same option picker as in the task view opens on the card; hovering the field icon shows the field name and "Custom Field"
Evidence: [obs EV-122]Feature: F-018 · Screen: S-001

R-050 Showing custom fields on cards is a view draft

Given
a board view saved without custom fields
When
the user turns fields on in Customize > Fields
Then
"Save view" appears; after a reload without saving, the cards show no custom fields again
Evidence: [obs EV-123][obs EV-124]Feature: F-018 · Screen: S-001

R-051 Deleting a field warns with the task count and sends it to Trash without Undo

Given
a Dropdown field holding a value on one task
When
the user opens the field settings from the row gear and clicks the delete icon
Then
a dialog reads "This action will delete this Custom Field from 1 task. Admins are able to restore deleted fields from the Trash." (the count appears a moment after the dialog); Delete removes the row from the task at once and shows "Field deleted successfully" with no Undo
Evidence: [obs EV-125][obs EV-126][obs EV-127][doc SRC-004]Feature: F-020 · Screen: S-002

R-052 Restoring a field from Trash brings its values back

Given
the deleted field in Settings > Trash
When
the user opens its menu and clicks Restore
Then
the item leaves the Trash and the task shows the field again with its old value ([RE] opt A)
Evidence: [obs EV-128][obs EV-129]Feature: F-020 · Screen: S-005

R-053 Trash holds deleted lists, tasks, tags and fields for 30 days

Given
deleted items
When
the user opens Settings > Trash
Then
each item shows name, location, deleted on and deleted by, filtered to "Me" by default; a deleted list is one row (its tasks are not listed separately); a tag deleted from a picker is there too; the page says items are deleted forever after 30 days and offers "Clear all Trash"; each row offers Restore and Delete forever
Evidence: [obs EV-128][obs EV-133][obs EV-137][doc SRC-004]Feature: F-020 · Screen: S-005

R-054 Deleting a list takes its list-level fields with it

Given
22 fields whose only location is a list
When
the list is deleted ("54 tasks and templates within this List will be deleted. Additionally, automations will become inactive.")
Then
the list goes to Trash with its tasks, and the Custom Field Manager shows no fields in All, Workspace Fields or Personal List
Evidence: [obs EV-132][obs EV-133][obs EV-134]Feature: F-020, F-021 · Screen: S-003

R-055 The Custom Field Manager groups fields by type and lists their locations

Given
22 list-level fields
When
the user opens Settings > Custom Field Manager
Then
All Custom Fields shows one group per type with a count and a "Create <type> field" link, and columns Name, Type, Created by, Date Created, Location(s); the left side filters by Workspace Fields, Task Type Fields, Personal List, By Location and By Task Type
Evidence: [obs EV-098][obs EV-134][doc SRC-006]Feature: F-021 · Screen: S-003

Task view 13 rules

R-020 Clicking a card opens the task at its own URL, over the board

Given
the board
When
the user clicks a card title
Then
the task opens at /t/:team/:task in the user's layout (Full screen here), the page title becomes "<name> | #<task id>", and the board stays mounted underneath
Evidence: [obs EV-051][obs EV-050][net EV-053]Feature: F-009 · Screen: S-002

R-021 The task layout is a personal preference shared by every task and workspace

Given
the task view in Full screen
When
the user clicks the Switch layout button
Then
the layout cycles to Sidebar (board visible on the left, task on the right); the hover popover offers Modal, Full screen and Sidebar; the choice applies to the next task opened, also after a reload
Evidence: [obs EV-052][obs EV-074][obs EV-075][obs EV-078][doc SRC-016]Feature: F-009 · Screen: S-002

R-022 The header arrows step through tasks in the board's order

Given
a task opened from the board
When
the user clicks ↓
Then
the next card's task opens ([RE] typical → [RE] overdue), without closing the view
Evidence: [obs EV-059]Feature: F-009 · Screen: S-002

R-023 The status picker groups statuses by type

Given
a list with to do, in progress, [re] review and complete
When
the user opens the status pill
Then
the picker shows Not started (to do), Active (in progress, [re] review) and Closed (complete), with search
Evidence: [obs EV-054][net EV-053]Feature: F-009 · Screen: S-002

R-024 The next-status arrow moves a task one status forward

Given
a task in TO DO
When
the user clicks ▸ beside the status pill
Then
the status becomes IN PROGRESS, a toast offers Undo ⌘Z, and the activity log adds "You changed status from To Do to In Progress"
Evidence: [obs EV-073][net EV-014]Feature: F-009 · Screen: S-002

R-025 The description saves while typing, and "- " starts a bullet list

Given
an empty description
When
the user types a line, Enter, "- first item", Enter, "second item", then clicks away
Then
the lines become a paragraph and a two-item bullet list; no Save button exists; after a reload the text is still there; **bold** typed in one go stays literal
Evidence: [obs EV-055][obs EV-078]Feature: F-010 · Screen: S-002

R-026 A comment posts to the activity stream; the composer stays empty for the next

Given
the activity sidebar
When
the user types a comment and clicks send
Then
the comment appears with author, "Just now", reactions and Reply; the request carries the text blocks and the followers
Evidence: [obs EV-057][net EV-058]Feature: F-014 · Screen: S-002

R-027 Opening and using a task marks it as viewed

Given
any task
When
the user opens it and acts in it
Then
the client sends PUT /task-v3/core/:id/tasks/:id/viewed with an empty body
Evidence: [net EV-058]Feature: F-009 · Screen: S-002

R-028 Subtasks are created inline and show as a table with a progress count

Given
a task without subtasks
When
the user clicks Add subtask and enters two names
Then
a Subtasks section shows "2 open", a progress bar and a table (Name, Assignee, Priority); the header gets a subtask count; the board card shows "2 subtasks"
Evidence: [obs EV-061][obs EV-062][obs EV-070][net EV-063]Feature: F-011 · Screen: S-002

R-029 A dependency shows on both tasks and on both cards

Given
two tasks
When
the user sets "This task is blocked by" the other
Then
the blocked task shows "Blocked by <task>" under its fields and a Dependencies tab; the other shows "Blocking <task>"; their cards show a yellow warning 1 and a red blocking 1
Evidence: [obs EV-065][obs EV-066][obs EV-070][net EV-069]Feature: F-013 · Screen: S-002

R-030 Create checklist creates an empty checklist at once

Given
a task
When
the user clicks Create checklist
Then
a checklist named "Checklist" is saved immediately with its name in edit mode; items added with Enter save one by one
Evidence: [obs EV-067][net EV-069]Feature: F-012 · Screen: S-002

R-031 Resolved checklist items hide behind "Show completed" and update counts

Given
a checklist with 3 open items
When
the user resolves one
Then
the section reads "2 open", the item moves under "Show 1 completed", the header count reads 2, and the card shows 1/3
Evidence: [obs EV-072][obs EV-073][obs EV-074]Feature: F-012 · Screen: S-002

R-032 Escape in an empty inline input closes the task view

Given
the checklist item input open and empty
When
the user presses Escape
Then
the task view closes and the board shows again
Evidence: [obs EV-068]Feature: F-009 · Screen: S-002

06Data model

The entities behind the screens: fields, types, relations and who may do what.

E-001 Workspace

Product term: Workspace (API: team) · Parent: none · Status: reviewed

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idstring (numeric)yes[net EV-053]
namestringyes[obs EV-048]
planenumyesFree ForeverFree Forever, Unlimited, Business, Business Plus, Enterprise[doc SRC-035]
custom_field_usescounteryes0limit 60 on Free Forever, unlimited on paid plans[net EV-112][doc SRC-005]
regionstringyesAPI gateway per region (eu-west-1 seen)[net EV-005]

Relations

RelationTargetCardinalityOn deleteSource
hasE-002 Space1..ndeletes all[obs EV-048]
has membersE-013 User1..n[obs EV-048]
hasE-007 CustomField0..n[net EV-099]

Lifecycle

Created by the owner from the workspace switcher; onboarding adds a Space, a List and two chat channels (R-033 context, EV-048).

System fields

FieldSet whenSource
idcreation[net EV-053]

Rules

  • None specific.

Not tested

  • Deleting a workspace (kept by instruction).
E-002 Space

Product term: Space (legacy API: project) · Parent: E-001 · Status: reviewed

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idstring (numeric)yes[net EV-053]
namestringyes"Space" from onboarding[obs EV-048]
statusesStatus[]yesto do, in progress, completeinherited by lists unless a list has its own[obs EV-037][doc SRC-018]
tagsTag[]notags are Space-level[obs EV-040][obs EV-136]

Relations

RelationTargetCardinalityOn deleteSource
containsE-003 List0..nlist goes to Trash[obs EV-048]
ownsE-006 Tag0..n[obs EV-136]
ownsE-005 Status1..n[obs EV-037]

Lifecycle

Active; deleted spaces were not observed.

System fields

FieldSet whenSource
space_idset on every task as its location[net EV-053]

Rules

Not tested

  • Folders, Space settings, ClickApps.
E-003 List

Product term: List (legacy API: subcategory) · Parent: E-002 (or a Folder) · Status: reviewed

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idstring (numeric)yes[net EV-053]
namestringyes[obs EV-048]
statusesStatus[]yesinherited from the Spaceown statuses once "List only" is chosen[obs EV-037][obs EV-038]
task_countnumberyes0sidebar count leaves out closed tasks[obs EV-046]

Relations

RelationTargetCardinalityOn deleteSource
containsE-004 Task0..ntasks go to Trash with the list[obs EV-132]
location ofE-007 CustomField0..nlist-only fields disappear with it[obs EV-134]
hasE-009 View1..n[obs EV-002]

Lifecycle

Active → Trash (30 days, restorable) → deleted forever.

System fields

FieldSet whenSource
date_deleteddelete[obs EV-133]

Rules

Not tested

  • Folders, list settings, list templates.
E-004 Task

Product term: Task · Parent: E-003 (home list) · Status: reviewed

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idstringyesshort alphanumeric id[net EV-053]
namestringyesno limit hit at 216 characters[net EV-053][obs EV-060]
contentrich text (Quill delta)noalso text_content[net EV-053]
statusStatusyesfirst status of the list[net EV-053]
priorityenum stringnonull"1" Urgent, "2" High, "3" Normal, "4" Low[net EV-007][doc SRC-031]
start_date, due_dateepoch ms stringnonullwith start_date_time, due_date_time flags[net EV-014][net EV-053]
users{userid, type}[]noownertype: assigned, watcher, owner[net EV-053]
tagsstring[]no[]Space tags[net EV-053]
parenttask idnonullset for subtasks[net EV-063]
orderindex, boardindexnumberyesone order index per grouping[net EV-063][net EV-014]
custom_typetask typenonull (Task)Task, Milestone, Form Response, Meeting Note, custom[net EV-053][obs EV-077]
fieldsCustomFieldValue[]no[][net EV-053][net EV-112]
states{is_archived, is_deleted}yesfalse[net EV-053]

Relations

RelationTargetCardinalityOn deleteSource
inE-003 Listn..1 home, n..n extra listsTrash with the list[net EV-053]
has subtasksE-004 Task0..n[net EV-063]
hasE-010 Comment0..n[net EV-058]
hasE-011 Checklist0..n[net EV-069]
depends onE-012 Dependency0..n[net EV-069]
has valuesE-008 CustomFieldValue0..n[net EV-112]
has historyE-014 HistoryItem0..n[net EV-007]

Lifecycle

open statuses → custom (active) statuses → closed status; archived and deleted are separate flags; deleted tasks sit in Trash 30 days.

System fields

FieldSet whenSource
date_createdcreate[net EV-053]
date_updatedevery change[net EV-053]
date_closedmoved to a closed status[net EV-053]
creator, ownercreate[net EV-053]

Rules

Not tested

  • Recurrence, time tracking, cover image, privacy and sharing, multiple lists.
E-005 Status

Product term: Status · Parent: E-002 or E-003 · Status: reviewed

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idstringyes[net EV-053]
statusstringyesshown upper case on the board[net EV-053][obs EV-038]
typeenumyesopen, custom, closed (done in docs)[net EV-014][doc SRC-018]
status_groupstringyespicker groups: Not started, Active, Closed[net EV-053][obs EV-054]
colorhexyes[net EV-053]
orderindexnumberyescolumn order[net EV-053]

Relations

RelationTargetCardinalityOn deleteSource
belongs toE-002 Space or E-003 Listn..1[obs EV-037]

Lifecycle

Created from Add group or status settings; removed with its list when list-only.

System fields

FieldSet whenSource

Rules

Not tested

  • Renaming, deleting a status with tasks, done-type statuses.
E-006 Tag

Product term: Tag · Parent: E-002 · Status: reviewed

Fields

FieldTypeRequiredDefaultConstraints or enumSource
namestringyeslower case as typed[net EV-014][obs EV-040]
tag_fg, tag_bghexyesgenerated[net EV-014]

Relations

RelationTargetCardinalityOn deleteSource
onE-004 Taskn..nremoved from all tasks when deleted[obs EV-136]

Lifecycle

Created from a card picker (Space-level) → deleted from a picker ("everywhere in this Space") → Trash.

System fields

FieldSet whenSource

Rules

Not tested

  • Tag Manager (Business Plus), renaming and colors.
E-007 CustomField

Product term: Custom Field · Parent: E-001 (one or more locations) · Status: reviewed

Fields

FieldTypeRequiredDefaultConstraints or enumSource
iduuidyes[net EV-099]
namestringyes[net EV-099]
typeenum stringyesdrop_down, number, currency, formula seen; 22 UI types created[net EV-099][net EV-112][obs EV-098]
type_idnumberyes17 = formula[net EV-112]
type_configobjectno{}per type: options, number_format, currency_type, precision, formula[net EV-099][net EV-112]
required, required_on_subtasksbooleanyesfalseBusiness plan[net EV-099][doc SRC-003]
pinnedbooleanyesfalseBusiness plan[net EV-099][obs EV-083]
hide_from_guestsbooleanyesfalse[net EV-099]
private, permission_level, members, groupspermissionsnoworkspace default[net EV-099][obs EV-081]
locations{parent{type,id}}[]yesthe list where it was createdtype 6 = List[net EV-099]
deleted, deleted_byflagsyesfalse[net EV-099]

Relations

RelationTargetCardinalityOn deleteSource
located atE-003 List (also Workspace, Space, Folder)1..nlist-only fields disappear with the list[net EV-099][doc SRC-008]
valuesE-008 CustomFieldValue0..nvalues come back on restore[obs EV-129]

Lifecycle

Active → Trash (on delete, 30 days, values kept) → restored or deleted forever.

System fields

FieldSet whenSource
useridcreate[net EV-099]
date_createdcreate[net EV-099]

Rules

Not tested

  • Workspace, Space and Folder locations; task-type fields; conversion between types.
E-008 CustomFieldValue

Product term: Custom Field value (a "use") · Parent: E-004 · Status: reviewed

Fields

FieldTypeRequiredDefaultConstraints or enumSource
field_iduuidyes[net EV-112]
task_idstringyes[net EV-112]
valueper typeyesboolean, epoch-ms string, option uuid, string, number, {add,rem} ids, {current}, location object[net EV-112]
value_optionsobjectnodate {time}, signature {isTyped, signedBy}[net EV-112]
value_richtextstringnorich copy of text values[net EV-112]

Relations

RelationTargetCardinalityOn deleteSource
ofE-007 CustomFieldn..1kept while the field is in Trash[obs EV-129]
onE-004 Taskn..1[net EV-112]

Lifecycle

Set (counts one use on Free) → changed → cleared (DELETE).

System fields

FieldSet whenSource
history itemevery set[net EV-112]

Rules

Not tested

  • Files values, Relationship values, values at the 60-use limit.
E-009 View

Product term: View · Parent: E-003 (or Space, Folder) · Status: reviewed

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idstringyes[net EV-014]
typeenumyesboard, list, overview and others[net EV-014]
grouping{field, dir, collapsed[]}yesstatus[net EV-014]
divide{field, dir, collapsed[]}nononesubgroup (swimlanes)[net EV-014]
sorting{fields[]}no[][net EV-014]
filters{op, fields[], search, show_closed}no[net EV-014]
columns{fields[{field, hidden}]}yesname, assignee, dates, priority, tagscustom fields hidden until shown[net EV-014][obs EV-123]
settingsobjectyescard size Medium, show empty fields on[net EV-014][obs EV-020]
auto_savebooleanyesfalse[net EV-014]

Relations

RelationTargetCardinalityOn deleteSource
ofE-003 Listn..1deleted with the list[obs EV-132]

Lifecycle

Saved definition plus an unsaved draft in the client; reload drops the draft (R-008).

System fields

FieldSet whenSource

Rules

Not tested

  • Private, protected and default views; sharing.
E-010 Comment

Product term: Comment · Parent: E-004 · Status: reviewed

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idstring (numeric)yes[net EV-058]
comment{text, attributes}[]yesblock-based rich text[net EV-058]
useridnumberyesauthor[net EV-058]
dateepoch msyes[net EV-058]
resolved, assigneeboolean, usernofalse, nullassigned comments[net EV-058]
reactions[]no[][net EV-058]

Relations

RelationTargetCardinalityOn deleteSource
onE-004 Taskn..1[net EV-058]

Lifecycle

Posted → edited, resolved or deleted (not tested).

System fields

FieldSet whenSource
date_updatededit[net EV-058]

Rules

Not tested

  • Threads, mentions, assigned comments, reactions.
E-011 Checklist

Product term: Checklist · Parent: E-004 · Status: reviewed

Fields

FieldTypeRequiredDefaultConstraints or enumSource
iduuidyes[net EV-069]
namestringyes"Checklist"[net EV-069]
items{name, resolved, assignee, parent, orderindex}[]no[]items can nest (parent, children)[net EV-069]
resolved, unresolvednumberyes0counts[net EV-069]
show_completedbooleanyesfalse[net EV-069]

Relations

RelationTargetCardinalityOn deleteSource
onE-004 Taskn..1[net EV-069]

Lifecycle

Created empty at once → items added → items resolved (hidden behind "Show completed").

System fields

FieldSet whenSource
creator, date_createdcreate[net EV-069]

Rules

Not tested

  • Item assignees, nested items, templates.
E-012 Dependency

Product term: Dependency (waiting on / blocking) · Parent: E-004 · Status: reviewed

Fields

FieldTypeRequiredDefaultConstraints or enumSource
task_idstringyesthe blocked task[net EV-069]
depends_onstringyesthe blocking task[net EV-069]
typenumberyes[net EV-069]
lag_msnumbernonull[net EV-069]

Relations

RelationTargetCardinalityOn deleteSource
betweenE-004 Taskn..n[net EV-069]

Lifecycle

Created from the Relate menu; removal not tested.

System fields

FieldSet whenSource
date_createdcreate[net EV-069]

Rules

Not tested

  • Removing, dependency warnings on status change, scheduling shifts.
E-013 User

Product term: User · Parent: E-001 (member) · Status: reviewed

Fields

FieldTypeRequiredDefaultConstraints or enumSource
idnumberyes[net EV-053]
username, initials, colorstringyes[net EV-053]
profilePictureurlno[net EV-053]
timezonestringyes[net EV-053]
countryISO codenoset by the Phone field flag menu[obs EV-131][net EV-112]
task layoutenumyesFull screenFull screen, Modal, Sidebar[obs EV-052]

Relations

RelationTargetCardinalityOn deleteSource
member ofE-001 Workspacen..n[obs EV-048]

Lifecycle

Not studied.

System fields

FieldSet whenSource

Rules

Not tested

  • Roles, guests, invitations (need a second person, L1).
E-014 HistoryItem

Product term: Activity entry (version change) · Parent: E-004 · Status: reviewed

Fields

FieldTypeRequiredDefaultConstraints or enumSource
history_idstring (numeric)yes[net EV-007][net EV-112]
fieldstringyes[net EV-007]
before, afteranyyes[net EV-007][net EV-112]
relationships{type, object_type}[]yestask-in-space, task-in-folder, task-in-list[net EV-007]

Relations

RelationTargetCardinalityOn deleteSource
ofE-004 Taskn..1[net EV-007]

Lifecycle

Append only.

System fields

FieldSet whenSource
dateevery write[net EV-007]

Rules

Not tested

  • Retention, filters in the activity panel.

Permissions

The study ran with one account, the workspace owner, so only owner behavior and plan gates were observed. Roles below come from the docs; every cell without obs needs an L1 account with a second user (Q-010 covers required fields).

ActionOwnerAdminMemberGuestEvidence
Create, edit, delete custom fieldsyes (observed)yeswith "Manage Custom Fields"no[obs EV-080][doc SRC-006]
Open the Custom Field Manageryes (observed)yeswith "Manage Custom Fields"no[obs EV-098][doc SRC-006]
Make a field requiredBusiness plan and aboveBusiness plan and abovenono[obs EV-082][doc SRC-003]
Restore a deleted field from Trashyes (observed)yesnot documentedno[obs EV-129][doc SRC-004]
See a custom fieldyesyesyesif "Visible to Guests and Limited Members" is on[obs EV-081]
Per-task permission flagsabout 260 booleans returned with each task[net EV-053]
TypeScript types
// ClickUp data model as observed (2026-10-16). One exported type per E-### entity file, same field names.
// IDs are strings unless noted. Epoch times are milliseconds, often sent as strings.

export type EpochMs = string;

// E-001
export interface Workspace {
  id: string;
  name: string;
  plan: "free_forever" | "unlimited" | "business" | "business_plus" | "enterprise";
  custom_field_uses: { usage: number; limit: number | null; usageLeft: number | null }; // limit 60 on Free Forever
  region: string;
}

// E-002
export interface Space {
  id: string;
  name: string;
  statuses: Status[];
  tags: Tag[];
}

// E-003
export interface List {
  id: string;
  name: string;
  statuses: Status[]; // inherited from the Space until "List only" statuses exist
  task_count: number; // excludes closed tasks in the sidebar
}

// E-004
export interface Task {
  id: string;
  name: string;
  content: string | null; // rich text (Quill delta JSON)
  text_content: string | null;
  status: Status;
  priority: "1" | "2" | "3" | "4" | null; // Urgent, High, Normal, Low
  start_date: EpochMs | null;
  start_date_time: boolean;
  due_date: EpochMs | null;
  due_date_time: boolean;
  users: { userid: number; type: "assigned" | "watcher" | "owner" }[];
  tags: string[];
  parent: string | null;
  orderindex: number;
  boardindex: number;
  custom_type: string | null; // null = Task
  fields: CustomFieldValue[];
  states: { is_archived: boolean; is_deleted: boolean };
  date_created: EpochMs;
  date_updated: EpochMs;
  date_closed: EpochMs | null;
}

// E-005
export interface Status {
  id: string;
  status: string;
  type: "open" | "custom" | "closed";
  status_group: string;
  color: string; // hex
  orderindex: number;
}

// E-006
export interface Tag {
  name: string;
  tag_fg: string;
  tag_bg: string;
}

// E-007
export type CustomFieldType =
  | "checkbox" | "date" | "drop_down" | "labels" | "text" | "short_text" | "number" | "currency"
  | "email" | "phone" | "url" | "location" | "users" | "rating" | "voting" | "manual_progress"
  | "automatic_progress" | "signature" | "formula" | "files" | "tasks" | "list_relationship" | "button";
// Only drop_down, number, currency and formula were seen as wire values; the others are names for the clone.

export interface CustomField {
  id: string; // uuid
  name: string;
  type: CustomFieldType;
  type_id: number;
  type_config: {
    options?: { id: string; name: string; color: string; orderindex: number }[];
    sorting?: "manual";
    number_format?: "en-US" | "de-DE";
    currency_type?: string; // "BRL"
    precision?: number;
    formula?: string;
    simple?: boolean;
  };
  required: boolean;
  required_on_subtasks: boolean;
  pinned: boolean;
  hide_from_guests: boolean;
  locations: { parent: { type: number; id: string } }[]; // type 6 = List
  deleted: boolean;
  userid: string;
  date_created: EpochMs;
}

// E-008
export interface CustomFieldValue {
  field_id: string;
  task_id: string;
  value:
    | boolean
    | number
    | string
    | { add: (string | number)[]; rem: (string | number)[] }
    | { current: number }
    | { formatted_address: string; location: { lat: number; lng: number }; place_id: string };
  value_options?: { time?: boolean; isTyped?: boolean; signedBy?: number };
  value_richtext?: string;
}

// E-009
export interface View {
  id: string;
  type: "board" | "list" | string;
  grouping: { field: string; dir: number; collapsed: string[] };
  divide?: { field: string; dir: number; collapsed: string[] };
  sorting: { fields: unknown[] };
  filters: { op: string; fields: unknown[]; search: string; show_closed: boolean };
  columns: { fields: { field: string; hidden: boolean }[] };
  settings: Record<string, unknown>;
  auto_save: boolean;
}

// E-010
export interface Comment {
  id: string;
  comment: { text: string; attributes?: Record<string, unknown> }[];
  userid: number;
  date: EpochMs;
  resolved: boolean;
  assignee: number | null;
  reactions: unknown[];
}

// E-011
export interface Checklist {
  id: string;
  name: string;
  items: { name: string; resolved: boolean; assignee: number | null; parent: string | null; orderindex: number }[];
  resolved: number;
  unresolved: number;
  show_completed: boolean;
}

// E-012
export interface Dependency {
  task_id: string; // blocked
  depends_on: string; // blocking
  type: number;
  lag_ms: number | null;
}

// E-013
export interface User {
  id: number;
  username: string;
  initials: string;
  color: string;
  profilePicture: string | null;
  timezone: string;
  country: string | null; // ISO code, set by the Phone field flag menu
  task_layout: "full_screen" | "modal" | "sidebar";
}

// E-014
export interface HistoryItem {
  history_id: string;
  field: string;
  before: unknown;
  after: unknown;
  relationships: { type: string; object_type: "space" | "folder" | "list" }[];
}
Entity relationships mermaid
erDiagram
    %% E-001 to E-014. Names follow the product terms; see data-model/entities/.
    WORKSPACE ||--|{ SPACE : "has"
    WORKSPACE }|--|{ USER : "members"
    WORKSPACE ||--o{ CUSTOM_FIELD : "defines"
    SPACE ||--o{ LIST : "contains"
    SPACE ||--o{ TAG : "owns"
    SPACE ||--|{ STATUS : "owns"
    LIST ||--o{ STATUS : "own statuses (List only)"
    LIST ||--|{ VIEW : "has"
    LIST ||--o{ TASK : "home of"
    CUSTOM_FIELD }o--|{ LIST : "located at"
    TASK ||--o{ TASK : "subtasks"
    TASK }o--|| STATUS : "is in"
    TASK }o--o{ TAG : "tagged"
    TASK }o--o{ USER : "assigned, watcher"
    TASK ||--o{ CUSTOM_FIELD_VALUE : "has"
    CUSTOM_FIELD ||--o{ CUSTOM_FIELD_VALUE : "values"
    TASK ||--o{ COMMENT : "has"
    TASK ||--o{ CHECKLIST : "has"
    TASK ||--o{ DEPENDENCY : "waits on"
    TASK ||--o{ HISTORY_ITEM : "change log"
    USER ||--o{ COMMENT : "writes"

07API

What the web app asks its server for each action, with the shape of the data and no real values.

IDs in paths are :id. Shapes and types only; no real values.

The web app talks to a regional gateway, frontdoor-prod-<region>.clickup.com (the test workspace used eu-west-1-2), split by service path (/tasks/v1, /task-v3, /view/v1, /customFields/v2, /hierarchy/v3, /data/v3) [net EV-005]. Search goes to a separate GraphQL gateway frontdoor-search.clickup-eu.com/graphql/gateway [net EV-014]. This internal API is not the public API (api.clickup.com/api/v2, documented in SRC-023 to SRC-034); a clone needs only its behavior, not its paths.

Board view

MethodTemplateTriggered byRequest shapeResponse shapeEvidence
POST/view/v1/genericViewBoard load; any view draft change (?fresh_req&include_empties&skip_max_length)the full view definition: id, name, type, parent{id,type}, visibility, settings{...}, grouping{field,dir,collapsed[],ignore}, divide{field,dir,collapsed[]}, sorting{fields[]}, filters{op,fields[],search,show_closed,...}, columns{fields[{field,pinned,hidden}]}, auto_save, ...{board{groups[{data{status,type}}]}, tasks, team_id, last_page, overall_calculations, permissions, _version_vector}[net EV-005][net EV-014]
POST/task-v3/experience/:workspace/tasks/bulkBoard load, refetch after edits, next page on column scroll{ids[], fields[], filterOmit, customFieldIds[], taskRelationshipTypes[], relatedTaskFields[], orderindexes{basic[], status[{listId}]}, rollupFields[], includeClosedSubtasksInRollup}{tasks[{status, data{task{...}}}], statuses[{status,type}], fields, list_status_ids_map, user_map, group_map, parent_task_map}[net EV-014]
POST/:id/access/:id/task/acls/bulk?expand_groups&include_parentsAfter refetching tasksnot capturednot captured[net EV-007]
GET/:id/core/:id/tasks/propertiesBoard load[net EV-005]
GET/customFields/v2/fieldBoard load[net EV-005]
GET/tasks/v1/tagBoard load[net EV-005]
PUT/tasks/v1/item?check_dependenciesCard priority{item_ids[], priority: "1".."4"}{assignees{add,rem}, followers{add,rem}, item_ids[], new_indexes{}, versions[{object_type, object_id, operation, data{changes[{field,before,after,history_id}], relationships[{type,object_type}]}, version, date_updated}], hist_ids{}, dependencies_adjusted[], schedulingData{changes[],reachedDependencyLimit,reachedSubtaskLimit}}[net EV-007]
PUT/tasks/v1/item?check_dependencies&check_remap_subtasksCard dates (sent when the picker closes){item_ids[], due_date: epoch-ms, start_date: epoch-ms or "", due_date_time: bool, start_date_time: bool, duration_is_elapsed: bool, duration{}}same as above[net EV-014]
PUT/tasks/v1/item?check_dependencies&check_resolvedMark complete{item_ids[], status: "<status name>"}same, plus orderindices[net EV-014]
PUT/tasks/v1/task/:id?check_dependencies&field_backlinksCard assignee{assignees{add[number], rem[]}}{task{...}, newHistIds, undo_order, dependencies_adjusted, version, schedulingData}[net EV-014]
POST/tasks/v1/tagCreate a tag from a card (on picker close){name, tag_fg: hex, tag_bg: hex, new: bool, task_ids[]}empty[net EV-014]
GET/data/v3/workspaces/:id/workweek_schedules/reference/workspace/:idOpening the date picker{data}[net EV-014]
GET/data/v3/workspaces/:id/schedule_exceptions/reference/workspace/:idOpening the date picker{data}[net EV-014]

Every task write returns a versions[] array with the field changes (before, after, history_id) and the task's place in the hierarchy (task-in-space, task-in-folder, task-in-list) [net EV-007]. A clone can use the same pattern: one change log entry per field write, which also feeds the activity feed and undo.

Enum samples seen: priority "2" (High); status.type open, custom, closed; versions[].object_type task [net EV-007][net EV-014].

Custom fields

MethodTemplateTriggered byRequest shapeResponse shapeEvidence
POST/customFields/v2/field?ignore_existingCreate in the field form{name, description, type, type_config{...per type}, required, required_on_subtasks, pinned, hide_from_guests, private, permission_level, members[], groups[], default_value, subcategory_id}the field: {id(uuid), name, type, type_id, type_config, userid, date_created, team_id, deleted, required, pinned, private, linked_subcategory, automation_count, ...}[net EV-099]
PUT/field/v3/experience/workspaces/:id/fields/:id/locationsRight after create{new_locations[{parent{type: 6 (List), id}, required, required_on_subtasks, hide_from_guests}]}204[net EV-099]
PUT/customFields/v2/field/:idSaving a formula (field-level)the field with type_config{formula, simple, version, is_dynamic, return_types[], calculation_state}, entity{type: "subcategory", id}the field (type_id 17 for formula)[net EV-112]
GET/customFields/v2/field?subcategory_id&hierarchy_fields&incl_belowOpening a task or the formfields of the location[net EV-099]
POST/customFields/v1/task/:id/field/:idSetting any value{value, value_options?, value_richtext}; value per type in EV-112{historyIds[], suppressedHistoryCount, version{object_type: task, data{changes[{field, before, after}], relationships[]}}}[net EV-112]
DELETE/customFields/v1/task/:id/field/:idClearing a valuenoneas above[net EV-112]
GET/entitlements/v1/team/:id/entitlements/custom_field_valuesAfter each value is set{type: "counter", entitled, planLimits, limit, usage, usageLeft}[net EV-112]
PUT/user/v1/userPicking a country in a Phone fieldthe user's profile with the countrynot recorded[obs EV-131][net EV-112]
(DELETE)/customFields/v2/field/:id?delete_all=trueDelete field after the confirm dialogmethod inferred from the CORS preflightnot recorded[net EV-112]

Type strings recorded in this study: drop_down, number, currency [net EV-099] and formula (type_id 17) [net EV-112]. The other internal type strings were not recorded; the public API names 17 of them [doc SRC-001].

Not captured

  • Task creation from the inline form and status creation (Add group): the recorder was not installed at that moment.
  • WebSocket frames (realtime): the socket opens before a page script can wrap it; realtime is recorded as UI behavior (R-018).

08Design system

Colors, typography, spacing, radius, shadow and motion as the product uses them.

Color

background.mainrgb(17,17,17)--cu-background-main
background.subtlergb(25,25,25)--cu-background-subtle
background.elevatedrgba(255,255,255,.035)--cu-background-elevated
background.hoverrgba(255,255,255,.07)--cu-background-main-hover
background.tooltiprgb(42,42,42)--cu-background-tooltip
background.successrgb(48,164,108)--cu-background-success
background.warningrgb(255,197,61)--cu-background-warning
background.dangerrgb(210,30,36)--cu-background-danger
content.defaultrgb(238,238,238)--cu-content-default
content.secondaryrgb(180,180,180)--cu-content-secondary
content.tertiaryrgb(123,123,123)--cu-content-tertiary
content.placeholderrgb(110,110,110)--cu-content-placeholder
content.dangerrgb(255,133,137)--cu-content-danger
content.warningrgb(255,204,77)--cu-content-warning
border.defaultrgb(42,42,42)--cu-border-default
border.lowrgb(34,34,34)--cu-border-low-contrast
border.inputrgb(110,110,110)--cu-border-input
brandrgb(102,71,240)
status.completergb(44,140,94)

Theme(s) studied: dark only (the user's preference; light was not switched on, to avoid a personal-preference write). Window: 1710 × 981 CSS px, device pixel ratio 2.

Values come from tokens.js and element styles on the board [obs EV-035]. Variables are declared on body.dark-theme, so a clone should scope theme tokens to a class, not :root. The clone must pick its own names and palette: this table is a reference for density and contrast, not something to copy.

Color

TokenLightDarkVariableUsed forEvidence
background.mainnot capturedrgb(17,17,17)--cu-background-mainpage[obs EV-035]
background.subtlenot capturedrgb(25,25,25)--cu-background-subtlecards, menus[obs EV-035]
background.elevatednot capturedrgba(255,255,255,.035)--cu-background-elevatedraised surfaces[obs EV-035]
background.hovernot capturedrgba(255,255,255,.07)--cu-background-main-hoverhover[obs EV-035]
background.tooltipnot capturedrgb(42,42,42)--cu-background-tooltiptooltips[obs EV-035]
background.successnot capturedrgb(48,164,108)--cu-background-successsuccess fills[obs EV-035]
background.warningnot capturedrgb(255,197,61)--cu-background-warningwarning fills[obs EV-035]
background.dangernot capturedrgb(210,30,36)--cu-background-dangerdelete buttons[obs EV-035][obs EV-126]
content.defaultnot capturedrgb(238,238,238)--cu-content-defaulttext, card titles[obs EV-035]
content.secondarynot capturedrgb(180,180,180)--cu-content-secondarysecondary text[obs EV-035]
content.tertiarynot capturedrgb(123,123,123)--cu-content-tertiarymeta text[obs EV-035]
content.placeholdernot capturedrgb(110,110,110)--cu-content-placeholderplaceholders[obs EV-035]
content.dangernot capturedrgb(255,133,137)--cu-content-dangeroverdue dates[obs EV-035][obs EV-010]
content.warningnot capturedrgb(255,204,77)--cu-content-warningdue today[obs EV-035][obs EV-010]
border.defaultnot capturedrgb(42,42,42)--cu-border-defaultborders[obs EV-035]
border.lownot capturedrgb(34,34,34)--cu-border-low-contrastcard field toggles[obs EV-035]
border.inputnot capturedrgb(110,110,110)--cu-border-inputinputs[obs EV-035]
brandnot capturedrgb(102,71,240)not mappedin-progress status, links, checked boxes[obs EV-035][obs EV-121]
status.completenot capturedrgb(44,140,94)not mappedclosed status pill[obs EV-035]

Typography

TokenFamilySizeWeightLine heightUsed forEvidence
font.familysystem UI stack (-apple-system, Segoe UI Variable Text, Roboto, Helvetica, Arial)everything; no web fonts[obs EV-035]
size scale6, 8, 10, 11, 12, 14, 16, 18 px (--cu-font-size-1..8)[obs EV-035]
card.titlesystem14px50020pxcard titles[obs EV-035]
status.pillsystem11px50011pxstatus pills[obs EV-035]
body.smallsystem12px50016pxmeta and chips[obs EV-035]
weights400, 500, 600, 700[obs EV-035]

Spacing, radius, shadow

TokenValueVariableUsed forEvidence
space.12pxtight gaps[obs EV-035]
space.24pxmost common gap[obs EV-035]
space.38pxcolumn header padding, footer gap[obs EV-035]
radius.small6pxpills, field toggles (most common)[obs EV-035]
radius.card10pxboard cards[obs EV-035]
radius.pill666pxround pills[obs EV-035]
shadow.card0 0 1px rgba(255,255,255,.33), 0 1px 2px rgba(0,0,0,.055)cards[obs EV-035]
shadow.popover0 4px 6px -1px rgba(0,0,0,.1), 0 2px 4px -2px rgba(0,0,0,.1)popovers[obs EV-035]
focus.ring0 0 0 1px rgb(238,238,238), 0 0 0 3px rgb(49,49,49)card field toggles[obs EV-035][obs EV-033]
border.size1px, 2px--cu-border-size-1/2[obs EV-035]

Motion

TokenDurationEasingUsed forEvidence
motion.pop0.125scubic-bezier(0.17,0.67,0.55,1.09)scale on press[obs EV-035]
motion.slide0.2scubic-bezier(0.785,0.135,0.15,0.86)panels, min-width[obs EV-035]
motion.move0.3scubic-bezier(0.17,0.67,0.55,1.09)transforms[obs EV-035]

Z-index layers

LayerValueUsed forEvidence
base1, 2stacked card parts[obs EV-035]
panels15, 700sticky headers, side panels[obs EV-035]
overlays999, 1000popovers and dialogs[obs EV-035]

Icons

NameSizeWhere usedEvidence
card field toggles24 × 24 boxassignee, date, priority, tag on cards[obs EV-035]
custom field type iconsabout 16 pxFields section rows and card rows[obs EV-117][obs EV-121]

Breakpoints and layout

WidthChangeEvidence
1710 CSS pxColumn 264 px (Medium cards), card 246 px[obs EV-035][obs EV-046]
Other widthsNot tested (the user's window was not resized)

09Build plan

What to build and in what order, the acceptance tests, and what to copy, avoid and improve.

Updated: 2026-10-16 · Status: draft for the three studied areas

Problem and users

Small and medium businesses in Brazil that plan and track team work: an owner or manager sets up lists and fields, a few team members move tasks across a board and fill in task details. They want a board that reflects their own workflow (statuses), task records they can extend with their own fields (money in BRL, phone numbers, addresses, dropdowns) and an interface in Portuguese with Brazilian formats.

Launch blockers

From clone/barriers.md, severity blocks launch and adds lead time, with who clears each one and when.

BarrierSeverityOwnerStart by
BR-001 LGPD processor duties and transfersblocks launchFounder with counselWeek 1
BR-002 NFS-e national standard and CBS/IBS fieldsblocks launchFounder with accountant and an invoicing providerWeek 1
BR-010 Own name and visual identityblocks launchFounder and designerWeek 1
BR-011 ClickUp terms reviewadds lead timeCounsel (Q-005)Before any public launch
BR-003 Recurring billing (Pix Automático, boleto, cards)adds lead timeFounder with a payment providerWeek 2
BR-005 Microsoft publisher verificationadds lead timeEngineeringOnly if Outlook sync is in the first release
BR-006 Slack reviewadds lead timeEngineeringAfter 10 active workspaces

Core loop

  1. Create a list with statuses; the board shows one column per status (R-001).
  2. Create tasks in a column (R-010), edit fields on the card (R-004 to R-007, R-017), move them by drag or by completing (R-003, R-019).
  3. Open a task (R-020): description (R-025), subtasks (R-028), checklist (R-030), dependencies (R-029), comments (R-026), custom fields (R-043 to R-047).
  4. Define the list's own fields (R-033) and show them on cards (R-048 to R-050).

Scope by priority

PriorityFeatureRulesScreensNotes
P1F-001 Board columns by statusR-001, R-002, R-009, R-011S-001
P1F-002 Card and inline editsR-003 to R-007, R-017S-001
P1F-003 Create in a columnR-010S-001
P1F-004 Customize view, draftsR-008, R-012 to R-015S-001Decide whether to keep drafts (see implications)
P1F-005 Drag and dropR-019S-001From docs only; Q-003
P1F-009 to F-014 Task viewR-020 to R-032S-002
P1F-015 Fields sectionR-043, R-044S-002
P1F-016 Field types and formR-033, R-034, R-040S-002, S-003Start with the 17 non-AI types the API documents
P1F-017 Values per typeR-035 to R-038, R-045 to R-047S-002BRL and Brazilian phone formats by default
P1F-018 Fields on cardsR-048 to R-050S-001
P1F-019 Required fieldsR-041, R-042S-002Offer on every plan (implications)
P1F-020 Delete, Trash, restoreR-051 to R-054S-002, S-00530-day Trash with values kept
P1F-021 Field manager and scopeR-055S-003List and Space locations first
P2F-007 Many itemsR-016S-001Paging per column
P2F-024, F-025 Statuses and tagsR-011, R-006S-001
P2F-026 RealtimeR-018S-001BR-013
P3F-022 Usage limitsR-037Only if the pricing needs a field-use cap
P3F-023 AI fieldsBR-014; later

Non-goals

  • Docs, chat, goals, dashboards, automations, time tracking, other view types (out of the studied scope).
  • AI fields and AI suggestions in the first release.
  • Copying ClickUp's names, icons, colors or copy (BR-010; see clone/implications.md).

Data model

See data-model/erd.mmd, data-model/types.ts and the entity files E-001 to E-014.

Build order

  1. Start long lead-time approvals and launch blockers (they run in parallel): BR-001, BR-002, BR-010, BR-003, counsel on BR-011.
  2. Data model and persistence: workspace, space, list, status, task, custom field, value, history item; one change log row per field write (EV-007 pattern).
  3. Core loop screens: board (S-001) and task view (S-002).
  4. Rules in clone/parity.md, P1 first.
  5. Field manager (S-003) and Trash (S-005).
  6. Secondary features, after the barriers they depend on (calendar and WhatsApp integrations after BR-004 and BR-007).

Open questions

See questions.md, especially Q-003 (drag details), Q-006 (what Brazilian buyers require), Q-008 to Q-010 (limits and required fields).

Acceptance tests

One test per rule the clone must reproduce. A test passes when the clone shows the same behavior as the rule. Rules marked "improve" in clone/implications.md are reproduced in their improved form.

TestRuleFeatureSummaryClone status
T-001R-001F-001The board shows one column per status of the list, empty ones included, in status ordertodo
T-002R-002F-001Column counts include every task of the group; the sidebar list count leaves out closed taskstodo
T-003R-003F-002Mark complete on a card moves the task to the closed status and offers Undotodo
T-004R-004F-002The card date chip uses relative text and an urgency colortodo
T-005R-005F-002The date picker saves when it closes, not when a day is clickedtodo
T-006R-006F-025Typing an unknown tag on a card creates a Space tag and applies it when the picker closestodo
T-007R-007F-002Assigning yourself prompts to add the task to your personal prioritiestodo
T-008R-008F-004View changes are drafts until Save view; a reload drops them without warningtodo
T-009R-009F-001The column menu offers Archive all and Select all only for columns with taskstodo
T-010R-010F-003A task created inside a column takes that column's status and the form stays opentodo
T-011R-011F-024Adding a group on a list that inherits statuses asks where the new status appliestodo
T-012R-012F-004Grouping by a field other than status adds a status chip to cards and a column for empty valuestodo
T-013R-013F-004A subgroup splits the board into collapsible swimlanestodo
T-014R-014F-004Card size sets the column widthtodo
T-015R-015F-004Show empty fields and Stack fields change the card bodytodo
T-016R-016F-007Columns load tasks in pages while scrollingtodo
T-017R-017F-002Priority has four fixed levels stored as numberstodo
T-018R-018F-026Changes appear in other open tabs without reloadtodo
T-019R-019F-005Dragging a card to another column changes its group valuetodo
T-020R-033F-016A field created from a task belongs to that task's listtodo
T-021R-034F-016The type menu puts popular and AI types first; Rollup is not a type of its owntodo
T-022R-035F-016, F-017Number and money formats are set per field, not by the user's languagetodo
T-023R-036F-017Picking a country in a Phone field changes the user's profile countrytodo
T-024R-037F-022On Free Forever each value written counts once against 60 uses per workspacetodo
T-025R-038F-016, F-017A Formula field is defined once per field and takes the money format of a money inputtodo
T-026R-039F-016, F-017, F-018Tasks and Relationship fields live in the Relate menu, not in the Fields sectiontodo
T-027R-040F-016A Relationship field must point at another listtodo
T-028R-041F-019Required and Pinned do nothing on Free Forever except point to an upgradetodo
T-029R-042F-019A required field blocks task creation where it is used (documented)todo
T-030R-043F-015The task view lists a location's fields in one Fields sectiontodo
T-031R-044F-017Each value saves on its own and adds an activity linetodo
T-032R-045F-017Each type has its own editor in the Fields sectiontodo
T-033R-046F-017Location values store the address and the coordinatestodo
T-034R-047F-017A typed signature is drawn in a script font and records who signedtodo
T-035R-048F-018On a card every shown custom field takes its own row with the type icontodo
T-036R-049F-018Custom field values can be edited on the cardtodo
T-037R-050F-018Showing custom fields on cards is a view drafttodo
T-038R-051F-020Deleting a field warns with the task count and sends it to Trash without Undotodo
T-039R-052F-020Restoring a field from Trash brings its values backtodo
T-040R-053F-020Trash holds deleted lists, tasks, tags and fields for 30 daystodo
T-041R-054F-020, F-021Deleting a list takes its list-level fields with ittodo
T-042R-055F-021The Custom Field Manager groups fields by type and lists their locationstodo
T-043R-020F-009Clicking a card opens the task at its own URL, over the boardtodo
T-044R-021F-009The task layout is a personal preference shared by every task and workspacetodo
T-045R-022F-009The header arrows step through tasks in the board's ordertodo
T-046R-023F-009The status picker groups statuses by typetodo
T-047R-024F-009The next-status arrow moves a task one status forwardtodo
T-048R-025F-010The description saves while typing, and "- " starts a bullet listtodo
T-049R-026F-014A comment posts to the activity stream; the composer stays empty for the nexttodo
T-050R-027F-009Opening and using a task marks it as viewedtodo
T-051R-028F-011Subtasks are created inline and show as a table with a progress counttodo
T-052R-029F-013A dependency shows on both tasks and on both cardstodo
T-053R-030F-012Create checklist creates an empty checklist at oncetodo
T-054R-031F-012Resolved checklist items hide behind "Show completed" and update countstodo
T-055R-032F-009Escape in an empty inline input closes the task viewtodo

Copy

AreaItemWhyRefs
BoardOne column per status, empty columns shown, counts per columnClear picture of the workflow at a glanceR-001, R-002
BoardInline edits on cards with optimistic updates and Undo on completeFast triage without opening tasksR-003, R-017, R-024
BoardCreate a task inside a column takes that column's statusNatural for kanban usersR-010
Task viewEvery field saves on its own; one activity line per change with old and new valueNo lost edits, full audit trailR-044, E-014
Custom fieldsNumber and money format per field; BRL with Brazilian separatorsBrazilian SMBs need R$ 1.234,56 by defaultR-035
Custom fieldsLocation with address plus coordinatesField service and sales visitsR-046
Custom fieldsDelete goes to a 30-day Trash and restore brings values backSafe cleanupR-051, R-052
DataOne change record per field write (versions[] with before and after)Feeds activity, undo and webhooksE-014

Avoid

AreaItemWhyRefs
Custom fieldsSaving the user's profile country from a phone field's flag menuA side effect the user cannot see or expectR-036, B-013
Custom fieldsToggles that silently refuse to switch on (Required on the free plan)Feels broken; say why or hide itR-041, B-014
Custom fieldsRelationship-type fields that live outside the Fields sectionUsers look for all fields in one placeR-039, B-018
BoardView drafts dropped on reload without a warningLost workR-008, B-001
Task viewEscape in an inline input closing the whole taskLost contextR-032, B-010
TrashSearch still listing deleted tasksConfusing after cleanupB-016
PricingCharging for Tag Manager or Required fields in the basic tiersSmall teams need both to keep data cleanB-017, R-041
BrandClickUp names, icons, colors and copyTrademark and look and feel (BR-010)BR-010

Improve

AreaItemHowRefs
Custom fieldsRequired fieldsOffer on all plans; show which fields are missing when a task is createdR-042, Q-010
Custom fieldsDelete fieldShow the task count at once, offer Undo in the toastR-051, B-015
Custom fieldsPhoneDefault country from the workspace (Brazil), never from a field editR-036
BoardDrag and dropKeyboard alternative to move a card (status menu, shortcuts)R-019, B-005
BoardView draftsWarn before leaving with unsaved view changes, or autosave personal viewsR-008
AccessibilityCard controls and field rowsAccessible names and visible focus on every controlB-004
LocalizationPortuguese UI, BRL, dd/mm/yyyy, Brazilian phone masks by defaultTarget marketR-035

10Before you launch

Approvals, licenses and certifications to start early, and what a new product cannot copy. Building can start now; these decide when you can sell.

Clone target market: small and medium businesses in Brazil (see 00-charter.md). Scope: the board, the task view and custom fields, plus what any SaaS needs to sell in Brazil. Not legal advice. A legal reading without a source is [inf] with a question for counsel in questions.md.

Summary

Launch blockers first. One row per barrier; details below.

BarrierCategorySeverityMarket weightBlocksLead time
BR-001 LGPD duties of a processor, and transfers out of BrazilRegulationblocks launchrequired to sellthe whole productweeks (contracts, records, incident procedure)
BR-002 Electronic service invoices (NFS-e national standard, CBS/IBS fields)The clone's own operationblocks launchrequired to sellcharging customersweeks to months (municipal registration, certificate, provider)
BR-010 Trademark and look and feelIntellectual property and termsblocks launchrequired to sellbrand, UI skinweeks (own name, own visual identity)
BR-011 ClickUp terms on reverse engineering and competitive API useIntellectual property and termsadds lead timen/ahow research is donecounsel review
BR-003 Recurring billing customers expect (Pix Automático, boleto, cards)The clone's own operationadds lead timerequired to sellsubscriptionsweeks (payment provider onboarding)
BR-004 Google OAuth verification (Calendar sensitive; Gmail and Drive restricted)Permissioned integrationblocks featureimportantcalendar sync, Drive files, Gmaildays (sensitive) to weeks plus a yearly security assessment (restricted)
BR-005 Microsoft publisher verification (Outlook, Teams)Permissioned integrationadds lead timeimportantOutlook calendar and mail, Teamsweeks (partner program account)
BR-006 Slack Marketplace reviewPermissioned integrationadds lead timeminorSlack listing10 active workspaces first, then up to 10 weeks
BR-007 WhatsApp Business PlatformPermissioned integrationblocks featureimportantWhatsApp notifications and task creationweeks (business verification, Tech Provider review)
BR-008 Security certifications buyers may ask forCertificationsadds costminorlarger SMB dealsmonths (SOC 2 or ISO 27001 audit)
BR-009 Enterprise must-haves (SSO, SCIM, audit log, data residency)Certificationsadds costminorupmarket dealsmonths
BR-013 Realtime collaboration and regional hostingInfrastructure and operating costadds costimportantlive board updatesbuild time
BR-014 AI features depend on paid LLM providersInfrastructure and operating costadds costminorAI fields, AI pickersdays (provider contract)
BR-012 Integrations, templates and user baseData, content and network effectsmoatimportantswitching from ClickUpongoing

BR-001 LGPD duties of a processor, and transfers out of Brazil

  • Category: regulation and licensing
  • Blocks: every feature that stores customer workspaces (F-001 to F-026)
  • Gatekeeper: ANPD (Autoridade Nacional de Proteção de Dados)
  • Severity: blocks launch
  • Market weight: required to sell [inf] Q-006
  • What it takes: as processor (operador), follow the customer's instructions (Art. 39), keep records of processing (Art. 37), apply security measures (Art. 46), support incident notices (Art. 48) [doc SRC-053]. Small companies may skip appointing an encarregado but must offer a contact channel (Res. 2/2022) [doc SRC-055]. Hosting outside Brazil needs ANPD standard contractual clauses adopted without changes; only the EU has an adequacy decision (Res. 32/2026) [doc SRC-054][doc SRC-056]. Fines up to 2% of Brazil revenue, capped at R$ 50 million per infraction [doc SRC-053].
  • Lead time and cost: weeks; mostly legal work [inf] Q-005
  • Mitigation: host in a Brazilian cloud region (ClickUp lists none in its subprocessors [doc SRC-041]) or sign the ANPD clauses with the cloud provider; publish a DPA and privacy policy; name a contact channel.
  • Evidence: [doc SRC-053][doc SRC-054][doc SRC-055][doc SRC-056][doc SRC-041]

BR-002 Electronic service invoices (NFS-e national standard, CBS/IBS fields)

  • Category: the clone's own operation
  • Blocks: charging customers
  • Gatekeeper: Receita Federal, CGIBS, the municipality of the issuing company
  • Severity: blocks launch
  • Market weight: required to sell (Brazilian companies need a valid invoice to book the expense) [inf] Q-006
  • What it takes: Simples Nacional companies must issue NFS-e through the national issuer from 1 November 2026 [doc SRC-057]. Regular-regime invoices without IBS/CBS fields are rejected from 3 August 2026 [doc SRC-058]. CBS starts in 2027 and ISS ends after 2032 [doc SRC-059].
  • Lead time and cost: weeks to months; an invoicing provider with the national API, or direct integration [inf] Q-007
  • Mitigation: use an invoicing provider that already supports the national NFS-e API and IBS/CBS fields; start municipal registration in month one.
  • Evidence: [doc SRC-057][doc SRC-058][doc SRC-059]

BR-003 Recurring billing customers expect (Pix Automático, boleto, cards)

  • Category: the clone's own operation
  • Blocks: subscriptions
  • Gatekeeper: Banco Central do Brasil (Pix rules) and the chosen payment provider
  • Severity: adds lead time
  • Market weight: required to sell [inf] Q-006
  • What it takes: Pix Automático lets the payer authorize recurring debits once; only CNPJ holders can receive; receiving support is optional for providers, so the clone needs one that offers it; the receiver may be charged, the payer may not [doc SRC-060]. ClickUp bills by card only, through Braintree and Stripe [doc SRC-041], in USD even on the Portuguese pricing page [doc SRC-036].
  • Lead time and cost: weeks of provider onboarding; per-transaction fees [inf] Q-007
  • Mitigation: launch with cards and Pix (one-off) through a Brazilian provider, add Pix Automático when the provider supports it. Pricing in BRL is itself an advantage over ClickUp.
  • Evidence: [doc SRC-060][doc SRC-041][doc SRC-036]

BR-004 Google OAuth verification

  • Category: permissioned integration
  • Blocks: F-027 (calendar sync, Drive attachments, Gmail); ClickUp offers Google Calendar two-way sync, Google Drive and Gmail in its App Center [obs EV-001]
  • Gatekeeper: Google (OAuth app verification)
  • Severity: blocks feature
  • Market weight: important [inf] Q-006
  • What it takes: Calendar scopes are sensitive (verification typically 3 to 5 business days) [doc SRC-062]. Gmail and full Drive scopes are restricted: a CASA security assessment by an approved assessor, renewed at least every 12 months [doc SRC-061][doc SRC-063][doc SRC-064]. drive.file with the Picker is non-sensitive [doc SRC-064].
  • Lead time and cost: days for sensitive; weeks plus assessor fees for restricted [doc SRC-061][doc SRC-062]
  • Mitigation: start with Calendar (sensitive) and Drive via drive.file; postpone Gmail.
  • Evidence: [obs EV-001][doc SRC-061][doc SRC-062][doc SRC-063][doc SRC-064]

BR-005 Microsoft publisher verification

  • Category: permissioned integration
  • Blocks: F-027 (Outlook calendar and mail, Microsoft Teams) [obs EV-001]
  • Gatekeeper: Microsoft (Entra ID publisher verification, AI Cloud Partner Program)
  • Severity: adds lead time
  • Market weight: important [inf] Q-006
  • What it takes: a verified partner program account, a work tenant and a matching domain; free; without it users cannot consent to new multitenant apps [doc SRC-065].
  • Lead time and cost: weeks; no fee [doc SRC-065]
  • Mitigation: register the partner account early.
  • Evidence: [obs EV-001][doc SRC-065]

BR-006 Slack Marketplace review

  • Category: permissioned integration (distribution)
  • Blocks: F-027 (Slack listing; ClickUp lists Slack in App Center) [obs EV-001]
  • Gatekeeper: Slack
  • Severity: adds lead time
  • Market weight: minor [inf] Q-006
  • What it takes: 10 active workspaces before submission, preliminary review up to 10 business days, functional review up to 10 weeks, no broad scopes [doc SRC-066].
  • Lead time and cost: up to about 3 months [doc SRC-066]
  • Mitigation: distribute the app outside the Marketplace until it qualifies.
  • Evidence: [obs EV-001][doc SRC-066]

BR-007 WhatsApp Business Platform

  • Category: permissioned integration
  • Blocks: WhatsApp notifications and creating tasks from WhatsApp (not in ClickUp: no WhatsApp in App Center [obs EV-001]; the request has about 2,500 votes, status "future" [doc SRC-051])
  • Gatekeeper: Meta
  • Severity: blocks feature
  • Market weight: important for Brazilian SMBs [inf] Q-006
  • What it takes: business verification, Tech Provider app review with videos, advanced access to messaging and management permissions, Embedded Signup for customers [doc SRC-068]; per-template-message fees by category, billed in BRL for Brazil from 1 July 2026 [doc SRC-067].
  • Lead time and cost: weeks; per-message fees [doc SRC-067][doc SRC-068]
  • Mitigation: start verification in month one or use a WhatsApp solution provider; launch with email and in-app notifications. This is a differentiator against ClickUp.
  • Evidence: [obs EV-001][doc SRC-051][doc SRC-067][doc SRC-068]

BR-008 Security certifications buyers may ask for

  • Category: certifications buyers require
  • Blocks: larger SMB and enterprise deals
  • Gatekeeper: auditors (SOC 2, ISO 27001)
  • Severity: adds cost
  • Market weight: minor for small companies, important above that [inf] Q-006
  • What it takes: ClickUp holds SOC 1, 2 and 3, ISO 27001, 27017, 27018, 27701 and 42001, PCI and HIPAA badges [doc SRC-039].
  • Lead time and cost: months and audit fees [inf] Q-007
  • Mitigation: publish a security page with the controls in place; plan SOC 2 Type 1 after product-market fit.
  • Evidence: [doc SRC-039]

BR-009 Enterprise must-haves (SSO, SCIM, audit log, data residency)

  • Category: certifications buyers require (enterprise features)
  • Blocks: upmarket deals
  • Gatekeeper: buyers' IT
  • Severity: adds cost
  • Market weight: minor for the target segment [inf] Q-006
  • What it takes: ClickUp gives Google SSO on Business and SAML, SCIM, audit logs and data residency (US, EU, APAC) on Enterprise [doc SRC-035][doc SRC-039][doc SRC-042].
  • Lead time and cost: build time [inf] Q-007
  • Mitigation: Google sign-in at launch; defer SAML, SCIM and audit log.
  • Evidence: [doc SRC-035][doc SRC-039][doc SRC-042]

BR-010 Trademark and look and feel

  • Category: intellectual property and terms
  • Blocks: brand, product name, domain, UI skin
  • Gatekeeper: Mango Technologies, Inc. (DBA ClickUp)
  • Severity: blocks launch
  • Market weight: required to sell
  • What it takes: the trademark guidelines bar "ClickUp" or similar names in product names, handles and domains, ads on the mark, and copying the website design, app look and feel, colors, icons or slogans [doc SRC-052]. The Terms bar copying content and marks (sections 4.3, 4.9) [doc SRC-038].
  • Lead time and cost: weeks for an own name and identity [inf] Q-005
  • Mitigation: own name, palette, icons and copy; use "ClickUp" only to label an importer. The design tokens in this KB describe structure and contrast, not a palette to copy.
  • Evidence: [doc SRC-052][doc SRC-038]

BR-011 ClickUp terms on reverse engineering and competitive API use

  • Category: intellectual property and terms
  • Blocks: how the research is done (not the clone's launch directly)
  • Gatekeeper: ClickUp terms; courts
  • Severity: adds lead time
  • Market weight: n/a
  • What it takes: Terms 1.5 "You may not disassemble, decompile, or reverse engineer the Service" [doc SRC-038]; 3.9 and 4.13 bar scraping and derivative uses [doc SRC-038]; the Developer Terms bar API use for "benchmarking or competitive purpose" [doc SRC-040].
  • Lead time and cost: counsel review (Q-005)
  • Mitigation: this study only observed the UI of the user's own workspace; it did not use the public API. Counsel decides whether the clone may rely on it.
  • Evidence: [doc SRC-038][doc SRC-040]

BR-012 Integrations, templates and user base

  • Category: data, content and network effects
  • Blocks: switching from ClickUp
  • Gatekeeper: none (market)
  • Severity: moat
  • Market weight: important [inf] Q-006
  • What it takes: ClickUp claims 1,000+ integrations, 1,000+ templates and over 5 million teams [doc SRC-049][doc SRC-050][doc SRC-070]; App Center lists about 90 native integrations [obs EV-001]. It imports from 11 tools and exports List and Table views to CSV or Excel with custom fields [doc SRC-047][doc SRC-015].
  • Lead time and cost: ongoing
  • Mitigation: an importer for ClickUp's CSV/Excel export (custom fields included) on day one; a small set of Brazil-specific integrations (WhatsApp, Pix, NFS-e) instead of breadth.
  • Evidence: [obs EV-001][doc SRC-015][doc SRC-047][doc SRC-049][doc SRC-050][doc SRC-070]

BR-013 Realtime collaboration and regional hosting

  • Category: infrastructure and operating cost
  • Blocks: F-026 (live updates across tabs and users)
  • Gatekeeper: none
  • Severity: adds cost
  • Market weight: important [inf] Q-006
  • What it takes: board changes propagate to other open sessions without reload [obs EV-032]; the web app uses regional gateways (an EU host served the test workspace) [net EV-005]; ClickUp hosts on AWS in the US, Ireland, Germany, Australia and Singapore [doc SRC-041].
  • Lead time and cost: engineering time and a realtime service
  • Mitigation: one Brazilian region at launch; a managed realtime service.
  • Evidence: [obs EV-032][net EV-005][doc SRC-041]

BR-014 AI features depend on paid LLM providers

  • Category: infrastructure and operating cost
  • Blocks: F-023 (AI fields) and the AI shortcuts in pickers (Assign with AI, Prioritize with AI, Ask AI to build filters) [obs EV-041][obs EV-006][obs EV-039]
  • Gatekeeper: LLM providers
  • Severity: adds cost
  • Market weight: minor [inf] Q-006
  • What it takes: ClickUp lists 12 LLM subprocessors [doc SRC-041] and meters AI through credits per plan [doc SRC-035][doc SRC-044].
  • Lead time and cost: per-use fees
  • Mitigation: leave AI out of the first release; add it later behind credits.
  • Evidence: [doc SRC-041][doc SRC-035][doc SRC-044][obs EV-041]

11Cross-cutting topics

Behavior that spans many screens: search, notifications, permissions and more.

Topic: hidden writes

Actions in this product that change data or state without a Save button.

PatternWhereClassEvidence
Card field pickers save at once (priority, assignee) or when the picker closes (dates, tags)Board cardA2[net EV-007][net EV-014]
✓ in the card's hover toolbar completes the task with one clickBoard cardA2[obs EV-012]
The hover toolbar buttons are in the Tab order even without hover; Enter on them actsBoard cardA2[obs EV-034]
"+ Add group" creates a status (List only or Entire Space)BoardA4 when Entire Space[obs EV-037]
Tags typed in a card picker are created at Space levelBoard cardA4[obs EV-040][net EV-014]
Assigning yourself offers "Don't ask again", a personal preferenceBoard cardA3[obs EV-042]
View option changes are drafts: nothing is saved until "Save view", and a reload drops the draft (the opposite risk: losing work)Board toolbar and CustomizeA1[obs EV-017][net EV-014]
"Autosave for me" turns every later view change into a saved changeCustomize viewA3/A4[obs EV-019]
Creating a list opens an AI "List settings" offer that generates task types, views, fields and statuses unless declinedCreate ListA4[obs EV-047]
Onboarding a workspace creates a Space, a List and two chat channelsWorkspace creationA2[obs EV-048]
Picking a country in a Phone field's flag menu saves the user's profile country (all workspaces), even with no number typedTask Fields sectionA3[obs EV-130][obs EV-131]
Custom field values save on change (checkbox click, picker choice, slider drag, blur) and each one spends a Free plan useTask Fields section, card rowsA2[net EV-112]
Configuring a Formula value edits the field definition for every task in its locationsTask Fields sectionA4 at workspace or space level[net EV-112]
Deleting a tag from a task's tag picker deletes it in the whole SpaceTag pickerA4[obs EV-136]
Opening a task marks it viewed (PUT .../viewed)Task viewA3 (product telemetry, not restorable)[net EV-058]
Using Create menus writes a per-user UI entry (PUT /growth-v1/.../dynamic_ui/entries/globalCreateBtn)Global Create menuA3 (product telemetry, not restorable)[net EV-140]

Not tested

  • Keyboard shortcuts on the board (SRC-046 lists them); notification inbox; "Remind me in Inbox".

12Findings

Problems and strengths noticed in the product during the study.

Problems

IDFindingSeverityWhereEvidence
B-001View changes (collapse, card size, grouping) are lost on reload without any warning; "Save view" is the only cueMediumS-001[obs EV-017][obs EV-046]
B-002Tasks created quickly one after another can land out of order (v-03 above v-02)LowS-001, S-004[obs EV-012]
B-003The list group count lagged during fast creation (29 shown while 54 existed) until reloadLowS-004[obs EV-046]
B-004Card controls lack accessible names (open area, field toggles, Add subtask); the title link has no focus ringMediumC-001[obs EV-011][obs EV-034]
B-005No keyboard way to move a card or to move focus between cards; drag is mouse-onlyMediumS-001[obs EV-034][obs EV-046]
B-006The hover toolbar covers the end of the card titleLowC-001[obs EV-030]
B-007The view Fields panel lists 7 workspace custom fields that the Custom Field Manager does not show (no way to see where they live)MediumC-003, S-003[obs EV-044][obs EV-045]
B-008Creating a list opens an AI settings offer that starts generating before the user agreesLowCreate List[obs EV-047]
B-010Escape in an empty inline input (checklist item) closes the whole task view instead of only the inputMediumS-002[obs EV-068]
B-011Inline markdown for bold (**text**) typed in one go is not converted, while list markdown isLowC-012[obs EV-055]
B-012Opening and editing tasks sends a 'viewed' write on every task: a hidden write that feeds recently viewed listsLowS-002[net EV-058]
B-013Choosing a country in a Phone field silently changes the user's profile country for every workspaceMediumC-019[obs EV-130][obs EV-131]
B-014"Required in tasks" does not turn on in Free Forever and gives no message beyond a tooltip; Pinned jumps to an upgrade dialogMediumC-018[obs EV-082][obs EV-083]
B-015Deleting a field has no Undo; the confirm dialog shows the task count only after a delay, so a fast click confirms without itLowC-018[obs EV-126][obs EV-127]
B-016Global search kept listing tasks of a deleted list minutes after the deleteLowSearch[obs EV-138]
B-017Tag Manager is Business Plus; on Free the only way to delete a Space tag is from a task's tag picker, so an unused tag needs a task to reach itLowTags[obs EV-135][obs EV-136]
B-018Tasks and Relationship fields are created as custom fields but appear only in the Relate menu and a Related tab, not in the Fields section with the othersLowC-017[obs EV-117][obs EV-118]
B-009Many entry points push AI (Assign with AI, Prioritize with AI, Ask AI to build filters, AI fields suggestions) into basic pickersLowC-005, C-009[obs EV-006][obs EV-041][obs EV-039]

Strengths

  • Every card field edits in place with optimistic updates, and completing shows Undo [obs EV-012].
  • Changes reach other open tabs without reload [obs EV-032].
  • Adding a status now asks for its scope (list or space) instead of silently changing the Space [obs EV-037].
  • Column paging keeps large lists responsive [obs EV-046].
  • Number and money formats per field: BRL with Brazilian separators works out of the box [obs EV-102][obs EV-103].
  • Restoring a deleted field from Trash brings its values back [obs EV-129].
  • Every field change writes one activity line with the old and new value [obs EV-117].
  • Location fields resolve real addresses through Google Places and keep coordinates [obs EV-114][net EV-112].

13Open questions

What the study could not confirm, and how to answer it.

IDQuestionWhy it mattersHow to answerStatus
Q-001Confirm: do card field values (chips) render later than card titles in a visible tab, and by how much?Perceived performance target for the cloneOpen the board in a foreground tab and record a video or Performance traceopen
Q-002Confirm: where do the 7 "Custom Fields in Workspace" listed in the view Fields panel come from (chat posts, meeting notes, docs)?Data model: hidden system fields per object typeInspect /customFields/v2/field response or open a chat post's fieldsopen
Q-003Confirm: drag and drop details: status change on drop, order within a column, multi-card drag, drop preview and animation, whether columns can be reorderedCore board interaction (F-005)A human performs drags while the agent records, or a Playwright session with real mouse eventsopen
Q-004Confirm: board Sort options and how sort interacts with manual orderView model (sorting.fields)Open Sort, apply one, reloadopen
Q-005Counsel: does building a clone from this study conflict with ClickUp's Terms 1.5 (no reverse engineering) and 4.13, and with the Developer Terms ban on competitive use?Legal risk of the whole projectBrazilian counsel reads SRC-038 and SRC-040open
Q-006Confirm market weights: which of these do Brazilian SMB buyers require before buying a work-management tool: WhatsApp, Google and Microsoft calendar sync, Slack, BRL pricing with Pix or boleto, NFS-e, SOC 2, SSO?Orders the PRD build list (barriers BR-001 to BR-014)Interviews or a short survey with 10 to 20 target buyers; sales callsopen
Q-007Confirm costs and lead times for: an NFS-e provider with the national API, Pix Automático through a Brazilian payment provider, a SOC 2 Type 1 audit, enterprise SSO and SCIMBudget and roadmapQuotes from two providers eachopen
Q-008Confirm: does deleting a field (or a value) give Free Forever uses back, and what happens at 60 (block, warning, read-only)?Plan limits the clone may copy or avoidWatch the entitlement counter while deleting a field with values; fill values up to 60 in a throwaway workspaceopen
Q-009Confirm: do Formula fields count as uses? The docs say yes (SRC-043); the counter did not move when a formula was configuredAccurate free-plan modelSet inputs on a new task and compare the counter before and after the formula computesopen
Q-010Confirm: required-field enforcement on Business: where it blocks (inline create, task view, import, API), the message, and subtasksP1 feature named by the requesterBusiness trial in an L1 accountopen
Q-011Confirm: the HTTP method and response of field delete and of Restore from TrashAPI parity for delete and restoreRepeat with the api-shapes recorder installed on the Trash pageopen
Q-012Confirm: Rollup fields, Button fields with an automation, and AI fields (credits, refresh, errors)Remaining field typesL1 account with AI credits; build a related list for rollupsopen

14About this study

The goal, scope and terms of the study, the vocabulary of the product, and every public source used.

Charter

Date: 2026-10-16

ItemValue
GoalDocument ClickUp's board view, task detail view and custom fields well enough that a team that never used ClickUp can rebuild them, and say what would block such a clone from launching
Requested byThe product owner of this study (a founder in Brazil), through a parent agent session
ScopeBoard view, task detail view, custom fields (create each type, fill, required, delete with values, rendering on the board and in the task). Barrier scan for these features
Out of scopeList, calendar, Gantt and other views; docs, chat, goals, dashboards, AI features; automations beyond their entry points; mobile and desktop apps
Clone target marketSmall and medium businesses in Brazil (stated by the requester)
PrioritiesP1: the three named areas. P2: the core task loop they rest on (create, open, edit, complete). P3: every custom field type
ModeUnattended. No questions to the user; blocks go to "Needs human" in STATUS.md
Environment levelL2 if creating a workspace is free (no billing, no trial, no terms); otherwise L3 in a private space
Write authorization"Run a real reverse engineering study of ClickUp with RES"; "Environment: L2, a new empty ClickUp workspace named '🧪 [RE] ClickUp study' under [the user's] login, only if creation is free"
KB languageEnglish (the example is public)
Terms of serviceSee "Terms" below

Terms

DocumentClauseURLSource
Terms of Service1.5: users may not disassemble, decompile or reverse engineer the Servicehttps://clickup.com/terms[doc SRC-038]
Terms of Service3.9 and 4.13: no scraping and no derivative or competing uses of the Servicehttps://clickup.com/terms[doc SRC-038]
Developer Terms3: no API use for benchmarking or a competitive purposehttps://clickup.com/terms/developer-terms[doc SRC-040]

This study observed only the UI of the user's own test workspace and did not call the public API. Whether a clone built from it is allowed is the user's decision with counsel (BR-011, Q-005); it is listed under "Needs human" in STATUS.md. The study followed the user's original instruction.

Glossary

TermDefinitionEvidence
WorkspaceTop container of an account's work; has members, plan and billing. API name: team[obs EV-001][doc SRC-023]
SpaceContainer inside a workspace holding folders and lists; owns statuses, tags and ClickApps that lists inherit[obs EV-037][doc SRC-018]
FolderOptional container of lists inside a Space[doc SRC-008]
ListContainer of tasks; every task lives in at least one list[doc SRC-017]
ViewA saved way to show a location's tasks (List, Board, Calendar...); has grouping, filters, sorting, columns and settings[net EV-014][doc SRC-028]
BoardView type that shows tasks as cards in columns, one column per group value[obs EV-012]
GroupThe field that makes the board's columns (status by default)[obs EV-025]
SubgroupA second grouping field that adds swimlanes (rows)[obs EV-027]
CardA task as shown on the board[obs EV-013]
StatusWorkflow state of a task; types open, custom (active), done and closed[net EV-014][doc SRC-018]
Custom fieldA user-defined task attribute with a type (Dropdown, Money, Date, ...) defined at a location[obs EV-004][doc SRC-008]
Use (custom field)One value written to a custom field on a task; Free Forever allows 60 per workspace[doc SRC-005]
Custom Field ManagerSettings screen that lists custom fields by location and task type[obs EV-045][doc SRC-006]
ClickAppA feature switch per workspace or space (WIP limits, custom task IDs, ...)[doc SRC-011][doc SRC-019]
Save viewButton that turns view draft changes into the saved view for everyone[obs EV-017][doc SRC-013]
Me modeView filter showing only the current user's tasks[obs EV-022]
Task typeKind of task (Task, Milestone, Form Response, Meeting Note); custom fields can be bound to it[obs EV-045]
Location (custom field)Where a field lives: Workspace, Space, Folder or List; a field shows on every task there[net EV-099][doc SRC-008]
Fields sectionThe block of custom fields in the task view[obs EV-117]
Formula fieldA field computed from other fields, defined once for all tasks of its locations[obs EV-116][net EV-112]
Tasks / Relationship fieldFields that link tasks; they appear in the Relate menu and a Related tab[obs EV-118][obs EV-119]
TrashSettings page that keeps deleted lists, tasks, tags and fields for 30 days[obs EV-137]
EntitlementThe server-side counter of a plan limit, such as custom field uses[net EV-112]

Sources

Public sources read during recon (Phase 3). help.clickup.com refused direct fetches; articles were read through its public help-center API, and the table links the article pages.

IDTitleURLTypeRead onGives
SRC-001ClickUp API: Custom Fields (guide)https://developer.clickup.com/docs/customfieldsapi2026-10-1617 API field types, value shapes, type_config, Free plan 60-use rule
SRC-002Help: Custom Field typeshttps://help.clickup.com/hc/en-us/articles/6303499162647-Custom-Field-typesdocs2026-10-1623 UI field types, options, char limits, option limits
SRC-003Help: Make Custom Fields requiredhttps://help.clickup.com/hc/en-us/articles/30407234676887-Make-Custom-Fields-requireddocs2026-10-16Required fields: plan, when enforced, settings
SRC-004Help: Remove or delete Custom Fieldshttps://help.clickup.com/hc/en-us/articles/22769580660887-Remove-or-delete-Custom-Fieldsdocs2026-10-16Remove vs delete, Trash, 30-day restore, Automations impact
SRC-005Help: Custom Fields useshttps://help.clickup.com/hc/en-us/articles/10993484102167-Custom-Fields-usesdocs2026-10-16What counts as a "use", behavior at the limit
SRC-006Help: Intro to Custom Field Managerhttps://help.clickup.com/hc/en-us/articles/13066263096727-Intro-to-Custom-Field-Managerdocs2026-10-16Manager entry points, columns, filters, move/merge plan gate
SRC-007Help: Show Custom Fields in tasks and viewshttps://help.clickup.com/hc/en-us/articles/6330455628439-Show-Custom-Fields-in-tasks-and-viewsdocs2026-10-16Fields section in task view, empty fields, board/list display
SRC-008Help: Intro to Custom Fieldshttps://help.clickup.com/hc/en-us/articles/6303536766231-Intro-to-Custom-Fieldsdocs2026-10-16Locations, inheritance, plan table (pin, task-type fields), roles
SRC-009Help: Customize Board viewhttps://help.clickup.com/hc/en-us/articles/35342044832279-Customize-Board-viewdocs2026-10-16Board Customize menu: card size, cover, fields, toggles
SRC-010Help: Use subgroups in Board viewhttps://help.clickup.com/hc/en-us/articles/8352728309271-Use-subgroups-in-Board-viewdocs2026-10-16Swimlanes (subgroups)
SRC-011Help: Work in Progress Limitshttps://help.clickup.com/hc/en-us/articles/6304619369623-Work-in-Progress-Limitsdocs2026-10-16WIP limits: plan, measures, warning colors
SRC-012Help: Create and share a Board viewhttps://help.clickup.com/hc/en-us/articles/6310080798615-Create-and-share-a-Board-viewdocs2026-10-16Group-by options, drag to status, private/public views
SRC-013Help: Save view changeshttps://help.clickup.com/hc/en-us/articles/6310370965911-Save-view-changesdocs2026-10-16Save view, Autosave, Save as new view, Revert
SRC-014Help: Views feature availability and limitshttps://help.clickup.com/hc/en-us/articles/32274881672599-Views-feature-availability-and-limitsdocs2026-10-16Per-plan view limits (private, protected, default views)
SRC-015Help: Export List and Table viewshttps://help.clickup.com/hc/en-us/articles/6310174308631-Export-List-and-Table-viewsdocs2026-10-16CSV/Excel export incl. custom fields
SRC-016Help: Task layoutshttps://help.clickup.com/hc/en-us/articles/29665520762647-Task-layoutsdocs2026-10-16Full screen, Modal, Sidebar task layouts
SRC-017Help: Intro to taskshttps://help.clickup.com/hc/en-us/articles/10552031987735-Intro-to-tasksdocs2026-10-16Parts of a task, sections of task view
SRC-018Help: Manage task statuseshttps://help.clickup.com/hc/en-us/articles/6309452618647-Manage-task-statusesdocs2026-10-16Status groups, inheritance, permissions
SRC-019Help: Create Custom Task IDshttps://help.clickup.com/hc/en-us/articles/6304361756951-Create-Custom-Task-IDsdocs2026-10-16Custom task ID format, plan
SRC-020ClickUp API: Rate limitshttps://developer.clickup.com/docs/rate-limitsapi2026-10-16Requests/minute per plan, headers
SRC-021Help: Intro to Dependency Relationshipshttps://help.clickup.com/hc/en-us/articles/6309155073303-Intro-to-Dependency-Relationshipsdocs2026-10-16Blocks / blocked by, warning and reschedule ClickApps
SRC-022Help: Intro to Relationshipshttps://help.clickup.com/hc/en-us/articles/6304528030743-Intro-to-Relationshipsdocs2026-10-16Task links, relationship columns (ex-Rollup), 300-link limit
SRC-023ClickUp API: Get Taskhttps://developer.clickup.com/reference/gettaskapi2026-10-16Task object fields and types
SRC-024ClickUp API: Set Custom Field Valuehttps://developer.clickup.com/reference/setcustomfieldvalueapi2026-10-16Endpoint, value shapes incl. Files and Button
SRC-025ClickUp API: Get List Custom Fields (Get Accessible Custom Fields)https://developer.clickup.com/reference/getaccessiblecustomfieldsapi2026-10-16Field object shape, applied_objects
SRC-026ClickUp API docs index (llms.txt)https://developer.clickup.com/llms.txtapi2026-10-16Full endpoint list; no create-field endpoint
SRC-027ClickUp API: Webhookshttps://developer.clickup.com/docs/webhooksapi2026-10-16Webhook event names, location filters
SRC-028ClickUp API: Create List Viewhttps://developer.clickup.com/reference/createlistviewapi2026-10-16View object: type enum, grouping, divide, settings
SRC-029ClickUp API: Create Taskhttps://developer.clickup.com/reference/createtaskapi2026-10-16Create body, custom_fields, check_required_custom_fields
SRC-030ClickUp API: Task webhook payloadshttps://developer.clickup.com/docs/webhooktaskpayloadsapi2026-10-16taskUpdated history_items, custom field change shape
SRC-031ClickUp API: Tasks (guide)https://developer.clickup.com/docs/tasksapi2026-10-16Priority enum, time units, Update Task vs custom fields
SRC-032ClickUp API: Get Listhttps://developer.clickup.com/reference/getlistapi2026-10-16List object, statuses array
SRC-033ClickUp API: Get Spacehttps://developer.clickup.com/reference/getspaceapi2026-10-16Space object, features (ClickApps)
SRC-034ClickUp API: Remove Custom Field Valuehttps://developer.clickup.com/reference/removecustomfieldvalueapi2026-10-16DELETE value endpoint
SRC-035ClickUp Pricinghttps://clickup.com/pricingpricing2026-10-16Two plan sets, prices USD, limits
SRC-036ClickUp Pricing (pt-BR)https://clickup.com/pt-BR/pricingpricing2026-10-16Currency shown to Portuguese locale (USD)
SRC-037Help: Downgrade your planhttps://help.clickup.com/hc/en-us/articles/13673035695127-Downgrade-your-plandocs2026-10-16New plan names (Core = Unlimited, Max)
SRC-038ClickUp Terms of Servicehttps://clickup.com/termsterms2026-10-16Reverse engineering, copying, scraping clauses
SRC-039ClickUp Securityhttps://clickup.com/securitysecurity2026-10-16Certifications, data residency, encryption
SRC-040ClickUp Developer Termshttps://clickup.com/terms/developer-termsterms2026-10-16API license restrictions, competitive use, marks
SRC-041ClickUp Subprocessorshttps://clickup.com/terms/dpa/subprocessorssecurity2026-10-1653 subprocessors, hosting regions, payment processors
SRC-042Help: Intro to single sign-on (SSO)https://help.clickup.com/hc/en-us/articles/6305043992343-Intro-to-single-sign-on-SSOdocs2026-10-16SSO plan gating (search API snippets)
SRC-043Help: Intro to Formula Fieldshttps://help.clickup.com/hc/en-us/articles/6308656424983-Intro-to-Formula-Fieldsdocs2026-10-16Formula inputs, outputs, limits
SRC-044Help: What are AI Fields?https://help.clickup.com/hc/en-us/articles/18450100382871-What-are-AI-Fieldsdocs2026-10-16AI field kinds, refresh rules, credits
SRC-045Help: Convert Custom Fieldshttps://help.clickup.com/hc/en-us/articles/14277190461207-Convert-Custom-Fieldsdocs2026-10-16Type conversion matrix, 25,000-task cap
SRC-046Help: Use keyboard shortcutshttps://help.clickup.com/hc/en-us/articles/6309030550167-Use-keyboard-shortcutsdocs2026-10-16Shortcut list
SRC-047Help: How do I import my work into ClickUp?https://help.clickup.com/hc/en-us/articles/6311099045783-How-do-I-import-my-work-into-ClickUpdocs2026-10-16Native importers
SRC-048Help: Export task datahttps://help.clickup.com/hc/en-us/articles/6310551109527-Export-task-datadocs2026-10-16Workspace CSV export columns
SRC-049ClickUp Integrationshttps://clickup.com/integrationsdocs2026-10-161,000+ integrations claim, Google/Microsoft/Slack listings
SRC-050ClickUp Templateshttps://clickup.com/templatesdocs2026-10-161,000+ templates claim
SRC-051ClickUp Feedback: WhatsApp Automation and Direct Integrationhttps://feedback.clickup.com/integrations/p/whatsapp-automation-and-direct-integrationcommunity2026-10-16WhatsApp request status "future", ~2.5k votes
SRC-052ClickUp Trademark Guidelineshttps://clickup.com/brand/trademark-guidelinesterms2026-10-16Prohibited uses of the ClickUp mark
SRC-053Lei 13.709/2018 (LGPD), consolidated text, Câmara dos Deputadoshttps://www2.camara.leg.br/legin/fed/lei/2018/lei-13709-14-agosto-2018-787077-normaatualizada-pl.htmlregulator2026-10-16Arts. 5, 33, 37, 39, 41, 46, 48, 52
SRC-054ANPD: Regulamentações da ANPDhttps://www.gov.br/anpd/pt-br/acesso-a-informacao/institucional/atos-normativos/regulamentacoes_anpdregulator2026-10-16List of ANPD resolutions in force
SRC-055Resolução CD/ANPD nº 2/2022 (copy on gov.br)https://www.gov.br/palmares/pt-br/midias/arquivos-menu-acesso-a-informacao/legislacao/resolucao-cd-anpd-n2-2022.pdfregulator2026-10-16Small-agent relief, encarregado waiver (search)
SRC-056ANPD: Transferência Internacional de Dadoshttps://www.gov.br/anpd/pt-br/assuntos/assuntos-internacionais/transferencia-internacional-de-dadosregulator2026-10-16Transfer mechanisms, SCC deadline (search)
SRC-057Receita Federal: NFS-e Nacional obrigatória para ME e EPP a partir de 1º/11/2026https://www.gov.br/receitafederal/pt-br/assuntos/noticias/2026/agosto/simples-nacional-nfs-e-nacional-sera-obrigatoria-para-me-e-epp-a-partir-de-1o-de-novembro-de-2026/regulator2026-10-16NFS-e national issuer obligation, CBS/IBS for Simples from 2027
SRC-058CGIBS: campos de IBS e CBS obrigatórios a partir de 03/08/2026https://www.cgibs.gov.br/novo-marco-da-reforma-tributaria-inicia-em-03-de-agosto-com-preenchimento-obrigatorio-dos-campos-relativos-ao-ibs-e-a-cbsregulator2026-10-16IBS/CBS invoice fields, test rates, rejection
SRC-059TCU: Reforma Tributáriahttps://sites.tcu.gov.br/reforma-tributaria/regulator2026-10-16CBS/IBS transition timeline, end of ISS
SRC-060BCB: Guia de implementação do Pix Automático v1.3https://www.bcb.gov.br/content/estabilidadefinanceira/pix/automatico/guia_pix_automatico.pdfregulator2026-10-16Pix Automático flows, receiver rules, fees, timing
SRC-061Google: Restricted scope verificationhttps://developers.google.com/identity/protocols/oauth2/production-readiness/restricted-scope-verificationprovider-docs2026-10-16Restricted scope review, CASA, annual reassessment
SRC-062Google: Sensitive scope verificationhttps://developers.google.com/identity/protocols/oauth2/production-readiness/sensitive-scope-verificationprovider-docs2026-10-16Sensitive scope review, Calendar example, 3-5 days
SRC-063Google: Gmail API scopeshttps://developers.google.com/workspace/gmail/api/auth/scopesprovider-docs2026-10-16Gmail scope classification
SRC-064Google: Drive API scopeshttps://developers.google.com/workspace/drive/api/guides/api-specific-authprovider-docs2026-10-16Drive scope classification, drive.file
SRC-065Microsoft: Publisher verification overviewhttps://learn.microsoft.com/en-us/entra/identity-platform/publisher-verification-overviewprovider-docs2026-10-16Requirements, consent effect, cost
SRC-066Slack: Marketplace review guidehttps://docs.slack.dev/slack-marketplace/slack-marketplace-review-guideprovider-docs2026-10-1610-workspace minimum, review timelines
SRC-067Meta: WhatsApp Business Platform pricinghttps://developers.facebook.com/docs/whatsapp/pricingprovider-docs2026-10-16Per-message pricing, service window, BRL billing
SRC-068Meta: Get started for Tech Providers (WhatsApp)https://developers.facebook.com/docs/whatsapp/solution-providers/get-started-for-tech-providersprovider-docs2026-10-16Tech Provider requirements for SaaS
SRC-069Help: Tasks feature availability and limitshttps://help.clickup.com/hc/en-us/articles/29664799512855-Tasks-feature-availability-and-limitsdocs2026-10-16Task performance limits, multi-List limits
SRC-070ClickUp AI / LLM info pagehttps://clickup.com/ai-llm-info-pagedocs2026-10-165M+ teams, $300M ARR (2025) claims

15Evidence

Every statement cites its evidence: [obs EV-###] seen in the product, [net EV-###] captured on the network, [doc SRC-###] public documentation, [inf] an inference with an open question.

EV-002 Board view of an empty list: three status columns and Add group
EV-003 Fields side panel opened after creating a list: Create new tab with AI Suggestions, Popular and All field types
EV-006 Card hover toolbar and the priority picker opened from the card flag icon
EV-008 Date picker opened from a card: start and due inputs, quick options, month grid, Set Recurring
EV-009 Date picker with a start and due date selected (range highlighted)
EV-010 Card date chips: overdue in red (3 days ago), today in yellow, range Today - Mon; priority chip High
EV-012 After Mark complete on a card: card moved to COMPLETE, counts 53/1, toast Status changed with Undo; v-03 sits above v-02
EV-013 Card hover toolbar: Mark complete (tooltip), Add subtask, Rename, More
EV-015 Column menu (Group options) on a column with tasks: Collapse, Archive all, Automate status, Select all, Rename, Edit statuses
EV-016 Column menu on an empty column: no Archive all and no Select all
EV-017 Collapsed column as a vertical strip; Save view button appears in the toolbar (view draft)
EV-018 Board loading state: column header and card skeletons while the view re-queries
EV-019 Customize view side panel: name, More options, Fields, Filter, Group, Sort, Subtasks, Templates, view toggles (autosave, pin, private, protect, default), sharing
EV-020 Card size Small (draft): narrower columns, fields wrap; Save view visible; card options list (cover, stack fields, show empty fields, collapse empty columns)
EV-021 Card size Large (draft) and the Card cover options: Auto, None, Image (default), Task description
EV-022 Layout options panel: page and card layout toggles, task visibility, view settings, reset
EV-023 Stack fields on and Show empty fields off (draft): empty cards show only the title; filled fields stack one per row
EV-024 Card More menu: Copy link, Copy ID, New tab; Favorite, Rename, Unfollow, Remind me; Move to, Add to, Merge, Duplicate, Convert to, Custom Fields, Templates; Relationships, Task Type; Start timer, Send email to task; Archive, Delete; Sharing & Permissions
EV-025 Group by popover: field, direction, delete, Add subgroup; field options Status, Assignee, Priority, Tags, Due date, Task Type
EV-026 Board grouped by Priority (draft): Urgent, High, Normal, Low, No priority columns; cards show a status chip; Save view visible
EV-027 Group Priority with subgroup Status (draft): priority columns and collapsible status swimlanes with counts
EV-028 Bulk action bar after Select all in a column: count, clear, Status, Assignees, Dates, Custom Fields (disabled with no fields), Tags, Move/Add, Convert to Subtask, Copy, duplicate, archive, delete, More
EV-029 Inline create form inside a column: Task Name, Save (disabled while empty), Add assignee, Add dates, Add priority, Add tag
EV-030 After creating in IN PROGRESS: card at the top of the column with that status, form reopened below, toast Task created with Pin to bottom, Copy URL, View task
EV-031 Second tab 3 s after setting priority Low in the first tab: not updated yet
EV-032 Second tab about 8 s later, no reload: card shows Low
EV-033 Keyboard focus on a card field toggle (assignee): white rounded outline
EV-036 Add group form: color dot, Status name, confirm check button (Enter does not submit)
EV-037 Dialog after Add group: Where should this new status apply? List only (default) or Entire Space
EV-038 New status column [RE] REVIEW inserted before COMPLETE, name shown uppercase
EV-039 Filters popover: Ask AI to build filters, Saved filters, Select filter list (Status, Tags, Due date, Priority, Assignee, Archived, Assigned comment, Created by, Date closed, Date created...)
EV-040 Tag picker on a card with a new name typed: Select an option, Create <name>, settings gear
EV-041 Assignee picker on a card: Search or enter email, Me (avatar masked), Assign with AI
EV-042 After assigning yourself: a prompt to add the task to your priorities with Don't ask again and Add to priorities (name masked)
EV-043 View Fields panel (Add existing): Shown (Task Name, Assignee, Dates, Priority, Tags), Properties (Date closed, Date created, Date updated, Status, Task ID, Task Type, Time tracked), Custom Fields in Workspace
EV-044 Fields panel lists 7 Custom Fields in Workspace (Category x2, Likes, Mode, Summary x2, Type) that the Custom Field Manager does not show
EV-045 Custom Field Manager, All Custom Fields: No matching results found (same moment as EV-044)
EV-047 Right after Create List: List settings dialog with AI suggested Default Task Type, Default views, Custom Fields, Statuses (Generating...), No thanks, Apply suggestions; Fields panel opened on the right
EV-048 Sidebar of the new workspace: Space with one List, channels Welcome and General (cropped above the direct messages)
EV-051 Task view (Full screen) annotated: 1 header, 2 hero (type, title, AI bar), 3 fields grid, 4 description, 5 sections (fields, subtasks, relations, checklist, attachments), 6 activity sidebar with comment box
EV-052 Switch layout popover on hover: Modal, Full screen (current), Sidebar
EV-054 Status picker in the task view: search, groups Not started (TO DO), Active (IN PROGRESS, [RE] REVIEW), Closed (COMPLETE)
EV-055 Description editor: '- ' turned into a bullet list; **bold** typed inline stayed literal; history and full-screen icons
EV-056 Comment composer with text and toolbar (add, AI, attach, mention, assign, emoji, clip, task, doc, send with menu)
EV-057 Posted comment in the activity stream (author masked), Just now, reactions, Reply; composer placeholder changes
EV-059 Task view of an overdue task: Dates shows Start -> 3 days ago in red; empty fields read Empty (0.6 scale)
EV-060 216-character title wraps over four lines in the task view without truncation
EV-061 Add subtask opens the Subtasks section with Sort, expand, Suggest (AI), + and an input
EV-062 Subtasks section after two creates: 2 open with progress bar, table Name/Assignee/Priority, Add Task row; subtask count in the header; activity lines
EV-064 Relate items menu: Relate a Task or Doc, This task blocks..., This task is blocked by..., New custom relationship
EV-065 Blocked task after adding a dependency: Blocked by row under the fields (warning icon), relation count in the header, Related/Dependencies tabs with a Blocked by table
EV-066 The other task shows Blocking (red icon) and an activity line You marked this task as blocking
EV-067 Create checklist creates a checklist named Checklist at once (name in edit mode), Add item, Add checklist (0.6 scale)
EV-068 Board after task-view edits: description icon on a card, 2 subtasks toggle, dependency warning badge with count
EV-070 Card property badges: 2 subtasks toggle, waiting-on dependency (yellow warning 1), blocking (red 1), checklist progress 0/3
EV-071 Checklists section: 3 open with progress bar, named checklist, items with circles, Add item, Add checklist; activity aggregates 'added 3 items'; header checklist count
EV-072 After resolving one item: 2 open, the item hides under Show 1 completed; item hover actions
EV-073 Next-status arrow moved TO DO to IN PROGRESS; activity line with both status colors; Status changed toast with Undo; Collapse empty fields link
EV-074 Sidebar layout: board stays visible on the left, the task opens as a right panel; layout popover shows Sidebar selected
EV-075 Modal layout: centered overlay over a dimmed page, activity panel inside the modal
EV-076 Task view More menu: card menu items plus Description history and Print
EV-077 Task type menu: Task (default), Milestone, Form Response, Meeting Note; Recommended Asset, Campaign, Goal, Person, Resource; Create Task Type; Fill with AI
EV-078 After a full reload: description with bullets and the comment persisted; the task opened in Full screen again (0.5 scale)
EV-079 Add fields in the task view: search, Create new / Add existing, Popular types, All types starting with Button
EV-080 Create Dropdown form: type switcher, Field name, Dropdown options with color dots, Set default, delete, Add option, AI option generator, AI Autofill, Permissions and settings, Cancel, Create
EV-081 Field Permissions and settings: description, permissions, exceptions (creator masked), Required in tasks, Pinned, Visible to Guests and Limited Members, Belongs to the list
EV-082 Clicking Required in tasks on Free Forever: tooltip explains the rule, the switch stays off, no message
EV-083 Clicking Pinned on Free Forever opens Upgrade to Business to unlock Pinning Custom Fields (USD price); closed without choosing
EV-084 Number field form: Number format US (1,234.56) or EU (1.234,56)
EV-085 Money field form: currency BRL - Brazilian Real (R$), number format EU
EV-086 Voting field form: emoji type, Hide users who have voted
EV-087 Tasks field form: Relationship name, related to any task in the workspace or tasks from a specific List, Create rollup fields
EV-088 People field form: show people from the entire workspace, show guests, select multiple people (on), include teams
EV-089 Rating field form: emoji type (star), scale slider 1 to 5, default 3
EV-090 Progress (Auto) form: track completion of subtasks, checklists, assigned comments; tasks without action items show 100% when done
EV-091 Progress (Manual) form: start value 0, end value 100
EV-092 Labels form: options required (Create disabled until one exists), color dots, Set default, manual sort, AI option generator
EV-093 Relationship form: tasks from a specific List, related list required (the field's own list could not be chosen), create rollup fields from the related list
EV-094 Button form: name, button label and color, Action required: Add automation
EV-095 AI Summary preset: a Text area field with AI Autofill on and a prompt
EV-096 Create new type menu, top: AI Fields (Summary, Custom Text, Custom Dropdown), then All
EV-097 Create new type menu, bottom: Progress, Email, Phone, Categorize, Custom Dropdown, Translation, Sentiment, Tasks, Location, Rating, Voting, Signature, Button, Action Items, T-shirt Size
EV-098 Custom Field Manager, all fields grouped by type with a Create <type> field link per group; columns Name, Type, Created by (masked), Date Created, Location(s)
EV-100 Task view Fields section: one row per field with type icon; dropdown picker with search, colored options and drag handles
EV-101 Labels field holding two labels as colored pills; money shows the R$ prefix while empty
EV-102 Money field input in BRL with Brazilian separators: R$ 1.234,56
EV-103 Number field with European format shows 1.234,5
EV-104 Phone field input defaults to the flag and sample number of the profile country (masked: account data)
EV-105 Phone field after picking Brazil: (11) 90000-0000 with Brazilian mask
EV-106 People field picker: Me (avatar masked) and Keep typing a full email to invite; activity lines per field change
EV-107 Manual progress field as a slider at 61%
EV-108 Text area field edits in a large popover editor; voting shows a thumbs up with 0
EV-109 Voting field after one vote: thumbs up with 1; textarea value on two lines
EV-110 Signature field pad in Type mode renders the typed name in a script font; Clear, Cancel, Save
EV-111 Saved values: rating 2 of 3 stars, signature image, text, textarea, voting 1, website as domain with favicon
EV-113 Location field: typing a street shows one Google Places suggestion (Av. Paulista, São Paulo - SP, Brazil); people value masked
EV-114 Location saved as the formatted address; money and number with Brazilian and European separators
EV-115 Formula field simple editor: field, operator, field; message Select a second field to calculate; Advanced Editor toggle
EV-116 Formula number + money shows R$ 2.469,06, formatted as money; people value masked
EV-117 Task view with every field filled; activity log has one line per field change (people line masked)
EV-118 Relate menu lists the Tasks and Relationship custom fields under the dependency options, then New custom relationship
EV-119 Related section with a tab per relationship field ([RE] cf-tasks 1) and a table Name, Due date, Priority
EV-120 Board with all 22 custom fields shown (unsaved view draft): every field takes a row with its type icon; empty money and formula show R$ 0, rating three grey stars, voting 0, relationship fields an Add task button
EV-121 Card of [RE] all fields with every value: dropdown pill, text, textarea first line with ellipsis, number, money, date, checkbox, email, signature, voting, tasks chip with +, people (masked), rating, progress bars, labels, formula, phone, website, files dash, location truncated
EV-122 Clicking the dropdown pill on a card opens the same option picker inline; hovering the icon shows the field name and Custom Field
EV-123 Customize > Fields: Shown section grows as fields are toggled on; Properties; Custom Fields; Custom Fields in Workspace (7, not created by the study); Save view appears
EV-124 After a reload the board is back to its saved settings: no custom field rows, no Save view, search cleared
EV-125 Field settings popover from the row gear: type switcher, Advanced, name, options with manual sort, Add option, AI Autofill Off, delete icon, Cancel, Save
EV-126 Delete confirmation: This action will delete this Custom Field from 1 task. Admins are able to restore deleted fields from the Trash.
EV-127 After delete: the dropdown row is gone from the task and a toast says Field deleted successfully (no Undo)
EV-128 Settings > Trash: deleted field listed with Location (1 location), Deleted on, Deleted by (masked); filter Me on by default; 30-day notice; Clear all Trash
EV-129 After Restore from Trash the dropdown field is back on the task with its old value [RE] opt A
EV-130 On another task the empty phone field now defaults to Brazil: the country picked earlier was saved to the user profile, not to the field
EV-131 After picking the original country again (PUT /user/v1/user) and a reload, the phone field defaults to it (flag masked: account data); no phone value was saved
EV-132 Delete list confirmation: 54 tasks and templates within this List will be deleted; automations will become inactive
EV-133 Trash after deleting the list: one row for the list (tasks are not listed separately), Deleted by masked
EV-134 Custom Field Manager after deleting the list: All Custom Fields empty; sections Workspace Fields, Task Type Fields, Personal List, By Location, By Task Type
EV-135 Tag Manager on Free Forever opens Upgrade to Business Plus (USD price); closed without choosing
EV-136 Delete tag from the tag picker: Are you sure you want to delete the tag everywhere in this Space?
EV-137 Trash after teardown: the temporary task, the tag (tags go to Trash too) and the list; Deleted by masked; 30-day notice
EV-138 Global search for [RE] right after the list was deleted still lists its tasks (In Space)

Captures that are not images

Network shapes, script output and notes, kept in the knowledge base folder.

IDShowsFileSize
EV-001Integration list by category; none connected (text capture)evidence/EV-001-app-center-integrations.json1.9 KB
EV-004Custom field types listed in the Fields panel (text capture)evidence/EV-004-field-types-panel.json1.3 KB
EV-005Fetch requests on a full load of the board view (URL templates, no values)evidence/EV-005-network-board-load.txt2.8 KB
EV-007Network shape: set priority from a board card (PUT /tasks/v1/item)evidence/EV-007-net-card-set-priority.json2.1 KB
EV-011inventory.js on the board (trimmed, IDs scrubbed)evidence/EV-011-inventory-board.json5.3 KB
EV-014Network shapes for card actions: dates, assignee, tag, mark complete, collapse group draft, column pagingevidence/EV-014-net-board-card-actions.json6.6 KB
EV-034Keyboard focus order on a board card (text log)evidence/EV-034-board-keyboard-focus-order.txt0.9 KB
EV-035tokens.js on the board in dark theme, element styles and semantic variablesevidence/EV-035-tokens-board-dark.json5.0 KB
EV-046Probe log: counts, widths, virtual scroll, drag DOM, viewport (text)evidence/EV-046-board-probe-log.txt1.3 KB
EV-050Compact inventory of the task view: component tree and field test IDsevidence/EV-050-inventory-task-view.json3.3 KB
EV-053Network on task open: call list and the task detail shapeevidence/EV-053-net-task-open.json7.0 KB
EV-058Network shapes for posting a comment; task viewed write; history itemevidence/EV-058-net-comment.json2.6 KB
EV-063Network shape: create a subtask (task create endpoint), order indexes per groupingevidence/EV-063-net-create-subtask.json3.0 KB
EV-069Network shapes: dependency, checklist create, rename, itemsevidence/EV-069-net-dependency-checklist.json2.2 KB
EV-099Network shapes for creating a custom field: definition, location, type_config per typeevidence/EV-099-net-cf-create.json2.1 KB
EV-112Network shapes for setting each custom field value, and the usage counter responseevidence/EV-112-net-cf-values.json4.7 KB
EV-139Accessible name of a custom field value cell (text)evidence/EV-139-a11y-cf-value-button.txt0.2 KB
EV-140Per-user UI state write for the global Create button (text)evidence/EV-140-net-growth-ui-flag.txt0.4 KB