Freelance Web Developer | Open Source Developer and Contributor | Sometimes Translation Volunteer
Fansite for the global version of Fate/Grand Order with Event Timers, info on future Upgrades, Interludes, Rank Ups, Login Exchange Tickets and Calculators
Home Page: https://fgo.mitsunee.com
Every 5 months should suffice for browserslist, probably more often for spacetime. Workflow should use yarn and the same action with rolling cache like existing actions.
Master Missions:
Server Milestone:
browsersListForSwc
should be inside the experimental key and legacyBrowsers: false
is missing
ignore-dep-scripts=true
installCommand
in devDue to unknown reasons the navigation does not render the correct HTML during ISR. This can be seen easily by opening the page source and searching for >Timers<
<a href="/" class="Navigation_link_cksm Navigation_active_cksm"><svg ...>...</svg><span>Timers</span></a>
<a href="/" class="Navigation_link_cksm">Timers</a>
In a debug deployment the following things have been confirmed:
asPath
propertytestActive
callback works as expected, returning true
for the "Timers" route
true
from this callback!A discussion on the next.js repository has been opened here: vercel/next.js#48130
fgo-timers/src/client/components/Layout/Navigation.tsx
Lines 18 to 53 in 13b9516
withSpoilerLevel
and withAddedProps
yet due to ap-calc and exchange-tickets needing them and LegacySelecttsm
) lowering bundle size (entire api-connector package is shipping due to it being cjs and typescript doesn't understand the default imports in dist)Possibly in combination with redoing the navigation's implementation in general
Further Ideas:
(reported by @Firq-ow)
Settings Menu does not adjust to scroll position on timers page.
The cause seems to be the backdrop-filter on the #__next
element. It may be required to set this property to unset
while the settings menu is open.
There are also be some related debug logs in the console that needs to be cleaned up.
Ooops... Probably going to want to redo Limited Inventories so items have a duration instead of end date and actually auto-hide.
msgpkr should improve performance and save additional space in serverless functions. Could also possibly be used for API cache
The next server milestone is off by 100 as the 2000 day milestone was on 15.12.2022. The current milestone is 2100 as outlined by supermarth64.
Location:
Root Page > Login Exchange Tickets Card
Returning bugs are the best tho. Possibly broke during layout rewrite, which started causing weird behaviour with fixed positioning in some cases.
If possible I'd like to add a keyboard event to the Modal component where the Esc key should close the modal.
Edit: It appears the Settings Menu is not affected
vercel already exposes process.env.VERCEL_URL
which can be used as NEXT_PUBLIC_VERCEL_URL
in <Meta>
. The current env var could be used as an override and there should probably also be a fallback for development using process.env.port
may implement an mjs script similar to what create-t3-app does to verify env vars or set defaults (with logging warnings)
EDIT: I asked at vercel and process.env.VERCEL_URL
does not contain assigned domains, so that will require an addition env var with VERCEL_URL
as fallback.
@typescript-eslint
zod
snuck itself into the client bundle. This rule should prevent thattsconfig.json
<html>
see "<html> element must have a lang attribute"./src/pages/ApCalc/
./src/pages/HomePage/
text-overflow
in HeaderThe event list desyncs after events (in this case Enma-Tei and Amazones Pre-Campaign) end. In this example it causes the New Years Campaign to appear with the banner image and href
of Amazones Pre-Campaign, while still having the title of "New Years 2022". Next's Link component still links to the correct place (href
prop of Link
is updated) despite the href
of the inner <a>
element being wrong.
A temporary workaround is to redeploy as this refreshes the dataset generated by getStaticProps
. This was not possible here due to an unrelated oversight.
See branch reproduce-homepage-bug (specifically files ./pages/index.jsx
and ./src/components/EventCard/EventCard.jsx
) for a simulated case of this bug. The branch replaces all static generation related to events with the static data from the 2nd example deployment and uses typeof window === "undefined"
to inject mock timestamps for static generation to cause the event "Amazones Pre-Campaign" to be present during static generation, despite having ended.
Instead of using date add a script to pull https://api.atlasacademy.io/info and create a cache key like
console.log(`ATLAS-API-KEY=${info.JP.hash}-${info.NA.hash}`);
- name: Get AtlasAcademy API Cache Key
run: node src/ci/atlas-key.mjs >> $GITHUB_ENV
This would require setting up node first so the runtime and api-connector are available, but would significantly improve cache validity.
A new script in src/ci
that simply prepares the atlas cache so jest can run without running the full prebuild script
Currently it seems like slamming the API with multiple requests at ones causes it to stall. A for loop would possibly be faster. Or it's axios in the connector being slow...
See #23 for more details and updates
the UpgradesPage and EventsPage routes currently just disappear entirely if there's server errors (such as today when there were issues at aws). UpgradesPage could probably just display the error message in the already existing section, replacing the search and filters, while EventsPage would have to create a new section.
While this is getting adressed it'd also be good to add a loading indicator on EventsPage as well as making the search field not pre-render as it is useless without javascript. It's probably good enough to start displaying it after data fetching completed instead.
(on hold until React 18)
/\p{Script=Han}|\p{Script=Hiragana}|\p{Script=Katakana}/gu
or similar to determine whether the search query, servant.name
and quest.name
are japanese and skip accordingly
latinized
)latinize()
the queryString.prototype.trim()
on queryA lot of Interludes (unsure about rankups at this time) have Jan 1, 2000, seemingly random or JP release dates in the game data and need to be replaced.
Possibly division by zero error
^spacetime@7
)[email protected]
eslint@8
(also this issue is on hold until that update is ready)Output stuff like the output of Intl.DateTimeFormat().resolvedOptions().timeZone
and what tz offset spacetime is seeing to the settings menu for debugging reasons.
APCalcCard's Result component is using two arguments for useFormattedDelta
which is not supported anymore
This can be easily seen on HomePage by disabling JavaScript in the browser:
ssr?: boolean
prop to time display components (other than delta)useCurrentTime(unit: "ms" | "s" = "s"): { current: number; s: Spacetime }
hideWhenDone "auto" needs to consider start times when no end time was given
otherwise you literally can't tell if there are any warnings as there's no bot commenting the results
should use picocolors now :)
Vercel is already printing ugly warnings in the build log...
This needs to be wrapped in NoSSR
fgo-timers/src/client/components/Clocks/Clocks.jsx
Lines 26 to 34 in dcd5375
(Note: will be adressed in #77 to avoid merge conflicts)
href seems to not get passed, it does correctly become an <a>
tho
The current font does not seem to support the tabular-nums variant, which I'd prefer to have. Ideally the default sans font works, haven't tested yet.
Example:
fgo-timers/docs/CONTRIBUTING.md
Lines 57 to 61 in 274e2f6
Currently deployments still use yarn build
. This should be replaced with pnpm build
with pre-scripts enabled (.npmrc or simply &&
?)
pnpm v8 uses a new lockfile version, Github Actions will need updating. Recommended upgrading dependencies in the same push as the lockfile version change doesn't cause vercel's deployment cache to invalidate correctly.
./assets/svg/
*.inkscape.svg
!./assets/svg/
for valid files./src/components/icons/
and add to ./src/components/icons/index.js
if missing
*.inkscape.svg
to be excluded from the scriptJekyll&Hyde and Fairy Knight Lancelot are currently disabled in the upgrades data script:
Jekyll&Hyde's data is split between the servant (id:600700) and enemy (id:600710). This might not currently be causing any issues, but still needs to be checked. Showing the data for both in the app probably adds too much extra code.
Fairy Knight Lancelot (id:304800) uses different skill and NP data depending on ascension level. As they are right now they use priority 1
and 2
, and 101
and 102
respectively, just like upgrades would. Thus the current code to find the initial versions of upgraded skills may get confused if she were to ever get any upgrades related to her S3 or NP.
Other Servants who have non-standard data (that are currently expected to be working correctly) are:
$ egrep -nrH "from \"foxkit" src pages
src/server/HomePage/getCurrentMasterMissions/index.js:1:import { isClamped } from "foxkit/clamp";
src/client/components/Pagination/Pagination.jsx:3:import { isClamped } from "foxkit/clamp";
src/client/components/SpecialTimer/SpecialTimer.jsx:1://import { isClamped } from "foxkit/clamp";
pages/ap-calc.jsx:3:import { clamp, isClamped } from "foxkit/clamp";
Some of these are already addressed in dev.
Bugs:
Rework:
estimate?: boolean
propBundledQuest
and Upgrade
(rename to BundledUpgrade
)EventUpgradesPage
shouldn't need to override open times anymore as the dedicated file now accepts dates in the same format (zDate
schema)UpgradeCard
to new Card
component and fix required code duplication to implement (see EventUpgradesPage
and UpgradesPage
)fgo-timers/src/server/api/routers/upgrades.ts
Lines 85 to 92 in 5c96b2b
EoR's True Name System affects NPs in that is censors the names with '???'
. This is reflected in the data as there quite literally being separate NPs: (example of Tomoe Gozen (id:202100))
[
{ id: 202100, name: "???", strengthStatus: 1, priority: 100, condQuestId: 0 },
{ id: 202101, name: "On Arorikya Sowaka", strengthStatus: 1, priority: 101, condQuestId: 2000306 },
{ id: 202102, name: "???", strengthStatus: 2, priority: 102, condQuestId: 91202101 },
{ id: 202103, name: "On Arorikya Sowaka", strengthStatus: 2, priority: 103, condQuestId: 2000306 }
]
The script currently finds 2021102
via the condQuestId
and then properly refers to the un-upgraded uncensored NP by finding it via priority. It does not currently find its name as it has no way of knowing that 202103
is not a second upgrade.
How a second upgrade of an EoR True Name System NP would be implemented is currently not known and will likely need to be adressed if it ever happens (unless the fix for this issue happens to do it correctly)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.