Skip to content

Comments

[comp] Production Deploy#2151

Merged
tofikwest merged 4 commits intoreleasefrom
main
Feb 17, 2026
Merged

[comp] Production Deploy#2151
tofikwest merged 4 commits intoreleasefrom
main

Conversation

@github-actions
Copy link
Contributor

This is an automated pull request to release the candidate branch into production, which will trigger a deployment.
It was created by the [Production PR] action.

github-actions bot and others added 2 commits February 17, 2026 13:46
* fix(app): cannot update the vendor due to validation error

* fix(app): include website field to vendor form submission

---------

Co-authored-by: chasprowebdev <chasgarciaprowebdev@gmail.com>
@vercel
Copy link

vercel bot commented Feb 17, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
portal (staging) Ready Ready Preview, Comment Feb 17, 2026 7:31pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
app (staging) Skipped Skipped Feb 17, 2026 7:31pm

Request Review

…2152)

* fix(portal): recognize device agent compliance for task completion

The portal was only checking FleetDM data to determine if the device
agent task was complete. Device agent check results (stored in the
Device table) were being ignored, so even when all agent checks passed,
the portal still showed the task as incomplete.

Now checks both sources: Fleet device + policies OR device agent
isCompliant flag. Either one being complete marks the task as done.

Also updates Prisma in API Dockerfile from 6.13.0 to 6.18.0 to match
the version used in packages/db.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: prevent null reference crash when only agent device exists

The installed device view assumed a Fleet host always exists,
but with the new agent device support, hasInstalledAgent can be
true from agentDevice alone while host is null.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: device agent takes priority over Fleet in portal

When both Fleet and device agent exist, device agent completion
and UI now takes priority. Fleet is still fully supported as
fallback for orgs that only use Fleet.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: correct download filename and instructions for all platforms

- Add LINUX_FILENAME export and use it for Linux downloads
  (was falling through to WINDOWS_FILENAME)
- Add Linux-specific install instruction for DEB packages
- Unify step 3 to show device agent login instructions for all
  platforms (was showing Fleet MDM instructions for non-macOS)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add Linux to system requirements

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: prevent unchecked device from hiding compliant device

PostgreSQL puts NULL values first in DESC ordering, so a newly
registered device (lastCheckIn=null) would be selected over an
older compliant device. Use nulls:'last' to prefer devices that
have actually checked in.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add SWR polling for agent device compliance status

Agent device status was fetched once server-side and never
refreshed, so compliance changes required a full page reload.
Now polls /api/device-agent/status every 30s and revalidates
on tab focus, matching the Fleet SWR pattern.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: sort agent devices by lastCheckIn to match server-side ordering

The status API returns devices sorted by installedAt, but page.tsx
fetches by lastCheckIn desc nulls last. Without client-side sorting,
SWR could pick a freshly registered device (null lastCheckIn) over
an older compliant one, causing the task to flash back to incomplete.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@vercel vercel bot temporarily deployed to staging – app February 17, 2026 19:20 Inactive
@cursor
Copy link

cursor bot commented Feb 17, 2026

PR Summary

Medium Risk
Changes core employee task completion logic and introduces periodic polling based on a new compliance source, which could affect progress gating and add load if misconfigured; other changes are low risk UI/schema tweaks and a tooling version bump.

Overview
Employee Portal device setup now prefers Device Agent compliance over Fleet: the org home page fetches the latest device record, EmployeeTasksList polls /api/device-agent/status every 30s to keep compliance current, and DeviceAgentAccordionItem shows agent device details/health and only displays Fleet policy failures when no agent device exists.

Linux agent downloads are added by exporting LINUX_FILENAME, using it in the download flow, and updating install copy/system requirements. Separately, vendor updates now allow omitting description and ensure website defaults/submits correctly, and the OTP input UI is refactored to use OTPInputContext with updated slot sizing.

Prisma CLI in the API production Docker stage is bumped from 6.13.0 to 6.18.0.

Written by Cursor Bugbot for commit 36914f5. This will update automatically on new commits. Configure here.

* fix: update OTP input to modern children + context API

The InputOTPSlot component used the deprecated render prop pattern
from input-otp v1.x which caused the OTP boxes to collapse. Updated
to the modern children-based API using OTPInputContext, matching the
approach used by @trycompai/design-system.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: handle undefined slot in InputOTPSlot for type safety

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

if (!a.lastCheckIn) return 1;
if (!b.lastCheckIn) return -1;
return new Date(b.lastCheckIn).getTime() - new Date(a.lastCheckIn).getTime();
})[0] ?? null;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In-place sort mutates SWR state during render

Medium Severity

Array.sort() mutates the agentDeviceResponse.devices array in place during render. Since this array is managed by SWR's internal cache, mutating it violates React's expectation that rendering is pure and side-effect-free. This can interfere with SWR's change detection and cause subtle issues with React concurrent features. Using .toSorted() or spreading into a new array before sorting would avoid mutating the cached data.

Fix in Cursor Fix in Web

@tofikwest tofikwest merged commit aec6a3f into release Feb 17, 2026
14 checks passed
@claudfuen
Copy link
Contributor

🎉 This PR is included in version 1.83.3 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants