Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Bug report
description: Report a reproducible bug in SimDrive (CLI, MCP server, journey runner, recordings).
title: "bug: "
labels: ["bug", "triage"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to file a bug report. Please fill out the
sections below so we can reproduce and triage quickly. For sensitive
billing or license details, email `support@simdrive.dev` instead of
posting publicly.
- type: input
id: simdrive-version
attributes:
label: SimDrive version
description: "Run `simdrive --version` and paste the output."
placeholder: "e.g. simdrive 1.0.0"
validations:
required: true
- type: input
id: host-environment
attributes:
label: Host OS + Xcode + iOS version
description: "macOS version, Xcode version, target iOS / simulator version."
placeholder: "e.g. macOS 15.4, Xcode 16.2, iOS 26.3 simulator"
validations:
required: true
- type: dropdown
id: target-type
attributes:
label: Target type
description: Where were you driving SimDrive?
options:
- Simulator
- Real Device
validations:
required: true
- type: textarea
id: steps-to-reproduce
attributes:
label: Steps to reproduce
description: Minimal reproducer. Commands, MCP calls, or a YAML journey snippet.
placeholder: |
1. `simdrive session_start --bundle-id com.acme.app`
2. `simdrive tap --text "Sign In"`
3. ...
validations:
required: true
- type: textarea
id: expected-behavior
attributes:
label: Expected behavior
description: What did you think would happen?
validations:
required: true
- type: textarea
id: actual-behavior
attributes:
label: Actual behavior
description: What actually happened? Include screenshots if helpful.
validations:
required: true
- type: textarea
id: logs
attributes:
label: Logs / stack trace
description: Paste relevant CLI output, simulator logs, or Python tracebacks. Redact anything sensitive.
render: shell
- type: checkboxes
id: code-of-conduct
attributes:
label: Code of Conduct
description: By submitting this issue you agree to follow the project's Code of Conduct.
options:
- label: I agree to abide by the project's Code of Conduct.
required: true
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: Documentation
url: https://docs.simdrive.dev
about: Read the docs first — install, MCP wiring, journey runner, troubleshooting.
- name: Email support (private)
url: mailto:support@simdrive.dev
about: For sensitive billing, license, or account details, email us privately instead of opening a public issue.
- name: Security disclosure
url: mailto:security@simdrive.dev
about: Please report security issues privately, not via public issue. We follow responsible disclosure.
40 changes: 40 additions & 0 deletions .github/ISSUE_TEMPLATE/feature-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Feature request
description: Suggest a new capability or improvement for SimDrive.
title: "feat: "
labels: ["enhancement", "triage"]
body:
- type: markdown
attributes:
value: |
Thanks for the suggestion. Help us understand the problem first; we
prioritize based on user impact and current roadmap.
- type: textarea
id: problem
attributes:
label: Problem
description: What are you trying to do that SimDrive doesn't let you do today?
placeholder: "I want to ... but SimDrive currently ..."
validations:
required: true
- type: textarea
id: proposed-solution
attributes:
label: Proposed solution
description: If you have an idea for how this should work, describe it. Mockups, CLI flags, MCP tool sketches all welcome.
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: What workarounds have you tried? What other tools handle this well?
- type: dropdown
id: subscription-tier
attributes:
label: Pro/Team subscriber?
description: Used for prioritization only — paying customers' asks get weighted higher in roadmap planning.
options:
- Free
- Trial
- Pro
- Team
validations:
required: false
47 changes: 47 additions & 0 deletions .github/ISSUE_TEMPLATE/license-issue.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: License / billing issue
description: Report a trial, license-key, or billing problem.
title: "license: "
labels: ["license", "triage", "priority"]
body:
- type: markdown
attributes:
value: |
> **For sensitive billing or account details, email
> `support@simdrive.dev` directly rather than posting them publicly
> in this issue.** Use this template for surfacing the failure mode
> so we can fix the product; we will follow up over email for any
> private details (Polar order ID, payment method, refund processing).
- type: dropdown
id: issue-type
attributes:
label: Issue type
options:
- Trial not starting
- Pro key not validating
- Lost license
- Refund request
- Billing question
validations:
required: true
- type: input
id: purchase-email
attributes:
label: Email used for purchase
description: The email address tied to the trial or Polar order.
placeholder: "you@example.com"
validations:
required: true
- type: input
id: polar-order-id
attributes:
label: Polar order ID (if known)
description: From your Polar receipt or account dashboard.
placeholder: "polar_xxx..."
- type: textarea
id: error-message
attributes:
label: Error message (verbatim)
description: Paste the exact CLI error or screenshot text. Include the `code:` field if shown.
render: shell
validations:
required: true
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,13 @@ the default) remains the fully supported path.
See [SECURITY.md](SECURITY.md) for vulnerability reporting and the
supported-versions policy.

## Support

- **Docs:** <https://docs.simdrive.dev>
- **Bugs / feature requests:** [open an issue](https://github.com/SyncTek-LLC/simdrive/issues/new/choose)
- **Email (private — license, billing, account):** <support@simdrive.dev>
- **Security disclosures:** <security@simdrive.dev>

## License

Elastic License 2.0 — see [LICENSE](LICENSE). Free for internal use; prohibits
Expand Down
7 changes: 7 additions & 0 deletions simdrive/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,13 @@ See `docs/LIMITATIONS.md` for: `type_text` first-character drop workaround,
SSIM-vs-structural-check semantics, SwiftUI half-sheet dismissal,
appearance-respring caveats, real-device input scope.

## Support

- **Docs:** <https://docs.simdrive.dev>
- **Bugs / feature requests:** [open an issue](https://github.com/SyncTek-LLC/simdrive/issues/new/choose)
- **Email (private — license, billing, account):** <support@simdrive.dev>
- **Security disclosures:** <security@simdrive.dev>

## License

Elastic License 2.0 — see `LICENSE`. Free for internal use; prohibits
Expand Down
2 changes: 1 addition & 1 deletion simdrive/docs/RECOVERY.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ One-stop reference for every error code and its recovery step. When SimDrive rai
**Recovery:** Run `simdrive trial start --email <you@example.com>` to begin a 14-day free trial.

### `trial_rate_limited`
**Recovery:** Try again tomorrow or contact support@synctek.io.
**Recovery:** Try again tomorrow or contact support@simdrive.dev.

---

Expand Down
4 changes: 2 additions & 2 deletions simdrive/docs/gtm/community_charter.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ A place for SpecterQA users to learn from each other, share journeys, discuss MC

## What this is not

A support helpdesk. SpecterQA Pro and Team customers get email support against an SLA — that channel is `support@synctek.io`. Free Engine users get community support here, on the same terms as everyone else: a maintainer or a fellow user might answer; no one is on the hook.
A support helpdesk. SpecterQA Pro and Team customers get email support against an SLA — that channel is `support@simdrive.dev`. Free Engine users get community support here, on the same terms as everyone else: a maintainer or a fellow user might answer; no one is on the hook.

---

Expand Down Expand Up @@ -67,7 +67,7 @@ Use this template in `#help`:

**Expected response time:** community-best-effort. Most questions get an answer within 24 hours; some sit longer. If a question is unanswered after 72 hours, the maintainer (Maurice) will read it on the weekly community sweep. **There is no SLA on free-tier support** — this is not a guarantee, it is a community.

If your question is time-critical and you are a Pro / Team / Enterprise customer, use `support@synctek.io` instead. That channel is read against an SLA. The community is faster on average; the SLA channel is faster in the worst case.
If your question is time-critical and you are a Pro / Team / Enterprise customer, use `support@simdrive.dev` instead. That channel is read against an SLA. The community is faster on average; the SLA channel is faster in the worst case.

---

Expand Down
4 changes: 2 additions & 2 deletions simdrive/src/simdrive/license/errors.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ def license_key_rotation_required(key_id: str, trusted_ids: list[str]) -> "KeyRo
f"Your license was signed with key {key_id!r} but this simdrive build only "
f"trusts {trusted_ids!r}. Recovery: upgrade simdrive (`pip install -U simdrive`) "
"so it picks up the new signing key, then retry. If you cannot upgrade, "
"contact support@synctek.io to re-issue the license under an older key."
"contact support@simdrive.dev to re-issue the license under an older key."
),
details={"key_id": key_id, "trusted_key_ids": trusted_ids},
)
Expand Down Expand Up @@ -243,7 +243,7 @@ def trial_rate_limited(ip: str) -> LicenseError:
code="trial_rate_limited",
message=(
f"Too many trial requests from {ip!r} (limit: 5/IP/day). "
"Recovery: try again tomorrow or contact support@synctek.io."
"Recovery: try again tomorrow or contact support@simdrive.dev."
),
details={"ip": ip},
)
Loading