top of page

Tools For Troubleshooting Secret Chest

Secret Chest is in private beta. This means we’re gonna’ have bugs here and there. We’re a small team and committed to building quality code with practically zero escape defects (or bugs if you will). Low level software, like cryptography libraries brought into an autofill context via an extension are not the easiest to build and certainly not very easy to troubleshoot. We’ve taken a very procedural and declarative approach to programming; however, the nature of swift itself is that it is an object oriented language. This leaves us in an interesting scenario. We’re actually publishing a book on our approach!

But again, it’s a beta. So we’re exposing some of our developer tools throughout the beta. That should let us quickly triangulate and resolve some issues that users may encounter. That’s what the gear icon in the lower right corner of the screen loads. Some of the tools we’ve built include the following:

These include:

  • Device Metadata: Shows Device ID, APNs information, UID, GUID, and partition ID for quick troubleshooting. All of these are in the form of standard Apple or AWS GUIDs.

  • Tracers: We use this to track memory leaks. Yes, you kinda’ get garbage collection for free in swift; however, actors and methods and all the fun things with object orientation mean that sometimes we aren’t sure that we released bytes from memory. We’d like to be perfect, but not everyone can be Quin…

  • Top Level Procedures: This is perhaps the coolest tool to build tools we’ve built. Procedural programming that’s kinda’ object oriented and mostly maybe but also kinda’ declarative means that we substantiate and tear down and shoot json all over the place. The procedure tracker allows us to see the nested nature of that as objects are in motion, view the raw json or xml (according to if it’s ours or Apple’s new or Apple’s older stuffs), and very quickly see errors (literally there’s a green checkmark or a red x). If you’re a nerd, you’ll be happy to know these are created via swift macros and we’ll be open sourcing our work once we’ve worked out how best to do so!

  • Logs: Erm, logs…

  • UI Preferences: Allows for enabling or disabling random data, using the Amazon SNS sandbox, and auto-clearing that procedure history (only disable this if we tell you to or it’ll get to be a whole whole whole lotta’ data).

  • Backend Messages: Shows the raw json sent and receive from the endpoints in the backend.

  • Local Wipe: wipes user data, partition maps, shard maps, and shards from the local context. This removes everything that a user has given Secret Chest.

  • Remote Wipe: Wipes all date from the backend.

  • Remote Wipe (devices): Wipes the device table from the backedn.

  • Logout: Logs the user out of their context and upon restart loads the login page.

  • Quit: Um, quits the app (and releases the memory).

  • Production Display: Goes back to the main screen.

Again, Secret Chest is in a private beta. These tools are mostly used for troubleshooting beta versions. Some may persist in the main app for good, because honestly they’re cool. But we’d hate for people to do something destructive by accident because we weren’t clear about what these are for. Like wiping your whole instance could be accidentally done maybe (but hopefully not - but I’m sure it happens).

We’re also fairly committed to giving back to the community that has helped us to get so muh done so quickly. We truly stand on the shoulders of giants. Encryption libraries, the autofill plugin itself, and pretty much every other package we import was built by a developer, for a developer - not specifically for us, but for the proverbial us! That doesn’t always mean open source, but other than building a great API and webhooks (which lets face it is totally self-serving), we’re also committed to making the tools to build tools that we’ve created open source. Some are easier than others. These include (so far):

  • Swift Quiver: A Swift Package To Add Wizards To Projects (not like Dungeons and Dragons wizards or even the Wizardry wizards (which I guess are the same), but stepped wizards.

  • data-in-keychain: This module adds methods to the Data type to facilitate easy persisting, fetching, and deleting of Data in the keychain.

  • FlameStride: This module...

  • OSErrorModule: This

For those who might have noticed many of our tools are named after D&D spells, to quote the originals (e.g. Unearthed Arcana)...

  • Flame Stride: The billowing flames of a dragon cover your feet, granting you explosive speed. For the duration, your speed increases by 20 feet and moving doesn’t provoke opportunity attacks. When you move within 5 feet of a creature or object that isn’t being worn or carried, it takes 1d6 fire damage from your trail of heat. A creature or object can take this damage only once during a turn.

  • Swift Quiver: You transmute your quiver so it produces an endless supply of nonmagical ammunition, which seems to leap into your hand when you reach for it.

  • Secret Chest: You hide a chest, and all its contents, on the Ethereal Plane. You must touch the chest and the miniature replica that serves as a material component for the spell. The chest can contain up to 12 cubic feet of nonliving material (3 feet by 2 feet by 2 feet). While the chest remains on the Ethereal Plane, you can use an action and touch the replica to recall the chest. It appears in an unoccupied space on the ground within 5 feet of you. You can send the chest back to the Ethereal Plane by using an action and touching both the chest and the replica.

7 views0 comments

Recent Posts

See All


bottom of page