imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
7309c97502
Remove redundant self-assignment watcher in navbar state
...
Co-Authored-By: Codex <codex@openai.com >
2026-03-08 14:14:11 +08:00
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
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
imacat and Codex
52a36e3a7c
Resolve remaining lint violations and stabilize ESLint config
...
Co-Authored-By: Codex <codex@openai.com >
2026-03-08 12:24:45 +08:00
imacat and Codex
847904c49b
Apply repository-wide ESLint auto-fix formatting pass
...
Co-Authored-By: Codex <codex@openai.com >
2026-03-08 12:11:57 +08:00
imacat and Codex
7c48faaa3d
Translate Cypress support comments and add command JSDoc
...
Co-Authored-By: Codex <codex@openai.com >
2026-03-08 11:57:58 +08:00
imacat and Codex
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
imacat and Codex
28c861ab0e
Align Cypress base URL and redirect test port
...
Co-Authored-By: Codex <codex@openai.com >
2026-03-08 11:52:34 +08:00
imacat and Codex
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
imacat and Codex
1ad94358e4
Remove unsupported ignore-path option from lint script
...
Co-Authored-By: Codex <codex@openai.com >
2026-03-08 11:47:28 +08:00
imacat and Codex
d7caf08d1f
Fix design file metadata mapping in files store
...
Co-Authored-By: Codex <codex@openai.com >
2026-03-08 10:47:49 +08:00
imacat and Codex
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
imacat and Codex
e275e79a63
Sanitize Cytoscape tooltip labels to prevent XSS
...
Co-Authored-By: Codex <codex@openai.com >
2026-03-08 10:41:48 +08:00
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude 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
imacat and Claude Opus 4.6
564ead23bf
Add null guard for performanceData before accessing time properties
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-07 08:45:06 +08:00
imacat and Claude Opus 4.6
ac00183096
Initialize nodePositions structure before nested access
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-07 08:44:54 +08:00
imacat and Claude Opus 4.6
c602848ad7
Add null check before tip.hide() on mouseout
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-07 08:44:42 +08:00
imacat and Claude Opus 4.6
5058400d72
Fix filterTaskData computed property referencing itself
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-07 08:39:14 +08:00