informedica / informedica/GenPRES
feat(api): tell an open tab that the server changed, and offer a reload
@halcwb is already working on this.
Since Sep 16, 2026.
- Dominant language
- F#
- Stars
- 47
- Forks
- 12
- Avg merge
- 4h 51m
- Merged PRs (30d)
- 285
Description
Is your feature request related to a problem? Please describe.
The client and the server share one contract, so a wire change fails at compile time, never at runtime, as long as both run the same build. A browser tab that stays open across a deployment does not: it keeps the previous bundle and sends the previous commands. The server then refuses the call as it cannot read it, the page shows the general error, and only a reload puts the tab on the new bundle (the server's Cache-Control on index.html sees to that). Nothing tells the User that a reload is what is needed. Every step of plan 667 changed the wire in this way (the plan's fields, the signed version's content, the command names); so did plan 654. Raised in review of #681.
Describe the solution you'd like
A version the client learns at start-up and the server names on every reply, or on a refusal it cannot read: ServerSettings gains the build's version, every Reply carries it or a refusal names it, and the client, on a mismatch, tells the User once that the application was updated and offers the reload; a computing call that fails to deserialize is treated the same. No compatibility handlers for old commands: one server, one client, the tab reloads.
Describe alternatives you've considered
- Keeping old command shapes alive on the server for a deployment window. Rejected: two contracts to test for every change, in a medical device where the contract is the safety boundary.
- Reloading silently on a mismatch. Rejected: a half-entered prescription would be lost without a word.
Additional context
The version to compare exists already: Directory.Build.props is the one source, checked by CheckVersions, and the Docker image is labelled with it.
🤖 Generated with Claude Code
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.