fix(web): brand the page titles and give shared links a preview - #66
Merged
Conversation
The tab said "Feedback situation". It is the name in a browser tab and in a shared link preview, and it named neither the product nor whose it is. A recruiter with five tabs open has no way to tell which one this was. Titles now lead with the product: index Feedback situation -> Feedback Intelligence - Mikko Numminen desk Feedback - desk entry -> Desk entry - Feedback Intelligence snapshot Feedback situation ... -> Saved snapshot - Feedback Intelligence Both locales, and both the static <title> and the runtime pageTitle the page sets on load. The h1 keeps its functional wording: inside the app, "Palautetilanne" is what the heading is describing, and that is a different job from identifying the tab. The larger gap was that there was no link preview at all. Neither page carried og:title, og:description, twitter:card or even a description meta; the head was charset, viewport and title. A crawler never runs the script that sets document.title, so the static markup was all it ever saw. Both pages now carry description, canonical, Open Graph and Twitter card tags. Saved snapshots get the same treatment and needed it most, being the artefact most likely to be pasted into a chat or an email. Canonicals point at mikkonumminen.dev/feedback and /feedback/desk rather than the azurestaticapps.net host, so the shared identity is the owned domain. The /feedback/desk route is added in the mikkonumminen.dev repo and both should land together. No og:image anywhere: there is no asset to point at, and a broken image previews worse than none. twitter:card is summary rather than summary_large_image for the same reason. dotnet build clean, 274 tests pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The tab said "Feedback situation". That string is the name in a browser tab and in a shared link preview, and it named neither the product nor whose it is. A recruiter with five tabs open has no way to tell which one this was.
Titles now lead with the product
Feedback situationFeedback Intelligence — Mikko NumminenFeedback — desk entryDesk entry — Feedback IntelligenceFeedback situation — saved snapshotSaved snapshot — Feedback IntelligenceBoth locales, and both the static
<title>and the runtimepageTitlethe page assigns on load.The
h1keeps its functional wording. Inside the app, "Palautetilanne" is what the heading is describing — identifying the tab is a different job from labelling the view.The larger gap: there was no link preview at all
Neither page carried
og:title,og:description,twitter:card, or even adescriptionmeta. The whole head was charset, viewport and title.That matters more than the wording, because a crawler never runs the script that sets
document.title— the static markup is all it ever sees. So a pasted link showed a bare URL with no card.Both pages now carry description, canonical, Open Graph and Twitter card tags. Saved snapshots get the same treatment and needed it most, being the artefact most likely to end up pasted into a chat or an email.
Canonicals point at the owned domain
Not
azurestaticapps.net, so the shared identity is the domain rather than the host./feedback/deskdid not exist — it 404'd — and is added inmikkonumminen.devas PR #453. The two should land together, or the canonical points at a 404.No og:image, deliberately
There is no image asset in
wwwrootto point at, and a brokenog:imagepreviews worse than none.twitter:cardissummaryrather thansummary_large_imagefor the same reason. Adding a real card image would be a genuine follow-up.Verification
dotnet buildclean, 274 tests pass (170 Api + 79 Llm + 25 Generator).dist/is gitignored and rebuilt fromwwwrootbytools/publish-frontend.ps1, which copies the HTML verbatim — checked, no head rewriting — and the deploy workflow already triggers on these files. Note it also publishesindex.htmla second time asdemo.html, which inherits the fix.