Skip to content

[pull] main from tldraw:main#554

Merged
pull[bot] merged 4 commits into
code:mainfrom
tldraw:main
May 20, 2026
Merged

[pull] main from tldraw:main#554
pull[bot] merged 4 commits into
code:mainfrom
tldraw:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented May 20, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

mimecuvalo and others added 4 commits May 20, 2026 15:18
i keep reaching for editor but it's never there when i need it

### Change type

- [ ] `bugfix`
- [ ] `improvement`
- [ ] `feature`
- [ ] `api`
- [x] `other`
Closes #8823

The Copy markdown button on docs example pages (e.g.
https://tldraw.dev/examples/z-order) was leaving out the main component
file. You'd get the description prose plus any additional code files
(like `z-order.css`), but the actual `App.tsx` / `ZOrderExample.tsx` was
missing.

### Change type

- [x] `other`

### Root cause

`buildFullMarkdown` in `apps/docs/components/docs/docs-header.tsx` gates
the main component on both fields:

```ts
if (article.componentCode && article.componentCodeFilename) {
    codeFiles.push({ name: article.componentCodeFilename, content: article.componentCode })
}
```

The article type has `componentCodeFilename`, and `generateSection.ts`
populates it when reading the example folder, but the SQLite articles
table is missing that column and the INSERT in `addContent.ts` never
passes it. So at read time it was always `undefined`, the guard failed,
and the main file was silently dropped — only the additional code files
survived.

### Fix

- Add `componentCodeFilename TEXT` to the `articles` schema in
`apps/docs/scripts/lib/connect.ts`.
- Include `componentCodeFilename` in the INSERT column list and bind
`article.componentCodeFilename` in `apps/docs/utils/addContent.ts`.

### Test plan

- [ ] `yarn refresh-content` (or rebuild the docs DB) so the new column
is created and populated.
- [ ] `yarn dev-docs`, open http://localhost:3000/examples/z-order,
click "Copy markdown", and confirm the clipboard now contains a fenced
`tsx` block with `// ZOrderExample.tsx` and the component source, in
addition to the prose and `z-order.css` block.
- [ ] Repeat on another example with extra files (e.g. anything in
`editor-api/`) to confirm both the main file and additional files
appear.
)

In order to make the tldraw UI reachable to mobile screen readers, this
PR marks the `tlui-layout` wrapper with `role="document"`. The outer
`tl-container` has `role="application"`, which VoiceOver (iOS) and
TalkBack (Android) do not announce at all, leaving the toolbar, menus,
and dialogs effectively invisible to mobile assistive tech. Per the [MDN
guidance](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/application_role#description),
interspersing `role="document"` inside an `application` region restores
normal document semantics for non-application UI while leaving the
application's keyboard-interaction model on the outer container
untouched. Closes #8849.

### Change type

- [x] `bugfix`

### Test plan

1. Open the examples app with VoiceOver enabled on iOS Safari and
confirm the toolbar, page menu, and dialogs are announced and navigable.
2. Repeat on Android Chrome with TalkBack.
3. With a desktop screen reader (NVDA or macOS VoiceOver), confirm the
canvas is still announced as an application and shapes are still
keyboard-interactive.

- [ ] Unit tests
- [ ] End to end tests

### Release notes

- Mark the tldraw UI layer with `role="document"` so toolbars, menus,
and dialogs stay reachable to mobile screen readers like VoiceOver and
TalkBack, which do not announce the outer canvas `role="application"`.

### Code changes

| Section       | LOC change |
| ------------- | ---------- |
| Core code     | +6 / -0    |
| Documentation | +1 / -0    |
)

## Summary

Fixes #8869. YAML issue form templates fail GitHub validation because of
`title: ''` — empty strings are not allowed for the `title` key per
[GitHub's
docs](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/common-validation-errors-when-creating-issue-forms).
When validation fails, templates are hidden from the new issue chooser.

- Removed `title: ''` from all four templates.
- Removed `type: Example` from `example_request.yml` — Bug, Feature, and
Task are configured org issue types, but Example is not.
- Kept `type: Bug|Feature|Task` in the other three templates (these are
valid; recent issues like #8898, #8894, #8889 carry these types).

### Change type

- [x] `bugfix`

## Test plan

- [ ] All four templates appear in the new issue chooser on GitHub
- [ ] No validation banner shown when viewing template files on GitHub
- [ ] Submit a test bug report successfully and confirm Bug type is
applied
@pull pull Bot locked and limited conversation to collaborators May 20, 2026
@pull pull Bot added the ⤵️ pull label May 20, 2026
@pull pull Bot had a problem deploying to bemo-canary May 20, 2026 21:13 Failure
@pull pull Bot merged commit 2a58dc2 into code:main May 20, 2026
4 of 6 checks passed
@pull pull Bot had a problem deploying to deploy-production May 20, 2026 21:13 Failure
@pull pull Bot had a problem deploying to vsce publish May 20, 2026 21:13 Failure
@pull pull Bot had a problem deploying to npm deploy May 20, 2026 21:13 Failure
@pull pull Bot had a problem deploying to deploy-staging May 20, 2026 21:13 Failure
@pull pull Bot had a problem deploying to deploy-staging May 20, 2026 21:13 Error
@pull pull Bot had a problem deploying to bemo-canary May 20, 2026 21:13 Failure
@pull pull Bot had a problem deploying to npm deploy May 20, 2026 21:13 Failure
@pull pull Bot had a problem deploying to deploy-staging May 21, 2026 00:53 Error
@pull pull Bot temporarily deployed to e2e-dotcom May 21, 2026 02:38 Inactive
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants