Skip to content

Two long-standing Halcyon inventory and notecard bugs identified with candidate fixes (untested) #163

@sonjamichelle

Description

@sonjamichelle

Two long-standing Halcyon inventory and notecard bugs identified with candidate fixes (untested)
Context and intent

Over the past month, I spent time working directly in my own Halcyon fork, primarily while evaluating whether certain behaviors between Halcyon and OpenSim could be reconciled or shared. I ultimately abandoned that broader effort because it did not align with my long-term goals.

However, during that work I was able to identify what appear to be the root causes of two long-standing Halcyon issues that users still report today:

Embedded or in-object notecard edits failing to persist

Inventory corruption or apparent inventory loss when using newer Firestorm viewers

I do not currently operate a live or production Halcyon grid, and I am not one of the project maintainers. This issue is therefore informational, not prescriptive. The goal is to document the findings and provide concrete starting points for maintainers or operators who are in a position to properly test and validate them.

All changes referenced below exist only in my Halcyon fork, on a branch named verge-base-fixes.

Important disclaimer on testing and scope

I want to be explicit up front:

I am not running a live Halcyon instance

These changes are not validated in production

They have not been tested against a live grid with active users

This is not a pull request, intentionally

Because of that, I am opening this as an issue, not a PR. The commits referenced below should be treated as candidate fixes that warrant proper testing and verification by maintainers or operators who are actively running Halcyon in a real environment.

The commits are provided to document identified root causes and reduce the time required for others to reproduce, evaluate, or independently reimplement the fixes.

Issue 1: Embedded / in-object notecard edits do not persist
Observed behavior

Notecards embedded in prim inventory may fail to persist changes after being edited in-object, particularly when edited via modern viewers.

Root cause identified

Task notecard uploads were being routed through generic task asset upload paths. These paths do not reliably update the underlying notecard asset when the notecard exists inside object inventory, as opposed to agent inventory.

Candidate fix

Introduce a dedicated task-notecard upload capability and handler, separating notecard asset updates from script task uploads and other task-based asset handling.

Relevant commit (Halcyon fork, verge-base-fixes)
30b01b1
Fix task notecard uploads and embedded notecard persistence

Key files touched

InventoryCapsModule.cs

Scene.Inventory.cs

LSLSystemAPI.cs

Intended effect

Ensure that notecards embedded in prim inventory correctly persist edits made in-object, including edits made through current Firestorm versions.

Issue 2: Inventory corruption or apparent inventory loss with newer Firestorm viewers
Observed behavior

When using newer Firestorm builds, users may experience inventory misbehavior ranging from missing items to apparent inventory corruption or destructive reconciliation.

Root cause identified

Newer Firestorm versions expect certain fields to be present in inventory LLSD responses that Halcyon historically omits. When those fields are missing, Firestorm attempts to reconcile inventory state in ways Halcyon does not fully support.

This is not necessarily a Firestorm bug. It appears to be a protocol expectation mismatch.

Candidate fixes

The following changes can be evaluated independently, but appear to work best together.

  1. Always include asset_id and linked_id for link and link-folder items

Firestorm expects these fields to be present and may mis-handle inventory entries when they are missing.

Commit:

3e6483e

File:

InventoryItemBase.cs

  1. Return full folder metadata in FetchInventoryDescendents2 responses

Specifically include:

parent_id

name

type

preferred_type

Commit:

f272403

File:

InventoryCapsModule.cs

  1. Omit AISv3 capabilities so Firestorm falls back to legacy inventory APIs

Halcyon does not fully support AISv3. Advertising these caps causes Firestorm to attempt behaviors that Halcyon cannot properly service.

Commit:

0c8ebf5

File:

SeedCapModule.cs

Intended effect

Ensure Firestorm receives inventory data in a format it expects, and prevent it from attempting unsupported AISv3 inventory operations that can lead to destructive reconciliation.

Why this is an issue and not a pull request

Because I am not operating a live Halcyon grid, I cannot responsibly claim that these changes are safe or correct in production. They require validation by maintainers or operators who:

Run active Halcyon instances

Can observe real inventory behavior over time

Can test viewer interactions across sessions and logins

This issue is intended to surface concrete findings and candidate fixes so that work does not need to be rediscovered from scratch.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions