Changelog

What's changed in Domandata.

A record of new features, improvements, and fixes — written for researchers who need to document which version of the tool they used in a study. The current cited release is Version 1.2.1 (10.5281/zenodo.23394676).

October 15, 2026

1.2.1

10.5281/zenodo.23394676

New feature

Instrument Review flags references to missing questions

Instrument Review now lists every reference to a question or block that isn't in the survey — piped text, skip and display logic, follow-ups, pulled-in answers, cross-question checks, loops, randomization pins, Flow values and routes, branching, quotas, quality rules, and translations — naming what holds the reference and opening it. These are common after pulling a block or question from the Library, a community, or another survey without everything it refers to, or after deleting a question. The references are kept, so adding the question back fixes them, and a reference to a question in the trash is flagged too. The existing check for piped text that matches no question now says correctly that respondents see the token as written (or its fallback), not a blank. Two problems these references caused are fixed: a skip-rule or quota condition such as "is not" on a missing question matched every respondent, so a skip rule hid its question from everyone and a quota counted or routed everyone — such conditions now never match; and a follow-up whose parent question was gone was never shown and could make saving the survey fail — it is now shown and saved as an ordinary question.

Fix

Link previews recover from font outages

If Google Fonts was briefly unreachable, Domandata's own link-preview image kept failing until the next deploy. It now tries again on the next request.

Fix

Reliable sign-in and account creation

Sign-in and account-creation pages now open immediately even when the optional institutional sign-in catalog cannot be reached, and account links on the landing page use reliable full-page navigation. Institutional choices load afterward when available. Account-confirmation and other transactional emails now use Outlook-safe spacing, dividers, backgrounds, and buttons instead of depending on browser-only styling.

Fix

One-line text responses stay clean and readable

Text Response fields set to one line now keep comfortable vertical padding without showing an unnecessary scrollbar. When longer text genuinely needs scrolling, the field uses Domandata's themed scrollbar instead of the browser default, including on Windows and Edge. Email, phone, ZIP, and date validation no longer override the field width or height chosen in Block Builder. A three-point setting now offers Rigid, Participant Resize, and Grow With Content modes. Participant Resize is the multi-line default and gives participants a clear two-line corner grip; one-line fields default to Rigid.

Fix

Page breaks survive hidden questions

A page break no longer disappears when the question immediately before it is hidden for a respondent by follow-up logic, a skip rule, or another display rule. The next visible question still starts on the authored page.

Fix

Imports from Qualtrics, Google Forms, Microsoft Forms, and documents

Qualtrics imports now keep recode values, request-response questions, text-entry box size and validation, and multi-statement sliders (as a slider grid); apostrophes, dashes, and accented letters show correctly; and descriptive text no longer appears twice. Survey Flow randomizers now become random condition sets in Flow (one arm per block, balanced when Evenly Present was on; small random-order or show-several randomizers become one path per order), and embedded data set in the Survey Flow becomes Flow values — fixed values carry over and fields filled from the survey link read the matching URL parameter, so piped text and branches on them keep working. Qualtrics logic that still can't be carried over — display logic across blocks, skip logic, choice display logic, carry-forward choices, larger randomizers, and embedded data set conditionally or computed — is listed in the import summary instead of being dropped silently. Google Forms imports keep response validation and one-line Short Answer boxes. Microsoft Forms imports now turn section headings into named blocks instead of questions, keep Dropdown questions as dropdowns, preserve one-line Text boxes, and carry answer-based continue/end display logic into Flow. Both get an end-of-survey block, and descriptions or additional logic they can't show are listed. A malformed Microsoft Forms page no longer causes a server error. Word, HTML, LaTeX, and text documents keep each numbered question with its own answer options (Google Docs and Word web pages and LaTeX lists used to collapse into one question), and checkbox-style options import as select-all-that-apply. Re-importing a Domandata text or LaTeX instrument keeps dropdowns, requested and select-all questions, constant-sum limits, and piped text. Empty or blank documents are now rejected instead of becoming a survey with one placeholder question, documents can import up to 2,000 questions (was 200) with the import summary saying if any were left out, and text, LaTeX, HTML, JSON, and Qualtrics files saved as UTF-16 ("Unicode" in Windows Notepad) now import.

Fix

Response exports agree across every format

CSV, Excel, SPSS, Stata, R, replication packages, and the API now contain the same columns, in the same order, with the same values, and every response includes a Submitted At (UTC) timestamp. Looped questions get one column per round everywhere — replication-package CSVs and API downloads used to leave rounds empty, and other exports added duplicate raw-ID columns for each round. Masking or dropping a looped question, including through a team privacy minimum, now covers every round; before, it did nothing. Excluding identifying data now also removes browser and device details from SPSS, Stata, and R files, not just CSV. API SPSS, Stata, and R downloads now mask the question you chose; with extra variables or looped questions present, the mask could land on the neighboring column and send out the chosen question's answers. CSV keeps negative numbers numeric instead of turning them into text. Respondents who never reached a conjoint, reaction-time, or tree-test question get blank cells instead of placeholder levels or zeros, and a conjoint "Neither" choice is labeled in SPSS and Stata and kept in R instead of becoming missing. The data dictionary now describes how Text Chat and heatmap answers are stored. Excel downloads now include every response you filtered to, even past the newest 5,000, always apply your team's export privacy minimum, and store numeric answers, codes, timings, and counts as real numbers (IDs, zip codes, and free text stay text, keeping leading zeros). Coded IDs and Broaden chosen for a looped question now apply to every round; before, those round columns exported the original answers. Mouse Samples is blank, not 0, when mouse tracking never ran for a response. SPSS and Stata files now keep long open-ended answers in full instead of cutting them at 255 or 2,045 bytes, including in replication packages, the API, and merged longitudinal exports.

Improvement

OSF Registrations replace retiring OSF Projects

Domandata no longer creates, links, or uploads files to OSF Projects, which OSF is retiring. Preregistration now accepts permanent records from AsPredicted, OSF Registries, or another HTTPS provider; a connected OSF account can still confirm private OSF drafts. Instrument locking, amendment records, and public Domandata verification certificates remain available. Harvard Dataverse is now the default repository for response-bearing replication packages, while Zenodo and direct .zip downloads remain available.

Fix

Instrument exports show every arm and question type

Survey PDF, Word, text, LaTeX, and HTML exports printed only the first arm of a randomized experiment; every arm is now included, and a page never mixes questions from two arms. Reaction-time and tree-test questions now show their trials, tasks, and menu tree in instrument exports and appear in the codebook and deposit codebook, and their Qualtrics export placeholder says what to rebuild them as. Piped answers print as the source question's variable name instead of an internal id, "(required)" stays on the question's line, and wording such as "x < 5" is no longer cut out. Word exports keep line breaks and no longer become unopenable when text pasted from Word carries hidden characters (Flow diagram SVGs from the app and MCP get the same protection), and LaTeX exports no longer fail to compile when the closing message starts with an empty paragraph. The survey and codebook PDFs now render Arabic and Hebrew (right to left), Chinese, Japanese, Korean, Greek, Cyrillic, and emoji text, downloading the needed fonts only when a survey uses them, and the LaTeX download compiles such text with XeLaTeX or LuaLaTeX. Every end screen's closing message is now printed, labeled by name, with a note when it redirects, and the Qualtrics TXT export leaves out questions hidden in Flow like the other formats.

Fix

Panel, Library, offline editor, and brand imports

Panel CSV imports no longer drop the first participant of an ordinary contact list, a stray quote mark in a cell no longer merges every later row into one, and repeated or blank column headers keep every column (renamed "Q1 (2)" or "Column 4"); the stray-quote fix also covers distribution contact lists and Silicon Sample files. Blocks and questions pulled from the Library, a community, or another survey keep all their settings — randomization anchors, page grouping, loops, cross-question checks, and end-screen content — and piping and logic between the pulled questions now point at the new copies. Questions and blocks saved to the Library or a community no longer include API keys typed into Text Chat or voice questions. Surveys with reaction-time or tree-test questions can now sync from the offline editor. Brand import shows an error for an invalid website address or a website that redirects to a broken address, instead of failing silently, and pages with unusual CSS no longer stall it. Website themes now read large and compressed stylesheets, choose the actual site or project logo from headers, organization metadata, or supported web-app icons instead of product photos and social-preview heroes, use real card and alternate-section colors for secondary backgrounds, ignore icon fonts, interaction states, and inactive campaign colors, and reproduce fixed dark sites and their brand accents much more closely. In the offline editor, reordered blocks and questions show in their new order right away.

Fix

Cleaner logo in Google results

Google now receives a fully opaque, explicitly sized Domandata logo for search results and AI source cards, preventing transparent corners from rendering as black wedges. The Feedback page now declares its canonical address, links from the public site to signed-in settings are marked as private destinations, and the sitemap only reports modification dates that are backed by actual content dates instead of making every page appear newly changed after a deployment.

Fix

API key survey access

The responses, export, and codebook API now answers a request for a survey the key cannot read exactly like one for a survey that does not exist (404), so a key can no longer be used to confirm other people's survey names. Survey names are matched literally, so % and _ are no longer wildcards. Surveys shared with you as an owner or editor now appear in the API key survey picker, and Standard and Pro users can export their personal-workspace surveys through the API again. The export endpoint's response limit now also applies when the last page of responses is partly full, and the MCP response reader never returns a response's encrypted copy.

Fix

Response storage and survey links

A respondent's saved in-progress answers are now deleted as soon as they submit, instead of lingering until a cleanup job. Encrypted responses and saved credentials now reject a shortened authentication tag. A survey link with a malformed % sequence now shows the not-found page instead of an error.

Fix

Answer scoring and display-order consistency

A multiple-choice answer stored as a bare number now resolves to the same option in an export's code column and its per-option columns. A short-answer or text-chat Contains rule set to And is no longer treated as Or when an older survey-wide setting said Or. Constant-sum auto-balance can no longer push the total one point over budget. Text-chat length limits count an emoji as one character, like short answers. Unanswered conjoint tasks are no longer recorded as 0 ms, so the speeding check does not flag them, and a blank slider value no longer counts as answered. Consistent display order now covers reversed dropdowns and shuffled constant-sum items and card-sort cards. Screen readers now announce dropdown, constant-sum, ranking, card-sort, and MaxDiff questions by their title, read out each question's error message with its control, and announce remaining constant-sum points, placed heatmap markers, and new text-chat replies; conjoint cards on small screens expose which profile is chosen, keyboard focus is kept after choosing a tree-test answer, and the text-highlighter word pickers show the chosen word. Signature questions now offer "type your signature instead" by default so keyboard-only respondents can sign; authors who need a hand-drawn signature can turn it off. Responses no longer include answers to questions the respondent answered and then went Back and routed around: only answers on their final path are saved. Surveys with a reaction-time question can now be submitted; the answer was previously rejected. Screen readers now hear the points remaining in a constant-sum question, each marker placed on a heatmap, and new replies in a text chat; ranking, card-sort, constant-sum, and MaxDiff questions are announced by their titles with their error messages; a chosen conjoint card on phones is announced as selected; tree tests keep keyboard focus on the next task; and the accessible text highlighter shows the chosen words. Signature questions now offer typing a name instead of drawing by default, so keyboard-only respondents can sign; turn off Allow a typed signature to require a drawn one.

Fix

Library communities and templates

Creating a new Library community works again; it had been failing since April. Adding Library items to community folders, removing them, and sharing an item straight into a folder now take effect, follow the folder's lock and collaborator settings, and show an error when they can't be saved instead of appearing to succeed. A survey started from a Library template keeps the template's name instead of getting "(Copy)" added.

Fix

Audio transcription, Quality Review, and panels

Audio Response questions no longer send their speech-to-text API key or saved-credential reference to respondents, and the key is removed from published surveys like other AI question keys. Transcribing an audio response from the response table works again for responses collected since answers began being stored encrypted. Translators, who have read-only access, can no longer change a response's Quality Review decision. In Panels, removing non-responders reports only the members actually removed and refuses an unrecognized removal option instead of deleting, re-attaching a survey that is already a study wave keeps its wave number, and signed-out visitors are sent to the sign-in page.

Fix

Billing, notifications, account deletion, and folders

If saving a plan change, classroom purchase, classroom seat add-on, storage add-on, or lab seat change fails on our side, Stripe now retries it instead of it being silently dropped, and a failed classroom purchase no longer leaves an empty workspace behind. Deleting your account no longer removes your surveys when the account itself can't be deleted at that moment. Creating a survey folder now works for accounts without a personal workspace. A notification is no longer pushed or emailed twice when it is delivered again, and email subject lines show names such as Tom & Jerry correctly instead of as HTML codes. Expired bulk exports are now always removed from storage, and a multi-survey export is retried instead of being delivered with surveys missing when part of it can't be read. Names containing line breaks no longer garble the subject line of access-request and invitation emails.

Fix

AI helpers, deposits, and fonts

Streamed answer-option suggestions no longer drop the last suggested option. Question-name suggestions, answer-option suggestions, and the wording review now show a clear error instead of failing outright when the AI provider can't be reached or times out. Zenodo errors are shown as readable messages instead of raw error pages, and files are only ever uploaded to Zenodo itself. The OSF verification certificate is no longer issued when the response deletion log can't be read or the certificate can't be saved. Silicon Sample runs that use a previous survey or a panel without choosing which respondents to use now get a clear error. Google Fonts stylesheets served to respondents are emptied if they contain anything that could load from another site.

Fix

Longitudinal merged data

In the long-format merged dataset, a question named wave or respondent no longer produces a second column with the same name; it is renamed (for example wave_2). The wave consistency check now flags grid questions whose scale columns or their codes changed between waves.

Fix

Translations, templates, IRB letter, and publish notifications

Translations are no longer marked out of date, or re-translated by auto-translate, just because the source text has a trailing space. A survey started from your own default template now keeps the template's required settings instead of your General options. The IRB letter's account-deletion line no longer prints as garbled characters. Collaborators who asked to be notified when a survey is published now get that notification.

Fix

Automatic end-screen redirects

End screens set to Redirect automatically showed a Continue button instead of sending respondents straight to the redirect URL when the end screen was placed through the Flow. Respondents are now redirected as soon as they finish.

Fix

Recode values resolve reliably

Recode values could stay empty when the code runner was unavailable, or when a source question's name contained spaces or punctuation, so branching, piping, and quotas that depended on them never fired. Recodes built from the recode table, including multi-question interactions, are now calculated directly in the survey as respondents answer and no longer depend on the code runner. Hand-written Python and R recodes still run as scripts, and the Preview tab's Live variables panel now says whether a script could not run because the code runner was unavailable or because the script itself raised an error. The panel also stays in view beside a long survey and scrolls on its own instead of moving with the page.

Fix

Imported and copied surveys keep every setting

Importing a Domandata survey file or package, duplicating a survey, starting from a Library template, or restoring a saved version left many settings pointing at the original survey's questions and blocks, so they silently stopped working in the copy: translations, response quality rules, skip rules, loop sources, randomization pins and anchors, cross-question checks, quota actions that set a value, conjoint blocking, combined values (such as Highest Value Count), and multi-question recodes. Every reference now follows the copy, and items in the copy's trash get their own ids so restoring them can't collide with the original. Survey JSON exported through the MCP now contains the full survey too — it used to leave out block randomization, loops, cross-question checks, and end-screen results, and its question names, custom code, skip rules, and recodes were dropped on import. Older MCP exports import with those question settings intact. Survey files now also carry the survey's Deploy settings — unfinished-response handling, the closed-link message or redirect and when the link retires, response retention, and saved export privacy choices — so an imported survey behaves like the original. Duplicating a survey, pushing it to a team, starting from a Library template, and restoring a version as a copy now carry those settings too (templates saved before this change start with default settings). The closing date is left for you to set again.

Fix

Survey settings no longer reset on reload

Reopening a survey quietly dropped some saved settings, and the next save then erased them: response quality rules (attention checks, impossible combinations, dwell-time minimums, and source review defaults), the opt-in for custom JavaScript with page access, the plain QR code style, moved quota redirect line ends in Flow, and the conjoint and MaxDiff power-estimate inputs. They now load and save like everything else. Settings already erased by a save need to be set again.

New feature

Richer custom theme controls

Deploy → Theme can now set Font Size for the whole survey surface and Title Size for headings alone, each with a slider from 75% to 500% of the default size, plus Title Line Height, Logo Size, Error Color, an optional Footer Text strip (IRB, lab name, or contact), and Selected Answers as Filled Accent or Soft Tint. Error Color styles required-answer warnings and invalid-field highlights. Soft Tint uses a light fill with a colored border — gentler for sensitive topics. Selected-answer controls and the progress bar can each use either Accent or the active light/dark palette's Ink color, making it possible to reserve the accent for higher-priority actions. Selected multiple-choice indicators and Next button labels use the theme's ink or page background on their fill for readability. Progress, page count, and any countdown now form one responsive status header; a top logo joins it at a compact size, while light/dark logo variants and Accent or Ink progress colors keep following the active palette. Timed surveys keep this header visible, show hours for longer limits, emphasize the final minutes without flashing, and preserve the original deadline through a reload or saved resume. Custom themes can also set a Site Description for the public survey link, and optionally use the uploaded logo as the favicon and as the link-preview image (logo centered on the theme background; SVG logos are converted to PNG for unfurls) when the survey URL is shared, with a Link Preview mock in Deploy. All of these settings are available through the MCP as well.

Fix

Visible reCAPTCHA disclosure

Google's invisible reCAPTCHA v3 badge now stays above fixed survey progress and navigation controls instead of being partly covered.

Improvement

Content blocks without framed media

Images, video, audio, YouTube, and iframe embeds in Content questions no longer sit inside a bordered box, so stimulus pages look cleaner in Preview and the live survey. Images and heatmap stimuli on the first survey page also begin loading in the server-rendered shell, while newly uploaded survey images are optimized and served separately so they do not inflate survey configuration responses. Logo uploads now accept the JPEG MIME labels used by Windows and retry through the already-authorized server path when the first Storage request loses its session.

Fix

Response table, exports, and collaborative editing

The Export response table and server-side export tools now use the survey editor's entitlement path so Beta Tester accounts and eligible collaborators retain access without seeing an MCP-only upgrade message. Direct collaborators on a personal survey are no longer mistaken for restricted-plan users when the owner's team is hidden by row-level security, including in MCP entitlement checks. Publishing no longer sends the entire editor document through the browser request, collaborators with editor access can publish or push changes without owning the survey, and publish's MFA check now uses the authoritative survey access state instead of requiring the collaborator to read the owner's team row. Duplicating a shared survey now creates the copy in the caller's own personal workspace rather than trying to write into the owner's hidden personal team. Team privacy floors also apply when a direct collaborator exports without exposing the owner's team row. Editors can also update the survey's OSF link, lock state, and replication-package timestamp, and shared-workspace editors can leave review comments. Read-only commenter and translator roles no longer pass editor-only checks.

Fix

Survey titles keep special characters

New and renamed surveys now preserve punctuation and special characters such as question marks and quotation marks. New-survey titles are saved before the editor opens instead of being carried in its URL. A leftover create-link query that used to re-apply the original title on every reload (so renames looked saved until refresh) is stripped after the first open. Collaborator renames also fail visibly when a write does not land, instead of keeping a title that disappears on reload. Reloading the editor now keeps the title at its settled width instead of briefly showing a large text field that shrinks after loading.

Fix

Large survey imports no longer fail

Importing a survey file larger than about 4.5 MB — typically a Domandata JSON export with embedded images, or a large Qualtrics .qsf, Word, or PDF file — failed with a server error. Imports now upload the file securely before processing it, so the advertised limits apply: up to 20 MB for survey files (.json, .qsf, .domandata) and 15 MB for documents. A file over those limits now gets a clear "too large" message instead of an error page.

Fix

Collaboration warnings reflect active editors

Conflict warnings now appear only when another editor is actively present in the survey, so invitations and past access no longer create false warnings while you work alone.

Fix

Classroom access follows the active roster

Students removed from a classroom, or whose classroom has been archived, can no longer open, edit, comment on, or translate a survey through an older direct collaborator invitation. Classroom professors and teaching assistants keep their classroom access, while active student collaborators continue to follow their assigned survey role.

Improvement

Flow values are easier to manage

Flow now separates branches, values, permutations, and fielding controls into clear sections. Adding a value offers plain-language choices and one searchable source picker for questions, existing values, survey metadata, panel fields, quota state, and URL parameters. Combined sources appear as compact removable chips, cards explain their recipe in plain language, advanced recode controls stay tucked away until needed, and new values receive unique source-aware names. Value cards show readiness plus what they are built from and used by, while linked branches can be reviewed, synced, or safely unlinked without losing their canvas paths. Highest Value Count treats comma-delimited values from a combined source as separate counts and returns one branchable value rather than an interaction. Nested combined values resolve in dependency order, ties preserve first-observed order, and invalid cycles or non-scalar count/script values are rejected before they can silently produce empty results. Deterministic Python rules now run against their source answer in live routing and Preview, and recoded and copied values use the same labels for option discovery and runtime matching, including direct custom recodes used inside a Highest Value Count. Runtime recodes now feed dependent combined values before branching, including in Preview, and failed recode requests cannot leave stale values routing a respondent. Live routing also preserves balanced random-value settings. Linked branches are marked when a finite source pool disappears as well as when it changes. Survey Preview shows live resolved Flow values in a side panel to the right of the survey without narrowing the respondent view; it updates as answers and recodes change, with blue/green status dots and hover explanations for waiting, empty, resolved, and error states. Page View also reflects a new answer immediately while question scripts are still resolving, so a slow or failed script cannot leave the panel showing an old value. A summary calls out values that need attention, and any value can be duplicated with a fresh name for quick reuse. Python and R recodes now execute the same documented return, final-expression, and source-rewrite styles in live links and Silicon Sample, and their outputs remain addressable by both value ID and name for dependent values.

Fix

Question JavaScript no longer times out on slow devices

Custom question JavaScript has a quarter-second budget per run. Starting the isolated sandbox it runs in used to count against that budget, so on a slow phone or a busy computer a short script could time out and its values were silently not applied. The budget now starts once the sandbox is ready, and a sandbox that fails to start still stops safely.

October 5, 2026

1.2.0

10.5281/zenodo.23179510

Fix

Changelog fits smaller screens

Long words in release notes now wrap on narrow screens, so the changelog no longer requires sideways scrolling on mobile.

New feature

Selective Adding variables

Flow Variables can now create a Selective Adding variable that totals answers across several questions or other Flow variables instead of building a multi-question interaction recode. Count mode tallies how often each answer value appears (including each option in a multi-select) and exports one column per value as name.value — for example var.tree and var.orange. Highest Count mode uses the same tally but stores the label with the highest count in one column, with an optional comma-separated tie-break order in Flow, and exposes those finite labels as discrete branch values when you branch on the variable. Sum mode adds numeric answers from the sources into one total. You can include as many sources as you need. Available in the editor and through the Domandata MCP.

New feature

Add Content on survey end screens

End of Survey blocks can now include Content — text, images, video, YouTube, or an embedded page — for debriefing materials and final instructions after a respondent finishes. Add Content from Block Builder on any end screen; answer-collecting question types stay unavailable there because the response is already submitted. Content appears after the closing text in Preview and the live survey. If the end screen redirects automatically, Content is hidden the same way closing text is. Also available through the Domandata MCP.

Fix

End-screen closing text is shown when redirect is not automatic

An End of Survey block with a redirect URL but Redirect automatically turned off still shows closing text and Content, plus a Continue link. Block Builder no longer dims those fields or labels them as hidden in that case — only automatic redirects skip them.

Fix

Blank question text is no longer shown to respondents

Leaving question text empty — common for content blocks that are only an image, video, or other media — no longer shows “Untitled question” in the live survey, Preview, or frozen snapshots. The text area is simply omitted.

Fix

Surveys shared with you are easier to find and open

Opening a link to a survey or panel that lives in a different workspace from the one you have selected — such as a survey shared with you while you're working in a team or Lab workspace — sent you to that workspace's dashboard, where it isn't listed (or, for a panel, opened it in the wrong workspace, where edits didn't save). Links, including those in notifications, now switch to the right workspace and open on the tab they point to, and a notification that you were added to a team switches you to that team. Surveys shared directly with you are listed in your personal workspace. Also, if you had more than about a dozen surveys and belonged to a team, your personal dashboard could stop loading partway through the list, so a newly shared survey never appeared there, even when you scrolled or searched. The dashboard now loads your full list and opens with your most recently updated surveys.

Fix

Typing question text no longer lags

Typing in a question's text in Block Builder made the whole question, including its answer list, redraw on nearly every keystroke, which made typing feel sluggish, especially on questions with many answers. Only the text you're editing updates while you type now; the change is saved as soon as you pause or click away.

Improvement

Shift-click to select a range of follow-up trigger answers

When choosing which answers reveal a follow-up question, click one answer, then Shift-click another to switch on (or off) every answer in between. It works for answer lists, ranked items, heatmap zones, Grid Matrix columns, and Card Sort cards.

Security

Security hardening and dependency updates

Updated Next.js, the framework Domandata runs on, to fix a critical flaw in how it generates link-preview images (the picture shown when a Domandata page is shared on social media or in chat). Also updated several supporting libraries with published security fixes, tightened request-size limits for public survey progress, Canvas, sandbox, and MCP requests, verified the signed-in account again before MCP authorization, prevented imported brand pages and push-notification endpoints from changing to a private network address after validation, and limited how much data an audio provider can return. Valid survey, Canvas, MCP, notification, theme-import, and audio workflows are unchanged; malformed, oversized, or network-rebinding requests are refused earlier.

Fix

Vercel capacity monitoring is reliable again

The weekly Vercel capacity check now adapts when Vercel switches the supported way to total function invocations, instead of reporting that the check could not run. Incomplete measurements are no longer mistaken for zero usage. Existing warning levels are preserved, and genuine usage warnings remain distinct from a failed check.

Improvement

Choose whether respondents see an asterisk on required questions

Deploy → Structure has a new Mark Required Questions With an Asterisk setting. It is off by default, so required questions no longer show an asterisk to respondents unless you turn it on, including in surveys that are already live. Respondents still can't skip a required question, and screen readers still announce it as required. The setting also controls the asterisk in Preview, the theme preview, frozen snapshots, and the MCP survey preview. That MCP preview previously marked every question with an asterisk, optional ones included. You can also turn the setting on for every new survey in Settings → Advanced → New Default Survey. It replaces the old setting that added asterisks to text copied with right-click Copy as Text.

New feature

Choose whether participants can resume later

Interrupted checks of an earlier attempt are retried, and an already auto-submitted attempt cannot report later answers as successfully saved. Deploy → Data & Privacy has a new setting for what happens to a participant's answers when they leave before finishing. Keep Answers on Reload Only is the existing behavior: answers survive a refresh and clear when the tab closes. Let Them Resume Later saves answers in the participant's browser for up to 30 days, so reopening the survey link picks up where they left off. Start Over Every Time saves nothing, so a refresh or return visit begins from the first page. A participant whose response was already auto-submitted starts a new one instead of resuming the submitted copy, and a response in the middle of being submitted is never discarded — a refresh during submission finishes sending it. Also available through the Domandata MCP.

Fix

Refreshing no longer auto-submits an unfinished response

With Submit when the participant closes the tab turned on, refreshing the survey page was treated as closing it: the partial answers were submitted, and the participant's eventual complete response was then not saved. A refresh now keeps the response going, and closing the tab while a response is being submitted no longer replaces it with the partial copy.

New feature

Choose what a survey link shows after its close date

A survey with a close date in Deploy → Data & Privacy can now show your own closed message, or send people to another page (with link values like a Prolific ID passed along), when they open the link after it closes. Choose how long that lasts — from 1 week up to 1 year — after which the link is fully retired and shows a not-found page. Publishing the survey again reopens it. Also available through the Domandata MCP.

New feature

Export all your data in one click

Response backups retain captured recruitment IDs and separate loop rounds. Settings → Account now has Export Your Data, which downloads everything in your account as a single .zip file on any plan, including free accounts. Every survey you created gets its own folder containing the full survey as a file you can import back into Domandata, all of its responses as CSV, and a codebook. The download also includes your profile, settings, workspaces, Library, macros, themes, comments, notifications, community activity, and account activity log. A README explains each file and lists anything that couldn't be included. Passwords, API keys, and saved credentials are never exported. Large accounts export in the background, so you can leave the page and come back, and the download stays available for 48 hours. The Delete Account dialog now links here, so you can back everything up first.

New feature

ChatGPT can react to fieldwork and comments

Milestone and quota watches use the count at each submission, so simultaneous responses do not skip a threshold. When Domandata is connected to ChatGPT, you can ask ChatGPT to watch a survey and act when something happens, instead of checking back yourself: when a quota is nearly full or fills, when a respondent completes the survey (or every 50th complete, or any milestone you choose), when a new response trips a data-quality check such as speeding, straightlining, or a failed attention check, and when a collaborator leaves a comment on a question or block, so ChatGPT can apply the requested edit and reply. Notifications carry counts, IDs, and quality flag names, never respondents' answers; ChatGPT reads the actual responses only through the usual tools, and only if you have allowed that connection to access survey responses in Settings → AI. Response-level notifications need that same permission, and every notification stops as soon as you revoke the connection or lose access to the survey. Watches last up to a day at a time, and ChatGPT renews them while it is still watching.

New feature

Fieldwork notifications: milestones, quality flags, and quota warnings

Milestones, first responses, and quota warnings remain accurate during bursts of simultaneous submissions. You can now be notified, in the notification bell and by push or email, about the same fieldwork events an AI assistant can watch: every N completes (every 50 by default), a new response tripping a data-quality check such as speeding, a failed attention check, or a bot score (off by default; choose critical flags only or warnings too), and a quota nearly full (90% of its target by default, or any level from 50% to 99%), alongside the existing first-response and quota-reached alerts. Set them for all your surveys in Settings → Notifications, or for one survey in Deploy → My Notifications, where you can turn each event on or off, pick its channels, and set its own threshold; collaborators can use the same card to follow a survey they don't own. AI assistants can read and change these settings for you. Also fixed: quota-reached alerts never fired for quotas built from rules (only for older branch-arm quotas), counted preview test runs, and ignored Count completes only; they now follow the quota's own count and fire again if you raise its target.

Improvement

Offline editor extension 1.2.0

Offline block reordering also survives unrelated collaborator edits during synchronization. The offline editor now merges your offline changes with a collaborator's the same way the editor does live: edits to different parts of a question or flow both survive, and when you both changed the same field your offline edit wins. Questions and blocks deleted offline stay deleted, moved questions land once in their new block, and long offline sessions no longer lose edits past the first 200 changes. Signing out now clears the surveys the extension keeps for offline use, and unused copies expire on their own.

New feature

One-click recruitment integrations

Participant safeguards are enforced when saving responses, and Prolific clean approvals exclude partial responses or missing completion details and are checked again before payment. A new Recruitment card in Deploy connects a survey to Prolific, CloudResearch Connect, CloudResearch Prime Panels, Cint, SONA Systems, YouGov, Rep Data, or any other redirect-based panel in one step. Pick the provider, enter what it asks for (a Prolific completion code — or just paste Prolific's completion URL — SONA's credit URL, or nothing at all for Prime Panels), and Domandata builds the study link with the provider's placeholders, sets up Complete, Screened Out, Over Quota, and Quality Terminate end screens that send respondents back automatically, sends quotas that end the survey to the over-quota screen instead of the paid completion, and switches quotas to a new Count Completes Only setting so screen-outs no longer fill them. Route screener answers and failed attention checks to their screens from the card — Domandata suggests your likely screener and can reuse the attention checks in your quality rules; every response records its outcome, shown in the response table and exported as a Recruitment Outcome column alongside one column per captured link parameter (such as PROLIFIC_PID), which exports previously left out. A test link walks each outcome and shows where a participant would be sent instead of contacting the provider; test runs are labeled, never count toward quotas, and can be deleted in one click from the Recruitment card or the Published card. Setup problems (a hand-edited redirect, a quota that would pay over-quota respondents) are flagged in the card and in Instrument Review, connected end screens are labeled in Block Builder and Flow, and Cint studies using Verify Callback are supported. Optional safeguards: one response per participant ID across devices, and turning away visitors without a participant ID. With a Prolific API token, Domandata can also create the Prolific study as an unpublished draft with everything filled in (it can fill the title, length, and places from your survey), then match submissions to responses and approve the clean ones in bulk (it never rejects on your behalf). When a survey-wide quota closes the survey, panel respondents are now sent back with an over-quota status instead of stopping at a closed page, and participant IDs inserted into a redirect are now URL-encoded; a redirect whose {{parameter}} has no value no longer fires with the placeholder left in. Everything is also available through the Domandata MCP.

Improvement

Date pickers match Domandata's look

Assignment due times retain minute-level entry alongside the convenient time menu. Choosing the date a survey stops collecting responses, semester start and end dates, and assignment due dates used your browser's built-in calendar, which looked different on every system and ignored your light or dark theme. They now open a Domandata calendar that follows your theme and works fully from the keyboard, and due dates use a simple time menu.

New feature

Choose accepted file types for File Upload questions

File Upload questions have a new Accepted file types setting, so you can limit a question to, say, PDFs only for a signed consent form, or images only for a screenshot. Choose from presets (Documents, Spreadsheets & Data, Images), switch individual types on and off, or type a comma-separated list of extensions like "pdf, docx, png" — all three views edit the same list. All supported types are allowed by default. Respondents' file picker only offers the chosen types and lists them under the upload button, and files of any other type are refused when the response is submitted. The setting is included in the codebook and can also be set through the Domandata MCP.

Fix

Status page loads right away

The Uptime & System Status page took around nine seconds to appear, because nothing on it showed until the latest uptime data arrived. The page now appears immediately and the service status fills in a moment later. Uptime data is reused for up to a minute instead of being fetched again for every visitor, and if the monitoring service is slow to answer, the page says status is unavailable after a few seconds instead of waiting.

New feature

Column-by-column privacy for exports

Raw JSON applies privacy choices to recruitment identifiers and looped answers too. Saved broadening rules stay protective as new responses arrive; incompatible values are withheld rather than exposed. Export privacy now starts with one question — who is this file for: just you, your research team, reviewers or collaborators, or the public — and shows the result as a single line, like "For the public · 10 columns removed". Review it to change any column the file contains, including flow variables such as panel IDs from the survey link, browser details, completion time, and reviewer notes, each with a plain reason it's flagged ("Asks for an email address"). Columns can be kept, broadened (age or income as ranges, dates as month or year, ZIP codes to 3 digits, rare answers grouped as "Other"), redacted, turned into coded IDs that still link the same respondent across your team's exports and waves, masked, or dropped entirely. "Show as exported" previews the file in the response table, downloads meant for someone else ask before including columns that identify people, and a risk check reports how many respondents would still be unique on their demographic answers. Each question has a new Personal Info setting in Block Builder so you can mark what identifies someone yourself, and Instrument Review points out identifying-looking questions that aren't marked. The same privacy panel is used in the Export tab, GitHub Sync, and OSF, Harvard Dataverse, and Zenodo deposits; each survey remembers its choices, replication package READMEs list every change along with the risk check, and you can set where each place starts in Workspace Settings. Team owners can set a minimum privacy level per place that members can make stricter but never looser; the API, the Domandata MCP, and GitHub Sync enforce it on every export. The Domandata MCP supports the same choices.

Security

Security log now records passkey and GitHub Sync events

Adding or removing a passkey, connecting or disconnecting GitHub, and creating or disconnecting a GitHub Sync repository were supposed to appear in your account's security audit trail, but those entries were being silently discarded. They are now recorded like every other sign-in and account-security event.

September 24, 2026

1.1.0

10.5281/zenodo.22945744

New feature

Alt text for images

Images in content blocks and heatmap questions now have an Alt text field, read aloud to respondents who use screen readers. It is translated along with the rest of the survey. Content-block images can instead be marked decorative so screen readers skip them. Images without either used to be announced by their file name (like "IMG_2381.jpg"); now they are announced as "Image", and Instrument Review points them out so you can add a description. Alt text can also be set through the Domandata MCP.

Improvement

Keyboard and screen-reader improvements for respondents

Buttons, including Next, Back, and Submit, now show a visible outline when reached with the keyboard. Sliders are announced by their question instead of just "Slider". Answer options that use bold, italics, or links no longer have the formatting code read aloud. The chat box in Text Chat questions and icon-only buttons across the editor now have spoken names. Two heatmap questions on one page no longer mix up each other's screen-reader updates. Error messages on multiple-choice, dropdown, and constant-sum questions are now linked to the question, so screen readers read them with it. In tree testing, focus moves to the new level after choosing Explore, and each "I'd look here" button says which category it's for. In card sort, each category now has a "Place here" button for keyboard users, and a card and its drag handle are no longer nested controls. In conjoint tables, each alternative is picked with a real button, so screen readers keep the column headers for the attribute rows. Adding or removing a highlight in a text highlighter question no longer moves a half-typed comment to a different highlight. Survey pages now have a proper main heading and page landmark, focus moves to the first question when a respondent goes to the next page, and timed surveys warn screen-reader users when 1 minute and then 20 seconds remain. If a survey page hits an unexpected error, respondents now see a plain "try again" page instead of being pointed to Domandata's homepage.

Fix

Silicon Sample and replication package pick up the right data

In Silicon Sample, switching quickly between source surveys or panels could leave the questions, responses, or panel columns from the previous choice on screen and selected. In the replication package dialog, switching to an instrument-only deposit while responses were still loading could pull those responses back into the package. Both now always reflect your latest choice.

Fix

Long open-text answers no longer flagged as gibberish

The Gibberish Text quality flag marked almost any open-text answer longer than a couple of sentences as "uses very few distinct characters for its length", even ordinary writing. It now only flags text that really is built from a handful of characters. Quality flags that fell back to a question's internal ID when it had no custom name now use its export column label (like "Ask4") instead, matching your CSV.

Security

AI provider errors no longer shown to respondents

When the AI service behind a Text Chat or Audio Conversation question failed, respondents could see that service's raw error message, which can include part of the survey's API key or account usage details. Respondents now see a short explanation instead: a credentials problem, a busy or over-limit service, a timeout, or a general failure. That's still enough for you to tell what went wrong while previewing.

Fix

Audio recording and field-interview GPS work on live surveys

Respondents couldn't record answers to audio-response or Audio Conversation questions: the browser blocked the microphone on every survey page. Field-interview mode's location check also came back empty on every response for the same reason. Both now work. The embed snippet on the Deploy tab now allows the microphone inside the frame and gives the frame an accessible name for screen-reader users. If you already embedded a survey that uses audio questions, copy the snippet again.

Improvement

Privacy protections for respondents in Europe

Google Fonts chosen for a survey theme are now served from Domandata's own servers, so respondents' browsers no longer contact Google just to load the survey's typeface. Respondents in the EU, EEA, UK, and Switzerland now see a short privacy notice when a survey uses reCAPTCHA or VPN/proxy detection, explaining what is sent to the outside service, with links to the relevant privacy policies. Also fixed: turning on VPN/proxy detection didn't stay on after the survey was reloaded, so submissions weren't actually being checked.

New feature

Workspace invite links, join requests, and turning a workspace into a Lab

Team leaders can share one invite link to their workspace: copy it, email it to up to 20 people at once, and reset or turn it off at any time. Members who open the link go straight to the workspace. People without an account create one, now including their display name so there's no separate setup step, and come straight back to the link after confirming their email. Everyone else sends a join request: every leader is emailed right away and notified in the app, the person sees that the request is pending, and they're emailed the moment a leader approves. Leaders can also let anyone with a verified email on their institution's domain join without approval. Leaders of a shared team workspace can turn it into a Lab from the workspace switcher, the Upgrade tab, or Team Workspace settings. The purchase form is prefilled with the current members, can include open seats for people who'll join later with the link, and can remove members who aren't given a seat. The workspace keeps its surveys and settings. A Lab's invite link, join requests, and open-seat counts all live on Lab Admin, and approving a request assigns one of those seats. Signing up from any invite link now returns you to that invite instead of your surveys.

Fix

Live surveys now honor every question setting

Several settings worked in Preview but were dropped from the version respondents actually took: Skip Rules, anchored answer options, mouse tracking, required link clicks, per-row slider labels in grids, paste blocking and the model-decided ending in Text Chat, and Audio LLM's typed-reply option. Required Dropdown and Slider questions, and full-ranking Drag to Order questions, can no longer be skipped. A required audio question with a typed alternative now accepts the typed answer. Five recode maps (grid rows, Constant Sum, MaxDiff, and Card Sort cards and categories) and four follow-up condition kinds (slider range, grid cells, card placement, points range) no longer reset when a survey is reopened. Card Sort category anchors now take effect, and respondent-named Card Sort categories are no longer stored unencrypted. When a question pulls in earlier answers, its None/All of the above, anchors, and item costs stay attached to the right options.

New feature

Question types work the same way across the board

Quotas, Skip Rules, branching, and flow variables can now use answers from Constant Sum, MaxDiff, Card Sort, Tree Test, Reaction Time, Text Highlighter, file, signature, and audio questions, and zoned heatmaps, with a picker of the values each one can take. New follow-up conditions: Drag to Order "ranked in the top/bottom N", MaxDiff "picked as best/worst", Tree Test task success or failure, Text Highlighter tags used, and Conjoint chosen profile. MaxDiff and Slider get built-in attention checks like Grid and Conjoint. Text Chat can record typing timing, and every typed side field (Other text, custom categories, highlight notes, audio typed answers) gets a character limit plus paste controls, and now feeds the gibberish and duplicate-text quality checks. Heatmaps support mouse tracking and export a 0/1 column per zone; multi-category card sorts export per-category columns. Also new: a minimum time on page for Informational blocks, a typed-signature alternative, a touch fallback for keypress Reaction Time trials on phones, keyboard-operable Card Sort, a color and start position for sliders everywhere, endpoint labels for Constant Sum sliders, Instructions for Drag to Order, Constant Sum, and MaxDiff, a Flip order for Conjoint columns and Card Sort, anchored Conjoint attributes, random subsets for Card Sort cards and Constant Sum items, selection limits for Dropdown multi-select and multi-select grid rows, response-table previews for signatures and uploads, Silicon Sample answers for audio questions with a typed alternative, translation of attention-check and screening text, and new Instrument Review checks for impossible limits and for signature and upload questions. All of it is available through the MCP.

New feature

Codebooks can use your survey's custom theme

A new Apply custom theme switch in Export → Codebook styles PDF and Word codebooks with the survey's custom theme: its accent color for the title, rules, and table headers, its text colors, its font, and its logo. Pages stay white and colors too light to read on paper fall back to black, so themed codebooks still print cleanly. The setting is saved with the survey, is off by default, and can also be set through the MCP.

Fix

Custom themes: real dark mode, square corners everywhere, and reliable logo colors

Custom themes previously kept the same colors in dark mode unless they came from a website brand import, so "Use dark mode" and participants' dark-mode devices changed almost nothing. Deploy → Theme now has a Separate dark mode colors switch that creates an editable dark palette (starting from a draft based on your light colors), with Light Colors / Dark Colors tabs to edit each palette while the preview follows along. Locking a custom theme to dark mode creates a dark palette automatically. The page background and browser tab color now match the active palette, buttons and progress bars use the dark palette's accent, and button text switches to dark ink when the accent is light enough to need it. Field sessions follow the same palette, including the interviewer's start, between-respondent, and summary screens. The MCP can set, derive, or remove a dark palette the same way. Square Corners now applies everywhere a survey is shown — Preview, the Deploy theme preview, frozen previews, field sessions, and the live survey from its first paint — including dropdown menus, slider handles, and other small controls that stayed rounded before; survey dropdown menus also now use the survey's colors and font instead of the app's. Logos are no longer clipped into rounded corners, which left odd notches around logos with their own background. Extracting colors from a logo now reliably picks the brand color as the accent (an off-white edge of a white logo could previously win), returns the logo's exact hex values, and gives a monochrome logo a matching accent instead of a stray gray. Upload Font now takes a single .ttf or .otf file instead of asking you to split Regular, Bold, Italic, and Bold Italic faces yourself. Separate Title Font lets you pick a different typeface for the survey name, block headings, and question titles while answers and buttons keep the body font, including through the MCP.

New feature

Follow-up questions: match any or all conditions, or at least N answers

A follow-up's "Show when" condition now has a Match toggle once it lists two or more answers, text rules, grid rows, cards, point ranges, or ranked items. Any (OR) is still the default and shows the follow-up when one condition matches; All (AND) shows it only when every condition matches. For a parent that allows several answers, such as a multi-select Multiple Choice question, Any also lets you set a minimum — for example, show the follow-up only to respondents who picked at least 2 of the selected answers. Preview, the live survey, and the MCP all use the same rule.

New feature

Pull in answers: multiple sources, more question types, placed and anchored among your own options

A question can now pull in answers from more than one earlier question, each with its own choice of which answers to bring in. Besides Multiple Choice and Dropdown, a source can be a Drag to Order question (the ranked items, or just the top few; or the unranked items), a Constant Sum question (the items given points, or the ones given none), or a Card Sort question (the cards placed in a chosen category, or the rest). Grid Matrix questions can now take pulled answers as rows, and Card Sort questions can take them as categories as well as cards. Exports give such a question one column for every answer anyone could have pulled, so each respondent's answers line up under the right column. Previously, Constant Sum and Card Sort questions that pulled items could export values under the wrong columns, and a Constant Sum answer over pulled items could be rejected when the respondent submitted it. Answers already in the list, or already pulled in by another source, aren't repeated. In the Block Builder, each source appears as one row in the answer list: drag it above or below your own options, and anchor it so the pulled-in answers stay together in that spot when options are shuffled (for example, to keep "None of these" below them). You can also delete all of your own options so the question shows only the pulled-in answers. A respondent with nothing to pull in, for example because they skipped the source question, skips the question instead of seeing an empty one. That also applies in Preview and Silicon Sample. Drag to Order's minimum and maximum ranked are capped at the number of items each respondent actually sees, not just the items you wrote. The MCP's question-editing tool supports all of this (sources, positions, anchoring, top-ranked limits, card categories, and pulling into Card Sort categories) and reports it back when reading a question.

New feature

Lab Plan: automatic volume discount, and per-seat pricing shown up front

Buying 15 or more seats in one Lab Plan purchase (Standard and Pro combined) now applies a 75% discount automatically, no promo code needed. It doesn't stack with a promo code — whichever discount is larger applies. Per-seat Lab Plan pricing and the volume-discount threshold are now shown on the public pricing page and the Settings → Upgrade Lab Plan card itself, not just inside the purchase dialog.

Fix

Lab Plan: claiming a seat now reliably admits you to the lab's workspace

Claiming a paid Lab seat — by verifying an account whose email matches an open seat, or a lab admin assigning one to a verified secondary email — now always adds that account to the lab's shared workspace in the same step, instead of the two occasionally drifting apart. Billing authority for a lab now stays with whoever purchased it rather than following team-role changes, and seat provisioning during checkout is atomic: a failure partway through no longer leaves a lab with a charged seat and no matching membership.

New feature

Constant Sum: slider input, weighted/variable-cost items, and quality/review checks

Constant Sum (budget/points allocation) questions can now use a slider per item instead of a numeric field, with an author choice of what happens when a drag would push the total over budget: Clamp stops the handle at whatever value keeps the total exactly at budget, or Auto-Balance honors the dragged value and pulls the difference back out of the other items proportional to their own headroom (Qualtrics and Sawtooth ship one behavior each; no published research says either is better, so this is an author choice, not a default we're pushing). Items can also now carry their own cost per unit, so the configured budget caps total spend rather than the raw unit count — supports a task like "allocate your $100 across these products" where each product has a different price. Response quality now flags a completed-looking allocation that lands off the configured budget, an allocation split exactly evenly across every item or dumped entirely on one item (both at reduced, informational severity — an even split can reflect genuine indifference, not just inattention), and an allocation completed implausibly fast for its item count. Instrument Review gained two checks: an authored minimum or maximum per item that makes the budget mathematically unreachable, and a nudge when the item list runs long enough that dividing a budget across it gets meaningfully harder. All of the above is available from the MCP's question-editing tool as well as the options panel.

New feature

Text Chat: model-decided conversation ending, an engagement quality flag, and review checks

Text Chat questions can now end the interview themselves instead of always running a fixed number of messages — a new "Conversation ends" setting lets the model decide when it has covered enough ground, bounded by min turns as a floor it can't end before and max turns as a hard safety cap either way. Response quality now flags a transcript made up mostly of very short (three words or fewer) participant replies. Instrument Review gained three Text Chat checks: a system prompt too thin to function as a real interview guide, min and max turns set equal (leaving no room for a shorter conversation), and max turns set well past the point AI-moderated chat interviews are generally thought to hit a fatigue cliff. Each assistant reply in the transcript now also records which model produced it, so a later review can tell whether the configured model changed mid-study. Text Chat now requires Standard plan or above, matching Audio Conversation. All of this is available from the MCP's question-editing tool as well as the options panel.

New feature

Audio Conversation: a typed-reply accessibility alternative, audio quality flags, and review checks

Audio Conversation questions can now offer a typed-reply alternative per turn — a low-key "type instead" control, the same accessibility pattern Audio Response already has, for a respondent who can't provide a spoken turn. Response quality now flags a conversation with a turn too quiet to contain an audible reply, or a turn whose recording exactly matches one used elsewhere — the same audio-quality signals Audio Response already had, now applied to each turn of a conversation. Instrument Review gained four Audio Conversation checks: a system prompt too thin to function as a real interview guide, min and max turns set equal, max turns set past the point voice interviews are generally thought to hit a fatigue cliff (a lower threshold than Text Chat's, since a spoken turn costs more respondent effort per exchange), and a required question with no typed-reply alternative. The reply delay setting, previously only reachable through the MCP, now has an options-panel control too. All of this is available from the MCP's question-editing tool as well as the options panel.

Fix

MCP: Text Chat's question-editing schema no longer accepts fields it silently ignored

Text Chat's patch schema on the MCP previously accepted paste_tracking, link_tracking_names, link_click_timing_enabled, and required_link_clicks — none of which exist on Text Chat, and none of which were ever applied. An MCP client that set them saw no error and no effect. Removed from the schema, so setting one now returns a clear validation error instead of a silent no-op.

New feature

Reaction Time: blocks, practice trials, error feedback, quality checks, and category/block exports

Reaction Time responses are now covered by automatic quality checks for the first time: a trial answered in under 150ms is flagged as speeding — too fast to reflect genuine stimulus processing. Instrument Review now nudges when a question uses 2 or more analysis categories but one has too few trials for a reliable comparison. Trials can now be marked as practice (still shown and timed, but excluded from that check and from every summary statistic) and grouped into optional named blocks — for example, an IAT-style pairing block — with an option to counterbalance block order across respondents, the standard way IAT-style designs control for order effects. A new error-feedback option flashes an incorrect indicator on a wrong response (optionally requiring the correct response before continuing), matching the classic IAT feedback loop. Export gained per-category and per-block mean-RT/accuracy columns; Domandata reports each block's own raw figures rather than a combined D-score. Trial images are now preloaded ahead of the timed stimulus phase so decode time doesn't add noise to the measurement. Silicon Sample now explicitly lists Reaction Time as a type it can't answer on an author's behalf, the same as file uploads and signatures, instead of silently leaving the column blank. All of this is reflected in MCP-based authoring and the help article, which also now covers browser-timing-vs-lab-software caveats and the live methodological debate around IAT validity.

New feature

Text Highlighter: quality flags, an ambiguous-tags nudge, an optional rationale field, and accessibility improvements

Text Highlighter responses are now covered by automatic quality checks for the first time: a single highlight covering almost the entire passage, and using only one tag across several highlights despite more being on offer. Instrument Review now nudges when a question offers multiple tags with no instructions explaining what distinguishes them, and separately flags an unusually long passage as a soft, non-validated fatigue heuristic — there's no dedicated study on fatigue in highlighting tasks specifically. A new opt-in "Ask why for each highlight" setting lets a respondent attach a short free-text rationale to each highlight, matching the per-highlight comment field offered by other highlighting tools; it's reflected in export and the MCP's response-schema lookup. The passage now also lists every current highlight underneath it as its own always-visible list (tag, text, and the rationale field when enabled), giving respondents using a screen reader a way to review and remove their highlights beyond tabbing through the passage span by span. Also fixed: the MCP's question-editing tool previously rejected instructions, allow_overlapping_tags, min_highlight_length, and max_highlight_length on a Text Highlighter patch even though the app's own options panel already supported all four.

New feature

Ranking: ties, partial ranking, a non-drag accessible control, and quality/review checks

Ranking (drag_to_order) questions can now allow ties — a tie icon next to each item lets a respondent mark it as equally important as the one above it, with shared rank numbers in the display and export (research on tied ranks found most respondents use a tie option when offered one and prefer it over a strictly forced order). A new "Allow partial ranking" option splits the task into a Your Ranking / Not Ranked pair of lists with an optional minimum/maximum count, so respondents rank only the items they have an opinion on instead of every item. Every ranking question now also shows tap-only up/down move buttons next to the drag handle, for respondents who can't perform a drag gesture — a keyboard shortcut alone isn't sufficient for a touchscreen user with no keyboard. Response quality now automatically flags a ranking left in its exact displayed order and a ranking completed implausibly fast for its item count; Instrument Review nudges when an item list runs long enough that reliability toward the middle of the ranking may suffer. All of the above is available from the MCP's question-editing tool as well as the options panel.

New feature

Heatmap: minimum required clicks, click timing, keyboard support, and quality/review checks

A multi-click Heatmap question can now require a minimum number of markers, not just cap a maximum, from the question's options panel or the MCP. Each click now records how long after the image appeared it was placed, unlocking two new automatic quality flags: a first click placed implausibly fast to have located a spot on the image, and every marker on a multi-click question landing at nearly the same point. Respondents can now complete a Heatmap question with a keyboard alone — arrow keys move a visible crosshair and Enter/Space places a marker — instead of a keyboard "click" silently recording the image's top-left corner. Instrument Review gained two Heatmap-specific checks: an author-defined trigger zone small enough to risk missed taps on a touchscreen, and instructions text left as the literal single-click default on a question configured for more than one click. Also fixed: the exported answer's documented raw shape (used by the MCP's response-schema lookup) previously described a bare array of points; it's actually an object of the form { clicks: [...] }.

New feature

New question type: Tree Testing

A new Tree Testing question type asks respondents to navigate a fixed, author-defined category hierarchy to find where they'd expect an item to live — the standard complementary method to Card Sort in information-architecture research: a card sort discovers a candidate structure, a tree test validates one. Respondents can confirm any level (not just a leaf) as their answer, or give up when enabled; task order randomizes per respondent by default. Export includes per-task success, directness, duration, and first-click destination, plus survey-wide summaries: success rate, directness rate, mean duration, and the direct/indirect breakdowns of both success and give-up that Optimal Workshop's Treejack also reports. Now covered by its own automatic quality checks (a task answered implausibly fast for the tree's depth; confirming the same destination, or an unexplored top-level category, on every task) and two Instrument Review nudges (a task count past the point tree-testing guidance treats as a fatigue risk, and a task whose own wording names its correct destination's exact label). Requires Standard plan or above and beta tester access — it's in beta, marked with a violet "Beta" badge everywhere it appears in the editor — and is fully supported in translations, MCP-based authoring (including its own methodology-guide section), and Silicon Sample.

New feature

Card Sort: quality flags, card-count guidance, MCP parity, and a co-occurrence export

Card Sort responses are now covered by automatic quality checks for the first time: a degenerate sort (every card in one category, or a new category per card), cards left unsorted on a required question, and a category exceeding its configured minimum/maximum. A card sort completed implausibly fast for its card count is now flagged as speeding. Instrument Review now nudges when a card set exceeds roughly 50 cards, the range card-sorting research treats as a fatigue risk. The MCP's question-editing tool can now set category display order, multi-category placement, exclusive/forced-inclusive categories, and locked/anchored indices directly, without a separate call. Export gained a "Card Sort Co-occurrence (JSON)" download — a card-by-card co-occurrence count matrix, the standard input to similarity-matrix and cluster analysis in your own stats package (Domandata doesn't compute the clustering itself).

New feature

Grid Matrix: attention-check row, per-row endpoint labels, and column shading

Grid Matrix questions can now designate one statement row as an instructed-response attention check ("please select Strongly Agree for this item"), flagging anyone who picks something else as a failed attention/manipulation check; that row is excluded from straightlining detection. Slider grids can override the shared endpoint labels on a per-row basis, so a semantic-differential-style grid can give each statement its own opposite-adjective pair (e.g. "Weak / Strong" on one row, "Cold / Hot" on another) instead of one label pair for the whole grid. Columns can now get alternating zebra shading (desktop table only), matching the existing row-shading option, and rows can optionally highlight once answered.

Fix

Grid Matrix: "Break up block after every N rows" now actually splits the grid

This setting previously had no effect on what respondents saw — the grid always rendered as one unbroken table or row-by-row stack regardless of the toggle. It now genuinely splits a long grid into sections of the configured size, either as real separate survey pages or, with page breaks turned off (and in the editor Preview), as separate smaller grids with their own column headers on one page.

Improvement

Instrument Review: long-grid nudge, cross-question scale consistency for grid columns, free-text validation gaps

Instrument Review now flags a Grid Matrix question with a long row list and no row-reducing mitigation (row splitting or row-subset randomization), citing the straightlining-prevention research behind that recommendation. The existing cross-question scale-consistency check (same option set in a different order, inconsistent capitalization, mixed scale lengths) now also covers grid columns, not just Multiple Choice and Dropdown — so a shared rating scale used as both a grid and a standalone question elsewhere in the survey is now checked for consistency too. Response quality also gained a new, more speculative straightlining-adjacent signal: a respondent whose answers stay clustered near the displayed column position of their first answered row across a long grid. Instrument Review also now recognizes when a Short Answer question is clearly asking for age, birth year, date of birth, a ZIP/postal code, a phone number, or an email address and has no matching data-validation rule turned on — so a free-text field like "What is your age?" doesn't silently accept any text, or accept an integer with no plausible minimum/maximum — with a one-click fix that turns on the right validation kind and, for age/birth year, a sensible range.

New feature

Verification certificates show deletions and distinct respondents

Every deleted response is now recorded in a log that no one on the survey team can edit, and verification certificates report how many respondent responses were deleted after the survey was locked to its preregistration. Certificates also report how many distinct network origins the responses came from, based on one-way hashes of IP addresses (the addresses themselves are never stored), so a reviewer can spot many responses coming from very few sources. Also fixed: your own test submissions from Preview or the live-draft link were counted toward the verified sample size; they're now listed separately and left out.

Fix

Long open-text answers no longer flagged as gibberish

The quality check for gibberish flagged most ordinary written answers longer than a couple of sentences, because normal writing reuses the same few dozen letters. It now only flags genuinely repetitive text. Quality flags also name each question by its export column (your custom name, or Ask1, Ask2, and so on) instead of an internal ID.

Fix

Preregistration links in the suggested format are accepted

The Deploy tab suggests entering a preregistration link like osf.io/ab3cd, but rejected that form unless it started with https://. Links without https:// are now accepted and saved in full.

New feature

Privacy controls for exported and shared data

Every place you take data out of Domandata now has the same set of privacy controls: Export downloads (CSV, Excel, SPSS, Stata, R), GitHub Sync, and replication packages for OSF, Harvard Dataverse, and Zenodo. You can leave out free-text and identifying answers entirely; redact email addresses, phone numbers, and similar text inside answers (only where a question didn't ask for it, or everywhere); also redact people's names, places, and organizations; replace chosen questions with "anonymized"; and hide rare combinations of answers (such as the only respondent of a certain age in a certain region) that could identify someone even with names removed. Replication packages can now also be downloaded as a .zip, with no repository account needed. The same options are available through the API and, for reading responses, through the Domandata MCP. Excluding identifying answers now also removes device details, external panel IDs, and other identifying metadata. Also fixed: Excel downloads from the Export tab ignored its response filters and included every response.

New feature

Bundle a GitHub Sync repo snapshot into replication package deposits

OSF, Harvard Dataverse, and Zenodo replication package deposits can now include a .tar.gz snapshot of a survey's connected GitHub Sync repo — the working tree at the default branch's tip, including any author-drafted analysis pipeline committed there as GitHub Sync starter files — as an extra file alongside the existing 14. Available from each deposit dialog's Advanced section, on by default when a repo is connected, so an analysis pipeline drafted in GitHub travels with the deposit instead of only living on GitHub.

Fix

MCP: Text Response validation_kind now accepts every real value

The MCP schema behind editing a Text Response question's validation kind previously only accepted a value ("numeric") that doesn't exist anywhere in the app — the real values are separately "integer" and "number" — and had no "date" entry at all, even though Date validation has been live in the app since September 8. Every attempt to set integer, number, or date validation on a Text Response question through the MCP failed validation before ever reaching the question. Fixed in both places this enum was duplicated. Date validation now uses its selected format as the default example, accepts other recognizable date formats and corrects them to the selected output, and can show a themed calendar picker; the MCP can set and read both the format and picker option.

New feature

Two new response-quality flags: Low Distinct-Word Count and No Typing Detected

A new automatic "Low Distinct-Word Count" flag catches a short, low-substance open-text answer that repeats only a handful of different words — a case the existing repeated-text check can miss when the answer is too short to trip its ratio threshold. Separately, a new opt-in "Track typing timing" setting on Text Response records keystroke count, typing duration, and longest pause, surfacing a "No Typing Detected" flag when a substantial answer arrived with zero recorded keystrokes. Both are intentionally informational-severity, not exclude-worthy on their own: legitimate dictation/voice-to-text input, and simply having little to say, can produce the same shape as low-effort or non-human answers.

Improvement

Text Response: configurable character counter, auto-resize, and correct multi-byte counting

Text Response's remaining-length counter can now be configured (in the question's options panel or via MCP) to appear at any percentage of the character/word/sentence limit, or to stay hidden until the respondent's first failed attempt to advance instead of showing proactively. The field can optionally grow to fit its content beyond its configured height instead of staying fixed. Character counting and limits now count what a respondent actually sees as one character (so an emoji or an accented/composed character counts as one, not several), and typing an accented or composed character via an input method editor (IME) no longer risks having it silently cut off at the character limit mid-composition.

New feature

Pipe what a participant saw in a Conjoint question

A new {{conjoint:...}} piped-text token lets a later question, a thank-you screen, or the conjoint question's own labels restate what a participant was shown or picked — the full profile, a single attribute value, a specific alternative by its on-screen position, or a Yes/No for whether it was answered. Works the moment the conjoint has rendered, even for a non-clickable single-profile vignette, and across every choice task when Number of tasks is more than 1. It renders as a real (non-clickable) table grid, styled the same as the survey itself.

New feature

Piped-text fallback values, and new checks for broken or out-of-order references

Any piped-text token — {{answer:...}}, {{var:...}}, {{conjoint:...}}, {{loop:...}}, or a bare reference — now accepts a trailing |fallback text, shown whenever the reference doesn't resolve or resolves to nothing yet, instead of an empty gap or a stuck-looking literal token. Instrument Review (Deploy tab) also now flags piped text that references a question appearing at the same position or later in the survey, since that reference can never have a value in time, and separately flags an {{answer:...}}/{{conjoint:...}} reference that doesn't match any question at all — typically a question renamed or deleted after the pipe token was written.

New feature

Conjoint: opt-out option, image levels, attention checks, holdout tasks, dealbreaker screening, and a sample-size estimate

Conjoint questions can now add a non-substantive "None of these" alternative, excluded from attribute-level drawing and balancing and recorded as its own distinct value on export — forced choice (with no realistic opt-out) can otherwise shift the estimated preference away from what respondents would genuinely choose. Attribute levels can carry an uploaded image alongside their text, for designs that need a visual profile rather than a text table. One task can be turned into an instructional-manipulation attention check, or fixed to an identical, author-chosen profile for every respondent (a holdout task) so a preference model fit on the rest of a respondent's tasks can be validated against their real choice on it — both are excluded from the options panel's sample-size estimate, which now also flags when a task is answered too quickly to have plausibly been read. A new dealbreaker screening step (a lightweight adaptive-CBC option) lets respondents rule out specific attribute levels before their tasks begin, so those levels never appear for them again — mutually exclusive with balancing combinations across respondents, and not yet simulated by Silicon Sample. Instrument Review warns when a design has more attributes than the sample-size estimate can reasonably support, when every task on a question is a holdout with none left to estimate from, or when dealbreaker screening and cross-respondent balancing are both configured. Silicon Sample personas recognize the opt-out alternative and any attention-check or holdout-task instructions when generating pilot data.

Fix

Conjoint quality checks and level-exposure balancing now look across a respondent's whole task battery

Two conjoint checks that only looked within a single task now cover every task a respondent completed: the same-displayed-position quality flag (previously checked only the first task), and "Balance level exposure" (previously reset its fairness bookkeeping at the start of every task instead of carrying it across the whole battery, undercutting the balance it was meant to guarantee for respondents with several tasks).

New feature

Searchable Dropdown options

A single-select Dropdown question can now let respondents type to filter a long option list instead of scrolling through it, via a new "Searchable Options" setting in the question's options panel. It's off by default, only applies when the dropdown is single-select, and is also available through the MCP.

New feature

Minimum/maximum selection limits on Multiple Choice

A multi-select ("select all that apply") Multiple Choice question can now require a minimum number of selections and/or cap the maximum, from the question's options panel or the MCP. Once a respondent selects anything, the minimum applies the same way a required question does; further options are disabled automatically once the maximum is reached. Instrument Review flags a minimum or maximum that could never be satisfied (for example, greater than the number of options), and separately offers an informational note on a long (7+ option) "select all that apply" list, since research comparing that format against a forced-choice yes/no battery of the same items has found check-all-that-apply tends to undercount true endorsement.

Fix

Multiple choice: an anchored "Other" option, and the MCP's pull-options mode

An "Other" option explicitly anchored to a position other than last no longer gets silently moved to the end whenever shuffle is on — the anchor now takes precedence over the default "pin Other last" behavior, matching every other anchored option. Separately, the MCP's pulled-answer-options mode field previously only validated two values that don't exist in the app (append/replace) instead of the real ones (selected/shown/not_shown/not_selected/all), so setting anything but the default mode through the MCP failed outright.

Improvement

Multiple choice: explicit accessible name for the option group

The option list (radio group or checkbox list) now carries its own accessible name derived from the question text, instead of relying only on the surrounding page region — most notably fixing the checkbox (multi-select) case, which previously had no group-level accessible name of its own at all.

New feature

Forced-choice battery for Multiple Choice

A multi-select Multiple Choice question can now present its options as a forced-choice battery — each option asked as its own explicit Yes/No item, requiring the respondent to resolve every one before advancing — instead of a single check-all list, from a new "Present as a forced-choice battery" setting or the MCP. Research comparing the two formats has found check-all-that-apply tends to undercount true endorsement, at the cost of materially higher per-item respondent burden, so this is an author choice rather than a default; it isn't compatible with Exclusive/Select-all choice behavior or selection limits, which enabling it clears. The exported/analyzed answer is unchanged in shape from an ordinary multi-select response.

New feature

MaxDiff: response-quality checks and an item coverage estimate

MaxDiff (best-worst scaling) questions now get their own response-quality checks, matching what conjoint already has: a malformed trial (a best/worst pick that wasn't actually shown, or the same item marked both) is flagged as an impossible combination, a respondent who repeatedly picks the same displayed position as best or worst across freshly-reshuffled trials is flagged for straightlining, and a battery completed implausibly fast given its item and trial count is flagged for speeding. The options panel also gains an item coverage estimate — given the item pool, items per trial, and number of trials, it reports how many times each item is actually seen, since an under-covered item pool undermines MaxDiff's core comparative-inference logic; entering an assumed respondent count adds a total-appearances-per-item figure, presented as a range rather than a single number since published sizing guidance genuinely disagrees across sources. Instrument Review separately flags a design whose per-respondent item coverage falls below the point where individual-level scoring stops being feasible later. The help article and MCP methodology guide also now clarify that Domandata's "anchor items" (guaranteed inclusion in every trial) is not Sawtooth's "Anchored MaxDiff" technique (an absolute-threshold rating extension), and explain the practical consequence of Domandata's per-respondent balanced-random trial design versus a hand-built balanced-incomplete-block design.

New feature

Audio Response: accessible text alternative, AI transcription, a live level meter, and quality/review checks

Audio Response questions can now turn on a small, low-key "type your answer instead" link via a new "Allow a typed-text alternative" setting — a self-service accessibility accommodation for a respondent who genuinely can't provide a spoken answer, not a general opt-out; it's off by default and asks for no justification when used. Recording now shows a live microphone level meter, and every recorded/uploaded clip's peak level is captured to support quality review. Response quality gained two new Audio Response checks: a clip too quiet to contain an audible answer, and the exact same clip submitted for the same question by more than one response (audio's equivalent of a duplicate/canned open-text answer); a respondent who used the typed alternative instead now also gets the same gibberish/repeated-text/duplicate-answer checks open text questions already have. Instrument Review now flags an Audio Response question left without instructions (there's no text prompt to re-read while recording) and a required Audio Response question with the text alternative left off, citing research showing spoken open-ended items carry materially higher item-nonresponse and survey break-off than typed equivalents — the latter offers a one-click fix. A new opt-in (beta) AI transcription setting lets an author connect a bring-your-own speech-to-text credential and transcribe an individual response's audio on demand from a new "Transcribe" action in the Export tab's response table — the first question type with its own rich response-table cell instead of plain text. Transcription is never automatic or bulk, and every result is labeled unverified: independent evaluations of ASR on real survey voice data report substantial hallucination and failure rates, so a transcript is a starting point for human coding, not ground truth. All of the above is available from the MCP's question-editing tool as well as the options panel.

Fix

OSF verification certificate: honest respondent counts, not a raw submission tally

The verification certificate issued from Deploy (and shown at /verify/[id]) previously counted every row in the response table, including your own Silicon Sample (AI-simulated) test responses and any response you'd already marked excluded during quality review — both could silently inflate the certified sample size. The certificate now reports a verified human respondent count with those stripped out, plus a new Respondent Verification section: total submissions collected, how many were simulated or excluded, how many were flagged for quality review, and which fraud/quality signals (reCAPTCHA, IP intelligence, attention checks, dwell-time and impossible-combination rules) were actually active during collection. Each public submission's response row also now carries a salted, one-way IP fingerprint and a server-stamped session start time — signals the respondent's browser can't forge — surfaced on the certificate as a server-verified-provenance coverage percentage.

Fix

New survey defaults: "Required" preference now applies to a starting template's own questions

Your saved "new survey defaults" requiredness preference (Settings → New Survey Defaults) was only ever applied to questions added after survey creation — any question that came in from a starting template, including a template's own follow-up (branching) questions, kept whatever requiredness the template author had set instead of picking up your default. Creating a survey from a template now normalizes every question's requiredness (informational blocks stay optional and reCAPTCHA stays required) to match your saved preference, the same way the Block Builder's survey-wide "Required" toggle already does.

September 22, 2026

1.0.1

10.5281/zenodo.22904533

Fix

Survey submissions were rejected

Respondents could see "Response data does not match the published survey." when submitting a published survey, and their response was not saved. The server's submission check did not recognize the total completion time, URL embedded data, and quota-termination details the survey sends by default. Submissions now go through again, and those details are still checked for valid values.

Fix

Help articles and marketing pages load faster and are indexable again

The Help center and several marketing pages (Pricing, Features, Product, About, and the Switch comparison pages) were being fully regenerated on every single visit instead of served from cache, because deciding whether to show a signed-in or signed-out navigation bar required checking your session on the server first. That check now happens in your browser after the page loads, so these pages can be cached and served instantly again — meaningfully faster, and easier for search engines to index.

September 8, 2026

1.0.0

10.5281/zenodo.22673193

Fix

Survey creation and other saves could fail silently

An unrelated framework configuration gap could make Server Actions throw after the underlying save had already gone through — most visibly, clicking "Create" on a new survey could show nothing happening (no navigation, no error) while the survey was actually created, inviting duplicate surveys from a retry. Also fixed: the citation "Copy" buttons on /cite could fail without showing an error or the "Copied" confirmation.

New feature

Raw mouse-trajectory export

Surveys using mouse-movement tracking now show a "Raw Mouse Trajectories (JSON)" button in Export → Responses, alongside CSV/XLSX/SPSS/Stata/R. Every other format only ever included five summary columns per tracked question (sample count, duration, path length, max deviation, direction reversals); this downloads the complete sample-by-sample {t,x,y} cursor path behind those summaries, for anyone doing real trajectory analysis rather than working from the aggregates. It respects the same include-preview, include-Silicon-Sample, and quality-review filters as the other download buttons.

New feature

Reaction Time, Voice Conversation, Show Results, Smart Rename, and research-integration exports move to Standard plan

Reaction Time and Voice Conversation question types, per-question mouse-movement tracking, the Show Results end-of-survey scoring block, Smart Rename, OSF/Harvard Dataverse/Zenodo deposits, and GitHub Sync are no longer beta-tester-only — they're now available to every Standard-plan-and-above workspace, the same tier that already unlocks Flow, Deploy, and Export. Macros and Mobile Notifications move the same way for personal accounts. A verified institutional affiliation continues to unlock the equivalent tier automatically.

Security

Reputation-tiered limits for bulk survey distribution

Sending personalized links in bulk (CSV, panel, email, or SMS from Deploy → Distribution) now scales its per-batch and rolling 24-hour recipient limits to the sending account's trust tier — unverified and brand-new accounts get conservative caps, accounts over 30 days old with a verified email keep today's existing limits unchanged, and a verified institutional affiliation raises the limit well above that automatically. This replaces the previous flat beta-tester-only gate; bulk distribution is now available on Standard plan and above.

Fix

Voice Conversation and Text Chat API keys now save correctly

Pasting a provider API key directly into a Voice Conversation or Text Chat question (rather than picking an existing saved key) is now actually saved — it was previously discarded silently, so the question would fail for respondents with no warning anywhere in the editor. A "Save as credential" button now appears whenever a key is typed; use it, or pick a key already saved under Settings → Keys.

Fix

Python/R script execution is live

The code-execution service behind Text Response Python validation, Flow's Python recode variables, and the Show Results score report is now actually running (it previously had no backend configured at all, so every one of these silently failed). Fixed alongside it: an optional Text Response, Multiple Choice, or Text Chat question that a respondent did fill in was accepting invalid answers instead of enforcing its validation rule — "optional" only ever meant the question didn't have to be answered, not that a wrong answer should be allowed through. Also fixed two Show Results editor bugs: the score-key picker never recognized keys from the default Python script (or any script quoting the "scores" key, the only valid way to write it in Python), and a newly added conditional message disappeared the instant it was created instead of staying on screen to be filled in.

New feature

Fraud detection for responses

A new automatic response-quality flag joins the existing bot score check: VPN/Proxy Detected, opt-in per survey (Survey Options → Fraud Detection), checks each response's IP against known VPN, proxy, Tor, and hosting-network ranges. It never excludes a response automatically — it only surfaces in Quality Review for a human decision, the same as every other quality flag. Source-default quality rules can now also threshold on any numeric field captured through the existing recruitment-platform URL passthrough (e.g. a Prolific- or CloudResearch-supplied field), so a low panel-reported score can drive an automatic review decision the same way a low overall quality score already can.

New feature

Cross-field rules

A block can now define live rules comparing two or more of its own answers to each other — "these must match" (e.g. confirm-email) or "these must sum to N" (e.g. a budget split) — enforced before the respondent can advance, from the block's Cross-field rules menu (also available on right-click). This is separate from the existing Impossible Combination quality rule, which flags an already-submitted response for review rather than stopping the respondent from advancing.

Improvement

Date format validation for Text Response

Text Response questions have a new Date validation option alongside the existing Email, Phone Number, and Zip Code checks, with a configurable expected format (YYYY-MM-DD, MM/DD/YYYY, or DD/MM/YYYY) and calendar-aware validation that rejects malformed dates like February 30th.

Improvement

Surveys keep working through a lost connection

If a respondent's connection drops mid-survey, the survey keeps working instead of showing a dead-end error — their answers stay saved locally and the response submits automatically as soon as they're back online, with no duplicate submissions. A page whose branching depends on a quota or condition-balancing assignment will briefly ask the respondent to reconnect before continuing, so those assignments stay accurate.

New feature

Field / offline administration

A new Field / Offline Administration section in Deploy generates a dedicated link for in-person data collection: an interviewer opens it once while online, then can go fully offline for an extended session and administer the survey to any number of respondents in sequence, each producing a separate response. Every completed response is saved on the device and syncs automatically as a batch once back online — no action needed, and never duplicated. Each response can optionally carry a one-shot device location as a fraud-verification signal (never blocks completing a response if location isn't available). The link is regenerable from Deploy if a device is lost.

Improvement

New surveys default to lightweight response collection

A newly created survey no longer automatically saves a participant's in-progress answers if they close the tab or leave partway through. Existing surveys and their current settings are unchanged. Turn automatic collection of unfinished responses on per-survey from Deploy → Unfinished responses.

Improvement

Short Answer renamed to Text Response

The open-text question type formerly called Short Answer is now labeled Text Response throughout Block Builder, help, exports, and docs. Existing surveys keep working.

New feature

Content type dropdown for content blocks

Content blocks (informational questions) now use a Content Type dropdown — Text, YouTube, Image, Video, Audio, or the new Iframe — that shows only the fields for the selected type, instead of every media field at once. Iframe embeds require an https:// URL and render in a sandboxed frame. An embedded iframe can optionally report a value back: set "Report to variable" on the block and have the embedded page call window.parent.postMessage with a matching discriminator, and the reported value is stored under that variable and appears as its own export column.

New feature

Switch to Domandata pages

A new /switch hub, linked from the site footer, compares Domandata to Qualtrics, SurveyMonkey, Alchemer, Typeform, Google Forms, Microsoft Forms, Momentive, Decipher/Forsta, and LimeSurvey, with a feature comparison table and a step-by-step migration guide for each platform.

Fix

Dock icon fixed for macOS PWA installs

The app icon used for Home Screen and apple-touch-icon links was a rounded square with transparent corners baked in, which fought the system's own icon mask — most visibly on macOS 26, where it blocked the Liquid Glass icon treatment when the app was added to the Dock. The icon is now full-bleed and opaque so the system mask and glass effect apply cleanly, and a vector maskable icon was added to the web app manifest for the sharpest result at any size. The mark is also drawn larger within the icon for better legibility at Dock and Home Screen sizes; the Android-style maskable icon keeps its smaller, more conservative safe zone so it isn't clipped by more aggressive launcher masks.

Fix

Fixed a crash on Help articles' interactive Flow Canvas demo

Any help article embedding a live Flow Canvas demo (branching, quotas, conditions, and dozens of other guides) crashed to an error page instead of rendering. Those demos now run against the same editor state management as every other embedded demo.

Improvement

New surveys now start with tracking, reCAPTCHA, and duplicate protection on

A brand-new survey (for anyone who hasn't customized their own New Survey Defaults in Settings) now starts with browser-information tracking, link-click tracking, invisible reCAPTCHA v3, one response per published link, and "Requested" instead of "Optional" as the default requiredness for new questions. Previously all of these started off and had to be turned on survey by survey. Anyone can still change any of these per survey, or set their own personal defaults, from Survey Options and Deploy.

Fix

Signed-in visitors no longer see a "Sign In" prompt on public pages

Home, Pricing, Help, Trust Center, and every other marketing page always showed the anonymous "Sign In" / "Create Free Account" header, even for someone who was already signed in — arriving there directly, from a shared link, or on a new device could show the wrong header regardless of the real session. Those pages now resolve the real session and show the normal signed-in header, and the command palette (⌘K / Ctrl+K) is now reachable from any page while signed in — previously it only worked inside the survey workspace itself, not on Library, Feedback, or any public page.

Fix

Command palette reliability and accessibility fixes

The palette's "Open <Survey> → Builder/Flow/..." navigation commands could silently disappear after a page reload until you revisited the dashboard. Publish, Unpublish, Push Changes, every Export/Download command, and the copy-link commands could fail with no visible error — they now show a brief notice when something goes wrong. The palette shortcut (⌘K by default) can now be triggered while renaming a block instead of being swallowed by that field, and pressing the shortcut again while the palette is open now closes it, even while typing in its own search box. The duplicate "Copy Survey Link" / "Copy Public Survey Link" commands, which could copy two different URLs once a survey had a custom URL slug, are now a single command that always uses the correct link. "Toggle Record Time Per Page" now shows whether it's currently on or off. The palette is also better announced to screen readers, and choosing ⌘+Space as the shortcut in Settings now warns that macOS Spotlight usually intercepts it before it reaches the browser.

September 2, 2026

0.9.2

10.5281/zenodo.22268746

Improvement

Consistent display order

Flip consistency and randomization consistency are now one Survey Options control: Consistent display order. When shuffle is enabled, questions with the same answer options keep the same order for each respondent; different option sets shuffle independently. An optional sub-setting still coordinates flip direction across matching scales. New surveys default this on; existing surveys migrate automatically.

New feature

Link click timing and required link clicks

Link tracking is now more versatile on a per-link basis. Each question with tracked links gets a new "Track time to click" option (in the question's link tracking settings) that records, per link, the time from when the question appeared to when that link was clicked, exported as a companion _time_ms variable next to the existing click flag. Authors can also mark individual links as "Require click to advance" so respondents must click those specific links before the Next button will proceed, with the rest of the question's links left optional — useful for consent or informational links some questions need enforced and others don't.

New feature

Total completion time tracking

Surveys now record how long each respondent took from opening the survey to submitting it. The new "Record total survey completion time" option in Survey Options (under Timing) is on by default and can be turned off per survey. Duration is stored in response metadata and appears as a Total Response Time (seconds) column in CSV/Excel exports and the in-app response preview, alongside the existing per-page dwell time tracking.

New feature

Estimated survey time piped text

A new built-in piped variable, {{surveytime}}, estimates how long the survey takes so intro or consent text can state it without hardcoding a guess. Before a survey has enough responses, the estimate comes from its structure — question count, type, and complexity, weighted by branch probabilities and discounted for Skip Rules that can end the survey or jump ahead. Once a survey has at least 5 responses with a recorded completion time, the piped value switches to the real median automatically. Add unit and style modifiers to control the format: minutes (default), seconds, or minsec, each as a plain number ({{seconds.surveytime}}) or spelled out ({{written.minutes.surveytime}}).

New feature

Canvas classroom assignments

Classrooms can now connect an Instructure-hosted or operator-approved self-hosted Canvas course through LTI 1.3. Professors configure Domandata External Tool assignments inside Canvas with instructions, points, submission mode, starter surveys, requirements, and resubmission rules. Students get an assignment-specific Canvas view for choosing, submitting, retrying, and tracking surveys; frozen snapshots open directly in SpeedGrader read-only, built from the same survey-preview components and theme as the editor's own Preview tab rather than a separate rendering. A Path control lets the professor switch which randomized condition they're previewing without affecting what the student actually saw. Downloads, version details, and prior-attempt comparison are also available. Classroom diagnostics add consent-preserving roster reconciliation, Canvas-owned grade and feedback readback, failed-submission retries, scope and identity health, and safe course-copy mapping that never copies students, submissions, or grades.

New feature

Lab Plan

The Upgrade tab now has a "Buy Domandata for your lab" option for creating one shared lab workspace and buying Standard and Pro seats for its members in a single annual purchase. Existing accounts join the workspace immediately after payment; everyone else joins automatically when they sign in with the listed email, and the assigned plan also applies to their personal workspace. A setup screen confirms that the paid workspace and roster were created together. Lab Admin keeps membership and seats synchronized when leaders add, move, or remove people, while only the billing owner can buy additional seats or manage Stripe billing. A promo code field applies a percent-off discount to the initial purchase (the first code, BYUGPL, gives 50% off).

Improvement

MCP connector compliance

MCP now matches the survey editor: Block Builder, Flow, Preview, Deploy, Export, version history, comments, translations, Silicon Sample, and quality rules. Survey catalog and detail use read_survey/edit_survey/create_survey; responses, comments, versions, and Deploy settings use consolidated read_*/edit_* tools. Schema discovery is centralized in get_mcp_schema with per-kind JSON Schema for questions, blocks, flow entities, quality rules, translations, follow-up triggers, and Silicon Sample patches. edit_question, edit_block, edit_flow, edit_quality_rule, edit_translation, and edit_silicon_sample use slim patch objects on tools/list instead of inlining every type. preview_survey loads block metadata and path-scoped questions in separate queries. Write tools return structured error codes in text content (without conflicting typed output schemas), read back canonical state after entity and quality-rule lifecycle changes, and expose typed output schemas on preview, Deploy, responses, quality rules, and high-traffic writes. The hosted MCP endpoint validates browser Origin headers for connector clients while still allowing server-to-server traffic without Origin. OAuth resource metadata and MCP help docs point reviewers to the connect-AI-assistants guide. Optional weekly MCP integration smoke (repository variable MCP_INTEGRATION_ENABLED) exercises read_survey against a live deployment. Deleting a block, question, flow entity, response, comment, or quality rule is now its own confirm-gated tool (delete_block, delete_question, delete_flow_entity, delete_responses, delete_comment, delete_quality_rule) instead of a hidden action inside the corresponding edit tool, so a routine edit never carries the same destructive warning as an actual deletion. Library pull/save remains app-only on MCP. A full live pass against a real (non-production) database found and fixed: edit_block's restore_from_trash was unreachable without a redundant block_id (it checked block_id before restore_from_trash, unlike the equivalent question path); edit_translation's add_language accepted a missing display name and silently created an unnamed language entry; edit_translation's remove_language and auto_translate confirmation prompts returned a generic error code instead of CONFIRM_REQUIRED; and get_mcp_schema's question module listing omitted the working page_break_after edit field.

Fix

Collaboration conflict warning on solo surveys

The "was also changed by a collaborator" warning banner no longer fires or lingers on surveys with no other collaborator. Once shown, it now clears automatically if a survey with an outstanding warning drops back to a single-owner survey, instead of the warning staying stuck and reappearing on every autosave regardless of whether anyone else can access the survey.

Fix

Stale translation tracking

Instrument Review now surfaces stale translations in Deploy before you publish (readiness findings were previously omitted from the publish alert). In the translation editor, fields whose source text changed after the last save are highlighted in red, matching the same staleness rules used by Instrument Review and auto-translate.

Improvement

Instrument Review recode checks

Instrument Review now flags non-consecutive numeric recode values — gaps in the code sequence (for example 1, 2, 4) and repeated codes that make two options export identically. Gap findings include an Auto-fix that renumbers options 1..n in authored order. The translation column in Block Builder now shows each question's source export variable name (for example lang) instead of a generic Ask# label.

Fix

Safe dashboard previews in help articles

Help articles now show the real Personal Dashboard with realistic surveys, folders, dates, search, sorting, and local-only survey creation. The embedded dashboard no longer saves data, sends background requests, opens survey actions, or navigates away from the article.

Improvement

Translations are generally available

Survey translations and language branching are no longer beta features. The survey editor and MCP read_translation/edit_translation tools are available on every plan, without Beta Tester access.

Improvement

Personal links and panel provider integrations

Personal links in Deploy are generally available for all workspaces (no Beta Tester access). A new public Integrations page documents Rep Data, Cint, CloudResearch, and Prolific redirect URL passthrough — complete, terminate, quota-full, and security-fail outcomes with panel respondent IDs such as RDUD. Deploy distinguishes personal links from panel provider redirects and links to the setup guide; marketing and help copy use the terminology integrators search for.

Improvement

Classroom is generally available

Classrooms are no longer a beta feature. Professors on the Pro plan can create and manage classrooms from Settings → Upgrade, and the Classroom tab appears for anyone teaching or assisting in a classroom workspace.

August 31, 2026

0.9.1

10.5281/zenodo.22216979

New feature

Skip Rules

Any question can now carry Skip Rules. Add a rule to skip over this question or specific answer options when criteria match, or skip to another block (including End of Survey blocks) when criteria match. Conditions can use earlier answers, flow variables, linked panel columns, or branch arms — so even the first question can be skipped from panel data. A skip-to redirect takes effect when the respondent advances past the page with the triggering question. Redirects appear on the Flow canvas as dashed connectors (distinct from quota connectors) that can be hidden and shown from the canvas controls or by right-clicking the canvas, and they are included in the exported flow diagram.

New feature

Import brand from website

Custom survey themes are now generally available in Deploy → Theme for all workspaces, with the legacy HTML/CSS header fields removed. Themes can still be seeded from a public homepage URL: Domandata fetches the page server-side, imports the logo shown in the page header (including custom header components and logo containers such as PageLogo) instead of defaulting to generic site icons, extracts a five-color palette from that logo, matches detected web fonts (including fonts declared in linked stylesheets, Google Fonts links, and @font-face rules) to the theme font picker and loads them from Google Fonts in Deploy and Preview, infers the accent color from CSS tokens such as `--signal`, the first `--*accent*color*` custom property (for example `courseAccentColor` on BYU course sites), and button styles, infers rounded vs. square corners from design tokens like `--r-none` and linked stylesheets (defaulting to square corners when the site does not clearly use rounded UI), and leaves light/dark mode unlocked when the source site defines both themes (including `data-theme` light/dark pairs in linked stylesheets) or only locks to one scheme when the site clearly skews that way. Dual-theme imports now also store separate light and dark palettes so respondents actually see the correct colors in each mode. You can upload a logo in Deploy → Theme (one logo is used in both light and dark mode by default, with an option to use separate logos per mode); brand import tries to fetch both from the source site when they differ (including sites that invert a single logo with CSS such as `--logo-filter`) and derives a dark logo automatically when needed. The theme preview also includes a color-scheme dropdown beside the question-type preview when light and dark modes are unlocked; when a theme is locked to light or dark, that preview toggle is hidden. Alternating row shading now uses each theme's secondary background color so it stays visible in dark mode as well as light. Color swatches in the custom theme builder also fill their rounded picker buttons correctly, and pasting a hex value that already includes # no longer duplicates the leading hash. Short custom-theme survey pages no longer leave a large empty band below the questions and navigation buttons.

New feature

Citation and replication deposits

Export now includes a Citation and Replication section for OSF, Harvard Dataverse, and Zenodo. Deposit either the survey instrument (for methods citations) or the full replication package (with response data), then copy APA, methods, BibTeX, and persistent-identifier snippets once a deposit exists. GitHub Sync has also moved here from Deploy, below Citation and Replication.

New feature

Institutional admin tools

Institutions with a designated admin get an Admin tab: upload a logo (up to 2.5 MB) that appears next to the Domandata wordmark for every member, with an option to use separate light and dark logos; manage Standard and Pro seat pools separately, excluding members who pay for their own plan; search members, assign institution plans, promote or demote admins, or remove members (not yourself or the last admin); curate a shared institution library visible to every member; set an institution-wide default survey template; and optionally require institution members' surveys to use the institution logo. That logo now also appears in the survey editor header, and Admin and Classroom appear in the survey editor overflow menu in the same order as the full header.

New feature

Auto-submit unfinished responses, and a survey close date

Unfinished responses can now be automatically submitted — when a participant closes the tab, after a configurable number of days from when they started, or both (on by default: tab close, and 2 days) — with the option to turn either off. A survey can also be given a close date, which submits every in-progress response and unpublishes the survey automatically. Both are configured from the Deploy tab's Data & Privacy settings.

New feature

Panel-linked surveys

A survey can be linked to a participant panel, and optionally to a prior wave of that panel's Study, from Survey Options. Once linked, a respondent's known panel attributes — and, if a prior wave is set, their real answers from that earlier wave — can be piped into question text with {{panel:field}} and used to stratify treatment assignment or quotas, the same way an in-survey variable or quota already can. A prior wave's answer wins over a same-named panel attribute.

New feature

GitHub Sync custom templates

An Advanced section under Settings → GitHub Sync lets you set default export options (CSV or JSON, labels vs. recode values, flattened JSON) and custom starter files with {{Creation Date}}, {{Survey Name}}, and {{Repo Name}} placeholders for every new survey repository. Disconnecting a repository or GitHub entirely now stops scheduled sync and revokes data access. Failed repository creation is cleaned up automatically, and new repos exclude free-text and identifying answers by default.

Improvement

New Default Survey template

Settings → New Default Survey now lets you pick a saved template — a whole survey — as the starting point for every new survey you create, cloning its blocks, flow, and branching in full. Once a template is set, the survey-wide General options below it disappear, since the template's own settings apply instead. A Workspace specific default toggle restricts the template to one chosen workspace, and workspace owners can set it as that workspace's default for members who haven't picked their own.

New feature

Default export & display settings

A new Advanced section under Settings seeds defaults for the Deploy tab's response table and export options — recode values vs. display labels, splitting compound questions (including Text Highlighter tags as separate columns), heatmap coordinate format, answer language, rotated tables, whether preview and Silicon Sample responses are included, and answer/question ordering columns. These apply the first time you open each survey's Export tab; each survey can still override from there.

New feature

Export formats and analysis helpers

/api/v1/export now accepts format=sav, format=dta, and format=rdata (SPSS, Stata, and native R data with factor columns and variable labels; capped at 15,000 responses per call). Multi-select questions can export as 0/1 indicator columns per option (expand_multi_select_as_indicators). SPSS/Stata variable labels use full question wording, with value labels covering more question types. The hosted R helper's dd_factorize() also covers card sort, MaxDiff, and conjoint columns.

Improvement

ORCID username onboarding

Signing in with ORCID now pre-fills the Choose a Username step with your ORCID display name when it is available, the same way Google sign-in already does.

August 27, 2026

0.9.0

10.5281/zenodo.22099343

New feature

Institutional single sign-on

Institutions can be connected to their own SAML identity provider, so members sign in with their institutional credentials instead of a separate Domandata password. Access is matched by verified email domain and replaces the previous ad hoc domain-grant list.

New feature

Question and block comments

Leave threaded comments on an individual question or on a whole block to flag something for a collaborator without changing the survey. A new Commenter role lets you add reviewers who can read and annotate a survey without giving them editing access, and comment activity generates notifications so authors see new and resolved threads.

New feature

Survey translation and right-to-left languages

A dedicated Translator collaborator role can author side-by-side translations of survey content for each configured language without touching question logic. Right-to-left layout is now fully supported for Arabic, Hebrew, and Persian, including the respondent-facing runner.

New feature

Teaching assistants in Classroom

A classroom's owning professor can add teaching assistants who can help manage assignments and review student submissions alongside them.

New feature

Loop Blocks

Repeat a block once per item in a respondent-specific list — for example, once per household member or once per product a respondent said they use. The current loop item can be piped into question text, looped responses are aggregated on export, and item order can be held constant across iterations instead of re-randomizing each pass.

New feature

Cross-respondent blocking for conjoint designs

Conjoint attribute-level combinations can now be stratified, or blocked, across respondents by a chosen variable, mirroring the stratified-blocking pattern already available for treatment assignment in Flow branching.

New feature

Quota status page and vendor links

A public, token-gated Quota Status page shows live fill counts for a survey's quotas without requiring survey-editor access, and a new Vendor Links panel in Deploy generates per-vendor links to it — useful for giving panel providers visibility into their own traffic.

New feature

Expanded quota management

Quotas can be organized into named groups and reordered, can trigger a variable value when they fill, and a matrix generator can bulk-create every crossed combination of two or more quota dimensions at once. The response table also shows each response's completion status against the quota that routed it.

New feature

Google Forms, Microsoft Forms, and Harvard Dataverse

Surveys can be imported directly from Google Forms and Microsoft Forms exports, in addition to existing import formats. A Harvard Dataverse connection can also be configured from Settings to push response data to a linked Dataverse repository.

New feature

Macros

Record a named sequence of authoring actions — adding questions, setting options, and similar steps — as a macro, then re-run it against another block or survey instead of repeating the same setup by hand.

New feature

Trust Center self-assessment questionnaires

CAIQ and HECVAT security self-assessments are now available for procurement and security teams evaluating Domandata, alongside the existing Trust Center documentation.

New feature

Collaboration conflict warning

When two people are editing the same survey at the same time, a banner now warns before one person's changes could silently overwrite the other's, instead of the later save quietly winning.

New feature

Panel vendor link parameters carry through to redirects

Query parameters appended to a survey link by a research panel (for example a Prolific PID or a CloudResearch/Cint ID) are now captured automatically and can be substituted back into the end-screen redirect URL, so respondents return to their panel with the right identifiers attached.

Improvement

Randomization audit and balancing

Randomization defaults were audited across the app for consistent even-vs-random behavior. Block-level randomization inside Flow branching was fixed, and randomized treatment assignment now balances within each stratum instead of only across the overall sample.

Improvement

Variable recode interactions expanded to three and four questions

Recoded variables that combine multiple source questions into one interaction term now support three- and four-way interactions, not just two.

Improvement

Editor and export performance

Survey editor element loading, export generation, and page-load speed (including Largest Contentful Paint) were optimized, alongside a pass of general accessibility improvements across the app.

Improvement

Site search

An internal search index now powers finding surveys and help content faster and more consistently.

Improvement

Header, footer, and copyright refresh

The app header and footer received a visual cleanup, including a corrected gradient and a copyright notice, along with updated social links.

Improvement

Changelog shows version DOIs and gates product PRs

Each citable release on /changelog links its Zenodo DOI when one exists, and points to /cite for copy-ready snippets. Pull requests that change product code must bump the product version and update src/lib/changelog/releases.ts unless they are docs/tests/CI-only or marked skip-changelog / skip-version.

Improvement

Link-click tracking exports one column per link

When Track Link Clicks is on, each unique href in a question is stored and exported as its own 1/0 column (Ask3_link_1, Ask3_link_2, …) instead of a single comma-separated list of clicked URLs. Authors can rename those columns in question Options, including through the set_link_tracking_names MCP tool.

Fix

Anchored and locked answer options

Fixed a bug where answer options anchored or locked to a fixed position (for example a trailing "Other" or "None of the above") could still shift position under randomization.

Fix

Block dragging and Flow canvas

Fixed block drag-and-drop in the Block Builder, block reordering within conjoint permutation blocks, and several Flow canvas rendering issues.

Fix

Quota display in Flow

Quotas are now hidden from the Flow canvas by default to reduce clutter, snap correctly when dragged, and read clearly in dark mode.

Fix

Settings sections resaving on their own

Fixed a bug where a Settings section could silently resave its stored values the moment it mounted, which could wipe out an edit that was still pending elsewhere on the page.

Fix

Survey sharing and editor polish

Fixed survey sharing and collaborator invites, a race condition in the survey search field, rich-text paste formatting, a toggle switch's hover state, a brief flash on survey load, and curly-brace literals rendering incorrectly in help articles.

Improvement

Authenticated app moved from /personal to /workspace

Every authenticated-app URL that previously lived under /personal (settings, surveys, panels, classroom, account, and more) now lives under /workspace instead. This does not affect respondent-facing survey links (/s/…), but any bookmarked or previously shared /personal/… link into the app itself will no longer resolve — replace /personal with /workspace in any saved links.

Security

RLS and permission hardening for new collaborator roles

Row-level-security policies and security-definer grants added for the Commenter and Translator roles, quota status links, and related features were reviewed and hardened, including an initplan performance fix and closing a couple of read-access edge cases uncovered during the review.

New feature

Email, phone, and zip code validation for Text Response

Text Response questions can now validate a response as an email address, phone number, or US zip code, alongside the existing integer/number/contains/Python options. Phone number responses are auto-formatted as the respondent types, robustly handling a leading "+", spaces, dashes, and parentheses. By default a country-code dropdown (e.g. +1) sits next to the number field so respondents can pick their own country; this dropdown can be turned off in favor of a single field, with a further choice of whether the respondent must type their own country code or the number is assumed domestic to a configured default country.

May 30, 2026

Alpha

New feature

Auto-Tidy — stable release

Auto-Tidy automatically collapses unfocused blocks in the Block Builder as you work, keeping the canvas clean without requiring manual minimisation. Extreme mode and drag-to-expand options are configurable in Settings → Advanced.

New feature

Translation Mode

Survey content can now be authored in multiple languages side-by-side using Translation Mode. Translations are attached to individual blocks and exported alongside primary content.

Security

Security and compliance hardening

Failed sign-in attempts are now logged to the audit trail alongside successful logins. Account deletion is now fully self-serve from Settings → Account → Delete account, with confirmed deletion of all surveys and response data. Audit logging was extended to cover sign-outs, role changes, and account deletion events.

May 21–25, 2026

New feature

Panels

Panels let you define and manage named respondent groups for targeted distribution. Create a panel, attach it to a survey deployment, and track panel-specific response quotas — useful for longitudinal studies and follow-up waves.

Improvement

Offline Editor extension polish

The Chrome extension received stability improvements: a more reliable ACK-based handshake replaces the previous availability check, the service worker cache strategy was updated to reduce first-load cold starts, and edge cases around auth cookie handling in extension contexts were resolved.

May 19–20, 2026

New feature

Offline Editor (Chrome Extension)

The Domandata Offline Editor Chrome extension lets you continue editing surveys when you lose your internet connection — similar to offline editing in Google Docs. Changes are queued locally and synced back to domandata.net automatically when you reconnect. All cached content stays on your device and is never sent to third parties.

Improvement

Auto-suggest reliability

Resolved a bug where auto-suggest answer completions would fail silently on certain question types. Suggestions now surface more consistently across text-response and multiple-choice questions.

April 7, 2026

New feature

Mobile layout

The full application — Block Builder, Flow, Deploy, and Export — is now responsive and usable on mobile and tablet screens.

Improvement

CI/CD pipeline

Every pull request now runs automated ESLint, TypeScript type checking, and an npm dependency security audit before merging. The main branch is protected: checks must pass and a peer reviewer must approve.

April 5–6, 2026

New feature

Settings

A dedicated Settings area with Account, Accessibility, and Advanced tabs. Account settings cover profile, login credentials, MFA, connected accounts, API keys, and team workspace management. Accessibility settings include theme (light/dark/system), text scale, high contrast, and reduced motion. Advanced settings configure Block Builder defaults and question type organisation.

New feature

Library and Community

Save reusable blocks — question batteries, consent text, screeners, demographic items, recurring end screens — to your personal Library or share them to a team Community. Duplicate a saved block into any survey without rebuilding it from scratch.

New feature

Tiered plans

Free, Standard, Pro, and Beta Tester plan tiers are now available. Free covers drafting and preview; Standard, Pro, and Beta Tester are paid plans billed through Stripe.

New feature

Survey import

Import surveys from other formats directly into the Block Builder. Imported content is mapped to Domandata question types automatically, with a review step before saving. JSON imports now handle desktop-editor BOMs, multipart upload overhead, and older optional Flow fields without surfacing a server error.

New feature

Silicon Sampling

Silicon Sampling uses an AI model to simulate plausible respondent answers for a survey, letting you preview what a response dataset might look like before launching in the field. Useful for testing export formatting and data cleaning scripts.

New feature

Auto-suggest

Auto-suggest proposes answer option completions as you write multiple-choice and scale items. Suggestions draw on common academic survey question wording and can be accepted, edited, or ignored.

April 3, 2026

New feature

Survey collaboration

Invite collaborators to individual surveys as Editors or Viewers. Team workspace members inherit team-level access; survey collaborators see only the surveys they have been explicitly invited to.

New feature

Quotas

Attach response quotas to any Flow ending or treatment arm. When a quota is filled, new respondents matching that path are routed to a designated over-quota ending. Quotas are exported with the response data.

New feature

Response management

View, filter, and delete individual or batch responses from within the survey. Responses can be filtered by completion status, date, and Flow path. Bulk delete is confirmed before execution.

New feature

QR codes

Each live survey link now generates a QR code suitable for print materials, posters, and classroom distribution.

New feature

reCAPTCHA integration

Surveys can include an invisible reCAPTCHA challenge to reduce bot submissions. The reCAPTCHA score is recorded with each response for post-hoc filtering.

April 1–2, 2026

Initial launch

New feature

Block Builder

Compose survey instruments in clearly separated question blocks. Supported question types at launch: multiple choice, dropdown, text response, ranking, Likert grid/battery, slider, conjoint, heatmap, content block, and Text Chat. Questions within a block can be reordered by drag-and-drop, and response order can be randomised.

New feature

Flow

Model your entire respondent path visually. Connect blocks with eligibility screeners, random assignment nodes, treatment arms, and quota-based endings. The Flow diagram is exportable and can be attached to methods documentation.

New feature

Deploy

Publish a survey version to a live respondent link. Preview mode lets you walk through every path before launch. Multiple versions can be managed independently.

New feature

Export

Download response data with variable names, recoded values, assigned treatment conditions, randomised field orders, and completion metadata intact — ready for direct analysis in R, Python, or Stata without manual cleaning.

New feature

Google and ORCID sign-in

Sign in with an institutional Google account or your ORCID identifier. Email-and-password accounts are also supported.

New feature

Survey themes

Apply a visual theme to the respondent-facing survey. Themes control typography, colour, and layout of the live survey link.

Need to cite Version 1.2.1?

Copy-ready methods, APA, Chicago, and BibTeX snippets include 10.5281/zenodo.23394676. Match dates below to your collection window.

How to cite Domandata →