{"id":22254452,"url":"https://github.com/l-p/ivan","last_synced_at":"2025-07-06T23:03:00.343Z","repository":{"id":141879907,"uuid":"274106815","full_name":"L-P/Ivan","owner":"L-P","description":"OOT Randomizer item tracker, hint tracker, and timer.","archived":false,"fork":false,"pushed_at":"2025-04-21T10:42:57.000Z","size":11315,"stargazers_count":3,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-21T11:33:03.326Z","etag":null,"topics":["ootr","randomizer","timer","tracker"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/L-P.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-22T10:25:49.000Z","updated_at":"2025-04-21T10:21:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"fc55c381-2be2-4413-b3f2-a8ab81e944ff","html_url":"https://github.com/L-P/Ivan","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/L-P/Ivan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/L-P%2FIvan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/L-P%2FIvan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/L-P%2FIvan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/L-P%2FIvan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/L-P","download_url":"https://codeload.github.com/L-P/Ivan/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/L-P%2FIvan/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263986225,"owners_count":23539807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ootr","randomizer","timer","tracker"],"created_at":"2024-12-03T07:27:24.911Z","updated_at":"2025-07-06T23:03:00.336Z","avatar_url":"https://github.com/L-P.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ivan\nWhat's the opposite of a nagging fairy that always gets in your way and never\ntells you anything useful? Ivan.\n\nIvan is a tailor-made, keyboard-driven _Ocarina of Time: Randomizer_ item\ntracker, hint tracker, timer, and input viewer.  \nBecause using a mouse is slow, and you gotta go fast.\n\n# Keyboard input\n[![screenshot of ivan](./assets/home-screenshot.png)](./assets/home-screenshot.png)\n\n**Ivan must be focused for keyboard input to work.**\n\n- `Esc` quits the tracker, only works when the timer is stopped (not paused) to\n  avoid accidentally closing the tracker.  \n  When the timer is not paused, `Esc` will cancel the current input mode.\n- `Del` to reset the timer and the tracker, only works when the timer is paused.\n- `-` to undo the last action.\n- `+` to redo the last undone action.\n\nThe state of the tracker is persisted to file in case you close it by mistake\nof if someone played _Song of Storms_ nearby. `Del` will reset the tracker\nright after launching if needed.\n\n## Item tracker\nBasic usage:\n1. Press a number on your numpad to select an item zone\n2. Press another number to select and upgrade/enable an item\n\n_Item zones_ visually map to your numpad, ie. bottom-left is `1`, top-right is\n`9`. same for items inside their own 3×3 grid.  \neg. if you wanted to enable _Light Arrows_, you would press `8` (top-middle)\nthen `2` (bottom-middle). That's it.\n\nSongs are a special case as they are not selectable using their visible\nposition on the tracker, instead they are accessible in logical order (eg. to\nget _Requiem_ you would press `3` as teleportation songs are in the bottom-right\nzone, then `4` because _Requiem_ is the fourth song in the pause menu).\n\nOther keys:\n- `0` to display the region highlight or cancel your selection.\n- `Esc` to cancel your selection.\n- `.` to _downgrade_ the next selected item instead of upgrading it.\n- `-` to undo the last action.\n- `+` to redo the last undone action.\n\n### Mouse\n1. Left click to _upgrade_ an item.\n2. Right click to _downgrade_ an item.\n3. Scroll up/down to:\n  - _upgrade_ or _downgrade_ an item.\n  - cycle up/down the list of dungeons on stones and medallions.\n\n## Timer\n- `Space` once to start the timer, then to pause/resume it.\n- `Del` when it is paused to stop it (and reset all tracker data).\n\n## Hint tracker\n1. Press the key corresponding to your hint type (**W**otH, **B**arren, **S**ometimes,\n   **A**lways).\n2. Type your text.\n3. Press `Enter`.\n\n- `w` to enter a _WotH_ Hint (green background, fuzzy location search).\n- `g` to enter a _Goal_ Hint (green background, freeform text).\n- `b` to enter a _Barren_ Hint (red background, fuzzy location search).\n- `s` to enter a _Sometimes_ Hint (blue background, freeform text).\n- `a` to enter a _Always_ Hint (yellow background).\n- `Esc` to cancel your input.\n- `Enter` to submit your input.\n\nAs _Always Hints_ have a fixed slot, they get special treatment. The text you input\nis parsed as the slot name until the first space, then your text. eg. If you\nget _Nocturne of Shadows_ on _Ocarina of Time_ you might press `a` to start the\nprompt then `oot = nocturne` then `Enter`.\n\n## Dungeon input\nDungeon input allows you to quickly set which dungeons holds what medallions\nwhen reading the altar at the _Temple of Time_.\n\n1. Press `d` to enter dungeon input mode.\n2. Dungeon mode always starts with the _Light Medallion_ and goes in the same\n   order as the altar.\n3. Press the KP of the medallion that originally holds the dungeon. eg. if\n   _Fire Temple_ holds the _Light Medallion_, press the key for _Fire\n   Medallion_, ie. `5`.\n4. Dungeon mode will advance automatically  to the next medallion and you can\n   go back to 3.\n5. When the last medallion is entered the three stones are filled randomly and\n   dungeon mode is exited automatically.\n\nYou can also use `+` and `-` to cycle through medallions to correct a mistake\nand `0` to exit.\n\n## Input Viewer\nThe input viewer displays your input around the timer. Button and axes IDs\ndepend on your configuration and can be set in [config/input_viewer.json](config/input_viewer.json).\nIf you want to disable the input viewer you can set `Enabled` to `false`.\n\n## Customization\nThe images in the [`assets`](./assets) folder can be changed if you wish to\ncustomize your background or your icons.\nThe files in the [config directory](./config) contain all items, keybinds,\nlayouts, locations, hints, etc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fl-p%2Fivan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fl-p%2Fivan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fl-p%2Fivan/lists"}