From b3091399cd6473fdbf7d665d68f6d544f62e3c3b Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 23 Jul 2026 10:26:41 +0200 Subject: [PATCH] :sparkles: Add timestamp to the frontend error report (#10772) --- frontend/package.json | 2 +- frontend/src/app/main/errors.cljs | 14 ++++---- frontend/src/app/main/ui/static.cljs | 49 ---------------------------- 3 files changed, 9 insertions(+), 56 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 32da31fbf9..e0bdea9088 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -29,7 +29,7 @@ "fmt:clj": "cljfmt fix --parallel=true src/ test/", "fmt:js": "prettier -c src/**/*.stories.jsx -c playwright/**/*.js -c scripts/**/*.js -c text-editor/**/*.js -w", "fmt:scss": "prettier -c resources/styles -c src/**/*.scss -w", - "lint:clj": "clj-kondo --parallel --lint ../common/src src/", + "lint:clj": "clj-kondo --config-dir ../.clj-kondo --lint ../common/src src/", "lint:js": "exit 0", "lint:scss": "pnpm exec stylelint '{src,resources}/**/*.scss'", "build:test": "pnpm run build:wasm && clojure -M:dev:shadow-cljs compile test", diff --git a/frontend/src/app/main/errors.cljs b/frontend/src/app/main/errors.cljs index 5b7bb40f5b..532a05061c 100644 --- a/frontend/src/app/main/errors.cljs +++ b/frontend/src/app/main/errors.cljs @@ -9,6 +9,7 @@ (:require [app.common.exceptions :as ex] [app.common.pprint :as pp] + [app.common.time :as ct] [app.config :as cf] [app.main.data.auth :as da] [app.main.data.event :as ev] @@ -134,13 +135,14 @@ (with-out-str (println "Context:") (println "--------------------") - (println "Hint: " (or (:hint data) (ex-message cause) "--")) - (println "Prof ID: " (str (or profile-id "--"))) - (println "Team ID: " (str (or team-id "--"))) + (println "Timestamp:" (ct/format-inst (ct/now) :rfc1123)) + (println "Hint: " (or (:hint data) (ex-message cause) "--")) + (println "Prof ID: " (str (or profile-id "--"))) + (println "Team ID: " (str (or team-id "--"))) (when-let [file-id (or (:file-id data) file-id)] - (println "File ID: " (str file-id))) - (println "Version: " (:full cf/version)) - (println "HREF: " (rt/get-current-href)) + (println "File ID: " (str file-id))) + (println "Version: " (:full cf/version)) + (println "HREF: " (rt/get-current-href)) (println) (println diff --git a/frontend/src/app/main/ui/static.cljs b/frontend/src/app/main/ui/static.cljs index 02069fc147..608a7866ce 100644 --- a/frontend/src/app/main/ui/static.cljs +++ b/frontend/src/app/main/ui/static.cljs @@ -10,9 +10,7 @@ ["rxjs" :as rxjs] [app.common.data :as d] [app.common.exceptions :as ex] - [app.common.pprint :as pp] [app.common.uuid :as uuid] - [app.config :as cf] [app.main.data.auth :refer [is-authenticated?]] [app.main.data.common :as dcm] [app.main.errors :as errors] @@ -348,53 +346,6 @@ [:> button* {:variant "primary" :on-click on-reload} (tr "labels.reload-page")]]])) -(defn- generate-report - [data] - (try - (let [team-id (:current-team-id @st/state) - profile-id (:profile-id @st/state) - - trace (:app.main.errors/trace data) - instance (:app.main.errors/instance data)] - (with-out-str - (println "Hint: " (or (:hint data) (ex-message instance) "--")) - (println "Prof ID: " (str (or profile-id "--"))) - (println "Team ID: " (str (or team-id "--"))) - (println "URI: " cf/public-uri) - - (when-let [file-id (:file-id data)] - (println "File ID:" (str file-id))) - - (println) - - (println "Data:") - (loop [data data] - (-> (d/without-qualified data) - (dissoc :explain) - (d/update-when :data (constantly "(...)")) - (pp/pprint {:level 8 :length 10})) - - (println) - - (when-let [explain (:explain data)] - (print explain)) - - (when (and (= :server-error (:type data)) - (contains? data :data)) - (recur (:data data)))) - - (println "Trace:") - (println trace) - (println) - - (println "Last events:") - (pp/pprint @st/last-events {:length 200}) - - (println))) - (catch :default cause - (.error js/console "error on generating report.txt" cause) - nil))) - (mf/defc internal-error* [{:keys [on-reset report] :as props}] (let [report-uri (mf/use-ref nil)