Skip to content

Commit 68894b6

Browse files
Copilotsunbrye
andauthored
[2026-03-05] File upload field in issue forms and move items to iteration in Projects (#60048)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: sunbrye <56200261+sunbrye@users.noreply.github.com> Co-authored-by: sunbrye <sunbrye@github.com>
1 parent b567b80 commit 68894b6

File tree

6 files changed

+85
-5
lines changed

6 files changed

+85
-5
lines changed

content/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ shortTitle: Configure
3838

3939
{% data reusables.community.issue-forms-beta %}
4040

41-
With issue forms, you can create issue templates that have customizable web form fields. You can encourage contributors to include specific, structured information by using issue forms in your repository. Issue forms are written in YAML using the {% data variables.product.prodname_dotcom %} form schema. For more information, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema). {% data reusables.actions.learn-more-about-yaml %}
41+
With issue forms, you can create issue templates that have customizable web form fields. You can encourage contributors to include specific, structured information by using issue forms in your repository.
42+
43+
{% ifversion issue-form-upload %}Issue forms support several field types, including text inputs, dropdowns, checkboxes, and file uploads.{% endif %} Issue forms are written in YAML using the {% data variables.product.prodname_dotcom %} form schema. For more information, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema). {% data reusables.actions.learn-more-about-yaml %}
4244

4345
To use an issue form in your repository, you must create a new file and add it to the `.github/ISSUE_TEMPLATE` folder in your repository.
4446

content/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema.md

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ For each form element, you can set the following keys.
5959
6060
| Key | Description | Required | Type | Default | Valid values |
6161
| --- | ----------- | -------- | ---- | ------- | ------- |
62-
| `type` | The type of element that you want to define. | {% octicon "check" aria-label="Required" %} | String | {% octicon "dash" aria-label="Not applicable" %} | <ul><li>`checkboxes`</li><li>`dropdown`</li><li>`input`</li><li>`markdown`</li><li>`textarea`</li></ul> |
62+
| `type` | The type of element that you want to define. | {% octicon "check" aria-label="Required" %} | String | {% octicon "dash" aria-label="Not applicable" %} | <ul><li>`checkboxes`</li><li>`dropdown`</li><li>`input`</li><li>`markdown`</li><li>`textarea`</li>{% ifversion issue-form-upload %}<li>`upload`</li>{% endif %}</ul> |
6363
| `id` | The identifier for the element, except when `type` is set to `markdown`. {% data reusables.form-schema.id-must-be-unique %} If provided, the `id` is the canonical identifier for the field in URL query parameter prefills. | {% octicon "x" aria-label="Optional" %} | String | {% octicon "dash" aria-label="Not applicable" %} | {% octicon "dash" aria-label="Not applicable" %} |
6464
| `attributes` | A set of key-value pairs that define the properties of the element. | {% octicon "check" aria-label="Required" %} | Map | {% octicon "dash" aria-label="Not applicable" %} | {% octicon "dash" aria-label="Not applicable" %} |
6565
| `validations` | A set of key-value pairs that set constraints on the element. | {% octicon "x" aria-label="Optional" %} | Map | {% octicon "dash" aria-label="Not applicable" %} | {% octicon "dash" aria-label="Not applicable" %} |
@@ -73,6 +73,9 @@ You can choose from the following types of form elements. Each type has unique a
7373
| [`input`](#input) | A single-line text field. |
7474
| [`dropdown`](#dropdown) | A dropdown menu. |
7575
| [`checkboxes`](#checkboxes) | A set of checkboxes. |
76+
| {% ifversion issue-form-upload %} |
77+
| [`upload`](#upload) | A file upload field. |
78+
| {% endif %} |
7679

7780
### `markdown`
7881

@@ -266,6 +269,58 @@ body:
266269
- label: Linux
267270
```
268271

272+
{% ifversion issue-form-upload %}
273+
274+
### `upload`
275+
276+
You can use an `upload` element to add a file upload field to your form. Contributors can drag and drop files or click to browse and select files directly within the form.
277+
278+
#### Supported file types and size limits
279+
280+
The following file types are accepted, subject to the size limits below:
281+
282+
| Category | Extensions | Size limit |
283+
|-----------| ---------- | -------- |
284+
| Archives | `.zip`, `.gz`, `.tar.gz` | 25 MB |
285+
| Documents | `.pdf`, `.docx`, `.xlsx`, `.pptx` | 25 MB |
286+
| Images | `.png`, `.jpg`, `.jpeg`, `.gif`, `.svg`, `.webp` | 10 MB |
287+
| Videos | `.mp4`, `.mov`, `.webm` | 100 MB |
288+
| Text | `.json`, `.py`, `.js`, `.ts`, `.log`, `.txt`, `.csv` | 25 MB |
289+
290+
#### Attributes for `upload`
291+
292+
{% data reusables.form-schema.attributes-intro %}
293+
294+
| Key | Description | Required | Type | Default | Valid values |
295+
| --- | ----------- | -------- | ---- | ------- | ------- |
296+
| `label` | A brief description of the expected file upload, which is displayed in the form. | {% octicon "check" aria-label="Required" %} | String | {% octicon "dash" aria-label="Not applicable" %} | {% octicon "dash" aria-label="Not applicable" %} |
297+
| `description` | A description of the file upload field to provide context or guidance, which is displayed in the form. | {% octicon "x" aria-label="Optional" %} | String | Empty String | {% octicon "dash" aria-label="Not applicable" %} |
298+
299+
#### Validations for `upload`
300+
301+
{% data reusables.form-schema.validations-intro %}
302+
303+
| Key | Description | Required | Type | Default | Valid values |
304+
| --- | ----------- | -------- | ---- | ------- | ------- |
305+
{% data reusables.form-schema.required-key %}
306+
| `accept` | A comma-separated list of file extensions that are accepted. If omitted, all supported file types are accepted. | {% octicon "x" aria-label="Optional" %} | String | {% octicon "dash" aria-label="Not applicable" %} | {% octicon "dash" aria-label="Not applicable" %} |
307+
308+
#### Example of `upload`
309+
310+
```yaml copy
311+
body:
312+
- type: upload
313+
id: screenshots
314+
attributes:
315+
label: Upload relevant files
316+
description: "Drag and drop any relevant screenshots or log files."
317+
validations:
318+
required: false
319+
accept: ".png,.jpg,.gif,.log,.txt,.zip"
320+
```
321+
322+
{% endif %}
323+
269324
## Further reading
270325

271326
* [YAML](https://yaml.org)

content/issues/planning-and-tracking-with-projects/understanding-fields/about-iteration-fields.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,14 @@ You can insert breaks into your iterations to communicate when you are taking ti
6262
![Screenshot of the list of iterations for a project. On the line dividing two iterations, a button, labeled "Insert break," is outlined in orange.](/assets/images/help/issues/iteration-insert-break.png)
6363
1. Optionally, to change the duration of the break, click on the date to open the calendar. Click on the start day, then click the end day, and then click **Apply**.
6464
1. Click **Save changes**.
65+
66+
## Moving items between iterations
67+
68+
When a project view is grouped by an iteration field, you can bulk-move all items from one iteration to another. This is useful for rolling over unfinished work to the next sprint, rescheduling items during reprioritization, or clearing a backlog iteration.
69+
70+
1. Navigate to your project.
71+
1. In your project, group a view by an iteration field. For more information, see [AUTOTITLE](/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/customizing-the-table-layout#grouping-by-field-values).
72+
1. Click {% octicon "kebab-horizontal" aria-label="iteration options" %} in the group header for the iteration you want to move items from.
73+
1. Click **Move items to...**.
74+
1. Select the target iteration you want to move the items to.
75+
1. Confirm the move. All items in the group are updated to the target iteration.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Reference: https://github.com/github/releases/issues/7534
2+
# File upload field in issue forms
3+
versions:
4+
fpt: '*'
5+
ghec: '*'
6+
ghes: '>= 3.21'

data/reusables/community/issue-forms-sample.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,12 @@ body:
6363
description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com).
6464
options:
6565
- label: I agree to follow this project's Code of Conduct
66-
required: true
66+
required: true{% ifversion issue-form-upload %}
67+
- type: upload
68+
id: screenshots
69+
attributes:
70+
label: Upload screenshots
71+
description: If applicable, add screenshots to help explain your problem.
72+
validations:
73+
required: false{% endif %}
6774
```
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
1-
1. Click {% octicon "triangle-down" aria-label="View options" %} next to the name of the currently open view.
1+
1. Click **{% octicon "gear" aria-label="View options" %} View** next to the search bar of the currently open view.
22

3-
![Screenshot showing the tabs at the top of a project. The view menu icon is highlighted with an orange outline.](/assets/images/help/projects-v2/view-menu-icon.png)

0 commit comments

Comments
 (0)