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.
- 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
- Return full folder metadata in FetchInventoryDescendents2 responses
Specifically include:
parent_id
name
type
preferred_type
Commit:
f272403
File:
InventoryCapsModule.cs
- 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.
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.
Firestorm expects these fields to be present and may mis-handle inventory entries when they are missing.
Commit:
3e6483e
File:
InventoryItemBase.cs
Specifically include:
parent_id
name
type
preferred_type
Commit:
f272403
File:
InventoryCapsModule.cs
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.