Skip to content

Commit 11d8d29

Browse files
committed
chore: bump to 1.0.0-rc.10
1 parent 1f4274e commit 11d8d29

5 files changed

Lines changed: 18 additions & 14 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## [1.0.0-rc.10] - 2026-03-23
4+
5+
### Fixed
6+
7+
- Backspace/Delete in properties panel text fields no longer deletes the selected canvas object
8+
39
## [1.0.0-rc.9] - 2026-03-22
410

511
### Added

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
**twig**  ·  a presentation editor that looks the same everywhere
55

6-
[![Version](https://img.shields.io/badge/version-1.0.0--rc.9-8b5cf6?style=flat-square)](https://github.com/boomzero/twig/releases)
6+
[![Version](https://img.shields.io/badge/version-1.0.0--rc.10-8b5cf6?style=flat-square)](https://github.com/boomzero/twig/releases)
77
[![License: GPL v3](https://img.shields.io/badge/license-GPLv3-blue?style=flat-square)](LICENSE)
88
[![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-555?style=flat-square)](#installation)
99

TWIG_SPEC.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# .tb File Format
22

3-
> This document describes the `.tb` format as implemented in **twig 1.0.0-rc.9**.
3+
> This document describes the `.tb` format as implemented in **twig 1.0.0-rc.10**.
44
55
A `.tb` file is a standard SQLite database that stores a twig presentation. You can create, read, or modify one with any SQLite tooling — no proprietary library required.
66

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "twig",
3-
"version": "1.0.0-rc.9",
3+
"version": "1.0.0-rc.10",
44
"description": "A presentation editor built with Electron, Svelte, and fabric.js",
55
"main": "./out/main/index.js",
66
"author": "boomzero",

src/renderer/src/App.svelte

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3992,9 +3992,11 @@
39923992
}
39933993
39943994
function handleKeyDown(event: KeyboardEvent): void {
3995+
const nativeTextTarget = isNativeTextTarget(event.target)
3996+
39953997
// Cmd/Ctrl+Z: Undo
39963998
if ((event.metaKey || event.ctrlKey) && !event.shiftKey && event.key.toLowerCase() === 'z') {
3997-
if (!isNativeTextTarget(event.target) && !activeTextObject?.isEditing) {
3999+
if (!nativeTextTarget && !activeTextObject?.isEditing) {
39984000
event.preventDefault()
39994001
performUndo()
40004002
return
@@ -4006,7 +4008,7 @@
40064008
((event.metaKey || event.ctrlKey) && event.shiftKey && event.key.toLowerCase() === 'z') ||
40074009
(event.ctrlKey && !event.metaKey && !event.shiftKey && event.key.toLowerCase() === 'y')
40084010
) {
4009-
if (!isNativeTextTarget(event.target) && !activeTextObject?.isEditing) {
4011+
if (!nativeTextTarget && !activeTextObject?.isEditing) {
40104012
event.preventDefault()
40114013
performRedo()
40124014
return
@@ -4022,8 +4024,8 @@
40224024
40234025
// Cmd/Ctrl+A: Select all objects on the canvas (unless editing text)
40244026
if ((event.metaKey || event.ctrlKey) && event.key === 'a') {
4025-
// Don't intercept if user is editing text - let them select text normally
4026-
if (activeTextObject && activeTextObject.isEditing) {
4027+
// Don't intercept if user is editing text - let them select text normally.
4028+
if (nativeTextTarget || (activeTextObject && activeTextObject.isEditing)) {
40274029
return
40284030
}
40294031
@@ -4041,11 +4043,7 @@
40414043
40424044
// Cmd/Ctrl+Backspace: Delete current slide (not while editing text, not last slide)
40434045
if ((event.metaKey || event.ctrlKey) && event.key === 'Backspace') {
4044-
if (
4045-
!isNativeTextTarget(event.target) &&
4046-
!activeTextObject?.isEditing &&
4047-
appState.currentSlide
4048-
) {
4046+
if (!nativeTextTarget && !activeTextObject?.isEditing && appState.currentSlide) {
40494047
event.preventDefault()
40504048
deleteSlideById(appState.currentSlide.id)
40514049
return
@@ -4054,8 +4052,8 @@
40544052
40554053
// Delete/Backspace: Delete selected object (but not while editing text)
40564054
if (event.key === 'Delete' || event.key === 'Backspace') {
4057-
// Don't delete object if user is editing text content
4058-
if (activeTextObject && activeTextObject.isEditing) {
4055+
// Let native form fields handle text deletion/editing themselves.
4056+
if (nativeTextTarget || (activeTextObject && activeTextObject.isEditing)) {
40594057
return
40604058
}
40614059
event.preventDefault()

0 commit comments

Comments
 (0)