zed/crates/repl/src
Matthew Chisolm c2a610f7eb
Some checks are pending
run_tests / check_wasm (push) Blocked by required conditions
run_tests / check_dependencies (push) Blocked by required conditions
run_tests / check_docs (push) Blocked by required conditions
run_tests / check_licenses (push) Blocked by required conditions
run_tests / check_scripts (push) Blocked by required conditions
run_tests / check_postgres_and_protobuf_migrations (push) Blocked by required conditions
run_tests / extension_tests (push) Blocked by required conditions
run_tests / tests_pass (push) Blocked by required conditions
Congratsbot / check-author (push) Waiting to run
Congratsbot / congrats (push) Blocked by required conditions
deploy_nightly_docs / deploy_docs (push) Waiting to run
run_tests / orchestrate (push) Waiting to run
run_tests / check_style (push) Waiting to run
run_tests / clippy_windows (push) Blocked by required conditions
run_tests / clippy_linux (push) Blocked by required conditions
run_tests / clippy_mac (push) Blocked by required conditions
run_tests / clippy_mac_x86_64 (push) Blocked by required conditions
run_tests / run_tests_windows (push) Blocked by required conditions
run_tests / run_tests_linux (push) Blocked by required conditions
run_tests / run_tests_mac (push) Blocked by required conditions
run_tests / miri_scheduler (push) Blocked by required conditions
run_tests / doctests (push) Blocked by required conditions
run_tests / check_workspace_binaries (push) Blocked by required conditions
run_tests / build_visual_tests_binary (push) Blocked by required conditions
Add sextant glyph support to terminal rendering (#51072)
The Zed integrated terminal shows a broken QR code for apps with Expo
SDK 55. This PR custom-paints the terminal block and sextant glyphs used
for QR codes rather than relying on font glyphs.

| SDK 55 Before | SDK 55 After | SDK 55 in Ghostty |
| --- | --- | --- |
| <img width="581" height="536" alt="Zed Nightly"
src="https://github.com/user-attachments/assets/11054401-e947-4628-918a-0088042ccbf9"
/> | <img width="563" height="535" alt="Zed dev build"
src="https://github.com/user-attachments/assets/22e0bed3-9927-436d-8e0b-1ad0839f7bee"
/> | <img width="576" height="502" alt="Ghostty"
src="https://github.com/user-attachments/assets/c5f544d8-43e5-4dad-8bcd-8a36c401e9a7"
/> |

### Other notes
- Expo recently merged https://github.com/expo/expo/pull/46148, which
causes Expo SDK 56 to fall back to the old QR code behavior when used in
Zed. Once this PR merges, Expo can remove that fallback and use the
compact QR code path in Zed again for Expo SDK 56+.

| Current Fallback QR Code for SDK 54 and 56 | Fallback with this PR |
| -- | -- |
| <img width="744" height="684" alt="SCR-20260622-jwco"
src="https://github.com/user-attachments/assets/414896aa-52bc-4de7-a6b9-59cd5af08de0"
/> | <img width="616" height="752" alt="SCR-20260622-kfjh"
src="https://github.com/user-attachments/assets/accbef7a-3365-480f-add3-08910141afa5"
/> |

This PR now also fixes TUIs in the integrated terminal for users using
some fonts.
| OpenCode w/ Monaco before change | OpenCode w/ Monaco after change |
| --- | --- |
| <img width="1512" height="982" alt="image"
src="https://github.com/user-attachments/assets/a40f01a6-adf9-4e8b-909a-be53945eb813"
/> | <img width="1512" height="982" alt="image"
src="https://github.com/user-attachments/assets/b40bb22c-ef7e-466a-9bcf-46eb951087cd"
/> |

Finally, shade characters are now handled in the integrated terminal.

| btop with tty graph before change | btop with tty graph after change |
| --- | --- |
| <img width="1516" height="863" alt="SCR-20260724-irpr-2"
src="https://github.com/user-attachments/assets/afb77f01-6d3d-428a-b1be-7abb3d0e3d4d"
/> | <img width="1516" height="876" alt="SCR-20260724-ises-2"
src="https://github.com/user-attachments/assets/42262858-70da-4ba2-a5e6-96243fcfaadd"
/> |

#### This PR
- Adds custom painting for terminal bitmap glyphs used by QR renderers:
`█`, `▀`, `▄`, `▌`, `▐`, and U+1FB00..U+1FB3B sextants
- Adds tests for handling sextants, blocks/half-blocks, and adjacent
block merging

Closes #50158
Closes #58830 

Before you mark this PR as ready for review, make sure that you have:
- [X] Added a solid test coverage and/or screenshots from doing manual
testing
- [X] Done a self-review taking into account security and performance
aspects
- [X] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- Fixed QR code rendering for Expo SDK 55 apps
- Fixed rendering TUIs in the integrated terminal for some users

---------

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
2026-07-25 07:32:05 +00:00
..
components picker: Simplify presentation and sizing APIs, add preview-aware defaults (#59719) 2026-06-23 09:33:47 +00:00
kernels multi_buffer: Don't eagerly clone BufferSnapshot in range_to_buffer_ranges (#59190) 2026-06-12 12:27:28 +00:00
notebook repl: Show add-cell controls in empty notebooks (#61329) 2026-07-24 11:08:09 +00:00
outputs Add sextant glyph support to terminal rendering (#51072) 2026-07-25 07:32:05 +00:00
components.rs
jupyter_settings.rs Automate settings registration (#42238) 2025-11-07 22:27:14 +00:00
notebook.rs
outputs.rs terminal: Add backend-neutral terminal types (#57483) 2026-06-01 14:49:31 +00:00
repl.rs Log worst hanging tasks and actions (#57835) 2026-06-02 12:03:05 +00:00
repl_editor.rs repl: Use uv to install ipykernel for uv-managed venv (#51897) 2026-04-06 10:53:13 -05:00
repl_sessions_ui.rs language: Refactor available_languages into its own struct (#61388) 2026-07-23 11:22:43 +00:00
repl_settings.rs repl: Fix image scaling (#48435) 2026-03-04 07:33:40 +00:00
repl_store.rs multi_buffer: Don't eagerly clone BufferSnapshot in range_to_buffer_ranges (#59190) 2026-06-12 12:27:28 +00:00
session.rs editor: Add preserve scroll strategy for go to definition (#55036) 2026-04-29 07:29:15 +00:00