diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 00000000..7be93e8b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,93 @@ +name: Bug Report +description: File a bug report for memory-sync (tnmsc CLI / GUI) +labels: ["pending-triage"] +body: + - type: markdown + attributes: + value: | + ## Before you open this issue + + **Please ensure you're using the latest version of memory-sync.** Run `tnmsc --version` (CLI) or check the GUI about screen. + + **Check if your issue is already known.** [Search existing issues](https://github.com/TrueNine/memory-sync/issues?q=is%3Aissue) before opening a new one. If found, subscribe and comment there for updates. + + Thank you for helping keep the issue tracker organized. + + --- + - type: checkboxes + id: confirm + attributes: + label: Before opening, please confirm + options: + - label: I have searched for duplicate or closed issues + required: true + - type: input + id: os + attributes: + label: Operating System + description: Your OS and version + placeholder: "e.g., Windows 11, macOS 14.2, Ubuntu 22.04" + validations: + required: true + - type: input + id: version + attributes: + label: memory-sync version + description: CLI run `tnmsc --version`; GUI check About + placeholder: "e.g., 2026.10125.0" + validations: + required: true + - type: dropdown + id: context + attributes: + label: Where did the bug occur? + options: + - CLI (tnmsc) + - GUI (Tauri app) + - Both / unsure + validations: + required: true + - type: input + id: plugin-context + attributes: + label: Relevant plugin (if applicable) + description: Input/Output plugin involved, e.g. cursor-output, kiro-output, global-memory-input + placeholder: "e.g., cursor-output, global-memory-input" + validations: + required: false + - type: textarea + id: bug-description + attributes: + label: Bug Description + description: Describe the issue clearly + placeholder: "Which feature you used, intended task, and how the bug affected your workflow." + validations: + required: true + - type: textarea + id: reproduction-steps + attributes: + label: Steps to Reproduce + description: Steps to reproduce the issue + placeholder: | + 1. Run command or open GUI with [specific details] + 2. Use config / plugin [be specific] + 3. Observe [describe the error or unexpected behavior] + Include config paths, .tnmsc.json snippets, or CLI args if relevant. + validations: + required: true + - type: textarea + id: expected-behavior + attributes: + label: Expected Behavior + description: What you expected to happen + placeholder: "Describe the intended outcome or behavior." + validations: + required: true + - type: textarea + id: additional-context + attributes: + label: Additional Context + description: Logs, config, screenshots, workarounds + placeholder: "Error messages, .tnmsc.json (redact secrets), or environment details." + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..8005e322 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,2 @@ +blank_issues_enabled: false +contact_links: [] diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 00000000..1b5d940e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,34 @@ +name: Feature Request +description: Suggest an idea for memory-sync (tnmsc CLI / GUI) +labels: ["pending-triage"] +body: + - type: markdown + attributes: + value: | + Before submitting, please [search and confirm](https://github.com/TrueNine/memory-sync/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) that the idea does not yet exist. Duplicate requests may be closed. + + --- + - type: textarea + id: feature-description + attributes: + label: Feature Description + description: What problem does this solve and how should it work? + placeholder: "Describe the challenge and your suggested feature (e.g., new output plugin, config option, CLI flag)." + validations: + required: true + - type: textarea + id: use-case + attributes: + label: Use Case + description: How would you use this feature? + placeholder: "Concrete examples: which target (Cursor/Kiro/Warp/…), which input source, typical workflow." + validations: + required: true + - type: textarea + id: additional-context + attributes: + label: Additional Context + description: Any other relevant details + placeholder: "Screenshots, config examples, or technical details that might help." + validations: + required: false diff --git a/packages/md-compiler/src/compiler/parser.property.test.ts b/packages/md-compiler/src/compiler/parser.property.test.ts index 4e0ce60d..0f097386 100644 --- a/packages/md-compiler/src/compiler/parser.property.test.ts +++ b/packages/md-compiler/src/compiler/parser.property.test.ts @@ -25,9 +25,55 @@ describe('parseMdx property tests', () => { fc.stringMatching(/^[A-Za-z0-9 ,.!?]{1,60}$/) ) - /** MDX expression strings like `{variable}` or `{1 + 2}` */ + /** JS reserved words that would make acorn throw when used in MDX expressions like {do} */ + const jsReservedInExpression = new Set([ + 'do', + 'if', + 'in', + 'for', + 'let', + 'new', + 'try', + 'var', + 'case', + 'else', + 'enum', + 'null', + 'break', + 'catch', + 'class', + 'const', + 'super', + 'throw', + 'while', + 'with', + 'yield', + 'delete', + 'export', + 'import', + 'return', + 'typeof', + 'default', + 'finally', + 'extends', + 'switch', + 'function', + 'continue', + 'debugger', + 'interface', + 'package', + 'private', + 'protected', + 'public', + 'static', + 'implements', + 'instanceof' + ]) + /** MDX expression strings like `{variable}` or `{1 + 2}` (exclude reserved words so acorn does not throw) */ const mdxExpressionArb = fc.oneof( - fc.stringMatching(/^[a-z][a-zA-Z0-9]{0,9}$/).map(v => `{${v}}`), + fc.stringMatching(/^[a-z][a-zA-Z0-9]{0,9}$/) + .filter(v => !jsReservedInExpression.has(v)) + .map(v => `{${v}}`), fc.integer({min: -100, max: 100}).map(n => `{${n}}`), fc.constant('{true}'), fc.constant('{false}'),