| author | |
| committer | |
| log | 790fda1a97476e4d7048a521651180ed0ba811c3 |
| tree | 62387c0a906896018a2d6518b9cb16d3954cda3f |
| parent | 89ffcf42eb781eddf357c07199607e3d7bccf0c5 |
| signature | Signed by PGP key B5690EEEBB952194 |
3 files changed, 284 insertions(+), 0 deletions(-)
.github/ISSUE_TEMPLATE/bug_report.yml created+108| ... | ... | @@ -0,0 +1,108 @@ |
| 1 | name: Bug report | |
| 2 | description: Report broken behavior, regressions, crashes, or reliability issues. | |
| 3 | title: "[Bug]: " | |
| 4 | labels: | |
| 5 | - bug | |
| 6 | - needs-triage | |
| 7 | body: | |
| 8 | - type: markdown | |
| 9 | attributes: | |
| 10 | value: | | |
| 11 | Use this form for broken behavior, regressions, crashes, or reliability problems. | |
| 12 | Search existing issues first and keep the report focused on one problem. | |
| 13 | ||
| 14 | - type: checkboxes | |
| 15 | id: checks | |
| 16 | attributes: | |
| 17 | label: Before submitting | |
| 18 | options: | |
| 19 | - label: I searched existing issues and did not find a duplicate. | |
| 20 | required: true | |
| 21 | - label: I included enough detail to reproduce or investigate the problem. | |
| 22 | required: true | |
| 23 | ||
| 24 | - type: dropdown | |
| 25 | id: area | |
| 26 | attributes: | |
| 27 | label: Area | |
| 28 | description: Which part of the project is affected? | |
| 29 | options: | |
| 30 | - apps/web | |
| 31 | - apps/server | |
| 32 | - apps/desktop | |
| 33 | - packages/contracts or packages/shared | |
| 34 | - Build, CI, or release tooling | |
| 35 | - Docs | |
| 36 | - Not sure | |
| 37 | validations: | |
| 38 | required: true | |
| 39 | ||
| 40 | - type: textarea | |
| 41 | id: steps | |
| 42 | attributes: | |
| 43 | label: Steps to reproduce | |
| 44 | description: Provide a minimal, deterministic repro. | |
| 45 | placeholder: | | |
| 46 | 1. Start the app with ... | |
| 47 | 2. Open ... | |
| 48 | 3. Disconnect the network | |
| 49 | 4. Reconnect and send another prompt | |
| 50 | validations: | |
| 51 | required: true | |
| 52 | ||
| 53 | - type: textarea | |
| 54 | id: expected | |
| 55 | attributes: | |
| 56 | label: Expected behavior | |
| 57 | placeholder: The thread should resume normally and accept the new message. | |
| 58 | validations: | |
| 59 | required: true | |
| 60 | ||
| 61 | - type: textarea | |
| 62 | id: actual | |
| 63 | attributes: | |
| 64 | label: Actual behavior | |
| 65 | placeholder: The composer clears, no new turn starts, and the session stays in a pending state. | |
| 66 | validations: | |
| 67 | required: true | |
| 68 | ||
| 69 | - type: dropdown | |
| 70 | id: impact | |
| 71 | attributes: | |
| 72 | label: Impact | |
| 73 | description: How bad is this in practice? | |
| 74 | options: | |
| 75 | - Blocks work completely | |
| 76 | - Major degradation or frequent failure | |
| 77 | - Minor bug or occasional failure | |
| 78 | - Cosmetic issue | |
| 79 | validations: | |
| 80 | required: true | |
| 81 | ||
| 82 | - type: input | |
| 83 | id: version | |
| 84 | attributes: | |
| 85 | label: Version or commit | |
| 86 | description: Release version, commit SHA, or branch name if known. | |
| 87 | placeholder: main @ abc1234 | |
| 88 | ||
| 89 | - type: input | |
| 90 | id: environment | |
| 91 | attributes: | |
| 92 | label: Environment | |
| 93 | description: OS, browser or desktop app version, Node/Bun version, provider/model if relevant. | |
| 94 | placeholder: macOS 15.3, Chrome 135, Bun 1.3.9, Codex app-server ... | |
| 95 | ||
| 96 | - type: textarea | |
| 97 | id: logs | |
| 98 | attributes: | |
| 99 | label: Logs, stack traces, or screenshots | |
| 100 | description: Paste the most relevant output only. Redact secrets. | |
| 101 | render: shell | |
| 102 | ||
| 103 | - type: textarea | |
| 104 | id: workaround | |
| 105 | attributes: | |
| 106 | label: Workaround | |
| 107 | description: If you found a temporary workaround, include it. | |
| 108 | placeholder: Restarting the provider session clears the stuck state. |
.github/ISSUE_TEMPLATE/feature_request.yml created+101| ... | ... | @@ -0,0 +1,101 @@ |
| 1 | name: Feature request | |
| 2 | description: Propose a scoped improvement or new capability. | |
| 3 | title: "[Feature]: " | |
| 4 | labels: | |
| 5 | - enhancement | |
| 6 | - needs-triage | |
| 7 | body: | |
| 8 | - type: markdown | |
| 9 | attributes: | |
| 10 | value: | | |
| 11 | Use this form for new capabilities or meaningful improvements to existing behavior. | |
| 12 | This repo is still early. Small, concrete requests that clearly explain the problem and scope are much easier to evaluate. | |
| 13 | ||
| 14 | - type: checkboxes | |
| 15 | id: checks | |
| 16 | attributes: | |
| 17 | label: Before submitting | |
| 18 | options: | |
| 19 | - label: I searched existing issues and did not find a duplicate. | |
| 20 | required: true | |
| 21 | - label: I am describing a concrete problem or use case, not just a vague idea. | |
| 22 | required: true | |
| 23 | ||
| 24 | - type: dropdown | |
| 25 | id: area | |
| 26 | attributes: | |
| 27 | label: Area | |
| 28 | description: Which part of the project would this change affect? | |
| 29 | options: | |
| 30 | - apps/web | |
| 31 | - apps/server | |
| 32 | - apps/desktop | |
| 33 | - packages/contracts or packages/shared | |
| 34 | - Build, CI, or release tooling | |
| 35 | - Docs | |
| 36 | - Not sure | |
| 37 | validations: | |
| 38 | required: true | |
| 39 | ||
| 40 | - type: textarea | |
| 41 | id: problem | |
| 42 | attributes: | |
| 43 | label: Problem or use case | |
| 44 | description: What are you trying to do? What is hard, slow, or impossible today? | |
| 45 | placeholder: I want to reconnect to an existing provider session after a browser refresh without losing the current thread state. | |
| 46 | validations: | |
| 47 | required: true | |
| 48 | ||
| 49 | - type: textarea | |
| 50 | id: proposal | |
| 51 | attributes: | |
| 52 | label: Proposed solution | |
| 53 | description: Describe the behavior, API, or UX you want. | |
| 54 | placeholder: Persist enough session metadata so the client can discover and reattach to the active provider session on load. | |
| 55 | validations: | |
| 56 | required: true | |
| 57 | ||
| 58 | - type: textarea | |
| 59 | id: value | |
| 60 | attributes: | |
| 61 | label: Why this matters | |
| 62 | description: Who benefits, and what outcome does this unlock? | |
| 63 | placeholder: This would make reconnects predictable during network drops and reduce accidental duplicate sessions. | |
| 64 | validations: | |
| 65 | required: true | |
| 66 | ||
| 67 | - type: textarea | |
| 68 | id: scope | |
| 69 | attributes: | |
| 70 | label: Smallest useful scope | |
| 71 | description: What is the narrowest version of this request that would still solve your problem? | |
| 72 | placeholder: A first pass only needs to support restoring the active session for the current thread. | |
| 73 | validations: | |
| 74 | required: true | |
| 75 | ||
| 76 | - type: textarea | |
| 77 | id: alternatives | |
| 78 | attributes: | |
| 79 | label: Alternatives considered | |
| 80 | description: Workarounds, prior art, or other approaches you considered. | |
| 81 | placeholder: I currently work around this by manually restarting the provider session, but that loses in-flight context. | |
| 82 | ||
| 83 | - type: textarea | |
| 84 | id: tradeoffs | |
| 85 | attributes: | |
| 86 | label: Risks or tradeoffs | |
| 87 | description: What costs, complexity, or edge cases should be considered? | |
| 88 | placeholder: This may require careful handling when the underlying provider session has already exited. | |
| 89 | ||
| 90 | - type: textarea | |
| 91 | id: references | |
| 92 | attributes: | |
| 93 | label: Examples or references | |
| 94 | description: Links, screenshots, mockups, or comparable tools. | |
| 95 | ||
| 96 | - type: checkboxes | |
| 97 | id: contribution | |
| 98 | attributes: | |
| 99 | label: Contribution | |
| 100 | options: | |
| 101 | - label: I would be open to helping implement this. |
.github/workflows/issue-labels.yml created+75| ... | ... | @@ -0,0 +1,75 @@ |
| 1 | name: Issue Labels | |
| 2 | ||
| 3 | on: | |
| 4 | push: | |
| 5 | branches: | |
| 6 | - main | |
| 7 | paths: | |
| 8 | - .github/ISSUE_TEMPLATE/** | |
| 9 | - .github/workflows/issue-labels.yml | |
| 10 | workflow_dispatch: | |
| 11 | ||
| 12 | permissions: | |
| 13 | issues: write | |
| 14 | ||
| 15 | jobs: | |
| 16 | sync: | |
| 17 | name: Sync issue labels | |
| 18 | runs-on: ubuntu-24.04 | |
| 19 | steps: | |
| 20 | - name: Ensure managed issue labels exist | |
| 21 | uses: actions/github-script@v7 | |
| 22 | with: | |
| 23 | script: | | |
| 24 | const managedLabels = [ | |
| 25 | { | |
| 26 | name: "bug", | |
| 27 | color: "d73a4a", | |
| 28 | description: "Something is broken or behaving incorrectly.", | |
| 29 | }, | |
| 30 | { | |
| 31 | name: "enhancement", | |
| 32 | color: "a2eeef", | |
| 33 | description: "Requested improvement or new capability.", | |
| 34 | }, | |
| 35 | { | |
| 36 | name: "needs-triage", | |
| 37 | color: "fbca04", | |
| 38 | description: "Issue needs maintainer review and initial categorization.", | |
| 39 | }, | |
| 40 | ]; | |
| 41 | ||
| 42 | for (const label of managedLabels) { | |
| 43 | try { | |
| 44 | const { data: existing } = await github.rest.issues.getLabel({ | |
| 45 | owner: context.repo.owner, | |
| 46 | repo: context.repo.repo, | |
| 47 | name: label.name, | |
| 48 | }); | |
| 49 | ||
| 50 | if ( | |
| 51 | existing.color !== label.color || | |
| 52 | (existing.description ?? "") !== label.description | |
| 53 | ) { | |
| 54 | await github.rest.issues.updateLabel({ | |
| 55 | owner: context.repo.owner, | |
| 56 | repo: context.repo.repo, | |
| 57 | name: label.name, | |
| 58 | color: label.color, | |
| 59 | description: label.description, | |
| 60 | }); | |
| 61 | } | |
| 62 | } catch (error) { | |
| 63 | if (error.status !== 404) { | |
| 64 | throw error; | |
| 65 | } | |
| 66 | ||
| 67 | await github.rest.issues.createLabel({ | |
| 68 | owner: context.repo.owner, | |
| 69 | repo: context.repo.repo, | |
| 70 | name: label.name, | |
| 71 | color: label.color, | |
| 72 | description: label.description, | |
| 73 | }); | |
| 74 | } | |
| 75 | } |