Skip to content

fix(sites): stop treating SQLite as a service a project installs - #1404

Merged
geodro merged 3 commits into
mainfrom
fix/1398-sqlite-is-not-a-service
Aug 8, 2026
Merged

fix(sites): stop treating SQLite as a service a project installs#1404
geodro merged 3 commits into
mainfrom
fix/1398-sqlite-is-not-a-service

Conversation

@geodro

@geodro geodro commented Aug 8, 2026

Copy link
Copy Markdown
Member

A site page showed sqlite as a service that was not installed, with an offer to install it. There is nothing to install: sqlite has no preset, is not among the default preset names, and never runs in a container. It is a file the application opens.

It got there because the database step offered it to every framework, hardcoded at the top of the list in Go, and the choice was then written into .lerd.yaml as a services entry alongside the services lerd really does run. Everything downstream treated it as one, down to the card whose vocabulary of installed, running and stopped applies to none of it.

Which databases a framework can use is the definition's to declare, like everything else about how it is wired, so the option now comes from a declared sqlite service and a framework declaring none does not offer it. A project lerd recognises no framework for keeps the option, since nothing has declared otherwise and a file database is a reasonable answer for it. No published definition declares one yet, so this takes the option away until they do, which is the point: it was being offered to frameworks that cannot use it.

Choosing it records nothing. The project's own configuration already says it is on SQLite, which is what lerd reads to answer which database a site uses, so recording it a second time only creates an entry to explain away.

Projects carrying the entry from an older lerd are unchanged on disk and it is ignored where it is found, so the phantom disappears without rewriting anyone's file. Verified against a real site whose .lerd.yaml still lists sqlite: its services read mailpit and postgres, with no sqlite among them, and the other sites are untouched.

Closes #1398

A site page showed sqlite as a service that was not installed, with an offer to install it. There is nothing to install: sqlite has no preset, is not among the default preset names, and never runs in a container. It is a file the application opens.

It got there because the database step offered it to every framework, hardcoded at the top of the list in Go, and the choice was then written into .lerd.yaml as a services entry alongside the services lerd really does run. Everything downstream treated it as one, down to the card whose vocabulary of installed, running and stopped applies to none of it.

Which databases a framework can use is the definition's to declare, like everything else about how it is wired, so the option now comes from a declared sqlite service and a framework declaring none does not offer it. A project lerd recognises no framework for keeps the option, since nothing has declared otherwise and a file database is a reasonable answer for it.

Choosing it records nothing. The project's own configuration already says it is on SQLite, which is what lerd reads to answer which database a site uses, so recording it a second time only creates an entry to explain away. Projects carrying the entry from an older lerd are unchanged on disk and it is ignored where it is found, so the phantom disappears without rewriting anyone's file.
@geodro
geodro requested a review from a team as a code owner August 8, 2026 08:25
geodro added 2 commits August 8, 2026 11:32
The wizard recombines the database pick with the other selections into the services list saved to .lerd.yaml, and appended the pick unconditionally, so choosing SQLite still recorded it. That is the entry the rest of this change exists to stop producing, reached by the path most projects actually take.

The recombination moves into a function of its own so the rule is stated once and can be tested, rather than sitting inline in a wizard that needs a terminal to run.
@geodro
geodro merged commit ea8d935 into main Aug 8, 2026
3 checks passed
@geodro
geodro deleted the fix/1398-sqlite-is-not-a-service branch August 8, 2026 08:43
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.

fix(sites): sqlite is offered by every framework and recorded as a service it is not

1 participant