Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

feat: add Terms of Use dialog with onboarding tour integration#148

Merged
breaking-brake merged 2 commits intomainbreaking-brake/cc-wf-studio:mainfrom
feat/terms-of-usebreaking-brake/cc-wf-studio:feat/terms-of-useCopy head branch name to clipboard
Nov 24, 2025
Merged

feat: add Terms of Use dialog with onboarding tour integration#148
breaking-brake merged 2 commits intomainbreaking-brake/cc-wf-studio:mainfrom
feat/terms-of-usebreaking-brake/cc-wf-studio:feat/terms-of-useCopy head branch name to clipboard

Conversation

@breaking-brake
Copy link
Copy Markdown
Owner

Problem

The tool enables workflow creation that could be misused for malicious purposes (cyber attacks, malware, illegal activities). As the developer, I need to demonstrate "reasonable measures" were taken to prevent misuse without degrading UX or incurring costs.

Current Behavior

  1. User opens extension for first time
  2. ❌ No warning or agreement about prohibited uses
  3. User has full access to workflow creation

Expected Behavior

  1. User opens extension for first time
  2. ✅ Terms of Use dialog appears with prohibited use cases
  3. User must agree before accessing features
  4. ✅ Onboarding tour starts automatically after acceptance

Solution

Implemented one-time Terms of Use dialog with:

  • Explicit prohibition list (cyber attacks, malware, data theft, illegal activities)
  • User liability statement
  • Checkbox agreement requirement
  • Multi-language support (5 languages)
  • Cancel option closes extension window
  • Auto-start onboarding tour after acceptance

Changes

Extension Host

File: src/extension/commands/open-editor.ts

  • Replaced isFirstLaunch flag with hasAcceptedTerms
  • Added ACCEPT_TERMS message handler to update globalState
  • Added CANCEL_TERMS message handler to close panel

File: src/shared/types/messages.ts

  • Changed InitialStatePayload.isFirstLaunch to hasAcceptedTerms
  • Added ACCEPT_TERMS and CANCEL_TERMS message types

Webview UI

File: src/webview/src/components/dialogs/TermsOfUseDialog.tsx (new)

  • Modal dialog with dark overlay
  • Title, introduction, prohibited uses list, liability statement
  • Checkbox agreement requirement (disables Accept button when unchecked)
  • Keyboard accessibility (Enter/Space on checkbox)
  • Accept button sends ACCEPT_TERMS message
  • Cancel button sends CANCEL_TERMS message

File: src/webview/src/App.tsx

  • Show Terms dialog when hasAcceptedTerms is false
  • Auto-start onboarding tour after accepting Terms
  • Handle CANCEL_TERMS to send close message

File: src/webview/src/styles/main.css

  • Added text-shadow: none to .driver-popover-next-btn and .driver-popover-prev-btn
  • Fixes onboarding tour button blur issue

Translations

Files: src/webview/src/i18n/translation-keys.ts and translations/*.ts

  • Added 13 Terms of Use translation keys
  • Supported languages: English, Japanese, Korean, Chinese (Simplified), Chinese (Traditional)
  • Keys: title, introduction, prohibited uses (4 items), liability, agreement checkbox, buttons

Impact

  • UX: Minimal - one-time dialog on first launch only
  • Breaking changes: None
  • Legal protection: Demonstrates "reasonable measures" against tool misuse
  • Side effects: Removed auto-start tour logic (tour now starts after accepting Terms)

Testing

  • Manual E2E testing completed
  • Terms dialog displays on first launch
  • Onboarding tour auto-starts after acceptance
  • Cancel button closes extension window
  • Checkbox agreement works correctly (Accept button disabled when unchecked)
  • All 5 language translations verified
  • Code quality checks passed (format, lint, build)

Notes

  • Terms acceptance stored in VSCode globalState (hasAcceptedTerms: boolean)
  • Tour remains accessible via Help menu button (🎓 icon)
  • No server-side validation implemented (cost/complexity constraint)
  • Prohibited uses: cyber attacks (DDoS, unauthorized access), malware/ransomware, data theft, other illegal activities

breaking-brake and others added 2 commits November 25, 2025 00:17
- Display Terms of Use dialog on first app launch
- Replace isFirstLaunch with hasAcceptedTerms flag
- Remove auto-start tour behavior (tour now manual only via Help button)
- Add translations for all 5 languages (en, ja, ko, zh-CN, zh-TW)
- Close editor when user cancels Terms acceptance

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Start tour automatically when user accepts Terms of Use
- Fix onboarding tour button blur with text-shadow: none
@breaking-brake breaking-brake merged commit fae4334 into main Nov 24, 2025
3 checks passed
@breaking-brake breaking-brake deleted the feat/terms-of-use branch November 24, 2025 15:50
github-actions Bot added a commit that referenced this pull request Nov 24, 2025
## [2.13.0](v2.12.2...v2.13.0) (2025-11-24)

### Features

* add Terms of Use dialog with onboarding tour integration ([#148](#148)) ([fae4334](fae4334))

### Bug Fixes

* correct ConnectSlackManualPayload type definition to match implementation ([#147](#147)) ([735033b](735033b))

### Code Refactoring

* migrate onboarding tour from react-joyride to driver.js ([#146](#146)) ([62641b8](62641b8))
@github-actions
Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 2.13.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Morty Proxy This is a proxified and sanitized view of the page, visit original site.