Skip to content

fix(config): name the unknown field when a task config doesn't parse - #815

Merged
wan9chi merged 3 commits into
voidzero-dev:mainfrom
tlq5l:fix/task-config-unknown-field-2635
Oct 19, 2026
Merged

wan9chi merged 3 commits into
voidzero-dev:mainfrom
tlq5l:fix/task-config-unknown-field-2635

Conversation

@tlq5l

@tlq5l tlq5l commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Refs voidzero-dev/vite-plus#2635

Motivation

A mistyped setting in a task, such as cache: { outputs: ["dist/**"] } (the field is output), fails with an error that names neither the key nor what is accepted:

* data did not match any variant of untagged enum UserTaskDefinition

UserTaskDefinition and UserCacheConfig were #[serde(untagged)], which discards each variant's own error. They now pick the variant from the value's type, so the real error comes through:

* unknown field `outputs`, expected one of `env`, `untrackedEnv`, `input`, `output`, `remote`

Valid configs parse as before and run-config.ts is unchanged. The error still doesn't name the task; that needs path tracking in the config loaders.

The main report in the issue (a cache hit that doesn't restore files) is already fixed by #461.

AI-assisted with Claude Opus 5.5.

tlq5l and others added 3 commits October 7, 2026 04:04
A mistyped task setting such as `cache: { outputs: [...] }` failed with
"data did not match any variant of untagged enum UserTaskDefinition".
Deserialize `UserTaskDefinition` and `UserCacheConfig` by value type so
the error of the form the user wrote is shown instead.

Refs voidzero-dev/vite-plus#2635

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Replace the hand-written `Visitor` impls for `UserTaskDefinition` and
`UserCacheConfig` with `serde_untagged::UntaggedEnumVisitor`. Error
messages are unchanged.

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

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedcargo/​serde-untagged@​0.1.910010093100100

View full report

@wan9chi wan9chi left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you! I pushed to simplify a little bit with serde-untagged.

@wan9chi
wan9chi merged commit 8db455e into voidzero-dev:main Oct 19, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants