Cloud Storage: open and clean up "Not used by any item found" #12

Closed
opened 2026-10-07 03:37:09 +02:00 by kyuubi · 4 comments
Owner

The top row of the Cloud Storage popup, "Not used by any item found", is used storage the cloud reports minus what the scan found. It can't be opened, so there is no way to see or delete what makes it up (292 MB in the case that prompted this).

Cause found

Items and voice messages sent in chat are saved as cloud records the sender owns (EngineSkyFrostExtensions.CreateObjectMessage / CreateSoundMessage), tagged message_item, with no path. They count toward storage, but the inventory walk never reaches them and the worlds search only asks for worlds. The game's own AccountDump tool (CloudAccountDataStore.GetRecords) finds every record a user owns by searching by owner with no record type, in date windows, then walking the inventory.

Plan

  • Scanner: after the inventory walk and worlds search, search every record the user owns, as AccountDump does. Keep what the first two missed.
  • Put those under a new top-level folder, Outside your inventory: Sent in messages for message_item records, the record's own path for records in folders the inventory no longer reaches, No folder otherwise. Pure, tested classification.
  • The folder opens like any other: rows sorted by unique size, ticks, the toolbar. Copy and Move only for objects and worlds; voice messages and other types get Delete only.
  • Group pages under it act on all their items from the toolbar (no cloud folder record to delete).
  • Say on those pages that a chat message whose item is deleted may stop opening.
  • The info row keeps showing what is still unaccounted for after this.
  • README, version bump, build, tests, install.
  • In game: rescan and check what the new folder holds against the old 292 MB.
The top row of the Cloud Storage popup, "Not used by any item found", is used storage the cloud reports minus what the scan found. It can't be opened, so there is no way to see or delete what makes it up (292 MB in the case that prompted this). ## Cause found Items and voice messages sent in chat are saved as cloud records the sender owns (`EngineSkyFrostExtensions.CreateObjectMessage` / `CreateSoundMessage`), tagged `message_item`, with no path. They count toward storage, but the inventory walk never reaches them and the worlds search only asks for worlds. The game's own AccountDump tool (`CloudAccountDataStore.GetRecords`) finds every record a user owns by searching by owner with no record type, in date windows, then walking the inventory. ## Plan - [x] Scanner: after the inventory walk and worlds search, search every record the user owns, as AccountDump does. Keep what the first two missed. - [x] Put those under a new top-level folder, **Outside your inventory**: `Sent in messages` for `message_item` records, the record's own path for records in folders the inventory no longer reaches, `No folder` otherwise. Pure, tested classification. - [x] The folder opens like any other: rows sorted by unique size, ticks, the toolbar. Copy and Move only for objects and worlds; voice messages and other types get Delete only. - [x] Group pages under it act on all their items from the toolbar (no cloud folder record to delete). - [x] Say on those pages that a chat message whose item is deleted may stop opening. - [x] The info row keeps showing what is still unaccounted for after this. - [x] README, version bump, build, tests, install. - [x] In game: rescan and check what the new folder holds against the old 292 MB.
Author
Owner

0.7.14 is built, pushed (dbe0a68) and hot-loaded into the running game with no errors.

Done:

  • The scan also searches every record the user owns, keyset-paged by last change the way CloudAccountDataStore.GetRecords does it, and keeps what the inventory walk and worlds search missed.
  • Those go under Outside your inventory: Sent in messages, the path of a folder the inventory no longer reaches, or No folder. Each page says what its records are.
  • Those folders get a toolbar target that acts on every item in them. Copy and Move only appear when every item is an object or world.
  • Item pages, inventory ones included, now show the thumbnail, with Spawn in front of you for objects (as chat does) and Play for voice messages. Added mid-task at the user's request.
  • README updated.

Verified: 94 tests, 93 pass and the opt-in real-data round trip skips. 6 of them are new: the folder classification and listing a folder's items.

Not verified yet: the owner search against the real cloud, and the preview, spawn and play buttons. They need a Rescan in game. The log line now reads "… N of them outside the inventory", which shows how much the search found.

**0.7.14 is built, pushed (dbe0a68) and hot-loaded into the running game with no errors.** Done: - The scan also searches every record the user owns, keyset-paged by last change the way `CloudAccountDataStore.GetRecords` does it, and keeps what the inventory walk and worlds search missed. - Those go under **Outside your inventory**: `Sent in messages`, the path of a folder the inventory no longer reaches, or `No folder`. Each page says what its records are. - Those folders get a toolbar target that acts on every item in them. Copy and Move only appear when every item is an object or world. - Item pages, inventory ones included, now show the thumbnail, with **Spawn in front of you** for objects (as chat does) and **Play** for voice messages. Added mid-task at the user's request. - README updated. **Verified:** 94 tests, 93 pass and the opt-in real-data round trip skips. 6 of them are new: the folder classification and listing a folder's items. **Not verified yet:** the owner search against the real cloud, and the preview, spawn and play buttons. They need a Rescan in game. The log line now reads "… N of them outside the inventory", which shows how much the search found.
Author
Owner

0.7.15 (pushed, hot-loaded, no errors): "Sent in messages" showed only Delete, because Copy and Move needed every record in the folder to be copyable and voice messages aren't. Copy and Move now take the objects and worlds and leave the rest; the result counts what was left out. Ticked rows work the same way. 93 tests pass, 1 opt-in skipped.

From the in-game scan (log, 01:44): 642 items take 1.9 GB, 480 of them outside the inventory, but the cloud reports 1004 MB used. Before, the 162 inventory items took 734 MB. So much of what the outside records use is not charged to the user, and their unique sizes overstate what deleting them frees. Cause not yet known.

**0.7.15 (pushed, hot-loaded, no errors):** "Sent in messages" showed only Delete, because Copy and Move needed every record in the folder to be copyable and voice messages aren't. Copy and Move now take the objects and worlds and leave the rest; the result counts what was left out. Ticked rows work the same way. 93 tests pass, 1 opt-in skipped. **From the in-game scan (log, 01:44):** 642 items take 1.9 GB, 480 of them outside the inventory, but the cloud reports 1004 MB used. Before, the 162 inventory items took 734 MB. So much of what the outside records use is not charged to the user, and their unique sizes overstate what deleting them frees. Cause not yet known.
Author
Owner

Released as v0.7.15 (tag on 199f87c, Release build, 93 tests pass, 1 opt-in skipped). Left open until the in-game move from Sent in messages is checked.

Released as [v0.7.15](https://forgejo.foxden.at/kyuubi/ResoLocalStorage/releases/tag/v0.7.15) (tag on 199f87c, Release build, 93 tests pass, 1 opt-in skipped). Left open until the in-game move from Sent in messages is checked.
Author
Owner

Verified in game: the rescan found 480 records outside the inventory, and moving out of Sent in messages works. Closing. Why the cloud charges less than the scan counts moved to #13.

**Verified in game:** the rescan found 480 records outside the inventory, and moving out of Sent in messages works. Closing. Why the cloud charges less than the scan counts moved to #13.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kyuubi/ResoLocalStorage#12
No description provided.