commit 415a550db68b43a152ad5b756f4b919ae67f3045 from: ale date: Thu Jul 30 22:11:26 2026 UTC Arregla el autocompletado de slug (se pegaba en la primera letra) El "eco" del Input.Changed que dispara asignar slug-input.value programáticamente se procesa async, así que una bandera que se prendía y apagaba en el mismo handler síncrono no llegaba a tiempo: para cuando se procesaba el evento de eco, la bandera ya estaba en False de nuevo, y quedaba marcado como "tocado a mano" tras la primera letra. Ahora compara el valor contra el último slug que puse yo mismo, en vez de una bandera transitoria. commit - 220472d4062987e9fe737a17983ac824114b2ec7 commit + 415a550db68b43a152ad5b756f4b919ae67f3045 blob - 27ea43156dda573478d16fca007b11c95b286de6 blob + c120aedbd6504b476dc9f676c10aab8c3c077cdf --- nezzontli_ctl/screens/album.py +++ nezzontli_ctl/screens/album.py @@ -36,10 +36,13 @@ class NewAlbumScreen(Screen): yield Static("(ninguna carpeta elegida)", id="folder-summary") yield Button("Continuar →", id="continue-button", variant="primary", disabled=True) + _last_auto_slug = None + def on_input_changed(self, event: Input.Changed) -> None: if event.input.id == "title-input" and not self._slug_touched: - self.query_one("#slug-input", Input).value = content.slugify(event.value) - elif event.input.id == "slug-input": + self._last_auto_slug = content.slugify(event.value) + self.query_one("#slug-input", Input).value = self._last_auto_slug + elif event.input.id == "slug-input" and event.value != self._last_auto_slug: self._slug_touched = True def on_button_pressed(self, event: Button.Pressed) -> None: blob - 71daeae1457eea579aacea9ea681fd066d517473 blob + 270f8d92b763d235d0362cd824cf0ed3cf95a210 --- nezzontli_ctl/screens/page.py +++ nezzontli_ctl/screens/page.py @@ -67,10 +67,13 @@ class NewPageScreen(Screen): self.query_one("#related-label").display = False related_list.display = False + _last_auto_slug = None + def on_input_changed(self, event: Input.Changed) -> None: if event.input.id == "title-input" and not self._slug_touched: - self.query_one("#slug-input", Input).value = content.slugify(event.value) - elif event.input.id == "slug-input": + self._last_auto_slug = content.slugify(event.value) + self.query_one("#slug-input", Input).value = self._last_auto_slug + elif event.input.id == "slug-input" and event.value != self._last_auto_slug: self._slug_touched = True def on_button_pressed(self, event: Button.Pressed) -> None: blob - 7b07c4b7ccd0872de87bd118737c0d9f06f914dc blob + 51cee41e2bf7261fe4dcf7c1a8c1ba0e3cca852b --- nezzontli_ctl/screens/post.py +++ nezzontli_ctl/screens/post.py @@ -44,10 +44,13 @@ class NewPostScreen(Screen): def on_mount(self) -> None: self.query_one("#comments-fields").display = False + _last_auto_slug = None + def on_input_changed(self, event: Input.Changed) -> None: if event.input.id == "title-input" and not self._slug_touched: - self.query_one("#slug-input", Input).value = content.slugify(event.value) - elif event.input.id == "slug-input": + self._last_auto_slug = content.slugify(event.value) + self.query_one("#slug-input", Input).value = self._last_auto_slug + elif event.input.id == "slug-input" and event.value != self._last_auto_slug: self._slug_touched = True def on_switch_changed(self, event: Switch.Changed) -> None: