openvibers/openvibe.news Commits
News: the sign-in link carries the path only (#129)
Changes
@@@ -54,7 +54,9 @@ function renderPage(o) {if (!o.decision) throw new TypeError('renderPage needs the gate decision');const viewer = o.viewer || { kind: 'anonymous' };const signedIn = viewer.kind === 'user';-- const loginNext = encodeURIComponent(o.path || '/');++ // The path without its query: o.path is often the whole requested URL, and a sign-in link that echoed++ // the query would put the page's words into every page of the site (SEO-7 review, 2026-10-29).++ const loginNext = encodeURIComponent(String(o.path || '/').split('?')[0] || '/');const nav = {service: 'news',apiBase: NETWORK_URL,
@@ -54,7 +54,9 @@ function renderPage(o) {
@@ -54,7 +54,9 @@ function renderPage(o) {
if (!o.decision) throw new TypeError('renderPage needs the gate decision');
if (!o.decision) throw new TypeError('renderPage needs the gate decision');
const viewer = o.viewer || { kind: 'anonymous' };
const viewer = o.viewer || { kind: 'anonymous' };
const signedIn = viewer.kind === 'user';
const signedIn = viewer.kind === 'user';
- const loginNext = encodeURIComponent(o.path || '/');
+ // The path without its query: o.path is often the whole requested URL, and a sign-in link that echoed
+ // the query would put the page's words into every page of the site (SEO-7 review, 2026-10-29).
+ const loginNext = encodeURIComponent(String(o.path || '/').split('?')[0] || '/');
const nav = {
const nav = {
service: 'news',
service: 'news',
apiBase: NETWORK_URL,
apiBase: NETWORK_URL,