Documentation
curlyCue is a macOS desktop helper for QLab operators. It helps you synchronize cue data between QLab and a “source of truth” that you choose:
- a local CSV file, or
- a Google Sheet.
curlyCue is primarily a local desktop application. Most processing happens on your Mac.
Quick start
- Launch curlyCue.
- Choose a mode (CSV or Google Sheets) on the relevant tab.
- If using Google Sheets:
- Open Settings → Google Sheets Settings.
- Sign in.
- Use “Browse Sheets” to select a spreadsheet.
- Use Push / Pull / Update workflows to sync changes.
Google Sheets integration (what it does)
When Google Sheets mode is enabled, curlyCue can:
- Show which Google account is signed in.
- List available spreadsheets (by name) so you can pick the correct show file.
- Read cue-related values from the spreadsheet(s) you select.
- Write updated cue data back to the spreadsheet(s) you select when you run Push/Update workflows.
curlyCue does not use the Google Drive API to download/export file contents, and does not modify Drive files.
Where data is stored
On your Mac
- OAuth tokens: stored locally in the macOS Keychain.
- Project settings/backups/logs: stored locally on your Mac.
On our servers (licensing only, if you purchase a license)
Licensing data is separate from Google data. See the Privacy Policy for details:
- https://curlycue.app/privacypolicy/
For Google verification reviewers
This section is intended to make Google OAuth verification straightforward.
Summary of requested scopes
curlyCue requests the following OAuth scopes:
https://www.googleapis.com/auth/spreadsheetshttps://www.googleapis.com/auth/drive.metadata.readonlyopenidhttps://www.googleapis.com/auth/userinfo.emailhttps://www.googleapis.com/auth/userinfo.profile
Why each scope is needed
https://www.googleapis.com/auth/spreadsheets
Required to support the core product functionality: synchronizing cue data with the selected Google Sheet.
curlyCue uses this scope to:
- Read cell values from the selected spreadsheet(s) to populate cue data in the app.
- Write updated cue data back to the same spreadsheet(s) when the user runs Push/Update workflows.
- Insert/update/delete rows and cell values as needed to perform synchronization (depending on the workflow and user choices).
curlyCue does not use this scope to access unrelated spreadsheets.
https://www.googleapis.com/auth/drive.metadata.readonly
Required to implement “Browse Sheets” (search/select a spreadsheet by name).
curlyCue uses this scope to:
- List only Google Sheets files the user can access.
- Display basic metadata (name, ID, modified time, owner email) in the picker.
curlyCue does not use the Drive API to:
- download or export file contents,
- modify or delete files,
- move files or change permissions.
Identity scopes (openid, userinfo.email, userinfo.profile)
Required to:
- display which account is signed in,
- support switching accounts,
- confirm authorization status in the UI.
Step-by-step reviewer test flow
- Launch curlyCue.
- Open Settings → Google Sheets Settings.
- Click Sign in and complete the OAuth flow.
- Confirm the app displays the signed-in account email.
- In a tab that supports Google Sheets mode, click “Browse Sheets”.
- Confirm:
- A list of available spreadsheets appears.
- Only metadata is shown (e.g., name/owner), not file contents.
- Select a spreadsheet and confirm it is accepted by the app.
- Run a basic “read” action (Pull) to confirm the app reads values from the selected spreadsheet.
- Run a basic “write” action (Update/Push) on a small controlled range to confirm the app writes back to the selected spreadsheet.
- Sign out in Settings and confirm browsing/reading/writing is no longer available until re-authorized.
Data handling notes
- OAuth tokens are stored locally in the macOS Keychain.
- curlyCue does not upload Google Sheets contents to our servers as part of normal operation.
- Licensing data (if applicable) is separate from Google data.
Need help?
- https://curlycue.app/support/