diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..4c813e5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,70 @@ +name: Bug report +description: Report something broken or unexpectedly behaving in this FeedBack repo. +title: "[Bug]: " +labels: ["bug", "needs triage"] +body: + - type: markdown + attributes: + value: | + Use this for reproducible failures. Include the smallest chart, plugin state, or workflow that shows the issue. + - type: textarea + id: summary + attributes: + label: Summary + description: What is happening? + placeholder: Describe the problem in one or two sentences. + validations: + required: true + - type: dropdown + id: area + attributes: + label: Area + options: + - screen.js / runtime behavior + - settings.html / settings persistence + - plugin reload or idempotency + - FeedBack core integration + - performance during playback + - documentation or packaging + validations: + required: true + - type: textarea + id: steps + attributes: + label: Steps to reproduce + description: What should someone do to see the issue? + placeholder: | + 1. Open FeedBack... + 2. Enable/open... + 3. Play/import/change... + 4. See... + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected behavior + validations: + required: true + - type: textarea + id: actual + attributes: + label: Actual behavior + validations: + required: true + - type: textarea + id: validation + attributes: + label: Useful validation + description: What should be checked when this is fixed? + placeholder: Reload the plugin, open it from FeedBack, test during playback, and check console errors. + - type: input + id: environment + attributes: + label: Environment + placeholder: Browser/OS, FeedBack version or commit, plugin version, Docker image, etc. + - type: textarea + id: notes + attributes: + label: Additional notes + description: Logs, screenshots, chart files, console output, or related PRs/issues. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..a12153d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Roadmap or planning question + url: https://github.com/get-flashbacks/feedBack-plugin-splitscreen/issues + about: Use the relevant GitHub Project board for roadmap-level planning when available. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..8fb62a7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,53 @@ +name: Feature request +description: Suggest a new capability or workflow improvement. +title: "[Feature]: " +labels: ["enhancement", "needs triage"] +body: + - type: textarea + id: problem + attributes: + label: User problem or opportunity + description: What workflow gap does this solve? + placeholder: When practicing or authoring in FeedBack, I want... + validations: + required: true + - type: dropdown + id: area + attributes: + label: Area + options: + - screen.js / runtime behavior + - settings.html / settings persistence + - plugin reload or idempotency + - FeedBack core integration + - performance during playback + - documentation or packaging + validations: + required: true + - type: textarea + id: proposal + attributes: + label: Proposed behavior + description: What should change from the user's perspective? + validations: + required: true + - type: textarea + id: implementation_notes + attributes: + label: Implementation notes + description: Mention relevant files, plugin lifecycle concerns, API/data format changes, or performance risks. + - type: textarea + id: acceptance + attributes: + label: Acceptance criteria + description: What must be true for this to be considered done? + placeholder: | + - [ ] The user can... + - [ ] The change survives reload/reopen... + - [ ] No console/server errors appear... + validations: + required: true + - type: textarea + id: references + attributes: + label: References or mockups diff --git a/.github/ISSUE_TEMPLATE/task.yml b/.github/ISSUE_TEMPLATE/task.yml new file mode 100644 index 0000000..57e7e0e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/task.yml @@ -0,0 +1,55 @@ +name: Task or improvement +description: Track cleanup, refactors, documentation, research, or non-bug work. +title: "[Task]: " +labels: ["task", "needs triage"] +body: + - type: textarea + id: goal + attributes: + label: Goal + description: What should be accomplished? + validations: + required: true + - type: dropdown + id: area + attributes: + label: Area + options: + - screen.js / runtime behavior + - settings.html / settings persistence + - plugin reload or idempotency + - FeedBack core integration + - performance during playback + - documentation or packaging + validations: + required: true + - type: textarea + id: scope + attributes: + label: Scope + description: What is included, and what is intentionally out of scope? + - type: textarea + id: checklist + attributes: + label: Checklist + description: Break the work into concrete steps. + placeholder: | + - [ ] ... + - [ ] ... + validations: + required: true + - type: dropdown + id: priority + attributes: + label: Priority + options: + - low + - medium + - high + validations: + required: true + - type: textarea + id: validation + attributes: + label: Validation + placeholder: Reload the plugin, open it from FeedBack, test during playback, and check console errors. diff --git a/.github/workflows/pullfrog.yml b/.github/workflows/pullfrog.yml new file mode 100644 index 0000000..b34af7e --- /dev/null +++ b/.github/workflows/pullfrog.yml @@ -0,0 +1,67 @@ +# PULLFROG ACTION — DO NOT EDIT EXCEPT WHERE INDICATED +name: Pullfrog +run-name: ${{ inputs.name || github.workflow }} +on: + workflow_dispatch: + inputs: + prompt: + type: string + description: Agent prompt + name: + type: string + description: Run name + +permissions: + contents: read + +jobs: + pullfrog: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + steps: + - name: Checkout code + uses: actions/checkout@v6 + with: + fetch-depth: 1 + - name: Run agent + uses: pullfrog/pullfrog@v0 + with: + prompt: ${{ inputs.prompt }} + env: + # add at least one provider API key + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + GOOGLE_GENERATIVE_AI_API_KEY: + ${{ secrets.GOOGLE_GENERATIVE_AI_API_KEY }} + GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} + XAI_API_KEY: ${{ secrets.XAI_API_KEY }} + DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }} + MOONSHOT_API_KEY: ${{ secrets.MOONSHOT_API_KEY }} + OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }} + OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }} + + # for Amazon Bedrock (https://docs.pullfrog.com/bedrock) + # AWS_BEARER_TOKEN_BEDROCK: ${{ secrets.AWS_BEARER_TOKEN_BEDROCK }} + # AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + # AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + # AWS_REGION: us-east-1 + # BEDROCK_MODEL_ID: + + # for Google Vertex AI (https://docs.pullfrog.com/vertex) + # VERTEX_SERVICE_ACCOUNT_JSON: >- + # ${{ secrets.VERTEX_SERVICE_ACCOUNT_JSON }} + # GOOGLE_CLOUD_PROJECT: my-project + # VERTEX_LOCATION: global + # VERTEX_MODEL_ID: + + # for any OpenAI-compatible endpoint — LiteLLM, Cloudflare AI Gateway, + # self-hosted vLLM (https://docs.pullfrog.com/openai-compatible) + # OPENAI_COMPATIBLE_BASE_URL: https://litellm.example.com/v1 + # OPENAI_COMPATIBLE_API_KEY: ${{ secrets.OPENAI_COMPATIBLE_API_KEY }} + # OPENAI_COMPATIBLE_MODEL: + # both limits are required — set them to the real limits of that model + # OPENAI_COMPATIBLE_CONTEXT: "128000" + # OPENAI_COMPATIBLE_MAX_OUTPUT: "16384" diff --git a/CLAUDE.md b/CLAUDE.md index 877c7eb..50cbd83 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,6 +1,6 @@ # Split Screen Plugin — AI Agent Guide -All logic lives in a single IIFE in `screen.js`. There is no build step, no bundler, no imports. The plugin is loaded as a plain `