Commit 620cecdf authored by Fabien Maniere's avatar Fabien Maniere

Merge branch '747-dev-git-hash-in-version' into 'dev'

Resolve "Inject commit hash in the version popup"

See merge request !517
parents e9280bbd cc72a0cd
Pipeline #7868 canceled with stages
......@@ -110,3 +110,16 @@ nix-shell --run "npm run css"
```
#### Feature flags
Some functionality is hidden behind feature flags (mostly it's because
the work is in progress). To enable "expert" mode, issue this in your
JS console:
```javascript
document.cookie = 'expert=true'
```
To unset expert mode:
```javascript
document.cookie = 'expert=false'
```
......@@ -36,16 +36,16 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1731603435,
"narHash": "sha256-CqCX4JG7UiHvkrBTpYC3wcEurvbtTADLbo3Ns2CEoL8=",
"lastModified": 1748026580,
"narHash": "sha256-rWtXrcIzU5wm/C8F9LWvUfBGu5U5E7cFzPYT1pHIJaQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8b27c1239e5c421a2bbc2c65d52e4a6fbf2ff296",
"rev": "11cb3517b3af6af300dd6c055aeda73c9bf52c48",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "24.11",
"ref": "25.05",
"repo": "nixpkgs",
"type": "github"
}
......@@ -59,11 +59,11 @@
"slimlock": "slimlock"
},
"locked": {
"lastModified": 1739795788,
"narHash": "sha256-PG4lO49fvWHpQoCN3mIGflisXF+5vEf91ceV9hsWTLU=",
"lastModified": 1749721661,
"narHash": "sha256-z0Wfm2ThrUilogAeewLf/0Oc2a/4ODrxrA+4NWAdoAQ=",
"owner": "thomashoneyman",
"repo": "purescript-overlay",
"rev": "f754c2ef94cef46e5d5223c25d3f361e1f6cb509",
"rev": "c73f85b379dcb30f4f3f1bca152b19c880309d01",
"type": "github"
},
"original": {
......
......@@ -3,7 +3,7 @@
inputs.flake-utils.url = "github:numtide/flake-utils";
inputs.nixpkgs.url = "github:NixOS/nixpkgs?ref=24.11";
inputs.nixpkgs.url = "github:NixOS/nixpkgs?ref=25.05";
inputs.purescript-overlay = {
url = "github:thomashoneyman/purescript-overlay";
......@@ -20,8 +20,8 @@
};
dependencies = with pkgs; [
purs-bin.purs-0_15_16-4 # from the purescript-overlay
spago-bin.spago-0_93_43
purs-bin.purs-0_15_16-5 # from the purescript-overlay
spago-bin.spago-0_93_44
nodePackages.purs-tidy
watchexec
esbuild
......@@ -47,14 +47,6 @@
'';
build-zephyr = pkgs.writeShellScriptBin "build-zephyr" ''
set -e
npm spago build --purs-args '--codegen corefn,js'
zephyr -f Main.main
browserify-zephyr
'';
minify-bundle = pkgs.writeShellScriptBin "minify-bundle" ''
set -e
......@@ -124,7 +116,9 @@
# compile
echo "Bundling"
echo "{\"commit_hash\": \"$(git rev-parse HEAD)\"}" > .commit-hash.json
npm run bundle
rm .commit-hash.json
'';
};
test-ps = pkgs.writeShellApplication {
......@@ -171,7 +165,6 @@
self.packages.${system}.test-ps
self.packages.${system}.repl
setup-gitblame
build-zephyr
minify-bundle
serve
]);
......
......@@ -11,6 +11,7 @@ import Data.Foldable (intercalate)
import Data.Map as Map
import Data.Maybe (Maybe(..), maybe)
import Data.String.Regex as Regex
import Data.Tuple (Tuple(..))
import Effect (Effect)
import Effect.Aff (Aff, launchAff)
import Effect.Class (liftEffect)
......@@ -36,6 +37,7 @@ import Gargantext.Context.Progress (asyncContext, asyncProgress)
import Gargantext.Ends (Frontends, url)
import Gargantext.Hooks.Loader (useLoader)
import Gargantext.Hooks.UpdateEffect (useUpdateEffect1')
import Gargantext.Hooks.UseFeatureFlag as Feature
import Gargantext.Hooks.Version (Version, useVersion)
import Gargantext.Routes as Routes
import Gargantext.Sessions (Session, sessionId)
......@@ -738,7 +740,9 @@ listNodeActionsLoadedCpt = here.component "listNodeActionsLoaded" cpt
type VersionComparatorProps =
( clientVersion :: Version
, clientCommit :: String
, remoteVersion :: Version
, remoteCommit :: String
)
versionComparator :: R2.Leaf VersionComparatorProps
......@@ -747,39 +751,44 @@ versionComparator = R2.leaf versionComparatorCpt
versionComparatorCpt :: R.Component VersionComparatorProps
versionComparatorCpt = here.component "versionComparator" cpt
where
cpt { clientVersion, remoteVersion } _
| clientVersion == remoteVersion = pure $
B.caveat
{ variant: Success
, className: "mainleaf__version-comparator"
}
[ B.b_ "Versions match"
, content clientVersion remoteVersion
cpt { clientCommit, clientVersion, remoteVersion, remoteCommit } _ = do
let
Tuple variant msg =
if clientVersion == remoteVersion then Tuple Success "Versions match"
else Tuple Warning "Versions mismatch"
commitEl hash =
H.span {}
[ H.text " ("
, B.code_ hash
, H.text ")"
]
| otherwise = pure $
pure $
B.caveat
{ variant: Warning
{ variant
, className: "mainleaf__version-comparator"
}
[ B.b_ "Versions mismatch"
, content clientVersion remoteVersion
]
content :: Version -> Version -> R.Element
content clientVersion remoteVersion =
H.ul
{}
[ H.li
{}
[ B.b_ msg
, H.ul {}
[ H.li {}
[ B.span_ "frontend: "
, H.text $ nbsp 1
, B.code_ clientVersion
, Feature.hide
{ keys: [ "expert" ]
, render: commitEl clientCommit
}
]
, H.li
{}
, H.li {}
[ B.span_ "backend: "
, H.text $ nbsp 1
, B.code_ remoteVersion
, Feature.hide
{ keys: [ "expert" ]
, render: commitEl remoteCommit
}
]
]
]
......
'use strict';
import pkg from '../../package.json';
import ch from '../../.commit-hash.json';
let version = pkg.version
let version = pkg.version;
let commitHash = ch.commit_hash;
export { version };
export { version, commitHash };
......@@ -22,6 +22,7 @@ import Toestand as T
-- | (ie. Frontend Version)
foreign import version :: Version
foreign import commitHash :: String
type Version = String
......@@ -33,7 +34,9 @@ type R_Input =
type Output = Maybe R_Output
type R_Output =
{ clientVersion :: String
, clientCommit :: String
, remoteVersion :: String
, remoteCommit :: String
}
-- | Conditional Hooks checking release version match between client and remove
......@@ -49,7 +52,9 @@ useVersion mInput = do
Left err -> liftEffect $ log2 "[version] error" err
Right v -> liftEffect $ flip T.write_ mOutputBox $ Just
{ clientVersion: version
, remoteVersion: v
, clientCommit: commitHash
, remoteVersion: v.version
, remoteCommit: v.commitHash
}
-- Hooks
useFirstEffect' $ case mInput of
......@@ -58,5 +63,5 @@ useVersion mInput = do
-- Output
pure mOutput
getBackendVersion :: Session -> REST.AffRESTError Version
getBackendVersion :: Session -> REST.AffRESTError { version :: Version, commitHash :: String }
getBackendVersion (Session { backend }) = REST.get Nothing (toUrl backend "version")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment