October 3, 2024
Fix incorrect azimuthal phase handling for m values in orbitals.
September 17, 2024
N,L,M instead of L,M,N for atomic orbitals.
September 15, 2024
Blank ad area shown to <$1/month patrons.
Move 3D orbital to Worker thread with OffscreenCanvas.
Minor subpage text and Yarn links.
Dotfile security.
Manifest screenshots for install rich experience.
Aria labels for fields and buttons.
Rollup plugin sees Worker() and minifies.
September 6, 2024
Separate dev and staging environments for isotopes and images.
September 5, 2024
PHP to node for checking which isotope Wikipedia entries exist.
PHP to node for purging edge cache.
September 4, 2024
Prevent offsite framing of Wiki articles.
PHP to node for Cloudflare Worker test, deploy.
PHP to node for main page, images, properties, service worker, CSS, SVGs, webmanifest.
Migrate ZIM build from PHP to node.
Node package updates.
Patreon failed to hide ads for odd currency donations.
September 2, 2023
Update node-gyp for Kiwix compilation problem.
September 1, 2023
Prepare Docker switch with env variables.
Package updates, translations, missing extendscript.
August 30, 2023
Let Cloudflare redirect all www traffic.
August 29, 2023
Add bot-discord submodule
NPM dependency updates.
March 30, 2023
Upgrade Cloudflare Workers to v2.
December 7, 2022
Electrons data region scrolled vertically in top bar.
Allow pan up on mobile after scrolling 3D orbital in view.
November 28, 2022
Migrate from reCAPTCHA to hCaptcha.
October 15, 2022
Unnecessary isotope notation placeholders worsened CLS.
October 14, 2022
If a locale's ListFormat literal separator is null, fall back.
October 13, 2022
ActiveElement can be null.
Standardize window.location. Delay phone home.
October 12, 2022
Check for WebGL context loss when compiling shader.
Unneeded property JSON code in internationalization functions.
Spaces in tab names in Korean, Vietnamese broke hash navigation.
Safari on OS X before 11 doesn't support Intl.ListFormat.
October 11, 2022
Rewrite hash history logic to force property, subset and update titles.
October 9, 2022
Localize list delimiters, discovery years.
October 7, 2022
Disallow machine translation since 50+ real translations available.
Proper position for lmn of 3D orbital on mobile.
October 6, 2022
Localize electron configs. Search for localized atomic numbers.
Cache www's redirect. Purge changelog from cache.
Manifest caused every request to load app screenshots.
October 5, 2022
Pointer cursor showing orbital filling diagram boxes clickable.
Normalize specific activity units to Bq/g.
MultiViews everywhere allowed PDF and JSON access without extension.
October 4, 2022
About page text cleanup.
Display 3D orbital lmn separately from element's HOAO.
Don't reopen writeup windows after closing and switching tabs.
Don't check if nonzero amount paid for ad removal.
Update mwoffliner dependencies.
September 30, 2022
Debounce 3D orbital rendering at 300ms.
Send numeric abridged weights so brower locales can localize them.
Allow specific locale to override number formatting.
September 26, 2022
Nudge series text in SVG.
Remove Cloudflare analytics.
Update dependencies.
February 7, 2022
Place group numbers into grid.
Dominant baseline doesn't inherit in Safari.
February 6, 2022
Footer uses white background like header. Emoji Ptable.
Wide SVG built from grid-based positions.
January 22, 2022
Francium solid at STP instead of unknown.
About and Contact page text.
Update node and composer packages.
Enable Cloudflare Analytics to track Web Vitals.
January 19, 2022
End www and new subdomains now almost all service workers gone.
Incorrect German eszett character used in place of Greek beta.
January 16, 2022
Rename inner transition period classes for upcoming selector.
January 14, 2022
Replace PHP GeoIP country check with Cloudflare header.
Add creator blurb to About page.
Direct link to privacy policy in all footers.
Prevent errors when extensions stuff class names.
Database access only from development site.
New analytics on subpages. Count visits by language.
Update node packages.
January 13, 2022
Fix extreme transition on search toggle.
Limit ad removal to non-cancelled, paid store orders.
Switch from Google Analytics to Plausible.
Clean up .gitignore symlinks.
January 12, 2022
Buy ads auto response in contact form.
Include photo by donation part of About.
September 8, 2021
Don't remove isotope tilt if search is active.
Mobile layout for image language selection page.
Chrome 93 blanked isotopes after 3D transform complete.
June 23, 2021
Add images to sitemap. Better DublinCore data.
Canonical links for subpages.
June 22, 2021
Remove pointless SVG config IDs.
Pretty list of Discord IP joins through CDN.
June 12, 2021
Use define for secrets so missing are obvious.
June 11, 2021
IP tracking through Cloudflare of Discord joins.
June 7, 2021
HTML nesting error.
June 4, 2021
Updated translations.
Hopefully unnecessary alignment properties.
Composited animation for data updates.
Unicode chars in #Properties triggered property update on load.
Label ads to comply with Acceptable Ads.
Check for missing articles in ZIM build workflow.
June 2, 2021
Build changelog from git on release.
Less line breaks in build. Colored headers check.
Dimmer colors. Resize SVG blocks to use rgba outline.
May 31, 2021
Missing underscore in writeup link from closeup.
Fix shine animation-duration specificity problem.
Remove anti-flicker fix for Blink-based Edge.
Force breaks on series key for Russian.
Avoid chromium bug 1111799 with min-width: 0.
Preload hydrogen into closeup figure.
May 30, 2021
Update node package-lock.
Wait for transition instead of setTimeout to focus search.
May 28, 2021
Use localStorage instead of cookie for Theme and Layout.
May 27, 2021
Ugly mod_rewrite so /anything?lang= gets 404'd.
Isotope load flashed inverted abbr color animation.
Going from tab to disabled isotope property didn't clear colors.
Bring subpage footers into sync with main site.
May 26, 2021
Localize more help text. Almost complete Chinese translation.
Separate ZIM for zh and zh-tw.
Use local name of writeup source in place of weight.
Stop responding to any URL with lang querystring.
Change ZIM output dir and warn about old archives.
Change writeup expiry, fix 404, wider margins.
Separate dev and prod manifests. Add screenshots.
May 24, 2021
Blank properties when fanned isotopes closed.
Blank properties when fanned isotopes closed.
May 23, 2021
Revert tab-active to LinkText until color-scheme widely supported.
May 22, 2021
Fix wrong Wikipedia names for group 15-17.
Dark mode for Wikipedia with proper frame border color.
Don't show ads to Microsoft Store purchasers.
Use color-scheme and style overrides to make Wikipedia dark.
Link states and make hoverable like series.
Await idle callback before stats.
May 21, 2021
Wait for idle before removing hidden tab stops.
Only draw arrows while Electrons is active tab.
Update sliders as fast as rAF permits.
Change wide animation to await rAF for each step.
Update closeup and aside as fast as rAF permits.
Drag isotope snake as fast as rAF allows.
Break up text resizing by awaiting rAF and rIC.
May 20, 2021
Generate sitemap file statically with Bash.
Use requestAnimationFrame for Chrome resize bug.
Upgrade node packages.
Only flash help text if it changed.
Stop orbital at a lower speed and only flick horizontally.
May 19, 2021
Disable writeup external links in fullscreen integration.
Flash weights on change.
Use optional chaining for properties.
Old: Suppress Analytics events.
Open all external iframe links in new tab.
Min-height for OL caused mobile CLS as it filled in.
Orbital simultaneous yaw/pitch and less momentum on release.
May 18, 2021
Report Web Vitals to Analytics.
Verify content-type and language headers after build.
Old: Send 404 for bad ?lang queries.
Use Apache vars to make moving DocRoot easier.
May 17, 2021
Collisions with /etc/mime.types caused .pt not sent as HTML.
Properly disable logarithmic selection for melt/boil.
Color Electrons/Configuration by electrons in highest energy orbital.
New orbitals with roll and axis labels.
Custom accept-language parser matches strict for zh only.
May 16, 2021
Map zh->zh-hans and zh-tw->zh-hant. Send 404 for bad ?lang queries.
Include bash header for shell scripts.
Cache SVG on install. No initial shine to lower FID.
May 15, 2021
Translate some property help text.
Color expanded electron config by Madelung exceptions.
Hope that overflow hidden wasn't doing anything important.
Use crossorigin so manifest on .dev doesn't need exception.
Update Patreon PHP library to 1.0.
AdSense supports 4 new languages.
Hide passwords. Move server to build. Robust cache purge.
May 14, 2021
Better footer containment when screen wider than topbar.
Support ptable.dev in Patreon auth flow.
Use CSS instead of JavaScript for fullscreen integration customization.
Add descriptions to images directory listing.
May 13, 2021
Smooth collapse of ad to adblock notice.
Switch to basic auth so lighthouse can visit .dev by URL.
Shrink parenthesis text in image. Move image PHP to dev.
Make Cloudflare workers a local node module.
May 10, 2021
Error e.key undefined after clicking order number field?
Search on mobile RTL langs expanded page.
May 9, 2021
Treeshaking removes code relying on transitionend.
Try Simple Analytics but load all stats after onload.
Make Bugsnag a local module. No separate d3 node build.
May 7, 2021
Donate cookie SameSite and compatibility with ptable.dev.
Handle several errors with catch.
May 6, 2021
Upgrade npm packages including d3 to 2.0.
Rename "stage" directory to "dev".
Error if color picker left open during navigate back to Series.
Track null property_input error.
May 5, 2021
More obvious disabled isotope property click warning.
Replace gray notch with blue outline to indicate hover and focus.
Move expanding menu footer to bottom of new narrower header.
Table relied on names to expand it to width in sidebar. Obvious in zh.
Define JavaScript copyright banner inline.
Old: Don't index. Don't detect orientation. Use local Wikipedia.
Create sourcemaps and upload to Bugsnag.
Top/sidebar toggle rounded correctly on RTL languages.
Remove manual brotli and double extension MIME tricks.
Globe icon for language select.
May 1, 2021
Move AdSense from head deferred to after onload.
April 30, 2021
Undefined variable lang causes error on install.
Reserve 2/3 of table width for height on mobile to reduce CLS.
April 29, 2021
Preload extra JS module.
Email and all link colored icons are on-site links.
Race between AdSense JS and me to define window.adsbygoogle.
For production always run PHP from stage dir.
Import extra from required. Load 3D orbitals only after Electrons tab clicked.
Build to either staging or production.
Rollup banner plugin dependency update.
Separate log files for staging and production.
Phone home only 10% of the time. Ditch domain lock.
Shave blocking time by not triggering reflow after measuring scrollWidth.
Add share icon. Shrink closed ads notice.
Footer icons for Patreon, Etsy, ACS, questions, image.
Prepare passworded staging environment under ptable.dev.
April 28, 2021
Send hovers to nearest LI if they land on A.
Inherit font size for order number form.
Don't force reload on new version available.
Ditch links without "https:" anti-pattern.
Different max height for mobile ads with shortened adblock text.
Load AdSense in head with defer. Load Analytics with defer.
Load extra JS directly instead of after onload.
No selecting on slider. Confine selection to individual elements.
Larger wide icon. Exact app fit for no ads or footer.
April 26, 2021
Fix Patreon integration errors. Hide ads from Coil payers.
Remove Plausible and try Cloudflare analytics.
Narrower vertical margin than horizontal on Ptable logo to shrink header.
Under Isotopes clarify count and write-up with "units."
Localize many hardcoded strings.
Remove styles from system forms UI since handled by color-scheme.
Use color-scheme with dark mode and pass it to writeup windows.
Replace --unimportant theme color with CSS named color GrayText.
Inject real anchors for "Wikipedia" in so links get default color.
Update package dependencies.
April 18, 2021
Smaller header height but larger header text.
April 16, 2021
Replace tab-active color with LinkText. Box outline for wiki, underline for page leave.
Subpage text cleanup.
April 5, 2021
Remove unnecessary align: ends and explain why others remain.
Precise footer SVG spacing.
January 29, 2021
Link in figure lit in dark mode before hover.
Use Yarn links for about easter eggs.
November 23, 2020
Convert units in Mathematica first.
November 20, 2020
Convert Mathematica values to unit before inserting into database.
Exact poster order match. SVG footer icons. Link outlines.
October 30, 2020
Hide ads button shows adblock message.
October 27, 2020
Bring back ads. Native sharing API.
September 15, 2020
Prevent tabbing to focusable arrow holders when not on Electrons tab.
Decompose capitalize and remove space function to apply to subset.
Add Plausible stats to see Analytics underreporting.
September 14, 2020
Prevent Firefox from navigating to http://0.0.0.atomic on drag out.
Put back .json on properties. Always include querystring in canonical.
Cloudflare worker reads accept-language on /, subrequests ?lang, adds vary accept-language.
September 8, 2020
Minify and phone home.
September 6, 2020
Add electron energy levels to SVG image.
September 4, 2020
Generate SVG images for every language and redirect old PNGs.
September 3, 2020
On other tabs, save last hovered orbital and activate it when switching.
If no min/max (Firefox < 75, Chrome < 79), table fits to width only.
Key region positioning in wide without min/max().
September 2, 2020
Organize orbital JS for collaboration.
August 31, 2020
Foreign translations for new layout's text.
If visiting lang=en, cache that instead of / and always start PWA at ?lang=.
Use SVG favicon anywhere possible. Add features to about.
Move textfit after paint saves a layout shift.
Defer Bugsnag. Should still load before module scripts in order.
August 30, 2020
Encode hash URLs or hash checker won't match them in other languages.
Make aside styles inline and Property default tab to minimize Google CLS.
Trigger Chrome writing-mode bug refresh on height changes too.
Some browsers support ES6 modules but not IntersectionObserver.
Firefox restore state sends input before checkbox checked?
Handle 404s from compound race searches. More error reporting.
Stop slider +/- repeat even if left the button boundary.
Padding on topbar ruined offset for writeup animation origin.
Use clicks/tab to change orbital instead of hover.
Link to redirect with new YouTube feature demo.
Google Images can't see height/width specified in SVG style.
August 29, 2020
Use JMol-variant CPK colors on Compounds tab.
Keep helium liquid at 0K with null melt. Remove unnecessary scinot.
ResizeObserver still stuck in loop. Try to catch import() error.
August 28, 2020
Unregister service worker on www domain. Properties URL didn't match cache.
Redirect www to non-www. Mitigate CORS problem.
August 27, 2020
Hold down +/- to repeat clicks to temp and year sliders.
Halt spin on new orbital since performance sluggish. Squashed on mobile.
Fix helium solid at 0K and sync min/max limits to State At input.
Add specific activity to isotopes database.
Broken compounds default view and 404 for old.
Attach ResizeObserver to window instead of series legend to avoid loop.
Disable Writing mode Chrome bug mitigation stuck in ResizeObserver loop.
Norsk has locale with first two letters different from ISO lang code.
Prevent dragging of isotopes if writeup is selected.
Slimmer search choice on sidebar and consistent font sizes in property key.
If search matches both atomic and property, don't show choice.
Orbital now slows to a stop.
August 26, 2020
Some module browsers don't support caches or serviceWorker.
Move subpages to /new since old links there. Replace PNG image with SVG.
Couldn't use Enter to add element to compound.
Style race could show decoy Compound tab for Isotope.
Move images from old to new.
August 25, 2020
Fix bad tab hash error. Point old to new subpages.
New size scaled orbital. Hide ads, noscript notice.
Search only presents atomic/property option if ambiguous results.
Force scientific notation on Safari. Cache heavy on standalone.