# Check the whole saved file name: aliases, URL refresh, extensionless rows · dara/icarus

[View on GitCafe](https://git.cafe/dara/icarus/commit/5d270782463807cf9d0e8dd56e9eb063085f7737)

Repository: [dara/icarus](https://git.cafe/dara/icarus)

Visibility: public

Requested revision: 5d270782463807cf9d0e8dd56e9eb063085f7737

Requested commit: 5d270782463807cf9d0e8dd56e9eb063085f7737

Commit: 5d270782463807cf9d0e8dd56e9eb063085f7737

Tree: 233cef71d940f8958c8685b71129780f9cff4aaf

Author: Dara Adedeji

Committer: Dara Adedeji

## Message

```
Check the whole saved file name: aliases, URL refresh, extensionless rows

Astra's review of #356 found three ways a name could still get past the
check. An old build's alias for a picture uses the image's own id, which was
never checked. getAssetUrl answered by that alias. An extensionless row
whose id carries its own extension ("payload.bat") got a URL.

isSavableImageFileName now checks the name the app will actually write: a
safe id, and an image extension, or no extension at all on an id without a
dot. Aliases are only made, and URLs only refreshed, under such a name.
Characters Windows refuses in a file name are refused in ids too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

```

## Parents

- [8a330abb79f0a56271d79e4e8a06fa76b8436508](https://git.cafe/dara/icarus/commit/8a330abb79f0a56271d79e4e8a06fa76b8436508?format=markdown)

[Source at this commit](https://git.cafe/dara/icarus/tree/5d270782463807cf9d0e8dd56e9eb063085f7737?format=markdown)
