Lambda
aa0946cf66
fix(properties): address MUL-4463 review round 1 — mobile CI, option guard, mutation safety, schema tolerance
...
- mobile: EMPTY_ISSUE_FALLBACK gains the required properties field (mobile
typecheck was the red CI check).
- server: PATCH /api/properties/{id} rejects config updates that remove
select options still referenced by issues (409 with a per-option usage
census via jsonb ?); renames keep ids and pass. Integration test included.
- core: property value mutations are serialized per workspace via mutation
scope, snapshot the bag from detail OR list caches (board surfaces have no
detail cache — the old path overwrote whole bags with one key), roll back
to the snapshot or invalidate on error, and the last settled mutation does
an authoritative detail+catalog invalidate (usage counts reconcile).
- schemas: unknown-shaped property values (future server types) are dropped
per-entry in a preprocess step instead of failing the whole IssueSchema
and blanking lists through parseWithFallback; test updated to lock the
tolerant behavior.
- realtime: reconnect invalidation covers the property catalog; every
issue_properties:changed event also refreshes catalog usage counts.
- ui: number editor accepts decimals (step=any); settings usage count
pluralizes (issue/issues) with CJK-safe plural keys.
Co-authored-by: multica-agent <github@multica.ai >
2026-07-14 17:29:00 +08:00
..
2026-06-17 15:18:44 +02:00
2026-07-03 14:18:43 +08:00
2026-07-03 14:18:43 +08:00
2026-07-13 18:13:44 +08:00
2026-07-13 18:13:44 +08:00
2026-07-03 14:18:43 +08:00
2026-07-03 14:18:43 +08:00
2026-07-03 17:56:02 +08:00
2026-07-03 17:56:02 +08:00
2026-07-03 17:56:02 +08:00
2026-07-10 13:00:34 +08:00
2026-07-12 15:40:10 +08:00
2026-07-07 20:49:42 +08:00
2026-06-30 12:29:11 +08:00
2026-07-03 14:18:43 +08:00
2026-07-07 20:49:42 +08:00
2026-07-14 16:20:33 +08:00
2026-07-14 16:20:33 +08:00
2026-07-07 20:49:42 +08:00
2026-06-18 09:40:38 +08:00
2026-07-13 09:15:36 +08:00
2026-07-01 12:46:47 +08:00
2026-07-01 12:46:47 +08:00
2026-07-10 16:22:42 +08:00
2026-07-07 13:20:30 +08:00
2026-07-08 21:58:16 +08:00
2026-07-14 09:37:02 +08:00
2026-07-09 13:49:07 +08:00
2026-07-09 13:49:07 +08:00
2026-07-13 18:13:44 +08:00
2026-06-24 09:52:18 +08:00
2026-07-10 14:10:10 +08:00
2026-07-12 14:23:30 +08:00
2026-07-10 16:15:10 +08:00
2026-06-30 12:24:57 +08:00
2026-07-12 14:23:30 +08:00
2026-07-14 13:39:57 +08:00
2026-07-13 16:42:46 +08:00
2026-07-14 11:53:42 +08:00
2026-07-14 11:53:42 +08:00
2026-07-10 14:10:10 +08:00
2026-07-10 13:43:45 +08:00
2026-07-14 11:53:42 +08:00
2026-07-14 11:53:42 +08:00
2026-07-14 11:56:30 +08:00
2026-07-14 11:56:30 +08:00
2026-07-14 11:56:30 +08:00
2026-07-14 13:16:50 +08:00
2026-07-02 18:31:45 +08:00
2026-06-18 11:10:06 +08:00
2026-07-14 13:39:57 +08:00
2026-07-07 12:38:07 +08:00
2026-07-13 09:15:36 +08:00
2026-07-10 20:10:25 +08:00
2026-07-10 20:10:25 +08:00
2026-07-14 16:20:33 +08:00
2026-07-07 14:43:19 +08:00
2026-07-14 16:20:33 +08:00
2026-06-26 12:09:15 +08:00
2026-07-13 16:42:46 +08:00
2026-07-03 16:10:19 +08:00
2026-07-14 11:56:30 +08:00
2026-07-09 15:10:09 +08:00
2026-07-09 15:10:09 +08:00
2026-07-02 14:11:10 +08:00
2026-07-10 09:11:29 +08:00
2026-07-13 16:15:58 +08:00
2026-07-05 01:35:00 +08:00
2026-07-02 15:48:45 +08:00
2026-07-10 09:11:29 +08:00
2026-06-24 16:06:14 +08:00
2026-07-13 13:08:04 +08:00
2026-07-06 19:11:47 +08:00
2026-07-13 13:08:04 +08:00
2026-06-23 13:17:13 +08:00
2026-07-03 14:18:43 +08:00
2026-07-14 17:29:00 +08:00
2026-07-13 18:13:44 +08:00
2026-07-13 18:13:44 +08:00
2026-07-08 16:19:41 +08:00
2026-07-08 16:19:41 +08:00
2026-07-03 14:18:43 +08:00
2026-07-03 14:18:43 +08:00
2026-06-30 12:24:57 +08:00
2026-07-01 17:53:16 +08:00
2026-07-01 17:53:16 +08:00
2026-07-13 13:22:02 +08:00
2026-07-07 17:35:33 +08:00
2026-07-07 17:35:33 +08:00
2026-06-21 23:54:58 +08:00
2026-07-13 13:22:02 +08:00
2026-07-14 17:29:00 +08:00
2026-07-14 17:29:00 +08:00
2026-07-10 15:55:06 +08:00
2026-07-13 20:07:24 +08:00
2026-07-02 18:31:45 +08:00
2026-07-07 12:01:14 +08:00
2026-07-08 16:00:17 +08:00
2026-07-12 02:53:17 +08:00
2026-07-12 02:53:17 +08:00
2026-07-12 04:00:31 +08:00
2026-07-12 04:00:31 +08:00
2026-07-02 14:38:05 +08:00
2026-07-09 15:07:11 +08:00
2026-07-13 20:07:24 +08:00
2026-07-02 14:38:05 +08:00
2026-06-18 11:10:06 +08:00
2026-07-02 14:38:05 +08:00
2026-07-13 20:07:24 +08:00
2026-07-06 12:34:51 +08:00
2026-07-06 12:34:51 +08:00
2026-07-06 12:34:51 +08:00
2026-06-30 14:46:46 +08:00
2026-06-30 14:46:46 +08:00
2026-07-14 13:39:57 +08:00
2026-06-22 13:34:06 +08:00
2026-07-14 13:39:57 +08:00
2026-06-29 14:09:34 +08:00
2026-07-09 15:07:11 +08:00
2026-06-26 16:01:33 +08:00
2026-06-26 16:01:33 +08:00
2026-06-26 16:01:33 +08:00
2026-07-03 17:42:06 +08:00
2026-07-08 14:51:54 +08:00
2026-07-03 14:18:43 +08:00
2026-07-05 02:35:19 +08:00
2026-07-03 17:42:06 +08:00
2026-07-09 15:10:09 +08:00
2026-07-14 13:16:50 +08:00
2026-07-03 14:18:43 +08:00
2026-07-14 16:20:33 +08:00
2026-07-14 16:20:33 +08:00
2026-07-14 16:20:33 +08:00
2026-07-14 16:20:33 +08:00
2026-07-14 16:20:33 +08:00
2026-07-03 14:18:43 +08:00
2026-06-24 12:46:20 +08:00
2026-07-14 11:56:30 +08:00