Skip to content

Conversation

@integrate-your-mind
Copy link
Owner

@integrate-your-mind integrate-your-mind commented Feb 3, 2026

Summary

  • describe the key changes made across configuration, public client, and server code to support live codex readiness
  • note updates to docs, dev tooling, and integration/unit tests that align with the new behavior

Testing

  • Not run (not requested)

Ensure you read the contribution guide before submitting a commit and follow the exact guidelines.


Open with Devin

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a968a74f69

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +497 to +505
if (typeof status === "string" && status.trim()) {
state.lastStatus = status;
state.lastStatusAt = now;
if (IDLE_STATUS_RE.test(status)) {
state.inFlight = false;
state.lastInFlightSignalAt = undefined;
} else {
state.inFlight = true;
state.lastInFlightSignalAt = now;

Choose a reason for hiding this comment

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

P2 Badge Avoid marking every non-idle status as in-flight

The new status handling forces inFlight = true for any status string that is not matched by IDLE_STATUS_RE. This overrides the earlier summarizeEvent logic that only treats BUSY statuses as in-flight, and it will incorrectly keep sessions active if OpenCode emits non-busy statuses such as "connected", "ready", or other lifecycle states. In those cases the UI will show a session as in-flight indefinitely until an explicit idle status arrives, which is a regression from the previous behavior. Consider checking BUSY_STATUS_RE here instead of treating all non-idle statuses as busy.

Useful? React with 👍 / 👎.

Copy link

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 1 potential issue.

View issue and 10 additional flags in Devin Review.

Open in Devin Review

Comment on lines +98 to +101
function packCell(cx: number, cy: number): number {
const ux = (cx + CELL_OFFSET) & 0xffff;
const uy = (cy + CELL_OFFSET) & 0xffff;
return ((ux << 16) | uy) >>> 0;

Choose a reason for hiding this comment

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

🟡 Spatial-hash cell packing wraps after ~32k grid units, causing collisions/overlaps for large layouts

packCell() stores cx/cy in 16-bit lanes after adding a fixed offset and masking with 0xffff. This means coordinates outside the range [-32768, 32767] wrap around and collide with unrelated cells.

Actual vs expected:

  • Expected: cell keys remain unique as the layout grows (even for many agents or far-from-origin anchors).
  • Actual: once the spiral frontier (or group anchors) move beyond the representable range, different cells produce the same packed key, so the spatial index can think two distant tiles are in the same bucket and either (a) falsely detect collisions (preventing placement) or (b) miss collisions (allowing overlaps), depending on the wrapped mapping.
Click to expand

Code:

const ux = (cx + CELL_OFFSET) & 0xffff;
const uy = (cy + CELL_OFFSET) & 0xffff;
return ((ux << 16) | uy) >>> 0;

public/src/lib/layout.ts:98-101

With CELL_OFFSET = 32768, any cx such that cx + 32768 exceeds 65535 (or is negative) will wrap due to & 0xffff.

Impact:

  • Very large numbers of agents, or any pathologically large anchor/spiral traversal, can degrade placement stability and violate the “never overlap / never move existing tiles” guarantees.

Recommendation: Avoid 16-bit packing for coordinates that can grow unbounded. Options: (1) use a string key ${cx},${cy}; (2) use a 64-bit bigint key (BigInt(cx) << 32n) ^ BigInt(cy); or (3) keep separate 32-bit hashes with low collision probability and handle collisions via per-cell maps keyed by full coords.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

@integrate-your-mind
Copy link
Owner Author

Superseded by fix/activity-state; live readiness changes consolidated.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant