Commit graph

2249 commits

Author SHA1 Message Date
e72a0ec72f [WV2] Fix outfit viewer scaling 2025-11-03 07:50:03 +00:00
c4290980ed [WV2] Item search first draft 2025-11-03 07:50:03 +00:00
80db7ad3bf [WV2] Add migration plan document
Claude made this, I'm not editing it hardly at all; it's mainly a context dump for itself.
2025-11-03 06:51:43 +00:00
481fbce6ce [WV2] Remove "Items (N)" header 2025-11-03 06:08:12 +00:00
88797bc165 [WV2] Refactor outfit state params helper 2025-11-03 06:07:35 +00:00
079bcc8d1d [WV2] Add item removal 2025-11-03 00:44:12 +00:00
f4417f7fb0 [WV2] Add tests for item sorting & grouping 2025-11-03 00:31:05 +00:00
e8d768961b [WV2] Group items by zone 2025-11-03 00:07:08 +00:00
dad185150c [WV2] Add badges to items 2025-11-02 23:48:39 +00:00
f96569b2bf [WV2] Persist state in URL 2025-11-02 08:55:17 +00:00
58fabad3c2 [WV2] Filter colors, using advanced fallbacks 2025-11-02 08:46:53 +00:00
ddb89dc2fa [WV2] Fix iframe border in outfit-viewer
I think our application reset CSS usually kills this, and maybe our wardrobe v2 CSS should reset too? But seems smart to have it here for consistency.
2025-11-02 08:19:53 +00:00
14298fafa9 [WV2] Extract species-color-picker component 2025-11-02 08:19:16 +00:00
2dc5505147 [WV2] Move species color picker into outfit area 2025-11-02 08:06:27 +00:00
0651a2871c Simplify error handling in wardrobe v2 2025-11-02 07:58:30 +00:00
a00d57bcbb Fix outfit sizing in wardrobe v2 2025-11-02 07:58:11 +00:00
276cc1b5ea Wardrobe V2 initial proof-of-concept 2025-11-02 07:43:54 +00:00
4e2c99d4dd docs: add warnings about Impress 2020 database dependencies
Added prominent warnings in multiple locations to prevent accidental
database migrations that would break Impress 2020:

README.md:
- Added critical warning in "OpenNeo ID Database" section
- Highlighted that Impress 2020 directly accesses both databases
- Added warning in "Deployment" section about schema compatibility
- Linked to detailed documentation

docs/impress-2020-dependencies.md:
- Clarified both databases are directly accessed by Impress 2020
- Added new "Database Consolidation Blocker" section
- Documented that consolidation migration is ready but blocked
- Provided options to unblock (retire I2020 or coordinated deployment)

This ensures future developers (including future me!) are aware of this
critical dependency before proposing database schema changes.

Related: feature/consolidate-auth-database branch contains a ready-to-go
database consolidation, but it's blocked on Impress 2020 retirement.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-02 07:10:54 +00:00
629090a88c docs: clarify Impress 2020 database dependencies
Added critical information about database consolidation blocker:

- Impress 2020 directly accesses BOTH openneo_impress and openneo_id databases
- Any database consolidation must wait until Impress 2020 is retired
- Database migration is ready on feature/consolidate-auth-database branch
  but is blocked on this dependency

This ensures we don't accidentally deploy the database consolidation
before addressing the Impress 2020 dependency, which would break
authentication for users accessing the site through Impress 2020.

Updated sections:
- Deployment Architecture: Clarified both databases are accessed by I2020
- After Full Migration: Noted database consolidation is ready but blocked
- Added new "Database Consolidation Blocker" section with details

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-02 07:09:11 +00:00
77872311e6 Add support summary UI to alt styles page 2025-11-02 06:12:36 +00:00
c78c0cb237 Oops, only preload alt style manifests we actually need 2025-11-02 06:10:42 +00:00
59da1fa04d Add more importing to cron
We're gonna try saving a neologin cookie in the environment variables, and see how long-lived it is.
2025-11-02 06:00:50 +00:00
3dca3fe05a Add logging for alt style changes
There's something fishy going on with alt style IDs perhaps being reused? I want logs to be able to potentially track this down later on…
2025-11-02 04:18:33 +00:00
ec8d0fdbdc Set up deployment inside devcontainer 2025-11-02 04:02:06 +00:00
3d86231e29 Oops, re-enable setting as default upon deploy 2025-10-31 03:34:02 +00:00
3582229b47 Update NC Mall scraping for new redesign
First actual feature I'm letting Claude run! We worked the exploration of the updated API together, then it ran with the implementation.

I left this hanging for a long time.... good to finally have it updated!
2025-10-30 12:43:14 +00:00
b1f06029f8 Moderize RocketAMF C types to fix build error
I'm not sure if this is a Mac-only problem or what, but we were getting incompatible-function-pointer errors when trying to build the RocketAMF C extensions. This fixes that! (Maybe it's like, Mac-only but as of Ruby 3.4 in specific? We're running RocketAMF in production on Ruby 3.4 right now without this. Shrug.)
2025-10-30 02:45:56 +00:00
d90e0549ca Update devcontainer
The Ruby version got out of date at some point… here, I use `bin/rails devcontainer` as the newer, simpler base.
2025-10-30 02:16:54 +00:00
d72d358135 Add high-level documentation
I'm starting to learn how AI agent stuff works, and a lot of what I'm finding is that rushing them into feature development sets you up for disaster, but that having strong collaboration conversations with helpful context works wonders.

So, I'm starting by creating that context: I had a little "here's the codebase" walkthrough conversation with Claude Code, and it generated these docs as output—which came out solid from the jump, with a few tweaks from me for improved nuance.

My hope is that this can serve both as an improved starting point for human collaborators _and_ if I let future Claude instances play around in here. That's a big theme of what I've found with AI tools so far: don't try to get clever, don't expect the world, just give them the same support you'd give people—and then everybody wins 🤞
2025-10-30 07:31:36 +11:00
1bfacf0340 Upgrade protocol-rack gem, remove workaround
Previously, having this gem at the latest version was causing problems when booting the app: https://github.com/socketry/protocol-rack/issues/20

This is no longer the case. Goodbye, workaround!
2025-07-26 09:58:24 -07:00
e0b2f6654f Remove reference to unused parallel gem
It *is* still used by rubocop, so this doesn't actually remove it from our install set. But it does clean up the Gemfile a bit!
2025-07-26 09:56:49 -07:00
d75b30ee7b Upgrade async gems
Just because I'm poking at archiving again, I'm noticing failures when trying to run the `rails swf_assets:manifests:load` job, something to do with an "unacquired resource" with the connection.

Maybe this is a bug that an update will fix? May as well try!
2025-07-26 09:55:26 -07:00
ba873e9e55 Upgrade to Ruby 3.4.5, Rails 8.0.2
Also improved the upgrade process a tiny bit, with some Ansible config simplifications.
2025-07-23 20:39:27 -07:00
234c866e28 Add links to ~lebron petpage 2025-06-27 17:32:16 -07:00
8eebc96b00 Remove now-unused HTTParty dependency
Oh nice, we removed the last call site! Goodbye!
2025-06-27 15:32:54 -07:00
a4dd680445 Use improved NC trade value text in item page 2025-06-27 15:30:36 -07:00
10708de615 Migrate from Owls NC values to Lebron
Owls has retired, and a new team have taken up the mantle! Exciting!
2025-06-27 15:26:38 -07:00
0e57a76ce6 Fix NC style series sort order in search dropdown
Oops, I didn't realize that the MySQL function `SUBSTRING_INDEX` always
returns the full string if the split delimiter isn't found.

This meant that, for series names like "Regal", we read the main name as
"Regal" (correct) and the variant name as "Regal" (incorrect).

This caused sort order to be incorrect for some series, e.g.,
- Prismatic Dawn: Regal
- Prismatic Dusk: Regal
- Prismatic Mirage: Regal
- Regal

whereas the main series name is meant to be first, and *does* come first
in cases like "Festive" where the main name sorts before any of the
variant names!

In this change, we update the variant name definition to return an empty
string. That way, when there's no variant name and it's just the main
series, that one sorts to the top of the series variants.
2025-06-22 12:37:28 -07:00
14be40a292 Fix NC Mall Styling Studio import
They made a small change to the API call! Fixed now!

The other NC Mall syncing stuff to get current NC cost is broken, but
that seems like a MUCH bigger change, so I won't bother just yet.
2025-06-22 12:24:27 -07:00
1cfb5129fa Hide shadowbanned users from trade lists for most viewers
Users will still see their own trades in the list and in the counts,
and support staff will still see them too!
2025-06-22 11:35:27 -07:00
903d6a8a19 Disallow email addresses in Neopets usernames
People are evading the filtering in the description and they know it!
Boooo!
2025-06-22 11:16:26 -07:00
0e32eb5d8f Hide duplicate timestamps on item trades page
Just a small visual cleanup because I happened to click on item trades
today! We don't need to repeat "This Week" a million times. Just output
it for the first row, then hide it for the following. (We still include
it in screen reader output for semantic clarity; this is just a visual
cleanup.)
2025-06-22 10:43:48 -07:00
99290235f5 Add bin/deploy:rollback to go back to a previous version
While I'm messing with production builds, I keep having to rollback a
bunch, so now we finally add tooling for it, lol
2025-04-27 13:05:44 -07:00
00ec7002cb Upgrade esbuild to 0.25.3
Both just a good idea, but also I'm debugging an issue with serving the
production build of React, and I'm wondering if it's an esbuild version
issue.
2025-04-27 12:23:12 -07:00
bdd4356894 Add cached gems for x86_64
This is part of what happens when you develop on multiple devices with
different chipsets! 😅
2025-04-27 12:02:46 -07:00
a72d043659 Remove Sentry from wardrobe JS
I haven't opened Sentry in a long time, and it's clogging up my Network
logs while debugging. Let's delete some telemetry!
2025-04-27 12:02:20 -07:00
735ca6c07b Upgrade to Rails 8.0.2 2025-03-29 14:45:51 -07:00
38bad12778 Fix item animations for asset URLs that contain unescaped spaces
Before this change, the "Ornamental Lake with Goldies" item would fail
to preview on the item page: the iframe for the animation layer would
display an error page.

The error was:

```
Invalid Content Security Policy script-src: "https://images.neopets.com/cp/items/data/000/000/497/497366_deca9f2827/497366_HTML5 Canvas.js". Directive values must not contain whitespace or semicolons. Please use multiple arguments or other directive methods instead. (ActionDispatch::ContentSecurityPolicy::InvalidDirectiveError)
```

This is because the URL that Neopets sends us for this JS file contains
an unescaped space character. This isn't usually an issue for e.g.
loading a URL in the browser, but it's *not* valid syntax for inclusion
in a Content Security Policy.

In this change, we update our CSP code to parse URLs into
`Addressable::URI` objects, which enables us to call the `normalize!`
method, which fixes oddities like that.

The URL now correctly appears in the CSP as
`https://images.neopets.com/cp/items/data/000/000/497/497366_deca9f2827/497366_HTML5%20Canvas.js`.
2025-03-29 14:45:41 -07:00
c48b2b14aa Add workarounds for new Neopets.com security rules
Neopets.com recently added some new security rules that, if not
satisfied, cause the request to return 403 Forbidden.

We figured these out through trial and error, and added them to the
`DTIRequests` library, so they would apply to all requests we make.

We also updated our AMFPHP library to use `DTIRequests` as well, as an
easy way to get the same security rules to apply to those requests.

This change was motivated by pet loading being down for the past day or
so, because all pet loading requests were returning 403 Forbidden! Now,
we've fixed it, hooray!
2025-03-29 14:14:46 -07:00
475c4eb8dd Upgrade to Ruby 3.3.7 2025-03-29 13:12:35 -07:00