@robot-admin/naive-ui-components 0.24.3 → 0.24.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +2 -2
- package/README_EN.md +2 -2
- package/dist/constants2.d.cts +5 -5
- package/dist/constants2.d.ts +5 -5
- package/dist/constants3.d.cts +6 -6
- package/dist/constants3.d.ts +6 -6
- package/dist/data2.cjs +1 -1
- package/dist/data2.d.cts +7 -7
- package/dist/data2.d.ts +7 -7
- package/dist/data2.js +1 -1
- package/dist/helpers.cjs +1 -1
- package/dist/helpers.js +1 -1
- package/dist/index.vue.d.cts +4 -4
- package/dist/index.vue.d.ts +4 -4
- package/dist/index10.vue.d.cts +3 -3
- package/dist/index10.vue.d.ts +5 -5
- package/dist/index11.vue.d.cts +5 -5
- package/dist/index13.vue.d.ts +3 -3
- package/dist/index14.vue.d.cts +3 -3
- package/dist/index15.vue.d.ts +9 -9
- package/dist/index16.vue.d.cts +9 -9
- package/dist/index17.vue.d.ts +3 -3
- package/dist/index18.vue.d.cts +3 -3
- package/dist/index18.vue.d.ts +2 -2
- package/dist/index19.vue.d.cts +2 -2
- package/dist/index2.vue.d.cts +3 -3
- package/dist/index2.vue.d.ts +3 -3
- package/dist/index22.vue.d.ts +3 -3
- package/dist/index23.vue.d.cts +3 -3
- package/dist/index23.vue.d.ts +2 -2
- package/dist/index24.vue.d.cts +1 -1
- package/dist/index24.vue.d.ts +1 -1
- package/dist/index26.vue.d.cts +3 -3
- package/dist/index26.vue.d.ts +3 -3
- package/dist/index28.vue.d.cts +2 -2
- package/dist/index28.vue.d.ts +2 -2
- package/dist/index3.vue.d.cts +3 -3
- package/dist/index3.vue.d.ts +3 -3
- package/dist/index5.vue.d.cts +2 -2
- package/dist/index7.vue.d.ts +2 -2
- package/dist/index8.vue.d.cts +2 -2
- package/dist/index9.vue.d.ts +3 -3
- package/dist/mapUtils.d.cts +1 -1
- package/dist/mapUtils.d.ts +1 -1
- package/dist/presets.d.cts +1 -1
- package/dist/presets.d.ts +1 -1
- package/dist/useCalendarEvents.d.cts +1 -1
- package/dist/useCalendarEvents.d.ts +1 -1
- package/dist/useCollapsePanel.d.cts +3 -3
- package/dist/useCollapsePanel.d.ts +3 -3
- package/dist/useCropperCore.d.cts +4 -4
- package/dist/useCropperCore.d.ts +4 -4
- package/dist/useDynamicFormState.d.cts +12 -12
- package/dist/useDynamicFormState.d.ts +12 -12
- package/dist/useEdgeInteraction.d.cts +3 -3
- package/dist/useEdgeInteraction.d.ts +3 -3
- package/dist/useFullscreen.d.cts +2 -2
- package/dist/useFullscreen.d.ts +2 -2
- package/dist/useInfiniteScroll.d.cts +2 -2
- package/dist/useInfiniteScroll.d.ts +2 -2
- package/dist/useQRCode.d.cts +1 -1
- package/dist/useQRCode.d.ts +1 -1
- package/dist/useSignatureHistory.d.cts +5 -5
- package/dist/useSignatureHistory.d.ts +5 -5
- package/dist/useSplitResize.d.cts +1 -1
- package/dist/useSplitResize.d.ts +1 -1
- package/dist/useWorkflowValidation.d.cts +81 -81
- package/dist/useWorkflowValidation.d.ts +81 -81
- package/dist/verification.d.cts +4 -4
- package/dist/verification.d.ts +4 -4
- package/docs/stability-review-20261031.md +15 -15
- package/package.json +1 -1
|
@@ -261,20 +261,20 @@ declare const __VLS_export: vue.DefineComponent<WorkflowProps, {
|
|
|
261
261
|
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
262
262
|
"update:modelValue": (value: WorkflowData) => any;
|
|
263
263
|
change: (value: WorkflowData) => any;
|
|
264
|
+
"node-click": (node: WorkflowNode<NodeType>) => any;
|
|
264
265
|
save: (data: WorkflowData) => any;
|
|
265
266
|
"validate-error": (errors: ValidationError[]) => any;
|
|
266
|
-
"node-click": (node: WorkflowNode<NodeType>) => any;
|
|
267
267
|
"edge-click": (edge: WorkflowEdge) => any;
|
|
268
268
|
}, string, vue.PublicProps, Readonly<WorkflowProps> & Readonly<{
|
|
269
269
|
"onUpdate:modelValue"?: ((value: WorkflowData) => any) | undefined;
|
|
270
270
|
onChange?: ((value: WorkflowData) => any) | undefined;
|
|
271
|
+
"onNode-click"?: ((node: WorkflowNode<NodeType>) => any) | undefined;
|
|
271
272
|
onSave?: ((data: WorkflowData) => any) | undefined;
|
|
272
273
|
"onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
|
|
273
|
-
"onNode-click"?: ((node: WorkflowNode<NodeType>) => any) | undefined;
|
|
274
274
|
"onEdge-click"?: ((edge: WorkflowEdge) => any) | undefined;
|
|
275
275
|
}>, {
|
|
276
|
-
readonly: boolean;
|
|
277
276
|
theme: "light" | "dark";
|
|
277
|
+
readonly: boolean;
|
|
278
278
|
users: User[];
|
|
279
279
|
roles: Role[];
|
|
280
280
|
departments: Department[];
|
|
@@ -304,19 +304,10 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
|
|
|
304
304
|
zIndex?: number | undefined;
|
|
305
305
|
extent?: "parent" | [[number, number], [number, number]] | undefined;
|
|
306
306
|
expandParent?: boolean | undefined;
|
|
307
|
-
type: "
|
|
307
|
+
type: "start";
|
|
308
308
|
data: {
|
|
309
|
-
copyUsers?: {
|
|
310
|
-
id: string;
|
|
311
|
-
name: string;
|
|
312
|
-
avatar?: string | undefined;
|
|
313
|
-
department: string;
|
|
314
|
-
role: string;
|
|
315
|
-
email?: string | undefined;
|
|
316
|
-
phone?: string | undefined;
|
|
317
|
-
}[] | undefined;
|
|
318
309
|
title: string;
|
|
319
|
-
status
|
|
310
|
+
status: "active";
|
|
320
311
|
config?: Record<string, unknown> | undefined;
|
|
321
312
|
initiators?: {
|
|
322
313
|
id: string;
|
|
@@ -346,10 +337,19 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
|
|
|
346
337
|
zIndex?: number | undefined;
|
|
347
338
|
extent?: "parent" | [[number, number], [number, number]] | undefined;
|
|
348
339
|
expandParent?: boolean | undefined;
|
|
349
|
-
type: "
|
|
340
|
+
type: "copy";
|
|
350
341
|
data: {
|
|
342
|
+
copyUsers?: {
|
|
343
|
+
id: string;
|
|
344
|
+
name: string;
|
|
345
|
+
avatar?: string | undefined;
|
|
346
|
+
department: string;
|
|
347
|
+
role: string;
|
|
348
|
+
email?: string | undefined;
|
|
349
|
+
phone?: string | undefined;
|
|
350
|
+
}[] | undefined;
|
|
351
351
|
title: string;
|
|
352
|
-
status
|
|
352
|
+
status?: NodeStatus | undefined;
|
|
353
353
|
config?: Record<string, unknown> | undefined;
|
|
354
354
|
initiators?: {
|
|
355
355
|
id: string;
|
|
@@ -462,19 +462,10 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
|
|
|
462
462
|
zIndex?: number | undefined;
|
|
463
463
|
extent?: "parent" | [[number, number], [number, number]] | undefined;
|
|
464
464
|
expandParent?: boolean | undefined;
|
|
465
|
-
type: "
|
|
465
|
+
type: "start";
|
|
466
466
|
data: {
|
|
467
|
-
copyUsers?: {
|
|
468
|
-
id: string;
|
|
469
|
-
name: string;
|
|
470
|
-
avatar?: string | undefined;
|
|
471
|
-
department: string;
|
|
472
|
-
role: string;
|
|
473
|
-
email?: string | undefined;
|
|
474
|
-
phone?: string | undefined;
|
|
475
|
-
}[] | undefined;
|
|
476
467
|
title: string;
|
|
477
|
-
status
|
|
468
|
+
status: "active";
|
|
478
469
|
config?: Record<string, unknown> | undefined;
|
|
479
470
|
initiators?: {
|
|
480
471
|
id: string;
|
|
@@ -504,10 +495,19 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
|
|
|
504
495
|
zIndex?: number | undefined;
|
|
505
496
|
extent?: "parent" | [[number, number], [number, number]] | undefined;
|
|
506
497
|
expandParent?: boolean | undefined;
|
|
507
|
-
type: "
|
|
498
|
+
type: "copy";
|
|
508
499
|
data: {
|
|
500
|
+
copyUsers?: {
|
|
501
|
+
id: string;
|
|
502
|
+
name: string;
|
|
503
|
+
avatar?: string | undefined;
|
|
504
|
+
department: string;
|
|
505
|
+
role: string;
|
|
506
|
+
email?: string | undefined;
|
|
507
|
+
phone?: string | undefined;
|
|
508
|
+
}[] | undefined;
|
|
509
509
|
title: string;
|
|
510
|
-
status
|
|
510
|
+
status?: NodeStatus | undefined;
|
|
511
511
|
config?: Record<string, unknown> | undefined;
|
|
512
512
|
initiators?: {
|
|
513
513
|
id: string;
|
|
@@ -673,19 +673,10 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
|
|
|
673
673
|
zIndex?: number | undefined;
|
|
674
674
|
extent?: "parent" | [[number, number], [number, number]] | undefined;
|
|
675
675
|
expandParent?: boolean | undefined;
|
|
676
|
-
type: "
|
|
676
|
+
type: "start";
|
|
677
677
|
data: {
|
|
678
|
-
copyUsers?: {
|
|
679
|
-
id: string;
|
|
680
|
-
name: string;
|
|
681
|
-
avatar?: string | undefined;
|
|
682
|
-
department: string;
|
|
683
|
-
role: string;
|
|
684
|
-
email?: string | undefined;
|
|
685
|
-
phone?: string | undefined;
|
|
686
|
-
}[] | undefined;
|
|
687
678
|
title: string;
|
|
688
|
-
status
|
|
679
|
+
status: "active";
|
|
689
680
|
config?: Record<string, unknown> | undefined;
|
|
690
681
|
initiators?: {
|
|
691
682
|
id: string;
|
|
@@ -715,10 +706,19 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
|
|
|
715
706
|
zIndex?: number | undefined;
|
|
716
707
|
extent?: "parent" | [[number, number], [number, number]] | undefined;
|
|
717
708
|
expandParent?: boolean | undefined;
|
|
718
|
-
type: "
|
|
709
|
+
type: "copy";
|
|
719
710
|
data: {
|
|
711
|
+
copyUsers?: {
|
|
712
|
+
id: string;
|
|
713
|
+
name: string;
|
|
714
|
+
avatar?: string | undefined;
|
|
715
|
+
department: string;
|
|
716
|
+
role: string;
|
|
717
|
+
email?: string | undefined;
|
|
718
|
+
phone?: string | undefined;
|
|
719
|
+
}[] | undefined;
|
|
720
720
|
title: string;
|
|
721
|
-
status
|
|
721
|
+
status?: NodeStatus | undefined;
|
|
722
722
|
config?: Record<string, unknown> | undefined;
|
|
723
723
|
initiators?: {
|
|
724
724
|
id: string;
|
|
@@ -831,19 +831,10 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
|
|
|
831
831
|
zIndex?: number | undefined;
|
|
832
832
|
extent?: "parent" | [[number, number], [number, number]] | undefined;
|
|
833
833
|
expandParent?: boolean | undefined;
|
|
834
|
-
type: "
|
|
834
|
+
type: "start";
|
|
835
835
|
data: {
|
|
836
|
-
copyUsers?: {
|
|
837
|
-
id: string;
|
|
838
|
-
name: string;
|
|
839
|
-
avatar?: string | undefined;
|
|
840
|
-
department: string;
|
|
841
|
-
role: string;
|
|
842
|
-
email?: string | undefined;
|
|
843
|
-
phone?: string | undefined;
|
|
844
|
-
}[] | undefined;
|
|
845
836
|
title: string;
|
|
846
|
-
status
|
|
837
|
+
status: "active";
|
|
847
838
|
config?: Record<string, unknown> | undefined;
|
|
848
839
|
initiators?: {
|
|
849
840
|
id: string;
|
|
@@ -873,10 +864,19 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
|
|
|
873
864
|
zIndex?: number | undefined;
|
|
874
865
|
extent?: "parent" | [[number, number], [number, number]] | undefined;
|
|
875
866
|
expandParent?: boolean | undefined;
|
|
876
|
-
type: "
|
|
867
|
+
type: "copy";
|
|
877
868
|
data: {
|
|
869
|
+
copyUsers?: {
|
|
870
|
+
id: string;
|
|
871
|
+
name: string;
|
|
872
|
+
avatar?: string | undefined;
|
|
873
|
+
department: string;
|
|
874
|
+
role: string;
|
|
875
|
+
email?: string | undefined;
|
|
876
|
+
phone?: string | undefined;
|
|
877
|
+
}[] | undefined;
|
|
878
878
|
title: string;
|
|
879
|
-
status
|
|
879
|
+
status?: NodeStatus | undefined;
|
|
880
880
|
config?: Record<string, unknown> | undefined;
|
|
881
881
|
initiators?: {
|
|
882
882
|
id: string;
|
|
@@ -1055,19 +1055,10 @@ declare function useWorkflowPreview(nodes: Ref<WorkflowNode[]>, edges: Ref<Workf
|
|
|
1055
1055
|
zIndex?: number | undefined;
|
|
1056
1056
|
extent?: "parent" | [[number, number], [number, number]] | undefined;
|
|
1057
1057
|
expandParent?: boolean | undefined;
|
|
1058
|
-
type: "
|
|
1058
|
+
type: "start";
|
|
1059
1059
|
data: {
|
|
1060
|
-
copyUsers?: {
|
|
1061
|
-
id: string;
|
|
1062
|
-
name: string;
|
|
1063
|
-
avatar?: string | undefined;
|
|
1064
|
-
department: string;
|
|
1065
|
-
role: string;
|
|
1066
|
-
email?: string | undefined;
|
|
1067
|
-
phone?: string | undefined;
|
|
1068
|
-
}[] | undefined;
|
|
1069
1060
|
title: string;
|
|
1070
|
-
status
|
|
1061
|
+
status: "active";
|
|
1071
1062
|
config?: Record<string, unknown> | undefined;
|
|
1072
1063
|
initiators?: {
|
|
1073
1064
|
id: string;
|
|
@@ -1097,10 +1088,19 @@ declare function useWorkflowPreview(nodes: Ref<WorkflowNode[]>, edges: Ref<Workf
|
|
|
1097
1088
|
zIndex?: number | undefined;
|
|
1098
1089
|
extent?: "parent" | [[number, number], [number, number]] | undefined;
|
|
1099
1090
|
expandParent?: boolean | undefined;
|
|
1100
|
-
type: "
|
|
1091
|
+
type: "copy";
|
|
1101
1092
|
data: {
|
|
1093
|
+
copyUsers?: {
|
|
1094
|
+
id: string;
|
|
1095
|
+
name: string;
|
|
1096
|
+
avatar?: string | undefined;
|
|
1097
|
+
department: string;
|
|
1098
|
+
role: string;
|
|
1099
|
+
email?: string | undefined;
|
|
1100
|
+
phone?: string | undefined;
|
|
1101
|
+
}[] | undefined;
|
|
1102
1102
|
title: string;
|
|
1103
|
-
status
|
|
1103
|
+
status?: NodeStatus | undefined;
|
|
1104
1104
|
config?: Record<string, unknown> | undefined;
|
|
1105
1105
|
initiators?: {
|
|
1106
1106
|
id: string;
|
|
@@ -1230,19 +1230,10 @@ declare function useWorkflowPreview(nodes: Ref<WorkflowNode[]>, edges: Ref<Workf
|
|
|
1230
1230
|
zIndex?: number | undefined;
|
|
1231
1231
|
extent?: "parent" | [[number, number], [number, number]] | undefined;
|
|
1232
1232
|
expandParent?: boolean | undefined;
|
|
1233
|
-
type: "
|
|
1233
|
+
type: "start";
|
|
1234
1234
|
data: {
|
|
1235
|
-
copyUsers?: {
|
|
1236
|
-
id: string;
|
|
1237
|
-
name: string;
|
|
1238
|
-
avatar?: string | undefined;
|
|
1239
|
-
department: string;
|
|
1240
|
-
role: string;
|
|
1241
|
-
email?: string | undefined;
|
|
1242
|
-
phone?: string | undefined;
|
|
1243
|
-
}[] | undefined;
|
|
1244
1235
|
title: string;
|
|
1245
|
-
status
|
|
1236
|
+
status: "active";
|
|
1246
1237
|
config?: Record<string, unknown> | undefined;
|
|
1247
1238
|
initiators?: {
|
|
1248
1239
|
id: string;
|
|
@@ -1272,10 +1263,19 @@ declare function useWorkflowPreview(nodes: Ref<WorkflowNode[]>, edges: Ref<Workf
|
|
|
1272
1263
|
zIndex?: number | undefined;
|
|
1273
1264
|
extent?: "parent" | [[number, number], [number, number]] | undefined;
|
|
1274
1265
|
expandParent?: boolean | undefined;
|
|
1275
|
-
type: "
|
|
1266
|
+
type: "copy";
|
|
1276
1267
|
data: {
|
|
1268
|
+
copyUsers?: {
|
|
1269
|
+
id: string;
|
|
1270
|
+
name: string;
|
|
1271
|
+
avatar?: string | undefined;
|
|
1272
|
+
department: string;
|
|
1273
|
+
role: string;
|
|
1274
|
+
email?: string | undefined;
|
|
1275
|
+
phone?: string | undefined;
|
|
1276
|
+
}[] | undefined;
|
|
1277
1277
|
title: string;
|
|
1278
|
-
status
|
|
1278
|
+
status?: NodeStatus | undefined;
|
|
1279
1279
|
config?: Record<string, unknown> | undefined;
|
|
1280
1280
|
initiators?: {
|
|
1281
1281
|
id: string;
|
package/dist/verification.d.cts
CHANGED
|
@@ -77,19 +77,19 @@ declare const __VLS_export: vue.DefineComponent<CaptchaProps, {
|
|
|
77
77
|
show: () => void;
|
|
78
78
|
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
|
|
79
79
|
change: (valid: boolean) => any;
|
|
80
|
-
reset: () => any;
|
|
81
80
|
success: (data: CaptchaSuccessPayload) => any;
|
|
81
|
+
"load-error": (error: unknown) => any;
|
|
82
|
+
reset: () => any;
|
|
82
83
|
fail: (error: string) => any;
|
|
83
84
|
"verify-error": (error: unknown) => any;
|
|
84
|
-
"load-error": (error: unknown) => any;
|
|
85
85
|
"visible-change": (visible: boolean) => any;
|
|
86
86
|
}, string, vue.PublicProps, Readonly<CaptchaProps> & Readonly<{
|
|
87
87
|
onChange?: ((valid: boolean) => any) | undefined;
|
|
88
|
-
onReset?: (() => any) | undefined;
|
|
89
88
|
onSuccess?: ((data: CaptchaSuccessPayload) => any) | undefined;
|
|
89
|
+
"onLoad-error"?: ((error: unknown) => any) | undefined;
|
|
90
|
+
onReset?: (() => any) | undefined;
|
|
90
91
|
onFail?: ((error: string) => any) | undefined;
|
|
91
92
|
"onVerify-error"?: ((error: unknown) => any) | undefined;
|
|
92
|
-
"onLoad-error"?: ((error: unknown) => any) | undefined;
|
|
93
93
|
"onVisible-change"?: ((visible: boolean) => any) | undefined;
|
|
94
94
|
}>, {
|
|
95
95
|
disabled: boolean;
|
package/dist/verification.d.ts
CHANGED
|
@@ -77,19 +77,19 @@ declare const __VLS_export: vue.DefineComponent<CaptchaProps, {
|
|
|
77
77
|
show: () => void;
|
|
78
78
|
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
|
|
79
79
|
change: (valid: boolean) => any;
|
|
80
|
-
reset: () => any;
|
|
81
80
|
success: (data: CaptchaSuccessPayload) => any;
|
|
81
|
+
"load-error": (error: unknown) => any;
|
|
82
|
+
reset: () => any;
|
|
82
83
|
fail: (error: string) => any;
|
|
83
84
|
"verify-error": (error: unknown) => any;
|
|
84
|
-
"load-error": (error: unknown) => any;
|
|
85
85
|
"visible-change": (visible: boolean) => any;
|
|
86
86
|
}, string, vue.PublicProps, Readonly<CaptchaProps> & Readonly<{
|
|
87
87
|
onChange?: ((valid: boolean) => any) | undefined;
|
|
88
|
-
onReset?: (() => any) | undefined;
|
|
89
88
|
onSuccess?: ((data: CaptchaSuccessPayload) => any) | undefined;
|
|
89
|
+
"onLoad-error"?: ((error: unknown) => any) | undefined;
|
|
90
|
+
onReset?: (() => any) | undefined;
|
|
90
91
|
onFail?: ((error: string) => any) | undefined;
|
|
91
92
|
"onVerify-error"?: ((error: unknown) => any) | undefined;
|
|
92
|
-
"onLoad-error"?: ((error: unknown) => any) | undefined;
|
|
93
93
|
"onVisible-change"?: ((visible: boolean) => any) | undefined;
|
|
94
94
|
}>, {
|
|
95
95
|
disabled: boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# 0.24.3 稳定性复核
|
|
1
|
+
# 0.24.3–0.24.4 稳定性复核
|
|
2
2
|
|
|
3
3
|
日期:2026-10-31。基线:0.24.2。本轮保留现有组件、主题、精简配置和公开接口,通过复现处理真实边界问题,不建立新的状态框架、全局缓存或通用虚拟化层。
|
|
4
4
|
|
|
@@ -6,19 +6,19 @@
|
|
|
6
6
|
|
|
7
7
|
公共值工具、字典与工作流入口,以及表单、搜索、表格、图、地图、上传、媒体等高风险组件是本轮重点。其他资源组件结合源码检查和现有生命周期回归复核;这不等同于所有第三方引擎和业务环境都完成压力测试。
|
|
8
8
|
|
|
9
|
-
| 范围 | 已复现问题 | 修复边界与回归
|
|
10
|
-
| -------------- | ------------------------------------------------------------------------------------- |
|
|
11
|
-
| 数据路径与快照 | 继承分支被修改;回退克隆压缩稀疏索引、把原型键当 setter;数组比较不对称 | 仅沿自有分支访问,保留 Vue HAS/GET 依赖和 literal dotted key
|
|
12
|
-
| 字典 | 初次同步销毁遗漏清理,批量重载继续分发,abort/响应式通知重入后控制器失去归属 | 提前注册销毁、沿用视图和控制器身份;初读、订阅、请求、状态通知和销毁共 7 项边界回归
|
|
13
|
-
| Tabs / Steps | 旧校验写到替换后的区域或覆盖新结果 | 稳定 key、既有状态与请求代次共同确认归属;删除从未读取的 Tabs 状态 Map
|
|
14
|
-
| 搜索历史 | 小数数量触发数组长度异常,旧记录含 null 时抛错 | 有限正整数边界;存储按未知输入处理,仅恢复限定数量的有效文本
|
|
15
|
-
| 表格展示 | 编辑模式绕过状态/字典展示 | 复用只读展示路径,删除重复 formatter 分支和两处 any
|
|
16
|
-
| 列拖拽 | 辅助列使 DOM 下标错位,外部更新与 Sortable 同时改 DOM | 最终列身份映射,辅助列不移动,先还原 DOM 再提交;统一单一初始化 watch,普通内容/测宽更新保留实例
|
|
17
|
-
| 编辑会话 | 公开 hook 的旧校验污染新草稿,scope 结束后继续保存 | 沿用 revision 失效化,hook 自身拥有清理责任
|
|
18
|
-
| 视频小窗 | 配置不能动态启停、重复观察与迟到回调;观察 fixed 元素可能回跳,固定高度被宽度适配覆盖 | 唯一 observer、当前身份判断、文档流锚点及原位高度;固定与流式尺寸分离,小窗约束媒体容器,无轮询、额外 RO 或全局监听
|
|
19
|
-
| X6 图实例 | 等待 DOM 时无法取消初始化,并发创建多余实例 | 初始化代次取消;删除被正值尺寸兜底遮蔽、不可达的重试分支
|
|
20
|
-
| 高德加载器 | 失败或超时后遗留本加载器写入的宿主安全配置 | 仅在仍持有同一对象时归还旧配置,保留宿主后续接管
|
|
21
|
-
| 高亮与上传 | 诊断异常改变任务结果;删除 UID 在私有 Map 驻留 | 复用观察通知隔离;删除已移除 UID,既有取消和迟到上传契约继续验证
|
|
9
|
+
| 范围 | 已复现问题 | 修复边界与回归 |
|
|
10
|
+
| -------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| 数据路径与快照 | 继承分支被修改;回退克隆压缩稀疏索引、把原型键当 setter;数组比较不对称 | 仅沿自有分支访问,保留 Vue HAS/GET 依赖和 literal dotted key;稀疏快照、循环对象及修改检测回归;0.24.4 在脏状态引擎补齐稀疏数组迭代依赖,空位和 undefined 保持值语义等价,纯比较器不承担响应式职责 |
|
|
12
|
+
| 字典 | 初次同步销毁遗漏清理,批量重载继续分发,abort/响应式通知重入后控制器失去归属 | 提前注册销毁、沿用视图和控制器身份;初读、订阅、请求、状态通知和销毁共 7 项边界回归 |
|
|
13
|
+
| Tabs / Steps | 旧校验写到替换后的区域或覆盖新结果 | 稳定 key、既有状态与请求代次共同确认归属;删除从未读取的 Tabs 状态 Map |
|
|
14
|
+
| 搜索历史 | 小数数量触发数组长度异常,旧记录含 null 时抛错 | 有限正整数边界;存储按未知输入处理,仅恢复限定数量的有效文本 |
|
|
15
|
+
| 表格展示 | 编辑模式绕过状态/字典展示 | 复用只读展示路径,删除重复 formatter 分支和两处 any |
|
|
16
|
+
| 列拖拽 | 辅助列使 DOM 下标错位,外部更新与 Sortable 同时改 DOM | 最终列身份映射,辅助列不移动,先还原 DOM 再提交;统一单一初始化 watch,普通内容/测宽更新保留实例 |
|
|
17
|
+
| 编辑会话 | 公开 hook 的旧校验污染新草稿,scope 结束后继续保存 | 沿用 revision 失效化,hook 自身拥有清理责任 |
|
|
18
|
+
| 视频小窗 | 配置不能动态启停、重复观察与迟到回调;观察 fixed 元素可能回跳,固定高度被宽度适配覆盖 | 唯一 observer、当前身份判断、文档流锚点及原位高度;固定与流式尺寸分离,小窗约束媒体容器,无轮询、额外 RO 或全局监听 |
|
|
19
|
+
| X6 图实例 | 等待 DOM 时无法取消初始化,并发创建多余实例 | 初始化代次取消;删除被正值尺寸兜底遮蔽、不可达的重试分支 |
|
|
20
|
+
| 高德加载器 | 失败或超时后遗留本加载器写入的宿主安全配置 | 仅在仍持有同一对象时归还旧配置,保留宿主后续接管 |
|
|
21
|
+
| 高亮与上传 | 诊断异常改变任务结果;删除 UID 在私有 Map 驻留 | 复用观察通知隔离;删除已移除 UID,既有取消和迟到上传契约继续验证 |
|
|
22
22
|
|
|
23
23
|
上述主要问题均先在原实现复现,再验证修复。源码检查另外覆盖地图实例/标记、富文本与 Markdown、代码加载、分片上传和对象 URL、甘特、瀑布流、工作流、签名和图片资源等已有保护;没有证据需要扩大重构的路径保持原架构。
|
|
24
24
|
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
|
|
40
40
|
维护者工具及全部 CI 已固定到能真实应用条件依赖覆盖的 Bun 1.4.2,冻结安装及实际解析结果通过验证;消费者最低版本不变。现代工具链的 glob/minimatch 已按新公告修复;legacy glob 7 与 minimatch 3 保持成套接口。维护者公告与聚合数据库的范围差异、实际不可达代码路径、源码指纹和行为证据见 [SECURITY](../SECURITY.md)。原始审计命中保留并单独分类,不宣称零告警。
|
|
41
41
|
|
|
42
|
-
- `bun run verify`:
|
|
42
|
+
- `bun run verify`:488 项逻辑测试、495 项组件测试,TypeScript/Vue/消费者类型、lint、旧 API 扫描、导出、vendor、构建、ESM/CJS、Node16/NodeNext 和可选 peer 契约全部通过。
|
|
43
43
|
- 原有发布体积和消费者 gzip 预算全部通过,没有放宽限额;完整可用包约 5.13 MiB(含单列预算的 SheetJS)。
|
|
44
44
|
- 发布候选包在 Chromium、Firefox、WebKit 共 9 项专项回归通过:400 字段表单 3 项,fixed/fluid 视频小窗 6 项;真实媒体保持固定高度及 320×180 小窗,持续观察不回跳,动态开关、卸载和页面错误检查通过。Robot_Admin 正式依赖的最终结果见应用提交与交付记录。
|
|
45
45
|
|