Skip to content

Big Mega Update 2 :) – Cycles, Flexible task timing, Automated testing, etc.#45

Merged
HelpfulSoft1207 merged 41 commits into
warframe-tools:mainfrom
AnSq:pr
Jun 7, 2026
Merged

Big Mega Update 2 :) – Cycles, Flexible task timing, Automated testing, etc.#45
HelpfulSoft1207 merged 41 commits into
warframe-tools:mainfrom
AnSq:pr

Conversation

@AnSq

@AnSq AnSq commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

All of the changes in this PR are currently live at https://ansq.github.io/Warframe-Task-Checklist/

🆕 indicates changes I added since first opening this PR.

New Tasks

  • New Dailies: KIM chats (I know it's a lot. Don't be afraid to use the "hide task" buttons).
  • New Weekly: "Aspirant Zorba: Trade Atramentum for Kuva." (Updated to U42)
  • New Other: "Tenet Weapons: Check Ergo Glast's shop for good valence bonuses." (4 day period)
  • New Other: "Coda Weapons: Check Eleanor's shop for good valence bonuses." (4 day period) (fixes Eleanor #29)
  • Changed Daily: Replaced "Dark Sector Mission (Early Game)" with "Daily First Win Bonus: Get double base credit reward on your first mission." (closes Suggested checklist item: Void Storm Railjack Mission for First Win Bonus #37)

New Features

  • Cycle information: Tasks that repeat in regular cycles now show the current offering, and have a button to show the upcoming schedule. The following tasks are included:
    • Ayatan Treasure Hunt (includes which Ayatan, tileset, and faction icon)
    • Break Narmer (includes mission name, tileset, and faction icon)
    • Archon Hunt (includes which Archon Shard, boss, tileset, and faction icon)
    • Duviri Circuit (Normal) (includes which Warframe blueprints are on offer)
    • Duviri Circuit (Steel Path) (includes which Incarnon adapters are on offer)
    • 1999 Calendar (includes season and which Eximus type has increased spawns)
    • Vendors > Teshin (Steel Path) (includes current rotating offer and Steel Essence price)
    • Vendors > Bird 3 (includes which Archon Shard)
    • Baro Ki'Teer (includes which Relay)
    • Coda Weapons (includes which Coda Weapons are on offer)
  • Arbitrary reset periods: Tasks are no longer limited to Daily, Weekly, 8-Hour, and Baro. Used for the new "Tenet Weapons" and "Coda Weapons" tasks, which have 4 day resets.
  • Intermittent tasks: Tasks can be defined so that they are only available sometimes (only used for Baro for now). Intermittent tasks can't be checked off when they are unavailable.
  • Alternate reset times: Daily and Weekly tasks don't have to be aligned with the normal reset at midnight UTC. (only used for Sortie for now, which resets at noon Eastern Time.)
  • Daylight Saving Time: Tasks can now adjust for DST (used for Sortie and Baro).
  • More Info dialog: Tasks that need more explanation can have a "More Info" button. Currently only used to explain the nuances of the new "Daily First Win Bonus" task, 🆕and the Faction Syndicates.
  • Task nesting to arbitrary depths: Subtasks can have their own subtasks. Used for the new KIM tasks.

Enhancements

  • New backgrounds: Duviri and Perita.
  • Countdown timers now have a tooltip that shows the absolute time of the reset.
  • Several animations are now disabled if the user has prefers-reduced-motion set in their OS. (Menu open/close; Light/dark theme switching; and Collapse/expand for sections, parent tasks, and info lines)
  • Replaced the Gara background image with a better version. (The old one had the saturation turned up compared to the 'official' image, and appeared to be AI-upscaled, giving it an unnecessary file size)
  • Better animation for collapsible sections
  • Lighter background in light mode
  • 🆕Added Mastery Rank 3 requirement to Faction Syndicate tasks.
  • 🆕Clarified Daily Marie task. It now reads: "Marie: Purchase Tektolyst mods, arcanes, and Perita/Descendia resources." (Previously: "Marie: Purchase Operator and amp mods.")
  • 🆕Added "Buy Kuva with Scuttler Husks." to Weekly Acrithis task.
  • 🆕Minor spelling fixes.

Bug Fixes

  • Fixed Baro reset. (I don't think it's worked for the entire time I've been using this tool)
  • Fixed Settings menu pop-in animation (also works for the new "Show Schedule" and "More Info" dialogs).
    • Also added a menu close animation, which works on Chrome and related browsers, but not Firefox.

Code Stuff

  • The new cycle information is defined in cycles.json. Most of it should be pretty self-explanatory, but you can also see the formal schema in cycles.schema.json.
  • Added a formal schema for tasks.json in tasks.schema.json with descriptions of the new properties I added to support the new features.
  • The new "More Info" dialog(s) are defined in moreInfo.js. (I was gonna put them in tasks.js, but you can't do multiline strings in json, and it's a lot of HTML. It would have been too unwieldy.)
  • Automated testing with Vitest.
    • Mostly just the more complicated stuff to do with countdown for other_ tasks and DST calculations. The goal for now isn't to test everything.
    • Includes validating task definitions in tasks.json, cycles.json, and moreInfo.js. Makes use of JSON Schemas through Ajv.
    • Run the tests with npm run test for the terminal version, or npm run test:ui for a web-based UI (probably at http://localhost:51204/__vitest__/) and included code coverage. (Code coverage can be misleading. Don't rely on it too much.)
  • Decoupled DATA_STORAGE_KEY from APP_VERSION. This will break existing save data, but it should prevent future breakages when updating major APP_VERSION. (1868f5c)
  • critical.css is now loaded with @import in index.html.
    • This enables hot module replacement in dev mode, while still inlining it in production.
  • Updates to GitHub Actions workflows:
    • Delete manual-pages-deploy (it's basically just a duplicate of weekly-pages-deploy).
    • Rename weekly-pages-deploy to pages-deploy (it hasn't done automated weekly deployment in a long time).
    • Automatically deploy pages on release publication (for this to work on my fork, I had to set up protected tags and modify the github-pages repo environment to accept deployment from those tags. This is not something I can change with a pull request.)
    • Slightly better support for nektos/act in release-assets.
    • Automatically run the new tests on Push and Pull Request. (There might be some configuration/permissions issues that need to be worked out for it to work on PRs; I haven't tested it. Push works great though.)
  • Bump version to 4.0🆕5.0 in app.js, package.json and SECURITY.md. (Personally, I question the need for us to have a SECURITY.md at all, but it's there, so I'll fix it.)
    • (4.0 is the version from app.js before this PR)
  • Various refactoring and code style cleanup. Of note:

Dependencies

  • Updated Vite to v8.
  • Removed dependency on Tailwind.
  • Added sanitize.css to replace some of the default styling lost with the removal of Tailwind. (It's a much smaller and less intrusive dependency.)
  • Removed dependency on vite-plugin-html. (See above about @import.)
  • Updated GitHub Actions versions to fix warnings about Node 20 deprecation.
  • Updated Credits in Readme

AnSq added 30 commits April 26, 2026 12:57
* replaced gara-eidolon.webp. The old one had the saturation turned up compared to the 'official' image, and appeared to be AI-upscaled, giving it an unnecessary file size
* replaced Break Narmer cycle icons with colorful versions
* gave everything a pass with oxipng to save a few bytes
* better animation for collapsible sections and parent tasks
* lighter background in light mode
(I know it's a lot. Don't be afraid to use the "hide task" buttons)

* added support for multiply nested subtasks
* parent tasks can now have info lines
* removed `isParent` from task definitions. The presence of `subtasks` is what defines a parent task.
* Added weekly_zorba vendor
This will break existing save data, but it should prevent future breakages when updating major APP_VERSION.
* no more `isEightHourTask`
* tasks can now specify a `period`, for how often they reset, and a `ref` for a reference time to count from
* no more timer HTML in task definitions
* `checklistData.notificationsSent` is now keyed by task ID instead of "notification ID", and valued with cycle number
* shuffled some DOM structure around so that parent and non-parent tasks look more structurally similar
* added `other_glast` and `other_eleanor` tasks
* not done: Baro
fixed repeated notifications when refreshing the page
+ `loadAndInitializeApp` no longer starts the countdown interval. There's a separate `startCountdown` (and `stopCountdown`) function for that, for (hopefully) future ease of testing.
+ factored `loadData` out of `loadAndInitializeApp`
…for `other_` tasks)

* factored out `calcTaskTimes` so that I can reuse `isAvailable` a bunch of places
* locked checkbox for unvailable tasks (e.g. Baro)
* schedule for unavailable task cycle skips current cycle because it's already passed
* various minor code style cleanups
(e.g. Sortie, which resets at noon Eastern instead of midnight UTC)

* simplifed the call signature of `populateSection`
* removed redundant calls to `updateSectionControls` (`populateSection` already does that)
* fixed opening animation for menu
* several animations are now disabled if user has `prefers-reduced-motion` set in their OS (menu open/close; light/dark theme switching; and collapse/expand for sections, parent tasks, and info lines)
…frame-tools#37)

* added a "more info" dialog for tasks that need an extended explanation
+ cycle schedule columns can now specify a custom `align` to override `text-align` (defaults to `left` or `center` for cells with or without `icon`, respectively)
It seems to be unmaintained, and we can do HTML substitution with Vite env variables
AnSq added 9 commits May 27, 2026 18:26
this enables hot module replacement in dev mode, while still inlining it in production
* validate cycles.json
  * added cycles.schema.json
  * verify `order`s match in length
  * verify that cycles refer to defined tasks
* verify unique task ids
* validate `moreInfo.js`
* delete `manual-pages-deploy` (it's basically just a duplicate of `weekly-pages-deploy`)
* rename `weekly-pages-deploy` to `pages-deploy` (it hasn't done automated weekly deployment in a long time)
* automatically deploy pages on release publication
* update actions versions to fix warnings about https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
* slightly better support for nektos/act in `release-assets`
@HelpfulSoft1207

Copy link
Copy Markdown
Collaborator

I have not checked everything out yet, but wow what a long list of changes. Back at it again @AnSq !

This still pulls everything for a single file deployment, correct?

@AnSq

AnSq commented Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

Yep, single file release still works. You can check out 2026-05-31 2026-06-02 for a build that includes almost actually everything in this PR.

@AnSq

AnSq commented Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

On the topic of cyclic tasks, I also investigated Daily Marie and Daily and Weekly Acrithis. Marie's Perita resource (Lyroic Bridge/Ascaris Prime/Ren Hypercore) and Descendia resource (Ignia/Maphica) offerings are almost cyclic, but not quite. Her mods and Arcanes appear to be fully random. For a while I thought that Acrithis always offered a Forma Blueprint and Kuva, but I saw one week without the Forma. The rest of her weekly stock, as well as her daily Arcane and Captura, appear to be random.

If anyone knows of any other regular cycles, please let me know.

* added MR3 prereq to faction syndicates
* clarified `daily_marie` task
* added Scuttler Husks for Kuva to Acrithis
* moved `iconURL` and `makeCycleIcon` to functions.js
* spelling...
Comment thread sources/js/tasks.json Outdated
Comment thread sources/js/functions.js Outdated
Comment thread sources/js/functions.js
Comment thread sources/tests/app.test.js Outdated
Comment thread sources/js/app.js Outdated
Comment thread SECURITY.md Outdated
Comment thread sources/img/icons/tasks/MiniMapCaviaVendor_.png
* reword `daily_marie`
* use the current year for DST calculation
* use millisecond constants in `formatCountdown`
* remove unused test code
* bump app version to 5.0

+ bump game version to 42.0.11 (no changes)
@AnSq AnSq requested a review from HelpfulSoft1207 June 3, 2026 21:04
@HelpfulSoft1207

Copy link
Copy Markdown
Collaborator

SECURITY.md is in place just as a formality. I just added it to the changes along with the others because I saw the 4.0 in there and knew it needed to be changed as well.

Looks good. I will merge this on Sunday and do a new release.

Thank you so much for the changes! Great work and makes the tool even better for others!

@HelpfulSoft1207 HelpfulSoft1207 merged commit 940894f into warframe-tools:main Jun 7, 2026
1 check passed
@coredumperror

Copy link
Copy Markdown

This is a great update!

@AnSq AnSq deleted the pr branch June 9, 2026 16:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Suggested checklist item: Void Storm Railjack Mission for First Win Bonus Eleanor

3 participants