From 14a69fa20c725225b67929b60ec2ed8c11f7fcc1 Mon Sep 17 00:00:00 2001 From: pkova Date: Wed, 31 May 2023 17:03:45 +0300 Subject: [PATCH 1/4] landscape: complain if vere is out of date --- ui/src/nav/Nav.tsx | 4 +- .../preferences/about-system/AboutSystem.tsx | 18 ++++++- ui/src/state/vere.ts | 53 +++++++++++++++++++ 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 ui/src/state/vere.ts diff --git a/ui/src/nav/Nav.tsx b/ui/src/nav/Nav.tsx index 3896caa2..4e676f2c 100644 --- a/ui/src/nav/Nav.tsx +++ b/ui/src/nav/Nav.tsx @@ -28,6 +28,7 @@ import { NotificationsLink } from './notifications/NotificationsLink'; import { Search } from './Search'; import { SystemPreferences } from '../preferences/SystemPreferences'; import { useSystemUpdate } from '../logic/useSystemUpdate'; +import useVereState from '../state/vere'; import { Bullet } from '../components/icons/Bullet'; import { Cross } from '../components/icons/Cross'; import MagnifyingGlass16Icon from '../components/icons/MagnifyingGlass16Icon'; @@ -138,6 +139,7 @@ export const Nav: FunctionComponent = ({ menu }) => { const dialogNavRef = useRef(null); const { disableWayfinding } = useCalm(); const { systemBlocked } = useSystemUpdate(); + const { isLatest } = useVereState(); const [dialogContentOpen, setDialogContentOpen] = useState(false); const select = useAppSearchStore((state) => state.select); @@ -188,7 +190,7 @@ export const Nav: FunctionComponent = ({ menu }) => { containerRef={dialogContentOpen ? dialogNavRef : navRef} className="flex w-full items-center space-x-2 sm:justify-center" > - + { const hash = basePike && getHash(basePike); const lag = useLag(); + const vere = useVereState.getState(); + const {isLatest, vereVersion, latestVereVersion} = vere; + return ( <>
@@ -51,6 +55,7 @@ export const AboutSystem = () => {

System update failed because your runtime was out of date.

+

Your runtime version is {vereVersion}, the latest runtime version is {latestVereVersion}.

Update your runtime or contact your hosting provider.

Once your runtime is up to date, click retry below.

diff --git a/ui/src/state/vere.ts b/ui/src/state/vere.ts new file mode 100644 index 00000000..d5b3a086 --- /dev/null +++ b/ui/src/state/vere.ts @@ -0,0 +1,53 @@ +import api from '@/api'; +import create, { SetState } from 'zustand'; +import produce from 'immer'; + +interface Vere { + cur: VereState; + next?: VereState; + set: SetState; + loaded: boolean; + isLatest: boolean; + vereVersion: string; + latestVereVersion: string; +} + +interface VereState { + rev: string; + non?: string; + zuse?: number; + arvo?: number; + lull?: number; + hoon?: number; + nock?: number; +} + +const useVereState = create((set, get) => ({ + loaded: false, + set +})) + +const fetchRuntimeVersion = () => { + api.thread({ + inputMark: 'noun', + outputMark: 'vere-update', + desk: 'base', + threadName: 'runtime-version', + body: '', + }).then((data: Vere) => { + useVereState.setState((state) => { + const vereVersion = data.cur.rev.split('/vere/~.')[1]; + const isLatest = data.next === undefined; + const latestVereVersion = !isLatest ? data.next.rev.split('/vere/~.')[1] : vereVersion + return Object.assign(data, {loaded: true, isLatest, vereVersion, latestVereVersion}); + }) + }); +} + +fetchRuntimeVersion() + +setInterval(fetchRuntimeVersion, 1800000) + +export default useVereState;; + +// window.vere = useVereState.getState; From b34a2f0ceea882cab69d7448f7394e1b7a78cf71 Mon Sep 17 00:00:00 2001 From: pkova Date: Tue, 6 Jun 2023 16:12:18 +0300 Subject: [PATCH 2/4] landscape: tweak runtime up to date logic for less pop-in --- ui/src/nav/Nav.tsx | 6 ++++-- ui/src/preferences/about-system/AboutSystem.tsx | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ui/src/nav/Nav.tsx b/ui/src/nav/Nav.tsx index 4e676f2c..7d4947c1 100644 --- a/ui/src/nav/Nav.tsx +++ b/ui/src/nav/Nav.tsx @@ -139,10 +139,12 @@ export const Nav: FunctionComponent = ({ menu }) => { const dialogNavRef = useRef(null); const { disableWayfinding } = useCalm(); const { systemBlocked } = useSystemUpdate(); - const { isLatest } = useVereState(); + const { isLatest, loaded } = useVereState(); const [dialogContentOpen, setDialogContentOpen] = useState(false); const select = useAppSearchStore((state) => state.select); + const runtimeOutOfDate = (loaded && !(isLatest)); + const menuState = menu || 'closed'; const isOpen = menuState !== 'upgrading' && menuState !== 'closed' && menuState !== 'app'; @@ -190,7 +192,7 @@ export const Nav: FunctionComponent = ({ menu }) => { containerRef={dialogContentOpen ? dialogNavRef : navRef} className="flex w-full items-center space-x-2 sm:justify-center" > - + { const lag = useLag(); const vere = useVereState.getState(); - const {isLatest, vereVersion, latestVereVersion} = vere; + const {isLatest, vereVersion, latestVereVersion, loaded} = vere; + + const runtimeUpToDate = (!loaded || isLatest) return ( <> @@ -144,7 +146,7 @@ export const AboutSystem = () => { ) : ( <> - {isLatest ? + {runtimeUpToDate ? <>

Urbit Runtime Version {vereVersion}

Your urbit is up to date.

From 51c39dc696c7a5e54f4d57d8cd5284d86e9de4de Mon Sep 17 00:00:00 2001 From: pkova Date: Tue, 6 Jun 2023 16:18:26 +0300 Subject: [PATCH 3/4] about-system: link to docs for updating runtime if out of date --- ui/src/preferences/about-system/AboutSystem.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ui/src/preferences/about-system/AboutSystem.tsx b/ui/src/preferences/about-system/AboutSystem.tsx index 1f14ff28..582548e9 100644 --- a/ui/src/preferences/about-system/AboutSystem.tsx +++ b/ui/src/preferences/about-system/AboutSystem.tsx @@ -153,7 +153,9 @@ export const AboutSystem = () => { : <>

Your runtime version is {vereVersion}, the latest runtime version is {latestVereVersion}.

-

Update your runtime or contact your hosting provider.

+

+ Update your runtime + or contact your hosting provider.

} From fe628d878974850765b5650a0003a6bcad81720c Mon Sep 17 00:00:00 2001 From: Hunter Miller Date: Thu, 8 Jun 2023 15:57:58 -0500 Subject: [PATCH 4/4] about: make links match --- ui/src/preferences/about-system/AboutSystem.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/src/preferences/about-system/AboutSystem.tsx b/ui/src/preferences/about-system/AboutSystem.tsx index 582548e9..7c7e0e75 100644 --- a/ui/src/preferences/about-system/AboutSystem.tsx +++ b/ui/src/preferences/about-system/AboutSystem.tsx @@ -154,7 +154,7 @@ export const AboutSystem = () => { <>

Your runtime version is {vereVersion}, the latest runtime version is {latestVereVersion}.

- Update your runtime + Update your runtime or contact your hosting provider.

}