Commit Graph
100 Commits
Author SHA1 Message Date
imacatandClaude Opus 4.6 e5ddd8c0bd Remove unnecessary try-catch re-throw in refreshToken
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:23:34 +08:00
imacatandClaude Opus 4.6 904749d1fa Remove duplicate sidebarState assignments in sidebar watchers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:23:33 +08:00
imacatandClaude Opus 4.6 2e914aa853 Fix setTimeout losing this context by using arrow function
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:23:32 +08:00
imacatandClaude Opus 4.6 08d7402918 Add null guards for getElementById and uploadDetail in UploadPage
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:23:31 +08:00
imacatandClaude Opus 4.6 3ad898aaab Add null coalescing for facets and attributes access in MoreModal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:10:17 +08:00
imacatandClaude Opus 4.6 d546cc9619 Add optional chaining for i.loc array access in uploadFailedSecond
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:10:16 +08:00
imacatandClaude Opus 4.6 b10fcc057e Add null guard for querySelector and fix days using raw input value
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:10:15 +08:00
imacatandClaude Opus 4.6 b3e5554133 Add optional chaining for response.data.log.id access in getFilterDetail
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:10:13 +08:00
imacatandClaude Opus 4.6 91c6f5e54c Add optional chaining for response.data.roles access in getUserDetail
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:10:12 +08:00
imacatandClaude Opus 4.6 4c2a79a514 Add null guards for querySelector results and division by zero in AttributesFilter
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:10:11 +08:00
imacatandClaude Opus 4.6 008339a23d Fix computed ref passed without .value to setCurrentGraphId
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:10:09 +08:00
imacatandClaude Opus 4.6 01385d798d Return null for unknown type in getStateData to prevent empty URL request
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 16:31:29 +08:00
imacatandClaude Opus 4.6 5bb89a631d Add early return in yTimeRange when yAmount <= 1 to prevent division by zero
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 16:31:29 +08:00
imacatandClaude Opus 4.6 14c112cec5 Add bounds checks in highlightClickedPath to prevent undefined access
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 16:31:27 +08:00
imacatandClaude Opus 4.6 a6d32672bc Add array length guard in TimeframesFilter timeFrameData computed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 16:31:26 +08:00
imacatandClaude Opus 4.6 89dc327044 Add empty data guard in MoreModal columnData computed property
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 16:31:25 +08:00
imacatandClaude Opus 4.6 f5ade65939 Fix 12-hour format (hh) to 24-hour format (HH) in PerformancePage charts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 16:31:23 +08:00
imacatandClaude Opus 4.6 07b28c628d Add bounds checks and fix 12-hour format in CompareDashboard chart functions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 16:31:22 +08:00
imacatandClaude Opus 4.6 9a3d19f53c Replace Math.trunc integer check with Number.isInteger
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:20:22 +08:00
imacatandClaude Opus 4.6 57214586a8 Return empty string instead of undefined from getFileName on not-found
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:20:21 +08:00
imacatandClaude Opus 4.6 a7e3a2cdce Remove dead v-show=false error block from MyAccount
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:20:20 +08:00
imacatandClaude Opus 4.6 b46ab4112a Fix falsy check on newUsername to use explicit null comparison
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:20:13 +08:00
imacatandClaude Opus 4.6 210364a255 Reset infiniteFinish flag on error in MoreModal fetchData
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:20:12 +08:00
imacatandClaude Opus 4.6 adbb90eeea Fix division by zero in timeRange when amount is 1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:20:05 +08:00
imacatandClaude Opus 4.6 8a4b6539b9 Add bounds check in highlightMostFrequentPath before array access
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:20:05 +08:00
imacatandClaude Opus 4.6 4f660ff08c Add optional chaining for file.parent access across 5 files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:19:50 +08:00
imacatandClaude Opus 4.6 a8984a5de5 Add optional chaining for file.parent access in ConformancePage
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:10:39 +08:00
imacatandClaude Opus 4.6 7bf38b0d07 Add error handling to async calls in AcctMenu
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:10:37 +08:00
imacatandClaude Opus 4.6 387993da92 Add response structure validation in auth token refresh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:10:36 +08:00
imacatandClaude Opus 4.6 b5dfae9835 Fix unsafe property access and stale await in DurationInput, ModalAccountInfo, FilesPage
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:10:35 +08:00
imacatandClaude Opus 4.6 5f597961c6 Fix cytoscapeStore: preserve positions, guard access, remove redundant write
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:10:27 +08:00
imacatandClaude Opus 4.6 8e6ba876e3 Fix null from match() on empty string in formatNumberWithCommas
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:10:26 +08:00
imacatandClaude Opus 4.6 36613d255b Guard setCurrentViewingUser against undefined from find()
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:10:24 +08:00
imacatandClaude Opus 4.6 1ac3d7cd5b Fix sort() mutating state in getter by copying array first
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:10:18 +08:00
imacatandClaude Opus 4.6 63fa11c44e Wrap localStorage JSON.parse in try-catch in cytoscapeMap
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:10:17 +08:00
imacatandClaude Opus 4.6 2a2eeabac7 Fix XSS in uploadFailedSecond default case with escapeHtml
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:10:16 +08:00
imacatandClaude Opus 4.6 b58659295b Fix null from match() crash in formatMaxTwo
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:10:14 +08:00
imacatandClaude Opus 4.6 c6d073e119 Fix getYTicksByIndex truncating integers by using toFixed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:10:09 +08:00
imacatandClaude Opus 4.6 4dbed9fe56 Fix .trim() on null in conformance cases getter and add fallback returns
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:10:08 +08:00
imacatandClaude Opus 4.6 19a39bbbff Clean up dead code, typos, and minor style issues
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:00:31 +08:00
imacatandClaude Opus 4.6 932275e4d4 Remove abandoned confirm-password feature hidden with v-show=false
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:00:26 +08:00
imacatandClaude Opus 4.6 69d31c6c8b Remove dead refs and empty focus handlers from LoginPage
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:00:24 +08:00
imacatandClaude Opus 4.6 2710910829 Remove dead imports and constants from mapCompareStore
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:00:19 +08:00
imacatandClaude Opus 4.6 6141e70235 Fix missing bounds checks, unsafe JSON.parse, and cleanup issues
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 13:56:47 +08:00
imacatandClaude Opus 4.6 48784010ad Fix chart data issues: 24-hour format, Y-axis bounds, rounding modes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 13:55:45 +08:00
imacatandClaude Opus 4.6 881dccc1ab Fix memory leaks from Tippy.js instances and unremoved event listeners
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 13:54:38 +08:00
imacatandClaude Opus 4.6 9acd722929 Fix splice(-1,1) removing last user when logged-in user not found
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 13:52:08 +08:00
imacatandClaude Opus 4.6 3db725e52c Fix static destructuring from reactive source in MyAccount and ModalAccountInfo
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 13:51:23 +08:00
imacatandClaude Opus 4.6 8f610f1244 Fix array destructuring bug in moveJustCreateUserToFirstRow
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 13:50:18 +08:00
imacatandClaude Opus 4.6 ac4405068f Fix HTML injection risks in FilesPage and UploadPage
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 13:48:23 +08:00
imacat ca75a06612 Update .gitignore 2026-03-09 13:19:16 +08:00
imacatandCodex 89fae2cda7 Update MainContainer module documentation to match current route-guard responsibilities
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 19:41:46 +08:00
imacatandCodex 6e3aaca3b1 Extract reusable auth guard decision logic and test router auth behavior against it
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 19:39:10 +08:00
imacatandCodex 28fd83242c Use UTF-8 safe return-to encoding and decoding across router and login
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 19:35:40 +08:00
imacatandCodex 28464214bc Remove refreshToken navigation side effects and let callers handle redirects
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 19:32:06 +08:00
imacatandCodex 1670054356 Clear all auth cookies when API token refresh fails before redirecting to login
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 19:29:04 +08:00
imacatandCodex b53f58cb0c Clear refresh token cookie during logout to enforce full session termination
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 19:25:53 +08:00
imacatandCodex cf45a43a37 Remove obsolete uncaught-exception policy helper and its unit test
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 19:16:50 +08:00
imacatandCodex 955e9ceda9 Move auth-entry checks to router guard and simplify MainContainer route logic
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 19:14:20 +08:00
imacatandCodex f3d11ebbcb Refactor MainContainer child routes to consistent relative-path nesting
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 19:10:52 +08:00
imacatandCodex b3f4ace13f Enforce requiresAuth routes in global router guard with login return-to redirects
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 19:07:56 +08:00
imacatandCodex 90cc6689c8 Guard Vite API proxy setup behind VUE_APP_API_URL and reuse it in preview
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 19:04:13 +08:00
imacatandCodex a8cd590a11 Require access token presence in MainContainer auth gate before route entry
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 19:01:03 +08:00
imacatandCodex 0948a82eb5 Align compare navbar state mapping with MAP and PERFORMANCE tabs
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 18:58:01 +08:00
imacatandCodex f567e86898 Remove global Cypress uncaught-exception handler to keep default fail-fast behavior
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 18:46:09 +08:00
imacatandCodex 7d368bf0c3 Remove per-spec uncaught-exception swallowing in Cypress E2E tests
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 18:32:48 +08:00
imacatandCodex 7309c97502 Remove redundant self-assignment watcher in navbar state
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 14:14:11 +08:00
imacatandCodex 2927037bbe Separate lint check and auto-fix scripts to avoid side effects
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 13:55:33 +08:00
imacatandCodex 2721aed928 Handle invalid return-to payloads without misclassifying login as failed
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 13:52:47 +08:00
imacatandCodex d5464ebc2d Restrict Cypress uncaught exception suppression to known benign errors
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 13:49:51 +08:00
imacatandCodex fc43ca67ca Rename single-word Vue files to multi-word names and update references
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 13:26:12 +08:00
imacatandCodex ae03b9cedd Enable multi-word Vue component names with explicit naming
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 13:01:16 +08:00
imacatandCodex d03041c2e3 Enable vue/no-side-effects-in-computed-properties and refactor computed state sync
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 12:45:39 +08:00
imacatandCodex c88646eba3 Enable vue/return-in-computed-property and add explicit fallback returns
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 12:39:11 +08:00
imacatandCodex 1bf8355092 Enable vue/no-unused-vars and fix template loop variable
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 12:34:27 +08:00
imacatandCodex 2a2948fd24 Re-enable key Vue lint rules and fix resulting violations
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 12:30:17 +08:00
imacatandCodex 52a36e3a7c Resolve remaining lint violations and stabilize ESLint config
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 12:24:45 +08:00
imacatandCodex 847904c49b Apply repository-wide ESLint auto-fix formatting pass
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 12:11:57 +08:00
imacatandCodex 7c48faaa3d Translate Cypress support comments and add command JSDoc
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 11:57:58 +08:00
imacatandCodex ef9cf2de8c Migrate router type augmentation to Vue 3 runtime core
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 11:55:06 +08:00
imacatandCodex 28c861ab0e Align Cypress base URL and redirect test port
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 11:52:34 +08:00
imacatandCodex 08c1adba37 Fix unit test script to run repository test suite
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 11:50:00 +08:00
imacatandCodex 1ad94358e4 Remove unsupported ignore-path option from lint script
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 11:47:28 +08:00
imacatandCodex d7caf08d1f Fix design file metadata mapping in files store
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 10:47:49 +08:00
imacatandCodex 8acb1b50de Persist relative return-to path for post-login redirect
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 10:44:53 +08:00
imacatandCodex e275e79a63 Sanitize Cytoscape tooltip labels to prevent XSS
Co-Authored-By: Codex <codex@openai.com>
2026-03-08 10:41:48 +08:00
imacatandClaude Opus 4.6 1d621bf304 Translate all Chinese comments and strings to English
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 20:03:19 +08:00
imacatandClaude Opus 4.6 7d5918837b Add try-catch to async IIFEs to prevent unhandled rejections
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:11:27 +08:00
imacatandClaude Opus 4.6 ede7becb3a Remove await on non-promise values
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:06:29 +08:00
imacatandClaude Opus 4.6 1b5f97dc9a Remove unnecessary persist:true from acctMgmt store
The store only holds transient data (user list refetched from API,
hover/menu UI states) that should not survive page reload.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 17:58:39 +08:00
imacatandClaude Opus 4.6 07a2518e76 Remove unused $moment and $emitter from globalProperties
These were set for Options API (this.$moment, this.$emitter) but all
components now use <script setup> with direct imports.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 17:53:00 +08:00
imacatandClaude Opus 4.6 5b3130ea9c Compute refresh token expiry fresh on each sign-in
The expiry date was computed once at store init time and went stale
in long-running SPA sessions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 17:49:14 +08:00
imacatandClaude Opus 4.6 ba7c1c7cd0 Rename allUserAccoutList to allUserAccountList (fix typo)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 17:43:12 +08:00
imacatandClaude Opus 4.6 fe4738b04c Add encodeURIComponent for username in API URL paths
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 16:58:30 +08:00
imacatandClaude Opus 4.6 984eaa96b7 Remove duplicate getUserData call in moveCurrentLoginUserToFirstRow
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 09:25:10 +08:00
imacatandClaude Opus 4.6 9a8b45b151 Deduplicate refreshToken by delegating to auth.js refreshTokenAndGetNew
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 09:21:25 +08:00
imacatandClaude Opus 4.6 cd71815c97 Remove artificial delay from apiError, show toast immediately
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 08:59:52 +08:00
imacatandClaude Opus 4.6 589783d481 Fix typos in error messages, constants, and UI labels
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 08:55:33 +08:00
imacatandClaude Opus 4.6 3693446d1b Add event listener cleanup to prevent memory leaks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 08:50:19 +08:00
imacatandClaude Opus 4.6 b2b00c4542 Add optional chaining for querySelector result in Files.vue
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 08:45:27 +08:00