Skip to content

Editor V3 - #11

Merged
feildmaster merged 290 commits into
masterfrom
v3
Oct 11, 2026
Merged

feildmaster merged 290 commits into
masterfrom
v3

Conversation

@feildmaster

@feildmaster feildmaster commented Apr 8, 2026 •

Copy link
Copy Markdown
Member

A rewrite of the editor, tons of new features.

Adds:

@github-actions

github-actions Bot commented Apr 8, 2026 •

Copy link
Copy Markdown
Contributor

Visit the preview URL for this PR (updated for commit d6e3c0f):

https://undercard-509ba--pr11-v3-vvok3eag.web.app

(expires Thu, 15 Oct 2026 04:13:02 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: 220eab77180a57ba7fbdd8c1eafdf1dfd73fb5dd

feildmaster and others added 29 commits September 29, 2026 17:29
Check existing skin images with a stored ETag instead of skipping them,
so changed art is picked up without deleting files by hand. The manifest
is local-only (scripts/skin-etags.ignore.json).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Use tag:ci-proxy for the tailnet join, and commit and push through a
local composite action wrapping scripts/commit.js instead of
EndBug/add-and-commit.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The editor's preview renderer no longer registers or saves its element, so
editing and then cancelling does not leave the edit in storage. The original's
renderer still saves when the editor saves.

Cancelling a new card removes it from its group and the canvas.

A card dragged to another group has its handlers rebound to that group, so
Archive, Trash and Duplicate keep working. Renderers are found from their DOM
node through a small renderers module, and the dragged card is the drag
event's originalSource, not its clone.

Putting an archived group back on the canvas replaces its group-level
listeners instead of adding a second set.

Adds tests for the preview renderer and the renderer lookup.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
ci.yml ran in the group ci-<ref> with cancel-in-progress, and it is both a
standalone workflow and the check job of the deploy and preview workflows. A
push or pull request touching public files and other files started both, and
one could cancel the other. A cancelled check skips the deploy or preview that
needs it. The concurrency block is removed.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The generic binding matched every named input except files and numbers, so the
image search box (select) and, once the colour picker was in the dialog, its
hex and color fields wrote junk properties onto the element and into storage.
It now binds only the name field. Adds tests for the name field and for the
inputs that must be left alone.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The delete confirmation counted only the avatar image and effects, so deleting
a custom tribe or rarity image removed it from cards without asking. The list
of images an element references is now one helper shared by the confirmation
and by the exporter, which already included rarity and tribes.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Both were only written when the page unloaded, which mobile Safari and a
crashed tab never fire, so new groups reopened in the archive and setting
changes were lost.

A setting is saved as soon as it changes, but not while the stored values are
being loaded. The group list is saved when a group is reordered, archived or
put back from the archive, and once when a group is first modified, which also
covers a new group. A blank new group is still not persisted, and the unload
save stays as a backstop.

Replaces the empty saves/loads todo with settings tests.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The archive's group drop handler wrote the group straight to storage without
registering it, so a blank group that had just received a card was left out of
the saved group list and went missing from the board on reload. The handler now
asks the group's renderer to save, which registers it. Adds a test for dropping
onto a group on the canvas.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
filter.test.js tested a pasted copy of the archive's applyFilter, so breaking
the real one changed nothing. The tree filtering now lives in filter.js as
filterRows, which the archive and the tests both use. Adds tests that drive the
real filter input, covering the no matches message.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Adds tests for reading and writing, corrupt entries being moved aside, clear
and its write lock, the trash records, and the data keys. The settings save
and load tests came with the settings change.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@feildmaster
feildmaster merged commit 9f5a65a into master Oct 11, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant