Skip to content

History

Revisions

  • Packaging Your Pack: correct paths and reload guidance - Use the correct pack paths everywhere: Normal: <UserDirectory>/EmoTracker/packs/ -dev: <UserDirectory>/EmoTracker/dev/packs/ - Replace the switch-and-back-via-Installed-Packages-list trick with the canonical reload path: F5 or the status-bar reload icon. Both invoke RefreshCommand → Tracker.Reload, which re-runs init.lua and re-parses every JSON file in the pack. - Note that manifest.json is the ONE thing reload doesn't pick up — it's read once when EmoTracker scans packs/ at startup, so manifest changes are the only edit that requires a full app restart.

    @claude claude committed Apr 8, 2026
    28ab5a6
  • Add Packaging Your Pack page New page under For Developers > The Basics covering both physical forms a pack can take and EmoTracker's dev sandbox. - Where EmoTracker scans for packs (<UserDirectory>/packs/, both loose directories and *.zip files at the root) - Dev mode: loose directory in packs/, named after the pack uid, with manifest.json at the directory root, reload via the gear menu without restarting - Shipping form: zip archive with manifest.json at the root of the zip (not nested inside a directory). Calls out the most common packaging mistake — right-click-compressing the pack folder produces a zip with the folder as the top entry, which makes manifest.json lookups silently fail. Provides two reliable ways to compress contents instead of folder. - The -dev command-line flag: separate sandboxed user data directory at <UserDirectory>/dev/ with its own packs/, saves/, settings, etc. Recommended for pack authoring without polluting the main install. Per-platform launch instructions and tips for shortcut setup and symlinks.

    @claude claude committed Apr 8, 2026
    03d5635
  • Lua Autotracking: register watches at pack init, not on connect The autotracker icon's visibility depends on at least one memory watch being registered (Active = mApplicableProviders.Count > 0 && mActiveMemoryUpdates.Count > 0 in AutoTrackerExtension). Watches must therefore be registered during pack initialization, NOT in the autotracker_started callback — otherwise the icon never appears and the user has nothing to click to start autotracking. - Rewrite the lifecycle section: pack init creates watches → icon appears → user connects → autotracker_started fires → callbacks poll → autotracker_stopped fires (watches stay registered) - Move every example out of autotracker_started and into init.lua- loaded scripts, including the multi-watch and manual-removal examples - Note that AddMemoryWatch does not require an active provider - Note that removing all watches hides the icon - Update Tips and pitfalls to flip the previous (incorrect) advice - Reframe autotracker_started as for per-connection setup, not registration. Mark it as optional. - Mirror the corrections on the Standard Callbacks page (table row, example block, and the new pitfall bullet)

    @claude claude committed Apr 8, 2026
    18002fc
  • Migrate schema links from EmoTracker-Service/schema to sdk/schema The canonical location for the JSON schemas (items, locations, layouts, all, manifest) is now sdk/schema in the EmoTracker-Service repo. Update every wiki link — blob URLs, tree URLs, raw URLs, and inline-code references — to point at the new path. The relative $schema example in Developer-Setup also gets the new path.

    @claude claude committed Apr 8, 2026
    c01a7f5
  • Add Authoring a Manifest page - New page documents every manifest.json field accepted by GamePackage.LoadManifest: required (name/uid/version), recommended identity fields, the platform enum (required for autotracking), layout_engine_version, the variants map with display_name semantics, the auto_tracker_providers override list, the unsafe scripting flag, and the legacy package_uid / package_version aliases - Includes minimal/full/multi-variant/restricted-provider examples - Tips and pitfalls section covering uid stability, version bumping, variant UID stability, schema validation - Sidebar: add the page under The Basics - Cross-link from Developer Setup (pack layout, see also) and Authoring Lua Scripts (unsafe scripting paragraph) - Fix autotracker_providers -> auto_tracker_providers typo on the Lua Autotracking page (the manifest field name has the underscore between auto and tracker)

    @claude claude committed Apr 8, 2026
    faa7027
  • Lua Autotracking: require platform in manifest.json The pack manifest must declare a 'platform' for the autotracker to work. AutoTrackingProviderRegistry.GetProvidersForPack filters registered providers by the pack's platform, so a pack with no platform gets an empty Provider submenu and no autotracking, regardless of anything else. - Promote the prerequisites list to four items, with platform as the second one - Note the alternative autotracker_providers manifest field for packs that want to opt providers in by UID - Add the platform requirement to the Tips and pitfalls section as the leading entry, since it's the #1 cause of an empty submenu

    @claude claude committed Apr 8, 2026
    08adda4
  • Sidebar: nest sub-pages under their parent inside each collapsible The four authoring sections each have a top-level page (e.g. Authoring Locations) followed by sub-pages. Indent the sub-pages underneath the top-level page so the hierarchy is preserved visually inside each collapsible block.

    @claude claude committed Apr 8, 2026
    1acd7f4
  • Sidebar: collapsible Basics + Hosting groups, larger headings - Wrap Developer Setup + Image Filters in a 'The Basics' details block, expanded by default - Wrap Hosting a Package Repository + Service Backend Reference in a 'Hosting Packages' details block, collapsed by default - Bump 'For Users' / 'For Developers' from h3 to h2 so they read larger than the collapsible section summaries below them

    @claude claude committed Apr 8, 2026
    8ab622e
  • Sidebar: collapse the four big developer hierarchies Wrap Authoring Items / Locations / Layouts / Lua Scripts each in a <details> block. All four are collapsed by default. The top-level authoring page is the first link inside each block so the parent page is always reachable from the sidebar.

    @claude claude committed Apr 8, 2026
    fb080ea
  • Lua Items: lead with the CustomItem SDK base class The Authoring Lua — Lua Items page now leads with the recommended SDK approach (sdk/lua/custom_item in EmoTracker-Service) which provides a CustomItem base class, transaction-backed properties, and a working ToggleItem example. The bare ScriptHost:CreateLuaItem API is documented as a secondary path for when the SDK doesn't fit.

    @claude claude committed Apr 8, 2026
    018ed48
  • Add Authoring Lua Scripts hierarchy - Authoring Lua Scripts: top-level overview of the scripting environment, what Lua does in a pack, the NLua sandbox model (removed os methods, no io for non-unsafe packs, removed import, rewired print), the six injected globals, and a sub-page index - init.lua: entry-point conventions, load-order rules, variant detection via Tracker.ActiveVariantUID, ScriptHost:LoadScript vs require, where to define custom logic and callbacks - Standard Callbacks: every well-known function name the runtime invokes (tracker_on_pack_ready, *_accessibility_*, save load bracket, autotracker_started/stopped), re-entrancy protection, examples - Custom Access Rules: deep dive on the $ prefix dispatch into Lua, the count + AccessibilityLevel return contract, pipe- separated args, where to define functions, caching semantics - Autotracking: lifecycle, ScriptHost:AddMemoryWatch usage, IMemorySegment read API, item-update patterns by item type, multiple watches with per-period polling, removing watches - Lua Items: ScriptHost:CreateLuaItem, full property/callback reference, when to use vs built-in items, complete worked example, save/load via SaveFunc/LoadFunc - API Reference: full reference for Tracker, AutoTracker, Layout, ScriptHost, ImageReference, AccessibilityLevel, NotificationType, and the IMemorySegment interface - Sidebar updated with the full hierarchy under For Developers

    @claude claude committed Apr 8, 2026
    5b2ffe5
  • Updated Authoring Layouts ItemGrid (markdown)

    @emosaru emosaru committed Apr 8, 2026
    54190a3
  • Updated Authoring Layouts ItemGrid (markdown)

    @emosaru emosaru committed Apr 8, 2026
    d115e1d
  • Updated Authoring Layouts ItemGrid (markdown)

    @emosaru emosaru committed Apr 8, 2026
    a669577
  • Updated Authoring Layouts LastClearedLocation (markdown)

    @emosaru emosaru committed Apr 8, 2026
    06e77c4
  • Add Authoring Layouts hierarchy - Authoring Layouts: top-level overview of the layouts JSON format, what a layout is, where files live, top-level object structure, full base-field reference (identity, visual properties, sizing, positioning), uid registration, swap_left_right behavior, and per-element index - Per-type sub-pages with full field references, examples, pitfalls: - Containers: Container (incl. ViewBox), Array, Canvas, Dock, Group, Scroll, Tabbed, Button Popup - Leaves: Item, Item Grid, Image, Text, Map, Layout Reference, Recent Pinned Locations, Last Cleared Location - Cross-links between related types and to Image Filters page - Sidebar updated with the full hierarchy under For Developers

    @claude claude committed Apr 8, 2026
    e759471
  • Updated Map Location Colors (markdown)

    @emosaru emosaru committed Apr 8, 2026
    2087347
  • Updated Map Location Colors (markdown)

    @emosaru emosaru committed Apr 8, 2026
    a6a7fa8
  • Updated Map Location Colors (markdown)

    @emosaru emosaru committed Apr 8, 2026
    8ca35a7
  • Updated Authoring Locations Hosted Items (markdown)

    @emosaru emosaru committed Apr 8, 2026
    62ce9cc
  • Drop Unlockable accessibility level from prose Remove all prose mentions of the Unlockable level. Cross-reference descriptions and chest-manipulation thresholds now use 'reachable in any way' / 'reachable in some way' instead. The accessibility levels table on the logic page no longer lists Unlockable. The accessibility_unlockable JSON key in the colorblind preset configs is left in place — the loader still recognizes it and removing it would leave colorblind users with the default purple for that slot.

    @claude claude committed Apr 8, 2026
    398f2bf
  • Locations: drop gate documentation Section gates (gate_item, gate_access_rules, gate_bypass_rules, show_gate_item) are an unsupported, untested, likely-broken feature in the current avalonia branch. Remove all references to them from the Accessibility Logic page and the per-section field table on the top-level Authoring Locations page.

    @claude claude committed Apr 8, 2026
    3388d04
  • Captured Items: correct inspect-rule behavior Capturing an item does not promote a section's accessibility — it excludes Inspect-level rule results from the calculation. A section that was already at SequenceBreak/Normal via a non-inspect rule keeps its color; a section whose only path was an inspect rule re-evaluates against the remaining non-inspect rules and may end up red if the player can't actually reach the captured item.

    @claude claude committed Apr 8, 2026
    4152128
  • Locations Logic: drop glitch, add @ and $ prefixes - Remove the Glitch accessibility level row and the [[code]] glitch modifier section — both are compiled out in shipping builds - Document the prefix-based code provider dispatch: - no prefix → item database (existing behavior) - @ prefix → location database (mandatory for cross-references) - $ prefix → script manager (Lua functions) - Add a Custom logic in Lua section covering function lookup, arg passing via | separator, the (count, AccessibilityLevel) return contract, and caching expectations - Update the cross-reference example on the top-level Authoring Locations page to use the @ prefix

    @claude claude committed Apr 8, 2026
    cf789ca
  • Updated Authoring Locations Accessibility Logic (markdown)

    @emosaru emosaru committed Apr 8, 2026
    d019c85
  • Add Authoring Locations hierarchy - Authoring Locations: top-level overview of the locations JSON format, the location/section model, hierarchy and inheritance, per-location and per-section field reference, cross-references, visual properties, and a worked example - Per-topic sub-pages with full field references, examples, pitfalls: - Accessibility Logic: rule string syntax, AND/OR semantics, code references with counts, sequence-break / glitch / inspect modifiers, location/section cross-references, accessibility levels, gates (gate_item / gate_access_rules / gate_bypass_rules) - Visibility Rules: section visibility_rules vs map placement force/restrict variants, the Inspect-is-not-visible gotcha - Captured Items: capture_item, capture_item_layout, the capturable item base field, runtime behavior including inspect stripping and AdvanceToCode on clear - Hosted Items: hosted_item code resolution, interaction with chest count, AdvanceToCode on clear, dungeon-prize pattern - Map Placement: map_locations array, coordinate system, sizing, badges, multi-map placement, per-placement visibility - Sidebar updated to list the new pages under For Developers

    @claude claude committed Apr 8, 2026
    09e58d7
  • Updated Authoring Image Filters (markdown)

    @emosaru emosaru committed Apr 8, 2026
    41f1b41
  • Updated _Sidebar (markdown)

    @emosaru emosaru committed Apr 8, 2026
    5dbe10f
  • Updated Authoring Image Filters (markdown)

    @emosaru emosaru committed Apr 8, 2026
    dc8d811
  • Image Filters: correct pack-default setting path The default disabled image filter is configured in the pack's settings.json (or legacy tracker_layout.json) via the disabled_image_filter property — read by Tracker.LoadPackageSettings. It is not the supported path to set Tracker.DisabledImageFilterSpec from Lua.

    @claude claude committed Apr 8, 2026
    0d186d5