Commit 6e1a06f
fix(devices): show stale as distinct state on /people device column (#2629)
* fix(devices): surface stale as its own state in people table device column
The /people table's DEVICE column was collapsing stale devices into
"Non-Compliant" while the employee drill-in correctly showed a gray
"Stale (Nd)" badge. Surface stale as a distinct fourth state in the
roll-up so the two views agree.
- Extend MemberDeviceStatus with 'stale'.
- Roll-up precedence: non-compliant > stale > compliant (a hard fail
still wins; all-stale members show stale).
- MemberRow renders a gray dot + muted 'Stale' label, matching the
drill-in's DS secondary-badge weight.
- 10 new/updated tests on compute-device-status-map; 2 new tests on
MemberRow.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat(devices): add tooltip explaining Stale state on people table
Next to the Stale device label, show a small Information icon that
reveals a tooltip on hover:
> This device's CompAI agent hasn't reported in over 7 days, so we
> can't verify its current compliance. Ask the employee to update or
> reinstall the agent.
Discoverable cue for admins who haven't seen the state before and
wouldn't otherwise know that Stale means "data is unknown, not
non-compliant."
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat(devices): consistent stale-state tooltip across device surfaces
Replace native title attrs on the overall-stale badge with a shared
info-icon + tooltip trigger on the device list, employee device tab,
and device details header, matching the pattern already used on the
people list. Copy is identical across surfaces so users see the same
explanation wherever they encounter the Stale state.
* fix(devices): preserve non-compliant across multiple fleet hosts per member
Cubic P1/P2 feedback on PR #2629. The fleet-fallback loop in
computeDeviceStatusMap had regressed to last-host-wins when I refactored
for the stale state — two fleet hosts for the same member with mixed
pass/fail outcomes would write whichever came last, potentially
overwriting a real non-compliant with a later compliant.
Restore the guard: once a member is non-compliant from a failing fleet
host, subsequent hosts cannot downgrade them.
Regression tests cover both iteration orders (fail-then-pass and
pass-then-fail).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix(devices): branch stale tooltip copy for never-reported devices
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 5daac69 commit 6e1a06f
10 files changed
Lines changed: 415 additions & 96 deletions
File tree
- apps/app/src/app/(app)/[orgId]/people
- [employeeId]/components
- all/components
- devices/components
Lines changed: 35 additions & 25 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
156 | 156 | | |
157 | 157 | | |
158 | 158 | | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | | - | |
163 | | - | |
164 | | - | |
165 | | - | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
166 | 165 | | |
167 | | - | |
168 | | - | |
169 | | - | |
170 | | - | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
183 | 173 | | |
184 | | - | |
185 | | - | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
186 | 193 | | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
187 | 197 | | |
188 | 198 | | |
Lines changed: 25 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
| 18 | + | |
17 | 19 | | |
18 | 20 | | |
19 | 21 | | |
| |||
56 | 58 | | |
57 | 59 | | |
58 | 60 | | |
59 | | - | |
| 61 | + | |
60 | 62 | | |
61 | | - | |
62 | | - | |
| 63 | + | |
| 64 | + | |
63 | 65 | | |
64 | 66 | | |
65 | 67 | | |
66 | 68 | | |
67 | 69 | | |
68 | | - | |
69 | | - | |
70 | | - | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
71 | 90 | | |
72 | 91 | | |
73 | 92 | | |
| |||
Lines changed: 45 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | | - | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
64 | 66 | | |
65 | 67 | | |
66 | 68 | | |
| |||
109 | 111 | | |
110 | 112 | | |
111 | 113 | | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
112 | 149 | | |
113 | 150 | | |
114 | 151 | | |
| |||
175 | 212 | | |
176 | 213 | | |
177 | 214 | | |
178 | | - | |
179 | | - | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
180 | 222 | | |
181 | 223 | | |
182 | 224 | | |
| |||
Lines changed: 54 additions & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
33 | 34 | | |
34 | 35 | | |
35 | 36 | | |
36 | | - | |
| 37 | + | |
37 | 38 | | |
38 | 39 | | |
39 | 40 | | |
| |||
52 | 53 | | |
53 | 54 | | |
54 | 55 | | |
55 | | - | |
| 56 | + | |
56 | 57 | | |
57 | 58 | | |
58 | 59 | | |
| |||
87 | 88 | | |
88 | 89 | | |
89 | 90 | | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
90 | 119 | | |
91 | 120 | | |
92 | 121 | | |
| |||
251 | 280 | | |
252 | 281 | | |
253 | 282 | | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | | - | |
258 | | - | |
259 | | - | |
260 | | - | |
| 283 | + | |
261 | 284 | | |
262 | 285 | | |
263 | 286 | | |
264 | | - | |
| 287 | + | |
265 | 288 | | |
266 | 289 | | |
267 | 290 | | |
268 | 291 | | |
269 | | - | |
270 | | - | |
271 | | - | |
272 | | - | |
273 | | - | |
| 292 | + | |
274 | 293 | | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
275 | 314 | | |
276 | 315 | | |
277 | 316 | | |
| |||
0 commit comments